98 lines
2.5 KiB
JavaScript
98 lines
2.5 KiB
JavaScript
'use strict';
|
|||
|
|
|
||
|
|
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||
|
|
|
||
|
|
var postcss = _interopDefault(require('postcss'));
|
||
|
|
var postcssBrowserComments = _interopDefault(require('postcss-browser-comments'));
|
||
|
|
var fs = _interopDefault(require('fs'));
|
||
|
|
|
||
|
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
||
|
|
try {
|
||
|
|
var info = gen[key](arg);
|
||
|
|
var value = info.value;
|
||
|
|
} catch (error) {
|
||
|
|
reject(error);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (info.done) {
|
||
|
|
resolve(value);
|
||
|
|
} else {
|
||
|
|
Promise.resolve(value).then(_next, _throw);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function _asyncToGenerator(fn) {
|
||
|
|
return function () {
|
||
|
|
var self = this,
|
||
|
|
args = arguments;
|
||
|
|
return new Promise(function (resolve, reject) {
|
||
|
|
var gen = fn.apply(self, args);
|
||
|
|
|
||
|
|
function _next(value) {
|
||
|
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
||
|
|
}
|
||
|
|
|
||
|
|
function _throw(err) {
|
||
|
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
||
|
|
}
|
||
|
|
|
||
|
|
_next(undefined);
|
||
|
|
});
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
var index = postcss.plugin('postcss-normalize', opts => {
|
||
|
|
const parsedNormalize = parseNormalize(opts);
|
||
|
|
return (
|
||
|
|
/*#__PURE__*/
|
||
|
|
function () {
|
||
|
|
var _ref = _asyncToGenerator(function* (root) {
|
||
|
|
const normalizeRoot = yield parsedNormalize; // use @import postcss-normalize insertion point
|
||
|
|
|
||
|
|
root.walkAtRules('import-normalize', atrule => {
|
||
|
|
if (opts && opts.allowDuplicates) {
|
||
|
|
// use any insertion point
|
||
|
|
atrule.replaceWith(normalizeRoot);
|
||
|
|
} else if (normalizeRoot.parent) {
|
||
|
|
// remove duplicate insertions
|
||
|
|
atrule.remove();
|
||
|
|
} else {
|
||
|
|
// use the first insertion point
|
||
|
|
atrule.replaceWith(normalizeRoot);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
if (opts && opts.forceImport && !normalizeRoot.parent) {
|
||
|
|
// prepend required normalize rules
|
||
|
|
root.prepend(normalizeRoot);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
return function (_x) {
|
||
|
|
return _ref.apply(this, arguments);
|
||
|
|
};
|
||
|
|
}()
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
function parseNormalize(opts) {
|
||
|
|
const from = require.resolve('@csstools/normalize.css');
|
||
|
|
|
||
|
|
const postcssBrowserCommentsParser = postcssBrowserComments(opts);
|
||
|
|
return new Promise((resolve, reject) => fs.readFile(from, 'utf8', (err, res) => {
|
||
|
|
if (err) {
|
||
|
|
reject(err);
|
||
|
|
} else {
|
||
|
|
resolve(res);
|
||
|
|
}
|
||
|
|
})).then(css => postcss.parse(css, {
|
||
|
|
from
|
||
|
|
})).then(root => {
|
||
|
|
postcssBrowserCommentsParser(root);
|
||
|
|
return root;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = index;
|