You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.5 KiB
97 lines
2.5 KiB
'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;
|
|
|