From 315f0366e451c34fbb44829576794c9b56435a52 Mon Sep 17 00:00:00 2001 From: Anton Evzhakov Date: Sat, 3 Dec 2022 18:15:45 +0200 Subject: [PATCH] fix(babel): support code transpiled with esbuild (#1143) * fix(babel): support code transpiled with esbuild --- .changeset/shaggy-onions-deny.md | 7 + packages/testkit/package.json | 1 + .../src/collectExportsAndImports.test.ts | 20 +- .../utils/src/collectExportsAndImports.ts | 70 ++++- packages/utils/src/isExports.ts | 24 +- packages/utils/src/isGlobal.ts | 9 + packages/utils/src/isRequire.ts | 8 +- pnpm-lock.yaml | 265 +++++++++++++++++- 8 files changed, 366 insertions(+), 38 deletions(-) create mode 100644 .changeset/shaggy-onions-deny.md create mode 100644 packages/utils/src/isGlobal.ts diff --git a/.changeset/shaggy-onions-deny.md b/.changeset/shaggy-onions-deny.md new file mode 100644 index 000000000..b7f26d592 --- /dev/null +++ b/.changeset/shaggy-onions-deny.md @@ -0,0 +1,7 @@ +--- +'@linaria/testkit': patch +'@linaria/utils': patch +'@linaria/babel-preset': patch +--- + +Support for code transpiled with esbuild. diff --git a/packages/testkit/package.json b/packages/testkit/package.json index 076e06229..96d83e2ba 100644 --- a/packages/testkit/package.json +++ b/packages/testkit/package.json @@ -14,6 +14,7 @@ "@linaria/tags": "workspace:^", "@swc/core": "^1.3.20", "dedent": "^0.7.0", + "esbuild": "^0.15.16", "strip-ansi": "^5.2.0", "typescript": "^4.7.4" }, diff --git a/packages/testkit/src/collectExportsAndImports.test.ts b/packages/testkit/src/collectExportsAndImports.test.ts index 3082e29f1..fa3a28ce0 100644 --- a/packages/testkit/src/collectExportsAndImports.test.ts +++ b/packages/testkit/src/collectExportsAndImports.test.ts @@ -6,6 +6,7 @@ import type { NodePath } from '@babel/core'; import generator from '@babel/generator'; import { transformSync as swcTransformSync } from '@swc/core'; import dedent from 'dedent'; +import { transformSync as esbuildTransformSync } from 'esbuild'; import * as ts from 'typescript'; import type { MissedBabelCoreTypes } from '@linaria/babel-preset'; @@ -42,6 +43,17 @@ const swcCommonJS = return result.code; }; +const esbuildCommonJS = (source: string): string => { + const result = esbuildTransformSync(source, { + format: 'cjs', + loader: 'ts', + sourcefile: join(__dirname, 'source.ts'), + target: 'es2015', + }); + + return result.code; +}; + function babelCommonJS(source: string): string { const result = babel.transformSync(source, { babelrc: false, @@ -82,6 +94,7 @@ function babelNode16(source: string): string { const compilers: [name: string, compiler: (code: string) => string][] = [ ['as is', babelNode16], ['babelCommonJS', babelCommonJS], + ['esbuildCommonJS', esbuildCommonJS], ['swcCommonJSes5', swcCommonJS('es5')], ['swcCommonJSes2015', swcCommonJS('es2015')], ['typescriptCommonJS', typescriptCommonJS], @@ -548,7 +561,12 @@ describe.each(compilers)('collectExportsAndImports (%s)', (name, compiler) => { export const { a, ...rest } = obj; `; - expect(exports).toMatchObject([ + expect( + exports.filter((i) => { + // Esbuild, why? + return i.exported !== '_a'; + }) + ).toMatchObject([ { exported: 'a', }, diff --git a/packages/utils/src/collectExportsAndImports.ts b/packages/utils/src/collectExportsAndImports.ts index 16980c842..6fbd0fdc6 100644 --- a/packages/utils/src/collectExportsAndImports.ts +++ b/packages/utils/src/collectExportsAndImports.ts @@ -328,13 +328,15 @@ function getImportTypeByInteropFunction( if ( name.startsWith('_interopRequireWildcard') || - name.startsWith('__importStar') + name.startsWith('__importStar') || + name.startsWith('__toESM') ) { return '*'; } if ( name.startsWith('__rest') || + name.startsWith('__objRest') || name.startsWith('_objectDestructuringEmpty') ) { return '*'; @@ -921,11 +923,7 @@ function collectFromExportStarCall( path.skip(); } -function collectFromExportCall(path: NodePath, state: IState) { - const [exports, map] = path.get('arguments'); - if (!isExports(exports)) return; - if (!map.isObjectExpression()) return; - +function collectFromMap(map: NodePath, state: IState) { const properties = map.get('properties'); properties.forEach((property) => { if (!property.isObjectProperty()) return; @@ -945,6 +943,54 @@ function collectFromExportCall(path: NodePath, state: IState) { local: returnValue, }); }); +} + +function collectFromEsbuildExportCall( + path: NodePath, + state: IState +) { + const [sourceExports, map] = path.get('arguments'); + if (!sourceExports.isIdentifier({ name: 'source_exports' })) return; + if (!map.isObjectExpression()) return; + + collectFromMap(map, state); + + path.skip(); +} + +function collectFromEsbuildReExportCall( + path: NodePath, + state: IState +) { + const [sourceExports, requireCall, exports] = path.get('arguments'); + if (!sourceExports.isIdentifier({ name: 'source_exports' })) return; + if (!requireCall.isCallExpression()) return; + if (!isExports(exports)) return; + + const callee = requireCall.get('callee'); + if (!isRequire(callee)) return; + const sourcePath = requireCall.get('arguments')?.[0]; + if (!sourcePath.isStringLiteral()) return; + + state.reexports.push({ + exported: '*', + imported: '*', + local: path, + source: sourcePath.node.value, + }); + + path.skip(); +} + +function collectFromSwcExportCall( + path: NodePath, + state: IState +) { + const [exports, map] = path.get('arguments'); + if (!isExports(exports)) return; + if (!map.isObjectExpression()) return; + + collectFromMap(map, state); path.skip(); } @@ -971,9 +1017,17 @@ function collectFromCallExpression( collectFromExportStarCall(path, state); } - // swc if (name === '_export') { - collectFromExportCall(path, state); + collectFromSwcExportCall(path, state); + } + + // esbuild + if (name === '__export') { + collectFromEsbuildExportCall(path, state); + } + + if (name === '__reExport') { + collectFromEsbuildReExportCall(path, state); } } diff --git a/packages/utils/src/isExports.ts b/packages/utils/src/isExports.ts index 4b70771e0..06fd7c2c4 100644 --- a/packages/utils/src/isExports.ts +++ b/packages/utils/src/isExports.ts @@ -1,19 +1,23 @@ import type { NodePath } from '@babel/traverse'; -import { getScope } from './getScope'; +import { isGlobal } from './isGlobal'; /** - * Checks that specified Identifier is a global `exports` - * @param id + * Checks that specified Identifier is a global `exports` or `module.exports` + * @param node */ -export default function isExports(id: NodePath | null | undefined) { - if (!id?.isIdentifier() || id.node.name !== 'exports') { - return false; +export default function isExports(node: NodePath | null | undefined) { + if (node?.isIdentifier({ name: 'exports' })) { + return isGlobal(node, 'exports'); } - const scope = getScope(id); + if ( + node?.isMemberExpression() && + node.get('object').isIdentifier({ name: 'module' }) && + node.get('property').isIdentifier({ name: 'exports' }) + ) { + return isGlobal(node, 'module'); + } - return ( - scope.getBinding('exports') === undefined && scope.hasGlobal('exports') - ); + return false; } diff --git a/packages/utils/src/isGlobal.ts b/packages/utils/src/isGlobal.ts new file mode 100644 index 000000000..ee48993d7 --- /dev/null +++ b/packages/utils/src/isGlobal.ts @@ -0,0 +1,9 @@ +import type { NodePath } from '@babel/traverse'; + +import { getScope } from './getScope'; + +export const isGlobal = (node: NodePath, name: string) => { + const scope = getScope(node); + + return scope.getBinding(name) === undefined && scope.hasGlobal(name); +}; diff --git a/packages/utils/src/isRequire.ts b/packages/utils/src/isRequire.ts index c5e60d871..65baf1df9 100644 --- a/packages/utils/src/isRequire.ts +++ b/packages/utils/src/isRequire.ts @@ -1,6 +1,6 @@ import type { NodePath } from '@babel/traverse'; -import { getScope } from './getScope'; +import { isGlobal } from './isGlobal'; /** * Checks that specified Identifier is a global `require` @@ -11,9 +11,5 @@ export default function isRequire(id: NodePath | null | undefined) { return false; } - const scope = getScope(id); - - return ( - scope.getBinding('require') === undefined && scope.hasGlobal('require') - ); + return isGlobal(id, 'require'); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb084e1b8..49b066b2a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -612,6 +612,7 @@ importers: babel-plugin-istanbul: ^6.1.1 babel-plugin-module-resolver: ^4.1.0 dedent: ^0.7.0 + esbuild: ^0.15.16 jest: ^28.1.0 linaria: workspace:^ strip-ansi: ^5.2.0 @@ -628,6 +629,7 @@ importers: '@linaria/tags': link:../tags '@swc/core': 1.3.20 dedent: 0.7.0 + esbuild: 0.15.16 strip-ansi: 5.2.0 typescript: 4.7.4 devDependencies: @@ -651,7 +653,7 @@ importers: babel-plugin-module-resolver: 4.1.0 jest: 28.1.0_@types+node@17.0.39 linaria: link:../linaria - ts-jest: 28.0.4_7im4dvioa2uvrabfr5amyoxi3e + ts-jest: 28.0.4_b25j6g4cnqgcoop2kxrseowdaq packages/utils: specifiers: @@ -2547,22 +2549,22 @@ packages: postcss: 8.4.16 postcss-selector-parser: 6.0.10 - /@definitelytyped/header-parser/0.0.140: - resolution: {integrity: sha512-bh5odviRpF3zHO9sz8OkxMIN8yqiZQSKzdgNLHLNtAEbme2p42fAzT1tEBkjmUHAJ/zntnBFyn7N/iCTcp5nmw==} + /@definitelytyped/header-parser/0.0.141: + resolution: {integrity: sha512-u7f/NnXJJMML86BBGwLaQwhxfvuEogJdRTUA8g2vOZ9UhGzAyLSX3njTp7lni7C7PGYp2/vV2B+YLBwujQzJ8Q==} dependencies: - '@definitelytyped/typescript-versions': 0.0.140 + '@definitelytyped/typescript-versions': 0.0.141 '@types/parsimmon': 1.10.6 parsimmon: 1.18.1 dev: true - /@definitelytyped/typescript-versions/0.0.140: - resolution: {integrity: sha512-kWzD/k7IywjnVx8/RgCgBD0vZjzuyktrZ/JzwSBpaKZgq7RJZYlkGFhYaZNiRPfhz3A10k3KI/ILK9gcRZ7pkA==} + /@definitelytyped/typescript-versions/0.0.141: + resolution: {integrity: sha512-RHONSp0eGUccKcoiDJF25DVAUk6pNS79ie0/1T0fn/cDTrzhX14eo6Zcz7O9emqAI496pvsS7IhYctoFrZ/xzw==} dev: true - /@definitelytyped/utils/0.0.140: - resolution: {integrity: sha512-uqcZu8jeA+Ul05jxOvs7Sf0Bw2yL7P0YEGGxckmhL/DDx/7VJqE7ZnEGBY2lVgLEwqwQIXeoG7IUWDjBNCnntw==} + /@definitelytyped/utils/0.0.141: + resolution: {integrity: sha512-4DneI5xY0KDSF0vNWiSwmDpxVR9E32oQPWFjv0PdEgGaZT1VS8E/LxSHVjwn2+MK3uuk4XK41S/R9IFvddu9Gw==} dependencies: - '@definitelytyped/typescript-versions': 0.0.140 + '@definitelytyped/typescript-versions': 0.0.141 '@qiwi/npm-registry-client': 8.9.1 '@types/node': 14.18.33 charm: 1.0.2 @@ -2625,6 +2627,14 @@ packages: dev: true optional: true + /@esbuild/android-arm/0.15.16: + resolution: {integrity: sha512-nyB6CH++2mSgx3GbnrJsZSxzne5K0HMyNIWafDHqYy7IwxFc4fd/CgHVZXr8Eh+Q3KbIAcAe3vGyqIPhGblvMQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/linux-loong64/0.15.11: resolution: {integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==} engines: {node: '>=12'} @@ -2643,6 +2653,14 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.15.16: + resolution: {integrity: sha512-SDLfP1uoB0HZ14CdVYgagllgrG7Mdxhkt4jDJOKl/MldKrkQ6vDJMZKl2+5XsEY/Lzz37fjgLQoJBGuAw/x8kQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@eslint/eslintrc/1.3.0: resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5971,7 +5989,7 @@ packages: peerDependencies: typescript: '*' dependencies: - '@definitelytyped/header-parser': 0.0.140 + '@definitelytyped/header-parser': 0.0.141 command-exists: 1.2.9 rimraf: 3.0.2 semver: 6.3.0 @@ -5987,9 +6005,9 @@ packages: peerDependencies: typescript: '>= 3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev || >= 3.8.0-dev || >= 3.9.0-dev || >= 4.0.0-dev' dependencies: - '@definitelytyped/header-parser': 0.0.140 - '@definitelytyped/typescript-versions': 0.0.140 - '@definitelytyped/utils': 0.0.140 + '@definitelytyped/header-parser': 0.0.141 + '@definitelytyped/typescript-versions': 0.0.141 + '@definitelytyped/utils': 0.0.141 dts-critic: 3.3.11_typescript@4.7.4 fs-extra: 6.0.1 json-stable-stringify: 1.0.1 @@ -6220,6 +6238,14 @@ packages: dev: true optional: true + /esbuild-android-64/0.15.16: + resolution: {integrity: sha512-Vwkv/sT0zMSgPSVO3Jlt1pUbnZuOgtOQJkJkyyJFAlLe7BiT8e9ESzo0zQSx4c3wW4T6kGChmKDPMbWTgtliQA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /esbuild-android-arm64/0.14.48: resolution: {integrity: sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==} engines: {node: '>=12'} @@ -6247,6 +6273,14 @@ packages: dev: true optional: true + /esbuild-android-arm64/0.15.16: + resolution: {integrity: sha512-lqfKuofMExL5niNV3gnhMUYacSXfsvzTa/58sDlBET/hCOG99Zmeh+lz6kvdgvGOsImeo6J9SW21rFCogNPLxg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /esbuild-darwin-64/0.14.48: resolution: {integrity: sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==} engines: {node: '>=12'} @@ -6274,6 +6308,14 @@ packages: dev: true optional: true + /esbuild-darwin-64/0.15.16: + resolution: {integrity: sha512-wo2VWk/n/9V2TmqUZ/KpzRjCEcr00n7yahEdmtzlrfQ3lfMCf3Wa+0sqHAbjk3C6CKkR3WKK/whkMq5Gj4Da9g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /esbuild-darwin-arm64/0.14.48: resolution: {integrity: sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==} engines: {node: '>=12'} @@ -6301,6 +6343,14 @@ packages: dev: true optional: true + /esbuild-darwin-arm64/0.15.16: + resolution: {integrity: sha512-fMXaUr5ou0M4WnewBKsspMtX++C1yIa3nJ5R2LSbLCfJT3uFdcRoU/NZjoM4kOMKyOD9Sa/2vlgN8G07K3SJnw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /esbuild-freebsd-64/0.14.48: resolution: {integrity: sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==} engines: {node: '>=12'} @@ -6328,6 +6378,14 @@ packages: dev: true optional: true + /esbuild-freebsd-64/0.15.16: + resolution: {integrity: sha512-UzIc0xlRx5x9kRuMr+E3+hlSOxa/aRqfuMfiYBXu2jJ8Mzej4lGL7+o6F5hzhLqWfWm1GWHNakIdlqg1ayaTNQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /esbuild-freebsd-arm64/0.14.48: resolution: {integrity: sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==} engines: {node: '>=12'} @@ -6355,6 +6413,14 @@ packages: dev: true optional: true + /esbuild-freebsd-arm64/0.15.16: + resolution: {integrity: sha512-8xyiYuGc0DLZphFQIiYaLHlfoP+hAN9RHbE+Ibh8EUcDNHAqbQgUrQg7pE7Bo00rXmQ5Ap6KFgcR0b4ALZls1g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /esbuild-linux-32/0.14.48: resolution: {integrity: sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==} engines: {node: '>=12'} @@ -6382,6 +6448,14 @@ packages: dev: true optional: true + /esbuild-linux-32/0.15.16: + resolution: {integrity: sha512-iGijUTV+0kIMyUVoynK0v+32Oi8yyp0xwMzX69GX+5+AniNy/C/AL1MjFTsozRp/3xQPl7jVux/PLe2ds10/2w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-64/0.14.48: resolution: {integrity: sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==} engines: {node: '>=12'} @@ -6409,6 +6483,14 @@ packages: dev: true optional: true + /esbuild-linux-64/0.15.16: + resolution: {integrity: sha512-tuSOjXdLw7VzaUj89fIdAaQT7zFGbKBcz4YxbWrOiXkwscYgE7HtTxUavreBbnRkGxKwr9iT/gmeJWNm4djy/g==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-arm/0.14.48: resolution: {integrity: sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==} engines: {node: '>=12'} @@ -6436,6 +6518,14 @@ packages: dev: true optional: true + /esbuild-linux-arm/0.15.16: + resolution: {integrity: sha512-XKcrxCEXDTOuoRj5l12tJnkvuxXBMKwEC5j0JISw3ziLf0j4zIwXbKbTmUrKFWbo6ZgvNpa7Y5dnbsjVvH39bQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-arm64/0.14.48: resolution: {integrity: sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==} engines: {node: '>=12'} @@ -6463,6 +6553,14 @@ packages: dev: true optional: true + /esbuild-linux-arm64/0.15.16: + resolution: {integrity: sha512-mPYksnfHnemNrvjrDhZyixL/AfbJN0Xn9S34ZOHYdh6/jJcNd8iTsv3JwJoEvTJqjMggjMhGUPJAdjnFBHoH8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-mips64le/0.14.48: resolution: {integrity: sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==} engines: {node: '>=12'} @@ -6490,6 +6588,14 @@ packages: dev: true optional: true + /esbuild-linux-mips64le/0.15.16: + resolution: {integrity: sha512-kSJO2PXaxfm0pWY39+YX+QtpFqyyrcp0ZeI8QPTrcFVQoWEPiPVtOfTZeS3ZKedfH+Ga38c4DSzmKMQJocQv6A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-ppc64le/0.14.48: resolution: {integrity: sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==} engines: {node: '>=12'} @@ -6517,6 +6623,14 @@ packages: dev: true optional: true + /esbuild-linux-ppc64le/0.15.16: + resolution: {integrity: sha512-NimPikwkBY0yGABw6SlhKrtT35sU4O23xkhlrTT/O6lSxv3Pm5iSc6OYaqVAHWkLdVf31bF4UDVFO+D990WpAA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-riscv64/0.14.48: resolution: {integrity: sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==} engines: {node: '>=12'} @@ -6544,6 +6658,14 @@ packages: dev: true optional: true + /esbuild-linux-riscv64/0.15.16: + resolution: {integrity: sha512-ty2YUHZlwFOwp7pR+J87M4CVrXJIf5ZZtU/umpxgVJBXvWjhziSLEQxvl30SYfUPq0nzeWKBGw5i/DieiHeKfw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /esbuild-linux-s390x/0.14.48: resolution: {integrity: sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==} engines: {node: '>=12'} @@ -6571,6 +6693,14 @@ packages: dev: true optional: true + /esbuild-linux-s390x/0.15.16: + resolution: {integrity: sha512-VkZaGssvPDQtx4fvVdZ9czezmyWyzpQhEbSNsHZZN0BHvxRLOYAQ7sjay8nMQwYswP6O2KlZluRMNPYefFRs+w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /esbuild-netbsd-64/0.14.48: resolution: {integrity: sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==} engines: {node: '>=12'} @@ -6598,6 +6728,14 @@ packages: dev: true optional: true + /esbuild-netbsd-64/0.15.16: + resolution: {integrity: sha512-ElQ9rhdY51et6MJTWrCPbqOd/YuPowD7Cxx3ee8wlmXQQVW7UvQI6nSprJ9uVFQISqSF5e5EWpwWqXZsECLvXg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /esbuild-openbsd-64/0.14.48: resolution: {integrity: sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==} engines: {node: '>=12'} @@ -6625,6 +6763,14 @@ packages: dev: true optional: true + /esbuild-openbsd-64/0.15.16: + resolution: {integrity: sha512-KgxMHyxMCT+NdLQE1zVJEsLSt2QQBAvJfmUGDmgEq8Fvjrf6vSKB00dVHUEDKcJwMID6CdgCpvYNt999tIYhqA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /esbuild-sunos-64/0.14.48: resolution: {integrity: sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==} engines: {node: '>=12'} @@ -6652,6 +6798,14 @@ packages: dev: true optional: true + /esbuild-sunos-64/0.15.16: + resolution: {integrity: sha512-exSAx8Phj7QylXHlMfIyEfNrmqnLxFqLxdQF6MBHPdHAjT7fsKaX6XIJn+aQEFiOcE4X8e7VvdMCJ+WDZxjSRQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /esbuild-windows-32/0.14.48: resolution: {integrity: sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==} engines: {node: '>=12'} @@ -6679,6 +6833,14 @@ packages: dev: true optional: true + /esbuild-windows-32/0.15.16: + resolution: {integrity: sha512-zQgWpY5pUCSTOwqKQ6/vOCJfRssTvxFuEkpB4f2VUGPBpdddZfdj8hbZuFRdZRPIVHvN7juGcpgCA/XCF37mAQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /esbuild-windows-64/0.14.48: resolution: {integrity: sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==} engines: {node: '>=12'} @@ -6706,6 +6868,14 @@ packages: dev: true optional: true + /esbuild-windows-64/0.15.16: + resolution: {integrity: sha512-HjW1hHRLSncnM3MBCP7iquatHVJq9l0S2xxsHHj4yzf4nm9TU4Z7k4NkeMlD/dHQ4jPlQQhwcMvwbJiOefSuZw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /esbuild-windows-arm64/0.14.48: resolution: {integrity: sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==} engines: {node: '>=12'} @@ -6733,6 +6903,14 @@ packages: dev: true optional: true + /esbuild-windows-arm64/0.15.16: + resolution: {integrity: sha512-oCcUKrJaMn04Vxy9Ekd8x23O8LoU01+4NOkQ2iBToKgnGj5eo1vU9i27NQZ9qC8NFZgnQQZg5oZWAejmbsppNA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /esbuild/0.12.29: resolution: {integrity: sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==} hasBin: true @@ -6827,6 +7005,35 @@ packages: esbuild-windows-arm64: 0.15.12 dev: true + /esbuild/0.15.16: + resolution: {integrity: sha512-o6iS9zxdHrrojjlj6pNGC2NAg86ECZqIETswTM5KmJitq+R1YmahhWtMumeQp9lHqJaROGnsBi2RLawGnfo5ZQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.16 + '@esbuild/linux-loong64': 0.15.16 + esbuild-android-64: 0.15.16 + esbuild-android-arm64: 0.15.16 + esbuild-darwin-64: 0.15.16 + esbuild-darwin-arm64: 0.15.16 + esbuild-freebsd-64: 0.15.16 + esbuild-freebsd-arm64: 0.15.16 + esbuild-linux-32: 0.15.16 + esbuild-linux-64: 0.15.16 + esbuild-linux-arm: 0.15.16 + esbuild-linux-arm64: 0.15.16 + esbuild-linux-mips64le: 0.15.16 + esbuild-linux-ppc64le: 0.15.16 + esbuild-linux-riscv64: 0.15.16 + esbuild-linux-s390x: 0.15.16 + esbuild-netbsd-64: 0.15.16 + esbuild-openbsd-64: 0.15.16 + esbuild-sunos-64: 0.15.16 + esbuild-windows-32: 0.15.16 + esbuild-windows-64: 0.15.16 + esbuild-windows-arm64: 0.15.16 + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -13552,6 +13759,38 @@ packages: yargs-parser: 20.2.9 dev: true + /ts-jest/28.0.4_b25j6g4cnqgcoop2kxrseowdaq: + resolution: {integrity: sha512-S6uRDDdCJBvnZqyGjB4VCnwbQrbgdL8WPeP4jevVSpYsBaeGRQAIS08o3Svav2Ex+oXwLgJ/m7F24TNq62kA1A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + babel-jest: ^28.0.0 + esbuild: '*' + jest: ^28.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.20.2 + bs-logger: 0.2.6 + esbuild: 0.15.16 + fast-json-stable-stringify: 2.1.0 + jest: 28.1.0_@types+node@17.0.39 + jest-util: 28.1.0 + json5: 2.2.1 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.7 + typescript: 4.7.4 + yargs-parser: 20.2.9 + dev: true + /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: