diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7cf3873..dd46837 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,18 +6,18 @@ jobs: test: runs-on: ubuntu-latest concurrency: - group: ci-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true steps: - - uses: actions/checkout@v2 - - uses: actions/cache@v2 - with: - path: ~/.pnpm-store - key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}- - - uses: pnpm/action-setup@v2.0.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 with: version: latest - run_install: true - - run: pnpm test + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - run: | + pnpm install + pnpm build + pnpm test diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7280abc..84770a3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,21 +2,30 @@ name: Node.js Package on: push: - tags: "*" + tags: '*' jobs: build: runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true steps: - - uses: actions/checkout@v2 - - uses: pnpm/action-setup@v2.0.1 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 with: version: latest - run_install: true - - run: pnpm build - - name: Publish Package + - uses: actions/setup-node@v4 + with: + node-version: 20 + registry-url: 'https://registry.npmjs.org' + cache: pnpm + - run: | + pnpm install + pnpm build + - run: pnpm publish --provenance --access public --no-git-checks env: - NPM_TOKEN: ${{secrets.NPM_TOKEN}} - run: | - pnpm config set "//registry.npmjs.org/:_authToken" "${NPM_TOKEN}" - pnpm publish --access public --no-git-checks + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b9559b..7218a7d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,8 +4,8 @@ "prettier.enable": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { - "source.sortImports": true, - "source.fixAll.eslint": false + "source.sortImports": "explicit", + "source.fixAll.eslint": "never" }, "prettier.tabWidth": 2, "prettier.endOfLine": "auto", diff --git a/README.md b/README.md index acd336e..ba94631 100644 --- a/README.md +++ b/README.md @@ -9,21 +9,21 @@ other bundlers from analyzing the dependencies. For example: ```js // some commonjs library, like react-dom -var React = require("react"); +var React = require('react') // your esm code -export { render } from "react-dom"; +export { render } from 'react-dom' // after esbuild --bundle -var React = __require("react"); // <- you dislike this -("..."); -export { render }; +var React = __require('react') // <- you dislike this +// ... +export { render } // with this plugin -import __import_react from "react"; // <- you want this -var React = __import_react; -("..."); -export { render }; +import __import_react from 'react' // <- you want this +var React = __import_react +// ... +export { render } ``` This plugin was inspired by [a comment under esbuild#1921][4] @@ -54,7 +54,7 @@ require("esbuild").build({ ## Options ```js -commonjs({ filter: /\.c?js$/, transform: false }); +commonjs({ filter: /\.c?js$/, transform: false }) ``` **filter** (default: `/\.c?js$/`) @@ -63,6 +63,34 @@ A RegExp passed to [`onLoad()`](https://esbuild.github.io/plugins/#on-load) to match commonjs modules, it is recommended to set a custom filter to skip files for better performance. +**requireReturnsDefault** (default: `true`) + +```ts +requireReturnsDefault: boolean | ((path: string) => boolean) +``` + +Controls which style of import statement to use replacing require calls in commonjs modules. + +```js +// input +const foo = require('foo') + +// output if requireReturnsDefault is true (default behavior) +import foo from 'foo' + +// output if requireReturnsDefault is false +import * as foo from 'foo' +``` + +**ignore** + +Do not convert require calls to these modules. Note that this will cause esbuild +to generate `__require()` wrappers and throw errors at runtime. + +```ts +ignore: string[] | ((path: string) => boolean) +``` + **transform** (default: `false`) Try to transform commonjs to es modules. This trick is done with [`cjs-module-lexer`](https://github.com/nodejs/cjs-module-lexer) @@ -70,8 +98,6 @@ to match the native (node) behavior as much as possible. Because this transformation may cause many bugs around the interop between cjs and esm, it can also accept a function to filter in the "safe to convert" modules by yourself. -Type: - ```ts transform: boolean | ((path: string) => { behavior?: "node" | "babel", exports?: string[], sideEffects?: boolean @@ -81,9 +107,9 @@ transform: boolean | ((path: string) => { By default, if you toggle `transform` to `true`, it will convert this code: ```js -exports.__esModule = true; -exports.default = {}; -exports.foo = 42; +exports.__esModule = true +exports.default = {} +exports.foo = 42 ``` To this: @@ -120,6 +146,10 @@ exports, which sucks obviously. Add experimental option `transform` and `transformConfig`. +### 0.2.3 + +Add options `requireReturnsDefault` and `ignore`. + ## License MIT @ [hyrious](https://github.com/hyrious) diff --git a/build-type.ts b/build-type.ts deleted file mode 100644 index baf1c0e..0000000 --- a/build-type.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { rollup } from "rollup"; -import dts from "rollup-plugin-dts"; -import ts from "typescript"; -import { peerDependencies } from "./package.json"; -import { compilerOptions } from "./tsconfig.json"; - -const start = Date.now(); - -const bundle = await rollup({ - input: "./index.ts", - output: { file: "index.d.ts" }, - plugins: [ - dts({ - compilerOptions: { - ...ts.parseJsonConfigFileContent({ compilerOptions }, ts.sys, ".").options, - declaration: true, - noEmit: false, - emitDeclarationOnly: true, - noEmitOnError: true, - checkJs: false, - declarationMap: false, - skipLibCheck: true, - preserveSymlinks: false, - }, - }), - ], - external: Object.keys(peerDependencies), -}); - -const result = await bundle.write({ - dir: ".", - format: "esm", - exports: "named", -}); - -console.log(`Built ${result.output.map(e => e.fileName).join(", ")} in ${Math.floor(Date.now() - start)}ms`); diff --git a/fixture/react-dom.js b/fixture/react-dom.js index c4ed9e7..76264c0 100644 --- a/fixture/react-dom.js +++ b/fixture/react-dom.js @@ -1,9 +1,11 @@ -exports.__esModule = true; -exports.default = {}; -exports.foo = 42; +exports.__esModule = true +exports.default = {} +exports.foo = 42 -if (process.env.NODE_ENV === "production") { - exports.render = require("./react-dom-production").render; +if (process.env.NODE_ENV === 'production') { + exports.render = require('./react-dom-production').render } else { - exports.render = require("./react-dom-development").render; + exports.render = require('./react-dom-development').render } + +exports.v4 = require('./uuid').v4 diff --git a/fixture/uuid.js b/fixture/uuid.js new file mode 100644 index 0000000..4c60836 --- /dev/null +++ b/fixture/uuid.js @@ -0,0 +1 @@ +export const v4 = () => 'uuid-v4' diff --git a/index.test.ts b/index.test.ts index 7f5bf89..c3aa36f 100644 --- a/index.test.ts +++ b/index.test.ts @@ -1,14 +1,19 @@ -import { build } from "esbuild"; -import { commonjs } from "./index"; +import { build } from 'esbuild' +import { commonjs } from './index' build({ - entryPoints: ["fixture/entry.ts"], + entryPoints: ['fixture/entry.ts'], bundle: true, - plugins: [commonjs({ transform: true })], + plugins: [ + commonjs({ + transform: path => path.startsWith('react-dom'), + requireReturnsDefault: a => a !== './uuid', + }), + ], minifySyntax: true, - format: "esm", - external: ["react"], + format: 'esm', + external: ['react'], define: { - "process.env.NODE_ENV": '"production"', + 'process.env.NODE_ENV': '"production"', }, -}).catch(() => process.exit(1)); +}).catch(() => process.exit(1)) diff --git a/index.ts b/index.ts index ecbb9d4..d3ddc08 100644 --- a/index.ts +++ b/index.ts @@ -1,7 +1,7 @@ -import type { Message, Plugin } from "esbuild"; -import { promises } from "fs"; -import { Lexer } from "./lexer"; -import { cachedReduce, makeLegalIdentifier, orderedUniq } from "./utils"; +import type { Message, Plugin } from 'esbuild' +import { promises } from 'fs' +import { Lexer } from './lexer' +import { cachedReduce, makeLegalIdentifier, orderedUniq } from './utils' export interface CommonJSOptions { /** @@ -9,7 +9,7 @@ export interface CommonJSOptions { * * @default /\.c?js$/ */ - filter?: RegExp; + filter?: RegExp /** * _Experimental_: Transform commonjs to es modules. You have to install @@ -31,12 +31,43 @@ export interface CommonJSOptions { * * @default false */ - transform?: boolean | ((path: string) => TransformConfig | null | void); + transform?: boolean | ((path: string) => boolean | TransformConfig | null | void) /** * _Experimental_: This options acts as a fallback of the `transform` option above. */ - transformConfig?: Pick<TransformConfig, "behavior" | "sideEffects">; + transformConfig?: Pick<TransformConfig, 'behavior' | 'sideEffects'> + + /** + * Controls which style of import should be used. By default, it transforms: + * + * ```js + * // input + * const foo = require("foo") + * // output + * import foo from "foo" + * ``` + * + * The above case is often correct when 'foo' is also a commonjs module. + * But if 'foo' has es module exports, it is better to use: + * + * ```js + * // output + * import * as foo from "foo" + * ``` + * + * In which case you can set `requireReturnsDefault` to `false` to get the above output. + * Or use the callback style to control the behavior for each module. + * + * @default true + */ + requireReturnsDefault?: boolean | ((path: string) => boolean) + + /** + * Don't replace require("ignored-modules"). Note that this will cause + * esbuild generates the __require() wrapper which throw error at runtime. + */ + ignore?: string[] | ((path: string) => boolean) } export interface TransformConfig { @@ -50,14 +81,14 @@ export interface TransformConfig { * * @default "node" */ - behavior?: "babel" | "node"; + behavior?: 'babel' | 'node' /** * Also include these named exports if they aren't recognized automatically. * * @example ["something"] */ - exports?: string[]; + exports?: string[] /** * If `false`, slightly change the result to make it side-effect free. @@ -65,189 +96,203 @@ export interface TransformConfig { * * ```js * var mod; - * var exports = /+ @__PURE__ +/ ((exports, module) => { + * var exports = /\*#__PURE__*\/ ((exports, module) => { * // ... original content ... * return module.exports; * })((mod = { exports: {} }).exports, mod); * export default exports; - * var a_b = /+ @__PURE__ +/ (() => exports['a-b'])(); - * var something = /+ @__PURE__ +/ (() => exports.something)(); + * var a_b = /\*#__PURE__*\/ (() => exports['a-b'])(); + * var something = /\*#__PURE__*\/ (() => exports.something)(); * export { a_b as "a-b", something }; * ``` - * - * Note: the `/+ @__PURE__ +/` above is actually `'/' + '* @__PURE__ *' + '/'`. */ - sideEffects?: boolean; + sideEffects?: boolean } export function commonjs({ filter = /\.c?js$/, transform = false, transformConfig, + requireReturnsDefault = true, + ignore, }: CommonJSOptions = {}): Plugin { - let init_cjs_module_lexer: Promise<typeof import("cjs-module-lexer")> | undefined; - if (transform) { - init_cjs_module_lexer = import("cjs-module-lexer"); - } + const init_cjs_module_lexer = transform ? import('cjs-module-lexer') : undefined + + const use_default_export = + typeof requireReturnsDefault === 'function' + ? requireReturnsDefault + : (_path: string) => requireReturnsDefault + + const is_ignored = + typeof ignore === 'function' + ? ignore + : Array.isArray(ignore) + ? (path: string) => ignore.includes(path) + : () => false return { - name: "commonjs", + name: 'commonjs', setup({ onLoad, esbuild }) { - let esbuild_shim: typeof import("esbuild") | undefined; - const require_esbuild = () => esbuild || (esbuild_shim ||= require("esbuild")); - const read = promises.readFile; - const lexer = new Lexer(); + let esbuild_shim: typeof import('esbuild') | undefined + const require_esbuild = () => esbuild || (esbuild_shim ||= require('esbuild')) + const read = promises.readFile + const lexer = new Lexer() onLoad({ filter }, async args => { - let parseCJS: typeof import("cjs-module-lexer").parse | undefined; + let parseCJS: typeof import('cjs-module-lexer').parse | undefined if (init_cjs_module_lexer) { - const { init, parse } = await init_cjs_module_lexer; - await init(); - parseCJS = parse; + const { init, parse } = await init_cjs_module_lexer + await init() + parseCJS = parse } - let contents: string; + let contents: string try { - contents = await read(args.path, "utf8"); + contents = await read(args.path, 'utf8') } catch { - return null; + return null } - const willTransform = transform === true || (typeof transform === "function" && transform(args.path)); + const willTransform = transform === true || (typeof transform === 'function' && transform(args.path)) - let cjsExports: ReturnType<NonNullable<typeof parseCJS>> | undefined; + let cjsExports: ReturnType<NonNullable<typeof parseCJS>> | undefined if (parseCJS && willTransform) { // move sourcemap to the end of the transformed file - let sourcemapIndex = contents.lastIndexOf("//# sourceMappingURL="); - let sourcemap: string | undefined; + let sourcemapIndex = contents.lastIndexOf('//# sourceMappingURL=') + let sourcemap: string | undefined if (sourcemapIndex !== -1) { - sourcemap = contents.slice(sourcemapIndex); - let sourcemapEnd = sourcemap.indexOf("\n"); + sourcemap = contents.slice(sourcemapIndex) + let sourcemapEnd = sourcemap.indexOf('\n') if (sourcemapEnd !== -1 && sourcemap.slice(sourcemapEnd + 1).trimStart().length > 0) { // if there's code after sourcemap, it is invalid, don't do this. - sourcemap = undefined; + sourcemap = undefined } else { - contents = contents.slice(0, sourcemapIndex); + contents = contents.slice(0, sourcemapIndex) } } // transform commonjs to es modules, easy mode - cjsExports = parseCJS(contents); + cjsExports = parseCJS(contents) let { behavior, exports, sideEffects } = - typeof willTransform === "object" ? willTransform : ({} as TransformConfig); - behavior ??= transformConfig?.behavior ?? "node"; - exports = orderedUniq(cjsExports.exports.concat(exports ?? [])); - sideEffects ??= transformConfig?.sideEffects ?? true; + typeof willTransform === 'object' ? willTransform : ({} as TransformConfig) + behavior ??= transformConfig?.behavior ?? 'node' + exports = orderedUniq(cjsExports.exports.concat(exports ?? [])) + sideEffects ??= transformConfig?.sideEffects ?? true let exportDefault = - behavior === "node" - ? "export default exports;" - : "export default exports.__esModule ? exports.default : exports;"; - let exportsMap = exports.map(e => [e, makeLegalIdentifier(e)]); - if (exportsMap.some(([e]) => e === "default")) { - if (behavior === "node") { - exportsMap = exportsMap.filter(([e]) => e !== "default"); + behavior === 'node' + ? 'export default exports;' + : 'export default exports.__esModule ? exports.default : exports;' + let exportsMap = exports.map(e => [e, makeLegalIdentifier(e)]) + if (exportsMap.some(([e]) => e === 'default')) { + if (behavior === 'node') { + exportsMap = exportsMap.filter(([e]) => e !== 'default') } else { - exportDefault = ""; + exportDefault = '' } } - let reexports = cjsExports.reexports.map(e => `export * from ${JSON.stringify(e)};`).join(""); - let transformed: string[]; + let reexports = cjsExports.reexports.map(e => `export * from ${JSON.stringify(e)};`).join('') + let transformed: string[] if (sideEffects === false) { transformed = [ // make sure we don't manipulate the first line so that sourcemap is fine - reexports + "var mod, exports = /* @__PURE__ */ ((exports, module) => {" + contents, - "return module.exports})((mod = { exports: {} }).exports, mod); " + exportDefault, - ]; + reexports + 'var mod, exports = /* @__PURE__ */ ((exports, module) => {' + contents, + 'return module.exports})((mod = { exports: {} }).exports, mod); ' + exportDefault, + ] if (exportsMap.length > 0) { for (const [e, name] of exportsMap) { - transformed.push(`var ${name} = /* @__PURE__ */ (() => exports[${JSON.stringify(e)}])();`); + transformed.push(`var ${name} = /* @__PURE__ */ (() => exports[${JSON.stringify(e)}])();`) } transformed.push( `export { ${exportsMap .map(([e, name]) => (e === name ? e : `${name} as ${JSON.stringify(e)}`)) - .join(", ")} };` - ); + .join(', ')} };` + ) } } else { transformed = [ - reexports + "var exports = {}, module = { exports }; {" + contents, - "}; exports = module.exports; " + exportDefault, - ]; + reexports + 'var exports = {}, module = { exports }; {' + contents, + '}; exports = module.exports; ' + exportDefault, + ] if (exportsMap.length > 0) { transformed.push( `var { ${exportsMap .map(([e, name]) => (e === name ? e : `${JSON.stringify(e)}: ${name}`)) - .join(", ")} } = exports;`, + .join(', ')} } = exports;`, `export { ${exportsMap .map(([e, name]) => (e === name ? e : `${name} as ${JSON.stringify(e)}`)) - .join(", ")} };` - ); + .join(', ')} };` + ) } } - contents = transformed.join("\n") + (sourcemap ? "\n" + sourcemap : ""); + contents = transformed.join('\n') + (sourcemap ? '\n' + sourcemap : '') } function makeName(path: string) { - let name = `__import_${makeLegalIdentifier(path)}`; + let name = `__import_${makeLegalIdentifier(path)}` if (contents.includes(name)) { - let suffix = 2; - while (contents.includes(`${name}_${suffix}`)) suffix++; - name = `${name}_${suffix}`; + let suffix = 2 + while (contents.includes(`${name}${suffix}`)) suffix++ + name = `${name}${suffix}` } - return name; + return name } - let warnings: Message[]; + let warnings: Message[] try { - ({ warnings } = await require_esbuild().transform(contents, { format: "esm", logLevel: "silent" })); + ;({ warnings } = await require_esbuild().transform(contents, { format: 'esm', logLevel: 'silent' })) } catch (err) { - ({ warnings } = err as any); + ;({ warnings } = err as any) } - let lines = contents.split("\n"); - let getOffset = cachedReduce(lines, (a, b) => a + 1 + b.length, 0); + let lines = contents.split('\n') + let getOffset = cachedReduce(lines, (a, b) => a + 1 + b.length, 0) if (warnings && (warnings = warnings.filter(e => e.text.includes('"require" to "esm"'))).length) { - let edits: [start: number, end: number, replace: string][] = []; - let imports: string[] = []; + let edits: [start: number, end: number, replace: string][] = [] + let imports: string[] = [] for (const { location } of warnings) { - if (location === null) continue; + if (location === null) continue - const { line, lineText, column, length } = location; + const { line, lineText, column, length } = location - const leftBrace = column + length + 1; - const path = lexer.readString(lineText, leftBrace); - if (path === null) continue; - const rightBrace = lineText.indexOf(")", leftBrace + 2 + path.length) + 1; + const leftBrace = column + length + 1 + const path = lexer.readString(lineText, leftBrace) + if (path === null || is_ignored(path)) continue + const rightBrace = lineText.indexOf(')', leftBrace + 2 + path.length) + 1 - let name = makeName(path); - let import_statement = `import ${name} from ${JSON.stringify(path)};`; + let name = makeName(path) + let import_statement: string + if (use_default_export(path)) { + import_statement = `import ${name} from ${JSON.stringify(path)};` + } else { + import_statement = `import * as ${name} from ${JSON.stringify(path)};` + } - let offset = getOffset(line - 1); - edits.push([offset + column, offset + rightBrace, name]); - imports.push(import_statement); + let offset = getOffset(line - 1) + edits.push([offset + column, offset + rightBrace, name]) + imports.push(import_statement) } - if (imports.length === 0) return null; + if (imports.length === 0) return null - imports = orderedUniq(imports); + imports = orderedUniq(imports) - let offset = 0; + let offset = 0 for (const [start, end, name] of edits) { - contents = contents.slice(0, start + offset) + name + contents.slice(end + offset); - offset += name.length - (end - start); + contents = contents.slice(0, start + offset) + name + contents.slice(end + offset) + offset += name.length - (end - start) } // if we have transformed this module (i.e. having `cjsExports`), don't make the file commonjs - contents = [...imports, cjsExports ? "exports;" : "", contents].join(""); + contents = [...imports, cjsExports ? 'exports;' : '', contents].join('') - return { contents }; + return { contents } } - }); + }) }, - }; + } } -export default commonjs; +export default commonjs diff --git a/package.json b/package.json index eeb6081..11fa6bc 100644 --- a/package.json +++ b/package.json @@ -2,29 +2,32 @@ "name": "@hyrious/esbuild-plugin-commonjs", "version": "0.2.2", "description": "Bundle commonjs externals in es module in esbuild.", + "author": "hyrious <hyrious@outlook.com>", + "license": "MIT", + "keywords": [ + "esbuild", + "plugin", + "commonjs", + "modules", + "require" + ], "main": "index.js", "types": "index.d.ts", "files": [ + "index.d.ts", "index.js", "index.js.map", "index.ts", "lexer.ts", - "utils.ts", - "index.d.ts" - ], - "keywords": [ - "esbuild", - "plugin", - "commonjs", - "modules", - "require" + "utils.ts" ], - "author": "hyrious <hyrious@outlook.com>", - "license": "MIT", + "engines": { + "node": ">=14" + }, "scripts": { "build": "npm run build:js && npm run build:type", - "build:js": "esbuild index.ts --bundle --external:esbuild --external:cjs-module-lexer --sourcemap --sources-content=false --outfile=index.js --platform=node --target=node14", - "build:type": "esbuild-dev build-type.ts", + "build:js": "esbuild index.ts --bundle --packages=external --sourcemap --sources-content=false --outfile=index.js --platform=node --target=node14", + "build:type": "dts index.ts -o index.d.ts", "test": "esbuild-dev index.test.ts" }, "peerDependencies": { @@ -37,15 +40,10 @@ } }, "devDependencies": { - "@hyrious/esbuild-dev": "^0.8.6", - "@types/node": "^14", - "cjs-module-lexer": "^1.2.2", - "esbuild": "^0.15.14", - "rollup": "^3.3.0", - "rollup-plugin-dts": "^5.0.0", - "typescript": "^4.9.3" - }, - "engines": { - "node": ">=14" + "@hyrious/dts": "^0.2.0", + "@hyrious/esbuild-dev": "^0.10.5", + "@types/node": "^20.10.6", + "cjs-module-lexer": "^1.2.3", + "esbuild": "^0.19.11" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 188c2d3..b0a343f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,118 +1,85 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' -specifiers: - '@hyrious/esbuild-dev': ^0.8.6 - '@types/node': ^14 - cjs-module-lexer: ^1.2.2 - esbuild: ^0.15.14 - rollup: ^3.3.0 - rollup-plugin-dts: ^5.0.0 - typescript: ^4.9.3 +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false devDependencies: - '@hyrious/esbuild-dev': 0.8.6_esbuild@0.15.14 - '@types/node': 14.18.33 - cjs-module-lexer: 1.2.2 - esbuild: 0.15.14 - rollup: 3.3.0 - rollup-plugin-dts: 5.0.0_6annma2bj33shm6er7hwi5u4z4 - typescript: 4.9.3 + '@hyrious/dts': + specifier: ^0.2.0 + version: 0.2.0 + '@hyrious/esbuild-dev': + specifier: ^0.10.5 + version: 0.10.5(esbuild@0.19.11) + '@types/node': + specifier: ^20.10.6 + version: 20.10.6 + cjs-module-lexer: + specifier: ^1.2.3 + version: 1.2.3 + esbuild: + specifier: ^0.19.11 + version: 0.19.11 packages: - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} requiresBuild: true dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.23.4 + chalk: 2.4.2 dev: true optional: true - /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + requiresBuild: true dev: true optional: true - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} + requiresBuild: true dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 dev: true optional: true - /@esbuild/android-arm/0.15.14: - resolution: {integrity: sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==} + /@esbuild/aix-ppc64@0.19.11: + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} - cpu: [arm] - os: [android] + cpu: [ppc64] + os: [aix] requiresBuild: true dev: true optional: true - /@esbuild/linux-loong64/0.15.14: - resolution: {integrity: sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==} + /@esbuild/android-arm64@0.19.11: + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} - cpu: [loong64] - os: [linux] + cpu: [arm64] + os: [android] requiresBuild: true dev: true optional: true - /@hyrious/esbuild-dev/0.8.6_esbuild@0.15.14: - resolution: {integrity: sha512-zpiY53A+0ZyArySY/6GUeTruXmS/WSE3kr7LbbG/eBzX4UOo2oGqef6U9V5uFGGzAZ6z2eaPhvDqSR8FIjCpyQ==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - esbuild: '*' - dependencies: - esbuild: 0.15.14 - dev: true - - /@types/node/14.18.33: - resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==} - dev: true - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - optional: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - optional: true - - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - optional: true - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + /@esbuild/android-arm@0.19.11: + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true optional: true - /esbuild-android-64/0.15.14: - resolution: {integrity: sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==} + /@esbuild/android-x64@0.19.11: + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -120,17 +87,17 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.15.14: - resolution: {integrity: sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==} + /@esbuild/darwin-arm64@0.19.11: + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} cpu: [arm64] - os: [android] + os: [darwin] requiresBuild: true dev: true optional: true - /esbuild-darwin-64/0.15.14: - resolution: {integrity: sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==} + /@esbuild/darwin-x64@0.19.11: + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -138,17 +105,17 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.15.14: - resolution: {integrity: sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==} + /@esbuild/freebsd-arm64@0.19.11: + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} cpu: [arm64] - os: [darwin] + os: [freebsd] requiresBuild: true dev: true optional: true - /esbuild-freebsd-64/0.15.14: - resolution: {integrity: sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==} + /@esbuild/freebsd-x64@0.19.11: + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -156,89 +123,89 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.15.14: - resolution: {integrity: sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==} + /@esbuild/linux-arm64@0.19.11: + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} cpu: [arm64] - os: [freebsd] + os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-32/0.15.14: - resolution: {integrity: sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==} + /@esbuild/linux-arm@0.19.11: + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-64/0.15.14: - resolution: {integrity: sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==} + /@esbuild/linux-ia32@0.19.11: + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} - cpu: [x64] + cpu: [ia32] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-arm/0.15.14: - resolution: {integrity: sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==} + /@esbuild/linux-loong64@0.19.11: + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [loong64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-arm64/0.15.14: - resolution: {integrity: sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==} + /@esbuild/linux-mips64el@0.19.11: + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [mips64el] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-mips64le/0.15.14: - resolution: {integrity: sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==} + /@esbuild/linux-ppc64@0.19.11: + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} - cpu: [mips64el] + cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-ppc64le/0.15.14: - resolution: {integrity: sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==} + /@esbuild/linux-riscv64@0.19.11: + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} - cpu: [ppc64] + cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-riscv64/0.15.14: - resolution: {integrity: sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==} + /@esbuild/linux-s390x@0.19.11: + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} - cpu: [riscv64] + cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-s390x/0.15.14: - resolution: {integrity: sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==} + /@esbuild/linux-x64@0.19.11: + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} - cpu: [s390x] + cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-netbsd-64/0.15.14: - resolution: {integrity: sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==} + /@esbuild/netbsd-x64@0.19.11: + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -246,8 +213,8 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.15.14: - resolution: {integrity: sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==} + /@esbuild/openbsd-x64@0.19.11: + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -255,8 +222,8 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.15.14: - resolution: {integrity: sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==} + /@esbuild/sunos-x64@0.19.11: + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -264,8 +231,17 @@ packages: dev: true optional: true - /esbuild-windows-32/0.15.14: - resolution: {integrity: sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==} + /@esbuild/win32-arm64@0.19.11: + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.11: + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -273,8 +249,8 @@ packages: dev: true optional: true - /esbuild-windows-64/0.15.14: - resolution: {integrity: sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==} + /@esbuild/win32-x64@0.19.11: + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -282,113 +258,348 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.15.14: - resolution: {integrity: sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==} - engines: {node: '>=12'} + /@hyrious/dts@0.2.0: + resolution: {integrity: sha512-RKVkbW6/DlnOhixL42XZcwQhc/kAnXeL4IkeGCGfC4x+eLtCH6vIIYrsJVLhDH4axGC/fKPryKNPLsT89J9z2g==} + hasBin: true + dependencies: + '@rollup/plugin-json': 6.1.0(rollup@4.9.2) + rollup: 4.9.2 + rollup-plugin-dts: 6.1.0(rollup@4.9.2)(typescript@5.3.3) + sade: 1.8.1 + typescript: 5.3.3 + dev: true + + /@hyrious/esbuild-dev@0.10.5(esbuild@0.19.11): + resolution: {integrity: sha512-f8ODDk7AP29tR+MKN29a8x4IpMs2LIYEK/eOY34oD5xjqtj+gP6cx4rrcnP4R9cZKKGMlLFDm0RN51eSqOnMlg==} + engines: {node: ^14.18 || >=16} + hasBin: true + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.19.11 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@rollup/plugin-json@6.1.0(rollup@4.9.2): + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.9.2) + rollup: 4.9.2 + dev: true + + /@rollup/pluginutils@5.1.0(rollup@4.9.2): + 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.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.9.2 + dev: true + + /@rollup/rollup-android-arm-eabi@4.9.2: + resolution: {integrity: sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.9.2: + resolution: {integrity: sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.2: + resolution: {integrity: sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.2: + resolution: {integrity: sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.2: + resolution: {integrity: sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.2: + resolution: {integrity: sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.2: + resolution: {integrity: sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==} cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.2: + resolution: {integrity: sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.2: + resolution: {integrity: sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.2: + resolution: {integrity: sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.2: + resolution: {integrity: sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.2: + resolution: {integrity: sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.2: + resolution: {integrity: sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==} + cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /esbuild/0.15.14: - resolution: {integrity: sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/node@20.10.6: + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + color-convert: 1.9.3 + dev: true + optional: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + optional: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + requiresBuild: true + dependencies: + color-name: 1.1.3 + dev: true + optional: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + requiresBuild: true + dev: true + optional: true + + /esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.15.14 - '@esbuild/linux-loong64': 0.15.14 - esbuild-android-64: 0.15.14 - esbuild-android-arm64: 0.15.14 - esbuild-darwin-64: 0.15.14 - esbuild-darwin-arm64: 0.15.14 - esbuild-freebsd-64: 0.15.14 - esbuild-freebsd-arm64: 0.15.14 - esbuild-linux-32: 0.15.14 - esbuild-linux-64: 0.15.14 - esbuild-linux-arm: 0.15.14 - esbuild-linux-arm64: 0.15.14 - esbuild-linux-mips64le: 0.15.14 - esbuild-linux-ppc64le: 0.15.14 - esbuild-linux-riscv64: 0.15.14 - esbuild-linux-s390x: 0.15.14 - esbuild-netbsd-64: 0.15.14 - esbuild-openbsd-64: 0.15.14 - esbuild-sunos-64: 0.15.14 - esbuild-windows-32: 0.15.14 - esbuild-windows-64: 0.15.14 - esbuild-windows-arm64: 0.15.14 - dev: true - - /escape-string-regexp/1.0.5: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + dev: true + + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + requiresBuild: true dev: true optional: true - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /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 dev: true optional: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + requiresBuild: true dev: true optional: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + requiresBuild: true dev: true optional: true - /magic-string/0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: - sourcemap-codec: 1.4.8 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} dev: true - /rollup-plugin-dts/5.0.0_6annma2bj33shm6er7hwi5u4z4: - resolution: {integrity: sha512-OO8ayCvuJCKaQSShyVTARxGurVVk4ulzbuvz+0zFd1f93vlnWFU5pBMT7HFeS6uj7MvvZLx4kUAarGATSU1+Ng==} - engines: {node: '>=v14'} + /rollup-plugin-dts@6.1.0(rollup@4.9.2)(typescript@5.3.3): + resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} + engines: {node: '>=16'} peerDependencies: - rollup: ^3.0.0 - typescript: ^4.1 + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 dependencies: - magic-string: 0.26.7 - rollup: 3.3.0 - typescript: 4.9.3 + magic-string: 0.30.5 + rollup: 4.9.2 + typescript: 5.3.3 optionalDependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.23.5 dev: true - /rollup/3.3.0: - resolution: {integrity: sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rollup@4.9.2: + resolution: {integrity: sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 - dev: true - - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + '@rollup/rollup-android-arm-eabi': 4.9.2 + '@rollup/rollup-android-arm64': 4.9.2 + '@rollup/rollup-darwin-arm64': 4.9.2 + '@rollup/rollup-darwin-x64': 4.9.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.2 + '@rollup/rollup-linux-arm64-gnu': 4.9.2 + '@rollup/rollup-linux-arm64-musl': 4.9.2 + '@rollup/rollup-linux-riscv64-gnu': 4.9.2 + '@rollup/rollup-linux-x64-gnu': 4.9.2 + '@rollup/rollup-linux-x64-musl': 4.9.2 + '@rollup/rollup-win32-arm64-msvc': 4.9.2 + '@rollup/rollup-win32-ia32-msvc': 4.9.2 + '@rollup/rollup-win32-x64-msvc': 4.9.2 + fsevents: 2.3.3 + dev: true + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} + requiresBuild: true dependencies: has-flag: 3.0.0 dev: true optional: true - /typescript/4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} - engines: {node: '>=4.2.0'} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} hasBin: true dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true