diff --git a/.eslintignore b/.eslintignore index 3189ad9a8..957e4a275 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,3 +7,7 @@ packages/typescript/test/fixtures/syntax-error # temporary workaround for eslint bug where package.json is a directory packages/node-resolve/test/fixtures/package-json-in-path + +# temporary workaround for TypeScript as it doesn't support "Arbitrary module namespace identifier names" +# https://github.com/microsoft/TypeScript/issues/40594 +packages/json/test/fixtures/arbitrary/main.js diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml index a586f58fe..021072a0d 100644 --- a/.github/workflows/pr-title.yml +++ b/.github/workflows/pr-title.yml @@ -19,5 +19,5 @@ jobs: uses: clowdhaus/actions/pr-title@v0.1.0 with: on-fail-message: "Your PR title doesn't match the required format. The title should be in the conventional commit (https://www.conventionalcommits.org/en/v1.0.0-beta.4/) format. e.g.\n\n```\nchore(plugin-name): add pr title workflow\n```" - title-regex: '^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([\w|,|\-|\|]+\))?(!)?\:\s.*$' + title-regex: '^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(([*]|[\w|,|\-|\|]+)\))?(!)?\:\s.*' github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.husky/pre-commit b/.husky/pre-commit index f1e568560..58b1861cc 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -pnpm dlx lint-staged +pnpm exec lint-staged diff --git a/package.json b/package.json index f9b206d89..d8183b71a 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "lint:js": "eslint --cache packages scripts shared util --ext .js,.ts,.mjs", "lint:json": "prettier --write .github/**/*.yml **/tsconfig.json tsconfig.*.json pnpm-workspace.yaml", "lint:package": "prettier --write **/package.json", - "package:release": "versioner --stripShortName='^@.+/plugin-' --target", + "package:release": "versioner --stripShortName='^@.+/(plugin-)?' --target", "preinstall": "node scripts/disallow-npm.js", "prepare": "husky install", "prettier": "prettier --write .", @@ -17,20 +17,15 @@ "security": "pnpm audit --audit-level=high" }, "devDependencies": { - "@ava/babel": "2.0.0", "@dot/versioner": "^0.3.1", "@rollup/plugin-typescript": "^9.0.1", - "@types/conventional-commits-parser": "^3.0.2", "@types/node": "14.18.30", - "@types/semver": "^7.3.7", "@types/source-map-support": "^0.5.4", - "@types/yargs-parser": "^20.2.1", "@typescript-eslint/eslint-plugin": "^5.38.0", "@typescript-eslint/parser": "^5.38.0", "ava": "^4.3.3", "chalk": "^4.1.0", "codecov-lite": "2.0.0", - "conventional-commits-parser": "^3.2.1", "del-cli": "^5.0.0", "eslint-config-rollup": "^3.0.1", "esm": "^3.2.25", @@ -41,14 +36,9 @@ "nyc": "^15.1.0", "pnpm": "^8.7.5", "prettier-plugin-package": "^1.3.0", - "semver": "^7.3.2", "source-map-support": "^0.5.21", "ts-node": "10.9.1", - "tsconfig-paths": "^3.9.0", - "typescript": "^4.8.3", - "write-pkg": "^4.0.0", - "yaml": "^1.10.0", - "yargs-parser": "^20.2.9" + "typescript": "^4.8.3" }, "ava": { "files": [ @@ -85,5 +75,6 @@ "lib/client*.js", "test/" ] - } + }, + "packageManager": "pnpm@8.15.8+sha512.d1a029e1a447ad90bc96cd58b0fad486d2993d531856396f7babf2d83eb1823bb83c5a3d0fc18f675b2d10321d49eb161fece36fe8134aa5823ecd215feed392" } diff --git a/packages/alias/CHANGELOG.md b/packages/alias/CHANGELOG.md index 347f04921..1b3ec3d8c 100755 --- a/packages/alias/CHANGELOG.md +++ b/packages/alias/CHANGELOG.md @@ -1,5 +1,21 @@ # @rollup/plugin-alias ChangeLog +## v5.1.1 + +_2024-09-22_ + +### Bugfixes + +- fix: remove unused slash dependency (#1763) + +## v5.1.0 + +_2023-11-25_ + +### Features + +- feat: add warning to avoid unintended duplicate modules (#1634) + ## v5.0.1 _2023-10-05_ diff --git a/packages/alias/package.json b/packages/alias/package.json index 30aec8b1e..9051cad88 100755 --- a/packages/alias/package.json +++ b/packages/alias/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-alias", - "version": "5.0.1", + "version": "5.1.1", "publishConfig": { "access": "public" }, @@ -58,9 +58,6 @@ "optional": true } }, - "dependencies": { - "slash": "^4.0.0" - }, "devDependencies": { "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/plugin-typescript": "^9.0.1", diff --git a/packages/alias/src/index.ts b/packages/alias/src/index.ts index 8c5072571..51503848c 100755 --- a/packages/alias/src/index.ts +++ b/packages/alias/src/index.ts @@ -1,3 +1,5 @@ +import path from 'path'; + import type { Plugin } from 'rollup'; import type { ResolvedAlias, ResolverFunction, ResolverObject, RollupAliasOptions } from '../types'; @@ -97,7 +99,18 @@ export default function alias(options: RollupAliasOptions = {}): Plugin { updatedId, importer, Object.assign({ skipSelf: true }, resolveOptions) - ).then((resolved) => resolved || { id: updatedId }); + ).then((resolved) => { + if (resolved) return resolved; + + if (!path.isAbsolute(updatedId)) { + this.warn( + `rewrote ${importee} to ${updatedId} but was not an abolute path and was not handled by other plugins. ` + + `This will lead to duplicated modules for the same path. ` + + `To avoid duplicating modules, you should resolve to an absolute path.` + ); + } + return { id: updatedId }; + }); } }; } diff --git a/packages/alias/test/fixtures/folder/warn-importee.js b/packages/alias/test/fixtures/folder/warn-importee.js new file mode 100644 index 000000000..0f4e35a4a --- /dev/null +++ b/packages/alias/test/fixtures/folder/warn-importee.js @@ -0,0 +1 @@ +console.log() diff --git a/packages/alias/test/fixtures/warn.js b/packages/alias/test/fixtures/warn.js new file mode 100644 index 000000000..f655535b5 --- /dev/null +++ b/packages/alias/test/fixtures/warn.js @@ -0,0 +1,2 @@ +import '@/warn-importee.js' +import './folder/warn-importee.js' diff --git a/packages/alias/test/test.mjs b/packages/alias/test/test.mjs index 55a67aa0d..2f0be4eab 100755 --- a/packages/alias/test/test.mjs +++ b/packages/alias/test/test.mjs @@ -1,6 +1,7 @@ import path, { posix } from 'path'; import { fileURLToPath } from 'url'; import { createRequire } from 'module'; +import os from 'os'; import test from 'ava'; import { rollup } from 'rollup'; @@ -10,13 +11,16 @@ import alias from 'current-package'; const DIRNAME = fileURLToPath(new URL('.', import.meta.url)); +const isWindows = os.platform() === 'win32'; + /** * Helper function to test configuration with Rollup * @param plugins is an array of plugins for Rollup, they should include "alias" + * @param externalIds is an array of ids that will be external * @param tests is an array of pairs [source, importer] * @returns {Promise} */ -function resolveWithRollup(plugins, tests) { +function resolveWithRollup(plugins, externalIds, tests) { if (!plugins.find((p) => p.name === 'alias')) { throw new Error('`plugins` should include the alias plugin.'); } @@ -41,6 +45,7 @@ function resolveWithRollup(plugins, tests) { }, resolveId(id) { if (id === 'dummy-input') return id; + if (externalIds.includes(id)) return { id, external: true }; return null; }, load(id) { @@ -58,11 +63,12 @@ function resolveWithRollup(plugins, tests) { /** * Helper function to test configuration with Rollup and injected alias plugin * @param aliasOptions is a configuration for alias plugin + * @param externalIds is an array of ids that will be external * @param tests is an array of pairs [source, importer] * @returns {Promise} */ -function resolveAliasWithRollup(aliasOptions, tests) { - return resolveWithRollup([alias(aliasOptions)], tests); +function resolveAliasWithRollup(aliasOptions, externalIds, tests) { + return resolveWithRollup([alias(aliasOptions)], externalIds, tests); } test('type', (t) => { @@ -90,6 +96,7 @@ test('Simple aliasing (array)', (t) => { find: './local', replacement: 'global' } ] }, + ['bar', 'paradise', 'global'], [ { source: 'foo', importer: '/src/importer.js' }, { source: 'pony', importer: '/src/importer.js' }, @@ -106,6 +113,7 @@ test('Simple aliasing (object)', (t) => './local': 'global' } }, + ['bar', 'paradise', 'global'], [ { source: 'foo', importer: '/src/importer.js' }, { source: 'pony', importer: '/src/importer.js' }, @@ -125,6 +133,7 @@ test('RegExp aliasing', (t) => { find: /^test\/$/, replacement: 'this/is/strict' } ] }, + ['fooooooooobar2019', 'i/am/a/barbie/girl', 'this/is/strict'], [ { source: 'fooooooooobar', @@ -150,6 +159,7 @@ test('Will not confuse modules with similar names', (t) => { find: './foo', replacement: 'bar' } ] }, + [], [ { source: 'foo2', importer: '/src/importer.js' }, { @@ -168,6 +178,7 @@ test('Alias entry file', (t) => { entries: [{ find: 'abacaxi', replacement: './abacaxi' }] }, + ['./abacaxi/entry.js'], // eslint-disable-next-line no-undefined [{ source: 'abacaxi/entry.js' }] ).then((result) => t.deepEqual(result, ['./abacaxi/entry.js']))); @@ -177,11 +188,17 @@ test('i/am/a/file', (t) => { entries: [{ find: 'resolve', replacement: 'i/am/a/file' }] }, + ['i/am/a/file'], [{ source: 'resolve', importer: '/src/import.js' }] ).then((result) => t.deepEqual(result, ['i/am/a/file']))); -test('Windows absolute path aliasing', (t) => - resolveAliasWithRollup( +test('Windows absolute path aliasing', (t) => { + if (!isWindows) { + t.deepEqual(1, 1); + return null; + } + + return resolveAliasWithRollup( { entries: [ { @@ -190,13 +207,15 @@ test('Windows absolute path aliasing', (t) => } ] }, + [], [ { source: 'resolve', importer: posix.resolve(DIRNAME, './fixtures/index.js') } ] - ).then((result) => t.deepEqual(result, ['E:\\react\\node_modules\\fbjs\\lib\\warning']))); + ).then((result) => t.deepEqual(result, ['E:\\react\\node_modules\\fbjs\\lib\\warning'])); +}); /** * Helper function to get moduleIDs from final Rollup bundle @@ -276,6 +295,7 @@ test('Global customResolver function', (t) => { ], customResolver: () => customResult }, + [], [ { source: 'test', @@ -300,6 +320,7 @@ test('Local customResolver function', (t) => { ], customResolver: () => customResult }, + [], [ { source: 'test', @@ -322,6 +343,7 @@ test('Global customResolver plugin-like object', (t) => { ], customResolver: { resolveId: () => customResult } }, + [], [ { source: 'test', @@ -348,6 +370,7 @@ test('Local customResolver plugin-like object', (t) => { ], customResolver: { resolveId: () => customResult } }, + [], [ { source: 'test', @@ -373,6 +396,7 @@ test('supports node-resolve as a custom resolver', (t) => ], customResolver: nodeResolvePlugin() }, + [], [ { source: 'local-resolver', @@ -450,6 +474,7 @@ test('Forwards isEntry and custom options to a custom resolver', (t) => { return args[0]; } }, + [], [ { source: 'entry', importer: '/src/importer.js', options: { isEntry: true } }, { @@ -497,9 +522,15 @@ test('Forwards isEntry and custom options to other plugins', (t) => { name: 'test', resolveId(...args) { resolverCalls.push(args); + + if (['entry-point', 'non-entry-point'].includes(args[0])) { + return { id: args[0], external: true }; + } + return null; } } ], + [], [ { source: 'entry', importer: '/src/importer.js', options: { isEntry: true } }, { @@ -558,6 +589,7 @@ test('CustomResolver plugin-like object with buildStart', (t) => { buildStart: () => (count.option += 1) } }, + [], [] ).then(() => t.deepEqual(count, { @@ -608,3 +640,34 @@ test('Works as CJS plugin', async (t) => { ) ); }); + +test('show warning for non-absolute non-plugin resolved id', async (t) => { + const warnList = []; + await rollup({ + input: './test/fixtures/warn.js', + plugins: [ + alias({ + entries: [ + { + find: '@', + replacement: path.relative(process.cwd(), path.join(DIRNAME, './fixtures/folder')) + } + ] + }) + ], + onwarn(log) { + const formattedLog = { ...log, message: log.message.replace(/\\/g, '/') }; + warnList.push(formattedLog); + } + }); + t.deepEqual(warnList, [ + { + message: + 'rewrote @/warn-importee.js to test/fixtures/folder/warn-importee.js but was not an abolute path and was not handled by other plugins. ' + + 'This will lead to duplicated modules for the same path. ' + + 'To avoid duplicating modules, you should resolve to an absolute path.', + code: 'PLUGIN_WARNING', + plugin: 'alias' + } + ]); +}); diff --git a/packages/commonjs/CHANGELOG.md b/packages/commonjs/CHANGELOG.md index 2fd268cf7..26909f198 100644 --- a/packages/commonjs/CHANGELOG.md +++ b/packages/commonjs/CHANGELOG.md @@ -1,5 +1,29 @@ # @rollup/plugin-commonjs ChangeLog +## v26.0.1 + +_2024-06-05_ + +### Bugfixes + +- fix: correct import of glob (04a15b5) + +## v26.0.0 + +_2024-06-05_ + +### Breaking Changes + +- chore!: bump glob's version (#1695) + +## v25.0.8 + +_2024-05-22_ + +### Bugfixes + +- fix: preserve the class body property keys even if they are special keywords (#1688) + ## v25.0.7 _2023-10-15_ diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index aaa8eef48..eaf3fdef3 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-commonjs", - "version": "25.0.7", + "version": "26.0.1", "publishConfig": { "access": "public" }, @@ -21,7 +21,7 @@ "default": "./dist/cjs/index.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0 || 14 >= 14.17" }, "scripts": { "build": "rollup -c", @@ -65,7 +65,7 @@ "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", - "glob": "^8.0.3", + "glob": "^10.4.1", "is-reference": "1.2.1", "magic-string": "^0.30.3" }, @@ -75,7 +75,6 @@ "locate-character": "^2.0.5", "require-relative": "^0.8.7", "rollup": "^4.0.0-24", - "shx": "^0.3.4", "source-map": "^0.7.4", "source-map-support": "^0.5.21", "typescript": "^4.8.3" diff --git a/packages/commonjs/src/dynamic-modules.js b/packages/commonjs/src/dynamic-modules.js index c00c21511..748177f44 100644 --- a/packages/commonjs/src/dynamic-modules.js +++ b/packages/commonjs/src/dynamic-modules.js @@ -3,7 +3,7 @@ import { join, resolve, dirname } from 'path'; import getCommonDir from 'commondir'; -import glob from 'glob'; +import { glob } from 'glob'; import { getVirtualPathForDynamicRequirePath, normalizePathSlashes } from './utils'; @@ -41,7 +41,9 @@ export function getDynamicRequireModules(patterns, dynamicRequireRoot) { isNegated ? dynamicRequireModules.delete(targetPath) : dynamicRequireModules.set(targetPath, resolvedPath); - for (const path of glob.sync(isNegated ? pattern.substr(1) : pattern)) { + for (const path of glob + .sync(isNegated ? pattern.substr(1) : pattern) + .sort((a, b) => a.localeCompare(b, 'en'))) { const resolvedPath = resolve(path); const requirePath = normalizePathSlashes(resolvedPath); if (isDirectory(resolvedPath)) { diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index c356318bc..ba348dedf 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -292,7 +292,12 @@ export default async function transformCommonjs( return; case 'Identifier': { const { name } = node; - if (!isReference(node, parent) || scope.contains(name)) return; + if ( + !isReference(node, parent) || + scope.contains(name) || + (parent.type === 'PropertyDefinition' && parent.key === node) + ) + return; switch (name) { case 'require': uses.require = true; diff --git a/packages/commonjs/test/fixtures/function/class-body-property-keys-are-special-keywords/_config.js b/packages/commonjs/test/fixtures/function/class-body-property-keys-are-special-keywords/_config.js new file mode 100644 index 000000000..bca2bd171 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/class-body-property-keys-are-special-keywords/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'preserve the class body property keys even if they are special keywords', +}; diff --git a/packages/commonjs/test/fixtures/function/class-body-property-keys-are-special-keywords/main.js b/packages/commonjs/test/fixtures/function/class-body-property-keys-are-special-keywords/main.js new file mode 100644 index 000000000..67ac52d62 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/class-body-property-keys-are-special-keywords/main.js @@ -0,0 +1,7 @@ +class Rollup { + define; + require; + global; +} + +exports.Rollup = Rollup; diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 91d0899b0..c6e8d6b30 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -241,6 +241,30 @@ Generated by [AVA](https://avajs.dev). `, } +## class-body-property-keys-are-special-keywords + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + Object.defineProperty(exports, '__esModule', { value: true });␊ + ␊ + var main = {};␊ + ␊ + class Rollup {␊ + define;␊ + require;␊ + global;␊ + }␊ + ␊ + var Rollup_1 = main.Rollup = Rollup;␊ + ␊ + exports.Rollup = Rollup_1;␊ + exports.default = main;␊ + `, + } + ## compiled-esm-default-is-module-exports-false > Snapshot 1 diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 2d831299f..726565e0d 100644 Binary files a/packages/commonjs/test/snapshots/function.js.snap and b/packages/commonjs/test/snapshots/function.js.snap differ diff --git a/packages/dynamic-import-vars/CHANGELOG.md b/packages/dynamic-import-vars/CHANGELOG.md index 2be9ff627..660134aa5 100644 --- a/packages/dynamic-import-vars/CHANGELOG.md +++ b/packages/dynamic-import-vars/CHANGELOG.md @@ -1,5 +1,29 @@ # @rollup/plugin-dynamic-import-vars ChangeLog +## v2.1.3 + +_2024-09-22_ + +### Bugfixes + +- fix: simplify regex (#1751) + +## v2.1.2 + +_2023-11-28_ + +### Bugfixes + +- fix: Allow a "no files found" error to be emitted as warning (#1625) + +## v2.1.1 + +_2023-11-25_ + +### Bugfixes + +- fix: escape special glob characters (#1636) + ## v2.1.0 _2023-10-25_ diff --git a/packages/dynamic-import-vars/README.md b/packages/dynamic-import-vars/README.md index bd3eb82bd..ae663cdf2 100644 --- a/packages/dynamic-import-vars/README.md +++ b/packages/dynamic-import-vars/README.md @@ -68,6 +68,8 @@ Default: `false` By default, the plugin will not throw errors when target files are not found. Setting this option to true will result in errors thrown when encountering files which don't exist. +⚠️ _Important:_ Enabling this option when `warnOnError` is set to `true` will result in a warning and _not_ an error + #### `warnOnError` Type: `Boolean`
diff --git a/packages/dynamic-import-vars/package.json b/packages/dynamic-import-vars/package.json index bfe2c9398..d25ea21b9 100644 --- a/packages/dynamic-import-vars/package.json +++ b/packages/dynamic-import-vars/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-dynamic-import-vars", - "version": "2.1.0", + "version": "2.1.3", "publishConfig": { "access": "public" }, diff --git a/packages/dynamic-import-vars/src/dynamic-import-to-glob.js b/packages/dynamic-import-vars/src/dynamic-import-to-glob.js index 4d3f30b3f..ed1ae978e 100644 --- a/packages/dynamic-import-vars/src/dynamic-import-to-glob.js +++ b/packages/dynamic-import-vars/src/dynamic-import-to-glob.js @@ -1,15 +1,18 @@ import path from 'path'; +import fastGlob from 'fast-glob'; + export class VariableDynamicImportError extends Error {} /* eslint-disable-next-line no-template-curly-in-string */ const example = 'For example: import(`./foo/${bar}.js`).'; function sanitizeString(str) { + if (str === '') return str; if (str.includes('*')) { throw new VariableDynamicImportError('A dynamic import cannot contain * characters.'); } - return str; + return fastGlob.escapePath(str); } function templateLiteralToGlob(node) { @@ -104,7 +107,7 @@ export function dynamicImportToGlob(node, sourceString) { } // Disallow ./*.ext - const ownDirectoryStarExtension = /^\.\/\*\.[\w]+$/; + const ownDirectoryStarExtension = /^\.\/\*\.\w+$/; if (ownDirectoryStarExtension.test(glob)) { throw new VariableDynamicImportError( `${ diff --git a/packages/dynamic-import-vars/src/index.js b/packages/dynamic-import-vars/src/index.js index 3d631b729..b44770c45 100644 --- a/packages/dynamic-import-vars/src/index.js +++ b/packages/dynamic-import-vars/src/index.js @@ -56,11 +56,14 @@ function dynamicImportVariables({ include, exclude, warnOnError, errorWhenNoFile ); if (errorWhenNoFilesFound && paths.length === 0) { - this.error( - new Error( - `No files found in ${glob} when trying to dynamically load concatted string from ${id}` - ) + const error = new Error( + `No files found in ${glob} when trying to dynamically load concatted string from ${id}` ); + if (warnOnError) { + this.warn(error); + } else { + this.error(error); + } } // create magic string if it wasn't created already diff --git a/packages/dynamic-import-vars/test/rollup-plugin-dynamic-import-vars.test.js b/packages/dynamic-import-vars/test/rollup-plugin-dynamic-import-vars.test.js index 6a0ae9448..58c40091c 100644 --- a/packages/dynamic-import-vars/test/rollup-plugin-dynamic-import-vars.test.js +++ b/packages/dynamic-import-vars/test/rollup-plugin-dynamic-import-vars.test.js @@ -218,7 +218,7 @@ test("doesn't throw if no files in dir when option isn't set", async (t) => { t.false(thrown); }); -test('throws if no files in dir when option is set', async (t) => { +test('throws if no files in dir when `errorWhenNoFilesFound` is set', async (t) => { let thrown = false; try { await rollup({ @@ -236,3 +236,21 @@ test('throws if no files in dir when option is set', async (t) => { } t.true(thrown); }); + +test('warns if no files in dir when `errorWhenNoFilesFound` and `warnOnError` are both set', async (t) => { + let warningEmitted = false; + await rollup({ + input: 'fixture-no-files.js', + plugins: [dynamicImportVars({ errorWhenNoFilesFound: true, warnOnError: true })], + onwarn(warning) { + t.deepEqual( + warning.message, + `No files found in ./module-dir-c/*.js when trying to dynamically load concatted string from ${require.resolve( + './fixtures/fixture-no-files.js' + )}` + ); + warningEmitted = true; + } + }); + t.true(warningEmitted); +}); diff --git a/packages/dynamic-import-vars/test/src/dynamic-import-to-glob.test.mjs b/packages/dynamic-import-vars/test/src/dynamic-import-to-glob.test.mjs index a08624b49..17f50124c 100644 --- a/packages/dynamic-import-vars/test/src/dynamic-import-to-glob.test.mjs +++ b/packages/dynamic-import-vars/test/src/dynamic-import-to-glob.test.mjs @@ -268,3 +268,21 @@ test('throws when dynamic import imports does not contain a file extension', (t) ); t.true(error instanceof VariableDynamicImportError); }); + +test('escapes ()', (t) => { + const ast = parse('import(`./${foo}/(foo).js`);', { + sourceType: 'module' + }); + + const glob = dynamicImportToGlob(ast.body[0].expression.source); + t.is(glob, './*/\\(foo\\).js'); +}); + +test('escapes []', (t) => { + const ast = parse('import(`./${foo}/[foo].js`);', { + sourceType: 'module' + }); + + const glob = dynamicImportToGlob(ast.body[0].expression.source); + t.is(glob, './*/\\[foo\\].js'); +}); diff --git a/packages/esm-shim/CHANGELOG.md b/packages/esm-shim/CHANGELOG.md index 5d7f26ab9..c53603706 100644 --- a/packages/esm-shim/CHANGELOG.md +++ b/packages/esm-shim/CHANGELOG.md @@ -1,5 +1,29 @@ # @rollup/plugin-esm-shim ChangeLog +## v0.1.7 + +_2024-06-05_ + +### Bugfixes + +- fix: missing exports in types (#1670) + +## v0.1.6 + +_2024-04-05_ + +### Bugfixes + +- fix: do not insert shims at `import` literal (#1696) + +## v0.1.5 + +_2023-11-05_ + +### Updates + +- refactor: use prefix for build in module imports (#1622) + ## v0.1.4 _2023-10-15_ diff --git a/packages/esm-shim/package.json b/packages/esm-shim/package.json index fbbd2288c..e9ba2c84a 100644 --- a/packages/esm-shim/package.json +++ b/packages/esm-shim/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-esm-shim", - "version": "0.1.4", + "version": "0.1.7", "publishConfig": { "access": "public" }, diff --git a/packages/esm-shim/src/constants.ts b/packages/esm-shim/src/constants.ts index 5ddd01ca6..9f00e960c 100644 --- a/packages/esm-shim/src/constants.ts +++ b/packages/esm-shim/src/constants.ts @@ -2,13 +2,13 @@ export const CJSyntaxRegex = /__filename|__dirname|require\(|require\.resolve\(/ export const ESMShim = ` // -- Shims -- -import cjsUrl from 'url'; -import cjsPath from 'path'; -import cjsModule from 'module'; +import cjsUrl from 'node:url'; +import cjsPath from 'node:path'; +import cjsModule from 'node:module'; const __filename = cjsUrl.fileURLToPath(import.meta.url); const __dirname = cjsPath.dirname(__filename); const require = cjsModule.createRequire(import.meta.url); `; export const ESMStaticImportRegex = - /(?<=\s|^|;)import\s*([\s"']*(?[\w\t\n\r $*,/{}]+)from\s*)?["']\s*(?(?<="\s*)[^"]*[^\s"](?=\s*")|(?<='\s*)[^']*[^\s'](?=\s*'))\s*["'][\s;]*/gm; + /(?<=\s|^|;)import\s*([\s"']*(?[\w\t\n\r $*,/{}]+)from\s*)?["']\s*(?(?<="\s*)[^"\n]*[^\s"](?=\s*")|(?<='\s*)[^'\n]*[^\s'](?=\s*'))\s*["'][\s;]*/gm; diff --git a/packages/esm-shim/test/fixtures/cjs-import-literal.js b/packages/esm-shim/test/fixtures/cjs-import-literal.js new file mode 100644 index 000000000..915b1ceaf --- /dev/null +++ b/packages/esm-shim/test/fixtures/cjs-import-literal.js @@ -0,0 +1,6 @@ +const dn = __dirname; + +module.exports = { + keyword: ' import', + dn +}; diff --git a/packages/esm-shim/test/snapshots/test.js.md b/packages/esm-shim/test/snapshots/test.js.md index e0176a0cb..98c82442e 100644 --- a/packages/esm-shim/test/snapshots/test.js.md +++ b/packages/esm-shim/test/snapshots/test.js.md @@ -10,9 +10,9 @@ Generated by [AVA](https://avajs.dev). `␊ // -- Shims --␊ - import cjsUrl from 'url';␊ - import cjsPath from 'path';␊ - import cjsModule from 'module';␊ + import cjsUrl from 'node:url';␊ + import cjsPath from 'node:path';␊ + import cjsModule from 'node:module';␊ const __filename = cjsUrl.fileURLToPath(import.meta.url);␊ const __dirname = cjsPath.dirname(__filename);␊ const require = cjsModule.createRequire(import.meta.url);␊ @@ -27,9 +27,9 @@ Generated by [AVA](https://avajs.dev). `␊ // -- Shims --␊ - import cjsUrl from 'url';␊ - import cjsPath from 'path';␊ - import cjsModule from 'module';␊ + import cjsUrl from 'node:url';␊ + import cjsPath from 'node:path';␊ + import cjsModule from 'node:module';␊ const __filename = cjsUrl.fileURLToPath(import.meta.url);␊ const __dirname = cjsPath.dirname(__filename);␊ const require = cjsModule.createRequire(import.meta.url);␊ @@ -58,9 +58,9 @@ Generated by [AVA](https://avajs.dev). ␊ ␊ // -- Shims --␊ - import cjsUrl from 'url';␊ - import cjsPath from 'path';␊ - import cjsModule from 'module';␊ + import cjsUrl from 'node:url';␊ + import cjsPath from 'node:path';␊ + import cjsModule from 'node:module';␊ const __filename = cjsUrl.fileURLToPath(import.meta.url);␊ const __dirname = cjsPath.dirname(__filename);␊ const require = cjsModule.createRequire(import.meta.url);␊ @@ -80,9 +80,9 @@ Generated by [AVA](https://avajs.dev). ␊ ␊ // -- Shims --␊ - import cjsUrl from 'url';␊ - import cjsPath from 'path';␊ - import cjsModule from 'module';␊ + import cjsUrl from 'node:url';␊ + import cjsPath from 'node:path';␊ + import cjsModule from 'node:module';␊ const __filename = cjsUrl.fileURLToPath(import.meta.url);␊ const __dirname = cjsPath.dirname(__filename);␊ const require = cjsModule.createRequire(import.meta.url);␊ @@ -93,3 +93,23 @@ Generated by [AVA](https://avajs.dev). ␊ export { c, child, s };␊ ` + +## inject cjs shim should not break on valid js object with `import` literal value + +> Snapshot 1 + + `␊ + // -- Shims --␊ + import cjsUrl from 'node:url';␊ + import cjsPath from 'node:path';␊ + import cjsModule from 'node:module';␊ + const __filename = cjsUrl.fileURLToPath(import.meta.url);␊ + const __dirname = cjsPath.dirname(__filename);␊ + const require = cjsModule.createRequire(import.meta.url);␊ + const dn = __dirname;␊ + ␊ + module.exports = {␊ + keyword: ' import',␊ + dn␊ + };␊ + ` diff --git a/packages/esm-shim/test/snapshots/test.js.snap b/packages/esm-shim/test/snapshots/test.js.snap index 5143ca0dc..56705e652 100644 Binary files a/packages/esm-shim/test/snapshots/test.js.snap and b/packages/esm-shim/test/snapshots/test.js.snap differ diff --git a/packages/esm-shim/test/test.js b/packages/esm-shim/test/test.js index 3f9e5f8e4..24f5a3291 100644 --- a/packages/esm-shim/test/test.js +++ b/packages/esm-shim/test/test.js @@ -67,3 +67,19 @@ test.serial('inject cjs shim for esm output with multiple import statements', as t.snapshot(output.code); t.falsy(output.map); }); + +// see issue #1649 https://github.com/rollup/plugins/issues/1649 +test.serial( + 'inject cjs shim should not break on valid js object with `import` literal value', + async (t) => { + const bundle = await rollup({ + input: 'test/fixtures/cjs-import-literal.js', + plugins: [esmShim()] + }); + const result = await bundle.generate({ format: 'es' }); + t.is(result.output.length, 1); + const [output] = result.output; + t.snapshot(output.code); + t.falsy(output.map); + } +); diff --git a/packages/esm-shim/types/index.d.ts b/packages/esm-shim/types/index.d.ts index a4f877d8c..e7a2df455 100644 --- a/packages/esm-shim/types/index.d.ts +++ b/packages/esm-shim/types/index.d.ts @@ -1,4 +1,9 @@ -import type { Plugin } from 'rollup'; +import type { Plugin, SourceMapInput } from 'rollup'; + +interface Output { + code: string; + map?: SourceMapInput; +} /** * A Rollup plugin to replace cjs syntax for esm output bundles. @@ -6,3 +11,4 @@ import type { Plugin } from 'rollup'; * @returns Plugin instance. */ export default function commonjsShim(): Plugin; +export function provideCJSSyntax(code: string): Output | null; diff --git a/packages/graphql/CHANGELOG.md b/packages/graphql/CHANGELOG.md index 20d2516d4..75b94223a 100644 --- a/packages/graphql/CHANGELOG.md +++ b/packages/graphql/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-graphql ChangeLog +## v2.0.5 + +_2024-09-22_ + +### Bugfixes + +- fix: handle parentheses in fragment import file paths. (#1746) + ## v2.0.4 _2023-10-05_ diff --git a/packages/graphql/package.json b/packages/graphql/package.json index 6280a1b7a..dc3565952 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-graphql", - "version": "2.0.4", + "version": "2.0.5", "publishConfig": { "access": "public" }, diff --git a/packages/graphql/src/toESModules.js b/packages/graphql/src/toESModules.js index 08647fc36..cb2ccc6ce 100644 --- a/packages/graphql/src/toESModules.js +++ b/packages/graphql/src/toESModules.js @@ -29,15 +29,13 @@ function replaceRequires(source) { let index = 0; // replace a require statement with a variable - const replaceSource = source.replace(/require\(([^)]+)\)/gi, (match, path) => { - const replacePath = path.replace(/["']+/g, ''); - - if (!imports[replacePath]) { + const replaceSource = source.replace(/require\(["']([^"']+)["']\)/gi, (match, path) => { + if (!imports[path]) { index += 1; - imports[replacePath] = `frgmt${index}`; + imports[path] = `frgmt${index}`; } - return imports[replacePath]; + return imports[path]; }); // prepare import statements diff --git a/packages/graphql/test/fixtures/fragments-with-special-characters/(parentheses)/fragment.graphql b/packages/graphql/test/fixtures/fragments-with-special-characters/(parentheses)/fragment.graphql new file mode 100644 index 000000000..706b5d691 --- /dev/null +++ b/packages/graphql/test/fixtures/fragments-with-special-characters/(parentheses)/fragment.graphql @@ -0,0 +1,3 @@ +fragment ParenthesesFragment on Parentheses { + id +} diff --git a/packages/graphql/test/fixtures/fragments-with-special-characters/[brackets]/fragment.graphql b/packages/graphql/test/fixtures/fragments-with-special-characters/[brackets]/fragment.graphql new file mode 100644 index 000000000..3821b0882 --- /dev/null +++ b/packages/graphql/test/fixtures/fragments-with-special-characters/[brackets]/fragment.graphql @@ -0,0 +1,3 @@ +fragment BracketsFragment on Brackets { + id +} diff --git a/packages/graphql/test/fixtures/fragments-with-special-characters/index.js b/packages/graphql/test/fixtures/fragments-with-special-characters/index.js new file mode 100644 index 000000000..286dd2116 --- /dev/null +++ b/packages/graphql/test/fixtures/fragments-with-special-characters/index.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as doc } from './query.graphql'; diff --git a/packages/graphql/test/fixtures/fragments-with-special-characters/query.graphql b/packages/graphql/test/fixtures/fragments-with-special-characters/query.graphql new file mode 100644 index 000000000..390e3cc12 --- /dev/null +++ b/packages/graphql/test/fixtures/fragments-with-special-characters/query.graphql @@ -0,0 +1,7 @@ +#import "./(parentheses)/fragment.graphql" +#import "./[brackets]/fragment.graphql" + +query Query { + ...ParenthesesFragment + ...BracketsFragment +} diff --git a/packages/graphql/test/test.js b/packages/graphql/test/test.js index b4af33306..d085da2b4 100755 --- a/packages/graphql/test/test.js +++ b/packages/graphql/test/test.js @@ -62,3 +62,15 @@ test('should support graphqls schema files', async (t) => { t.truthy('doc' in module.exports); t.is(module.exports.doc.kind, 'Document'); }); + +test('should support fragment imports with brackets and parentheses in file paths', async (t) => { + const bundle = await rollup({ + input: 'fixtures/fragments-with-special-characters/index.js', + plugins: [graphql()] + }); + + const { module } = await testBundle(t, bundle); + + t.truthy('doc' in module.exports); + t.is(module.exports.doc.kind, 'Document'); +}); diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index 5a113334a..6b1514d94 100644 --- a/packages/html/CHANGELOG.md +++ b/packages/html/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-html ChangeLog +## v1.0.4 + +_2024-09-22_ + +### Bugfixes + +- fix: template function first arg is always provided (#1718) + ## v1.0.3 _2023-10-05_ diff --git a/packages/html/package.json b/packages/html/package.json index 4bfdf7371..2f53e9062 100644 --- a/packages/html/package.json +++ b/packages/html/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-html", - "version": "1.0.3", + "version": "1.0.4", "publishConfig": { "access": "public" }, diff --git a/packages/html/types/index.d.ts b/packages/html/types/index.d.ts index f8d62ef33..715e9a03c 100644 --- a/packages/html/types/index.d.ts +++ b/packages/html/types/index.d.ts @@ -15,7 +15,7 @@ export interface RollupHtmlOptions { fileName?: string; meta?: Record[]; publicPath?: string; - template?: (templateoptions?: RollupHtmlTemplateOptions) => string; + template?: (templateoptions: RollupHtmlTemplateOptions) => string; } export function makeHtmlAttributes(attributes: Record): string; diff --git a/packages/inject/src/index.js b/packages/inject/src/index.js index 6077b5475..9030c8a1d 100644 --- a/packages/inject/src/index.js +++ b/packages/inject/src/index.js @@ -96,7 +96,7 @@ export default function inject(options) { } catch (err) { this.warn({ code: 'PARSE_ERROR', - message: `rollup-plugin-inject: failed to parse ${id}. Consider restricting the plugin to particular files via options.include` + message: `@rollup/plugin-inject: failed to parse ${id}. Consider restricting the plugin to particular files via options.include` }); } if (!ast) { diff --git a/packages/json/CHANGELOG.md b/packages/json/CHANGELOG.md index 0f412eb44..62553b080 100755 --- a/packages/json/CHANGELOG.md +++ b/packages/json/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-json ChangeLog +## v6.1.0 + +_2023-12-12_ + +### Features + +- feat: add `includeArbitraryNames` option (#1641) + ## v6.0.1 _2023-10-05_ diff --git a/packages/json/README.md b/packages/json/README.md index e98f81fe5..1b1c9cd0f 100644 --- a/packages/json/README.md +++ b/packages/json/README.md @@ -75,6 +75,13 @@ Default: `null` A [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, which specifies the files in the build the plugin should operate on. By default all files are targeted. +### `includeArbitraryNames` + +Type: `Boolean`
+Default: `false` + +If `true` and `namedExports` is `true`, generates a named export for not a valid identifier properties of the JSON object by leveraging the ["Arbitrary Module Namespace Identifier Names" feature](https://github.com/tc39/ecma262/pull/2154). + ### `indent` Type: `String`
diff --git a/packages/json/package.json b/packages/json/package.json index 47b04a896..5851ef6ed 100755 --- a/packages/json/package.json +++ b/packages/json/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-json", - "version": "6.0.1", + "version": "6.1.0", "publishConfig": { "access": "public" }, @@ -61,7 +61,7 @@ } }, "dependencies": { - "@rollup/pluginutils": "^5.0.1" + "@rollup/pluginutils": "^5.1.0" }, "devDependencies": { "@rollup/plugin-buble": "^1.0.0", diff --git a/packages/json/src/index.js b/packages/json/src/index.js index b61ed2300..dcb8f3333 100755 --- a/packages/json/src/index.js +++ b/packages/json/src/index.js @@ -18,6 +18,7 @@ export default function json(options = {}) { preferConst: options.preferConst, compact: options.compact, namedExports: options.namedExports, + includeArbitraryNames: options.includeArbitraryNames, indent }), map: { mappings: '' } diff --git a/packages/json/test/fixtures/arbitrary/foo.json b/packages/json/test/fixtures/arbitrary/foo.json new file mode 100755 index 000000000..0776ea877 --- /dev/null +++ b/packages/json/test/fixtures/arbitrary/foo.json @@ -0,0 +1,3 @@ +{ + "foo.bar": "baz" +} diff --git a/packages/json/test/fixtures/arbitrary/main.js b/packages/json/test/fixtures/arbitrary/main.js new file mode 100755 index 000000000..75670fae1 --- /dev/null +++ b/packages/json/test/fixtures/arbitrary/main.js @@ -0,0 +1,3 @@ +export { 'foo.bar' as bar } from './foo.json'; + +result = exports; // eslint-disable-line no-undef diff --git a/packages/json/test/test.js b/packages/json/test/test.js index 1abbc2377..9aec69089 100755 --- a/packages/json/test/test.js +++ b/packages/json/test/test.js @@ -54,6 +54,17 @@ test('generates named exports', async (t) => { t.is(code.indexOf('this-should-be-excluded'), -1, 'should exclude unused properties'); }); +test('generates named exports including arbitrary names', async (t) => { + const bundle = await rollup({ + input: 'fixtures/arbitrary/main.js', + plugins: [json({ includeArbitraryNames: true })] + }); + + const { result } = await testBundle(t, bundle, { inject: { exports: {} } }); + + t.is(result.bar, 'baz'); +}); + test('resolves extensionless imports in conjunction with the node-resolve plugin', async (t) => { const bundle = await rollup({ input: 'fixtures/extensionless/main.js', diff --git a/packages/node-resolve/CHANGELOG.md b/packages/node-resolve/CHANGELOG.md index b0515adc8..ae6af6e4b 100755 --- a/packages/node-resolve/CHANGELOG.md +++ b/packages/node-resolve/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-node-resolve ChangeLog +## v15.2.4 + +_2024-09-22_ + +### Updates + +- chore: remove is-builtin-module (#1735) + ## v15.2.3 _2023-10-08_ diff --git a/packages/node-resolve/package.json b/packages/node-resolve/package.json index 78b7c922d..73fd1c285 100644 --- a/packages/node-resolve/package.json +++ b/packages/node-resolve/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-node-resolve", - "version": "15.2.3", + "version": "15.2.4", "publishConfig": { "access": "public" }, @@ -64,7 +64,6 @@ "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", "resolve": "^1.22.1" }, diff --git a/packages/node-resolve/src/index.js b/packages/node-resolve/src/index.js index 3d389383d..dbf301c80 100644 --- a/packages/node-resolve/src/index.js +++ b/packages/node-resolve/src/index.js @@ -1,7 +1,8 @@ /* eslint-disable no-param-reassign, no-shadow, no-undefined */ import { dirname, normalize, resolve, sep } from 'path'; -import isBuiltinModule from 'is-builtin-module'; +import { builtinModules } from 'module'; + import deepMerge from 'deepmerge'; import isModule from 'is-module'; @@ -42,6 +43,8 @@ const defaults = { // TODO: set to false in next major release or remove allowExportsFolderMapping: true }; +const nodeImportPrefix = /^node:/; + export const DEFAULTS = deepFreeze(deepMerge({}, defaults)); export function nodeResolve(opts = {}) { @@ -190,7 +193,7 @@ export function nodeResolve(opts = {}) { allowExportsFolderMapping: options.allowExportsFolderMapping }); - const importeeIsBuiltin = isBuiltinModule(importee); + const importeeIsBuiltin = builtinModules.includes(importee.replace(nodeImportPrefix, '')); const resolved = importeeIsBuiltin && preferBuiltins ? { diff --git a/packages/pluginutils/CHANGELOG.md b/packages/pluginutils/CHANGELOG.md index f1af3f625..10f9df2eb 100755 --- a/packages/pluginutils/CHANGELOG.md +++ b/packages/pluginutils/CHANGELOG.md @@ -1,5 +1,25 @@ # @rollup/pluginutils ChangeLog +## v5.1.1 + +_2024-09-22_ + +### Bugfixes + +- fix: improve regex performance (#1753) + +## v5.1.0 + +_2023-11-28_ + +### Features + +- feat: add `includeArbitraryNames: true` to `dataToEsm` (#1635) + +### Updates + +- doc: correct the return type of createFilter (#1633) + ## v5.0.5 _2023-10-05_ diff --git a/packages/pluginutils/README.md b/packages/pluginutils/README.md index e705cb912..942e4d4c8 100755 --- a/packages/pluginutils/README.md +++ b/packages/pluginutils/README.md @@ -64,7 +64,7 @@ Attaches `Scope` objects to the relevant nodes of an AST. Each `Scope` object ha Parameters: `(ast: Node, propertyName?: String)`
Returns: `Object` -See [rollup-plugin-inject](https://github.com/rollup/rollup-plugin-inject) or [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) for an example of usage. +See [@rollup/plugin-inject](https://github.com/rollup/plugins/tree/master/packages/inject) or [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/master/packages/commonjs) for an example of usage. ```js import { attachScopes } from '@rollup/pluginutils'; @@ -100,7 +100,7 @@ export default function myPlugin(options = {}) { Constructs a filter function which can be used to determine whether or not certain modules should be operated upon. Parameters: `(include?: , exclude?: , options?: Object)`
-Returns: `String` +Returns: `(id: string | unknown) => boolean` #### `include` and `exclude` @@ -143,7 +143,7 @@ export default function myPlugin(options = {}) { Transforms objects into tree-shakable ES Module imports. -Parameters: `(data: Object)`
+Parameters: `(data: Object, options: DataToEsmOptions)`
Returns: `String` #### `data` @@ -152,6 +152,12 @@ Type: `Object` An object to transform into an ES module. +#### `options` + +Type: `DataToEsmOptions` + +_Note: Please see the TypeScript definition for complete documentation of these options_ + #### Usage ```js @@ -167,7 +173,8 @@ const esModuleSource = dataToEsm( indent: '\t', preferConst: true, objectShorthand: true, - namedExports: true + namedExports: true, + includeArbitraryNames: false } ); /* diff --git a/packages/pluginutils/package.json b/packages/pluginutils/package.json index e86973629..7476ddc27 100644 --- a/packages/pluginutils/package.json +++ b/packages/pluginutils/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/pluginutils", - "version": "5.0.5", + "version": "5.1.1", "publishConfig": { "access": "public" }, diff --git a/packages/pluginutils/src/attachScopes.ts b/packages/pluginutils/src/attachScopes.ts index d5dace4ed..fc6392ddb 100755 --- a/packages/pluginutils/src/attachScopes.ts +++ b/packages/pluginutils/src/attachScopes.ts @@ -66,7 +66,7 @@ const attachScopes: AttachScopes = function attachScopes(ast, propertyName = 'sc const node = n as estree.Node; // function foo () {...} // class Foo {...} - if (/(Function|Class)Declaration/.test(node.type)) { + if (/(?:Function|Class)Declaration/.test(node.type)) { scope.addDeclaration(node, false, false); } @@ -98,7 +98,7 @@ const attachScopes: AttachScopes = function attachScopes(ast, propertyName = 'sc } // create new for scope - if (/For(In|Of)?Statement/.test(node.type)) { + if (/For(?:In|Of)?Statement/.test(node.type)) { newScope = new Scope({ parent: scope, block: true diff --git a/packages/pluginutils/src/dataToEsm.ts b/packages/pluginutils/src/dataToEsm.ts index d51d59e1a..4be5d7ae4 100755 --- a/packages/pluginutils/src/dataToEsm.ts +++ b/packages/pluginutils/src/dataToEsm.ts @@ -59,6 +59,17 @@ function serialize(obj: unknown, indent: Indent, baseIndent: string): string { return stringify(obj); } +// isWellFormed exists from Node.js 20 +const hasStringIsWellFormed = 'isWellFormed' in String.prototype; + +function isWellFormedString(input: string): boolean { + // @ts-expect-error String::isWellFormed exists from ES2024. tsconfig lib is set to ES6 + if (hasStringIsWellFormed) return input.isWellFormed(); + + // https://github.com/tc39/proposal-is-usv-string/blob/main/README.md#algorithm + return !/\p{Surrogate}/u.test(input); +} + const dataToEsm: DataToEsm = function dataToEsm(data, options = {}) { const t = options.compact ? '' : 'indent' in options ? options.indent : '\t'; const _ = options.compact ? '' : ' '; @@ -78,8 +89,19 @@ const dataToEsm: DataToEsm = function dataToEsm(data, options = {}) { return `export default${magic}${code};`; } + let maxUnderbarPrefixLength = 0; + for (const key of Object.keys(data)) { + const underbarPrefixLength = /^(_+)/.exec(key)?.[0].length ?? 0; + if (underbarPrefixLength > maxUnderbarPrefixLength) { + maxUnderbarPrefixLength = underbarPrefixLength; + } + } + + const arbitraryNamePrefix = `${'_'.repeat(maxUnderbarPrefixLength + 1)}arbitrary`; + let namedExportCode = ''; const defaultExportRows = []; + const arbitraryNameExportRows: string[] = []; for (const [key, value] of Object.entries(data)) { if (key === makeLegalIdentifier(key)) { if (options.objectShorthand) defaultExportRows.push(key); @@ -93,11 +115,27 @@ const dataToEsm: DataToEsm = function dataToEsm(data, options = {}) { defaultExportRows.push( `${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}` ); + if (options.includeArbitraryNames && isWellFormedString(key)) { + const variableName = `${arbitraryNamePrefix}${arbitraryNameExportRows.length}`; + namedExportCode += `${declarationType} ${variableName}${_}=${_}${serialize( + value, + options.compact ? null : t, + '' + )};${n}`; + arbitraryNameExportRows.push(`${variableName} as ${JSON.stringify(key)}`); + } } } - return `${namedExportCode}export default${_}{${n}${t}${defaultExportRows.join( + + const arbitraryExportCode = + arbitraryNameExportRows.length > 0 + ? `export${_}{${n}${t}${arbitraryNameExportRows.join(`,${n}${t}`)}${n}};${n}` + : ''; + const defaultExportCode = `export default${_}{${n}${t}${defaultExportRows.join( `,${n}${t}` )}${n}};${n}`; + + return `${namedExportCode}${arbitraryExportCode}${defaultExportCode}`; }; export { dataToEsm as default }; diff --git a/packages/pluginutils/test/dataToEsm.ts b/packages/pluginutils/test/dataToEsm.ts index d1d5d9ac5..d32fe3e24 100755 --- a/packages/pluginutils/test/dataToEsm.ts +++ b/packages/pluginutils/test/dataToEsm.ts @@ -110,3 +110,20 @@ test('avoid U+2029 U+2029 -0 be ignored by JSON.stringify, and avoid it return n 'export default[-0,"\\u2028\\u2029",undefined,undefined];' ); }); + +test('support arbitrary module namespace identifier names', (t) => { + t.is( + dataToEsm( + { foo: 'foo', 'foo.bar': 'foo.bar', '\udfff': 'non wellformed' }, + { namedExports: true, includeArbitraryNames: true } + ), + 'export var foo = "foo";\nvar _arbitrary0 = "foo.bar";\nexport {\n\t_arbitrary0 as "foo.bar"\n};\nexport default {\n\tfoo: foo,\n\t"foo.bar": "foo.bar",\n\t"\\udfff": "non wellformed"\n};\n' + ); + t.is( + dataToEsm( + { foo: 'foo', 'foo.bar': 'foo.bar', '\udfff': 'non wellformed' }, + { namedExports: true, includeArbitraryNames: true, compact: true } + ), + 'export var foo="foo";var _arbitrary0="foo.bar";export{_arbitrary0 as "foo.bar"};export default{foo:foo,"foo.bar":"foo.bar","\\udfff":"non wellformed"};' + ); +}); diff --git a/packages/pluginutils/types/index.d.ts b/packages/pluginutils/types/index.d.ts index fb96d6346..4bdf3a2a6 100755 --- a/packages/pluginutils/types/index.d.ts +++ b/packages/pluginutils/types/index.d.ts @@ -10,6 +10,12 @@ export interface AttachedScope { export interface DataToEsmOptions { compact?: boolean; + /** + * @desc When this option is set, dataToEsm will generate a named export for keys that + * are not a valid identifier, by leveraging the "Arbitrary Module Namespace Identifier + * Names" feature. See: https://github.com/tc39/ecma262/pull/2154 + */ + includeArbitraryNames?: boolean; indent?: string; namedExports?: boolean; objectShorthand?: boolean; diff --git a/packages/replace/CHANGELOG.md b/packages/replace/CHANGELOG.md index 6d7721315..826a21468 100755 --- a/packages/replace/CHANGELOG.md +++ b/packages/replace/CHANGELOG.md @@ -1,5 +1,29 @@ # @rollup/plugin-replace ChangeLog +## v5.0.7 + +_2024-06-05_ + +### Bugfixes + +- fix: add missing sourceMap documentation (#1698) + +## v5.0.6 + +_2024-06-05_ + +### Bugfixes + +- fix: ternary operator replacement (#1712) + +## v5.0.5 + +_2023-10-29_ + +### Bugfixes + +- fix: prevent variable before colons from being replaced when preventAssigment is true (#1609) + ## v5.0.4 _2023-10-15_ diff --git a/packages/replace/README.md b/packages/replace/README.md index cc3e32d38..412db4d5d 100644 --- a/packages/replace/README.md +++ b/packages/replace/README.md @@ -154,6 +154,19 @@ Default: `null` A [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, which specifies the files in the build the plugin should operate on. By default all files are targeted. +### `sourceMap` or `sourcemap` + +Type: `Boolean`
+Default: `false` + +Enables generating sourcemaps for the bundled code. For example, where the plugin is called as follows: + +```js +replace({ + sourcemap: true +}); +``` + ### `values` Type: `{ [key: String]: Replacement }`, where `Replacement` is either a string or a `function` that returns a string. diff --git a/packages/replace/package.json b/packages/replace/package.json index 5ed23c508..e93542fe2 100644 --- a/packages/replace/package.json +++ b/packages/replace/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-replace", - "version": "5.0.4", + "version": "5.0.7", "publishConfig": { "access": "public" }, diff --git a/packages/replace/src/index.js b/packages/replace/src/index.js index cd1ff5563..cdbe6419a 100755 --- a/packages/replace/src/index.js +++ b/packages/replace/src/index.js @@ -74,9 +74,10 @@ export default function replace(options = {}) { if (objectGuards) expandTypeofReplacements(replacements); const functionValues = mapToFunctions(replacements); const keys = Object.keys(functionValues).sort(longest).map(escape); + const lookbehind = preventAssignment ? '(? { test(`${dir}: ${config.description}`, (t) => { const { transform } = replace(config.options); - const input = readFileSync(`fixtures/form/${dir}/input.js`, 'utf-8'); + const extname = config.isTypescript ? 'ts' : 'js'; + const input = readFileSync(`fixtures/form/${dir}/input.${extname}`, 'utf-8'); return Promise.resolve( - transform.call(transformContext, input, `${__dirname}/fixtures/form/${dir}/input.js`) + transform.call(transformContext, input, `${__dirname}/fixtures/form/${dir}/input.${extname}`) ).then((transformed) => { const actual = (transformed ? transformed.code : input).trim(); t.snapshot(actual); diff --git a/packages/replace/test/snapshots/form.js.md b/packages/replace/test/snapshots/form.js.md index 0f2bae2c6..04ba72de9 100644 --- a/packages/replace/test/snapshots/form.js.md +++ b/packages/replace/test/snapshots/form.js.md @@ -86,3 +86,18 @@ Generated by [AVA](https://avajs.dev). especial␊ replaced.doSomething()␊ \`);` + +## ternary-operator: replaces value inside ternary operators + +> Snapshot 1 + + `/* eslint-disable */␊ + first ? second : third;␊ + console.log(first, second, third);` + +## typescript-declare: doesn't replace lvalue in typescript declare + +> Snapshot 1 + + `declare const NAME: string␊ + console.log(replaced)` diff --git a/packages/replace/test/snapshots/form.js.snap b/packages/replace/test/snapshots/form.js.snap index 050826daa..242f1c08c 100644 Binary files a/packages/replace/test/snapshots/form.js.snap and b/packages/replace/test/snapshots/form.js.snap differ diff --git a/packages/run/CHANGELOG.md b/packages/run/CHANGELOG.md index 887ec6183..21570e2c7 100644 --- a/packages/run/CHANGELOG.md +++ b/packages/run/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-run ChangeLog +## v3.1.0 + +_2024-06-05_ + +### Features + +- feat: add `input` option (#1699) + ## v3.0.2 _2023-10-05_ diff --git a/packages/run/README.md b/packages/run/README.md index a57b375db..4eb5bb8d1 100644 --- a/packages/run/README.md +++ b/packages/run/README.md @@ -83,6 +83,13 @@ Default: `false` If `true`, instructs the plugin to listen to `stdin` for the sequences listed below followed by enter (carriage return). +### `input` + +Type: `String`
+Default: `null` + +Specifies the entry point this plugin will use. Not necessary if you only have a single entry point. + #### `stdin` Input Actions When this option is enabled, `stdin` will listen for the following input and perform the associated action: diff --git a/packages/run/package.json b/packages/run/package.json index c6e1dffa2..e13c22be4 100644 --- a/packages/run/package.json +++ b/packages/run/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-run", - "version": "3.0.2", + "version": "3.1.0", "publishConfig": { "access": "public" }, diff --git a/packages/run/src/index.ts b/packages/run/src/index.ts index a4f5e575e..63c7dbe7a 100644 --- a/packages/run/src/index.ts +++ b/packages/run/src/index.ts @@ -12,6 +12,7 @@ export default function run(opts: RollupRunOptions = {}): Plugin { const args = opts.args || []; const allowRestarts = opts.allowRestarts || false; + const overrideInput = opts.input; const forkOptions = opts.options || opts; delete (forkOptions as RollupRunOptions).args; delete (forkOptions as RollupRunOptions).allowRestarts; @@ -20,7 +21,7 @@ export default function run(opts: RollupRunOptions = {}): Plugin { name: 'run', buildStart(options) { - let inputs = options.input; + let inputs = overrideInput ?? options.input; if (typeof inputs === 'string') { inputs = [inputs]; @@ -31,7 +32,9 @@ export default function run(opts: RollupRunOptions = {}): Plugin { } if (inputs.length > 1) { - throw new Error(`@rollup/plugin-run only works with a single entry point`); + throw new Error( + `@rollup/plugin-run must have a single entry point; consider setting the \`input\` option` + ); } input = resolve(inputs[0]); diff --git a/packages/run/test/test.js b/packages/run/test/test.js index ffba8ea18..587850433 100644 --- a/packages/run/test/test.js +++ b/packages/run/test/test.js @@ -15,12 +15,14 @@ const sinon = require('sinon'); const run = require('../'); const cwd = join(__dirname, 'fixtures/'); -const file = join(cwd, 'output/bundle.js'); +const outputDir = join(cwd, 'output'); +const file = join(outputDir, 'bundle.js'); const input = join(cwd, 'input.js'); process.chdir(cwd); const outputOptions = { file, format: 'cjs' }; +const outputDirOptions = { dir: outputDir, format: 'cjs' }; let mockChildProcess; test.before(() => { @@ -62,8 +64,7 @@ test('checks entry point facade module', async (t) => { preserveEntrySignatures: 'strict', plugins: [run()] }); - const outputDir = join(cwd, 'output'); - await bundle.write({ dir: outputDir, format: 'cjs' }); + await bundle.write(outputDirOptions); t.true(mockChildProcess.calledWithExactly(join(outputDir, 'index.js'), [], {})); }); @@ -97,6 +98,40 @@ test('throws an error when bundle is not written to disk', async (t) => { ); }); +test('throws an error when input option is invalid', async (t) => { + const testInput = join(cwd, 'change-detect-input.js'); + const bundle = await rollup({ + input: [input, testInput], + plugins: [run({ input: 'something that is not an input' })] + }); + await t.throwsAsync( + async () => { + await bundle.write(outputDirOptions); + }, + { + instanceOf: Error, + message: '@rollup/plugin-run could not find output chunk' + } + ); +}); + +test('throws an error when there are multiple entry points', async (t) => { + const testInput = join(cwd, 'change-detect-input.js'); + await t.throwsAsync( + async () => { + await rollup({ + input: [input, testInput], + plugins: [run()] + }); + }, + { + instanceOf: Error, + message: + '@rollup/plugin-run must have a single entry point; consider setting the `input` option' + } + ); +}); + test('detects changes - forks a new child process and kills older process', async (t) => { // eslint-disable-next-line no-shadow const testInput = join(cwd, 'change-detect-input.js'); @@ -120,6 +155,16 @@ test('allow the allowRestart option', async (t) => { t.true(mockChildProcess.calledWithExactly(outputOptions.file, [], {})); }); +test('allow the input option', async (t) => { + const testInput = join(cwd, 'change-detect-input.js'); + const bundle = await rollup({ + input: [input, testInput], + plugins: [run({ input })] + }); + await bundle.write(outputDirOptions); + t.true(mockChildProcess.calledWithExactly(join(outputDir, 'input.js'), [], { input })); +}); + test.after(async () => { await del(['output']); }); diff --git a/packages/run/types/index.d.ts b/packages/run/types/index.d.ts index d546be160..fe9fbe599 100644 --- a/packages/run/types/index.d.ts +++ b/packages/run/types/index.d.ts @@ -6,6 +6,7 @@ export interface RollupRunOptions extends ForkOptions { args?: readonly string[]; options?: ForkOptions; allowRestarts?: boolean; + input?: string; } /** diff --git a/packages/swc/CHANGELOG.md b/packages/swc/CHANGELOG.md index d62598d1f..92ea249d9 100644 --- a/packages/swc/CHANGELOG.md +++ b/packages/swc/CHANGELOG.md @@ -1,5 +1,29 @@ # @rollup/plugin-swc ChangeLog +## v0.4.0 + +_2024-09-06_ + +### Features + +- feat: sets filename property, so to make additional swc features… (#1761) + +## v0.3.1 + +_2024-06-05_ + +### Updates + +- docs: add @swc/core to install step (#1666) + +## v0.3.0 + +_2023-11-09_ + +### Features + +- feat: allow passing `env` property as option (#1624) + ## v0.2.1 _2023-10-05_ diff --git a/packages/swc/README.md b/packages/swc/README.md index 861298c8d..f30bd7900 100644 --- a/packages/swc/README.md +++ b/packages/swc/README.md @@ -23,7 +23,7 @@ This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v Using npm: ```console -npm install @rollup/plugin-swc --save-dev +npm install @swc/core @rollup/plugin-swc --save-dev ``` ## Usage diff --git a/packages/swc/package.json b/packages/swc/package.json index 5fe74971f..3dee9d25e 100644 --- a/packages/swc/package.json +++ b/packages/swc/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-swc", - "version": "0.2.1", + "version": "0.4.0", "publishConfig": { "access": "public" }, diff --git a/packages/swc/src/module.ts b/packages/swc/src/module.ts index d39d73462..e200566dc 100644 --- a/packages/swc/src/module.ts +++ b/packages/swc/src/module.ts @@ -9,7 +9,7 @@ import type { Options } from './type'; export function swc(input: Options = {}): Plugin { const filter = createFilter(input.include, input.exclude); - const swcOptions: SWCOptions = merge({}, input.swc || {}, { + const defaults: SWCOptions = { jsc: { target: 'es2020', parser: { @@ -22,7 +22,13 @@ export function swc(input: Options = {}): Plugin { }, loose: true } - }); + }; + + if (input.swc && input.swc.env) { + delete defaults.jsc?.target; + } + + const swcOptions: SWCOptions = merge({}, input.swc || {}, defaults); return { name: 'swc', @@ -31,7 +37,8 @@ export function swc(input: Options = {}): Plugin { return transform(code, { ...swcOptions, - sourceMaps: true + sourceMaps: true, + filename: id }); } }; diff --git a/packages/swc/test/test.js b/packages/swc/test/test.js index a98c54134..b7eca0495 100644 --- a/packages/swc/test/test.js +++ b/packages/swc/test/test.js @@ -83,3 +83,47 @@ test.serial('work with source map', async (t) => { t.is(sourceMap.fileName, 'unminified.js.map'); t.is(sourceMap.type, 'asset'); }); + +test.serial('allow passing swc.env', async (t) => { + const bundle = await rollup({ + input: 'test/fixtures/export-default.js', + plugins: [ + swc({ + env: { + targets: ['es2020'], + shippedProposals: true + } + }) + ] + }); + const result = await bundle.generate({ format: 'cjs' }); + t.is(result.output.length, 1); + const [output] = result.output; + t.is(output.code, "'use strict';\n\nvar exportDefault = 5;\n\nmodule.exports = exportDefault;\n"); +}); + +test.serial('catch error on jsc and env option', async (t) => { + try { + const bundle = await rollup({ + input: 'test/fixtures/export-default.js', + plugins: [ + swc({ + swc: { + jsc: { + target: 'es2020' + }, + env: { + targets: ['es2022'], + shippedProposals: true + } + } + }) + ] + }); + + await bundle.generate({ format: 'cjs' }); + t.is(0, 1); + } catch (e) { + t.is(e.message, '`env` and `jsc.target` cannot be used together'); + } +}); diff --git a/packages/typescript/CHANGELOG.md b/packages/typescript/CHANGELOG.md index 9ec69af85..e37cd8d34 100644 --- a/packages/typescript/CHANGELOG.md +++ b/packages/typescript/CHANGELOG.md @@ -1,5 +1,29 @@ # @rollup/plugin-typescript ChangeLog +## v12.1.0 + +_2024-09-22_ + +### Features + +- feat: add transformers factory. (#1668) + +## v12.0.0 + +_2024-09-22_ + +### Breaking Changes + +- fix!: correctly resolve filenames of declaration files for `output.file` (#1728) + +## v11.1.6 + +_2024-01-09_ + +### Bugfixes + +- fix: Ensure rollup 4 compatibility (#1658) + ## v11.1.5 _2023-10-05_ diff --git a/packages/typescript/README.md b/packages/typescript/README.md index dce144b1f..340f5cd3b 100644 --- a/packages/typescript/README.md +++ b/packages/typescript/README.md @@ -63,7 +63,7 @@ export default { } ``` -The following options are unique to `rollup-plugin-typescript`: +The following options are unique to `@rollup/plugin-typescript`: ### `exclude` @@ -125,7 +125,7 @@ typescript({ ### `transformers` -Type: `{ [before | after | afterDeclarations]: TransformerFactory[] }`
+Type: `{ [before | after | afterDeclarations]: TransformerFactory[] } | ((program: ts.Program) => ts.CustomTransformers)`
Default: `undefined` Allows registration of TypeScript custom transformers at any of the supported stages: @@ -199,6 +199,48 @@ typescript({ }); ``` +Alternatively, the transformers can be created inside a factory. + +Supported transformer factories: + +- all **built-in** TypeScript custom transformer factories: + + - `import('typescript').TransformerFactory` annotated **TransformerFactory** bellow + - `import('typescript').CustomTransformerFactory` annotated **CustomTransformerFactory** bellow + +The example above could be written like this: + +```js +typescript({ + transformers: function (program) { + return { + before: [ + ProgramRequiringTransformerFactory(program), + TypeCheckerRequiringTransformerFactory(program.getTypeChecker()) + ], + after: [ + // You can use normal transformers directly + require('custom-transformer-based-on-Context') + ], + afterDeclarations: [ + // Or even define in place + function fixDeclarationFactory(context) { + return function fixDeclaration(source) { + function visitor(node) { + // Do real work here + + return ts.visitEachChild(node, visitor, context); + } + + return ts.visitEachChild(source, visitor, context); + }; + } + ] + }; + } +}); +``` + ### `cacheDir` Type: `String`
diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 0f0c23abf..3504f38e3 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-typescript", - "version": "11.1.5", + "version": "12.1.0", "publishConfig": { "access": "public" }, @@ -64,7 +64,7 @@ } }, "dependencies": { - "@rollup/pluginutils": "^5.0.1", + "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" }, "devDependencies": { diff --git a/packages/typescript/src/index.ts b/packages/typescript/src/index.ts index 6b0eb2652..339a8ba40 100644 --- a/packages/typescript/src/index.ts +++ b/packages/typescript/src/index.ts @@ -178,20 +178,8 @@ export default function typescript(options: RollupTypescriptOptions = {}): Plugi if (outputOptions.dir) { baseDir = outputOptions.dir; } else if (outputOptions.file) { - // find common path of output.file and configured declation output - const outputDir = path.dirname(outputOptions.file); - const configured = path.resolve( - parsedOptions.options.declarationDir || - parsedOptions.options.outDir || - tsconfig || - process.cwd() - ); - const backwards = path - .relative(outputDir, configured) - .split(path.sep) - .filter((v) => v === '..') - .join(path.sep); - baseDir = path.normalize(`${outputDir}/${backwards}`); + // the bundle output directory used by rollup when outputOptions.file is used instead of outputOptions.dir + baseDir = path.dirname(outputOptions.file); } if (!baseDir) return; diff --git a/packages/typescript/src/moduleResolution.ts b/packages/typescript/src/moduleResolution.ts index 97aa01e79..779e0304a 100644 --- a/packages/typescript/src/moduleResolution.ts +++ b/packages/typescript/src/moduleResolution.ts @@ -20,7 +20,9 @@ export type Resolver = ( /** * Create a helper for resolving modules using Typescript. - * @param host Typescript host that extends `ModuleResolutionHost` + * @param ts custom typescript implementation + * @param host Typescript host that extends {@link ModuleResolutionHost} + * @param filter * with methods for sanitizing filenames and getting compiler options. */ export default function createModuleResolver( diff --git a/packages/typescript/src/options/tsconfig.ts b/packages/typescript/src/options/tsconfig.ts index 74d04ee9c..4ebc12675 100644 --- a/packages/typescript/src/options/tsconfig.ts +++ b/packages/typescript/src/options/tsconfig.ts @@ -45,6 +45,7 @@ function makeForcedCompilerOptions(noForceEmit: boolean) { /** * Finds the path to the tsconfig file relative to the current working directory. + * @param ts Custom typescript implementation * @param relativePath Relative tsconfig path given by the user. * If `false` is passed, then a null path is returned. * @returns The absolute path, or null if the file does not exist. @@ -69,9 +70,8 @@ function getTsConfigPath(ts: typeof typescript, relativePath?: string | false) { /** * Tries to read the tsconfig file at `tsConfigPath`. + * @param ts Custom typescript implementation * @param tsConfigPath Absolute path to tsconfig JSON file. - * @param explicitPath If true, the path was set by the plugin user. - * If false, the path was computed automatically. */ function readTsConfigFile(ts: typeof typescript, tsConfigPath: string) { const { config, error } = ts.readConfigFile(tsConfigPath, (path) => readFileSync(path, 'utf8')); @@ -122,13 +122,14 @@ function setModuleResolutionKind(parsedConfig: ParsedCommandLine): ParsedCommand }; } -const configCache = new Map() as typescript.Map; +const configCache = new Map() as typescript.ESMap; /** * Parse the Typescript config to use with the plugin. * @param ts Typescript library instance. * @param tsconfig Path to the tsconfig file, or `false` to ignore the file. * @param compilerOptions Options passed to the plugin directly for Typescript. + * @param noForceEmit Whether to respect emit options from {@link tsconfig} * * @returns Parsed tsconfig.json file with some important properties: * - `options`: Parsed compiler options. diff --git a/packages/typescript/src/options/validate.ts b/packages/typescript/src/options/validate.ts index 7dbc3367c..d0f22e3de 100644 --- a/packages/typescript/src/options/validate.ts +++ b/packages/typescript/src/options/validate.ts @@ -1,4 +1,4 @@ -import { relative } from 'path'; +import { relative, dirname } from 'path'; import type { OutputOptions, PluginContext } from 'rollup'; @@ -51,14 +51,24 @@ export function validatePaths( ); } + let outputDir: string | undefined = outputOptions.dir; + if (outputOptions.file) { + outputDir = dirname(outputOptions.file); + } for (const dirProperty of DIRECTORY_PROPS) { - if (compilerOptions[dirProperty] && outputOptions.dir) { + if (compilerOptions[dirProperty] && outputDir) { // Checks if the given path lies within Rollup output dir - const fromRollupDirToTs = relative(outputOptions.dir, compilerOptions[dirProperty]!); + const fromRollupDirToTs = relative(outputDir, compilerOptions[dirProperty]!); if (fromRollupDirToTs.startsWith('..')) { - context.error( - `@rollup/plugin-typescript: Path of Typescript compiler option '${dirProperty}' must be located inside Rollup 'dir' option.` - ); + if (outputOptions.dir) { + context.error( + `@rollup/plugin-typescript: Path of Typescript compiler option '${dirProperty}' must be located inside Rollup 'dir' option.` + ); + } else { + context.error( + `@rollup/plugin-typescript: Path of Typescript compiler option '${dirProperty}' must be located inside the same directory as the Rollup 'file' option.` + ); + } } } } diff --git a/packages/typescript/src/watchProgram.ts b/packages/typescript/src/watchProgram.ts index 07bf25d18..9ad50f647 100644 --- a/packages/typescript/src/watchProgram.ts +++ b/packages/typescript/src/watchProgram.ts @@ -1,9 +1,11 @@ import type { PluginContext } from 'rollup'; import typescript from 'typescript'; import type { + CustomTransformers, Diagnostic, EmitAndSemanticDiagnosticsBuilderProgram, ParsedCommandLine, + Program, WatchCompilerHostOfFilesAndCompilerOptions, WatchStatusReporter, WriteFileCallback @@ -39,7 +41,7 @@ interface CreateProgramOptions { /** Function to resolve a module location */ resolveModule: Resolver; /** Custom TypeScript transformers */ - transformers?: CustomTransformerFactories; + transformers?: CustomTransformerFactories | ((program: Program) => CustomTransformers); } type DeferredResolve = ((value: boolean | PromiseLike) => void) | (() => void); @@ -155,22 +157,36 @@ function createWatchHost( parsedOptions.projectReferences ); + let createdTransformers: CustomTransformers | undefined; return { ...baseHost, /** Override the created program so an in-memory emit is used */ afterProgramCreate(program) { const origEmit = program.emit; // eslint-disable-next-line no-param-reassign - program.emit = (targetSourceFile, _, ...args) => - origEmit( + program.emit = ( + targetSourceFile, + _, + cancellationToken, + emitOnlyDtsFiles, + customTransformers + ) => { + createdTransformers ??= + typeof transformers === 'function' + ? transformers(program.getProgram()) + : mergeTransformers( + program, + transformers, + customTransformers as CustomTransformerFactories + ); + return origEmit( targetSourceFile, writeFile, - // cancellationToken - args[0], - // emitOnlyDtsFiles - args[1], - mergeTransformers(program, transformers, args[2] as CustomTransformerFactories) + cancellationToken, + emitOnlyDtsFiles, + createdTransformers ); + }; return baseHost.afterProgramCreate!(program); }, diff --git a/packages/typescript/test/fixtures/incremental-single/tsconfig.tsbuildinfo b/packages/typescript/test/fixtures/incremental-single/tsconfig.tsbuildinfo index 582b24612..ddf4834d4 100644 --- a/packages/typescript/test/fixtures/incremental-single/tsconfig.tsbuildinfo +++ b/packages/typescript/test/fixtures/incremental-single/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.dom.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.scripthost.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.esnext.intl.d.ts","./main.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/assert.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/globals.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/async_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/child_process.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/cluster.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/console.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/constants.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/dgram.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/dns.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/domain.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/events.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/fs.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/fs/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/http.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/http2.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/https.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/inspector.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/module.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/net.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/os.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/path.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/perf_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/process.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/punycode.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/querystring.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/readline.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/repl.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/stream.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/string_decoder.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/tls.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/trace_events.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/tty.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/url.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/util.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/v8.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/vm.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/wasi.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/worker_threads.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/zlib.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/globals.global.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/index.d.ts","../../../../../node_modules/.pnpm/@types+resolve@1.20.2/node_modules/@types/resolve/index.d.ts","../../../../../node_modules/.pnpm/@babel+types@7.19.4/node_modules/@babel/types/lib/index.d.ts","../../../../../node_modules/.pnpm/@types+babel__generator@7.6.4/node_modules/@types/babel__generator/index.d.ts","../../../../../node_modules/.pnpm/@babel+parser@7.19.4/node_modules/@babel/parser/typings/babel-parser.d.ts","../../../../../node_modules/.pnpm/@types+babel__template@7.4.1/node_modules/@types/babel__template/index.d.ts","../../../../../node_modules/.pnpm/@types+babel__traverse@7.18.2/node_modules/@types/babel__traverse/index.d.ts","../../../../../node_modules/.pnpm/@types+babel__core@7.1.19/node_modules/@types/babel__core/index.d.ts","../../../../../node_modules/.pnpm/magic-string@0.25.9/node_modules/magic-string/index.d.ts","../../../../../node_modules/.pnpm/@types+buble@0.19.2/node_modules/@types/buble/index.d.ts","../../../../../node_modules/.pnpm/@types+keyv@3.1.4/node_modules/@types/keyv/index.d.ts","../../../../../node_modules/.pnpm/@types+http-cache-semantics@4.0.1/node_modules/@types/http-cache-semantics/index.d.ts","../../../../../node_modules/.pnpm/@types+responselike@1.0.0/node_modules/@types/responselike/index.d.ts","../../../../../node_modules/.pnpm/@types+cacheable-request@6.0.2/node_modules/@types/cacheable-request/index.d.ts","../../../../../node_modules/.pnpm/@types+conventional-commits-parser@3.0.2/node_modules/@types/conventional-commits-parser/index.d.ts","../../../../../node_modules/.pnpm/@types+d3-dsv@3.0.0/node_modules/@types/d3-dsv/index.d.ts","../../../../../node_modules/.pnpm/@types+eslint@8.4.6/node_modules/@types/eslint/helpers.d.ts","../../../../../node_modules/.pnpm/@types+estree@1.0.0/node_modules/@types/estree/index.d.ts","../../../../../node_modules/.pnpm/@types+json-schema@7.0.11/node_modules/@types/json-schema/index.d.ts","../../../../../node_modules/.pnpm/@types+eslint@8.4.6/node_modules/@types/eslint/index.d.ts","../../../../../node_modules/.pnpm/@types+json5@0.0.29/node_modules/@types/json5/index.d.ts","../../../../../node_modules/.pnpm/@types+minimist@1.2.2/node_modules/@types/minimist/index.d.ts","../../../../../node_modules/.pnpm/@types+normalize-package-data@2.4.1/node_modules/@types/normalize-package-data/index.d.ts","../../../../../node_modules/.pnpm/@types+parse-json@4.0.0/node_modules/@types/parse-json/index.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/constants.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/parse.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/scan.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/picomatch.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/index.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/classes/semver.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/parse.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/valid.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/clean.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/inc.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/diff.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/major.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/minor.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/patch.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/prerelease.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/compare.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/rcompare.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/compare-build.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/sort.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/rsort.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/gt.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/lt.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/eq.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/neq.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/gte.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/lte.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/cmp.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/coerce.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/classes/comparator.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/classes/range.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/satisfies.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/min-version.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/valid.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/outside.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/gtr.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/ltr.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/intersects.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/simplify.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/subset.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/internals/identifiers.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/index.d.ts","../../../../../node_modules/.pnpm/@types+serialize-javascript@5.0.2/node_modules/@types/serialize-javascript/index.d.ts","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.d.ts","../../../../../node_modules/.pnpm/@types+source-map-support@0.5.6/node_modules/@types/source-map-support/index.d.ts","../../../../../node_modules/.pnpm/@types+yargs-parser@20.2.2/node_modules/@types/yargs-parser/index.d.ts"],"fileInfos":["2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"dc13372d005136feb44d8fa670d0a80d674b3964fe29dc30e693c9836c997006","affectsGlobalScope":true},"4c2c4f53e8eedd970f8afa369d7371544fb6231bf95e659f8602e09abe74d5a5",{"version":"32ddf2b046fa7269050f64a87f1f3d2db10b92ad6302460681915af1207b1222","affectsGlobalScope":true},"c2b5085f47e41d6940bbc5b0d3bd7cc0037c752efb18aecd243c9cf83ad0c0b7","3143a5add0467b83150961ecd33773b561a1207aec727002aa1d70333068eb1b","9b2a8f604e7c0482a9061755f00b287cc99bd8718dc82d8207dd74c599b6dc43","d0fc76a91c828fbe3f0be5d683273634b7b101068333ceed975a8a9ac464137b",{"version":"1a048ff164b8d9609f5de3139d4e37f6e8a82af82087ac414b9208f52ef8aac7","affectsGlobalScope":true},"3111079f3cb5f2b9c812ca3f46161562bce5bfb355e915f46ed46c41714dc1c3","db86f82fac051ae344b47e8fe7ac7990174b41db79b2b220a49dc5a47c71a9b5","b32b6b16cb0bda68199582ad6f22242d07ee75fac9b1f28a98cd838afc5eea45","4441ee4119824bfaebc49308559edd7545978f9cb41a40f115074e1031dde75f",{"version":"60693a88462d0e97900123b5bf7c73e146ce0cc94da46a61fe6775b430d2ff05","affectsGlobalScope":true},{"version":"588c69eda58b9202676ec7ca11a72c3762819b46a0ed72462c769846153c447c","affectsGlobalScope":true},"ae064ed4f855716b7ff348639ddcd6a6d354a72fae82f506608a7dc9266aa24c","92f019c55b21c939616f6a48f678e714ac7b109444cbbf23ad69310ce66ecbdc","0eb4ba769e8881dc8cf1fb77c059eb9e3ed8a4ebe70a19a0f2055b68fda68c60","56e6722c6013609b3e5e6ed4a8a7e01f41da6c5e3d6f0ecff3d09ef7a81414cf","3924e8b900c717cb4ddf663d996e0bc0918f01b2c2e8dccaa94e59a8ae6912ec","f614c3f61e46ccc2cb58702d5a158338ea57ee09099fde5db4cfc63ed0ce4d74","44e42ed6ec9c4451ebe89524e80ac8564e9dd0988c56e6c58f393c810730595d","d79fda68cbfb361c4ee9cd9ea169babb65887534d64017726cd01f54783d20a5","155865f5f76db0996cd5e20cc5760613ea170ee5ad594c1f3d76fcaa05382161","e92852d673c836fc64e10c38640abcd67c463456e5df55723ac699b8e6ab3a8a","4455c78d226d061b1203c7614c6c6eb5f4f9db5f00d44ff47d0112de8766fbc4",{"version":"ec369bb9d97c4dc09dd2a4093b7ca3ba69ad284831fccac8a1977785e9e38ce5","affectsGlobalScope":true},"4465a636f5f6e9665a90e30691862c9e0a3ac2edc0e66296704f10865e924f2a","9af781f03d44f5635ed7844be0ce370d9d595d4b4ec67cad88f0fac03255257e","f9fd4c3ef6de27fa0e256f4e75b61711c4be05a3399f7714621d3edc832e36b0","e49290b7a927995c0d7e6b2b9c8296284b68a9036d9966531de65185269258d7","c3689f70ce7563c2299f2dcb3c72efdf6f87ae510e7456fa6223c767d0ca99fc","874ca809b79276460011480a2829f4c8d4db29416dd411f71efbf8f497f0ac09","6c903bceaf3f3bc04f2d4c7dcd89ce9fb148b3ba0a5f5408d8f6de2b7eecc7ea","504d049d9e550a65466b73ca39da6469ab41786074ea1d16d37c8853f9f6ab2e","23a28f834a078986bbf58f4e3705956983ff81c3c2493f3db3e5f0e8a9507779","4febdf7f3ec92706c58e0b4e8159cd6de718284ef384260b07c9641c13fc70ce",{"version":"eabefc2999c1489cf870e0c85af908900462fa245822d9a4616780a1a129945d","affectsGlobalScope":true},"7335933d9f30dcfd2c4b6080a8b78e81912a7fcefb1dafccb67ca4cb4b3ac23d","a6bfe9de9adef749010c118104b071d14943802ff0614732b47ce4f1c3e383cd","4c3d0e10396646db4a1e917fb852077ee77ae62e512913bef9cccc2bb0f8bd0e","3b220849d58140dcc6718f5b52dcd29fdb79c45bc28f561cbd29eb1cac6cce13","0ee22fce41f7417a24c808d266e91b850629113c104713a35854393d55994beb","22d1b1d965baba05766613e2e6c753bb005d4386c448cafd72c309ba689e8c24",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"01c93adfc4c6555c559e7334b6b5f45b48c9e1f809144822088e45ba13e36d9f","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","760cb9b76ab53a2f704ee0e731e162bcfc6af609f5e400a668efe2cc7923e4f4","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","dd6a4b050f1016c0318291b42c98ab068e07e208b1ae8e4e27167c2b8007406f","bf6148950ca5307411c2ae98561f3b845c8cd31c330e731a6822bf52ff757bf6","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","2733d9c68999f6fb4a8e853f4266b40b1e91ef7ae97a35d82014a732f9f3584b","f5d81560bfe80aa653ec60c6a72e68e5ffd60b5e894aef7a46dec316c2a7b9e7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"946bd1737d9412395a8f24414c70f18660b84a75a12b0b448e6eb1a2161d06dd","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","c84d0f714fe122193c21c0f0917e873beb3a03fa3422ceb2fbd1ebc0558790a0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","3e4001643b64a3a4722718c5a778ae73f3dd43487e39508ce2f9dd7cfb1d40b7","b90c23a457c16f77a282531a5caba5c911d2252eb097f3193a8ee2df6a3f21a2","8f9aa0f1f409380d4dbd5c9f5f2e4af828e123095891dd0efc5bb999f8d1a301","bdab62a006260d5fd3c623f0b635140bf48d7a8f87f0eeca5fb188b5ac66770f","c0dd6b46374a90bbb701cc4888a9d6b698a479a2acce11969c5583ba6127f5d5","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b9afcdd9563bae8409d0ce97db6f60c1f8455dfab79fc8dc89d7b793ba8479a2","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","ce99fd4b37ce2dbf9adfc06c1722271c926adb408b1f6413763ae9253d922823","d5c21c0fd9ecf84a785a6bd290931d7672132778cd6ef6e827ab7dc2c4426ac5"],"options":{"emitDeclarationOnly":false,"importHelpers":true,"inlineSources":true,"module":99,"noEmitHelpers":true,"skipLibCheck":true,"sourceMap":true},"fileIdsList":[[79],[79,80,81,82,83],[79,81],[85],[46,49,69,77,87,88,89],[63,77],[93,94,95],[46,77],[34],[36],[37,42],[38,46,47,54,63],[38,39,46,54],[40,70],[41,42,47,55],[42,63],[43,44,46,54],[44],[45,46],[46],[46,47,48,63,69],[47,48],[49,54,63,69],[46,47,49,50,54,63,66,69],[49,51,63,66,69],[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76],[46,52],[53,69],[44,46,54,63],[55],[56],[36,57],[58,68],[59],[60],[46,61],[61,62,70,72],[46,63],[64],[65],[54,63,66],[67],[54,68],[60,69],[70],[63,71],[72],[73],[46,48,63,69,72,74],[63,75],[104],[101,102,103],[49,63,77],[106,145],[106,130,145],[145],[106],[106,131,145],[106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144],[131,145],[147]],"referencedMap":[[81,1],[84,2],[80,1],[82,3],[83,1],[86,4],[90,5],[91,6],[96,7],[87,8],[34,9],[36,10],[37,11],[38,12],[39,13],[40,14],[41,15],[42,16],[43,17],[44,18],[45,19],[46,20],[47,21],[48,22],[49,23],[50,24],[51,25],[77,26],[52,27],[53,28],[54,29],[55,30],[56,31],[57,32],[58,33],[59,34],[60,35],[61,36],[62,37],[63,38],[64,39],[65,40],[66,41],[67,42],[68,43],[69,44],[70,45],[71,46],[72,47],[73,48],[74,49],[75,50],[105,51],[104,52],[89,53],[130,54],[131,55],[106,56],[109,56],[128,54],[129,54],[119,54],[118,57],[116,54],[111,54],[124,54],[122,54],[126,54],[110,54],[123,54],[127,54],[112,54],[113,54],[125,54],[107,54],[114,54],[115,54],[117,54],[121,54],[132,58],[120,54],[108,54],[145,59],[139,58],[141,60],[140,58],[133,58],[134,58],[136,58],[138,58],[142,60],[143,60],[135,60],[137,60],[148,61]],"exportedModulesMap":[[81,1],[84,2],[80,1],[82,3],[83,1],[86,4],[90,5],[91,6],[96,7],[87,8],[34,9],[36,10],[37,11],[38,12],[39,13],[40,14],[41,15],[42,16],[43,17],[44,18],[45,19],[46,20],[47,21],[48,22],[49,23],[50,24],[51,25],[77,26],[52,27],[53,28],[54,29],[55,30],[56,31],[57,32],[58,33],[59,34],[60,35],[61,36],[62,37],[63,38],[64,39],[65,40],[66,41],[67,42],[68,43],[69,44],[70,45],[71,46],[72,47],[73,48],[74,49],[75,50],[105,51],[104,52],[89,53],[130,54],[131,55],[106,56],[109,56],[128,54],[129,54],[119,54],[118,57],[116,54],[111,54],[124,54],[122,54],[126,54],[110,54],[123,54],[127,54],[112,54],[113,54],[125,54],[107,54],[114,54],[115,54],[117,54],[121,54],[132,58],[120,54],[108,54],[145,59],[139,58],[141,60],[140,58],[133,58],[134,58],[136,58],[138,58],[142,60],[143,60],[135,60],[137,60],[148,61]],"semanticDiagnosticsPerFile":[81,79,84,80,82,83,86,90,91,92,93,96,94,88,95,97,87,98,34,36,37,38,39,40,41,42,43,44,45,46,47,48,35,76,49,50,51,77,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,99,100,105,101,102,104,103,78,89,130,131,106,109,128,129,119,118,116,111,124,122,126,110,123,127,112,113,125,107,114,115,117,121,132,120,108,145,144,139,141,140,133,134,136,138,142,143,135,137,146,148,149,85,147,1,7,11,10,3,12,13,14,15,16,17,18,19,4,5,23,20,21,22,24,25,26,6,27,28,29,30,31,2,32,9,8,33]},"version":"4.8.4"} \ No newline at end of file +{"program":{"fileNames":["../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.dom.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.scripthost.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/.pnpm/typescript@4.8.4/node_modules/typescript/lib/lib.esnext.intl.d.ts","./main.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/assert.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/globals.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/async_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/child_process.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/cluster.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/console.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/constants.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/dgram.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/dns.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/domain.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/events.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/fs.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/fs/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/http.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/http2.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/https.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/inspector.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/module.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/net.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/os.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/path.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/perf_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/process.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/punycode.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/querystring.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/readline.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/repl.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/stream.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/string_decoder.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/tls.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/trace_events.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/tty.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/url.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/util.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/v8.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/vm.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/wasi.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/worker_threads.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/zlib.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/globals.global.d.ts","../../../../../node_modules/.pnpm/@types+node@14.18.31/node_modules/@types/node/ts4.8/index.d.ts","../../../../../node_modules/.pnpm/@types+resolve@1.20.2/node_modules/@types/resolve/index.d.ts","../../../../../node_modules/.pnpm/@babel+types@7.19.4/node_modules/@babel/types/lib/index.d.ts","../../../../../node_modules/.pnpm/@types+babel__generator@7.6.4/node_modules/@types/babel__generator/index.d.ts","../../../../../node_modules/.pnpm/@babel+parser@7.19.4/node_modules/@babel/parser/typings/babel-parser.d.ts","../../../../../node_modules/.pnpm/@types+babel__template@7.4.1/node_modules/@types/babel__template/index.d.ts","../../../../../node_modules/.pnpm/@types+babel__traverse@7.18.2/node_modules/@types/babel__traverse/index.d.ts","../../../../../node_modules/.pnpm/@types+babel__core@7.1.19/node_modules/@types/babel__core/index.d.ts","../../../../../node_modules/.pnpm/magic-string@0.25.9/node_modules/magic-string/index.d.ts","../../../../../node_modules/.pnpm/@types+buble@0.19.2/node_modules/@types/buble/index.d.ts","../../../../../node_modules/.pnpm/@types+keyv@3.1.4/node_modules/@types/keyv/index.d.ts","../../../../../node_modules/.pnpm/@types+http-cache-semantics@4.0.1/node_modules/@types/http-cache-semantics/index.d.ts","../../../../../node_modules/.pnpm/@types+responselike@1.0.0/node_modules/@types/responselike/index.d.ts","../../../../../node_modules/.pnpm/@types+cacheable-request@6.0.2/node_modules/@types/cacheable-request/index.d.ts","../../../../../node_modules/.pnpm/@types+d3-dsv@3.0.0/node_modules/@types/d3-dsv/index.d.ts","../../../../../node_modules/.pnpm/@types+eslint@8.4.6/node_modules/@types/eslint/helpers.d.ts","../../../../../node_modules/.pnpm/@types+estree@1.0.0/node_modules/@types/estree/index.d.ts","../../../../../node_modules/.pnpm/@types+json-schema@7.0.11/node_modules/@types/json-schema/index.d.ts","../../../../../node_modules/.pnpm/@types+eslint@8.4.6/node_modules/@types/eslint/index.d.ts","../../../../../node_modules/.pnpm/@types+json5@0.0.29/node_modules/@types/json5/index.d.ts","../../../../../node_modules/.pnpm/@types+minimist@1.2.2/node_modules/@types/minimist/index.d.ts","../../../../../node_modules/.pnpm/@types+normalize-package-data@2.4.1/node_modules/@types/normalize-package-data/index.d.ts","../../../../../node_modules/.pnpm/@types+parse-json@4.0.0/node_modules/@types/parse-json/index.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/constants.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/parse.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/scan.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/lib/picomatch.d.ts","../../../../../node_modules/.pnpm/@types+picomatch@2.3.0/node_modules/@types/picomatch/index.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/classes/semver.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/parse.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/valid.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/clean.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/inc.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/diff.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/major.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/minor.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/patch.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/prerelease.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/compare.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/rcompare.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/compare-loose.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/compare-build.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/sort.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/rsort.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/gt.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/lt.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/eq.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/neq.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/gte.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/lte.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/cmp.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/coerce.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/classes/comparator.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/classes/range.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/functions/satisfies.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/min-version.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/valid.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/outside.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/gtr.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/ltr.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/intersects.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/simplify.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/ranges/subset.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/internals/identifiers.d.ts","../../../../../node_modules/.pnpm/@types+semver@7.3.12/node_modules/@types/semver/index.d.ts","../../../../../node_modules/.pnpm/@types+serialize-javascript@5.0.2/node_modules/@types/serialize-javascript/index.d.ts","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.d.ts","../../../../../node_modules/.pnpm/@types+source-map-support@0.5.6/node_modules/@types/source-map-support/index.d.ts"],"fileInfos":["2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"dc13372d005136feb44d8fa670d0a80d674b3964fe29dc30e693c9836c997006","affectsGlobalScope":true},"4c2c4f53e8eedd970f8afa369d7371544fb6231bf95e659f8602e09abe74d5a5",{"version":"32ddf2b046fa7269050f64a87f1f3d2db10b92ad6302460681915af1207b1222","affectsGlobalScope":true},"c2b5085f47e41d6940bbc5b0d3bd7cc0037c752efb18aecd243c9cf83ad0c0b7","3143a5add0467b83150961ecd33773b561a1207aec727002aa1d70333068eb1b","9b2a8f604e7c0482a9061755f00b287cc99bd8718dc82d8207dd74c599b6dc43","d0fc76a91c828fbe3f0be5d683273634b7b101068333ceed975a8a9ac464137b",{"version":"1a048ff164b8d9609f5de3139d4e37f6e8a82af82087ac414b9208f52ef8aac7","affectsGlobalScope":true},"3111079f3cb5f2b9c812ca3f46161562bce5bfb355e915f46ed46c41714dc1c3","db86f82fac051ae344b47e8fe7ac7990174b41db79b2b220a49dc5a47c71a9b5","b32b6b16cb0bda68199582ad6f22242d07ee75fac9b1f28a98cd838afc5eea45","4441ee4119824bfaebc49308559edd7545978f9cb41a40f115074e1031dde75f",{"version":"60693a88462d0e97900123b5bf7c73e146ce0cc94da46a61fe6775b430d2ff05","affectsGlobalScope":true},{"version":"588c69eda58b9202676ec7ca11a72c3762819b46a0ed72462c769846153c447c","affectsGlobalScope":true},"ae064ed4f855716b7ff348639ddcd6a6d354a72fae82f506608a7dc9266aa24c","92f019c55b21c939616f6a48f678e714ac7b109444cbbf23ad69310ce66ecbdc","0eb4ba769e8881dc8cf1fb77c059eb9e3ed8a4ebe70a19a0f2055b68fda68c60","56e6722c6013609b3e5e6ed4a8a7e01f41da6c5e3d6f0ecff3d09ef7a81414cf","3924e8b900c717cb4ddf663d996e0bc0918f01b2c2e8dccaa94e59a8ae6912ec","f614c3f61e46ccc2cb58702d5a158338ea57ee09099fde5db4cfc63ed0ce4d74","44e42ed6ec9c4451ebe89524e80ac8564e9dd0988c56e6c58f393c810730595d","d79fda68cbfb361c4ee9cd9ea169babb65887534d64017726cd01f54783d20a5","155865f5f76db0996cd5e20cc5760613ea170ee5ad594c1f3d76fcaa05382161","e92852d673c836fc64e10c38640abcd67c463456e5df55723ac699b8e6ab3a8a","4455c78d226d061b1203c7614c6c6eb5f4f9db5f00d44ff47d0112de8766fbc4",{"version":"ec369bb9d97c4dc09dd2a4093b7ca3ba69ad284831fccac8a1977785e9e38ce5","affectsGlobalScope":true},"4465a636f5f6e9665a90e30691862c9e0a3ac2edc0e66296704f10865e924f2a","9af781f03d44f5635ed7844be0ce370d9d595d4b4ec67cad88f0fac03255257e","f9fd4c3ef6de27fa0e256f4e75b61711c4be05a3399f7714621d3edc832e36b0","e49290b7a927995c0d7e6b2b9c8296284b68a9036d9966531de65185269258d7","c3689f70ce7563c2299f2dcb3c72efdf6f87ae510e7456fa6223c767d0ca99fc","874ca809b79276460011480a2829f4c8d4db29416dd411f71efbf8f497f0ac09","6c903bceaf3f3bc04f2d4c7dcd89ce9fb148b3ba0a5f5408d8f6de2b7eecc7ea","504d049d9e550a65466b73ca39da6469ab41786074ea1d16d37c8853f9f6ab2e","23a28f834a078986bbf58f4e3705956983ff81c3c2493f3db3e5f0e8a9507779","4febdf7f3ec92706c58e0b4e8159cd6de718284ef384260b07c9641c13fc70ce",{"version":"eabefc2999c1489cf870e0c85af908900462fa245822d9a4616780a1a129945d","affectsGlobalScope":true},"7335933d9f30dcfd2c4b6080a8b78e81912a7fcefb1dafccb67ca4cb4b3ac23d","a6bfe9de9adef749010c118104b071d14943802ff0614732b47ce4f1c3e383cd","4c3d0e10396646db4a1e917fb852077ee77ae62e512913bef9cccc2bb0f8bd0e","3b220849d58140dcc6718f5b52dcd29fdb79c45bc28f561cbd29eb1cac6cce13","0ee22fce41f7417a24c808d266e91b850629113c104713a35854393d55994beb","22d1b1d965baba05766613e2e6c753bb005d4386c448cafd72c309ba689e8c24",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"01c93adfc4c6555c559e7334b6b5f45b48c9e1f809144822088e45ba13e36d9f","8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","760cb9b76ab53a2f704ee0e731e162bcfc6af609f5e400a668efe2cc7923e4f4","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","dd6a4b050f1016c0318291b42c98ab068e07e208b1ae8e4e27167c2b8007406f","bf6148950ca5307411c2ae98561f3b845c8cd31c330e731a6822bf52ff757bf6","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","f5d81560bfe80aa653ec60c6a72e68e5ffd60b5e894aef7a46dec316c2a7b9e7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"946bd1737d9412395a8f24414c70f18660b84a75a12b0b448e6eb1a2161d06dd","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","c84d0f714fe122193c21c0f0917e873beb3a03fa3422ceb2fbd1ebc0558790a0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","3e4001643b64a3a4722718c5a778ae73f3dd43487e39508ce2f9dd7cfb1d40b7","b90c23a457c16f77a282531a5caba5c911d2252eb097f3193a8ee2df6a3f21a2","8f9aa0f1f409380d4dbd5c9f5f2e4af828e123095891dd0efc5bb999f8d1a301","bdab62a006260d5fd3c623f0b635140bf48d7a8f87f0eeca5fb188b5ac66770f","c0dd6b46374a90bbb701cc4888a9d6b698a479a2acce11969c5583ba6127f5d5","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b9afcdd9563bae8409d0ce97db6f60c1f8455dfab79fc8dc89d7b793ba8479a2","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","ce99fd4b37ce2dbf9adfc06c1722271c926adb408b1f6413763ae9253d922823"],"options":{"emitDeclarationOnly":false,"importHelpers":true,"inlineSources":true,"module":99,"noEmitHelpers":true,"skipLibCheck":true,"sourceMap":true},"fileIdsList":[[79],[79,80,81,82,83],[79,81],[85],[46,49,69,77,87,88,89],[92,93,94],[46,77],[34],[36],[37,42],[38,46,47,54,63],[38,39,46,54],[40,70],[41,42,47,55],[42,63],[43,44,46,54],[44],[45,46],[46],[46,47,48,63,69],[47,48],[49,54,63,69],[46,47,49,50,54,63,66,69],[49,51,63,66,69],[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76],[46,52],[53,69],[44,46,54,63],[55],[56],[36,57],[58,68],[59],[60],[46,61],[61,62,70,72],[46,63],[64],[65],[54,63,66],[67],[54,68],[60,69],[70],[63,71],[72],[73],[46,48,63,69,72,74],[63,75],[103],[100,101,102],[49,63,77],[105,144],[105,129,144],[144],[105],[105,130,144],[105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143],[130,144],[146]],"referencedMap":[[81,1],[84,2],[80,1],[82,3],[83,1],[86,4],[90,5],[95,6],[87,7],[34,8],[36,9],[37,10],[38,11],[39,12],[40,13],[41,14],[42,15],[43,16],[44,17],[45,18],[46,19],[47,20],[48,21],[49,22],[50,23],[51,24],[77,25],[52,26],[53,27],[54,28],[55,29],[56,30],[57,31],[58,32],[59,33],[60,34],[61,35],[62,36],[63,37],[64,38],[65,39],[66,40],[67,41],[68,42],[69,43],[70,44],[71,45],[72,46],[73,47],[74,48],[75,49],[104,50],[103,51],[89,52],[129,53],[130,54],[105,55],[108,55],[127,53],[128,53],[118,53],[117,56],[115,53],[110,53],[123,53],[121,53],[125,53],[109,53],[122,53],[126,53],[111,53],[112,53],[124,53],[106,53],[113,53],[114,53],[116,53],[120,53],[131,57],[119,53],[107,53],[144,58],[138,57],[140,59],[139,57],[132,57],[133,57],[135,57],[137,57],[141,59],[142,59],[134,59],[136,59],[147,60]],"exportedModulesMap":[[81,1],[84,2],[80,1],[82,3],[83,1],[86,4],[90,5],[95,6],[87,7],[34,8],[36,9],[37,10],[38,11],[39,12],[40,13],[41,14],[42,15],[43,16],[44,17],[45,18],[46,19],[47,20],[48,21],[49,22],[50,23],[51,24],[77,25],[52,26],[53,27],[54,28],[55,29],[56,30],[57,31],[58,32],[59,33],[60,34],[61,35],[62,36],[63,37],[64,38],[65,39],[66,40],[67,41],[68,42],[69,43],[70,44],[71,45],[72,46],[73,47],[74,48],[75,49],[104,50],[103,51],[89,52],[129,53],[130,54],[105,55],[108,55],[127,53],[128,53],[118,53],[117,56],[115,53],[110,53],[123,53],[121,53],[125,53],[109,53],[122,53],[126,53],[111,53],[112,53],[124,53],[106,53],[113,53],[114,53],[116,53],[120,53],[131,57],[119,53],[107,53],[144,58],[138,57],[140,59],[139,57],[132,57],[133,57],[135,57],[137,57],[141,59],[142,59],[134,59],[136,59],[147,60]],"semanticDiagnosticsPerFile":[81,79,84,80,82,83,86,90,91,92,95,93,88,94,96,87,97,34,36,37,38,39,40,41,42,43,44,45,46,47,48,35,76,49,50,51,77,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,98,99,104,100,101,103,102,78,89,129,130,105,108,127,128,118,117,115,110,123,121,125,109,122,126,111,112,124,106,113,114,116,120,131,119,107,144,143,138,140,139,132,133,135,137,141,142,134,136,145,147,85,146,1,7,11,10,3,12,13,14,15,16,17,18,19,4,5,23,20,21,22,24,25,26,6,27,28,29,30,31,2,32,9,8,33]},"version":"4.8.4"} \ No newline at end of file diff --git a/packages/typescript/test/test.js b/packages/typescript/test/test.js index 127f98e19..efed9b397 100644 --- a/packages/typescript/test/test.js +++ b/packages/typescript/test/test.js @@ -101,6 +101,34 @@ test.serial('ensures declarationDir is located in Rollup output dir', async (t) ); }); +test.serial( + 'ensures declarationDir is located in Rollup output directory when output.file is used', + async (t) => { + const bundle = await rollup({ + input: 'fixtures/basic/main.ts', + plugins: [ + typescript({ + tsconfig: 'fixtures/basic/tsconfig.json', + declarationDir: 'fixtures/basic/other/', + declaration: true + }) + ], + onwarn + }); + + // this should throw an error just like the equivalent setup using output.dir above + const wrongDirError = await t.throwsAsync(() => + getCode(bundle, { format: 'es', file: 'fixtures/basic/dist/index.js' }, true) + ); + t.true( + wrongDirError.message.includes( + `Path of Typescript compiler option 'declarationDir' must be located inside the same directory as the Rollup 'file' option` + ), + `Unexpected error message: ${wrongDirError.message}` + ); + } +); + test.serial('ensures multiple outputs can be built', async (t) => { // In a rollup.config.js we would pass an array // The rollup method that's exported as a library won't do that so we must make two calls @@ -1236,6 +1264,119 @@ test('supports custom transformers', async (t) => { ); }); +test('supports passing a custom transformers factory', async (t) => { + const warnings = []; + + let program = null; + let typeChecker = null; + + const bundle = await rollup({ + input: 'fixtures/transformers/main.ts', + plugins: [ + typescript({ + tsconfig: 'fixtures/transformers/tsconfig.json', + outDir: 'fixtures/transformers/dist', + declaration: true, + transformers: (p) => { + program = p; + typeChecker = p.getTypeChecker(); + return { + before: [ + function removeOneParameterFactory(context) { + return function removeOneParameter(source) { + function visitor(node) { + if (ts.isArrowFunction(node)) { + return ts.factory.createArrowFunction( + node.modifiers, + node.typeParameters, + [node.parameters[0]], + node.type, + node.equalsGreaterThanToken, + node.body + ); + } + + return ts.visitEachChild(node, visitor, context); + } + + return ts.visitEachChild(source, visitor, context); + }; + } + ], + after: [ + // Enforce a constant numeric output + function enforceConstantReturnFactory(context) { + return function enforceConstantReturn(source) { + function visitor(node) { + if (ts.isReturnStatement(node)) { + return ts.factory.createReturnStatement(ts.factory.createNumericLiteral('1')); + } + + return ts.visitEachChild(node, visitor, context); + } + + return ts.visitEachChild(source, visitor, context); + }; + } + ], + afterDeclarations: [ + // Change the return type to numeric + function fixDeclarationFactory(context) { + return function fixDeclaration(source) { + function visitor(node) { + if (ts.isFunctionTypeNode(node)) { + return ts.factory.createFunctionTypeNode( + node.typeParameters, + [node.parameters[0]], + ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword) + ); + } + + return ts.visitEachChild(node, visitor, context); + } + + return ts.visitEachChild(source, visitor, context); + }; + } + ] + }; + } + }) + ], + onwarn(warning) { + warnings.push(warning); + } + }); + + const output = await getCode(bundle, { format: 'esm', dir: 'fixtures/transformers' }, true); + + t.is(warnings.length, 0); + t.deepEqual( + output.map((out) => out.fileName), + ['main.js', 'dist/main.d.ts'] + ); + + // Expect the function to have one less arguments from before transformer and return 1 from after transformer + t.true(output[0].code.includes('var HashFn = function (val) { return 1; };'), output[0].code); + + // Expect the definition file to reflect the resulting function type after transformer modifications + t.true( + output[1].source.includes('export declare const HashFn: (val: string) => number;'), + output[1].source + ); + + // Expect a Program to have been forwarded for transformers with custom factories requesting one + t.deepEqual(program && program.emit && typeof program.emit === 'function', true); + + // Expect a TypeChecker to have been forwarded for transformers with custom factories requesting one + t.deepEqual( + typeChecker && + typeChecker.getTypeAtLocation && + typeof typeChecker.getTypeAtLocation === 'function', + true + ); +}); + // This test randomly fails with a segfault directly at the first "await waitForWatcherEvent" before any event occurred. // Skipping it until we can figure out what the cause is. test.serial.skip('picks up on newly included typescript files in watch mode', async (t) => { diff --git a/packages/typescript/types/index.d.ts b/packages/typescript/types/index.d.ts index 6d4a30f00..4db1c5d06 100644 --- a/packages/typescript/types/index.d.ts +++ b/packages/typescript/types/index.d.ts @@ -75,7 +75,7 @@ export interface RollupTypescriptPluginOptions { /** * TypeScript custom transformers */ - transformers?: CustomTransformerFactories; + transformers?: CustomTransformerFactories | ((program: Program) => CustomTransformers); /** * When set to false, force non-cached files to always be emitted in the output directory.output * If not set, will default to true with a warning. diff --git a/packages/virtual/package.json b/packages/virtual/package.json index a396595dc..e3bf35706 100755 --- a/packages/virtual/package.json +++ b/packages/virtual/package.json @@ -12,7 +12,7 @@ }, "author": "Rich Harris", "homepage": "https://github.com/rollup/plugins/tree/master/packages/virtual#readme", - "bugs": "https://github.com/rollup/rollup-plugin-virtual/issues", + "bugs": "https://github.com/rollup/plugins/issues", "main": "./dist/cjs/index.js", "module": "./dist/es/index.js", "exports": { diff --git a/packages/virtual/src/index.ts b/packages/virtual/src/index.ts index 511b5bfad..29049a9c0 100644 --- a/packages/virtual/src/index.ts +++ b/packages/virtual/src/index.ts @@ -2,7 +2,7 @@ import * as path from 'path'; import type { Plugin } from 'rollup'; -import type { RollupVirtualOptions } from '../'; +import type { RollupVirtualOptions } from '../types'; const PREFIX = `\0virtual:`; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dbe85b834..17b8e2cef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,36 +8,24 @@ importers: .: devDependencies: - '@ava/babel': - specifier: 2.0.0 - version: 2.0.0 '@dot/versioner': specifier: ^0.3.1 version: 0.3.1 '@rollup/plugin-typescript': specifier: ^9.0.1 - version: 9.0.1(rollup@4.0.0-24)(typescript@4.8.4) - '@types/conventional-commits-parser': - specifier: ^3.0.2 - version: 3.0.2 + version: 9.0.1(typescript@4.8.4) '@types/node': specifier: 14.18.30 version: 14.18.30 - '@types/semver': - specifier: ^7.3.7 - version: 7.3.12 '@types/source-map-support': specifier: ^0.5.4 version: 0.5.6 - '@types/yargs-parser': - specifier: ^20.2.1 - version: 20.2.2 '@typescript-eslint/eslint-plugin': specifier: ^5.38.0 - version: 5.39.0(@typescript-eslint/parser@5.39.0)(eslint@8.28.0)(typescript@4.8.4) + version: 5.39.0(@typescript-eslint/parser@5.39.0)(eslint@8.57.0)(typescript@4.8.4) '@typescript-eslint/parser': specifier: ^5.38.0 - version: 5.39.0(eslint@8.28.0)(typescript@4.8.4) + version: 5.39.0(eslint@8.57.0)(typescript@4.8.4) ava: specifier: ^4.3.3 version: 4.3.3 @@ -47,9 +35,6 @@ importers: codecov-lite: specifier: 2.0.0 version: 2.0.0 - conventional-commits-parser: - specifier: ^3.2.1 - version: 3.2.4 del-cli: specifier: ^5.0.0 version: 5.0.0 @@ -79,37 +64,18 @@ importers: version: 8.7.5 prettier-plugin-package: specifier: ^1.3.0 - version: 1.3.0(prettier@2.8.0) - semver: - specifier: ^7.3.2 - version: 7.3.8 + version: 1.3.0(prettier@2.8.8) source-map-support: specifier: ^0.5.21 version: 0.5.21 ts-node: specifier: 10.9.1 version: 10.9.1(@types/node@14.18.30)(typescript@4.8.4) - tsconfig-paths: - specifier: ^3.9.0 - version: 3.14.1 typescript: specifier: ^4.8.3 version: 4.8.4 - write-pkg: - specifier: ^4.0.0 - version: 4.0.0 - yaml: - specifier: ^1.10.0 - version: 1.10.2 - yargs-parser: - specifier: ^20.2.9 - version: 20.2.9 packages/alias: - dependencies: - slash: - specifier: ^4.0.0 - version: 4.0.0 devDependencies: '@rollup/plugin-node-resolve': specifier: ^15.0.0 @@ -240,8 +206,8 @@ importers: specifier: ^2.0.2 version: 2.0.2 glob: - specifier: ^8.0.3 - version: 8.0.3 + specifier: ^10.4.1 + version: 10.4.1 is-reference: specifier: 1.2.1 version: 1.2.1 @@ -264,9 +230,6 @@ importers: rollup: specifier: ^4.0.0-24 version: 4.0.0-24 - shx: - specifier: ^0.3.4 - version: 0.3.4 source-map: specifier: ^0.7.4 version: 0.7.4 @@ -468,8 +431,8 @@ importers: packages/json: dependencies: '@rollup/pluginutils': - specifier: ^5.0.1 - version: 5.0.1(rollup@4.0.0-24) + specifier: ^5.1.0 + version: 5.1.0(rollup@4.0.0-24) devDependencies: '@rollup/plugin-buble': specifier: ^1.0.0 @@ -524,9 +487,6 @@ importers: deepmerge: specifier: ^4.2.2 version: 4.2.2 - is-builtin-module: - specifier: ^3.2.1 - version: 3.2.1 is-module: specifier: ^1.0.0 version: 1.0.0 @@ -728,8 +688,8 @@ importers: packages/typescript: dependencies: '@rollup/pluginutils': - specifier: ^5.0.1 - version: 5.0.1(rollup@4.0.0-24) + specifier: ^5.1.0 + version: 5.1.0(rollup@4.0.0-24) resolve: specifier: ^1.22.1 version: 1.22.1 @@ -853,40 +813,6 @@ packages: '@jridgewell/trace-mapping': 0.3.16 dev: true - /@ava/babel@2.0.0: - resolution: {integrity: sha512-50ol1X2AOuX82UskqQYx7XCvv/05GQA2dib/n4XP99sg63fIVtzwpPZ7amLN7mghhGRr2fjXFbuRgJ4+VeDsIg==} - engines: {node: '>=12.22 <13 || >=14.16 <15 || >=16'} - dependencies: - '@ava/require-precompiled': 1.0.0 - '@babel/core': 7.19.3 - '@babel/generator': 7.19.4 - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.19.3) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.19.3) - '@babel/plugin-proposal-optional-chaining': 7.18.9(@babel/core@7.19.3) - '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.19.3) - babel-plugin-espower: 3.0.1 - concordance: 5.0.4 - convert-source-map: 1.8.0 - dot-prop: 6.0.1 - empower-core: 1.2.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - is-plain-object: 5.0.0 - md5-hex: 3.0.1 - package-hash: 4.0.0 - pkg-conf: 3.1.0 - source-map-support: 0.5.21 - strip-bom-buf: 2.0.0 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@ava/require-precompiled@1.0.0: - resolution: {integrity: sha512-N7w4g+P/SUL8SF+HC4Z4e/ctV6nQ5AERC90K90r4xZQ8WVrJux9albvfyYAzygyU47CSqMWh6yJwFs8DYaeWmg==} - engines: {node: '>=10'} - dev: true - /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} @@ -2131,6 +2057,21 @@ packages: yargs-parser: 21.1.1 dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint/eslintrc@1.3.3: resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2147,6 +2088,28 @@ packages: transitivePeerDependencies: - supports-color + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@humanwhocodes/config-array@0.10.7: resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} engines: {node: '>=10.10.0'} @@ -2158,6 +2121,18 @@ packages: - supports-color dev: false + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/config-array@0.11.7: resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} engines: {node: '>=10.10.0'} @@ -2176,6 +2151,23 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -2260,6 +2252,13 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + /@rollup/plugin-alias@4.0.0(rollup@4.0.0-24): resolution: {integrity: sha512-fGRWzM2F6wXnzAqn4Db8SdB/2Ree0u2XOQaaTy9mhqA35NmUzJXevMBUcpZywPF2MIUUAw+SKfWogKxFSPh+Qw==} engines: {node: '>=14.0.0'} @@ -2319,7 +2318,7 @@ packages: '@rollup/pluginutils': 4.2.1 commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.0.3 + glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.26.7 rollup: 4.0.0-24 @@ -2375,6 +2374,24 @@ packages: typescript: 4.8.4 dev: true + /@rollup/plugin-typescript@9.0.1(typescript@4.8.4): + resolution: {integrity: sha512-fj+CTk8+HvFCEwwDQdNgWd0lIJVXtMQ0Z3vH/ZgzFSbK2s1zs5wjZrjzrhViTTN+UF49+P69/tybgKRdGHpj/Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 4.2.1 + resolve: 1.22.1 + typescript: 4.8.4 + dev: true + /@rollup/plugin-virtual@3.0.0(rollup@4.0.0-24): resolution: {integrity: sha512-K9KORe1myM62o0lKkNR4MmCxjwuAXsZEtIHpaILfv4kILXTOrXt/R2ha7PzMcCHPYdnkWPiBZK8ed4Zr3Ll5lQ==} engines: {node: '>=14.0.0'} @@ -2425,6 +2442,21 @@ packages: rollup: 4.0.0-24 dev: false + /@rollup/pluginutils@5.1.0(rollup@4.0.0-24): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.0.0-24 + dev: false + /@rollup/rollup-android-arm-eabi@4.0.0-24: resolution: {integrity: sha512-19cF3V1fHfzPzwu0cgZEdWLMdNkqSmKOhidqQv1CkUqAMcb7etA7WLx8YrX5ob31ruI0BYYrUDBunlIuMHHUrg==} cpu: [arm] @@ -2714,12 +2746,6 @@ packages: '@types/responselike': 1.0.0 dev: true - /@types/conventional-commits-parser@3.0.2: - resolution: {integrity: sha512-1kVPUHFaart1iGRFxKn8WNXYEDVAgMb+DLatgql2dGg9jTGf3bNxWtN//C/tDG3ckOLg4u7SSx+qcn8VjzI5zg==} - dependencies: - '@types/node': 14.18.30 - dev: true - /@types/d3-dsv@3.0.0: resolution: {integrity: sha512-o0/7RlMl9p5n6FQDptuJVMxDf/7EDEv2SYEO/CwdG2tr1hTfUVi0Iavkk2ax+VpaQ/1jVhpnj5rq1nj8vwhn2A==} dev: false @@ -2798,11 +2824,7 @@ packages: source-map: 0.6.1 dev: true - /@types/yargs-parser@20.2.2: - resolution: {integrity: sha512-sUWMriymrSqTvxCmCkf+7k392TNDcMJBHI1/rysWJxKnWAan/Zk4gZ/GEieSRo4EqIEPpbGU3Sd/0KTRoIA3pA==} - dev: true - - /@typescript-eslint/eslint-plugin@5.39.0(@typescript-eslint/parser@5.39.0)(eslint@8.28.0)(typescript@4.8.4): + /@typescript-eslint/eslint-plugin@5.39.0(@typescript-eslint/parser@5.39.0)(eslint@8.57.0)(typescript@4.8.4): resolution: {integrity: sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2813,12 +2835,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.39.0(eslint@8.28.0)(typescript@4.8.4) + '@typescript-eslint/parser': 5.39.0(eslint@8.57.0)(typescript@4.8.4) '@typescript-eslint/scope-manager': 5.39.0 - '@typescript-eslint/type-utils': 5.39.0(eslint@8.28.0)(typescript@4.8.4) - '@typescript-eslint/utils': 5.39.0(eslint@8.28.0)(typescript@4.8.4) + '@typescript-eslint/type-utils': 5.39.0(eslint@8.57.0)(typescript@4.8.4) + '@typescript-eslint/utils': 5.39.0(eslint@8.57.0)(typescript@4.8.4) debug: 4.3.4 - eslint: 8.28.0 + eslint: 8.57.0 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.8 @@ -2868,7 +2890,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser@5.39.0(eslint@8.28.0)(typescript@4.8.4): + /@typescript-eslint/parser@5.39.0(eslint@8.57.0)(typescript@4.8.4): resolution: {integrity: sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2882,7 +2904,7 @@ packages: '@typescript-eslint/types': 5.39.0 '@typescript-eslint/typescript-estree': 5.39.0(typescript@4.8.4) debug: 4.3.4 - eslint: 8.28.0 + eslint: 8.57.0 typescript: 4.8.4 transitivePeerDependencies: - supports-color @@ -2924,7 +2946,7 @@ packages: '@typescript-eslint/visitor-keys': 5.44.0 dev: true - /@typescript-eslint/type-utils@5.39.0(eslint@8.28.0)(typescript@4.8.4): + /@typescript-eslint/type-utils@5.39.0(eslint@8.57.0)(typescript@4.8.4): resolution: {integrity: sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2935,9 +2957,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.39.0(typescript@4.8.4) - '@typescript-eslint/utils': 5.39.0(eslint@8.28.0)(typescript@4.8.4) + '@typescript-eslint/utils': 5.39.0(eslint@8.57.0)(typescript@4.8.4) debug: 4.3.4 - eslint: 8.28.0 + eslint: 8.57.0 tsutils: 3.21.0(typescript@4.8.4) typescript: 4.8.4 transitivePeerDependencies: @@ -3034,6 +3056,24 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.39.0(eslint@8.57.0)(typescript@4.8.4): + resolution: {integrity: sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/typescript-estree': 5.39.0(typescript@4.8.4) + eslint: 8.57.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/utils@5.44.0(eslint@8.28.0)(typescript@4.8.4): resolution: {integrity: sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3070,6 +3110,10 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -3093,6 +3137,14 @@ packages: dependencies: acorn: 6.4.2 + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + /acorn-jsx@5.3.2(acorn@8.8.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3110,6 +3162,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} @@ -3158,7 +3216,6 @@ packages: /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -3177,6 +3234,11 @@ packages: engines: {node: '>=12'} dev: true + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: false @@ -3333,18 +3395,6 @@ packages: object.assign: 4.1.4 dev: true - /babel-plugin-espower@3.0.1: - resolution: {integrity: sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==} - dependencies: - '@babel/generator': 7.19.4 - '@babel/parser': 7.19.4 - call-matcher: 1.1.0 - core-js: 2.6.12 - espower-location-detector: 1.0.0 - espurify: 1.8.1 - estraverse: 4.3.0 - dev: true - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.19.3): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: @@ -3443,6 +3493,7 @@ packages: /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + dev: true /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} @@ -3479,20 +3530,6 @@ packages: get-intrinsic: 1.1.3 dev: true - /call-matcher@1.1.0: - resolution: {integrity: sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==} - dependencies: - core-js: 2.6.12 - deep-equal: 1.1.1 - espurify: 1.8.1 - estraverse: 4.3.0 - dev: true - - /call-signature@0.0.2: - resolution: {integrity: sha512-qvYvkAVcoae0obt8OsZn0VEBHeEpvYIZDy1gGYtZDJG0fHawew+Mi0dBjieFz8F8dzQ2Kr19+nsDm+T5XFVs+Q==} - engines: {node: '>=0.10.0'} - dev: true - /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -3583,7 +3620,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chunkd@2.0.1: @@ -3775,12 +3812,6 @@ packages: browserslist: 4.21.4 dev: true - /core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: true - /cosmiconfig@7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} @@ -4000,17 +4031,6 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-equal@1.1.1: - resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} - dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object-keys: 1.1.1 - regexp.prototype.flags: 1.4.3 - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -4136,16 +4156,8 @@ packages: domhandler: 4.3.1 dev: true - /dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} - dependencies: - is-obj: 2.0.0 - dev: true - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true /electron-to-chromium@1.4.276: resolution: {integrity: sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==} @@ -4158,18 +4170,9 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - - /empower-core@1.2.0: - resolution: {integrity: sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==} - dependencies: - call-signature: 0.0.2 - core-js: 2.6.12 - dev: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -4429,6 +4432,14 @@ packages: esrecurse: 4.3.0 estraverse: 5.3.0 + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-utils@3.0.0(eslint@8.25.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -4449,6 +4460,16 @@ packages: eslint-visitor-keys: 2.1.0 dev: true + /eslint-utils@3.0.0(eslint@8.57.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 2.1.0 + dev: true + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} @@ -4457,6 +4478,11 @@ packages: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /eslint@8.25.0: resolution: {integrity: sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4552,20 +4578,58 @@ packages: - supports-color dev: true + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /esm@3.2.25: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} engines: {node: '>=6'} dev: true - /espower-location-detector@1.0.0: - resolution: {integrity: sha512-Y/3H6ytYwqC3YcOc0gOU22Lp3eI5GAFGOymTdzFyfaiglKgtsw2dePOgXY3yrV+QcLPMPiVYwBU9RKaDoh2bbQ==} - dependencies: - is-url: 1.2.4 - path-is-absolute: 1.0.1 - source-map: 0.5.7 - xtend: 4.0.2 - dev: true - /espree@9.4.0: resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4574,24 +4638,34 @@ packages: acorn-jsx: 5.3.2(acorn@8.8.0) eslint-visitor-keys: 3.3.0 + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /espurify@1.8.1: - resolution: {integrity: sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==} - dependencies: - core-js: 2.6.12 - dev: true - /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -4700,13 +4774,6 @@ packages: pkg-dir: 4.2.0 dev: true - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -4748,6 +4815,14 @@ packages: signal-exit: 3.0.7 dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + /fromentries@1.3.2: resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} dev: true @@ -4755,8 +4830,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -4844,8 +4919,21 @@ packages: dependencies: is-glob: 4.0.3 + /glob@10.4.1: + resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.1.2 + minimatch: 9.0.4 + minipass: 7.1.2 + path-scurry: 1.11.1 + dev: false + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4857,6 +4945,7 @@ packages: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4865,15 +4954,17 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.0 once: 1.4.0 + dev: true /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -4886,6 +4977,13 @@ packages: dependencies: type-fest: 0.20.2 + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4932,6 +5030,10 @@ packages: /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /graphql-tag@2.12.6(graphql@16.6.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -5062,6 +5164,11 @@ packages: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + /import-cwd@3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} engines: {node: '>=8'} @@ -5115,24 +5222,11 @@ packages: side-channel: 1.0.4 dev: true - /interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - dev: true - /irregular-plurals@3.3.0: resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} engines: {node: '>=8'} dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true @@ -5165,13 +5259,6 @@ packages: builtin-modules: 3.3.0 dev: true - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 - dev: false - /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -5200,7 +5287,6 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} @@ -5237,11 +5323,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: true - /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} @@ -5340,14 +5421,6 @@ packages: engines: {node: '>=12'} dev: true - /is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - dev: true - - /is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: true - /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -5430,6 +5503,15 @@ packages: istanbul-lib-report: 3.0.0 dev: true + /jackspeak@3.1.2: + resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + /js-sdsl@4.1.5: resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} @@ -5470,10 +5552,6 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -5579,17 +5657,6 @@ packages: wrap-ansi: 7.0.0 dev: true - /load-json-file@5.3.0: - resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.10 - parse-json: 4.0.0 - pify: 4.0.1 - strip-bom: 3.0.0 - type-fest: 0.3.1 - dev: true - /load-json-file@7.0.1: resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5604,14 +5671,6 @@ packages: resolution: {integrity: sha512-n2GmejDXtOPBAZdIiEFy5dJ5N38xBCXLNOtw2WpB9kGh6pnrEuKlwYI+Tkpofc4wDtVXHtoAOJaMRlYG/oYaxg==} dev: true - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -5691,6 +5750,11 @@ packages: engines: {node: '>=8'} dev: true + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + dev: false + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -5882,6 +5946,14 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -5895,6 +5967,11 @@ packages: /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -6048,14 +6125,6 @@ packages: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -6103,6 +6172,18 @@ packages: type-check: 0.4.0 word-wrap: 1.2.3 + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -6150,13 +6231,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true - /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -6239,14 +6313,6 @@ packages: dependencies: callsites: 3.1.0 - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -6262,11 +6328,6 @@ packages: engines: {node: '>=6'} dev: true - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -6287,6 +6348,14 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.2 + dev: false + /path-to-regexp@1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} dependencies: @@ -6320,14 +6389,6 @@ packages: engines: {node: '>= 6'} dev: false - /pkg-conf@3.1.0: - resolution: {integrity: sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - load-json-file: 5.3.0 - dev: true - /pkg-conf@4.0.0: resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6760,6 +6821,15 @@ packages: prettier: 2.8.0 dev: true + /prettier-plugin-package@1.3.0(prettier@2.8.8): + resolution: {integrity: sha512-KPNHR/Jm2zTevBp1SnjzMnooO1BOQW2bixVbOp8flOJoW+dxdDwEncObfsKZdkjwrv6AIH4oWqm5EO/etDmK9Q==} + engines: {node: '>=10.13.0'} + peerDependencies: + prettier: ^2.0.0 + dependencies: + prettier: 2.8.8 + dev: true + /prettier@2.7.1: resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} engines: {node: '>=10.13.0'} @@ -6772,6 +6842,12 @@ packages: hasBin: true dev: true + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + /pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -6875,13 +6951,6 @@ packages: picomatch: 2.3.1 dev: true - /rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.1 - dev: true - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -7102,7 +7171,7 @@ packages: '@rollup/rollup-win32-arm64-msvc': 4.0.0-24 '@rollup/rollup-win32-ia32-msvc': 4.0.0-24 '@rollup/rollup-win32-x64-msvc': 4.0.0-24 - fsevents: 2.3.2 + fsevents: 2.3.3 /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -7198,25 +7267,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - dev: true - - /shx@0.3.4: - resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} - engines: {node: '>=6'} - hasBin: true - dependencies: - minimist: 1.2.6 - shelljs: 0.8.5 - dev: true - /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -7229,6 +7279,11 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + /sinon@14.0.1: resolution: {integrity: sha512-JhJ0jCiyBWVAHDS+YSjgEbDn7Wgz9iIjA1/RK+eseJN0vAAWIWiXBdrnb92ELPyjsfreCYntD1ORtLSfIrlvSQ==} dependencies: @@ -7247,6 +7302,7 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + dev: true /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} @@ -7300,11 +7356,6 @@ packages: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -7393,7 +7444,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -7402,7 +7452,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.0.1 - dev: true /string.prototype.trimend@1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} @@ -7446,14 +7495,13 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true - /strip-bom-buf@2.0.0: - resolution: {integrity: sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==} - engines: {node: '>=8'} + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: - is-utf8: 0.2.1 - dev: true + ansi-regex: 6.0.1 + dev: false /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -7733,11 +7781,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.3.1: - resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} - engines: {node: '>=6'} - dev: true - /type-fest@0.4.1: resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} engines: {node: '>=6'} @@ -7895,6 +7938,11 @@ packages: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -7911,7 +7959,15 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -7962,11 +8018,6 @@ packages: write-json-file: 3.2.0 dev: true - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: true