Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | 2x 14x 1x 15x 15x 15x 15x 15x 15x 15x 15x 15x 7x 15x 15x 4x 15x 15x 15x 15x 15x 1x 1x 14x 13x 1x 14x 4x | const postcss = require('postcss') import { ProcessOptions, LazyResult } from 'postcss' import trimPlugin from './stylePlugins/trim' import scopedPlugin from './stylePlugins/scoped' import { processors, StylePreprocessor, StylePreprocessorResults } from './styleProcessors' export interface StyleCompileOptions { source: string filename: string id: string map?: any scoped?: boolean trim?: boolean preprocessLang?: string preprocessOptions?: any postcssOptions?: any postcssPlugins?: any[] } export interface AsyncStyleCompileOptions extends StyleCompileOptions { isAsync?: boolean } export interface StyleCompileResults { code: string map: any | void rawResult: LazyResult | void errors: string[] } export function compileStyle( options: StyleCompileOptions ): StyleCompileResults { return doCompileStyle({ ...options, isAsync: false }) } export function compileStyleAsync( options: StyleCompileOptions ): Promise<StyleCompileResults> { return Promise.resolve(doCompileStyle({ ...options, isAsync: true })) } export function doCompileStyle( options: AsyncStyleCompileOptions ): StyleCompileResults { const { filename, id, scoped = true, trim = true, preprocessLang, postcssOptions, postcssPlugins } = options const preprocessor = preprocessLang && processors[preprocessLang] const preProcessedSource = preprocessor && preprocess(options, preprocessor) const map = preProcessedSource ? preProcessedSource.map : options.map const source = preProcessedSource ? preProcessedSource.code : options.source const plugins = (postcssPlugins || []).slice() Eif (trim) { plugins.push(trimPlugin()) } if (scoped) { plugins.push(scopedPlugin(id)) } const postCSSOptions: ProcessOptions = { ...postcssOptions, to: filename, from: filename } if (map) { postCSSOptions.map = { inline: false, annotation: false, prev: map } } let result, code, outMap const errors: any[] = [] Iif (preProcessedSource && preProcessedSource.errors.length) { errors.push(...preProcessedSource.errors) } try { result = postcss(plugins).process(source, postCSSOptions) // In async mode, return a promise. if (options.isAsync) { return result .then( (result: LazyResult): StyleCompileResults => ({ code: result.css || '', map: result.map && result.map.toJSON(), errors, rawResult: result }) ) .catch( (error: Error): StyleCompileResults => ({ code: '', map: undefined, errors: [...errors, error.message], rawResult: undefined }) ) } // force synchronous transform (we know we only have sync plugins) code = result.css outMap = result.map } catch (e) { errors.push(e) } return { code: code || ``, map: outMap && outMap.toJSON(), errors, rawResult: result } } function preprocess( options: StyleCompileOptions, preprocessor: StylePreprocessor ): StylePreprocessorResults { return preprocessor.render( options.source, options.map, Object.assign( { filename: options.filename }, options.preprocessOptions ) ) } |