"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const merge = require('merge-source-map'); // .scss/.sass processor const scss = { render(source, map, options) { const nodeSass = require('sass'); const finalOptions = Object.assign({}, options, { data: source, file: options.filename, outFile: options.filename, sourceMap: !!map }); try { const result = nodeSass.renderSync(finalOptions); if (map) { return { code: result.css.toString(), map: merge(map, JSON.parse(result.map.toString())), errors: [] }; } return { code: result.css.toString(), errors: [] }; } catch (e) { return { code: '', errors: [e] }; } } }; const sass = { render(source, map, options) { return scss.render(source, map, Object.assign({}, options, { indentedSyntax: true })); } }; // .less const less = { render(source, map, options) { const nodeLess = require('less'); let result; let error = null; nodeLess.render(source, Object.assign({}, options, { syncImport: true }), (err, output) => { error = err; result = output; }); if (error) return { code: '', errors: [error] }; if (map) { return { code: result.css.toString(), map: merge(map, result.map), errors: [] }; } return { code: result.css.toString(), errors: [] }; } }; // .styl const styl = { render(source, map, options) { const nodeStylus = require('stylus'); try { const ref = nodeStylus(source); Object.keys(options).forEach(key => ref.set(key, options[key])); if (map) ref.set('sourcemap', { inline: false, comment: false }); const result = ref.render(); if (map) { return { code: result, map: merge(map, ref.sourcemap), errors: [] }; } return { code: result, errors: [] }; } catch (e) { return { code: '', errors: [e] }; } } }; exports.processors = { less, sass, scss, styl, stylus: styl };