"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; function _sourceMap() { const data = _interopRequireDefault(require("@parcel/source-map")); _sourceMap = function () { return data; }; return data; } function _plugin() { const data = require("@parcel/plugin"); _plugin = function () { return data; }; return data; } function _lightningcss() { const data = _interopRequireWildcard(require("lightningcss")); _lightningcss = function () { return data; }; return data; } function _utils() { const data = require("@parcel/utils"); _utils = function () { return data; }; return data; } function _browserslist() { const data = _interopRequireDefault(require("browserslist")); _browserslist = function () { return data; }; return data; } function _nullthrows() { const data = _interopRequireDefault(require("nullthrows")); _nullthrows = function () { return data; }; return data; } function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _diagnostic() { const data = require("@parcel/diagnostic"); _diagnostic = function () { return data; }; return data; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // $FlowFixMe - init for browser build. var _default = exports.default = new (_plugin().Optimizer)({ async loadConfig({ config, logger, options }) { const configFile = await config.getConfig(['.cssnanorc', 'cssnano.config.json', 'cssnano.config.js', 'cssnano.config.cjs'], { packageKey: 'cssnano' }); if (configFile) { let filename = _path().default.basename(configFile.filePath); let codeHighlights; let message; if (filename === 'package.json') { message = (0, _diagnostic().md)` Parcel\'s default CSS minifer changed from cssnano to lightningcss, but a "cssnano" key was found in **package.json**. Either remove this configuration, or configure Parcel to use @parcel/optimizer-cssnano instead. `; let contents = await options.inputFS.readFile(configFile.filePath, 'utf8'); codeHighlights = (0, _diagnostic().generateJSONCodeHighlights)(contents, [{ key: '/cssnano', type: 'key' }]); } else { message = (0, _diagnostic().md)`Parcel\'s default CSS minifer changed from cssnano to lightningcss, but a __${filename}__ config file was found. Either remove this config file, or configure Parcel to use @parcel/optimizer-cssnano instead.`; codeHighlights = [{ start: { line: 1, column: 1 }, end: { line: 1, column: 1 } }]; } logger.warn({ message, documentationURL: 'https://parceljs.org/languages/css/#minification', codeFrames: [{ filePath: configFile.filePath, codeHighlights }] }); } }, async optimize({ bundle, bundleGraph, logger, contents: prevContents, getSourceMapReference, map: prevMap, options }) { if (!bundle.env.shouldOptimize) { return { contents: prevContents, map: prevMap }; } let targets = getTargets(bundle.env.engines.browsers); let code = await (0, _utils().blobToBuffer)(prevContents); let unusedSymbols; if (bundle.env.shouldScopeHoist) { unusedSymbols = []; bundle.traverseAssets(asset => { if (asset.symbols.isCleared || asset.meta.cssModulesCompiled === 'postcss') { return; } let usedSymbols = bundleGraph.getUsedSymbols(asset); if (usedSymbols == null) { return; } let defaultImport = null; if (usedSymbols.has('default')) { let incoming = bundleGraph.getIncomingDependencies(asset); defaultImport = incoming.find(d => d.symbols.hasExportSymbol('default')); if (defaultImport) { var _defaultImport$symbol, _loc$filePath; let loc = (_defaultImport$symbol = defaultImport.symbols.get('default')) === null || _defaultImport$symbol === void 0 ? void 0 : _defaultImport$symbol.loc; logger.warn({ message: 'CSS modules cannot be tree shaken when imported with a default specifier', ...(loc && { codeFrames: [{ filePath: (0, _nullthrows().default)((_loc$filePath = loc === null || loc === void 0 ? void 0 : loc.filePath) !== null && _loc$filePath !== void 0 ? _loc$filePath : defaultImport.sourcePath), codeHighlights: [(0, _diagnostic().convertSourceLocationToHighlight)(loc)] }] }), hints: [`Instead do: import * as style from "${defaultImport.specifier}";`], documentationURL: 'https://parceljs.org/languages/css/#tree-shaking' }); } } if (!defaultImport && !usedSymbols.has('*')) { for (let [symbol, { local }] of asset.symbols) { if (local !== 'default' && !usedSymbols.has(symbol)) { unusedSymbols.push(local); } } } }); } // Inline style attributes in HTML need to be parsed differently from full CSS files. if (bundle.bundleBehavior === 'inline') { let entry = bundle.getMainEntry(); if ((entry === null || entry === void 0 ? void 0 : entry.meta.type) === 'attr') { let result = (0, _lightningcss().transformStyleAttribute)({ code, minify: true, targets }); return { contents: Buffer.from(result.code) }; } } // $FlowFixMe if (process.browser) { await (0, _lightningcss().default)(); } let result = (0, _lightningcss().transform)({ filename: bundle.name, code, minify: true, sourceMap: !!bundle.env.sourceMap, targets, unusedSymbols }); let map; if (result.map != null) { let vlqMap = JSON.parse(Buffer.from(result.map).toString()); map = new (_sourceMap().default)(options.projectRoot); map.addVLQMap(vlqMap); if (prevMap) { map.extends(prevMap); } } let contents = Buffer.from(result.code); if (bundle.env.sourceMap) { let reference = await getSourceMapReference(map); if (reference != null) { contents = contents.toString() + '\n' + '/*# sourceMappingURL=' + reference + ' */\n'; } } return { contents: Buffer.from(contents), map }; } }); let cache = new Map(); function getTargets(browsers) { if (browsers == null) { return undefined; } let cached = cache.get(browsers); if (cached != null) { return cached; } let targets = (0, _lightningcss().browserslistToTargets)((0, _browserslist().default)(browsers)); cache.set(browsers, targets); return targets; }