mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
chore(runtime): sync helpers with Babel 8.0.8 (#28172)
Sync the complete published `@babel/runtime@8.0.8` helper tree so future updates have a recorded upstream baseline. Import all 95 CommonJS/ESM helper pairs, the MIT license, conditional exports, and `sideEffects: false`. Preserve 26 legacy Babel helper pairs, three TypeScript decorator helper pairs, and existing import paths. 189 of the 191 upstream files are byte-identical. The two `setFunctionName` implementations retain Oxc's existing behavior and match main. Add a hash manifest, a repeatable sync script, CJS/ESM tests in CI, and an async-generator execution regression. No new helper optimizations or correctness patches are included. Validation: upstream hashes, compatibility preservation, sync idempotence and drift refusal, formatting, lint, syntax, and whitespace checks passed. Runtime tests were not rerun after restoring this tree because automatic approval blocked helper execution; the newer Babel fixture revision pinned by main was not run locally. AI assistance: Claude.
This commit is contained in:
1 parent
303d9e803f
commit
563cf449a9
56 files changed
+2050
-902
No files matched your search
@@ -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
|
||||
|
||||
@@ -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.
|
||||
+27
-2
@@ -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
|
||||
```
|
||||
+490
-703
File diff suppressed because it is too large.
Load diff
@@ -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 <extracted-babel-runtime-directory>");
|
||||
}
|
||||
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.`,
|
||||
);
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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 ["$<named>", "$<missing>", "$<missing", "$<named>/$<missing>"]) {
|
||||
const actual = "a".replace(wrapRegExp(/(a)/, { named: 1 }), replacement);
|
||||
assert.equal(actual, "a".replace(/(?<named>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);
|
||||
});
|
||||
}
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -2,7 +2,7 @@ commit: b835f0c6
|
||||
|
||||
node: v26.12.1
|
||||
|
||||
Passed: 40 of 42 (95.24%)
|
||||
Passed: 41 of 43 (95.35%)
|
||||
|
||||
Failures:
|
||||
|
||||
|
||||
+42
@@ -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 });
|
||||
})();
|
||||
Reference in new issue
Block a user