summaryrefslogtreecommitdiff
path: root/node_modules/postcss-loader/dist/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-loader/dist/index.js')
-rw-r--r--node_modules/postcss-loader/dist/index.js168
1 files changed, 168 insertions, 0 deletions
diff --git a/node_modules/postcss-loader/dist/index.js b/node_modules/postcss-loader/dist/index.js
new file mode 100644
index 00000000..d4c1c91b
--- /dev/null
+++ b/node_modules/postcss-loader/dist/index.js
@@ -0,0 +1,168 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loader;
+var _path = _interopRequireDefault(require("path"));
+var _package = _interopRequireDefault(require("postcss/package.json"));
+var _options = _interopRequireDefault(require("./options.json"));
+var _utils = require("./utils");
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+let hasExplicitDependencyOnPostCSS = false;
+
+/**
+ * **PostCSS Loader**
+ *
+ * Loads && processes CSS with [PostCSS](https://github.com/postcss/postcss)
+ *
+ * @method loader
+ *
+ * @param {String} content Source
+ * @param {Object} sourceMap Source Map
+ * @param {Object} meta Meta
+ *
+ * @return {callback} callback Result
+ */
+async function loader(content, sourceMap, meta) {
+ const options = this.getOptions(_options.default);
+ const callback = this.async();
+ const configOption = typeof options.postcssOptions === "undefined" || typeof options.postcssOptions.config === "undefined" ? true : options.postcssOptions.config;
+ let implementation;
+ try {
+ implementation = (0, _utils.getPostcssImplementation)(this, options.implementation);
+ } catch (error) {
+ callback(error);
+ return;
+ }
+ if (!implementation) {
+ callback(new Error(`The Postcss implementation "${options.implementation}" not found`));
+ return;
+ }
+ let loadedConfig;
+ if (configOption) {
+ try {
+ loadedConfig = await (0, _utils.loadConfig)(this, configOption, options.postcssOptions);
+ } catch (error) {
+ callback(error);
+ return;
+ }
+ }
+ const {
+ plugins,
+ processOptions
+ } = await (0, _utils.getPostcssOptions)(this, loadedConfig, options.postcssOptions);
+ const useSourceMap = typeof options.sourceMap !== "undefined" ? options.sourceMap : this.sourceMap;
+ if (useSourceMap) {
+ processOptions.map = {
+ inline: false,
+ annotation: false,
+ ...processOptions.map
+ };
+ }
+ if (sourceMap && processOptions.map) {
+ processOptions.map.prev = (0, _utils.normalizeSourceMap)(sourceMap, this.context);
+ }
+ let root;
+
+ // Reuse PostCSS AST from other loaders
+ if (meta && meta.ast && meta.ast.type === "postcss" &&
+ // eslint-disable-next-line global-require
+ require("semver").satisfies(meta.ast.version, `^${_package.default.version}`)) {
+ ({
+ root
+ } = meta.ast);
+ }
+ if (!root && options.execute) {
+ // eslint-disable-next-line no-param-reassign
+ content = (0, _utils.exec)(content, this);
+ }
+ let result;
+ let processor;
+ try {
+ processor = implementation(plugins);
+ result = await processor.process(root || content, processOptions);
+ } catch (error) {
+ // Check postcss versions to avoid using PostCSS 7.
+ // For caching reasons, we use the readFileSync and existsSync functions from the context,
+ // not the functions from the `fs` module.
+ if (!hasExplicitDependencyOnPostCSS && processor && processor.version && processor.version.startsWith("7.")) {
+ // The `findPackageJsonDir` function returns `string` or `null`.
+ // This is used to do for caching, that is, an explicit comparison with `undefined`
+ // is used to make the condition body run once.
+ const packageJSONDir = (0, _utils.findPackageJSONDir)(process.cwd(), this.fs.statSync);
+ if (packageJSONDir) {
+ let bufferOfPackageJSON;
+ try {
+ bufferOfPackageJSON = this.fs.readFileSync(_path.default.resolve(packageJSONDir, "package.json"), "utf8");
+ } catch (_error) {
+ // Nothing
+ }
+ if (bufferOfPackageJSON) {
+ let pkg;
+ try {
+ pkg = JSON.parse(bufferOfPackageJSON);
+ } catch (_error) {
+ // Nothing
+ }
+ if (pkg) {
+ if (!pkg.dependencies.postcss && !pkg.devDependencies.postcss) {
+ this.emitWarning(new Error("Add postcss as project dependency. postcss is not a peer dependency for postcss-loader. " + "Use `npm install postcss` or `yarn add postcss`"));
+ } else {
+ hasExplicitDependencyOnPostCSS = true;
+ }
+ }
+ }
+ }
+ }
+ (0, _utils.reportError)(this, callback, error);
+ return;
+ }
+ for (const warning of result.warnings()) {
+ this.emitWarning((0, _utils.warningFactory)(warning));
+ }
+ for (const message of result.messages) {
+ // eslint-disable-next-line default-case
+ switch (message.type) {
+ case "dependency":
+ this.addDependency(message.file);
+ break;
+ case "build-dependency":
+ this.addBuildDependency(message.file);
+ break;
+ case "missing-dependency":
+ this.addMissingDependency(message.file);
+ break;
+ case "context-dependency":
+ this.addContextDependency(message.file);
+ break;
+ case "dir-dependency":
+ this.addContextDependency(message.dir);
+ break;
+ case "asset":
+ if (message.content && message.file) {
+ this.emitFile(message.file, message.content, message.sourceMap, message.info);
+ }
+ }
+ }
+
+ // eslint-disable-next-line no-undefined
+ let map = result.map ? result.map.toJSON() : undefined;
+ if (map && useSourceMap) {
+ map = (0, _utils.normalizeSourceMapAfterPostcss)(map, this.context);
+ }
+ let ast;
+ try {
+ ast = {
+ type: "postcss",
+ version: result.processor.version,
+ root: result.root
+ };
+ } catch (error) {
+ (0, _utils.reportError)(this, callback, error);
+ return;
+ }
+ callback(null, result.css, map, {
+ ast
+ });
+} \ No newline at end of file