Spaces:
Sleeping
Sleeping
; | |
var __importDefault = (this && this.__importDefault) || function (mod) { | |
return (mod && mod.__esModule) ? mod : { "default": mod }; | |
}; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
exports.doCompileStyle = exports.compileStyleAsync = exports.compileStyle = void 0; | |
const postcss = require('postcss'); | |
const trim_1 = __importDefault(require("./stylePlugins/trim")); | |
const scoped_1 = __importDefault(require("./stylePlugins/scoped")); | |
const styleProcessors_1 = require("./styleProcessors"); | |
function compileStyle(options) { | |
return doCompileStyle(Object.assign(Object.assign({}, options), { isAsync: false })); | |
} | |
exports.compileStyle = compileStyle; | |
function compileStyleAsync(options) { | |
return Promise.resolve(doCompileStyle(Object.assign(Object.assign({}, options), { isAsync: true }))); | |
} | |
exports.compileStyleAsync = compileStyleAsync; | |
function doCompileStyle(options) { | |
const { filename, id, scoped = true, trim = true, preprocessLang, postcssOptions, postcssPlugins } = options; | |
const preprocessor = preprocessLang && styleProcessors_1.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(); | |
if (trim) { | |
plugins.push(trim_1.default()); | |
} | |
if (scoped) { | |
plugins.push(scoped_1.default(id)); | |
} | |
const postCSSOptions = Object.assign(Object.assign({}, postcssOptions), { to: filename, from: filename }); | |
if (map) { | |
postCSSOptions.map = { | |
inline: false, | |
annotation: false, | |
prev: map | |
}; | |
} | |
let result, code, outMap; | |
const errors = []; | |
if (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) => ({ | |
code: result.css || '', | |
map: result.map && result.map.toJSON(), | |
errors, | |
rawResult: result | |
})) | |
.catch((error) => ({ | |
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 | |
}; | |
} | |
exports.doCompileStyle = doCompileStyle; | |
function preprocess(options, preprocessor) { | |
return preprocessor.render(options.source, options.map, Object.assign({ | |
filename: options.filename | |
}, options.preprocessOptions)); | |
} | |