/* @license Rollup.js v2.3.3 Sat, 04 Apr 2020 22:17:48 GMT - commit d18cb37d7c328a63c36761583ce456275f164462 https://github.com/rollup/rollup Released under the MIT License. */ 'use strict'; var rollup_js = require('./rollup.js'); var path = require('path'); let enabled = !("NO_COLOR" in process.env) && process.env.FORCE_COLOR !== "0" && (process.platform === "win32" || (process.stdout != null && process.stdout.isTTY && process.env.TERM && process.env.TERM !== "dumb")); const rawInit = (open, close, searchRegex, replaceValue) => s => enabled ? open + (~(s += "").indexOf(close, 4) // skip opening \x1b[ ? s.replace(searchRegex, replaceValue) : s) + close : s; const init = (open, close) => { return rawInit( `\x1b[${open}m`, `\x1b[${close}m`, new RegExp(`\\x1b\\[${close}m`, "g"), `\x1b[${open}m` ) }; var colorette = { options: Object.defineProperty({}, "enabled", { get: () => enabled, set: value => (enabled = value) }), reset: init(0, 0), bold: rawInit("\x1b[1m", "\x1b[22m", /\x1b\[22m/g, "\x1b[22m\x1b[1m"), dim: rawInit("\x1b[2m", "\x1b[22m", /\x1b\[22m/g, "\x1b[22m\x1b[2m"), italic: init(3, 23), underline: init(4, 24), inverse: init(7, 27), hidden: init(8, 28), strikethrough: init(9, 29), black: init(30, 39), red: init(31, 39), green: init(32, 39), yellow: init(33, 39), blue: init(34, 39), magenta: init(35, 39), cyan: init(36, 39), white: init(37, 39), gray: init(90, 39), bgBlack: init(40, 49), bgRed: init(41, 49), bgGreen: init(42, 49), bgYellow: init(43, 49), bgBlue: init(44, 49), bgMagenta: init(45, 49), bgCyan: init(46, 49), bgWhite: init(47, 49), blackBright: init(90, 39), redBright: init(91, 39), greenBright: init(92, 39), yellowBright: init(93, 39), blueBright: init(94, 39), magentaBright: init(95, 39), cyanBright: init(96, 39), whiteBright: init(97, 39), bgBlackBright: init(100, 49), bgRedBright: init(101, 49), bgGreenBright: init(102, 49), bgYellowBright: init(103, 49), bgBlueBright: init(104, 49), bgMagentaBright: init(105, 49), bgCyanBright: init(106, 49), bgWhiteBright: init(107, 49) }; // @see https://no-color.org // @see https://www.npmjs.com/package/chalk if (process.env.FORCE_COLOR === '0' || process.env.NO_COLOR) { colorette.options.enabled = false; } // log to stderr to keep `rollup main.js > bundle.js` from breaking const stderr = console.error.bind(console); function handleError(err, recover = false) { let description = err.message || err; if (err.name) description = `${err.name}: ${description}`; const message = (err.plugin ? `(plugin ${(err).plugin}) ${description}` : description) || err; stderr(colorette.bold(colorette.red(`[!] ${colorette.bold(message.toString())}`))); if (err.url) { stderr(colorette.cyan(err.url)); } if (err.loc) { stderr(`${rollup_js.relativeId((err.loc.file || err.id))} (${err.loc.line}:${err.loc.column})`); } else if (err.id) { stderr(rollup_js.relativeId(err.id)); } if (err.frame) { stderr(colorette.dim(err.frame)); } if (err.stack) { stderr(colorette.dim(err.stack)); } stderr(''); if (!recover) process.exit(1); } function batchWarnings() { let deferredWarnings = new Map(); let count = 0; return { get count() { return count; }, add: (warning) => { count += 1; if (warning.code in deferredHandlers) { if (!deferredWarnings.has(warning.code)) deferredWarnings.set(warning.code, []); deferredWarnings.get(warning.code).push(warning); } else if (warning.code in immediateHandlers) { immediateHandlers[warning.code](warning); } else { title(warning.message); if (warning.url) info(warning.url); const id = (warning.loc && warning.loc.file) || warning.id; if (id) { const loc = warning.loc ? `${rollup_js.relativeId(id)}: (${warning.loc.line}:${warning.loc.column})` : rollup_js.relativeId(id); stderr(colorette.bold(rollup_js.relativeId(loc))); } if (warning.frame) info(warning.frame); } }, flush: () => { if (count === 0) return; const codes = Array.from(deferredWarnings.keys()).sort((a, b) => deferredWarnings.get(b).length - deferredWarnings.get(a).length); for (const code of codes) { deferredHandlers[code](deferredWarnings.get(code)); } deferredWarnings = new Map(); count = 0; } }; } const immediateHandlers = { UNKNOWN_OPTION: warning => { title(`You have passed an unrecognized option`); stderr(warning.message); }, MISSING_NODE_BUILTINS: warning => { title(`Missing shims for Node.js built-ins`); const detail = warning.modules.length === 1 ? `'${warning.modules[0]}'` : `${warning .modules.slice(0, -1) .map((name) => `'${name}'`) .join(', ')} and '${warning.modules.slice(-1)}'`; stderr(`Creating a browser bundle that depends on ${detail}. You might need to include https://www.npmjs.com/package/rollup-plugin-node-builtins`); } }; const deferredHandlers = { CIRCULAR_DEPENDENCY(warnings) { title(`Circular dependenc${warnings.length > 1 ? 'ies' : 'y'}`); const displayed = warnings.length > 5 ? warnings.slice(0, 3) : warnings; for (const warning of displayed) { stderr(warning.cycle.join(' -> ')); } if (warnings.length > displayed.length) { stderr(`...and ${warnings.length - displayed.length} more`); } }, EMPTY_BUNDLE(warnings) { title(`Generated${warnings.length === 1 ? ' an' : ''} empty ${warnings.length > 1 ? 'chunks' : 'chunk'}`); stderr(warnings.map(warning => warning.chunkName).join(', ')); }, EVAL(warnings) { title('Use of eval is strongly discouraged'); info('https://rollupjs.org/guide/en/#avoiding-eval'); showTruncatedWarnings(warnings); }, MISSING_EXPORT(warnings) { title('Missing exports'); info('https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module'); for (const warning of warnings) { stderr(colorette.bold(warning.importer)); stderr(`${warning.missing} is not exported by ${warning.exporter}`); stderr(colorette.gray(warning.frame)); } }, MISSING_GLOBAL_NAME(warnings) { title(`Missing global variable ${warnings.length > 1 ? 'names' : 'name'}`); stderr(`Use output.globals to specify browser global variable names corresponding to external modules`); for (const warning of warnings) { stderr(`${colorette.bold(warning.source)} (guessing '${warning.guess}')`); } }, MIXED_EXPORTS: (warnings) => { title('Mixing named and default exports'); info(`https://rollupjs.org/guide/en/#output-exports`); stderr(colorette.bold('The following entry modules are using named and default exports together:')); const displayedWarnings = warnings.length > 5 ? warnings.slice(0, 3) : warnings; for (const warning of displayedWarnings) { stderr(rollup_js.relativeId(warning.id)); } if (displayedWarnings.length < warnings.length) { stderr(`...and ${warnings.length - displayedWarnings.length} other entry modules`); } stderr(`\nConsumers of your bundle will have to use chunk['default'] to access their default export, which may not be what you want. Use \`output.exports: 'named'\` to disable this warning`); }, NAMESPACE_CONFLICT(warnings) { title(`Conflicting re-exports`); for (const warning of warnings) { stderr(`${colorette.bold(rollup_js.relativeId(warning.reexporter))} re-exports '${warning.name}' from both ${rollup_js.relativeId(warning.sources[0])} and ${rollup_js.relativeId(warning.sources[1])} (will be ignored)`); } }, NON_EXISTENT_EXPORT(warnings) { title(`Import of non-existent ${warnings.length > 1 ? 'exports' : 'export'}`); showTruncatedWarnings(warnings); }, PLUGIN_WARNING(warnings) { const nestedByPlugin = nest(warnings, 'plugin'); for (const { key: plugin, items } of nestedByPlugin) { const nestedByMessage = nest(items, 'message'); let lastUrl = ''; for (const { key: message, items } of nestedByMessage) { title(`Plugin ${plugin}: ${message}`); for (const warning of items) { if (warning.url && warning.url !== lastUrl) info((lastUrl = warning.url)); if (warning.id) { let loc = rollup_js.relativeId(warning.id); if (warning.loc) { loc += `: (${warning.loc.line}:${warning.loc.column})`; } stderr(colorette.bold(loc)); } if (warning.frame) info(warning.frame); } } } }, SOURCEMAP_BROKEN(warnings) { title(`Broken sourcemap`); info('https://rollupjs.org/guide/en/#warning-sourcemap-is-likely-to-be-incorrect'); const plugins = Array.from(new Set(warnings.map(w => w.plugin).filter(Boolean))); const detail = plugins.length > 1 ? ` (such as ${plugins .slice(0, -1) .map(p => `'${p}'`) .join(', ')} and '${plugins.slice(-1)}')` : ` (such as '${plugins[0]}')`; stderr(`Plugins that transform code${detail} should generate accompanying sourcemaps`); }, THIS_IS_UNDEFINED(warnings) { title('`this` has been rewritten to `undefined`'); info('https://rollupjs.org/guide/en/#error-this-is-undefined'); showTruncatedWarnings(warnings); }, UNRESOLVED_IMPORT(warnings) { title('Unresolved dependencies'); info('https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency'); const dependencies = new Map(); for (const warning of warnings) { if (!dependencies.has(warning.source)) dependencies.set(warning.source, []); dependencies.get(warning.source).push(warning.importer); } for (const dependency of dependencies.keys()) { const importers = dependencies.get(dependency); stderr(`${colorette.bold(dependency)} (imported by ${importers.join(', ')})`); } }, UNUSED_EXTERNAL_IMPORT(warnings) { title('Unused external imports'); for (const warning of warnings) { stderr(`${warning.names} imported from external module '${warning.source}' but never used`); } } }; function title(str) { stderr(colorette.bold(colorette.yellow(`(!) ${str}`))); } function info(url) { stderr(colorette.gray(url)); } function nest(array, prop) { const nested = []; const lookup = new Map(); for (const item of array) { const key = item[prop]; if (!lookup.has(key)) { lookup.set(key, { items: [], key }); nested.push(lookup.get(key)); } lookup.get(key).items.push(item); } return nested; } function showTruncatedWarnings(warnings) { const nestedByModule = nest(warnings, 'id'); const displayedByModule = nestedByModule.length > 5 ? nestedByModule.slice(0, 3) : nestedByModule; for (const { key: id, items } of displayedByModule) { stderr(colorette.bold(rollup_js.relativeId(id))); stderr(colorette.gray(items[0].frame)); if (items.length > 1) { stderr(`...and ${items.length - 1} other ${items.length > 2 ? 'occurrences' : 'occurrence'}`); } } if (nestedByModule.length > displayedByModule.length) { stderr(`\n...and ${nestedByModule.length - displayedByModule.length} other files`); } } const stdinName = '-'; let stdinResult = null; function stdinPlugin() { return { name: 'stdin', resolveId(id) { if (id === stdinName) { return id; } }, load(id) { if (id === stdinName) { return stdinResult || (stdinResult = readStdin()); } } }; } function readStdin() { return new Promise((resolve, reject) => { const chunks = []; process.stdin.setEncoding('utf8'); process.stdin .on('data', chunk => chunks.push(chunk)) .on('end', () => { const result = chunks.join(''); resolve(result); }) .on('error', err => { reject(err); }); }); } function addCommandPluginsToInputOptions(inputOptions, command) { if (command.stdin !== false) { inputOptions.plugins.push(stdinPlugin()); } const commandPlugin = command.plugin; if (commandPlugin) { const plugins = Array.isArray(commandPlugin) ? commandPlugin : [commandPlugin]; for (const plugin of plugins) { if (/[={}]/.test(plugin)) { // -p plugin=value // -p "{transform(c,i){...}}" loadAndRegisterPlugin(inputOptions, plugin); } else { // split out plugins joined by commas // -p node-resolve,commonjs,buble plugin.split(',').forEach((plugin) => loadAndRegisterPlugin(inputOptions, plugin)); } } } } function loadAndRegisterPlugin(inputOptions, pluginText) { let plugin = null; let pluginArg = undefined; if (pluginText[0] === '{') { // -p "{transform(c,i){...}}" plugin = new Function('return ' + pluginText); } else { const match = pluginText.match(/^([@.\/\\\w|^{}|-]+)(=(.*))?$/); if (match) { // -p plugin // -p plugin=arg pluginText = match[1]; pluginArg = new Function('return ' + match[3])(); } else { throw new Error(`Invalid --plugin argument format: ${JSON.stringify(pluginText)}`); } if (!/^\.|^rollup-plugin-|[@\/\\]/.test(pluginText)) { // Try using plugin prefix variations first if applicable. // Prefix order is significant - left has higher precedence. for (const prefix of ['@rollup/plugin-', 'rollup-plugin-']) { try { plugin = require(prefix + pluginText); break; } catch (ex) { // if this does not work, we try requiring the actual name below } } } if (!plugin) { try { if (pluginText[0] == '.') pluginText = path.resolve(pluginText); plugin = require(pluginText); } catch (ex) { throw new Error(`Cannot load plugin "${pluginText}"`); } } } if (typeof plugin === 'object' && pluginText in plugin) { // some plugins do not use `export default` for their entry point. // attempt to use the plugin name as the named import name. plugin = plugin[pluginText]; } inputOptions.plugins.push(typeof plugin === 'function' ? plugin.call(plugin, pluginArg) : plugin); } exports.addCommandPluginsToInputOptions = addCommandPluginsToInputOptions; exports.batchWarnings = batchWarnings; exports.color = colorette; exports.handleError = handleError; exports.stderr = stderr; exports.stdinName = stdinName; //# sourceMappingURL=commandPlugins.js.map