diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6053b5fbe7..e5ac3682a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -246,6 +246,10 @@ jobs: - if: steps.filter.outputs.changed == 'true' name: Build packages run: pnpm --workspace-concurrency=1 --filter "./napi/parser" --filter "./napi/minify" --filter "./napi/transform" --filter "./napi/transform-react" --filter "./napi/transform-relay" build-test + - if: steps.filter.outputs.changed == 'true' + name: Run runtime helper tests + working-directory: npm/runtime + run: node --run test - parallel: - if: steps.filter.outputs.changed == 'true' name: Run tests diff --git a/npm/runtime/LICENSE b/npm/runtime/LICENSE new file mode 100644 index 0000000000..f31575ec77 --- /dev/null +++ b/npm/runtime/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/npm/runtime/README.md b/npm/runtime/README.md index 287c380764..161187783b 100644 --- a/npm/runtime/README.md +++ b/npm/runtime/README.md @@ -1,5 +1,30 @@ # Oxc's modular runtime helpers -Code copied from the published package `@babel/runtime`. +Vendored from the complete published `@babel/runtime@8.0.8` package, including all 95 CommonJS/ESM helper pairs and Babel's MIT license. All credits to the Babel team. -All credits to the Babel team. +[upstream.json](upstream.json) records the upstream version, SHA-256 of every upstream helper file, and the local patches. The tests check these hashes so unrecorded edits cannot silently diverge from Babel. + +## Differences from Babel + +- `setFunctionName.js` and `esm/setFunctionName.js` preserve `"[]"` for `Symbol("")`, matching native computed method names. Babel 8.0.8 returns an empty name. These files are unchanged from Oxc's existing helpers and are the only patches to the upstream helper tree. +- Oxc retains its three TypeScript legacy decorator helpers: `decorate`, `decorateParam`, and `decorateMetadata`. They are adapted from TypeScript and are absent from Babel 8. +- The 26 older Babel helpers removed in Babel 8 remain available for compatibility with previously generated code. Their names are listed in `upstream.json`; they are outside the Babel 8 source snapshot. +- Package identity, Oxc's version and Node.js requirements, and the `src/` layout remain Oxc-specific. Babel's export targets and `sideEffects: false` are synchronized while preserving Oxc's existing conditional-export precedence; explicit `helpers/esm/*` and older package exports remain supported. + +## Updating + +Download and extract a specific published version of `@babel/runtime`, then run from this directory: + +```sh +node scripts/sync.mjs /path/to/extracted/babel-runtime +``` + +The script copies every unpatched upstream helper and the license, updates exports and the hash manifest, and preserves compatibility helpers and recorded local patches. Before writing, it checks that each patched helper still matches its recorded local hash and that its upstream source is unchanged. If upstream changes a patched helper, the script stops so its local changes can be reviewed against the new version. + +The manifest uses the script's generated JSON formatting and is excluded from repository formatting. Repeating the command with the recorded upstream version leaves the runtime tree unchanged. Tests reconstruct that upstream tree offline, using the vendored helpers and the original sources of the two patched helpers. + +Run the import, integrity, and runtime behavior tests with: + +```sh +node --run test +``` diff --git a/npm/runtime/package.json b/npm/runtime/package.json index badd08f345..d8caf9fad4 100644 --- a/npm/runtime/package.json +++ b/npm/runtime/package.json @@ -9,32 +9,19 @@ "url": "https://github.com/oxc-project/oxc.git", "directory": "npm/runtime" }, + "files": [ + "src", + "CHANGELOG.md", + "upstream.json" + ], "type": "commonjs", + "sideEffects": false, "exports": { - "./helpers/AwaitValue": [ - { - "node": "./src/helpers/AwaitValue.js", - "import": "./src/helpers/esm/AwaitValue.js", - "default": "./src/helpers/AwaitValue.js" - }, - "./src/helpers/AwaitValue.js" - ], - "./helpers/OverloadYield": [ - { - "node": "./src/helpers/OverloadYield.js", - "import": "./src/helpers/esm/OverloadYield.js", - "default": "./src/helpers/OverloadYield.js" - }, - "./src/helpers/OverloadYield.js" - ], - "./helpers/applyDecoratedDescriptor": [ - { - "node": "./src/helpers/applyDecoratedDescriptor.js", - "import": "./src/helpers/esm/applyDecoratedDescriptor.js", - "default": "./src/helpers/applyDecoratedDescriptor.js" - }, - "./src/helpers/applyDecoratedDescriptor.js" - ], + "./helpers/applyDecoratedDescriptor": { + "node": "./src/helpers/applyDecoratedDescriptor.js", + "import": "./src/helpers/esm/applyDecoratedDescriptor.js", + "default": "./src/helpers/applyDecoratedDescriptor.js" + }, "./helpers/applyDecs": [ { "node": "./src/helpers/applyDecs.js", @@ -75,110 +62,79 @@ }, "./src/helpers/applyDecs2305.js" ], - "./helpers/applyDecs2311": [ + "./helpers/applyDecs2311": { + "node": "./src/helpers/applyDecs2311.js", + "import": "./src/helpers/esm/applyDecs2311.js", + "default": "./src/helpers/applyDecs2311.js" + }, + "./helpers/arrayLikeToArray": { + "node": "./src/helpers/arrayLikeToArray.js", + "import": "./src/helpers/esm/arrayLikeToArray.js", + "default": "./src/helpers/arrayLikeToArray.js" + }, + "./helpers/arrayWithHoles": { + "node": "./src/helpers/arrayWithHoles.js", + "import": "./src/helpers/esm/arrayWithHoles.js", + "default": "./src/helpers/arrayWithHoles.js" + }, + "./helpers/arrayWithoutHoles": { + "node": "./src/helpers/arrayWithoutHoles.js", + "import": "./src/helpers/esm/arrayWithoutHoles.js", + "default": "./src/helpers/arrayWithoutHoles.js" + }, + "./helpers/assertClassBrand": { + "node": "./src/helpers/assertClassBrand.js", + "import": "./src/helpers/esm/assertClassBrand.js", + "default": "./src/helpers/assertClassBrand.js" + }, + "./helpers/assertThisInitialized": { + "node": "./src/helpers/assertThisInitialized.js", + "import": "./src/helpers/esm/assertThisInitialized.js", + "default": "./src/helpers/assertThisInitialized.js" + }, + "./helpers/asyncGeneratorDelegate": { + "node": "./src/helpers/asyncGeneratorDelegate.js", + "import": "./src/helpers/esm/asyncGeneratorDelegate.js", + "default": "./src/helpers/asyncGeneratorDelegate.js" + }, + "./helpers/asyncIterator": { + "node": "./src/helpers/asyncIterator.js", + "import": "./src/helpers/esm/asyncIterator.js", + "default": "./src/helpers/asyncIterator.js" + }, + "./helpers/asyncToGenerator": { + "node": "./src/helpers/asyncToGenerator.js", + "import": "./src/helpers/esm/asyncToGenerator.js", + "default": "./src/helpers/asyncToGenerator.js" + }, + "./helpers/awaitAsyncGenerator": { + "node": "./src/helpers/awaitAsyncGenerator.js", + "import": "./src/helpers/esm/awaitAsyncGenerator.js", + "default": "./src/helpers/awaitAsyncGenerator.js" + }, + "./helpers/AwaitValue": [ { - "node": "./src/helpers/applyDecs2311.js", - "import": "./src/helpers/esm/applyDecs2311.js", - "default": "./src/helpers/applyDecs2311.js" + "node": "./src/helpers/AwaitValue.js", + "import": "./src/helpers/esm/AwaitValue.js", + "default": "./src/helpers/AwaitValue.js" }, - "./src/helpers/applyDecs2311.js" - ], - "./helpers/arrayLikeToArray": [ - { - "node": "./src/helpers/arrayLikeToArray.js", - "import": "./src/helpers/esm/arrayLikeToArray.js", - "default": "./src/helpers/arrayLikeToArray.js" - }, - "./src/helpers/arrayLikeToArray.js" - ], - "./helpers/arrayWithHoles": [ - { - "node": "./src/helpers/arrayWithHoles.js", - "import": "./src/helpers/esm/arrayWithHoles.js", - "default": "./src/helpers/arrayWithHoles.js" - }, - "./src/helpers/arrayWithHoles.js" - ], - "./helpers/arrayWithoutHoles": [ - { - "node": "./src/helpers/arrayWithoutHoles.js", - "import": "./src/helpers/esm/arrayWithoutHoles.js", - "default": "./src/helpers/arrayWithoutHoles.js" - }, - "./src/helpers/arrayWithoutHoles.js" - ], - "./helpers/assertClassBrand": [ - { - "node": "./src/helpers/assertClassBrand.js", - "import": "./src/helpers/esm/assertClassBrand.js", - "default": "./src/helpers/assertClassBrand.js" - }, - "./src/helpers/assertClassBrand.js" - ], - "./helpers/assertThisInitialized": [ - { - "node": "./src/helpers/assertThisInitialized.js", - "import": "./src/helpers/esm/assertThisInitialized.js", - "default": "./src/helpers/assertThisInitialized.js" - }, - "./src/helpers/assertThisInitialized.js" - ], - "./helpers/asyncGeneratorDelegate": [ - { - "node": "./src/helpers/asyncGeneratorDelegate.js", - "import": "./src/helpers/esm/asyncGeneratorDelegate.js", - "default": "./src/helpers/asyncGeneratorDelegate.js" - }, - "./src/helpers/asyncGeneratorDelegate.js" - ], - "./helpers/asyncIterator": [ - { - "node": "./src/helpers/asyncIterator.js", - "import": "./src/helpers/esm/asyncIterator.js", - "default": "./src/helpers/asyncIterator.js" - }, - "./src/helpers/asyncIterator.js" - ], - "./helpers/asyncToGenerator": [ - { - "node": "./src/helpers/asyncToGenerator.js", - "import": "./src/helpers/esm/asyncToGenerator.js", - "default": "./src/helpers/asyncToGenerator.js" - }, - "./src/helpers/asyncToGenerator.js" - ], - "./helpers/awaitAsyncGenerator": [ - { - "node": "./src/helpers/awaitAsyncGenerator.js", - "import": "./src/helpers/esm/awaitAsyncGenerator.js", - "default": "./src/helpers/awaitAsyncGenerator.js" - }, - "./src/helpers/awaitAsyncGenerator.js" - ], - "./helpers/callSuper": [ - { - "node": "./src/helpers/callSuper.js", - "import": "./src/helpers/esm/callSuper.js", - "default": "./src/helpers/callSuper.js" - }, - "./src/helpers/callSuper.js" - ], - "./helpers/checkInRHS": [ - { - "node": "./src/helpers/checkInRHS.js", - "import": "./src/helpers/esm/checkInRHS.js", - "default": "./src/helpers/checkInRHS.js" - }, - "./src/helpers/checkInRHS.js" - ], - "./helpers/checkPrivateRedeclaration": [ - { - "node": "./src/helpers/checkPrivateRedeclaration.js", - "import": "./src/helpers/esm/checkPrivateRedeclaration.js", - "default": "./src/helpers/checkPrivateRedeclaration.js" - }, - "./src/helpers/checkPrivateRedeclaration.js" + "./src/helpers/AwaitValue.js" ], + "./helpers/callSuper": { + "node": "./src/helpers/callSuper.js", + "import": "./src/helpers/esm/callSuper.js", + "default": "./src/helpers/callSuper.js" + }, + "./helpers/checkInRHS": { + "node": "./src/helpers/checkInRHS.js", + "import": "./src/helpers/esm/checkInRHS.js", + "default": "./src/helpers/checkInRHS.js" + }, + "./helpers/checkPrivateRedeclaration": { + "node": "./src/helpers/checkPrivateRedeclaration.js", + "import": "./src/helpers/esm/checkPrivateRedeclaration.js", + "default": "./src/helpers/checkPrivateRedeclaration.js" + }, "./helpers/classApplyDescriptorDestructureSet": [ { "node": "./src/helpers/classApplyDescriptorDestructureSet.js", @@ -203,14 +159,11 @@ }, "./src/helpers/classApplyDescriptorSet.js" ], - "./helpers/classCallCheck": [ - { - "node": "./src/helpers/classCallCheck.js", - "import": "./src/helpers/esm/classCallCheck.js", - "default": "./src/helpers/classCallCheck.js" - }, - "./src/helpers/classCallCheck.js" - ], + "./helpers/classCallCheck": { + "node": "./src/helpers/classCallCheck.js", + "import": "./src/helpers/esm/classCallCheck.js", + "default": "./src/helpers/classCallCheck.js" + }, "./helpers/classCheckPrivateStaticAccess": [ { "node": "./src/helpers/classCheckPrivateStaticAccess.js", @@ -235,14 +188,11 @@ }, "./src/helpers/classExtractFieldDescriptor.js" ], - "./helpers/classNameTDZError": [ - { - "node": "./src/helpers/classNameTDZError.js", - "import": "./src/helpers/esm/classNameTDZError.js", - "default": "./src/helpers/classNameTDZError.js" - }, - "./src/helpers/classNameTDZError.js" - ], + "./helpers/classNameTDZError": { + "node": "./src/helpers/classNameTDZError.js", + "import": "./src/helpers/esm/classNameTDZError.js", + "default": "./src/helpers/classNameTDZError.js" + }, "./helpers/classPrivateFieldDestructureSet": [ { "node": "./src/helpers/classPrivateFieldDestructureSet.js", @@ -259,38 +209,26 @@ }, "./src/helpers/classPrivateFieldGet.js" ], - "./helpers/classPrivateFieldGet2": [ - { - "node": "./src/helpers/classPrivateFieldGet2.js", - "import": "./src/helpers/esm/classPrivateFieldGet2.js", - "default": "./src/helpers/classPrivateFieldGet2.js" - }, - "./src/helpers/classPrivateFieldGet2.js" - ], - "./helpers/classPrivateFieldInitSpec": [ - { - "node": "./src/helpers/classPrivateFieldInitSpec.js", - "import": "./src/helpers/esm/classPrivateFieldInitSpec.js", - "default": "./src/helpers/classPrivateFieldInitSpec.js" - }, - "./src/helpers/classPrivateFieldInitSpec.js" - ], - "./helpers/classPrivateFieldLooseBase": [ - { - "node": "./src/helpers/classPrivateFieldLooseBase.js", - "import": "./src/helpers/esm/classPrivateFieldLooseBase.js", - "default": "./src/helpers/classPrivateFieldLooseBase.js" - }, - "./src/helpers/classPrivateFieldLooseBase.js" - ], - "./helpers/classPrivateFieldLooseKey": [ - { - "node": "./src/helpers/classPrivateFieldLooseKey.js", - "import": "./src/helpers/esm/classPrivateFieldLooseKey.js", - "default": "./src/helpers/classPrivateFieldLooseKey.js" - }, - "./src/helpers/classPrivateFieldLooseKey.js" - ], + "./helpers/classPrivateFieldGet2": { + "node": "./src/helpers/classPrivateFieldGet2.js", + "import": "./src/helpers/esm/classPrivateFieldGet2.js", + "default": "./src/helpers/classPrivateFieldGet2.js" + }, + "./helpers/classPrivateFieldInitSpec": { + "node": "./src/helpers/classPrivateFieldInitSpec.js", + "import": "./src/helpers/esm/classPrivateFieldInitSpec.js", + "default": "./src/helpers/classPrivateFieldInitSpec.js" + }, + "./helpers/classPrivateFieldLooseBase": { + "node": "./src/helpers/classPrivateFieldLooseBase.js", + "import": "./src/helpers/esm/classPrivateFieldLooseBase.js", + "default": "./src/helpers/classPrivateFieldLooseBase.js" + }, + "./helpers/classPrivateFieldLooseKey": { + "node": "./src/helpers/classPrivateFieldLooseKey.js", + "import": "./src/helpers/esm/classPrivateFieldLooseKey.js", + "default": "./src/helpers/classPrivateFieldLooseKey.js" + }, "./helpers/classPrivateFieldSet": [ { "node": "./src/helpers/classPrivateFieldSet.js", @@ -299,22 +237,16 @@ }, "./src/helpers/classPrivateFieldSet.js" ], - "./helpers/classPrivateFieldSet2": [ - { - "node": "./src/helpers/classPrivateFieldSet2.js", - "import": "./src/helpers/esm/classPrivateFieldSet2.js", - "default": "./src/helpers/classPrivateFieldSet2.js" - }, - "./src/helpers/classPrivateFieldSet2.js" - ], - "./helpers/classPrivateGetter": [ - { - "node": "./src/helpers/classPrivateGetter.js", - "import": "./src/helpers/esm/classPrivateGetter.js", - "default": "./src/helpers/classPrivateGetter.js" - }, - "./src/helpers/classPrivateGetter.js" - ], + "./helpers/classPrivateFieldSet2": { + "node": "./src/helpers/classPrivateFieldSet2.js", + "import": "./src/helpers/esm/classPrivateFieldSet2.js", + "default": "./src/helpers/classPrivateFieldSet2.js" + }, + "./helpers/classPrivateGetter": { + "node": "./src/helpers/classPrivateGetter.js", + "import": "./src/helpers/esm/classPrivateGetter.js", + "default": "./src/helpers/classPrivateGetter.js" + }, "./helpers/classPrivateMethodGet": [ { "node": "./src/helpers/classPrivateMethodGet.js", @@ -323,14 +255,11 @@ }, "./src/helpers/classPrivateMethodGet.js" ], - "./helpers/classPrivateMethodInitSpec": [ - { - "node": "./src/helpers/classPrivateMethodInitSpec.js", - "import": "./src/helpers/esm/classPrivateMethodInitSpec.js", - "default": "./src/helpers/classPrivateMethodInitSpec.js" - }, - "./src/helpers/classPrivateMethodInitSpec.js" - ], + "./helpers/classPrivateMethodInitSpec": { + "node": "./src/helpers/classPrivateMethodInitSpec.js", + "import": "./src/helpers/esm/classPrivateMethodInitSpec.js", + "default": "./src/helpers/classPrivateMethodInitSpec.js" + }, "./helpers/classPrivateMethodSet": [ { "node": "./src/helpers/classPrivateMethodSet.js", @@ -339,14 +268,11 @@ }, "./src/helpers/classPrivateMethodSet.js" ], - "./helpers/classPrivateSetter": [ - { - "node": "./src/helpers/classPrivateSetter.js", - "import": "./src/helpers/esm/classPrivateSetter.js", - "default": "./src/helpers/classPrivateSetter.js" - }, - "./src/helpers/classPrivateSetter.js" - ], + "./helpers/classPrivateSetter": { + "node": "./src/helpers/classPrivateSetter.js", + "import": "./src/helpers/esm/classPrivateSetter.js", + "default": "./src/helpers/classPrivateSetter.js" + }, "./helpers/classStaticPrivateFieldDestructureSet": [ { "node": "./src/helpers/classStaticPrivateFieldDestructureSet.js", @@ -371,14 +297,11 @@ }, "./src/helpers/classStaticPrivateFieldSpecSet.js" ], - "./helpers/classStaticPrivateMethodGet": [ - { - "node": "./src/helpers/classStaticPrivateMethodGet.js", - "import": "./src/helpers/esm/classStaticPrivateMethodGet.js", - "default": "./src/helpers/classStaticPrivateMethodGet.js" - }, - "./src/helpers/classStaticPrivateMethodGet.js" - ], + "./helpers/classStaticPrivateMethodGet": { + "node": "./src/helpers/classStaticPrivateMethodGet.js", + "import": "./src/helpers/esm/classStaticPrivateMethodGet.js", + "default": "./src/helpers/classStaticPrivateMethodGet.js" + }, "./helpers/classStaticPrivateMethodSet": [ { "node": "./src/helpers/classStaticPrivateMethodSet.js", @@ -387,46 +310,31 @@ }, "./src/helpers/classStaticPrivateMethodSet.js" ], - "./helpers/construct": [ - { - "node": "./src/helpers/construct.js", - "import": "./src/helpers/esm/construct.js", - "default": "./src/helpers/construct.js" - }, - "./src/helpers/construct.js" - ], - "./helpers/createClass": [ - { - "node": "./src/helpers/createClass.js", - "import": "./src/helpers/esm/createClass.js", - "default": "./src/helpers/createClass.js" - }, - "./src/helpers/createClass.js" - ], - "./helpers/createForOfIteratorHelper": [ - { - "node": "./src/helpers/createForOfIteratorHelper.js", - "import": "./src/helpers/esm/createForOfIteratorHelper.js", - "default": "./src/helpers/createForOfIteratorHelper.js" - }, - "./src/helpers/createForOfIteratorHelper.js" - ], - "./helpers/createForOfIteratorHelperLoose": [ - { - "node": "./src/helpers/createForOfIteratorHelperLoose.js", - "import": "./src/helpers/esm/createForOfIteratorHelperLoose.js", - "default": "./src/helpers/createForOfIteratorHelperLoose.js" - }, - "./src/helpers/createForOfIteratorHelperLoose.js" - ], - "./helpers/createSuper": [ - { - "node": "./src/helpers/createSuper.js", - "import": "./src/helpers/esm/createSuper.js", - "default": "./src/helpers/createSuper.js" - }, - "./src/helpers/createSuper.js" - ], + "./helpers/construct": { + "node": "./src/helpers/construct.js", + "import": "./src/helpers/esm/construct.js", + "default": "./src/helpers/construct.js" + }, + "./helpers/createClass": { + "node": "./src/helpers/createClass.js", + "import": "./src/helpers/esm/createClass.js", + "default": "./src/helpers/createClass.js" + }, + "./helpers/createForOfIteratorHelper": { + "node": "./src/helpers/createForOfIteratorHelper.js", + "import": "./src/helpers/esm/createForOfIteratorHelper.js", + "default": "./src/helpers/createForOfIteratorHelper.js" + }, + "./helpers/createForOfIteratorHelperLoose": { + "node": "./src/helpers/createForOfIteratorHelperLoose.js", + "import": "./src/helpers/esm/createForOfIteratorHelperLoose.js", + "default": "./src/helpers/createForOfIteratorHelperLoose.js" + }, + "./helpers/createSuper": { + "node": "./src/helpers/createSuper.js", + "import": "./src/helpers/esm/createSuper.js", + "default": "./src/helpers/createSuper.js" + }, "./helpers/decorate": [ { "node": "./src/helpers/decorate.js", @@ -451,22 +359,16 @@ }, "./src/helpers/decorateParam.js" ], - "./helpers/defaults": [ - { - "node": "./src/helpers/defaults.js", - "import": "./src/helpers/esm/defaults.js", - "default": "./src/helpers/defaults.js" - }, - "./src/helpers/defaults.js" - ], - "./helpers/defineAccessor": [ - { - "node": "./src/helpers/defineAccessor.js", - "import": "./src/helpers/esm/defineAccessor.js", - "default": "./src/helpers/defineAccessor.js" - }, - "./src/helpers/defineAccessor.js" - ], + "./helpers/defaults": { + "node": "./src/helpers/defaults.js", + "import": "./src/helpers/esm/defaults.js", + "default": "./src/helpers/defaults.js" + }, + "./helpers/defineAccessor": { + "node": "./src/helpers/defineAccessor.js", + "import": "./src/helpers/esm/defineAccessor.js", + "default": "./src/helpers/defineAccessor.js" + }, "./helpers/defineEnumerableProperties": [ { "node": "./src/helpers/defineEnumerableProperties.js", @@ -475,14 +377,11 @@ }, "./src/helpers/defineEnumerableProperties.js" ], - "./helpers/defineProperty": [ - { - "node": "./src/helpers/defineProperty.js", - "import": "./src/helpers/esm/defineProperty.js", - "default": "./src/helpers/defineProperty.js" - }, - "./src/helpers/defineProperty.js" - ], + "./helpers/defineProperty": { + "node": "./src/helpers/defineProperty.js", + "import": "./src/helpers/esm/defineProperty.js", + "default": "./src/helpers/defineProperty.js" + }, "./helpers/dispose": [ { "node": "./src/helpers/dispose.js", @@ -491,8 +390,6 @@ }, "./src/helpers/dispose.js" ], - "./helpers/esm/AwaitValue": "./src/helpers/esm/AwaitValue.js", - "./helpers/esm/OverloadYield": "./src/helpers/esm/OverloadYield.js", "./helpers/esm/applyDecoratedDescriptor": "./src/helpers/esm/applyDecoratedDescriptor.js", "./helpers/esm/applyDecs": "./src/helpers/esm/applyDecs.js", "./helpers/esm/applyDecs2203": "./src/helpers/esm/applyDecs2203.js", @@ -509,6 +406,7 @@ "./helpers/esm/asyncIterator": "./src/helpers/esm/asyncIterator.js", "./helpers/esm/asyncToGenerator": "./src/helpers/esm/asyncToGenerator.js", "./helpers/esm/awaitAsyncGenerator": "./src/helpers/esm/awaitAsyncGenerator.js", + "./helpers/esm/AwaitValue": "./src/helpers/esm/AwaitValue.js", "./helpers/esm/callSuper": "./src/helpers/esm/callSuper.js", "./helpers/esm/checkInRHS": "./src/helpers/esm/checkInRHS.js", "./helpers/esm/checkPrivateRedeclaration": "./src/helpers/esm/checkPrivateRedeclaration.js", @@ -545,6 +443,7 @@ "./helpers/esm/createSuper": "./src/helpers/esm/createSuper.js", "./helpers/esm/decorate": "./src/helpers/esm/decorate.js", "./helpers/esm/decorateMetadata": "./src/helpers/esm/decorateMetadata.js", + "./helpers/esm/decorateParam": "./src/helpers/esm/decorateParam.js", "./helpers/esm/defaults": "./src/helpers/esm/defaults.js", "./helpers/esm/defineAccessor": "./src/helpers/esm/defineAccessor.js", "./helpers/esm/defineEnumerableProperties": "./src/helpers/esm/defineEnumerableProperties.js", @@ -577,9 +476,17 @@ "./helpers/esm/objectSpread2": "./src/helpers/esm/objectSpread2.js", "./helpers/esm/objectWithoutProperties": "./src/helpers/esm/objectWithoutProperties.js", "./helpers/esm/objectWithoutPropertiesLoose": "./src/helpers/esm/objectWithoutPropertiesLoose.js", + "./helpers/esm/OverloadYield": "./src/helpers/esm/OverloadYield.js", "./helpers/esm/possibleConstructorReturn": "./src/helpers/esm/possibleConstructorReturn.js", "./helpers/esm/readOnlyError": "./src/helpers/esm/readOnlyError.js", + "./helpers/esm/regenerator": "./src/helpers/esm/regenerator.js", + "./helpers/esm/regeneratorAsync": "./src/helpers/esm/regeneratorAsync.js", + "./helpers/esm/regeneratorAsyncGen": "./src/helpers/esm/regeneratorAsyncGen.js", + "./helpers/esm/regeneratorAsyncIterator": "./src/helpers/esm/regeneratorAsyncIterator.js", + "./helpers/esm/regeneratorDefine": "./src/helpers/esm/regeneratorDefine.js", + "./helpers/esm/regeneratorKeys": "./src/helpers/esm/regeneratorKeys.js", "./helpers/esm/regeneratorRuntime": "./src/helpers/esm/regeneratorRuntime.js", + "./helpers/esm/regeneratorValues": "./src/helpers/esm/regeneratorValues.js", "./helpers/esm/set": "./src/helpers/esm/set.js", "./helpers/esm/setFunctionName": "./src/helpers/esm/setFunctionName.js", "./helpers/esm/setPrototypeOf": "./src/helpers/esm/setPrototypeOf.js", @@ -598,6 +505,7 @@ "./helpers/esm/toPrimitive": "./src/helpers/esm/toPrimitive.js", "./helpers/esm/toPropertyKey": "./src/helpers/esm/toPropertyKey.js", "./helpers/esm/toSetter": "./src/helpers/esm/toSetter.js", + "./helpers/esm/tsRewriteRelativeImportExtensions": "./src/helpers/esm/tsRewriteRelativeImportExtensions.js", "./helpers/esm/typeof": "./src/helpers/esm/typeof.js", "./helpers/esm/unsupportedIterableToArray": "./src/helpers/esm/unsupportedIterableToArray.js", "./helpers/esm/using": "./src/helpers/esm/using.js", @@ -606,190 +514,121 @@ "./helpers/esm/wrapNativeSuper": "./src/helpers/esm/wrapNativeSuper.js", "./helpers/esm/wrapRegExp": "./src/helpers/esm/wrapRegExp.js", "./helpers/esm/writeOnlyError": "./src/helpers/esm/writeOnlyError.js", - "./helpers/extends": [ - { - "node": "./src/helpers/extends.js", - "import": "./src/helpers/esm/extends.js", - "default": "./src/helpers/extends.js" - }, - "./src/helpers/extends.js" - ], - "./helpers/get": [ - { - "node": "./src/helpers/get.js", - "import": "./src/helpers/esm/get.js", - "default": "./src/helpers/get.js" - }, - "./src/helpers/get.js" - ], - "./helpers/getPrototypeOf": [ - { - "node": "./src/helpers/getPrototypeOf.js", - "import": "./src/helpers/esm/getPrototypeOf.js", - "default": "./src/helpers/getPrototypeOf.js" - }, - "./src/helpers/getPrototypeOf.js" - ], - "./helpers/identity": [ - { - "node": "./src/helpers/identity.js", - "import": "./src/helpers/esm/identity.js", - "default": "./src/helpers/identity.js" - }, - "./src/helpers/identity.js" - ], - "./helpers/importDeferProxy": [ - { - "node": "./src/helpers/importDeferProxy.js", - "import": "./src/helpers/esm/importDeferProxy.js", - "default": "./src/helpers/importDeferProxy.js" - }, - "./src/helpers/importDeferProxy.js" - ], - "./helpers/inherits": [ - { - "node": "./src/helpers/inherits.js", - "import": "./src/helpers/esm/inherits.js", - "default": "./src/helpers/inherits.js" - }, - "./src/helpers/inherits.js" - ], - "./helpers/inheritsLoose": [ - { - "node": "./src/helpers/inheritsLoose.js", - "import": "./src/helpers/esm/inheritsLoose.js", - "default": "./src/helpers/inheritsLoose.js" - }, - "./src/helpers/inheritsLoose.js" - ], - "./helpers/initializerDefineProperty": [ - { - "node": "./src/helpers/initializerDefineProperty.js", - "import": "./src/helpers/esm/initializerDefineProperty.js", - "default": "./src/helpers/initializerDefineProperty.js" - }, - "./src/helpers/initializerDefineProperty.js" - ], - "./helpers/initializerWarningHelper": [ - { - "node": "./src/helpers/initializerWarningHelper.js", - "import": "./src/helpers/esm/initializerWarningHelper.js", - "default": "./src/helpers/initializerWarningHelper.js" - }, - "./src/helpers/initializerWarningHelper.js" - ], - "./helpers/instanceof": [ - { - "node": "./src/helpers/instanceof.js", - "import": "./src/helpers/esm/instanceof.js", - "default": "./src/helpers/instanceof.js" - }, - "./src/helpers/instanceof.js" - ], - "./helpers/interopRequireDefault": [ - { - "node": "./src/helpers/interopRequireDefault.js", - "import": "./src/helpers/esm/interopRequireDefault.js", - "default": "./src/helpers/interopRequireDefault.js" - }, - "./src/helpers/interopRequireDefault.js" - ], - "./helpers/interopRequireWildcard": [ - { - "node": "./src/helpers/interopRequireWildcard.js", - "import": "./src/helpers/esm/interopRequireWildcard.js", - "default": "./src/helpers/interopRequireWildcard.js" - }, - "./src/helpers/interopRequireWildcard.js" - ], - "./helpers/isNativeFunction": [ - { - "node": "./src/helpers/isNativeFunction.js", - "import": "./src/helpers/esm/isNativeFunction.js", - "default": "./src/helpers/isNativeFunction.js" - }, - "./src/helpers/isNativeFunction.js" - ], - "./helpers/isNativeReflectConstruct": [ - { - "node": "./src/helpers/isNativeReflectConstruct.js", - "import": "./src/helpers/esm/isNativeReflectConstruct.js", - "default": "./src/helpers/isNativeReflectConstruct.js" - }, - "./src/helpers/isNativeReflectConstruct.js" - ], - "./helpers/iterableToArray": [ - { - "node": "./src/helpers/iterableToArray.js", - "import": "./src/helpers/esm/iterableToArray.js", - "default": "./src/helpers/iterableToArray.js" - }, - "./src/helpers/iterableToArray.js" - ], - "./helpers/iterableToArrayLimit": [ - { - "node": "./src/helpers/iterableToArrayLimit.js", - "import": "./src/helpers/esm/iterableToArrayLimit.js", - "default": "./src/helpers/iterableToArrayLimit.js" - }, - "./src/helpers/iterableToArrayLimit.js" - ], - "./helpers/jsx": [ - { - "node": "./src/helpers/jsx.js", - "import": "./src/helpers/esm/jsx.js", - "default": "./src/helpers/jsx.js" - }, - "./src/helpers/jsx.js" - ], - "./helpers/maybeArrayLike": [ - { - "node": "./src/helpers/maybeArrayLike.js", - "import": "./src/helpers/esm/maybeArrayLike.js", - "default": "./src/helpers/maybeArrayLike.js" - }, - "./src/helpers/maybeArrayLike.js" - ], - "./helpers/newArrowCheck": [ - { - "node": "./src/helpers/newArrowCheck.js", - "import": "./src/helpers/esm/newArrowCheck.js", - "default": "./src/helpers/newArrowCheck.js" - }, - "./src/helpers/newArrowCheck.js" - ], - "./helpers/nonIterableRest": [ - { - "node": "./src/helpers/nonIterableRest.js", - "import": "./src/helpers/esm/nonIterableRest.js", - "default": "./src/helpers/nonIterableRest.js" - }, - "./src/helpers/nonIterableRest.js" - ], - "./helpers/nonIterableSpread": [ - { - "node": "./src/helpers/nonIterableSpread.js", - "import": "./src/helpers/esm/nonIterableSpread.js", - "default": "./src/helpers/nonIterableSpread.js" - }, - "./src/helpers/nonIterableSpread.js" - ], - "./helpers/nullishReceiverError": [ - { - "node": "./src/helpers/nullishReceiverError.js", - "import": "./src/helpers/esm/nullishReceiverError.js", - "default": "./src/helpers/nullishReceiverError.js" - }, - "./src/helpers/nullishReceiverError.js" - ], - "./helpers/objectDestructuringEmpty": [ - { - "node": "./src/helpers/objectDestructuringEmpty.js", - "import": "./src/helpers/esm/objectDestructuringEmpty.js", - "default": "./src/helpers/objectDestructuringEmpty.js" - }, - "./src/helpers/objectDestructuringEmpty.js" - ], + "./helpers/extends": { + "node": "./src/helpers/extends.js", + "import": "./src/helpers/esm/extends.js", + "default": "./src/helpers/extends.js" + }, + "./helpers/get": { + "node": "./src/helpers/get.js", + "import": "./src/helpers/esm/get.js", + "default": "./src/helpers/get.js" + }, + "./helpers/getPrototypeOf": { + "node": "./src/helpers/getPrototypeOf.js", + "import": "./src/helpers/esm/getPrototypeOf.js", + "default": "./src/helpers/getPrototypeOf.js" + }, + "./helpers/identity": { + "node": "./src/helpers/identity.js", + "import": "./src/helpers/esm/identity.js", + "default": "./src/helpers/identity.js" + }, + "./helpers/importDeferProxy": { + "node": "./src/helpers/importDeferProxy.js", + "import": "./src/helpers/esm/importDeferProxy.js", + "default": "./src/helpers/importDeferProxy.js" + }, + "./helpers/inherits": { + "node": "./src/helpers/inherits.js", + "import": "./src/helpers/esm/inherits.js", + "default": "./src/helpers/inherits.js" + }, + "./helpers/inheritsLoose": { + "node": "./src/helpers/inheritsLoose.js", + "import": "./src/helpers/esm/inheritsLoose.js", + "default": "./src/helpers/inheritsLoose.js" + }, + "./helpers/initializerDefineProperty": { + "node": "./src/helpers/initializerDefineProperty.js", + "import": "./src/helpers/esm/initializerDefineProperty.js", + "default": "./src/helpers/initializerDefineProperty.js" + }, + "./helpers/initializerWarningHelper": { + "node": "./src/helpers/initializerWarningHelper.js", + "import": "./src/helpers/esm/initializerWarningHelper.js", + "default": "./src/helpers/initializerWarningHelper.js" + }, + "./helpers/instanceof": { + "node": "./src/helpers/instanceof.js", + "import": "./src/helpers/esm/instanceof.js", + "default": "./src/helpers/instanceof.js" + }, + "./helpers/interopRequireDefault": { + "node": "./src/helpers/interopRequireDefault.js", + "import": "./src/helpers/esm/interopRequireDefault.js", + "default": "./src/helpers/interopRequireDefault.js" + }, + "./helpers/interopRequireWildcard": { + "node": "./src/helpers/interopRequireWildcard.js", + "import": "./src/helpers/esm/interopRequireWildcard.js", + "default": "./src/helpers/interopRequireWildcard.js" + }, + "./helpers/isNativeFunction": { + "node": "./src/helpers/isNativeFunction.js", + "import": "./src/helpers/esm/isNativeFunction.js", + "default": "./src/helpers/isNativeFunction.js" + }, + "./helpers/isNativeReflectConstruct": { + "node": "./src/helpers/isNativeReflectConstruct.js", + "import": "./src/helpers/esm/isNativeReflectConstruct.js", + "default": "./src/helpers/isNativeReflectConstruct.js" + }, + "./helpers/iterableToArray": { + "node": "./src/helpers/iterableToArray.js", + "import": "./src/helpers/esm/iterableToArray.js", + "default": "./src/helpers/iterableToArray.js" + }, + "./helpers/iterableToArrayLimit": { + "node": "./src/helpers/iterableToArrayLimit.js", + "import": "./src/helpers/esm/iterableToArrayLimit.js", + "default": "./src/helpers/iterableToArrayLimit.js" + }, + "./helpers/jsx": { + "node": "./src/helpers/jsx.js", + "import": "./src/helpers/esm/jsx.js", + "default": "./src/helpers/jsx.js" + }, + "./helpers/maybeArrayLike": { + "node": "./src/helpers/maybeArrayLike.js", + "import": "./src/helpers/esm/maybeArrayLike.js", + "default": "./src/helpers/maybeArrayLike.js" + }, + "./helpers/newArrowCheck": { + "node": "./src/helpers/newArrowCheck.js", + "import": "./src/helpers/esm/newArrowCheck.js", + "default": "./src/helpers/newArrowCheck.js" + }, + "./helpers/nonIterableRest": { + "node": "./src/helpers/nonIterableRest.js", + "import": "./src/helpers/esm/nonIterableRest.js", + "default": "./src/helpers/nonIterableRest.js" + }, + "./helpers/nonIterableSpread": { + "node": "./src/helpers/nonIterableSpread.js", + "import": "./src/helpers/esm/nonIterableSpread.js", + "default": "./src/helpers/nonIterableSpread.js" + }, + "./helpers/nullishReceiverError": { + "node": "./src/helpers/nullishReceiverError.js", + "import": "./src/helpers/esm/nullishReceiverError.js", + "default": "./src/helpers/nullishReceiverError.js" + }, + "./helpers/objectDestructuringEmpty": { + "node": "./src/helpers/objectDestructuringEmpty.js", + "import": "./src/helpers/esm/objectDestructuringEmpty.js", + "default": "./src/helpers/objectDestructuringEmpty.js" + }, "./helpers/objectSpread": [ { "node": "./src/helpers/objectSpread.js", @@ -798,46 +637,56 @@ }, "./src/helpers/objectSpread.js" ], - "./helpers/objectSpread2": [ - { - "node": "./src/helpers/objectSpread2.js", - "import": "./src/helpers/esm/objectSpread2.js", - "default": "./src/helpers/objectSpread2.js" - }, - "./src/helpers/objectSpread2.js" - ], - "./helpers/objectWithoutProperties": [ - { - "node": "./src/helpers/objectWithoutProperties.js", - "import": "./src/helpers/esm/objectWithoutProperties.js", - "default": "./src/helpers/objectWithoutProperties.js" - }, - "./src/helpers/objectWithoutProperties.js" - ], - "./helpers/objectWithoutPropertiesLoose": [ - { - "node": "./src/helpers/objectWithoutPropertiesLoose.js", - "import": "./src/helpers/esm/objectWithoutPropertiesLoose.js", - "default": "./src/helpers/objectWithoutPropertiesLoose.js" - }, - "./src/helpers/objectWithoutPropertiesLoose.js" - ], - "./helpers/possibleConstructorReturn": [ - { - "node": "./src/helpers/possibleConstructorReturn.js", - "import": "./src/helpers/esm/possibleConstructorReturn.js", - "default": "./src/helpers/possibleConstructorReturn.js" - }, - "./src/helpers/possibleConstructorReturn.js" - ], - "./helpers/readOnlyError": [ - { - "node": "./src/helpers/readOnlyError.js", - "import": "./src/helpers/esm/readOnlyError.js", - "default": "./src/helpers/readOnlyError.js" - }, - "./src/helpers/readOnlyError.js" - ], + "./helpers/objectSpread2": { + "node": "./src/helpers/objectSpread2.js", + "import": "./src/helpers/esm/objectSpread2.js", + "default": "./src/helpers/objectSpread2.js" + }, + "./helpers/objectWithoutProperties": { + "node": "./src/helpers/objectWithoutProperties.js", + "import": "./src/helpers/esm/objectWithoutProperties.js", + "default": "./src/helpers/objectWithoutProperties.js" + }, + "./helpers/objectWithoutPropertiesLoose": { + "node": "./src/helpers/objectWithoutPropertiesLoose.js", + "import": "./src/helpers/esm/objectWithoutPropertiesLoose.js", + "default": "./src/helpers/objectWithoutPropertiesLoose.js" + }, + "./helpers/OverloadYield": { + "node": "./src/helpers/OverloadYield.js", + "import": "./src/helpers/esm/OverloadYield.js", + "default": "./src/helpers/OverloadYield.js" + }, + "./helpers/possibleConstructorReturn": { + "node": "./src/helpers/possibleConstructorReturn.js", + "import": "./src/helpers/esm/possibleConstructorReturn.js", + "default": "./src/helpers/possibleConstructorReturn.js" + }, + "./helpers/readOnlyError": { + "node": "./src/helpers/readOnlyError.js", + "import": "./src/helpers/esm/readOnlyError.js", + "default": "./src/helpers/readOnlyError.js" + }, + "./helpers/regenerator": { + "node": "./src/helpers/regenerator.js", + "import": "./src/helpers/esm/regenerator.js", + "default": "./src/helpers/regenerator.js" + }, + "./helpers/regeneratorAsync": { + "node": "./src/helpers/regeneratorAsync.js", + "import": "./src/helpers/esm/regeneratorAsync.js", + "default": "./src/helpers/regeneratorAsync.js" + }, + "./helpers/regeneratorAsyncGen": { + "node": "./src/helpers/regeneratorAsyncGen.js", + "import": "./src/helpers/esm/regeneratorAsyncGen.js", + "default": "./src/helpers/regeneratorAsyncGen.js" + }, + "./helpers/regeneratorKeys": { + "node": "./src/helpers/regeneratorKeys.js", + "import": "./src/helpers/esm/regeneratorKeys.js", + "default": "./src/helpers/regeneratorKeys.js" + }, "./helpers/regeneratorRuntime": [ { "node": "./src/helpers/regeneratorRuntime.js", @@ -846,166 +695,116 @@ }, "./src/helpers/regeneratorRuntime.js" ], - "./helpers/set": [ - { - "node": "./src/helpers/set.js", - "import": "./src/helpers/esm/set.js", - "default": "./src/helpers/set.js" - }, - "./src/helpers/set.js" - ], - "./helpers/setFunctionName": [ - { - "node": "./src/helpers/setFunctionName.js", - "import": "./src/helpers/esm/setFunctionName.js", - "default": "./src/helpers/setFunctionName.js" - }, - "./src/helpers/setFunctionName.js" - ], - "./helpers/setPrototypeOf": [ - { - "node": "./src/helpers/setPrototypeOf.js", - "import": "./src/helpers/esm/setPrototypeOf.js", - "default": "./src/helpers/setPrototypeOf.js" - }, - "./src/helpers/setPrototypeOf.js" - ], - "./helpers/skipFirstGeneratorNext": [ - { - "node": "./src/helpers/skipFirstGeneratorNext.js", - "import": "./src/helpers/esm/skipFirstGeneratorNext.js", - "default": "./src/helpers/skipFirstGeneratorNext.js" - }, - "./src/helpers/skipFirstGeneratorNext.js" - ], - "./helpers/slicedToArray": [ - { - "node": "./src/helpers/slicedToArray.js", - "import": "./src/helpers/esm/slicedToArray.js", - "default": "./src/helpers/slicedToArray.js" - }, - "./src/helpers/slicedToArray.js" - ], - "./helpers/superPropBase": [ - { - "node": "./src/helpers/superPropBase.js", - "import": "./src/helpers/esm/superPropBase.js", - "default": "./src/helpers/superPropBase.js" - }, - "./src/helpers/superPropBase.js" - ], - "./helpers/superPropGet": [ - { - "node": "./src/helpers/superPropGet.js", - "import": "./src/helpers/esm/superPropGet.js", - "default": "./src/helpers/superPropGet.js" - }, - "./src/helpers/superPropGet.js" - ], - "./helpers/superPropSet": [ - { - "node": "./src/helpers/superPropSet.js", - "import": "./src/helpers/esm/superPropSet.js", - "default": "./src/helpers/superPropSet.js" - }, - "./src/helpers/superPropSet.js" - ], - "./helpers/taggedTemplateLiteral": [ - { - "node": "./src/helpers/taggedTemplateLiteral.js", - "import": "./src/helpers/esm/taggedTemplateLiteral.js", - "default": "./src/helpers/taggedTemplateLiteral.js" - }, - "./src/helpers/taggedTemplateLiteral.js" - ], - "./helpers/taggedTemplateLiteralLoose": [ - { - "node": "./src/helpers/taggedTemplateLiteralLoose.js", - "import": "./src/helpers/esm/taggedTemplateLiteralLoose.js", - "default": "./src/helpers/taggedTemplateLiteralLoose.js" - }, - "./src/helpers/taggedTemplateLiteralLoose.js" - ], - "./helpers/tdz": [ - { - "node": "./src/helpers/tdz.js", - "import": "./src/helpers/esm/tdz.js", - "default": "./src/helpers/tdz.js" - }, - "./src/helpers/tdz.js" - ], - "./helpers/temporalRef": [ - { - "node": "./src/helpers/temporalRef.js", - "import": "./src/helpers/esm/temporalRef.js", - "default": "./src/helpers/temporalRef.js" - }, - "./src/helpers/temporalRef.js" - ], - "./helpers/temporalUndefined": [ - { - "node": "./src/helpers/temporalUndefined.js", - "import": "./src/helpers/esm/temporalUndefined.js", - "default": "./src/helpers/temporalUndefined.js" - }, - "./src/helpers/temporalUndefined.js" - ], - "./helpers/toArray": [ - { - "node": "./src/helpers/toArray.js", - "import": "./src/helpers/esm/toArray.js", - "default": "./src/helpers/toArray.js" - }, - "./src/helpers/toArray.js" - ], - "./helpers/toConsumableArray": [ - { - "node": "./src/helpers/toConsumableArray.js", - "import": "./src/helpers/esm/toConsumableArray.js", - "default": "./src/helpers/toConsumableArray.js" - }, - "./src/helpers/toConsumableArray.js" - ], - "./helpers/toPrimitive": [ - { - "node": "./src/helpers/toPrimitive.js", - "import": "./src/helpers/esm/toPrimitive.js", - "default": "./src/helpers/toPrimitive.js" - }, - "./src/helpers/toPrimitive.js" - ], - "./helpers/toPropertyKey": [ - { - "node": "./src/helpers/toPropertyKey.js", - "import": "./src/helpers/esm/toPropertyKey.js", - "default": "./src/helpers/toPropertyKey.js" - }, - "./src/helpers/toPropertyKey.js" - ], - "./helpers/toSetter": [ - { - "node": "./src/helpers/toSetter.js", - "import": "./src/helpers/esm/toSetter.js", - "default": "./src/helpers/toSetter.js" - }, - "./src/helpers/toSetter.js" - ], - "./helpers/typeof": [ - { - "node": "./src/helpers/typeof.js", - "import": "./src/helpers/esm/typeof.js", - "default": "./src/helpers/typeof.js" - }, - "./src/helpers/typeof.js" - ], - "./helpers/unsupportedIterableToArray": [ - { - "node": "./src/helpers/unsupportedIterableToArray.js", - "import": "./src/helpers/esm/unsupportedIterableToArray.js", - "default": "./src/helpers/unsupportedIterableToArray.js" - }, - "./src/helpers/unsupportedIterableToArray.js" - ], + "./helpers/regeneratorValues": { + "node": "./src/helpers/regeneratorValues.js", + "import": "./src/helpers/esm/regeneratorValues.js", + "default": "./src/helpers/regeneratorValues.js" + }, + "./helpers/set": { + "node": "./src/helpers/set.js", + "import": "./src/helpers/esm/set.js", + "default": "./src/helpers/set.js" + }, + "./helpers/setFunctionName": { + "node": "./src/helpers/setFunctionName.js", + "import": "./src/helpers/esm/setFunctionName.js", + "default": "./src/helpers/setFunctionName.js" + }, + "./helpers/setPrototypeOf": { + "node": "./src/helpers/setPrototypeOf.js", + "import": "./src/helpers/esm/setPrototypeOf.js", + "default": "./src/helpers/setPrototypeOf.js" + }, + "./helpers/skipFirstGeneratorNext": { + "node": "./src/helpers/skipFirstGeneratorNext.js", + "import": "./src/helpers/esm/skipFirstGeneratorNext.js", + "default": "./src/helpers/skipFirstGeneratorNext.js" + }, + "./helpers/slicedToArray": { + "node": "./src/helpers/slicedToArray.js", + "import": "./src/helpers/esm/slicedToArray.js", + "default": "./src/helpers/slicedToArray.js" + }, + "./helpers/superPropBase": { + "node": "./src/helpers/superPropBase.js", + "import": "./src/helpers/esm/superPropBase.js", + "default": "./src/helpers/superPropBase.js" + }, + "./helpers/superPropGet": { + "node": "./src/helpers/superPropGet.js", + "import": "./src/helpers/esm/superPropGet.js", + "default": "./src/helpers/superPropGet.js" + }, + "./helpers/superPropSet": { + "node": "./src/helpers/superPropSet.js", + "import": "./src/helpers/esm/superPropSet.js", + "default": "./src/helpers/superPropSet.js" + }, + "./helpers/taggedTemplateLiteral": { + "node": "./src/helpers/taggedTemplateLiteral.js", + "import": "./src/helpers/esm/taggedTemplateLiteral.js", + "default": "./src/helpers/taggedTemplateLiteral.js" + }, + "./helpers/taggedTemplateLiteralLoose": { + "node": "./src/helpers/taggedTemplateLiteralLoose.js", + "import": "./src/helpers/esm/taggedTemplateLiteralLoose.js", + "default": "./src/helpers/taggedTemplateLiteralLoose.js" + }, + "./helpers/tdz": { + "node": "./src/helpers/tdz.js", + "import": "./src/helpers/esm/tdz.js", + "default": "./src/helpers/tdz.js" + }, + "./helpers/temporalRef": { + "node": "./src/helpers/temporalRef.js", + "import": "./src/helpers/esm/temporalRef.js", + "default": "./src/helpers/temporalRef.js" + }, + "./helpers/temporalUndefined": { + "node": "./src/helpers/temporalUndefined.js", + "import": "./src/helpers/esm/temporalUndefined.js", + "default": "./src/helpers/temporalUndefined.js" + }, + "./helpers/toArray": { + "node": "./src/helpers/toArray.js", + "import": "./src/helpers/esm/toArray.js", + "default": "./src/helpers/toArray.js" + }, + "./helpers/toConsumableArray": { + "node": "./src/helpers/toConsumableArray.js", + "import": "./src/helpers/esm/toConsumableArray.js", + "default": "./src/helpers/toConsumableArray.js" + }, + "./helpers/toPrimitive": { + "node": "./src/helpers/toPrimitive.js", + "import": "./src/helpers/esm/toPrimitive.js", + "default": "./src/helpers/toPrimitive.js" + }, + "./helpers/toPropertyKey": { + "node": "./src/helpers/toPropertyKey.js", + "import": "./src/helpers/esm/toPropertyKey.js", + "default": "./src/helpers/toPropertyKey.js" + }, + "./helpers/toSetter": { + "node": "./src/helpers/toSetter.js", + "import": "./src/helpers/esm/toSetter.js", + "default": "./src/helpers/toSetter.js" + }, + "./helpers/tsRewriteRelativeImportExtensions": { + "node": "./src/helpers/tsRewriteRelativeImportExtensions.js", + "import": "./src/helpers/esm/tsRewriteRelativeImportExtensions.js", + "default": "./src/helpers/tsRewriteRelativeImportExtensions.js" + }, + "./helpers/typeof": { + "node": "./src/helpers/typeof.js", + "import": "./src/helpers/esm/typeof.js", + "default": "./src/helpers/typeof.js" + }, + "./helpers/unsupportedIterableToArray": { + "node": "./src/helpers/unsupportedIterableToArray.js", + "import": "./src/helpers/esm/unsupportedIterableToArray.js", + "default": "./src/helpers/unsupportedIterableToArray.js" + }, "./helpers/using": [ { "node": "./src/helpers/using.js", @@ -1014,49 +813,37 @@ }, "./src/helpers/using.js" ], - "./helpers/usingCtx": [ - { - "node": "./src/helpers/usingCtx.js", - "import": "./src/helpers/esm/usingCtx.js", - "default": "./src/helpers/usingCtx.js" - }, - "./src/helpers/usingCtx.js" - ], - "./helpers/wrapAsyncGenerator": [ - { - "node": "./src/helpers/wrapAsyncGenerator.js", - "import": "./src/helpers/esm/wrapAsyncGenerator.js", - "default": "./src/helpers/wrapAsyncGenerator.js" - }, - "./src/helpers/wrapAsyncGenerator.js" - ], - "./helpers/wrapNativeSuper": [ - { - "node": "./src/helpers/wrapNativeSuper.js", - "import": "./src/helpers/esm/wrapNativeSuper.js", - "default": "./src/helpers/wrapNativeSuper.js" - }, - "./src/helpers/wrapNativeSuper.js" - ], - "./helpers/wrapRegExp": [ - { - "node": "./src/helpers/wrapRegExp.js", - "import": "./src/helpers/esm/wrapRegExp.js", - "default": "./src/helpers/wrapRegExp.js" - }, - "./src/helpers/wrapRegExp.js" - ], - "./helpers/writeOnlyError": [ - { - "node": "./src/helpers/writeOnlyError.js", - "import": "./src/helpers/esm/writeOnlyError.js", - "default": "./src/helpers/writeOnlyError.js" - }, - "./src/helpers/writeOnlyError.js" - ], + "./helpers/usingCtx": { + "node": "./src/helpers/usingCtx.js", + "import": "./src/helpers/esm/usingCtx.js", + "default": "./src/helpers/usingCtx.js" + }, + "./helpers/wrapAsyncGenerator": { + "node": "./src/helpers/wrapAsyncGenerator.js", + "import": "./src/helpers/esm/wrapAsyncGenerator.js", + "default": "./src/helpers/wrapAsyncGenerator.js" + }, + "./helpers/wrapNativeSuper": { + "node": "./src/helpers/wrapNativeSuper.js", + "import": "./src/helpers/esm/wrapNativeSuper.js", + "default": "./src/helpers/wrapNativeSuper.js" + }, + "./helpers/wrapRegExp": { + "node": "./src/helpers/wrapRegExp.js", + "import": "./src/helpers/esm/wrapRegExp.js", + "default": "./src/helpers/wrapRegExp.js" + }, + "./helpers/writeOnlyError": { + "node": "./src/helpers/writeOnlyError.js", + "import": "./src/helpers/esm/writeOnlyError.js", + "default": "./src/helpers/writeOnlyError.js" + }, "./package": "./package.json", "./package.json": "./package.json" }, + "scripts": { + "test": "node --test test/*.test.mjs" + }, "engines": { "node": "^20.19.0 || >=22.12.0" } diff --git a/npm/runtime/scripts/sync.mjs b/npm/runtime/scripts/sync.mjs new file mode 100644 index 0000000000..86765925a2 --- /dev/null +++ b/npm/runtime/scripts/sync.mjs @@ -0,0 +1,126 @@ +import { createHash } from "node:crypto"; +import { readdirSync, readFileSync, writeFileSync, mkdirSync, copyFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; + +const runtimeDir = fileURLToPath(new URL("../", import.meta.url)); +const sourceDir = process.argv[2]; +if (!sourceDir) { + throw new Error("Usage: node scripts/sync.mjs "); +} +const upstreamPackage = JSON.parse(readFileSync(join(sourceDir, "package.json"), "utf8")); +if (upstreamPackage.name !== "@babel/runtime") { + throw new Error("Expected an extracted @babel/runtime package"); +} + +const files = []; +function visit(dir, prefix = "") { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const relative = prefix + entry.name; + if (entry.isDirectory()) { + visit(join(dir, entry.name), `${relative}/`); + } else if (entry.isFile()) { + files.push(relative); + } else { + throw new Error(`Unexpected upstream entry: ${relative}`); + } + } +} +visit(join(sourceDir, "helpers")); +files.sort((a, b) => (a === b ? 0 : a < b ? -1 : 1)); + +const helpersDir = join(runtimeDir, "src/helpers"); +const upstreamHelpers = files.filter((name) => !name.includes("/") && name.endsWith(".js")); +const customHelpers = ["decorate.js", "decorateMetadata.js", "decorateParam.js"]; +const legacyHelpers = readdirSync(helpersDir) + .filter( + (name) => + name.endsWith(".js") && !upstreamHelpers.includes(name) && !customHelpers.includes(name), + ) + .sort(); +const hashes = Object.fromEntries( + files.map((relative) => [ + relative, + createHash("sha256") + .update(readFileSync(join(sourceDir, "helpers", relative))) + .digest("hex"), + ]), +); +const previous = JSON.parse(readFileSync(join(runtimeDir, "upstream.json"), "utf8")); +const { patches } = previous; +for (const [relative, patch] of Object.entries(patches)) { + if (hashes[relative] !== previous.files[relative]) { + throw new Error(`Review the local patch for changed upstream helper ${relative}`); + } + const contents = readFileSync(join(helpersDir, relative)); + if (createHash("sha256").update(contents).digest("hex") !== patch.sha256) { + throw new Error(`Unrecorded local changes to patched helper ${relative}`); + } +} +for (const relative of files) { + if (Object.hasOwn(patches, relative)) continue; + const target = join(helpersDir, relative); + mkdirSync(dirname(target), { recursive: true }); + copyFileSync(join(sourceDir, "helpers", relative), target); +} +copyFileSync(join(sourceDir, "LICENSE"), join(runtimeDir, "LICENSE")); + +const packagePath = join(runtimeDir, "package.json"); +const localPackage = JSON.parse(readFileSync(packagePath, "utf8")); +const mapTargets = (value, localValue) => { + if (typeof value === "string") return value.replace(/^\.\/helpers\//, "./src/helpers/"); + if (Array.isArray(value)) { + return value.map((target, index) => + mapTargets(target, Array.isArray(localValue) ? localValue[index] : localValue), + ); + } + // Older exports wrap their conditions in a fallback array. Keep Oxc's + // condition precedence even when upstream removes that wrapper. + if (Array.isArray(localValue)) localValue = localValue[0]; + const keys = Object.keys(value); + const localKeys = localValue && typeof localValue === "object" ? Object.keys(localValue) : []; + const orderedKeys = [ + ...localKeys.filter((key) => key !== "default" && Object.hasOwn(value, key)), + ...keys.filter((key) => key !== "default" && !localKeys.includes(key)), + ...keys.filter((key) => key === "default"), + ]; + return Object.fromEntries( + orderedKeys.map((key) => [key, mapTargets(value[key], localValue?.[key])]), + ); +}; +const exports = mapTargets(upstreamPackage.exports, localPackage.exports); +for (const [key, value] of Object.entries(localPackage.exports)) { + if (!(key in exports)) exports[key] = value; +} +for (const filename of upstreamHelpers) { + const name = filename.slice(0, -3); + exports[`./helpers/esm/${name}`] = `./src/helpers/esm/${filename}`; +} +localPackage.sideEffects = upstreamPackage.sideEffects; +localPackage.exports = Object.fromEntries( + Object.entries(exports).sort(([a], [b]) => a.localeCompare(b, "en")), +); +writeFileSync(packagePath, `${JSON.stringify(localPackage, null, 2)}\n`); + +writeFileSync( + join(runtimeDir, "upstream.json"), + `${JSON.stringify( + { + name: upstreamPackage.name, + version: upstreamPackage.version, + files: hashes, + internalHelpers: upstreamHelpers.filter( + (name) => !("./helpers/" + name.slice(0, -3) in upstreamPackage.exports), + ), + patches, + customHelpers, + legacyHelpers, + }, + null, + 2, + )}\n`, +); +// oxlint-disable-next-line no-console +console.log( + `Copied @babel/runtime@${upstreamPackage.version}: ${upstreamHelpers.length} helper pairs; retained ${legacyHelpers.length} legacy and ${customHelpers.length} TypeScript helpers.`, +); diff --git a/npm/runtime/src/helpers/applyDecs2311.js b/npm/runtime/src/helpers/applyDecs2311.js index 5f00a31135..5c7ed77184 100644 --- a/npm/runtime/src/helpers/applyDecs2311.js +++ b/npm/runtime/src/helpers/applyDecs2311.js @@ -54,7 +54,7 @@ function applyDecs2311(e, t, n, r, o, i) { t[4](this, e); } } : P[F] = v, l || setFunctionName(P[F], r, E ? "" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { - if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet"); + if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet"); y[+s][r] = o < 3 ? 1 : o; } } diff --git a/npm/runtime/src/helpers/arrayWithHoles.js b/npm/runtime/src/helpers/arrayWithHoles.js index 78bdd93199..68428dedff 100644 --- a/npm/runtime/src/helpers/arrayWithHoles.js +++ b/npm/runtime/src/helpers/arrayWithHoles.js @@ -1,4 +1,5 @@ function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; + var t; + if (Array.isArray(r) && ("undefined" == typeof Symbol || (t = r[Symbol.iterator]) === [][Symbol.iterator]) && (t || !(t = r["@@iterator"]) || t === []["@@iterator"])) return r; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/createForOfIteratorHelper.js b/npm/runtime/src/helpers/createForOfIteratorHelper.js index 277830792a..dd41cde3e8 100644 --- a/npm/runtime/src/helpers/createForOfIteratorHelper.js +++ b/npm/runtime/src/helpers/createForOfIteratorHelper.js @@ -25,24 +25,30 @@ function _createForOfIteratorHelper(r, e) { throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, - a = !0, - u = !1; + a, + u = !0; return { s: function s() { t = t.call(r); }, n: function n() { + u = !0; var r = t.next(); - return a = r.done, r; + return r.done ? { + done: !0 + } : { + value: r.value, + done: u = !1 + }; }, e: function e(r) { - u = !0, o = r; + o = !0, a = r; }, f: function f() { try { - a || null == t["return"] || t["return"](); + u || null == t["return"] || t["return"](); } finally { - if (u) throw o; + if (o) throw a; } } }; diff --git a/npm/runtime/src/helpers/esm/applyDecs2311.js b/npm/runtime/src/helpers/esm/applyDecs2311.js index 41b2c4848f..ab8c0fd51e 100644 --- a/npm/runtime/src/helpers/esm/applyDecs2311.js +++ b/npm/runtime/src/helpers/esm/applyDecs2311.js @@ -54,7 +54,7 @@ function applyDecs2311(e, t, n, r, o, i) { t[4](this, e); } } : P[F] = v, l || setFunctionName(P[F], r, E ? "" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { - if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet"); + if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet"); y[+s][r] = o < 3 ? 1 : o; } } diff --git a/npm/runtime/src/helpers/esm/arrayWithHoles.js b/npm/runtime/src/helpers/esm/arrayWithHoles.js index 99fa715408..94b03cce66 100644 --- a/npm/runtime/src/helpers/esm/arrayWithHoles.js +++ b/npm/runtime/src/helpers/esm/arrayWithHoles.js @@ -1,4 +1,5 @@ function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; + var t; + if (Array.isArray(r) && ("undefined" == typeof Symbol || (t = r[Symbol.iterator]) === [][Symbol.iterator]) && (t || !(t = r["@@iterator"]) || t === []["@@iterator"])) return r; } export { _arrayWithHoles as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/createForOfIteratorHelper.js b/npm/runtime/src/helpers/esm/createForOfIteratorHelper.js index 93b97f9151..5b0a663dc2 100644 --- a/npm/runtime/src/helpers/esm/createForOfIteratorHelper.js +++ b/npm/runtime/src/helpers/esm/createForOfIteratorHelper.js @@ -25,24 +25,30 @@ function _createForOfIteratorHelper(r, e) { throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, - a = !0, - u = !1; + a, + u = !0; return { s: function s() { t = t.call(r); }, n: function n() { + u = !0; var r = t.next(); - return a = r.done, r; + return r.done ? { + done: !0 + } : { + value: r.value, + done: u = !1 + }; }, e: function e(r) { - u = !0, o = r; + o = !0, a = r; }, f: function f() { try { - a || null == t["return"] || t["return"](); + u || null == t["return"] || t["return"](); } finally { - if (u) throw o; + if (o) throw a; } } }; diff --git a/npm/runtime/src/helpers/esm/interopRequireWildcard.js b/npm/runtime/src/helpers/esm/interopRequireWildcard.js index e190f1e2e0..98fc3331ce 100644 --- a/npm/runtime/src/helpers/esm/interopRequireWildcard.js +++ b/npm/runtime/src/helpers/esm/interopRequireWildcard.js @@ -1,27 +1,19 @@ -import _typeof from "./typeof.js"; -function _getRequireWildcardCache(e) { - if ("function" != typeof WeakMap) return null; - var r = new WeakMap(), - t = new WeakMap(); - return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { - return e ? t : r; - })(e); -} -function _interopRequireWildcard(e, r) { - if (!r && e && e.__esModule) return e; - if (null === e || "object" != _typeof(e) && "function" != typeof e) return { - "default": e - }; - var t = _getRequireWildcardCache(r); - if (t && t.has(e)) return t.get(e); - var n = { - __proto__: null - }, - a = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { - var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; - i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; +var cache; +function _interopRequireWildcard(e, t) { + if (!t && e && e.__esModule) return e; + var r, + c, + a = Object.defineProperty, + n = { + __proto__: null, + "default": e + }; + if (Object(e) !== e) return n; + if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { + if (cache.has(e)) return cache.get(e); + cache.set(e, n); } - return n["default"] = e, t && t.set(e, n), n; + for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); + return n; } export { _interopRequireWildcard as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/iterableToArray.js b/npm/runtime/src/helpers/esm/iterableToArray.js index b7de3396ab..07d8a6f076 100644 --- a/npm/runtime/src/helpers/esm/iterableToArray.js +++ b/npm/runtime/src/helpers/esm/iterableToArray.js @@ -1,4 +1,9 @@ function _iterableToArray(r) { - if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + var e = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (Array.isArray(r) && (null == e || e === ("undefined" != typeof Symbol && [][Symbol.iterator]) || e === []["@@iterator"])) return r; + if (null != e) { + for (var t, o = [], a = e.call(r); !(t = a.next()).done;) o.push(t.value); + return o; + } } export { _iterableToArray as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/iterableToArrayLimit.js b/npm/runtime/src/helpers/esm/iterableToArrayLimit.js index 473f067819..0bad59e9b6 100644 --- a/npm/runtime/src/helpers/esm/iterableToArrayLimit.js +++ b/npm/runtime/src/helpers/esm/iterableToArrayLimit.js @@ -1,28 +1,29 @@ -function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, +function _iterableToArrayLimit(r, t) { + var e = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (Array.isArray(r) && (null == e || e === ("undefined" != typeof Symbol && [][Symbol.iterator]) || e === []["@@iterator"])) return r; + if (null != e) { + var l, n, i, - u, - a = [], - f = !0, - o = !1; + a, + u = [], + o = !0, + f = !1; try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + if (i = (e = e.call(r)).next, 0 === t) { + if (Object(e) !== e) return; + o = !1; + } else for (; !(o = (l = i.call(e)).done) && (u.push(l.value), u.length !== t); o = !0); } catch (r) { - o = !0, n = r; + f = !0, n = r; } finally { try { - if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + if (!o && null != e["return"] && (a = e["return"](), Object(a) !== a)) return; } finally { - if (o) throw n; + if (f) throw n; } } - return a; + return u; } } export { _iterableToArrayLimit as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/objectWithoutProperties.js b/npm/runtime/src/helpers/esm/objectWithoutProperties.js index c5e7cf21ec..598fb9ade6 100644 --- a/npm/runtime/src/helpers/esm/objectWithoutProperties.js +++ b/npm/runtime/src/helpers/esm/objectWithoutProperties.js @@ -5,8 +5,8 @@ function _objectWithoutProperties(e, t) { r, i = objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { - var s = Object.getOwnPropertySymbols(e); - for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); + var n = Object.getOwnPropertySymbols(e); + for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } diff --git a/npm/runtime/src/helpers/esm/objectWithoutPropertiesLoose.js b/npm/runtime/src/helpers/esm/objectWithoutPropertiesLoose.js index b203b438a0..90f68f3ddd 100644 --- a/npm/runtime/src/helpers/esm/objectWithoutPropertiesLoose.js +++ b/npm/runtime/src/helpers/esm/objectWithoutPropertiesLoose.js @@ -2,7 +2,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { - if (e.includes(n)) continue; + if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; diff --git a/npm/runtime/src/helpers/esm/regenerator.js b/npm/runtime/src/helpers/esm/regenerator.js new file mode 100644 index 0000000000..6f2f2a17df --- /dev/null +++ b/npm/runtime/src/helpers/esm/regenerator.js @@ -0,0 +1,89 @@ +import regeneratorDefine from "./regeneratorDefine.js"; +function _regenerator() { + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ + var e, + t, + r = "function" == typeof Symbol ? Symbol : {}, + n = r.iterator || "@@iterator", + o = r.toStringTag || "@@toStringTag"; + function i(r, n, o, i) { + var c = n && n.prototype instanceof Generator ? n : Generator, + u = Object.create(c.prototype); + return regeneratorDefine(u, "_invoke", function (r, n, o) { + var i, + c, + u, + f = 0, + p = o || [], + y = !1, + G = { + p: 0, + n: 0, + v: e, + a: d, + f: d.bind(e, 4), + d: function d(t, r) { + return i = t, c = 0, u = e, G.n = r, a; + } + }; + function d(r, n) { + for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { + var o, + i = p[t], + d = G.p, + l = i[2]; + r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); + } + if (o || r > 1) return a; + throw y = !0, n; + } + return function (o, p, l) { + if (f > 1) throw TypeError("Generator is already running"); + for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { + i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); + try { + if (f = 2, i) { + if (c || (o = "next"), t = i[o]) { + if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u = t.value, c < 2 && (c = 0); + } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); + i = e; + } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; + } catch (t) { + i = e, c = 1, u = t; + } finally { + f = 1; + } + } + return { + value: t, + done: y + }; + }; + }(r, o, i), !0), u; + } + var a = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () { + return this; + }), t), + u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () { + return this; + }), regeneratorDefine(u, "toString", function () { + return "[object Generator]"; + }), (_regenerator = function _regenerator() { + return { + w: i, + m: f + }; + })(); +} +export { _regenerator as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/regeneratorAsync.js b/npm/runtime/src/helpers/esm/regeneratorAsync.js new file mode 100644 index 0000000000..f73d4e65c1 --- /dev/null +++ b/npm/runtime/src/helpers/esm/regeneratorAsync.js @@ -0,0 +1,8 @@ +import regeneratorAsyncGen from "./regeneratorAsyncGen.js"; +function _regeneratorAsync(n, e, r, t, o) { + var a = regeneratorAsyncGen(n, e, r, t, o); + return a.next().then(function (n) { + return n.done ? n.value : a.next(); + }); +} +export { _regeneratorAsync as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/regeneratorAsyncGen.js b/npm/runtime/src/helpers/esm/regeneratorAsyncGen.js new file mode 100644 index 0000000000..1932bcde40 --- /dev/null +++ b/npm/runtime/src/helpers/esm/regeneratorAsyncGen.js @@ -0,0 +1,6 @@ +import regenerator from "./regenerator.js"; +import regeneratorAsyncIterator from "./regeneratorAsyncIterator.js"; +function _regeneratorAsyncGen(r, e, t, o, n) { + return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise); +} +export { _regeneratorAsyncGen as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/regeneratorAsyncIterator.js b/npm/runtime/src/helpers/esm/regeneratorAsyncIterator.js new file mode 100644 index 0000000000..90d84cc70f --- /dev/null +++ b/npm/runtime/src/helpers/esm/regeneratorAsyncIterator.js @@ -0,0 +1,33 @@ +import OverloadYield from "./OverloadYield.js"; +import regeneratorDefine from "./regeneratorDefine.js"; +function AsyncIterator(t, e) { + function n(r, o, i, f) { + try { + var c = t[r](o), + u = c.value; + return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) { + n("next", t, i, f); + }, function (t) { + n("throw", t, i, f); + }) : e.resolve(u).then(function (t) { + c.value = t, i(c); + }, function (t) { + return n("throw", t, i, f); + }); + } catch (t) { + f(t); + } + } + var r; + this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { + return this; + })), regeneratorDefine(this, "_invoke", function (t, o, i) { + function f() { + return new e(function (e, r) { + n(t, i, e, r); + }); + } + return r = r ? r.then(f, f) : f(); + }, !0); +} +export { AsyncIterator as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/regeneratorDefine.js b/npm/runtime/src/helpers/esm/regeneratorDefine.js new file mode 100644 index 0000000000..71404706d2 --- /dev/null +++ b/npm/runtime/src/helpers/esm/regeneratorDefine.js @@ -0,0 +1,22 @@ +function _regeneratorDefine(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e) { + i = 0; + } + _regeneratorDefine = function regeneratorDefine(e, r, n, t) { + function o(r, n) { + _regeneratorDefine(e, r, function (e) { + return this._invoke(r, n, e); + }); + } + r ? i ? i(e, r, { + value: n, + enumerable: !t, + configurable: !t, + writable: !t + }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine(e, r, n, t); +} +export { _regeneratorDefine as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/regeneratorKeys.js b/npm/runtime/src/helpers/esm/regeneratorKeys.js new file mode 100644 index 0000000000..5d0d48ba81 --- /dev/null +++ b/npm/runtime/src/helpers/esm/regeneratorKeys.js @@ -0,0 +1,10 @@ +function _regeneratorKeys(e) { + var n = Object(e), + r = []; + for (var t in n) r.unshift(t); + return function e() { + for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; + return e.done = !0, e; + }; +} +export { _regeneratorKeys as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/regeneratorValues.js b/npm/runtime/src/helpers/esm/regeneratorValues.js new file mode 100644 index 0000000000..99968525d9 --- /dev/null +++ b/npm/runtime/src/helpers/esm/regeneratorValues.js @@ -0,0 +1,19 @@ +import _typeof from "./typeof.js"; +function _regeneratorValues(e) { + if (null != e) { + var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], + r = 0; + if (t) return t.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) return { + next: function next() { + return e && r >= e.length && (e = void 0), { + value: e && e[r++], + done: !e + }; + } + }; + } + throw new TypeError(_typeof(e) + " is not iterable"); +} +export { _regeneratorValues as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/slicedToArray.js b/npm/runtime/src/helpers/esm/slicedToArray.js index c044c2a6ae..0046015411 100644 --- a/npm/runtime/src/helpers/esm/slicedToArray.js +++ b/npm/runtime/src/helpers/esm/slicedToArray.js @@ -1,8 +1,7 @@ -import arrayWithHoles from "./arrayWithHoles.js"; import iterableToArrayLimit from "./iterableToArrayLimit.js"; import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; import nonIterableRest from "./nonIterableRest.js"; function _slicedToArray(r, e) { - return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); + return iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); } export { _slicedToArray as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/toArray.js b/npm/runtime/src/helpers/esm/toArray.js index e5f0f52a56..813f5d5936 100644 --- a/npm/runtime/src/helpers/esm/toArray.js +++ b/npm/runtime/src/helpers/esm/toArray.js @@ -1,8 +1,7 @@ -import arrayWithHoles from "./arrayWithHoles.js"; import iterableToArray from "./iterableToArray.js"; import unsupportedIterableToArray from "./unsupportedIterableToArray.js"; import nonIterableRest from "./nonIterableRest.js"; function _toArray(r) { - return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest(); + return iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest(); } export { _toArray as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/toPrimitive.js b/npm/runtime/src/helpers/esm/toPrimitive.js index 9a3de46b53..6a1fabac23 100644 --- a/npm/runtime/src/helpers/esm/toPrimitive.js +++ b/npm/runtime/src/helpers/esm/toPrimitive.js @@ -1,12 +1,12 @@ import _typeof from "./typeof.js"; -function toPrimitive(t, r) { +function toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; - var e = t[Symbol.toPrimitive]; - if (void 0 !== e) { - var i = e.call(t, r || "default"); + var r; + if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { + var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return ("string" === e ? String : Number)(t); } export { toPrimitive as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/tsRewriteRelativeImportExtensions.js b/npm/runtime/src/helpers/esm/tsRewriteRelativeImportExtensions.js new file mode 100644 index 0000000000..28ffc0b9f4 --- /dev/null +++ b/npm/runtime/src/helpers/esm/tsRewriteRelativeImportExtensions.js @@ -0,0 +1,6 @@ +function tsRewriteRelativeImportExtensions(t, e) { + return "string" == typeof t && /^\.\.?\//.test(t) ? t.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+)?)\.([cm]?)ts$/i, function (t, s, r, n, o) { + return s ? e ? ".jsx" : ".js" : !r || n && o ? r + n + "." + o.toLowerCase() + "js" : t; + }) : t; +} +export { tsRewriteRelativeImportExtensions as default }; \ No newline at end of file diff --git a/npm/runtime/src/helpers/esm/wrapAsyncGenerator.js b/npm/runtime/src/helpers/esm/wrapAsyncGenerator.js index ffeea5d9ce..7957d617c9 100644 --- a/npm/runtime/src/helpers/esm/wrapAsyncGenerator.js +++ b/npm/runtime/src/helpers/esm/wrapAsyncGenerator.js @@ -5,55 +5,42 @@ function _wrapAsyncGenerator(e) { }; } function AsyncGenerator(e) { - var r, t; - function resume(r, t) { + var t, n; + function resume(t, n) { try { - var n = e[r](t), - o = n.value, + var r = e[t](n), + o = r.value, u = o instanceof OverloadYield; - Promise.resolve(u ? o.v : o).then(function (t) { + Promise.resolve(u ? o.v : o).then(function (n) { if (u) { - var i = "return" === r ? "return" : "next"; - if (!o.k || t.done) return resume(i, t); - t = e[i](t).value; + var i = "return" === t && o.k ? t : "next"; + if (!o.k || n.done) return resume(i, n); + n = e[i](n).value; } - settle(n.done ? "return" : "normal", t); + settle(!!r.done, n); }, function (e) { resume("throw", e); }); } catch (e) { - settle("throw", e); + settle(2, e); } } - function settle(e, n) { - switch (e) { - case "return": - r.resolve({ - value: n, - done: !0 - }); - break; - case "throw": - r.reject(n); - break; - default: - r.resolve({ - value: n, - done: !1 - }); - } - (r = r.next) ? resume(r.key, r.arg) : t = null; + function settle(e, r) { + 2 === e ? t.reject(r) : t.resolve({ + value: r, + done: e + }), (t = t.next) ? resume(t.key, t.arg) : n = null; } - this._invoke = function (e, n) { + this._invoke = function (e, r) { return new Promise(function (o, u) { var i = { key: e, - arg: n, + arg: r, resolve: o, reject: u, next: null }; - t ? t = t.next = i : (r = t = i, resume(e, n)); + n ? n = n.next = i : (t = n = i, resume(e, r)); }); }, "function" != typeof e["return"] && (this["return"] = void 0); } diff --git a/npm/runtime/src/helpers/esm/wrapRegExp.js b/npm/runtime/src/helpers/esm/wrapRegExp.js index ecf821e7db..c455faa408 100644 --- a/npm/runtime/src/helpers/esm/wrapRegExp.js +++ b/npm/runtime/src/helpers/esm/wrapRegExp.js @@ -33,9 +33,10 @@ function _wrapRegExp() { }, BabelRegExp.prototype[Symbol.replace] = function (t, p) { if ("string" == typeof p) { var o = r.get(this); - return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) { - var t = o[r]; - return "$" + (Array.isArray(t) ? t.join("$") : t); + return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)(>|$)/g, function (e, r, t) { + if ("" === t) return e; + var p = o[r]; + return Array.isArray(p) ? "$" + p.join("$") : "number" == typeof p ? "$" + p : ""; })); } if ("function" == typeof p) { diff --git a/npm/runtime/src/helpers/interopRequireWildcard.js b/npm/runtime/src/helpers/interopRequireWildcard.js index 41411cc307..af555ef008 100644 --- a/npm/runtime/src/helpers/interopRequireWildcard.js +++ b/npm/runtime/src/helpers/interopRequireWildcard.js @@ -1,27 +1,19 @@ -var _typeof = require("./typeof.js")["default"]; -function _getRequireWildcardCache(e) { - if ("function" != typeof WeakMap) return null; - var r = new WeakMap(), - t = new WeakMap(); - return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { - return e ? t : r; - })(e); -} -function _interopRequireWildcard(e, r) { - if (!r && e && e.__esModule) return e; - if (null === e || "object" != _typeof(e) && "function" != typeof e) return { - "default": e - }; - var t = _getRequireWildcardCache(r); - if (t && t.has(e)) return t.get(e); - var n = { - __proto__: null - }, - a = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { - var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; - i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; +var cache; +function _interopRequireWildcard(e, t) { + if (!t && e && e.__esModule) return e; + var r, + c, + a = Object.defineProperty, + n = { + __proto__: null, + "default": e + }; + if (Object(e) !== e) return n; + if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { + if (cache.has(e)) return cache.get(e); + cache.set(e, n); } - return n["default"] = e, t && t.set(e, n), n; + for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); + return n; } module.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/iterableToArray.js b/npm/runtime/src/helpers/iterableToArray.js index c839a32164..9d74355876 100644 --- a/npm/runtime/src/helpers/iterableToArray.js +++ b/npm/runtime/src/helpers/iterableToArray.js @@ -1,4 +1,9 @@ function _iterableToArray(r) { - if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + var e = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (Array.isArray(r) && (null == e || e === ("undefined" != typeof Symbol && [][Symbol.iterator]) || e === []["@@iterator"])) return r; + if (null != e) { + for (var t, o = [], a = e.call(r); !(t = a.next()).done;) o.push(t.value); + return o; + } } module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/iterableToArrayLimit.js b/npm/runtime/src/helpers/iterableToArrayLimit.js index 2671778bfb..4fb714c65a 100644 --- a/npm/runtime/src/helpers/iterableToArrayLimit.js +++ b/npm/runtime/src/helpers/iterableToArrayLimit.js @@ -1,28 +1,29 @@ -function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, +function _iterableToArrayLimit(r, t) { + var e = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (Array.isArray(r) && (null == e || e === ("undefined" != typeof Symbol && [][Symbol.iterator]) || e === []["@@iterator"])) return r; + if (null != e) { + var l, n, i, - u, - a = [], - f = !0, - o = !1; + a, + u = [], + o = !0, + f = !1; try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + if (i = (e = e.call(r)).next, 0 === t) { + if (Object(e) !== e) return; + o = !1; + } else for (; !(o = (l = i.call(e)).done) && (u.push(l.value), u.length !== t); o = !0); } catch (r) { - o = !0, n = r; + f = !0, n = r; } finally { try { - if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + if (!o && null != e["return"] && (a = e["return"](), Object(a) !== a)) return; } finally { - if (o) throw n; + if (f) throw n; } } - return a; + return u; } } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/objectWithoutProperties.js b/npm/runtime/src/helpers/objectWithoutProperties.js index 6482b9868a..3a40f9e4e6 100644 --- a/npm/runtime/src/helpers/objectWithoutProperties.js +++ b/npm/runtime/src/helpers/objectWithoutProperties.js @@ -5,8 +5,8 @@ function _objectWithoutProperties(e, t) { r, i = objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { - var s = Object.getOwnPropertySymbols(e); - for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); + var n = Object.getOwnPropertySymbols(e); + for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } diff --git a/npm/runtime/src/helpers/objectWithoutPropertiesLoose.js b/npm/runtime/src/helpers/objectWithoutPropertiesLoose.js index 2465e3b92f..c243acdff0 100644 --- a/npm/runtime/src/helpers/objectWithoutPropertiesLoose.js +++ b/npm/runtime/src/helpers/objectWithoutPropertiesLoose.js @@ -2,7 +2,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { - if (e.includes(n)) continue; + if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; diff --git a/npm/runtime/src/helpers/regenerator.js b/npm/runtime/src/helpers/regenerator.js new file mode 100644 index 0000000000..0cf8710aae --- /dev/null +++ b/npm/runtime/src/helpers/regenerator.js @@ -0,0 +1,89 @@ +var regeneratorDefine = require("./regeneratorDefine.js"); +function _regenerator() { + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ + var e, + t, + r = "function" == typeof Symbol ? Symbol : {}, + n = r.iterator || "@@iterator", + o = r.toStringTag || "@@toStringTag"; + function i(r, n, o, i) { + var c = n && n.prototype instanceof Generator ? n : Generator, + u = Object.create(c.prototype); + return regeneratorDefine(u, "_invoke", function (r, n, o) { + var i, + c, + u, + f = 0, + p = o || [], + y = !1, + G = { + p: 0, + n: 0, + v: e, + a: d, + f: d.bind(e, 4), + d: function d(t, r) { + return i = t, c = 0, u = e, G.n = r, a; + } + }; + function d(r, n) { + for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { + var o, + i = p[t], + d = G.p, + l = i[2]; + r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); + } + if (o || r > 1) return a; + throw y = !0, n; + } + return function (o, p, l) { + if (f > 1) throw TypeError("Generator is already running"); + for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { + i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); + try { + if (f = 2, i) { + if (c || (o = "next"), t = i[o]) { + if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u = t.value, c < 2 && (c = 0); + } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); + i = e; + } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; + } catch (t) { + i = e, c = 1, u = t; + } finally { + f = 1; + } + } + return { + value: t, + done: y + }; + }; + }(r, o, i), !0), u; + } + var a = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () { + return this; + }), t), + u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () { + return this; + }), regeneratorDefine(u, "toString", function () { + return "[object Generator]"; + }), (module.exports = _regenerator = function _regenerator() { + return { + w: i, + m: f + }; + }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); +} +module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/regeneratorAsync.js b/npm/runtime/src/helpers/regeneratorAsync.js new file mode 100644 index 0000000000..d1e4c3f99e --- /dev/null +++ b/npm/runtime/src/helpers/regeneratorAsync.js @@ -0,0 +1,8 @@ +var regeneratorAsyncGen = require("./regeneratorAsyncGen.js"); +function _regeneratorAsync(n, e, r, t, o) { + var a = regeneratorAsyncGen(n, e, r, t, o); + return a.next().then(function (n) { + return n.done ? n.value : a.next(); + }); +} +module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/regeneratorAsyncGen.js b/npm/runtime/src/helpers/regeneratorAsyncGen.js new file mode 100644 index 0000000000..f0212e3243 --- /dev/null +++ b/npm/runtime/src/helpers/regeneratorAsyncGen.js @@ -0,0 +1,6 @@ +var regenerator = require("./regenerator.js"); +var regeneratorAsyncIterator = require("./regeneratorAsyncIterator.js"); +function _regeneratorAsyncGen(r, e, t, o, n) { + return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise); +} +module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/regeneratorAsyncIterator.js b/npm/runtime/src/helpers/regeneratorAsyncIterator.js new file mode 100644 index 0000000000..afcb0601a2 --- /dev/null +++ b/npm/runtime/src/helpers/regeneratorAsyncIterator.js @@ -0,0 +1,33 @@ +var OverloadYield = require("./OverloadYield.js"); +var regeneratorDefine = require("./regeneratorDefine.js"); +function AsyncIterator(t, e) { + function n(r, o, i, f) { + try { + var c = t[r](o), + u = c.value; + return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) { + n("next", t, i, f); + }, function (t) { + n("throw", t, i, f); + }) : e.resolve(u).then(function (t) { + c.value = t, i(c); + }, function (t) { + return n("throw", t, i, f); + }); + } catch (t) { + f(t); + } + } + var r; + this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { + return this; + })), regeneratorDefine(this, "_invoke", function (t, o, i) { + function f() { + return new e(function (e, r) { + n(t, i, e, r); + }); + } + return r = r ? r.then(f, f) : f(); + }, !0); +} +module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/regeneratorDefine.js b/npm/runtime/src/helpers/regeneratorDefine.js new file mode 100644 index 0000000000..8d7ffe0997 --- /dev/null +++ b/npm/runtime/src/helpers/regeneratorDefine.js @@ -0,0 +1,22 @@ +function _regeneratorDefine(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e) { + i = 0; + } + module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) { + function o(r, n) { + _regeneratorDefine(e, r, function (e) { + return this._invoke(r, n, e); + }); + } + r ? i ? i(e, r, { + value: n, + enumerable: !t, + configurable: !t, + writable: !t + }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t); +} +module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/regeneratorKeys.js b/npm/runtime/src/helpers/regeneratorKeys.js new file mode 100644 index 0000000000..99442bddbf --- /dev/null +++ b/npm/runtime/src/helpers/regeneratorKeys.js @@ -0,0 +1,10 @@ +function _regeneratorKeys(e) { + var n = Object(e), + r = []; + for (var t in n) r.unshift(t); + return function e() { + for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; + return e.done = !0, e; + }; +} +module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/regeneratorValues.js b/npm/runtime/src/helpers/regeneratorValues.js new file mode 100644 index 0000000000..1335a23d5b --- /dev/null +++ b/npm/runtime/src/helpers/regeneratorValues.js @@ -0,0 +1,19 @@ +var _typeof = require("./typeof.js")["default"]; +function _regeneratorValues(e) { + if (null != e) { + var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], + r = 0; + if (t) return t.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) return { + next: function next() { + return e && r >= e.length && (e = void 0), { + value: e && e[r++], + done: !e + }; + } + }; + } + throw new TypeError(_typeof(e) + " is not iterable"); +} +module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/slicedToArray.js b/npm/runtime/src/helpers/slicedToArray.js index 3d752c4251..633e555c31 100644 --- a/npm/runtime/src/helpers/slicedToArray.js +++ b/npm/runtime/src/helpers/slicedToArray.js @@ -1,8 +1,7 @@ -var arrayWithHoles = require("./arrayWithHoles.js"); var iterableToArrayLimit = require("./iterableToArrayLimit.js"); var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); var nonIterableRest = require("./nonIterableRest.js"); function _slicedToArray(r, e) { - return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); + return iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/toArray.js b/npm/runtime/src/helpers/toArray.js index 2be1d2bd70..4cc33a914b 100644 --- a/npm/runtime/src/helpers/toArray.js +++ b/npm/runtime/src/helpers/toArray.js @@ -1,8 +1,7 @@ -var arrayWithHoles = require("./arrayWithHoles.js"); var iterableToArray = require("./iterableToArray.js"); var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); var nonIterableRest = require("./nonIterableRest.js"); function _toArray(r) { - return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest(); + return iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest(); } module.exports = _toArray, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/toPrimitive.js b/npm/runtime/src/helpers/toPrimitive.js index ef9d249b5c..1d345ab9bb 100644 --- a/npm/runtime/src/helpers/toPrimitive.js +++ b/npm/runtime/src/helpers/toPrimitive.js @@ -1,12 +1,12 @@ var _typeof = require("./typeof.js")["default"]; -function toPrimitive(t, r) { +function toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; - var e = t[Symbol.toPrimitive]; - if (void 0 !== e) { - var i = e.call(t, r || "default"); + var r; + if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { + var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } - return ("string" === r ? String : Number)(t); + return ("string" === e ? String : Number)(t); } module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/tsRewriteRelativeImportExtensions.js b/npm/runtime/src/helpers/tsRewriteRelativeImportExtensions.js new file mode 100644 index 0000000000..4de0e4de81 --- /dev/null +++ b/npm/runtime/src/helpers/tsRewriteRelativeImportExtensions.js @@ -0,0 +1,6 @@ +function tsRewriteRelativeImportExtensions(t, e) { + return "string" == typeof t && /^\.\.?\//.test(t) ? t.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+)?)\.([cm]?)ts$/i, function (t, s, r, n, o) { + return s ? e ? ".jsx" : ".js" : !r || n && o ? r + n + "." + o.toLowerCase() + "js" : t; + }) : t; +} +module.exports = tsRewriteRelativeImportExtensions, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/src/helpers/wrapAsyncGenerator.js b/npm/runtime/src/helpers/wrapAsyncGenerator.js index b818e2e4a0..a3d32d7f13 100644 --- a/npm/runtime/src/helpers/wrapAsyncGenerator.js +++ b/npm/runtime/src/helpers/wrapAsyncGenerator.js @@ -5,55 +5,42 @@ function _wrapAsyncGenerator(e) { }; } function AsyncGenerator(e) { - var r, t; - function resume(r, t) { + var t, n; + function resume(t, n) { try { - var n = e[r](t), - o = n.value, + var r = e[t](n), + o = r.value, u = o instanceof OverloadYield; - Promise.resolve(u ? o.v : o).then(function (t) { + Promise.resolve(u ? o.v : o).then(function (n) { if (u) { - var i = "return" === r ? "return" : "next"; - if (!o.k || t.done) return resume(i, t); - t = e[i](t).value; + var i = "return" === t && o.k ? t : "next"; + if (!o.k || n.done) return resume(i, n); + n = e[i](n).value; } - settle(n.done ? "return" : "normal", t); + settle(!!r.done, n); }, function (e) { resume("throw", e); }); } catch (e) { - settle("throw", e); + settle(2, e); } } - function settle(e, n) { - switch (e) { - case "return": - r.resolve({ - value: n, - done: !0 - }); - break; - case "throw": - r.reject(n); - break; - default: - r.resolve({ - value: n, - done: !1 - }); - } - (r = r.next) ? resume(r.key, r.arg) : t = null; + function settle(e, r) { + 2 === e ? t.reject(r) : t.resolve({ + value: r, + done: e + }), (t = t.next) ? resume(t.key, t.arg) : n = null; } - this._invoke = function (e, n) { + this._invoke = function (e, r) { return new Promise(function (o, u) { var i = { key: e, - arg: n, + arg: r, resolve: o, reject: u, next: null }; - t ? t = t.next = i : (r = t = i, resume(e, n)); + n ? n = n.next = i : (t = n = i, resume(e, r)); }); }, "function" != typeof e["return"] && (this["return"] = void 0); } diff --git a/npm/runtime/src/helpers/wrapRegExp.js b/npm/runtime/src/helpers/wrapRegExp.js index c527168801..3d6e6ce5ec 100644 --- a/npm/runtime/src/helpers/wrapRegExp.js +++ b/npm/runtime/src/helpers/wrapRegExp.js @@ -33,9 +33,10 @@ function _wrapRegExp() { }, BabelRegExp.prototype[Symbol.replace] = function (t, p) { if ("string" == typeof p) { var o = r.get(this); - return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) { - var t = o[r]; - return "$" + (Array.isArray(t) ? t.join("$") : t); + return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)(>|$)/g, function (e, r, t) { + if ("" === t) return e; + var p = o[r]; + return Array.isArray(p) ? "$" + p.join("$") : "number" == typeof p ? "$" + p : ""; })); } if ("function" == typeof p) { diff --git a/npm/runtime/test/fixtures/upstream/esm/setFunctionName.js b/npm/runtime/test/fixtures/upstream/esm/setFunctionName.js new file mode 100644 index 0000000000..82213cea5a --- /dev/null +++ b/npm/runtime/test/fixtures/upstream/esm/setFunctionName.js @@ -0,0 +1,12 @@ +import _typeof from "./typeof.js"; +function setFunctionName(e, t, n) { + "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : ""); + try { + Object.defineProperty(e, "name", { + configurable: !0, + value: n ? n + " " + t : t + }); + } catch (e) {} + return e; +} +export { setFunctionName as default }; \ No newline at end of file diff --git a/npm/runtime/test/fixtures/upstream/setFunctionName.js b/npm/runtime/test/fixtures/upstream/setFunctionName.js new file mode 100644 index 0000000000..9664076a86 --- /dev/null +++ b/npm/runtime/test/fixtures/upstream/setFunctionName.js @@ -0,0 +1,12 @@ +var _typeof = require("./typeof.js")["default"]; +function setFunctionName(e, t, n) { + "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : ""); + try { + Object.defineProperty(e, "name", { + configurable: !0, + value: n ? n + " " + t : t + }); + } catch (e) {} + return e; +} +module.exports = setFunctionName, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/npm/runtime/test/runtime.test.mjs b/npm/runtime/test/runtime.test.mjs new file mode 100644 index 0000000000..22128e9dcf --- /dev/null +++ b/npm/runtime/test/runtime.test.mjs @@ -0,0 +1,374 @@ +import assert from "node:assert/strict"; +import { createHash } from "node:crypto"; +import { readdirSync, readFileSync } from "node:fs"; +import { createRequire } from "node:module"; +import { test } from "node:test"; +import { runInNewContext } from "node:vm"; + +const require = createRequire(import.meta.url); +const { exports: packageExports } = JSON.parse( + readFileSync(new URL("../package.json", import.meta.url), "utf8"), +); +const upstream = JSON.parse(readFileSync(new URL("../upstream.json", import.meta.url), "utf8")); + +test("vendored helpers match the upstream manifest and documented patches", () => { + const helperDir = new URL("../src/helpers/", import.meta.url); + for (const [path, hash] of Object.entries(upstream.files)) { + const contents = readFileSync(new URL(path, helperDir)); + const expected = upstream.patches[path]?.sha256 ?? hash; + assert.equal(createHash("sha256").update(contents).digest("hex"), expected, path); + if (!path.includes("/") && path.endsWith(".js")) { + const name = path.slice(0, -3); + const expectedExport = upstream.internalHelpers.includes(path) + ? undefined + : { + node: `./src/helpers/${path}`, + import: `./src/helpers/esm/${path}`, + default: `./src/helpers/${path}`, + }; + assert.deepEqual(packageExports[`./helpers/${name}`], expectedExport); + assert.equal(packageExports[`./helpers/esm/${name}`], `./src/helpers/esm/${path}`); + } + } + const expectedFiles = [ + ...Object.keys(upstream.files), + ...[...upstream.customHelpers, ...upstream.legacyHelpers].flatMap((name) => [ + name, + `esm/${name}`, + ]), + ].sort(); + assert.deepEqual( + readdirSync(helperDir, { recursive: true }) + .filter((name) => /\.(js|json)$/.test(name)) + .sort(), + expectedFiles, + ); + assert.equal( + packageExports["./helpers/tsRewriteRelativeImportExtensions"].import, + "./src/helpers/esm/tsRewriteRelativeImportExtensions.js", + ); +}); + +const helperNames = Object.keys(packageExports) + .filter((name) => name.startsWith("./helpers/") && !name.startsWith("./helpers/esm/")) + .map((name) => name.slice("./helpers/".length)); + +test("all helper exports load in CommonJS and ESM", async () => { + await Promise.all( + helperNames.map(async (name) => { + const specifier = `@oxc-project/runtime/helpers/${name}`; + const commonjs = require(specifier); + assert.equal(typeof commonjs, "function", specifier); + assert.equal(commonjs.default, commonjs, specifier); + assert.equal((await import(specifier)).default, commonjs, specifier); + }), + ); + await Promise.all( + Object.keys(packageExports) + .filter((name) => name.startsWith("./helpers/esm/")) + .map(async (name) => { + const specifier = `@oxc-project/runtime/${name.slice(2)}`; + assert.equal(typeof (await import(specifier)).default, "function", specifier); + }), + ); +}); + +for (const mode of ["commonjs", "esm"]) { + const load = async (name) => + mode === "commonjs" + ? require(`@oxc-project/runtime/helpers/${name}`) + : (await import(`@oxc-project/runtime/helpers/esm/${name}`)).default; + + test(`${mode}: object rest works without Array.prototype.includes`, async () => { + const objectWithoutProperties = await load("objectWithoutProperties"); + const objectWithoutPropertiesLoose = await load("objectWithoutPropertiesLoose"); + const excluded = runInNewContext("Array.prototype.includes = undefined; ['excluded']"); + const symbol = Symbol("kept"); + const source = Object.assign(Object.create({ inherited: 0 }), { + excluded: 1, + kept: 2, + [symbol]: 3, + }); + Object.defineProperty(source, "hidden", { value: 4 }); + assert.deepEqual(objectWithoutProperties(source, excluded), { kept: 2, [symbol]: 3 }); + assert.deepEqual(objectWithoutPropertiesLoose(source, excluded), { kept: 2 }); + assert.deepEqual(objectWithoutProperties(source, ["excluded", symbol]), { kept: 2 }); + }); + + test(`${mode}: async-from-sync throw calls throw instead of return`, async () => { + const asyncIterator = await load("asyncIterator"); + const calls = []; + const error = new Error("injected"); + const iterable = { + [Symbol.iterator]() { + return this; + }, + next() { + return { value: 1, done: false }; + }, + throw(value) { + calls.push(["throw", value]); + return { value: Promise.resolve("recovered"), done: false }; + }, + return(value) { + calls.push(["return", value]); + return { value, done: true }; + }, + }; + const iterator = asyncIterator(iterable); + assert.deepEqual(await iterator.throw(error), { value: "recovered", done: false }); + assert.deepEqual(await iterator.return("finished"), { value: "finished", done: true }); + assert.deepEqual(calls, [ + ["throw", error], + ["return", "finished"], + ]); + }); + + test(`${mode}: returning through finally awaits preserves cleanup yields`, async () => { + const wrapAsyncGenerator = await load("wrapAsyncGenerator"); + const awaitAsyncGenerator = await load("awaitAsyncGenerator"); + const transformed = wrapAsyncGenerator(function* () { + try { + yield "body"; + } finally { + yield awaitAsyncGenerator(Promise.resolve()); + yield "cleanup"; + } + }); + async function* native() { + try { + yield "body"; + } finally { + await Promise.resolve(); + yield "cleanup"; + } + } + const actual = transformed(); + const expected = native(); + assert.deepEqual(await actual.next(), await expected.next()); + const result = await actual.return("finished"); + assert.deepEqual(result, await expected.return("finished")); + assert.deepEqual(result, { value: "cleanup", done: false }); + assert.deepEqual(await actual.next(), await expected.next()); + }); + + test(`${mode}: async generators serialize queued next, throw and return requests`, async () => { + const wrapAsyncGenerator = await load("wrapAsyncGenerator"); + const awaitAsyncGenerator = await load("awaitAsyncGenerator"); + const transformed = wrapAsyncGenerator(function* () { + try { + yield yield awaitAsyncGenerator(Promise.resolve("first")); + } catch (error) { + yield error.message; + } + return "done"; + }); + async function* native() { + try { + yield await Promise.resolve("first"); + } catch (error) { + yield error.message; + } + return "done"; + } + const requests = (iterator) => [ + iterator.next(), + iterator.throw(new Error("injected")), + iterator.next(), + iterator.return("finished"), + ]; + assert.deepEqual( + await Promise.all(requests(transformed())), + await Promise.all(requests(native())), + ); + }); + + test(`${mode}: return during async delegation completes the iterator`, async () => { + const wrapAsyncGenerator = await load("wrapAsyncGenerator"); + const asyncGeneratorDelegate = await load("asyncGeneratorDelegate"); + const asyncIterator = await load("asyncIterator"); + const transformed = wrapAsyncGenerator(function* () { + return yield* asyncGeneratorDelegate(asyncIterator(["body", "unused"])); + }); + async function* native() { + return yield* ["body", "unused"]; + } + const actual = transformed(); + const expected = native(); + assert.deepEqual(await actual.next(), await expected.next()); + assert.deepEqual(await actual.return("finished"), await expected.return("finished")); + assert.deepEqual(await actual.next(), await expected.next()); + }); + + test(`${mode}: property keys work without Symbol`, async () => { + const toPropertyKey = await load("toPropertyKey"); + const originalSymbol = globalThis.Symbol; + let actual; + try { + globalThis.Symbol = undefined; + actual = toPropertyKey({ toString: () => "key" }); + } finally { + globalThis.Symbol = originalSymbol; + } + assert.equal(actual, "key"); + }); + + test(`${mode}: function names match native computed methods`, async () => { + const setFunctionName = await load("setFunctionName"); + for (const key of ["method", Symbol(), Symbol(""), Symbol("method")]) { + const expected = { [key]() {} }[key].name; + assert.equal(setFunctionName(function () {}, key).name, expected); + assert.equal(setFunctionName(function () {}, key, "get").name, `get ${expected}`); + } + }); + + test(`${mode}: array destructuring respects custom iterators and closes early`, async () => { + const arrayWithHoles = await load("arrayWithHoles"); + const toArray = await load("toArray"); + const slicedToArray = await load("slicedToArray"); + const events = []; + const source = ["array value"]; + source[Symbol.iterator] = function* () { + try { + yield "iterator value"; + yield "second"; + } finally { + events.push("closed"); + } + }; + assert.equal(arrayWithHoles(source), undefined); + assert.deepEqual(toArray(source), ["iterator value", "second"]); + assert.deepEqual(slicedToArray(source, 1), ["iterator value"]); + assert.deepEqual(events, ["closed", "closed"]); + const legacyIterable = { "@@iterator": source[Symbol.iterator] }; + assert.deepEqual(toArray(legacyIterable), ["iterator value", "second"]); + }); + + test(`${mode}: for-of does not close an iterator when reading its value throws`, async () => { + const createForOfIteratorHelper = await load("createForOfIteratorHelper"); + const error = new Error("value getter"); + const events = []; + const iterable = { + [Symbol.iterator]() { + return { + next() { + return { + done: false, + get value() { + throw error; + }, + }; + }, + return() { + events.push("closed"); + return { done: true }; + }, + }; + }, + }; + const native = () => { + for (const value of iterable) void value; + }; + const transformed = () => { + const iterator = createForOfIteratorHelper(iterable); + try { + iterator.s(); + for (let step; !(step = iterator.n()).done;) void step.value; + } catch (error) { + iterator.e(error); + } finally { + iterator.f(); + } + }; + assert.throws(native, (thrown) => thrown === error); + assert.deepEqual(events, []); + assert.throws(transformed, (thrown) => thrown === error); + assert.deepEqual(events, []); + }); + + test(`${mode}: named regexp replacements match native behavior`, async () => { + const wrapRegExp = await load("wrapRegExp"); + for (const replacement of ["$", "$", "$/$"]) { + const actual = "a".replace(wrapRegExp(/(a)/, { named: 1 }), replacement); + assert.equal(actual, "a".replace(/(?a)/, replacement)); + } + }); + + test(`${mode}: namespace interop preserves accessors, default and identity`, async () => { + const interopRequireWildcard = await load("interopRequireWildcard"); + let value = 1; + const source = { + get named() { + return value; + }, + }; + const namespace = interopRequireWildcard(source); + assert.equal(Object.getPrototypeOf(namespace), null); + assert.equal(namespace.default, source); + assert.equal(namespace.named, 1); + value = 2; + assert.equal(namespace.named, 2); + assert.equal(interopRequireWildcard(source), namespace); + assert.equal(interopRequireWildcard(null).default, null); + const esModule = { __esModule: true, default: "default" }; + assert.equal(interopRequireWildcard(esModule), esModule); + assert.equal(interopRequireWildcard(esModule, true).default, esModule); + }); + + test(`${mode}: new regenerator helpers execute lowered generators and async functions`, async () => { + const regenerator = await load("regenerator"); + const regeneratorAsync = await load("regeneratorAsync"); + const regeneratorAsyncGen = await load("regeneratorAsyncGen"); + const OverloadYield = await load("OverloadYield"); + function body(context) { + if (context.n === 0) { + context.n = 1; + return "yielded"; + } + return context.a(2, "finished"); + } + const iterator = regenerator().w(body); + assert.deepEqual(iterator.next(), { value: "yielded", done: false }); + assert.deepEqual(iterator.next(), { value: "finished", done: true }); + assert.deepEqual(await regeneratorAsyncGen(body).next(), { value: "yielded", done: false }); + const value = await regeneratorAsync((context) => { + if (context.n === 0) { + context.n = 1; + return new OverloadYield(Promise.resolve(42), 0); + } + return context.a(2, context.v); + }); + assert.equal(value, 42); + }); + + test(`${mode}: relative TypeScript import extensions are rewritten`, async () => { + const rewrite = await load("tsRewriteRelativeImportExtensions"); + for (const [input, expected] of [ + ["./module.ts", "./module.js"], + ["../module.mts", "../module.mjs"], + ["./module.cts", "./module.cjs"], + ["./view.tsx", "./view.js"], + ["./module.d.ts", "./module.d.ts"], + ["package/module.ts", "package/module.ts"], + ]) { + assert.equal(rewrite(input), expected); + } + assert.equal(rewrite("./view.tsx", true), "./view.jsx"); + }); + + test(`${mode}: TypeScript legacy decorator helpers keep their calling convention`, async () => { + const decorate = await load("decorate"); + const decorateParam = await load("decorateParam"); + const decorateMetadata = await load("decorateMetadata"); + const calls = []; + class Target { + method(value) { + return value; + } + } + decorate([decorateParam(0, (...args) => calls.push(args))], Target.prototype, "method", null); + assert.deepEqual(calls, [[Target.prototype, "method", 0]]); + assert.equal(new Target().method("value"), "value"); + assert.equal(decorateMetadata("design:type", Function), undefined); + }); +} diff --git a/npm/runtime/test/sync.test.mjs b/npm/runtime/test/sync.test.mjs new file mode 100644 index 0000000000..4fa6393f7b --- /dev/null +++ b/npm/runtime/test/sync.test.mjs @@ -0,0 +1,136 @@ +import assert from "node:assert/strict"; +import { spawnSync } from "node:child_process"; +import { createHash } from "node:crypto"; +import { + appendFileSync, + cpSync, + mkdirSync, + mkdtempSync, + readdirSync, + readFileSync, + rmSync, + writeFileSync, +} from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { test } from "node:test"; +import { fileURLToPath } from "node:url"; + +const runtimeDir = fileURLToPath(new URL("../", import.meta.url)); + +function setup(t) { + const temporary = mkdtempSync(join(tmpdir(), "oxc-runtime-sync-")); + t.after(() => rmSync(temporary, { recursive: true, force: true })); + const runtime = join(temporary, "runtime"); + const upstream = join(temporary, "upstream"); + mkdirSync(runtime); + mkdirSync(upstream); + for (const entry of ["src", "scripts", "package.json", "upstream.json", "LICENSE"]) { + cpSync(join(runtimeDir, entry), join(runtime, entry), { recursive: true }); + } + const manifest = JSON.parse(readFileSync(join(runtime, "upstream.json"), "utf8")); + for (const [relative, hash] of Object.entries(manifest.files)) { + const source = Object.hasOwn(manifest.patches, relative) + ? join(runtimeDir, "test/fixtures/upstream", relative) + : join(runtime, "src/helpers", relative); + const contents = readFileSync(source); + assert.equal(createHash("sha256").update(contents).digest("hex"), hash, relative); + const target = join(upstream, "helpers", relative); + mkdirSync(join(target, ".."), { recursive: true }); + writeFileSync(target, contents); + } + // The published package has no Oxc compatibility aliases or legacy helpers. + const localPackage = JSON.parse(readFileSync(join(runtime, "package.json"), "utf8")); + const exports = {}; + for (const relative of Object.keys(manifest.files)) { + if (relative.includes("/") || !relative.endsWith(".js")) continue; + if (manifest.internalHelpers.includes(relative)) continue; + exports[`./helpers/${relative.slice(0, -3)}`] = { + node: `./helpers/${relative}`, + import: `./helpers/esm/${relative}`, + default: `./helpers/${relative}`, + }; + } + exports["./package.json"] = "./package.json"; + writeFileSync( + join(upstream, "package.json"), + JSON.stringify({ + name: manifest.name, + version: manifest.version, + sideEffects: localPackage.sideEffects, + exports, + }), + ); + cpSync(join(runtime, "LICENSE"), join(upstream, "LICENSE")); + return { runtime, upstream }; +} + +function snapshot(directory) { + return Object.fromEntries( + readdirSync(directory, { recursive: true, withFileTypes: true }) + .filter((entry) => entry.isFile()) + .map((entry) => { + const file = join(entry.parentPath, entry.name); + return [file, createHash("sha256").update(readFileSync(file)).digest("hex")]; + }), + ); +} + +function sync({ runtime, upstream }) { + return spawnSync(process.execPath, [join(runtime, "scripts/sync.mjs"), upstream], { + encoding: "utf8", + }); +} + +test("sync preserves every byte on the first and second runs", (t) => { + const fixture = setup(t); + const before = snapshot(fixture.runtime); + for (let run = 0; run < 2; run++) { + const result = sync(fixture); + assert.equal(result.status, 0, result.stderr); + assert.deepEqual(snapshot(fixture.runtime), before); + } +}); + +test("sync preserves local import-first precedence across upstream export shapes", (t) => { + const fixture = setup(t); + const packagePath = join(fixture.runtime, "package.json"); + const packageJson = JSON.parse(readFileSync(packagePath, "utf8")); + for (const name of ["asyncToGenerator", "wrapAsyncGenerator"]) { + const key = `./helpers/${name}`; + const { import: esm, ...conditions } = packageJson.exports[key]; + const reordered = { import: esm, ...conditions }; + packageJson.exports[key] = + name === "wrapAsyncGenerator" ? [reordered, conditions.default] : reordered; + } + writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`); + for (let run = 0; run < 2; run++) { + const result = sync(fixture); + assert.equal(result.status, 0, result.stderr); + const updated = JSON.parse(readFileSync(packagePath, "utf8")); + for (const name of ["asyncToGenerator", "wrapAsyncGenerator"]) { + assert.deepEqual(Object.keys(updated.exports[`./helpers/${name}`]), [ + "import", + "node", + "default", + ]); + } + } +}); + +for (const location of ["runtime", "upstream"]) { + test(`sync refuses ${location} patch drift before writing`, (t) => { + const fixture = setup(t); + const relative = + location === "runtime" ? "src/helpers/setFunctionName.js" : "helpers/setFunctionName.js"; + appendFileSync(join(fixture[location], relative), "\n// drift\n"); + const before = snapshot(fixture.runtime); + const result = sync(fixture); + assert.notEqual(result.status, 0); + assert.match( + result.stderr, + location === "runtime" ? /Unrecorded local changes/ : /Review the local patch/, + ); + assert.deepEqual(snapshot(fixture.runtime), before); + }); +} diff --git a/npm/runtime/upstream.json b/npm/runtime/upstream.json new file mode 100644 index 0000000000..2f974253a4 --- /dev/null +++ b/npm/runtime/upstream.json @@ -0,0 +1,244 @@ +{ + "name": "@babel/runtime", + "version": "8.0.8", + "files": { + "OverloadYield.js": "8ab017ee0bae00606411a16f05d0fc944f29f106c456204c04ec71c0840a65aa", + "applyDecoratedDescriptor.js": "fe5eb3d066d0b62e17b5a9bc2b1c66580a49384804a43df43beec3a896e0374f", + "applyDecs2311.js": "6c3e894d618248b8336ffe6d5309e2f9e208399f4a0b09f38a79e66ebf9cb2db", + "arrayLikeToArray.js": "66115a7e135e20013756c8d42417a75ee0c9661e28225799afca147b5cd2b2c2", + "arrayWithHoles.js": "0441ddfefed42f1c87b23a4756965fa9c2b92f99136bca9ad7f647a2a4fa8ca3", + "arrayWithoutHoles.js": "64e62cd80b014ccac0a6a80c4a5491cda93c1e8ac4939495c46c4f9148961d97", + "assertClassBrand.js": "324d905ff65749f030aa51e64bb44ac419788784e5b21c4fe6b5afc2f87073f7", + "assertThisInitialized.js": "ddf6869fae6b77624b830ea0c845270ec29a30f7101ef7e8c55cbf159b02cbda", + "asyncGeneratorDelegate.js": "0f1dee5046c34167adfaa64e6b74a038a5a7ce52ab70618041f401bd6a07367c", + "asyncIterator.js": "504f8a1080f57d0e3fa3d7f619d9482f1e1409791269346c924bfca02f842dc1", + "asyncToGenerator.js": "23bf630572b377b79e5967342fc78fc5da98a071664834a133776105acbf9628", + "awaitAsyncGenerator.js": "651e53d0cf539543696c3e7cd5379c0cddac5e991ef8350b4a3fcd73349282ed", + "callSuper.js": "08b9e8329c408e5f63723e3651b90708d43f36340ae225253b23d3e04d0abc67", + "checkInRHS.js": "4f974bcc06ea55463f9ec5047aa0a433cd5852f1a3c55e251f17b5c0752bd50d", + "checkPrivateRedeclaration.js": "6b18e1c33b3802dd33b0b016cb08f6fb29cf4c6763ce2da8e76d314905d6c734", + "classCallCheck.js": "eabde6853895dfeabcf074d5b7e15dd6e98db5c4630aa613f28f275e14f82696", + "classNameTDZError.js": "f81261185919395477559945a9e9ec94501f34030fe99a2ad720245dc55d8840", + "classPrivateFieldGet2.js": "d8f684f770ba68d56a3120c28c57d5845a1f31bb55ac48d8ab7c60b2f5b1680c", + "classPrivateFieldInitSpec.js": "cb9db0b2d4acdda40353df890e42fad5995b05ac49f401708841479d4dfd436f", + "classPrivateFieldLooseBase.js": "bfd8709446e7f4af9ea490295d0b2d9ad1afd8078e7c982a288012fe87f50afd", + "classPrivateFieldLooseKey.js": "fc1b58d3b0f66994e7becdbff39488c6eea45ffece7f77de1c147791e2282c40", + "classPrivateFieldSet2.js": "e7a561a95e504a91a6b6dea58d19f6bbfd7e8057ea921421a22539b34daff9cd", + "classPrivateGetter.js": "3fe694449f64a0e64adf7719115dcaef5c8732adfe9e299effd4dec882988b07", + "classPrivateMethodInitSpec.js": "c00ac0a90ceb62eb776003f0f955ea63d08286d2216857019f9d71c0d334f766", + "classPrivateSetter.js": "772f63f2d944100fa18595906cbd7b3ccfe6694ac89c7a221a6abbc9f8296962", + "classStaticPrivateMethodGet.js": "3b21e3b5bcfc32d3c8a83a3d0ffb96fc1d2110f1027803e0be7d534f97b29ac1", + "construct.js": "3de8bdf232ce0f399e96e3b9eb92773a7cba2e1066d79c115cc2824a28a820ff", + "createClass.js": "7f4adab899691023e9258fbce06396f664d7e01d502f6f8dba6c5162c0f40cb6", + "createForOfIteratorHelper.js": "c07a28d67621b224b6a40aaabb7ff73ad2b711722daa45ab3a15c7857420c9bf", + "createForOfIteratorHelperLoose.js": "09303ca8b641a942e0ff7e01a7c7a03d8711d436c736c7b87249eeff28012c81", + "createSuper.js": "3f698179b95e6ff2b58c0f6bb12928a23c29269a73c52c2972f805d66c8f646b", + "defaults.js": "455bba4fb8fcaad8b2a12f6b61de1394fd752dc901677490bb269c7247accbad", + "defineAccessor.js": "1c21eba167db0b9c931459f15f676cbc740d4426794e5c14360aa9d83ad20d19", + "defineProperty.js": "48dad9673bf7c258e4cdf0557aecb0b86aa861952026f644c25745475471a78f", + "esm/OverloadYield.js": "b686297ad422278e9220a0ad6ec67aed6636fababe99915789df6ada8f07c8ec", + "esm/applyDecoratedDescriptor.js": "c58a64452644ce14af0e60ac58d8b5251163ccb8ad3dc660253b8984b15cccfd", + "esm/applyDecs2311.js": "8e38f5602e3c35e61d65b5f1ae36ffec2626fedeacb73a434a9c55915701880b", + "esm/arrayLikeToArray.js": "5669c99de0a48fc0e401e283f2e2d14c6950a6def2ddb5aee3b861e9de022418", + "esm/arrayWithHoles.js": "ba6c7dcccae3b281ec9f8df444ecea6681df86b7b6a36830a3589aa4b92a6213", + "esm/arrayWithoutHoles.js": "73cb0a59ed5ef5e6bc33df18e911c382787eaf823b0e7bb1cb9f99b3bac3abff", + "esm/assertClassBrand.js": "80feab8dfd9b894611adfca2c90fba0e8879a16f7f3de3e19176831b7b70313f", + "esm/assertThisInitialized.js": "85506493fdfd36684abe5e193716c06f9e2a3d4de49713fc8ff83de59dabb471", + "esm/asyncGeneratorDelegate.js": "724135defc01b6b5cb27c974734b753f54d2320a428fbeb22f0d2798a7ace6e5", + "esm/asyncIterator.js": "c079c2a0e0ef019550b241029f81c723cf8d2bb8c01b6b65b7007625d3cc8b23", + "esm/asyncToGenerator.js": "d08e6edc7ad01f1116fcbfbd11da76fd9ca700fc17b6e2d1067d16f55564fde3", + "esm/awaitAsyncGenerator.js": "4672e443ec70ee5ff3950cf9f3ede0699bae5a216b297a71202fa2852c405f1f", + "esm/callSuper.js": "83a4b2a8ac09ea2957cf07fbda20f4dd02fad04267a409ec60829224b9c44a9f", + "esm/checkInRHS.js": "c02f507c1016ee027e2a25ec6ee927125c44d8906304d7d4d45c948b03c30da6", + "esm/checkPrivateRedeclaration.js": "c5b2a2e8d4bd53fda1a8ea4baf6f5d8edde0cf40bf86dd47ac006f148ebe17f2", + "esm/classCallCheck.js": "94da74af6bb85de33395865d6e7bc7fcd24d6dd2d380c020130714dbd6545d11", + "esm/classNameTDZError.js": "db28070bc42fb1d20bf288e4687e616b7830cdbc68994d71837018f546b05134", + "esm/classPrivateFieldGet2.js": "61e0195fc193565c6d474be67562f8e287809a4cff44179ad9e75021748aefd1", + "esm/classPrivateFieldInitSpec.js": "ffd41b6f69947eff92008641d0d3ed6942bcb801e7af44f598f27e37b7058974", + "esm/classPrivateFieldLooseBase.js": "1aa0b03b2a6449cf46e324ec76c03c464a180a29985fdc249b3a84b3d42d8b6e", + "esm/classPrivateFieldLooseKey.js": "7d520a99064de1b7b6df3c3819b7e6da1b12fd6c52056abc7af2f06e55ed7a08", + "esm/classPrivateFieldSet2.js": "782404917446aa6aecd28756ef89464f7534bddefce6204bdb4dbb7099e56777", + "esm/classPrivateGetter.js": "f792e8d912486e77a09a291661fd5dc70ccb16b07ba6af6926389a1eeedefcc7", + "esm/classPrivateMethodInitSpec.js": "97c536910f9629a4cdf824174639553c2211e04a8520435bc420136bcd0a37e8", + "esm/classPrivateSetter.js": "4e2097d114287d50661ee52f34cd73801fb4ff8b073db17dfbddeac50ed39638", + "esm/classStaticPrivateMethodGet.js": "2664bbf91c181df66a29ae2d3fe7552d3c128aa5a88e1ffdb9b5bab506805313", + "esm/construct.js": "f5471572e3cf192416acf683fefa5cfd49745843c2a094ef6174a2d9b755478a", + "esm/createClass.js": "51e47ab207222aac2efa5b31b193377055afbb394960493d210a4329b959ef14", + "esm/createForOfIteratorHelper.js": "32a397c120b35e292a436023a4b88477d9912bcf1df088212e0ac4f4fb663991", + "esm/createForOfIteratorHelperLoose.js": "baaf36eb3643cf209eabc36a1db217fb50b5d627f377bf12ff5d1a5b8a558c6d", + "esm/createSuper.js": "3d2f099943676e8703a6a987f0d91ed4452268dbf9fb3986ab9b8da3e8e3a5f7", + "esm/defaults.js": "71b2713c331c9f4ea8626e48ebbcdfa646acc8a5224faaa13d1788334149926b", + "esm/defineAccessor.js": "8ea454037989188c78a45e607be66f602e03ebc8fc610cb5082826ba66d19fbe", + "esm/defineProperty.js": "2bad7c96ee851cf2cfe1320a54fd88dd5f769a7faf8bd92d60c9f2e6d1e381dd", + "esm/extends.js": "94d2689b0907907fbb08bae35e63abb07b35ebec5cdfd06ec9bdd8db3f611f1c", + "esm/get.js": "52fa043e570d4c5f5ab3e4e9abaa5bdf2da2964499864c083e510df424fe04f2", + "esm/getPrototypeOf.js": "de5206113c370a04dbfd6ca7ccb8f3abc1dc935f8dbffc9369442c248c423a59", + "esm/identity.js": "7b97c15cc0155b9d082441b85dbe2e696fcb6f4c95d8185a1244a064d8d2c393", + "esm/importDeferProxy.js": "84fd77803e2177ede08d45abad6fd7e5ca8d0c3f5295a98df24b27ada99a4501", + "esm/inherits.js": "19081820a48ddbf209d022c5addd2abd405534076956a2ca719dc40710f25256", + "esm/inheritsLoose.js": "5aea593f414f20584b0ecc02d2b74eb696315382cf220022f41b85d79fb38fc5", + "esm/initializerDefineProperty.js": "a25565b8d3887cda17feffee4d964ed7728f654cef0017ad9c5c417c2fa78c76", + "esm/initializerWarningHelper.js": "64e545e8aca944108eb29a8d5cfeaf71e9adc6b66f55454f72897a9c67aacaa3", + "esm/instanceof.js": "5027f8bc786d82d36ae15bd25c22e99fb34b4257b749e987287ce9293987ef8b", + "esm/interopRequireDefault.js": "2264bbeafa0d7a01a60c136cf2c6a34be4af655cb85347da1d1aaec6ea002cc2", + "esm/interopRequireWildcard.js": "d785de9ed804cb6e62bfce1bbe0a12a422fa90adc5be9699fc188828950e2edb", + "esm/isNativeFunction.js": "8525f66a9bc851ef78b33b7d173a2bfdb5d3feec3dabd86b6fe223d4bbd97132", + "esm/isNativeReflectConstruct.js": "adf1ef3f74c033ccf3c074f9f72f0ff361b63677a8ae5979f55d0eb665278fce", + "esm/iterableToArray.js": "8a561d68fbfe1d06000b368329c8d62f18a57739a2cf6a37e475e530cbd540c4", + "esm/iterableToArrayLimit.js": "7bce7e992691a74487ad9c4794e71618ccb06fc772c5b57ad8d4390dee208eb5", + "esm/jsx.js": "44d0bc59c8e56fd304e779529cf54bb5494ae6544386c30e5118c8d02c550032", + "esm/maybeArrayLike.js": "67b4bd1f723f0421b3c7716d1ea73597266d83d0bbeddecacab05c021fe9bac9", + "esm/newArrowCheck.js": "e260deb8285e046d957d82acbadb195cbc72d4cfcebdc87415766acee89ae9e7", + "esm/nonIterableRest.js": "c6107ade34a6ef9b5eea0c189fb87377d32faae61df50fdbc973aa4210e0efe8", + "esm/nonIterableSpread.js": "bc91b16fd6053abf81cb8157a0eec5b0e221d577967ce20c05d24dacaebf3198", + "esm/nullishReceiverError.js": "96d168c4ffe91ef08616f0483a758789e1e5297c0b32c110ae5d96cd7f87ca6d", + "esm/objectDestructuringEmpty.js": "ef63d7dddb682004121c4157c332ce99b2011feaf7a1e88548b5f9ee685641a4", + "esm/objectSpread2.js": "d03a134abca2a223a82172030d7d79a4b779ab3ee7df91391fb62cad74586284", + "esm/objectWithoutProperties.js": "2fe3f649882208db45a72e6d4d33da53e46ed2106393e04c82a708bf8c63f716", + "esm/objectWithoutPropertiesLoose.js": "7ec48646adf76d3a2bbea809b7e0134337b7e5f20fe2169cbac65cc3cea13987", + "esm/package.json": "d2aaf324399446516b42d82624be18adcd6465fddf100b7ba79f57323f63da52", + "esm/possibleConstructorReturn.js": "edd9a4fa1e7c21c8fe8d3fdd80b827f1c24013aa27a9510d1f5cb76c3234440f", + "esm/readOnlyError.js": "19d6d09b2c5e5eca9735b88ac98054b897facc98914f8a335e000c9d961f6908", + "esm/regenerator.js": "690dbd216d5ed6302d1939cd23354b0820ad515379c0330835555d2c6ccc75d3", + "esm/regeneratorAsync.js": "cc6bfa343120e4e2c9592734af85124c13dfc7f36027c073eb74acfb04026bc0", + "esm/regeneratorAsyncGen.js": "54d14d21897ef14a779a770dc9f62edc41d9942ebc2b6e3c5771bd3329417d99", + "esm/regeneratorAsyncIterator.js": "c10c97392084948eccf65542097d6255a70023b5d1fb7f82f51ba10bbb3ecad8", + "esm/regeneratorDefine.js": "6d0a0ba348a5043e99295c723c358b33ecd575d9897d7f2c9fcc719237a9510e", + "esm/regeneratorKeys.js": "fc44a607ef896661f061a18ef91503b338225a45e24d16480a75fe0d1c1db433", + "esm/regeneratorValues.js": "c28c0320eae73c4b8564d4190711f14847b369366267163450ce861a0a51749a", + "esm/set.js": "ebc8a1c0d40dc4d1efd962ae1275ba8afc63e0ca15da4cff2660327d40015c08", + "esm/setFunctionName.js": "3458ae55299b56229bd7019bf4e8fe46895efbb074ab7aceac45586796d38197", + "esm/setPrototypeOf.js": "64c1bb95352488d8fc880366ca56c490a5089e93983f05668a987255c6fac5c2", + "esm/skipFirstGeneratorNext.js": "2e2a2a513ec97c6641d7bbe6ec79429d1ccf45dc1e514b0cc1e4b43791c0d606", + "esm/slicedToArray.js": "20e997c21d52938ad4ac32e20ad66f27875f5e5d92dd7c86d13b3606c6e0b939", + "esm/superPropBase.js": "6b7ad5b3b15f4791df8a98c6cf4e96426eb035ced3854ebc5b6f9ec8787cf96b", + "esm/superPropGet.js": "184a930af11b5d325a89ac49469a293576d3d9dde73edf94f40637ec054755e9", + "esm/superPropSet.js": "65c1262e6c603390e32449a5e63cd8fde9769bd99f1db3c73a68afa9854d3e0c", + "esm/taggedTemplateLiteral.js": "d864eeab7be4da36f84ddd48dce94d7f6ecbd85115fe38b1ff2011d6e8a969fc", + "esm/taggedTemplateLiteralLoose.js": "f8462cde63b0203a68a285c28faf6ad000459d286bfa56f67af0718a62f5e5f1", + "esm/tdz.js": "9bf9a29b1f5189d5ecdb04c578a8d74e15068bfd6ab8cffbbee86fdcaefde324", + "esm/temporalRef.js": "26a14fd4f0713c9140f80eb65d0d53ac495d9a66cd112a9c25b9915a17113805", + "esm/temporalUndefined.js": "440144746ce1674ce5e23418f4822c4da8cec46dda93ad74fcfe9e8a065417bb", + "esm/toArray.js": "44a6fc3e2e24071de2ab8c4d686641cd943173d835d14d55c649bcaa36baac4f", + "esm/toConsumableArray.js": "ff1928bda21e1132644062577b74e074c7980536a3998af2608790ece7cd0c1f", + "esm/toPrimitive.js": "76e21cf10d872318c2da87c378a935dab0668c9604eaaad03cea689f7acc7f50", + "esm/toPropertyKey.js": "7f0000acc9c9cf7594b412095be66cdc59066b25458a16fe1434fd00cff478e7", + "esm/toSetter.js": "69d7768b9b1b5c8e97b3f4f58c463a430c00be37215958c8d04211494778e9bb", + "esm/tsRewriteRelativeImportExtensions.js": "a80d3854c0d05128053d24edb0f1f0acc368738b3a8451a9d355ee91b5aadfad", + "esm/typeof.js": "928bcbbdf74fe24ed7486e7f982c4389c1859886b3ed904ebd2677f22193b57a", + "esm/unsupportedIterableToArray.js": "79f0945f9659ff15a3b81b92f70c6e8eb00c5830087a044c6b1ba5e6dde6c3ad", + "esm/usingCtx.js": "638141c6ff255fd00c4a1f7c1e0d2b15431d60954c3f963e152d604cfe27bc26", + "esm/wrapAsyncGenerator.js": "f6ded0235945c0a0deb1be6f48e68d99e89ce4901d9dba97a4b15d5018174b82", + "esm/wrapNativeSuper.js": "35956f6a9f053ddafd4ba3688c5d25e87aef17d014661afae573f9786cad5180", + "esm/wrapRegExp.js": "2f20310813b4303524f943587cd12661adec8c51299292bdc9fa7ae60308e853", + "esm/writeOnlyError.js": "fca040fc9ebb7362ef2ab87ba123a08d565d65774ea155c94032ad1a9a072031", + "extends.js": "f2d5a784add32befebe6daa142fffff4f760dcb7b2b9a5a5afd715c1a38b778b", + "get.js": "99bc358bbb59607de0a9abb59c1ee5cc082542969e2ab0e1c3b1d23d0f72353a", + "getPrototypeOf.js": "162f06ebc9d62ec8762586cf7848ac5196e54a4d590db81661c5b2ca4706020f", + "identity.js": "3280a255fe2889b98b9696731533c87f2596a6d0c5e45ac07dd7e8764ddf4e2c", + "importDeferProxy.js": "854758e0abb87e4812900ebcdb01df9fdb42de0d2f8600e36833acb5cc1bd198", + "inherits.js": "57d25ae18e57fe8c232ff564feaedf3d7018f375c45ec4e497d3f883ab51d3be", + "inheritsLoose.js": "c8e685c033ca57cae3518323b5385ef90cb111c87429bd8f77bcebccabc9135b", + "initializerDefineProperty.js": "9d55b3b18a3547e16af8b88009201092907b49365eaeeea1154ddb800210d04f", + "initializerWarningHelper.js": "69c5fd17098bd2356e5ba85c5becc35a26fd828e90428782a35afb657c2e6c27", + "instanceof.js": "6e95f8db61f73ff683e43b39d8a15fabd4b5cf301ffbf4d624fc2504b78a0d87", + "interopRequireDefault.js": "4e497a6a7048bbe827fe117069a750d71e951b7deee44e5c7866adb7287d23bb", + "interopRequireWildcard.js": "120f2695ea44b786bc28407695eb3c931d44ba2cc70f14ec4aef9e7520484ea7", + "isNativeFunction.js": "ab86249eac543d544e397a6fd321d2032f09828770d711a55b1f48b5365bfa1d", + "isNativeReflectConstruct.js": "7c2b9984eb9e82d0600988a4fd2d91cb22f08f0a3a17783c89e963193ef4a17b", + "iterableToArray.js": "18b0172a86ea82e9b1dc1d81cd88b8e39e47f51abea34d4063b76a92e4e9eee2", + "iterableToArrayLimit.js": "55587969971c09fd57027dbb61060a2a83f15050adf2b538962f1ad6d374359d", + "jsx.js": "b21fcb8009d2eaf16da6ec4313f5069923888bf1d37e44b9f4fcde567a1bd8b8", + "maybeArrayLike.js": "ab34b88240fa7db4cad6ab35ad651e743d94703820262918b51a0bb73caa8d30", + "newArrowCheck.js": "0f08c60ed90ced7422b0e410bd3e31a07114af31ffeda685745ce8f3ce991eb3", + "nonIterableRest.js": "0017ec49ad3a5a7b4628c9f86314e38f1c0ddcfc7b937c6fc91f6a75c12ed8ec", + "nonIterableSpread.js": "4a8e511d237e5b0f6fed2f9d44a57eb10ebb49ba9e06d6c78194a974bdf42785", + "nullishReceiverError.js": "0c62b6d08efa89f2abf3d4ab868fc62b3f570e295245bebad455d7cfa796545e", + "objectDestructuringEmpty.js": "cbbe967f16f7db8fa30e08e322481a9a60b35482e1c3970f73c5bff9a7636466", + "objectSpread2.js": "9a137cd187abd58483a915477f57652e211bde134e911a02ea8f07c1015ca014", + "objectWithoutProperties.js": "6695bc6d45fc714953589b86e47fff111d5b9e134cc4f829b380f8196641f96d", + "objectWithoutPropertiesLoose.js": "09a4f2cb43c4bc24c362d724a4e059ed04e521b586150017a88e8e1266dd660d", + "possibleConstructorReturn.js": "f79b305b2747f38f99da9da786a0514cf925fc2b44e4f512d6a1cb6e3ec0e051", + "readOnlyError.js": "259163922482de27b279aa817f8c9822fa4c12ea89ec8aa80d4fe6fa043a3b6e", + "regenerator.js": "411453a38e4c5072084293065ccd59d89b8cbc27a580359a3beb8031f765fa0e", + "regeneratorAsync.js": "6e748c93593c4a143c626f6ce3f61f66c94242b313681ac5ab4601b2fbf0bc1e", + "regeneratorAsyncGen.js": "15bf13e397ae7648bc930d3df1b3a54b56a452b8b5bde63025a2577959601261", + "regeneratorAsyncIterator.js": "1b1064af8d5341f9083948353c8792f7b55f24b767c2439fa38fe1f501726e31", + "regeneratorDefine.js": "d113a712d8df58f04e287c39c0c6ccf63dd36fb6aa7472e6f4d29c381bc2c911", + "regeneratorKeys.js": "1e43241ecb4e8015a6f3c8cc3055d606034c08ff239064ac059cb4712c8212f7", + "regeneratorValues.js": "474f633903a5a2c22a9bfc1b088b1d21da471b78092cb64c77bd427c130a9f37", + "set.js": "47fabc1519b214585762d7810ae7da45944e0065c19642c9f6c786318cac34fe", + "setFunctionName.js": "b0bf43c1aa85a08a1da8f55e6e6b62c1cc29123bd3b67e5cf96878fecd7e9489", + "setPrototypeOf.js": "ffbe48bf7c81f4b37de5e3586f33bf378337cc48de13c41e419d434fa9d708d7", + "skipFirstGeneratorNext.js": "e06ccf66355b6e3aaa3862419c65638a101ce934a34d5a3cd9da78f53f147e02", + "slicedToArray.js": "9f85108337c7d58fe1b5a3577ff047fbd71f98030effab59e558f5d00fcdaac2", + "superPropBase.js": "13bc90037c4c70f756bdc2f910ba4390c1c583171bdf990ad970cc5460fa8682", + "superPropGet.js": "0226a3156e0131bc21fc220b2707ae407fe6e99fe00817dbfa2c237e79701278", + "superPropSet.js": "7e4c3e883e866b42cee7f36b96fc6b986400ff6cfa9f777cf61a775e91b552c7", + "taggedTemplateLiteral.js": "f4fe09742f92d86629431ac2b5692c893a78546b205ad10aad4ac52a13ae7ad4", + "taggedTemplateLiteralLoose.js": "5bfb1c3b12d88f59342dd05faeffcf131cee9c9340a52eccf6bd8ac11d0e3b8e", + "tdz.js": "cfd996a0c98a302a4d1575cb2322b484124dc0d2f4d8fbb55f1a14230a291d88", + "temporalRef.js": "06e2b2f1150581f9be46d93d99f3affb779b1c5fc11fa1acabc1cd3152e24e60", + "temporalUndefined.js": "328e07c54fb8fad4752246c9c69f219bcbf998367a07ec6375ad40306898fb0a", + "toArray.js": "ccb097b5c2a2cbdd6176a2f8730e377d056c4719f07c2fd8275d1ae70d12a43e", + "toConsumableArray.js": "37f9e823fe8f4a2ed288bbcd592f30c58258861cb6015000a97ffdb911e7269b", + "toPrimitive.js": "acb7fb1055487cab421d800fccff0c60f63ac88646560bbcc4693d439d655f36", + "toPropertyKey.js": "b0df5d1d686cb6c7d689f73be9c38390bbd0c7e3365ad7965860eb0dcd19fa51", + "toSetter.js": "4b37cb8140d9c31da5bbf4e1364d2a45e849594c982d26dfd9f9b5304aafb1be", + "tsRewriteRelativeImportExtensions.js": "a93745fda60c8a37d35807e5c1dfdb7c175724148c8139c37d78908adc6c2e28", + "typeof.js": "22f7e2a720b249f266973253a1176b87add1f40b12512d5c9e886339a94c030a", + "unsupportedIterableToArray.js": "316c7b1404093c97f80c55b0a658cd20a519f73d0e5db71b8bdec80406154fba", + "usingCtx.js": "9e404fdae08f7dcaf8a7434a091447ee8e21dc2cce499fbde3937b01d3df198b", + "wrapAsyncGenerator.js": "05ac5f49a2f549d3fc5930cca10ebecb734da36ff4182dbd54341a129e38254a", + "wrapNativeSuper.js": "eef664bdf3309b063abbcb7f90631f416c46a0cabd2b1a409966336741b3c41d", + "wrapRegExp.js": "d67cc81212725b286dadbb25b3409620a676364bbbc121378f4ca08351739182", + "writeOnlyError.js": "910d479ce634b178380980e6100230ffd10db4f4b5d4709e2de978fa1acb3a6f" + }, + "internalHelpers": [ + "regeneratorAsyncIterator.js", + "regeneratorDefine.js" + ], + "patches": { + "setFunctionName.js": { + "reason": "Preserve the native method name \"[]\" for Symbol(\"\").", + "sha256": "9b1534e58fd53616c897f886c62b66b8b650ea59c87432a93ef592a52660f4c3" + }, + "esm/setFunctionName.js": { + "reason": "Preserve the native method name \"[]\" for Symbol(\"\").", + "sha256": "45515de6a2a12402f9288a7902f3c5d651cad437c212e61071514a1dd13ab042" + } + }, + "customHelpers": [ + "decorate.js", + "decorateMetadata.js", + "decorateParam.js" + ], + "legacyHelpers": [ + "AwaitValue.js", + "applyDecs.js", + "applyDecs2203.js", + "applyDecs2203R.js", + "applyDecs2301.js", + "applyDecs2305.js", + "classApplyDescriptorDestructureSet.js", + "classApplyDescriptorGet.js", + "classApplyDescriptorSet.js", + "classCheckPrivateStaticAccess.js", + "classCheckPrivateStaticFieldDescriptor.js", + "classExtractFieldDescriptor.js", + "classPrivateFieldDestructureSet.js", + "classPrivateFieldGet.js", + "classPrivateFieldSet.js", + "classPrivateMethodGet.js", + "classPrivateMethodSet.js", + "classStaticPrivateFieldDestructureSet.js", + "classStaticPrivateFieldSpecGet.js", + "classStaticPrivateFieldSpecSet.js", + "classStaticPrivateMethodSet.js", + "defineEnumerableProperties.js", + "dispose.js", + "objectSpread.js", + "regeneratorRuntime.js", + "using.js" + ] +} diff --git a/oxfmtrc.jsonc b/oxfmtrc.jsonc index 16fa45607a..3679c36a55 100644 --- a/oxfmtrc.jsonc +++ b/oxfmtrc.jsonc @@ -45,6 +45,7 @@ "napi/{parser,transform,transform-react,transform-relay,minify,playground}/**/wasi-worker.mjs", "napi/{parser,transform,transform-react,transform-relay,minify,playground}/**/browser.js", "npm/runtime/src", + "npm/runtime/upstream.json", "npm/oxc-types/types.d.ts", "npm/oxfmt/configuration_schema.json", "npm/oxlint/configuration_schema.json", diff --git a/tasks/transform_conformance/snapshots/babel_exec.snap.md b/tasks/transform_conformance/snapshots/babel_exec.snap.md index 2f04cffbf5..be08ba3a51 100644 --- a/tasks/transform_conformance/snapshots/babel_exec.snap.md +++ b/tasks/transform_conformance/snapshots/babel_exec.snap.md @@ -2,7 +2,7 @@ commit: b835f0c6 node: v26.12.1 -Passed: 321 of 419 (76.61%) +Passed: 322 of 419 (76.85%) Failures: @@ -19,11 +19,6 @@ SyntaxError: Unexpected eval or arguments in strict mode at process.processTicksAndRejections (node:internal/process/task_queues:104:5) at async VitestModuleRunner.cachedRequest (./node_modules/vite/dist/node/module-runner.js:1195:73) -./fixtures/babel/babel-plugin-transform-async-generator-functions-test-fixtures-async-generators-await-in-finally-exec.test.js -AssertionError: expected { value: 2, done: true } to deeply equal { value: 4, done: false } - at test (./tasks/transform_conformance/fixtures/babel/babel-plugin-transform-async-generator-functions-test-fixtures-async-generators-await-in-finally-exec.test.js:28:44) - at process.processTicksAndRejections (node:internal/process/task_queues:104:5) - ./fixtures/babel/babel-plugin-transform-async-to-generator-test-fixtures-async-to-generator-async-complex-params-exec.test.js TypeError: Cannot destructure property 'b' of 'undefined' as it is undefined. at Object.foo (./tasks/transform_conformance/fixtures/babel/babel-plugin-transform-async-to-generator-test-fixtures-async-to-generator-async-complex-params-exec.test.js:7:13) diff --git a/tasks/transform_conformance/snapshots/oxc_exec.snap.md b/tasks/transform_conformance/snapshots/oxc_exec.snap.md index 448e73dcdf..d15d0b89e9 100644 --- a/tasks/transform_conformance/snapshots/oxc_exec.snap.md +++ b/tasks/transform_conformance/snapshots/oxc_exec.snap.md @@ -2,7 +2,7 @@ commit: b835f0c6 node: v26.12.1 -Passed: 40 of 42 (95.24%) +Passed: 41 of 43 (95.35%) Failures: diff --git a/tasks/transform_conformance/tests/babel-plugin-transform-async-generator-functions/test/fixtures/oxc/runtime-helper-completions/exec.js b/tasks/transform_conformance/tests/babel-plugin-transform-async-generator-functions/test/fixtures/oxc/runtime-helper-completions/exec.js new file mode 100644 index 0000000000..a1871e9318 --- /dev/null +++ b/tasks/transform_conformance/tests/babel-plugin-transform-async-generator-functions/test/fixtures/oxc/runtime-helper-completions/exec.js @@ -0,0 +1,42 @@ +async function* cleanup() { + try { + yield "body"; + } finally { + await Promise.resolve(); + yield* [Promise.resolve("cleanup")]; + } +} + +function* recover() { + try { + yield "body"; + } catch (error) { + yield error.message; + } + return "recovered"; +} + +async function* delegate() { + return yield* recover(); +} + +async function* directReturn() { + return yield* ["body", "unused"]; +} + +return (async function () { + const iterator = cleanup(); + expect(await iterator.next()).toEqual({ value: "body", done: false }); + expect(await iterator.return("finished")).toEqual({ value: "cleanup", done: false }); + expect(await iterator.next()).toEqual({ value: "finished", done: true }); + + const recovery = delegate(); + expect(await recovery.next()).toEqual({ value: "body", done: false }); + expect(await recovery.throw(new Error("injected"))).toEqual({ value: "injected", done: false }); + expect(await recovery.next()).toEqual({ value: "recovered", done: true }); + + const returned = directReturn(); + expect(await returned.next()).toEqual({ value: "body", done: false }); + expect(await returned.return("finished")).toEqual({ value: "finished", done: true }); + expect(await returned.next()).toEqual({ value: undefined, done: true }); +})();