Skip to content

Fix(49198): Added missing definition for Atomics.waitAsync and es2022 sharedmemory file #49204

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Jun 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .github/workflows/accept-baselines-fix-lints.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Use node version 14
uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org/
- uses: actions/setup-node@v3

- name: Configure Git, Run Tests, Update Baselines, Apply Fixes
run: |
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ jobs:

strategy:
matrix:
node-version: [14.x, 16.x, 18.x]
# Test the latest version of Node.js plus the last two LTS versions.
node-version:
- "*"
- lts/*
- lts/-1

steps:
- uses: actions/checkout@v3
Expand All @@ -26,6 +30,7 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
check-latest: true
- name: Remove existing TypeScript
run: |
npm uninstall typescript --no-save
Expand All @@ -47,4 +52,3 @@ jobs:

- name: Validate the browser can import TypeScript
run: gulp test-browser-integration

5 changes: 1 addition & 4 deletions .github/workflows/new-release-branch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Use node version 14.x
uses: actions/setup-node@v3
with:
node-version: 14.x
- uses: actions/setup-node@v3
- uses: actions/checkout@v2
with:
fetch-depth: 5
Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Use node version 14
uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org/
- uses: actions/setup-node@v3
- name: Setup and publish nightly
run: |
npm whoami
Expand All @@ -30,6 +26,4 @@ jobs:
gulp clean
npm publish --tag next
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
CI: true

NPM_TOKEN: ${{secrets.npm_token}}
11 changes: 2 additions & 9 deletions .github/workflows/release-branch-artifact.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Use node version 14
uses: actions/setup-node@v3
with:
node-version: 14
- uses: actions/setup-node@v3
- name: Remove existing TypeScript
run: |
npm uninstall typescript --no-save
Expand All @@ -23,10 +20,8 @@ jobs:
run: |
npm ci
npm test
env:
CI: true
- name: Adding playwright
run: npm install --no-save --no-package-lock playwright
run: npm install --no-save --no-package-lock playwright
- name: Validate the browser can import TypeScript
run: gulp test-browser-integration
- name: LKG, clean, and pack
Expand All @@ -35,8 +30,6 @@ jobs:
gulp clean
npm pack ./
mv typescript-*.tgz typescript.tgz
env:
CI: true
- name: Upload built tarfile
uses: actions/upload-artifact@v1
with:
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/rich-navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ jobs:
fetch-depth: 5

- uses: actions/setup-node@v3
with:
node-version: 14

- name: Install dependencies
run: npm ci
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/set-version.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Use node version 14.x
uses: actions/setup-node@v3
with:
node-version: 14.x
- uses: actions/setup-node@v3
- uses: actions/checkout@v2
with:
ref: ${{ github.event.client_payload.branch_name }}
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/sync-branch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Use node version 14.x
uses: actions/setup-node@v3
with:
node-version: 14.x
- uses: actions/setup-node@v3
- uses: actions/checkout@v2
with:
ref: ${{ github.event.inputs.branch_name || github.event.client_payload.branch_name }}
Expand Down
11 changes: 4 additions & 7 deletions .github/workflows/twoslash-repros.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,11 @@ jobs:
if: ${{ github.repository == 'microsoft/TypeScript' && !github.event.label && !github.event.inputs.bisect_issue }}
runs-on: ubuntu-latest
steps:
- name: Use node
uses: actions/setup-node@v3
- uses: actions/setup-node@v3
- uses: microsoft/TypeScript-Twoslash-Repro-Action@master
with:
with:
github-token: ${{ secrets.TS_BOT_GITHUB_TOKEN }}

bisect:
if: ${{ github.event.label.name == 'Bisect Repro' || github.event.inputs.bisect_issue }}
runs-on: ubuntu-latest
Expand All @@ -37,9 +36,7 @@ jobs:
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 16
- uses: microsoft/TypeScript-Twoslash-Repro-Action@master
with:
with:
github-token: ${{ secrets.TS_BOT_GITHUB_TOKEN }}
bisect: ${{ github.event.issue.number || github.event.inputs.bisect_issue }}
6 changes: 1 addition & 5 deletions .github/workflows/update-lkg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Use node version 14
uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org/
- uses: actions/setup-node@v3

- name: Configure Git and Update LKG
run: |
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/update-package-lock.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org/

- name: Configure git and update package-lock.json
run: |
Expand Down
1 change: 1 addition & 0 deletions src/compiler/commandLineParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ namespace ts {
["es2022.error", "lib.es2022.error.d.ts"],
["es2022.intl", "lib.es2022.intl.d.ts"],
["es2022.object", "lib.es2022.object.d.ts"],
["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"],
["es2022.string", "lib.es2022.string.d.ts"],
["esnext.array", "lib.es2022.array.d.ts"],
["esnext.symbol", "lib.es2019.symbol.d.ts"],
Expand Down
1 change: 1 addition & 0 deletions src/lib/es2022.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
/// <reference lib="es2022.error" />
/// <reference lib="es2022.intl" />
/// <reference lib="es2022.object" />
/// <reference lib="es2022.sharedmemory" />
/// <reference lib="es2022.string" />
7 changes: 7 additions & 0 deletions src/lib/es2022.sharedmemory.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
interface Atomics {
/**
* A non-blocking, asynchronous version of wait which is usable on the main thread.
* Waits asynchronously on a shared memory location and returns a Promise
*/
waitAsync(typedArray: BigInt64Array | Int32Array, index: number, value: bigint, timeout?: number): { async: false, value: "ok" | "not-equal" | "timed-out" } | { async: true, value: Promise<"ok" | "not-equal" | "timed-out"> };
}
1 change: 1 addition & 0 deletions src/lib/libs.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
"es2022.error",
"es2022.intl",
"es2022.object",
"es2022.sharedmemory",
"es2022.string",
"esnext.intl",
// Default libraries
Expand Down
18 changes: 15 additions & 3 deletions src/services/refactors/convertExport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ namespace ts.refactor {
return { error: getLocaleSpecificMessage(Diagnostics.Could_not_find_export_statement) };
}

const exportingModuleSymbol = isSourceFile(exportNode.parent) ? exportNode.parent.symbol : exportNode.parent.parent.symbol;

const checker = program.getTypeChecker();
const exportingModuleSymbol = getExportingModuleSymbol(exportNode, checker);
const flags = getSyntacticModifierFlags(exportNode) || ((isExportAssignment(exportNode) && !exportNode.isExportEquals) ? ModifierFlags.ExportDefault : ModifierFlags.None);

const wasDefault = !!(flags & ModifierFlags.Default);
Expand All @@ -75,7 +75,6 @@ namespace ts.refactor {
return { error: getLocaleSpecificMessage(Diagnostics.This_file_already_has_a_default_export) };
}

const checker = program.getTypeChecker();
const noSymbolError = (id: Node) =>
(isIdentifier(id) && checker.getSymbolAtLocation(id)) ? undefined
: { error: getLocaleSpecificMessage(Diagnostics.Can_only_convert_named_export) };
Expand Down Expand Up @@ -165,6 +164,7 @@ namespace ts.refactor {
const checker = program.getTypeChecker();
const exportSymbol = Debug.checkDefined(checker.getSymbolAtLocation(exportName), "Export name should resolve to a symbol");
FindAllReferences.Core.eachExportReference(program.getSourceFiles(), checker, cancellationToken, exportSymbol, exportingModuleSymbol, exportName.text, wasDefault, ref => {
if (exportName === ref) return;
const importingSourceFile = ref.getSourceFile();
if (wasDefault) {
changeDefaultToNamedImport(importingSourceFile, ref, changes, exportName.text);
Expand Down Expand Up @@ -262,4 +262,16 @@ namespace ts.refactor {
function makeExportSpecifier(propertyName: string, name: string): ExportSpecifier {
return factory.createExportSpecifier(/*isTypeOnly*/ false, propertyName === name ? undefined : factory.createIdentifier(propertyName), factory.createIdentifier(name));
}

function getExportingModuleSymbol(node: Node, checker: TypeChecker) {
const parent = node.parent;
if (isSourceFile(parent)) {
return parent.symbol;
}
const symbol = parent.parent.symbol;
if (symbol.valueDeclaration && isExternalModuleAugmentation(symbol.valueDeclaration)) {
return checker.getMergedSymbol(symbol);
}
return symbol;
}
}
42 changes: 42 additions & 0 deletions tests/baselines/reference/es2022SharedMemory.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
=== tests/cases/conformance/es2022/es2022SharedMemory.ts ===
const sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024);
>sab : Symbol(sab, Decl(es2022SharedMemory.ts, 0, 5))
>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --))
>Int32Array.BYTES_PER_ELEMENT : Symbol(Int32ArrayConstructor.BYTES_PER_ELEMENT, Decl(lib.es5.d.ts, --, --))
>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 1 more)
>BYTES_PER_ELEMENT : Symbol(Int32ArrayConstructor.BYTES_PER_ELEMENT, Decl(lib.es5.d.ts, --, --))

const int32 = new Int32Array(sab);
>int32 : Symbol(int32, Decl(es2022SharedMemory.ts, 1, 5))
>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --) ... and 1 more)
>sab : Symbol(sab, Decl(es2022SharedMemory.ts, 0, 5))

const waitValue = Atomics.wait(int32, 0, 0);
>waitValue : Symbol(waitValue, Decl(es2022SharedMemory.ts, 2, 5))
>Atomics.wait : Symbol(Atomics.wait, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --))
>Atomics : Symbol(Atomics, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --), Decl(lib.es2022.sharedmemory.d.ts, --, --))
>wait : Symbol(Atomics.wait, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --))
>int32 : Symbol(int32, Decl(es2022SharedMemory.ts, 1, 5))

const { async, value } = Atomics.waitAsync(int32, 0, BigInt(0));
>async : Symbol(async, Decl(es2022SharedMemory.ts, 3, 7))
>value : Symbol(value, Decl(es2022SharedMemory.ts, 3, 14))
>Atomics.waitAsync : Symbol(Atomics.waitAsync, Decl(lib.es2022.sharedmemory.d.ts, --, --))
>Atomics : Symbol(Atomics, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2020.sharedmemory.d.ts, --, --), Decl(lib.es2022.sharedmemory.d.ts, --, --))
>waitAsync : Symbol(Atomics.waitAsync, Decl(lib.es2022.sharedmemory.d.ts, --, --))
>int32 : Symbol(int32, Decl(es2022SharedMemory.ts, 1, 5))
>BigInt : Symbol(BigInt, Decl(lib.es2020.bigint.d.ts, --, --), Decl(lib.es2020.bigint.d.ts, --, --))

const main = async () => {
>main : Symbol(main, Decl(es2022SharedMemory.ts, 5, 5))

if (async) {
>async : Symbol(async, Decl(es2022SharedMemory.ts, 3, 7))

await value;
>value : Symbol(value, Decl(es2022SharedMemory.ts, 3, 14))
}
}
main();
>main : Symbol(main, Decl(es2022SharedMemory.ts, 5, 5))

56 changes: 56 additions & 0 deletions tests/baselines/reference/es2022SharedMemory.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
=== tests/cases/conformance/es2022/es2022SharedMemory.ts ===
const sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024);
>sab : SharedArrayBuffer
>new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 1024) : SharedArrayBuffer
>SharedArrayBuffer : SharedArrayBufferConstructor
>Int32Array.BYTES_PER_ELEMENT * 1024 : number
>Int32Array.BYTES_PER_ELEMENT : number
>Int32Array : Int32ArrayConstructor
>BYTES_PER_ELEMENT : number
>1024 : 1024

const int32 = new Int32Array(sab);
>int32 : Int32Array
>new Int32Array(sab) : Int32Array
>Int32Array : Int32ArrayConstructor
>sab : SharedArrayBuffer

const waitValue = Atomics.wait(int32, 0, 0);
>waitValue : "ok" | "not-equal" | "timed-out"
>Atomics.wait(int32, 0, 0) : "ok" | "not-equal" | "timed-out"
>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; }
>Atomics : Atomics
>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; }
>int32 : Int32Array
>0 : 0
>0 : 0

const { async, value } = Atomics.waitAsync(int32, 0, BigInt(0));
>async : boolean
>value : "ok" | "not-equal" | "timed-out" | Promise<"ok" | "not-equal" | "timed-out">
>Atomics.waitAsync(int32, 0, BigInt(0)) : { async: false; value: "ok" | "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "not-equal" | "timed-out">; }
>Atomics.waitAsync : (typedArray: Int32Array | BigInt64Array, index: number, value: bigint, timeout?: number | undefined) => { async: false; value: "ok" | "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "not-equal" | "timed-out">; }
>Atomics : Atomics
>waitAsync : (typedArray: Int32Array | BigInt64Array, index: number, value: bigint, timeout?: number | undefined) => { async: false; value: "ok" | "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "not-equal" | "timed-out">; }
>int32 : Int32Array
>0 : 0
>BigInt(0) : bigint
>BigInt : BigIntConstructor
>0 : 0

const main = async () => {
>main : () => Promise<void>
>async () => { if (async) { await value; }} : () => Promise<void>

if (async) {
>async : boolean

await value;
>await value : "ok" | "not-equal" | "timed-out"
>value : Promise<"ok" | "not-equal" | "timed-out">
}
}
main();
>main() : Promise<void>
>main : () => Promise<void>

Original file line number Diff line number Diff line change
Expand Up @@ -147,5 +147,7 @@
"File 'package.json' does not exist according to earlier cached lookups.",
"File '/package.json' does not exist according to earlier cached lookups.",
"File 'package.json' does not exist according to earlier cached lookups.",
"File '/package.json' does not exist according to earlier cached lookups.",
"File 'package.json' does not exist according to earlier cached lookups.",
"File '/package.json' does not exist according to earlier cached lookups."
]
Original file line number Diff line number Diff line change
Expand Up @@ -141,5 +141,7 @@
"File 'package.json' does not exist according to earlier cached lookups.",
"File '/package.json' does not exist according to earlier cached lookups.",
"File 'package.json' does not exist according to earlier cached lookups.",
"File '/package.json' does not exist according to earlier cached lookups.",
"File 'package.json' does not exist according to earlier cached lookups.",
"File '/package.json' does not exist according to earlier cached lookups."
]
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ default: undefined

--lib
Specify a set of bundled library declaration files that describe the target runtime environment.
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.string/esnext.string, esnext.intl
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, esnext.intl
default: undefined

--allowJs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ default: undefined

--lib
Specify a set of bundled library declaration files that describe the target runtime environment.
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.string/esnext.string, esnext.intl
one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array/esnext.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, esnext.intl
default: undefined

--allowJs
Expand Down
Loading