packages/svg-transform-loader/lib/encode-query-loader.js (18 lines of code) (raw):
/* eslint-disable func-names */
const postcss = require('postcss');
const encode = require('./postcss-encode-query-string-params');
module.exports = function (content, sourcemap, meta = {}) {
if (this.version === 1 && this.cacheable) {
this.cacheable();
}
// eslint-disable-next-line consistent-this
const loader = this;
const callback = loader.async();
const from = this.resourcePath + this.resourceQuery;
// Reuse AST from postcss if available
const ast = meta && meta.ast && meta.ast.type === 'postcss'
? meta.ast.root
: postcss.parse(content, { from });
postcss()
.use(encode())
.process(ast, { from })
.then(({ css }) => callback(null, css, sourcemap, meta))
.catch(callback);
};