diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6d27b714..574e1cb8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,7 +1,10 @@
name: CI
-on: [push]
+on:
+ push:
+ branches:
+ - main
env:
TZ: "America/New_York"
@@ -11,29 +14,35 @@ jobs:
name: CI
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ node: [14.21.3, 16.20.0, 18.19.0, 20.10.0]
+
steps:
- name: Checkout
uses: actions/checkout@v3
+ with:
+ submodules: recursive
- name: Setup PNPM
uses: pnpm/action-setup@v2.2.4
with:
- version: 7.14.0
+ version: 8.6.3
- name: Setup Node
uses: actions/setup-node@v3
with:
- node-version: 16.13.1
+ node-version: 18.19.0
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- - name: Lint
- run: pnpm run lint
+ # - name: Lint
+ # run: pnpm run lint
- name: Build
run: pnpm run build
- name: Test
- run: pnpm run test
+ run: cd packages/temporal-polyfill && NODE_VERSION=${{ matrix.node }} pnpm run test
diff --git a/.gitignore b/.gitignore
index 3dfe42cc..181493d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,4 @@
-
node_modules
-/coverage
-tsconfig.tsbuildinfo
-dist
-
-# see pkgExportsFix
-/packages/*/*.d.ts
-# hack
-!/packages/temporal-spec/*.d.ts
+/packages/*/dist/*
+/!packages/*/dist/.npmignore
diff --git a/.gitmodules b/.gitmodules
index 331f0a63..c58ddab9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,12 @@
[submodule "scripts/data/moment"]
- path = scripts/data/moment
+ path = packages/locale-data/data/moment
url = https://github.com/moment/moment.git
[submodule "scripts/data/fullcalendar"]
- path = scripts/data/fullcalendar
+ path = packages/locale-data/data/fullcalendar
url = https://github.com/fullcalendar/fullcalendar.git
[submodule "packages/temporal-polyfill/test262"]
- path = packages/temporal-polyfill/test262
+ path = test262
url = https://github.com/tc39/test262
+[submodule "packages/temporal-test262-runner"]
+ path = packages/temporal-test262-runner
+ url = git@github.com:fullcalendar/temporal-test262-runner.git
diff --git a/.npmrc b/.npmrc
index bffee7e0..2b777241 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,7 +1,3 @@
engine-strict = true
-
-# for some reason 16.18.0 cause sub-second tz offsets to fail
-# NOTE: keep in sync with github workflow
-use-node-version = 16.13.1
-
+use-node-version = ${NODE_VERSION:-18.19.0}
prefer-workspace-packages = true
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 7f3f4ffc..b308e589 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,6 +1,5 @@
{
"recommendations": [
- "dbaeumer.vscode-eslint",
- "firsttris.vscode-jest-runner"
+ "dbaeumer.vscode-eslint"
]
}
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 5e0065c7..74582950 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,56 +1,11 @@
{
"configurations": [
- {
- "name": "Jest: Debug All",
- "type": "node",
- "request": "launch",
- "runtimeArgs": [
- "--inspect-brk",
- "${workspaceRoot}/node_modules/jest/bin/jest.js",
- "--runInBand",
- // NOTE: keep following args in sync with settings.json
- "--no-cache",
- "--watchAll=false"
- ],
- "console": "integratedTerminal",
- "internalConsoleOptions": "neverOpen",
- "sourceMaps": true
- },
- {
- "name": "Jest: Debug File",
- "type": "node",
- "request": "launch",
- // NOTE: keep args in sync with settings.json
- "runtimeArgs": [
- "--inspect-brk",
- "${workspaceRoot}/node_modules/jest/bin/jest.js",
- "--runInBand",
- // NOTE: keep following args in sync with settings.json
- "--no-cache",
- "--watchAll=false",
- // specific file
- "${file}"
- ],
- "console": "integratedTerminal",
- "internalConsoleOptions": "neverOpen",
- "sourceMaps": true
- },
- {
- "name": "Test262: Run All",
- "type": "node",
- "request": "launch",
- "runtimeExecutable": "pnpm",
- "runtimeArgs": ["run", "test262"],
- "console": "integratedTerminal",
- "internalConsoleOptions": "neverOpen",
- "autoAttachChildProcesses": true
- },
{
"name": "Test262: Debug File",
"type": "node",
"request": "launch",
"runtimeExecutable": "pnpm",
- "runtimeArgs": ["run", "test262", "--no-timeout", "${file}"],
+ "runtimeArgs": ["run", "test", "--no-timeout", "${file}"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"autoAttachChildProcesses": true
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a1bca648..b8210243 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,6 +1,6 @@
{
"editor.codeActionsOnSave": {
- "source.fixAll": true
+ "source.fixAll": "explicit"
},
"typescript.enablePromptUseWorkspaceTsdk": true,
"jestrunner.changeDirectoryToWorkspaceRoot": false, // allows entering sub-workspace, is faster
diff --git a/packages/temporal-polyfill/CHANGELOG.md b/CHANGELOG.md
similarity index 58%
rename from packages/temporal-polyfill/CHANGELOG.md
rename to CHANGELOG.md
index 706cf8b9..144fd987 100644
--- a/packages/temporal-polyfill/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,18 +1,36 @@
+v0.2.0 (2024-01-07)
+-------------------
+
+- Updated with latest [test262](https://github.com/tc39/test262) conformance tests (Nov 2023) (#3).
+All tests passing barring intentional deviations from spec, documented in [README](README.md).
+- Breaking changes include all those [mentioned here](https://github.com/js-temporal/temporal-polyfill/blob/main/CHANGELOG.md#044)
+and [normative changes](https://github.com/tc39/proposal-temporal/issues/2628) introduced between May 2023 - Nov 2023,
+most notably changes to "user-visible operations".
+- Size of minified+gzipped bundle increased from 17.3 kB -> 20.0 kB due to stricter compliance with latest spec.
+- In NPM directory, all files are now top-level as opposed to within `dist/`. Thus, the [jsDelivr URL](https://cdn.jsdelivr.net/npm/temporal-polyfill@0.2.0/global.min.js) has changed.
+- Fixed bugs: #9, #12, #13, #21
+- Improved README content, including comparison with @js-temporal (#22)
+- Renamed github repo to fullcalendar/temporal-polyfill
+
+
v0.1.1 (2023-02-15)
-------------------
+
- fix: upgrade temporal-spec, which is now compatible with moduleResolution:node16 (#17 cont'd)
- fix: don't fallback to native Temporal implementation for ponyfill (#19 cont'd)
v0.1.0 (2023-02-09)
-------------------
+
- fix: Support TypeScript 4.7 moduleResolution:node16 (#17)
- fix: Avoiding fallback to native Temporal implementation (#19)
v0.0.8 (2022-08-24)
-------------------
+
- Support environments without BigInt. See browser version matrix in README.
- Fixed TypeScript syntax error in `temporal-spec/index.d.ts` (#10)
- Fixed missing .d.ts files for environments that don't support export maps.
diff --git a/README.md b/README.md
index f90d10a6..b5f972d6 100644
--- a/README.md
+++ b/README.md
@@ -1,51 +1,274 @@
-# Temporal Monorepo
+# temporal-polyfill
-A lightweight [Temporal] polyfill and other futuristic JavaScript date utilities.
+A lightweight polyfill for [Temporal](https://tc39.es/proposal-temporal/docs/), successor to the JavaScript `Date` object.
+Only 20.0 kB, with near-perfect [spec compliance](#spec-compliance).
-## Project Updates
-- **2023-04-22:** The codebase is undergoing a refactor to respond to the lastest changes in the [Temporal] spec. This refactor will also improve minification size, performance, and conformance to [TC39 tests](https://github.com/tc39/test262). Please subscribe to [this ticket](https://github.com/fullcalendar/temporal/issues/3) for updates.
-- **2023-09-12:** The refactor [is going well](https://github.com/fullcalendar/temporal/issues/3#issuecomment-1716106547). A number of bugfixes and bundle-size optimizations are outstanding.
+## Table of Contents
-## temporal-polyfill
+- [Installation](#installation)
+- [Comparison with `@js-temporal/polyfill`](#comparison-with-js-temporalpolyfill)
+- [Spec Compliance](#spec-compliance)
+- [Browser Support](#browser-support)
+- [BigInt Considerations](#bigint-considerations)
+- [Tree-shakeable API](#tree-shakeable-api) (coming soon)
-A spec-compliant polyfill in 16kb.
+
+## Installation
```
npm install temporal-polyfill
```
-**A) Import globally:**
+Import as an ES module without side effects:
```js
-import 'temporal-polyfill/global'
+import { Temporal } from 'temporal-polyfill'
console.log(Temporal.Now.zonedDateTimeISO().toString())
```
-**B) Import as an ES module** without side effects:
+Or, import globally:
```js
-import { Temporal } from 'temporal-polyfill'
+import 'temporal-polyfill/global'
console.log(Temporal.Now.zonedDateTimeISO().toString())
```
-[Read more about temporal-polyfill](packages/temporal-polyfill/README.md)
+Use a `
+
+```
-## Repo Dev Commands
-```
-pnpm build
-pnpm watch
-pnpm test --watch
-pnpm test --coverage
-pnpm lint
-pnpm size
-```
+## Comparison with `@js-temporal/polyfill`
+
+
+
+ Package |
+
+ temporal-polyfill
+ |
+
+ @js-temporal/polyfill
+ |
+
+
+ Repo |
+
+
+ fullcalendar/temporal-polyfill
+
+ |
+
+
+ js-temporal/temporal-polyfill
+
+ |
+
+
+ Creators |
+ FullCalendar lead dev arshaw |
+ Champions of the Temporal proposal |
+
+
+ Minified+gzip size ✝ |
+ 20.0 kB |
+ 43.2 kB (+116%) |
+
+
+ Minified-only size ✝ |
+ 58.7 kB |
+ 206.0 kB (+251%) |
+
+
+ Spec compliance |
+
+ Strict compliance for common API.
+ Relaxed compliance for subclassing built-in types.
+ |
+
+ Strict compliance for entire API.
+ |
+
+
+ Spec date |
+
+ Nov 2023 (latest)
+ |
+
+ May 2023
+ |
+
+
+ BigInt Approach |
+ Internally avoids BigInt operations altogether |
+ Internally relies on JSBI |
+
+
+ Global usage in ESM |
+
+ import 'temporal-polyfill/global'
+ |
+ Not currently possible |
+
+
+
+✝ Compares [global.min.js](https://cdn.jsdelivr.net/npm/temporal-polyfill@0.2.0/global.min.js) with [index.esm.js](https://cdn.jsdelivr.net/npm/@js-temporal/polyfill@0.4.4/dist/index.esm.js), which are similarly transpiled.
+
+
+## Spec Compliance
+
+All calendar systems (ex: `chinese`, `persian`) and time zones are supported.
+
+Compliance with the latest version of the Temporal spec (Nov 2023) is near-perfect with the following intentional deviations:
+
+- `Duration::toString` does not display units greater than `Number.MAX_SAFE_INTEGER` according to spec. Precision is chosen differently.
+- *Custom implementations* of Calendars and TimeZones are queried differently. Only affects those subclassing built-in classes, which is extremely rare. See the CALLING entries in the [test-ignore file](https://github.com/fullcalendar/temporal/blob/main/packages/temporal-polyfill/scripts/test-config/expected-failures.txt).
+- There are believed to be 3 bugs in the Temporal spec itself, one of which [has been filed](https://github.com/tc39/proposal-temporal/issues/2742). See SPEC-BUG entries in the [test-ignore file](https://github.com/fullcalendar/temporal/blob/main/packages/temporal-polyfill/scripts/test-config/expected-failures.txt).
+- Canonicalization of time zone IDs is simplified, leveraging the built-in `Intl` API.
+- `Intl.DateTimeFormat` has not been polyfilled to accept number-offset values for the `timeZone` option.
+- Method descriptors and `Function::length` are not strictly compliant due to ES-related space-saving techniques.
+
+The [Official ECMAScript Conformance Test Suite](https://github.com/tc39/test262) has:
+
+- 6811 *total* Temporal-related test files
+- 6138 *passed* by `temporal-polyfill`
+- 495 *ignored* due to superficial method descriptor compliance
+- 178 *ignored* due to other aforementioned intentional deviations
+
+
+## Browser Support
+
+
+
+ Minimum required browsers:
+ |
+
+
+
+ Chrome 60 (Jul 2017) |
+ Firefox 55 (Aug 2017) |
+ Safari 11.1 (Mar 2018) |
+ Safari iOS 11.3 (Mar 2018) |
+ Edge 79 (Jan 2020) |
+ Node.js 14 (Apr 2020) |
+
+
+
+
+ If you transpile, you can support older browsers down to:
+ |
+
+
+
+ Chrome 57 (Mar 2017) |
+ Firefox 52 (Mar 2017) |
+ Safari 10 (Sep 2016) |
+ Safari iOS 10 (Sep 2016) |
+ Edge 15 (Apr 2017) |
+ Node.js 14 (Apr 2020) |
+
+
-[Temporal]: https://github.com/tc39/proposal-temporal
+
+
+
+## BigInt Considerations
+
+This polyfill works fine in environments that do not support [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt).
+
+However, to use methods that accept/emit them, your browser [must support BigInt](https://caniuse.com/bigint).
+
+Here's how to sidestep this browser compatibility issue:
+
+
+
+ ❌ Avoid microseconds/nanoseconds |
+ ✅ Use milliseconds instead |
+
+
+ instant.epochMicroseconds |
+ instant.epochMilliseconds |
+
+
+ instant.epochNanoseconds |
+ instant.epochMilliseconds |
+
+
+ Temporal.Instant.fromEpochMicroseconds(micro) |
+ Temporal.Instant.fromEpochMilliseconds(milli) |
+
+
+ Temporal.Instant.fromEpochNanoseconds(nano) |
+ Temporal.Instant.fromEpochMilliseconds(milli) |
+
+
+ new Temporal.Instant(nano) |
+ Temporal.Instant.fromEpochMilliseconds(milli) |
+
+
+ zonedDateTime.epochMicroseconds |
+ zonedDateTime.epochMilliseconds |
+
+
+ zonedDateTime.epochNanoseconds |
+ zonedDateTime.epochMilliseconds |
+
+
+
+ new Temporal.ZonedDateTime(nano, tz, cal)
+ |
+
+ Temporal.Instant.fromEpochMilliseconds(milli)
+ .toZonedDateTimeISO() // or toZonedDateTime
+ |
+
+
+
+## Tree-shakeable API
+
+🚧 Coming Soon
+
+For library authors and other devs who are hyper-concerned about bundle size, `temporal-polyfill` will be providing an alternate API designed for tree-shaking.
+
+```js
+import * as ZonedDateTime from 'temporal-polyfill/fns/zoneddatetime'
+
+const zdt = ZonedDateTime.from({ year: 2024, month: 1, day: 1 })
+const s = ZonedDateTime.toString(zdt) // not how you normally call a method!
+```
diff --git a/babel.config.cjs b/babel.config.cjs
deleted file mode 100644
index c6279a40..00000000
--- a/babel.config.cjs
+++ /dev/null
@@ -1,9 +0,0 @@
-// For Jest. Individual packages extend this config
-// TODO: when running test in "built-mode", don't do any babel transforming
-
-module.exports = {
- presets: [
- ['@babel/preset-env', { targets: { node: 'current' } }],
- '@babel/preset-typescript',
- ],
-}
diff --git a/scripts/config/eslint.cjs b/eslint.base.cjs
similarity index 100%
rename from scripts/config/eslint.cjs
rename to eslint.base.cjs
diff --git a/jest.config.base.cjs b/jest.config.base.cjs
deleted file mode 100644
index 11d8343d..00000000
--- a/jest.config.base.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-// Only contains simple config that does not reference third-party packages
-
-process.env.TZ = 'America/New_York'
-
-module.exports = {
- // timers: 'modern',
- // verbose: true,
-}
diff --git a/jest.config.cjs b/jest.config.cjs
deleted file mode 100644
index 46fca186..00000000
--- a/jest.config.cjs
+++ /dev/null
@@ -1,12 +0,0 @@
-const base = require('./jest.config.base.cjs')
-
-module.exports = {
- ...base,
- projects: [
- '/packages/temporal-polyfill',
- // '/packages/locale-weekinfo',
- // '/packages/locale-textinfo',
- // '/packages/datetimeformat-tokens',
- // '/packages/durationformat-polyfill',
- ],
-}
diff --git a/package.json b/package.json
index c0e0afbc..0510525c 100644
--- a/package.json
+++ b/package.json
@@ -21,46 +21,26 @@
"scripts": {
"preinstall": "npx only-allow pnpm",
"ci": "pnpm run clean && pnpm run lint && pnpm run build && pnpm run test",
- "build": "cd ./packages/temporal-polyfill && pnpm run build",
- "build:dev": "cd ./packages/temporal-polyfill && pnpm run build:dev",
- "watch": "cd ./packages/temporal-polyfill && pnpm run watch",
- "test": "cd ./packages/temporal-polyfill && pnpm run test",
- "test262": "cd ./packages/temporal-polyfill && pnpm run test262",
- "lint": "cd ./packages/temporal-polyfill && pnpm run lint",
- "size": "cd ./packages/temporal-polyfill && pnpm run size",
- "clean": "cd ./packages/temporal-polyfill && pnpm run clean",
- "locales-scrape": "node ./scripts/localesScrape.cjs",
- "locales-compile": "echo 'TODO: recursively execute locales-compile'"
+ "build": "pnpm --filter temporal-polyfill run build",
+ "dev": "pnpm --filter temporal-polyfill run dev",
+ "test": "pnpm --filter temporal-polyfill run test",
+ "lint": "pnpm --filter temporal-polyfill run lint",
+ "clean": "pnpm --filter temporal-polyfill run clean"
},
"devDependencies": {
- "@babel/core": "^7.14.6",
- "@babel/preset-env": "^7.14.5",
- "@babel/preset-typescript": "^7.15.0",
- "@rollup/plugin-node-resolve": "^13.3.0",
- "@types/jest": "^26.0.23",
"@typescript-eslint/eslint-plugin": "^4.22.1",
"@typescript-eslint/parser": "^4.22.1",
- "colors": "^1.4.0",
- "deepmerge": "^4.2.2",
- "esbuild": "^0.14.38",
"eslint": "^7.25.0",
"eslint-config-standard": "^16.0.3",
"eslint-import-resolver-node": "^0.3.6",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.1.0",
- "jest": "^27.0.4",
- "minimatch": "^5.0.1",
- "rollup": "^2.55.1",
- "rollup-plugin-dts": "^3.0.2",
- "rollup-plugin-esbuild": "^4.9.1",
- "rollup-plugin-terser": "^7.0.2",
- "typescript": "^4.3.5",
- "yargs": "^17.0.1"
+ "typescript": "^5.1.6"
},
"pnpm": {
"patchedDependencies": {
- "@js-temporal/temporal-test262-runner@0.9.0": "patches/@js-temporal__temporal-test262-runner@0.9.0.patch"
+ "export-size@0.7.0": "patches/export-size@0.7.0.patch"
}
}
}
diff --git a/packages/datetimeformat-tokens/babel.config.cjs b/packages/datetimeformat-tokens/babel.config.cjs
deleted file mode 100644
index 085ec4d0..00000000
--- a/packages/datetimeformat-tokens/babel.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = {
- extends: '../../babel.config.cjs',
-}
diff --git a/packages/datetimeformat-tokens/jest.config.cjs b/packages/datetimeformat-tokens/jest.config.cjs
deleted file mode 100644
index 6f34bce6..00000000
--- a/packages/datetimeformat-tokens/jest.config.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-const base = require('../../jest.config.base.cjs')
-
-module.exports = {
- ...base,
- roots: [
- '/src',
- ],
-}
diff --git a/packages/datetimeformat-tokens/package.json b/packages/datetimeformat-tokens/package.json
index 6fbab7ff..4e7ea0b0 100644
--- a/packages/datetimeformat-tokens/package.json
+++ b/packages/datetimeformat-tokens/package.json
@@ -35,8 +35,7 @@
"temporal-spec": "workspace:*"
},
"devDependencies": {
- "@types/jest": "^26.0.23",
- "jest": "^27.0.4",
+ "locale-data": "workspace:*",
"temporal-polyfill": "workspace:*"
}
}
diff --git a/packages/durationformat-polyfill/babel.config.cjs b/packages/durationformat-polyfill/babel.config.cjs
deleted file mode 100644
index 085ec4d0..00000000
--- a/packages/durationformat-polyfill/babel.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = {
- extends: '../../babel.config.cjs',
-}
diff --git a/packages/durationformat-polyfill/jest.config.cjs b/packages/durationformat-polyfill/jest.config.cjs
deleted file mode 100644
index 6f34bce6..00000000
--- a/packages/durationformat-polyfill/jest.config.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-const base = require('../../jest.config.base.cjs')
-
-module.exports = {
- ...base,
- roots: [
- '/src',
- ],
-}
diff --git a/packages/durationformat-polyfill/package.json b/packages/durationformat-polyfill/package.json
index 19175135..d0ed64b9 100644
--- a/packages/durationformat-polyfill/package.json
+++ b/packages/durationformat-polyfill/package.json
@@ -31,8 +31,6 @@
"temporal-spec": "workspace:*"
},
"devDependencies": {
- "@types/jest": "^26.0.23",
- "jest": "^27.0.4",
"temporal-polyfill": "workspace:*"
}
}
diff --git a/scripts/data/fullcalendar b/packages/locale-data/data/fullcalendar
similarity index 100%
rename from scripts/data/fullcalendar
rename to packages/locale-data/data/fullcalendar
diff --git a/scripts/data/moment b/packages/locale-data/data/moment
similarity index 100%
rename from scripts/data/moment
rename to packages/locale-data/data/moment
diff --git a/locales/af.json b/packages/locale-data/locales/af.json
similarity index 100%
rename from locales/af.json
rename to packages/locale-data/locales/af.json
diff --git a/locales/ar-DZ.json b/packages/locale-data/locales/ar-DZ.json
similarity index 100%
rename from locales/ar-DZ.json
rename to packages/locale-data/locales/ar-DZ.json
diff --git a/locales/ar-KW.json b/packages/locale-data/locales/ar-KW.json
similarity index 100%
rename from locales/ar-KW.json
rename to packages/locale-data/locales/ar-KW.json
diff --git a/locales/ar-LY.json b/packages/locale-data/locales/ar-LY.json
similarity index 100%
rename from locales/ar-LY.json
rename to packages/locale-data/locales/ar-LY.json
diff --git a/locales/ar-MA.json b/packages/locale-data/locales/ar-MA.json
similarity index 100%
rename from locales/ar-MA.json
rename to packages/locale-data/locales/ar-MA.json
diff --git a/locales/ar-SA.json b/packages/locale-data/locales/ar-SA.json
similarity index 100%
rename from locales/ar-SA.json
rename to packages/locale-data/locales/ar-SA.json
diff --git a/locales/ar-TN.json b/packages/locale-data/locales/ar-TN.json
similarity index 100%
rename from locales/ar-TN.json
rename to packages/locale-data/locales/ar-TN.json
diff --git a/locales/ar.json b/packages/locale-data/locales/ar.json
similarity index 100%
rename from locales/ar.json
rename to packages/locale-data/locales/ar.json
diff --git a/locales/az.json b/packages/locale-data/locales/az.json
similarity index 100%
rename from locales/az.json
rename to packages/locale-data/locales/az.json
diff --git a/locales/be.json b/packages/locale-data/locales/be.json
similarity index 100%
rename from locales/be.json
rename to packages/locale-data/locales/be.json
diff --git a/locales/bg.json b/packages/locale-data/locales/bg.json
similarity index 100%
rename from locales/bg.json
rename to packages/locale-data/locales/bg.json
diff --git a/locales/bm.json b/packages/locale-data/locales/bm.json
similarity index 100%
rename from locales/bm.json
rename to packages/locale-data/locales/bm.json
diff --git a/locales/bn-BD.json b/packages/locale-data/locales/bn-BD.json
similarity index 100%
rename from locales/bn-BD.json
rename to packages/locale-data/locales/bn-BD.json
diff --git a/locales/bn.json b/packages/locale-data/locales/bn.json
similarity index 100%
rename from locales/bn.json
rename to packages/locale-data/locales/bn.json
diff --git a/locales/bo.json b/packages/locale-data/locales/bo.json
similarity index 100%
rename from locales/bo.json
rename to packages/locale-data/locales/bo.json
diff --git a/locales/br.json b/packages/locale-data/locales/br.json
similarity index 100%
rename from locales/br.json
rename to packages/locale-data/locales/br.json
diff --git a/locales/bs.json b/packages/locale-data/locales/bs.json
similarity index 100%
rename from locales/bs.json
rename to packages/locale-data/locales/bs.json
diff --git a/locales/ca.json b/packages/locale-data/locales/ca.json
similarity index 100%
rename from locales/ca.json
rename to packages/locale-data/locales/ca.json
diff --git a/locales/cs.json b/packages/locale-data/locales/cs.json
similarity index 100%
rename from locales/cs.json
rename to packages/locale-data/locales/cs.json
diff --git a/locales/cv.json b/packages/locale-data/locales/cv.json
similarity index 100%
rename from locales/cv.json
rename to packages/locale-data/locales/cv.json
diff --git a/locales/cy.json b/packages/locale-data/locales/cy.json
similarity index 100%
rename from locales/cy.json
rename to packages/locale-data/locales/cy.json
diff --git a/locales/da.json b/packages/locale-data/locales/da.json
similarity index 100%
rename from locales/da.json
rename to packages/locale-data/locales/da.json
diff --git a/locales/de-AT.json b/packages/locale-data/locales/de-AT.json
similarity index 100%
rename from locales/de-AT.json
rename to packages/locale-data/locales/de-AT.json
diff --git a/locales/de-CH.json b/packages/locale-data/locales/de-CH.json
similarity index 100%
rename from locales/de-CH.json
rename to packages/locale-data/locales/de-CH.json
diff --git a/locales/de.json b/packages/locale-data/locales/de.json
similarity index 100%
rename from locales/de.json
rename to packages/locale-data/locales/de.json
diff --git a/locales/dv.json b/packages/locale-data/locales/dv.json
similarity index 100%
rename from locales/dv.json
rename to packages/locale-data/locales/dv.json
diff --git a/locales/el.json b/packages/locale-data/locales/el.json
similarity index 100%
rename from locales/el.json
rename to packages/locale-data/locales/el.json
diff --git a/locales/en-AU.json b/packages/locale-data/locales/en-AU.json
similarity index 100%
rename from locales/en-AU.json
rename to packages/locale-data/locales/en-AU.json
diff --git a/locales/en-CA.json b/packages/locale-data/locales/en-CA.json
similarity index 100%
rename from locales/en-CA.json
rename to packages/locale-data/locales/en-CA.json
diff --git a/locales/en-GB.json b/packages/locale-data/locales/en-GB.json
similarity index 100%
rename from locales/en-GB.json
rename to packages/locale-data/locales/en-GB.json
diff --git a/locales/en-IE.json b/packages/locale-data/locales/en-IE.json
similarity index 100%
rename from locales/en-IE.json
rename to packages/locale-data/locales/en-IE.json
diff --git a/locales/en-IL.json b/packages/locale-data/locales/en-IL.json
similarity index 100%
rename from locales/en-IL.json
rename to packages/locale-data/locales/en-IL.json
diff --git a/locales/en-IN.json b/packages/locale-data/locales/en-IN.json
similarity index 100%
rename from locales/en-IN.json
rename to packages/locale-data/locales/en-IN.json
diff --git a/locales/en-NZ.json b/packages/locale-data/locales/en-NZ.json
similarity index 100%
rename from locales/en-NZ.json
rename to packages/locale-data/locales/en-NZ.json
diff --git a/locales/en-SG.json b/packages/locale-data/locales/en-SG.json
similarity index 100%
rename from locales/en-SG.json
rename to packages/locale-data/locales/en-SG.json
diff --git a/locales/en.json b/packages/locale-data/locales/en.json
similarity index 100%
rename from locales/en.json
rename to packages/locale-data/locales/en.json
diff --git a/locales/eo.json b/packages/locale-data/locales/eo.json
similarity index 100%
rename from locales/eo.json
rename to packages/locale-data/locales/eo.json
diff --git a/locales/es-DO.json b/packages/locale-data/locales/es-DO.json
similarity index 100%
rename from locales/es-DO.json
rename to packages/locale-data/locales/es-DO.json
diff --git a/locales/es-MX.json b/packages/locale-data/locales/es-MX.json
similarity index 100%
rename from locales/es-MX.json
rename to packages/locale-data/locales/es-MX.json
diff --git a/locales/es-US.json b/packages/locale-data/locales/es-US.json
similarity index 100%
rename from locales/es-US.json
rename to packages/locale-data/locales/es-US.json
diff --git a/locales/es.json b/packages/locale-data/locales/es.json
similarity index 100%
rename from locales/es.json
rename to packages/locale-data/locales/es.json
diff --git a/locales/et.json b/packages/locale-data/locales/et.json
similarity index 100%
rename from locales/et.json
rename to packages/locale-data/locales/et.json
diff --git a/locales/eu.json b/packages/locale-data/locales/eu.json
similarity index 100%
rename from locales/eu.json
rename to packages/locale-data/locales/eu.json
diff --git a/locales/fa.json b/packages/locale-data/locales/fa.json
similarity index 100%
rename from locales/fa.json
rename to packages/locale-data/locales/fa.json
diff --git a/locales/fi.json b/packages/locale-data/locales/fi.json
similarity index 100%
rename from locales/fi.json
rename to packages/locale-data/locales/fi.json
diff --git a/locales/fil.json b/packages/locale-data/locales/fil.json
similarity index 100%
rename from locales/fil.json
rename to packages/locale-data/locales/fil.json
diff --git a/locales/fo.json b/packages/locale-data/locales/fo.json
similarity index 100%
rename from locales/fo.json
rename to packages/locale-data/locales/fo.json
diff --git a/locales/fr-CA.json b/packages/locale-data/locales/fr-CA.json
similarity index 100%
rename from locales/fr-CA.json
rename to packages/locale-data/locales/fr-CA.json
diff --git a/locales/fr-CH.json b/packages/locale-data/locales/fr-CH.json
similarity index 100%
rename from locales/fr-CH.json
rename to packages/locale-data/locales/fr-CH.json
diff --git a/locales/fr.json b/packages/locale-data/locales/fr.json
similarity index 100%
rename from locales/fr.json
rename to packages/locale-data/locales/fr.json
diff --git a/locales/fy.json b/packages/locale-data/locales/fy.json
similarity index 100%
rename from locales/fy.json
rename to packages/locale-data/locales/fy.json
diff --git a/locales/ga.json b/packages/locale-data/locales/ga.json
similarity index 100%
rename from locales/ga.json
rename to packages/locale-data/locales/ga.json
diff --git a/locales/gd.json b/packages/locale-data/locales/gd.json
similarity index 100%
rename from locales/gd.json
rename to packages/locale-data/locales/gd.json
diff --git a/locales/gl.json b/packages/locale-data/locales/gl.json
similarity index 100%
rename from locales/gl.json
rename to packages/locale-data/locales/gl.json
diff --git a/locales/gom-DEVA.json b/packages/locale-data/locales/gom-DEVA.json
similarity index 100%
rename from locales/gom-DEVA.json
rename to packages/locale-data/locales/gom-DEVA.json
diff --git a/locales/gom-LATN.json b/packages/locale-data/locales/gom-LATN.json
similarity index 100%
rename from locales/gom-LATN.json
rename to packages/locale-data/locales/gom-LATN.json
diff --git a/locales/gu.json b/packages/locale-data/locales/gu.json
similarity index 100%
rename from locales/gu.json
rename to packages/locale-data/locales/gu.json
diff --git a/locales/he.json b/packages/locale-data/locales/he.json
similarity index 100%
rename from locales/he.json
rename to packages/locale-data/locales/he.json
diff --git a/locales/hi.json b/packages/locale-data/locales/hi.json
similarity index 100%
rename from locales/hi.json
rename to packages/locale-data/locales/hi.json
diff --git a/locales/hr.json b/packages/locale-data/locales/hr.json
similarity index 100%
rename from locales/hr.json
rename to packages/locale-data/locales/hr.json
diff --git a/locales/hu.json b/packages/locale-data/locales/hu.json
similarity index 100%
rename from locales/hu.json
rename to packages/locale-data/locales/hu.json
diff --git a/locales/hy-AM.json b/packages/locale-data/locales/hy-AM.json
similarity index 100%
rename from locales/hy-AM.json
rename to packages/locale-data/locales/hy-AM.json
diff --git a/locales/id.json b/packages/locale-data/locales/id.json
similarity index 100%
rename from locales/id.json
rename to packages/locale-data/locales/id.json
diff --git a/locales/is.json b/packages/locale-data/locales/is.json
similarity index 100%
rename from locales/is.json
rename to packages/locale-data/locales/is.json
diff --git a/locales/it-CH.json b/packages/locale-data/locales/it-CH.json
similarity index 100%
rename from locales/it-CH.json
rename to packages/locale-data/locales/it-CH.json
diff --git a/locales/it.json b/packages/locale-data/locales/it.json
similarity index 100%
rename from locales/it.json
rename to packages/locale-data/locales/it.json
diff --git a/locales/ja.json b/packages/locale-data/locales/ja.json
similarity index 100%
rename from locales/ja.json
rename to packages/locale-data/locales/ja.json
diff --git a/locales/jv.json b/packages/locale-data/locales/jv.json
similarity index 100%
rename from locales/jv.json
rename to packages/locale-data/locales/jv.json
diff --git a/locales/ka.json b/packages/locale-data/locales/ka.json
similarity index 100%
rename from locales/ka.json
rename to packages/locale-data/locales/ka.json
diff --git a/locales/kk.json b/packages/locale-data/locales/kk.json
similarity index 100%
rename from locales/kk.json
rename to packages/locale-data/locales/kk.json
diff --git a/locales/km.json b/packages/locale-data/locales/km.json
similarity index 100%
rename from locales/km.json
rename to packages/locale-data/locales/km.json
diff --git a/locales/kn.json b/packages/locale-data/locales/kn.json
similarity index 100%
rename from locales/kn.json
rename to packages/locale-data/locales/kn.json
diff --git a/locales/ko.json b/packages/locale-data/locales/ko.json
similarity index 100%
rename from locales/ko.json
rename to packages/locale-data/locales/ko.json
diff --git a/locales/ku.json b/packages/locale-data/locales/ku.json
similarity index 100%
rename from locales/ku.json
rename to packages/locale-data/locales/ku.json
diff --git a/locales/ky.json b/packages/locale-data/locales/ky.json
similarity index 100%
rename from locales/ky.json
rename to packages/locale-data/locales/ky.json
diff --git a/locales/lb.json b/packages/locale-data/locales/lb.json
similarity index 100%
rename from locales/lb.json
rename to packages/locale-data/locales/lb.json
diff --git a/locales/lo.json b/packages/locale-data/locales/lo.json
similarity index 100%
rename from locales/lo.json
rename to packages/locale-data/locales/lo.json
diff --git a/locales/lt.json b/packages/locale-data/locales/lt.json
similarity index 100%
rename from locales/lt.json
rename to packages/locale-data/locales/lt.json
diff --git a/locales/lv.json b/packages/locale-data/locales/lv.json
similarity index 100%
rename from locales/lv.json
rename to packages/locale-data/locales/lv.json
diff --git a/locales/me.json b/packages/locale-data/locales/me.json
similarity index 100%
rename from locales/me.json
rename to packages/locale-data/locales/me.json
diff --git a/locales/mi.json b/packages/locale-data/locales/mi.json
similarity index 100%
rename from locales/mi.json
rename to packages/locale-data/locales/mi.json
diff --git a/locales/mk.json b/packages/locale-data/locales/mk.json
similarity index 100%
rename from locales/mk.json
rename to packages/locale-data/locales/mk.json
diff --git a/locales/ml.json b/packages/locale-data/locales/ml.json
similarity index 100%
rename from locales/ml.json
rename to packages/locale-data/locales/ml.json
diff --git a/locales/mn.json b/packages/locale-data/locales/mn.json
similarity index 100%
rename from locales/mn.json
rename to packages/locale-data/locales/mn.json
diff --git a/locales/mr.json b/packages/locale-data/locales/mr.json
similarity index 100%
rename from locales/mr.json
rename to packages/locale-data/locales/mr.json
diff --git a/locales/ms-MY.json b/packages/locale-data/locales/ms-MY.json
similarity index 100%
rename from locales/ms-MY.json
rename to packages/locale-data/locales/ms-MY.json
diff --git a/locales/ms.json b/packages/locale-data/locales/ms.json
similarity index 100%
rename from locales/ms.json
rename to packages/locale-data/locales/ms.json
diff --git a/locales/mt.json b/packages/locale-data/locales/mt.json
similarity index 100%
rename from locales/mt.json
rename to packages/locale-data/locales/mt.json
diff --git a/locales/my.json b/packages/locale-data/locales/my.json
similarity index 100%
rename from locales/my.json
rename to packages/locale-data/locales/my.json
diff --git a/locales/nb.json b/packages/locale-data/locales/nb.json
similarity index 100%
rename from locales/nb.json
rename to packages/locale-data/locales/nb.json
diff --git a/locales/ne.json b/packages/locale-data/locales/ne.json
similarity index 100%
rename from locales/ne.json
rename to packages/locale-data/locales/ne.json
diff --git a/locales/nl-BE.json b/packages/locale-data/locales/nl-BE.json
similarity index 100%
rename from locales/nl-BE.json
rename to packages/locale-data/locales/nl-BE.json
diff --git a/locales/nl.json b/packages/locale-data/locales/nl.json
similarity index 100%
rename from locales/nl.json
rename to packages/locale-data/locales/nl.json
diff --git a/locales/nn.json b/packages/locale-data/locales/nn.json
similarity index 100%
rename from locales/nn.json
rename to packages/locale-data/locales/nn.json
diff --git a/locales/oc-LNC.json b/packages/locale-data/locales/oc-LNC.json
similarity index 100%
rename from locales/oc-LNC.json
rename to packages/locale-data/locales/oc-LNC.json
diff --git a/locales/pa-IN.json b/packages/locale-data/locales/pa-IN.json
similarity index 100%
rename from locales/pa-IN.json
rename to packages/locale-data/locales/pa-IN.json
diff --git a/locales/pl.json b/packages/locale-data/locales/pl.json
similarity index 100%
rename from locales/pl.json
rename to packages/locale-data/locales/pl.json
diff --git a/locales/pt-BR.json b/packages/locale-data/locales/pt-BR.json
similarity index 100%
rename from locales/pt-BR.json
rename to packages/locale-data/locales/pt-BR.json
diff --git a/locales/pt.json b/packages/locale-data/locales/pt.json
similarity index 100%
rename from locales/pt.json
rename to packages/locale-data/locales/pt.json
diff --git a/locales/ro.json b/packages/locale-data/locales/ro.json
similarity index 100%
rename from locales/ro.json
rename to packages/locale-data/locales/ro.json
diff --git a/locales/ru.json b/packages/locale-data/locales/ru.json
similarity index 100%
rename from locales/ru.json
rename to packages/locale-data/locales/ru.json
diff --git a/locales/sd.json b/packages/locale-data/locales/sd.json
similarity index 100%
rename from locales/sd.json
rename to packages/locale-data/locales/sd.json
diff --git a/locales/se.json b/packages/locale-data/locales/se.json
similarity index 100%
rename from locales/se.json
rename to packages/locale-data/locales/se.json
diff --git a/locales/si.json b/packages/locale-data/locales/si.json
similarity index 100%
rename from locales/si.json
rename to packages/locale-data/locales/si.json
diff --git a/locales/sk.json b/packages/locale-data/locales/sk.json
similarity index 100%
rename from locales/sk.json
rename to packages/locale-data/locales/sk.json
diff --git a/locales/sl.json b/packages/locale-data/locales/sl.json
similarity index 100%
rename from locales/sl.json
rename to packages/locale-data/locales/sl.json
diff --git a/locales/sq.json b/packages/locale-data/locales/sq.json
similarity index 100%
rename from locales/sq.json
rename to packages/locale-data/locales/sq.json
diff --git a/locales/sr-CYRL.json b/packages/locale-data/locales/sr-CYRL.json
similarity index 100%
rename from locales/sr-CYRL.json
rename to packages/locale-data/locales/sr-CYRL.json
diff --git a/locales/sr.json b/packages/locale-data/locales/sr.json
similarity index 100%
rename from locales/sr.json
rename to packages/locale-data/locales/sr.json
diff --git a/locales/ss.json b/packages/locale-data/locales/ss.json
similarity index 100%
rename from locales/ss.json
rename to packages/locale-data/locales/ss.json
diff --git a/locales/sv.json b/packages/locale-data/locales/sv.json
similarity index 100%
rename from locales/sv.json
rename to packages/locale-data/locales/sv.json
diff --git a/locales/sw.json b/packages/locale-data/locales/sw.json
similarity index 100%
rename from locales/sw.json
rename to packages/locale-data/locales/sw.json
diff --git a/locales/ta.json b/packages/locale-data/locales/ta.json
similarity index 100%
rename from locales/ta.json
rename to packages/locale-data/locales/ta.json
diff --git a/locales/te.json b/packages/locale-data/locales/te.json
similarity index 100%
rename from locales/te.json
rename to packages/locale-data/locales/te.json
diff --git a/locales/tet.json b/packages/locale-data/locales/tet.json
similarity index 100%
rename from locales/tet.json
rename to packages/locale-data/locales/tet.json
diff --git a/locales/tg.json b/packages/locale-data/locales/tg.json
similarity index 100%
rename from locales/tg.json
rename to packages/locale-data/locales/tg.json
diff --git a/locales/th.json b/packages/locale-data/locales/th.json
similarity index 100%
rename from locales/th.json
rename to packages/locale-data/locales/th.json
diff --git a/locales/tk.json b/packages/locale-data/locales/tk.json
similarity index 100%
rename from locales/tk.json
rename to packages/locale-data/locales/tk.json
diff --git a/locales/tl-PH.json b/packages/locale-data/locales/tl-PH.json
similarity index 100%
rename from locales/tl-PH.json
rename to packages/locale-data/locales/tl-PH.json
diff --git a/locales/tlh.json b/packages/locale-data/locales/tlh.json
similarity index 100%
rename from locales/tlh.json
rename to packages/locale-data/locales/tlh.json
diff --git a/locales/tr.json b/packages/locale-data/locales/tr.json
similarity index 100%
rename from locales/tr.json
rename to packages/locale-data/locales/tr.json
diff --git a/locales/tzl.json b/packages/locale-data/locales/tzl.json
similarity index 100%
rename from locales/tzl.json
rename to packages/locale-data/locales/tzl.json
diff --git a/locales/tzm-LATN.json b/packages/locale-data/locales/tzm-LATN.json
similarity index 100%
rename from locales/tzm-LATN.json
rename to packages/locale-data/locales/tzm-LATN.json
diff --git a/locales/tzm.json b/packages/locale-data/locales/tzm.json
similarity index 100%
rename from locales/tzm.json
rename to packages/locale-data/locales/tzm.json
diff --git a/locales/ug-CN.json b/packages/locale-data/locales/ug-CN.json
similarity index 100%
rename from locales/ug-CN.json
rename to packages/locale-data/locales/ug-CN.json
diff --git a/locales/uk.json b/packages/locale-data/locales/uk.json
similarity index 100%
rename from locales/uk.json
rename to packages/locale-data/locales/uk.json
diff --git a/locales/ur.json b/packages/locale-data/locales/ur.json
similarity index 100%
rename from locales/ur.json
rename to packages/locale-data/locales/ur.json
diff --git a/locales/uz-LATN.json b/packages/locale-data/locales/uz-LATN.json
similarity index 100%
rename from locales/uz-LATN.json
rename to packages/locale-data/locales/uz-LATN.json
diff --git a/locales/uz.json b/packages/locale-data/locales/uz.json
similarity index 100%
rename from locales/uz.json
rename to packages/locale-data/locales/uz.json
diff --git a/locales/vi.json b/packages/locale-data/locales/vi.json
similarity index 100%
rename from locales/vi.json
rename to packages/locale-data/locales/vi.json
diff --git a/locales/x-PSEUDO.json b/packages/locale-data/locales/x-PSEUDO.json
similarity index 100%
rename from locales/x-PSEUDO.json
rename to packages/locale-data/locales/x-PSEUDO.json
diff --git a/locales/yo.json b/packages/locale-data/locales/yo.json
similarity index 100%
rename from locales/yo.json
rename to packages/locale-data/locales/yo.json
diff --git a/locales/zh-CN.json b/packages/locale-data/locales/zh-CN.json
similarity index 100%
rename from locales/zh-CN.json
rename to packages/locale-data/locales/zh-CN.json
diff --git a/locales/zh-HK.json b/packages/locale-data/locales/zh-HK.json
similarity index 100%
rename from locales/zh-HK.json
rename to packages/locale-data/locales/zh-HK.json
diff --git a/locales/zh-MO.json b/packages/locale-data/locales/zh-MO.json
similarity index 100%
rename from locales/zh-MO.json
rename to packages/locale-data/locales/zh-MO.json
diff --git a/locales/zh-TW.json b/packages/locale-data/locales/zh-TW.json
similarity index 100%
rename from locales/zh-TW.json
rename to packages/locale-data/locales/zh-TW.json
diff --git a/packages/locale-data/package.json b/packages/locale-data/package.json
new file mode 100644
index 00000000..7229d4a5
--- /dev/null
+++ b/packages/locale-data/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "locale-data",
+ "version": "0.0.0",
+ "dependencies": {
+ "colors": "^1.4.0",
+ "deepmerge": "^4.2.2",
+ "yargs": "^17.0.1"
+ }
+}
diff --git a/scripts/lib/localesList.cjs b/packages/locale-data/scripts/lib/localesList.cjs
similarity index 100%
rename from scripts/lib/localesList.cjs
rename to packages/locale-data/scripts/lib/localesList.cjs
diff --git a/scripts/localesScrape.cjs b/packages/locale-data/scripts/localesScrape.cjs
old mode 100644
new mode 100755
similarity index 94%
rename from scripts/localesScrape.cjs
rename to packages/locale-data/scripts/localesScrape.cjs
index b8b23f8d..95818bfc
--- a/scripts/localesScrape.cjs
+++ b/packages/locale-data/scripts/localesScrape.cjs
@@ -1,3 +1,5 @@
+#!/usr/bin/env node
+
const { existsSync, readdirSync } = require('fs')
const { readFile, writeFile } = require('fs/promises')
const { resolve } = require('path')
@@ -8,12 +10,8 @@ const { hideBin } = require('yargs/helpers')
require('colors')
const args = yargs(hideBin(process.argv)).boolean('v').argv
-const momentLocaleRoot = resolve(args.$0, '..', 'data/moment/locale')
-const fullcalendarLocaleRoot = resolve(
- args.$0,
- '..',
- 'data/fullcalendar/packages/core/src/locales',
-)
+const momentLocaleRoot = resolve(args.$0, '../data/moment/locale')
+const fullcalendarLocaleRoot = resolve(args.$0, '../data/fullcalendar/packages/core/src/locales')
async function writeLocale(localeStr) {
// Used for specific parsing nuances, intlStr represents the locale with the suffix capitalized
@@ -89,7 +87,7 @@ async function writeLocale(localeStr) {
const workspaceLocalePath = resolve(
args.$0,
- '../../locales',
+ '../locales',
`${intlStr}.json`,
)
@@ -118,7 +116,7 @@ async function writeLocale(localeStr) {
// Write to file
await writeFile(
- resolve(args.$0, '../../locales', `${intlStr}.json`),
+ resolve(args.$0, '../locales', `${intlStr}.json`),
JSON.stringify(localeData, null, 2),
{ encoding: 'utf8', flag: 'w' },
)
diff --git a/packages/locale-textinfo/babel.config.cjs b/packages/locale-textinfo/babel.config.cjs
deleted file mode 100644
index 085ec4d0..00000000
--- a/packages/locale-textinfo/babel.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = {
- extends: '../../babel.config.cjs',
-}
diff --git a/packages/locale-textinfo/jest.config.cjs b/packages/locale-textinfo/jest.config.cjs
deleted file mode 100644
index 6f34bce6..00000000
--- a/packages/locale-textinfo/jest.config.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-const base = require('../../jest.config.base.cjs')
-
-module.exports = {
- ...base,
- roots: [
- '/src',
- ],
-}
diff --git a/packages/locale-textinfo/package.json b/packages/locale-textinfo/package.json
index f271410a..5fa265ea 100644
--- a/packages/locale-textinfo/package.json
+++ b/packages/locale-textinfo/package.json
@@ -32,7 +32,6 @@
"locales-compile": "pnpm run compile-directions"
},
"devDependencies": {
- "@types/jest": "^26.0.23",
- "jest": "^27.0.4"
+ "locale-data": "workspace:*"
}
}
diff --git a/packages/locale-weekinfo/babel.config.cjs b/packages/locale-weekinfo/babel.config.cjs
deleted file mode 100644
index 085ec4d0..00000000
--- a/packages/locale-weekinfo/babel.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = {
- extends: '../../babel.config.cjs',
-}
diff --git a/packages/locale-weekinfo/jest.config.cjs b/packages/locale-weekinfo/jest.config.cjs
deleted file mode 100644
index 6f34bce6..00000000
--- a/packages/locale-weekinfo/jest.config.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-const base = require('../../jest.config.base.cjs')
-
-module.exports = {
- ...base,
- roots: [
- '/src',
- ],
-}
diff --git a/packages/locale-weekinfo/package.json b/packages/locale-weekinfo/package.json
index 0c8d77e1..51a4c7a0 100644
--- a/packages/locale-weekinfo/package.json
+++ b/packages/locale-weekinfo/package.json
@@ -33,7 +33,6 @@
"locales-compile": "pnpm compile-firstDays && pnpm compile-minimalDays"
},
"devDependencies": {
- "@types/jest": "^26.0.23",
- "jest": "^27.0.4"
+ "locale-data": "workspace:*"
}
}
diff --git a/packages/temporal-polyfill/.eslintrc.cjs b/packages/temporal-polyfill/.eslintrc.cjs
deleted file mode 100644
index 2a75cc97..00000000
--- a/packages/temporal-polyfill/.eslintrc.cjs
+++ /dev/null
@@ -1,2 +0,0 @@
-
-module.exports = require('../../scripts/config/eslint.cjs')
diff --git a/packages/temporal-polyfill/.eslintrc.cjs.disabled b/packages/temporal-polyfill/.eslintrc.cjs.disabled
new file mode 100644
index 00000000..9d9447f7
--- /dev/null
+++ b/packages/temporal-polyfill/.eslintrc.cjs.disabled
@@ -0,0 +1,2 @@
+
+module.exports = require('../../eslint.base.cjs')
diff --git a/packages/temporal-polyfill/README.md b/packages/temporal-polyfill/README.md
deleted file mode 100644
index 82b17a28..00000000
--- a/packages/temporal-polyfill/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-
-# temporal-polyfill
-
-A spec-compliant [Temporal] JavaScript polyfill in 16kb.
-
-[Codepen](https://codepen.io/arshaw/pen/VwrMQPJ?editors=1111)
-
-[CDN link](https://cdn.jsdelivr.net/npm/temporal-polyfill@0.0.8/dist/global.js)
-
-
-
-## Browser Support
-
-| Minimum required version if... | Chrome | Edge | Safari | Safari iOS | Firefox | Node |
-| --- | --- | --- | --- | --- | --- | --- |
-| ...transpiling to target environment | 36 (Jul 2014) | 14 (Aug 2016) | 10 (Sep 2016) | 10 (Sep 2016) | 52 (Mar 2017) | 12 (Apr 2019) |
-| ...leaving untranspiled | 60 (Jul 2017) | 79 (Jan 2020) | 11.1 (Mar 2018) | 11.3 (Mar 2018) | 55 (Aug 2017) | 12 (Apr 2019) |
-| ...using BigInt features | 67 (May 2018) | 79 (Jan 2020) | 14 (Sep 2020) | 14 (Sep 2020) | 68 (July 2019) | 12 (Apr 2019) |
-
-
-## BigInt Considerations
-
-This polyfill works fine in environments without [BigInt]. However, without BigInt, the following will throw errors:
-
-| ❌ Avoid microseconds/nanoseconds | ✅ Use milliseconds instead |
-| -------------------------------- | --------------------------- |
-| `instant.epochMicroseconds` | `instant.epochMilliseconds` |
-| `instant.epochNanoseconds` | `instant.epochMilliseconds` |
-| `Temporal.Instant.fromEpochMicroseconds(micro)` | `Temporal.Instant.fromEpochMilliseconds(milli)` |
-| `Temporal.Instant.fromEpochNanoseconds(nano)` | `Temporal.Instant.fromEpochMilliseconds(milli)` |
-| `new Temporal.Instant(nano)` | `Temporal.Instant.fromEpochMilliseconds(milli)` |
-| `zonedDateTime.epochMicroseconds` | `zonedDateTime.epochMilliseconds` |
-| `zonedDateTime.epochNanoseconds` | `zonedDateTime.epochMilliseconds` |
-| `new Temporal.ZonedDateTime(nano, tz, cal)` | `Temporal.Instant.fromEpochMilliseconds(milli).toZonedDateTimeISO()` |
-| | `Temporal.Instant.fromEpochMilliseconds(milli).toZonedDateTime(cal)` |
-
-FYI, it is not possible to properly polyfill BigInt. [More Information][JSBI-why]
-
-
-## Installation
-
-```
-npm install temporal-polyfill
-```
-
-**A) Import globally:**
-
-```js
-import 'temporal-polyfill/global'
-
-console.log(Temporal.Now.zonedDateTimeISO().toString())
-```
-
-**B) Import as an ES module** without side effects:
-
-```js
-import { Temporal } from 'temporal-polyfill'
-
-console.log(Temporal.Now.zonedDateTimeISO().toString())
-```
-
-**C)** The above techniques try using the built-in `Temporal` object and fall back to the polyfill.
-To guarantee using the polyfill, do this:
-
-```js
-import { Temporal } from 'temporal-polyfill/impl'
-
-console.log(Temporal.Now.zonedDateTimeISO().toString())
-```
-
-
-[Temporal]: https://github.com/tc39/proposal-temporal
-[BigInt]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt
-[JSBI-why]: https://github.com/GoogleChromeLabs/jsbi#why
diff --git a/packages/temporal-polyfill/babel.config.cjs b/packages/temporal-polyfill/babel.config.cjs
deleted file mode 100644
index 085ec4d0..00000000
--- a/packages/temporal-polyfill/babel.config.cjs
+++ /dev/null
@@ -1,4 +0,0 @@
-
-module.exports = {
- extends: '../../babel.config.cjs',
-}
diff --git a/packages/temporal-polyfill/dist/.npmignore b/packages/temporal-polyfill/dist/.npmignore
new file mode 100644
index 00000000..e8e373a5
--- /dev/null
+++ b/packages/temporal-polyfill/dist/.npmignore
@@ -0,0 +1,2 @@
+.tsc
+tsconfig.tsbuildinfo
diff --git a/packages/temporal-polyfill/jest-setup.js b/packages/temporal-polyfill/jest-setup.js
deleted file mode 100644
index 876f6ea6..00000000
--- a/packages/temporal-polyfill/jest-setup.js
+++ /dev/null
@@ -1,21 +0,0 @@
-
-/*
-Shims to make tests from @js-temporal/temporal-polyfill conform to Jest
-*/
-
-/*
-Ignore the returned value of test. The tests often do arrow functions like this:
- it('test name', () => doSomething())
-*/
-const origTest = global.test
-global.test = global.it = function(name, fn, timeout) {
- origTest(name, function() {
- fn() // don't forward return value
- }, timeout)
-}
-
-/*
-Simple aliases
-*/
-global.before = global.beforeEach
-global.after = global.afterEach
diff --git a/packages/temporal-polyfill/jest.config.cjs b/packages/temporal-polyfill/jest.config.cjs
deleted file mode 100644
index 8baae5b1..00000000
--- a/packages/temporal-polyfill/jest.config.cjs
+++ /dev/null
@@ -1,16 +0,0 @@
-const base = require('../../jest.config.base.cjs')
-
-module.exports = {
- ...base,
- setupFilesAfterEnv: [
- '/jest-setup.js',
- ],
- moduleNameMapper: {
- // TODO: supply the built file when in CI mode
- // TODO: way to test built files?
- 'temporal-polyfill/impl': '/src/impl.build.ts',
- },
- testMatch: [
- '/tests/**/*.js',
- ],
-}
diff --git a/packages/temporal-polyfill/misc/LICENSE.txt b/packages/temporal-polyfill/misc/LICENSE.txt
deleted file mode 100644
index 75c4ded4..00000000
--- a/packages/temporal-polyfill/misc/LICENSE.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2017, 2018, 2019, 2020 ECMA International
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
diff --git a/packages/temporal-polyfill/misc/expected-failures-before-node16.txt b/packages/temporal-polyfill/misc/expected-failures-before-node16.txt
deleted file mode 100644
index 624162ab..00000000
--- a/packages/temporal-polyfill/misc/expected-failures-before-node16.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-# Before Node 16, dateStyle/timeStyle options didn't conflict with other options
-intl402/Temporal/Instant/prototype/toLocaleString/options-conflict.js
-intl402/Temporal/PlainDate/prototype/toLocaleString/options-conflict.js
-intl402/Temporal/PlainDateTime/prototype/toLocaleString/options-conflict.js
-intl402/Temporal/PlainTime/prototype/toLocaleString/options-conflict.js
-intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-conflict.js
-
-# Before Node 16, calling an uncallable value seems to throw a RangeError, not a TypeError
-intl402/Temporal/PlainYearMonth/prototype/toLocaleString/timezone-getoffsetnanosecondsfor-not-callable.js
-intl402/Temporal/PlainMonthDay/prototype/toLocaleString/timezone-getoffsetnanosecondsfor-not-callable.js
-intl402/DateTimeFormat/prototype/format/temporal-objects-timezone-getoffsetnanosecondsfor-not-callable.js
-intl402/DateTimeFormat/prototype/formatRange/temporal-objects-timezone-getoffsetnanosecondsfor-not-callable.js
-intl402/DateTimeFormat/prototype/formatRangeToParts/temporal-objects-timezone-getoffsetnanosecondsfor-not-callable.js
-intl402/DateTimeFormat/prototype/formatToParts/temporal-objects-timezone-getoffsetnanosecondsfor-not-callable.js
-
-# For some reason, these tests (which are identical to the ones above) do pass.
-# TODO(issue 213): check if this could be because of a bug.
-# intl402/Temporal/PlainDate/prototype/toLocaleString/timezone-getoffsetnanosecondsfor-not-callable.js
-# intl402/Temporal/PlainDateTime/prototype/toLocaleString/timezone-getoffsetnanosecondsfor-not-callable.js
-# intl402/Temporal/PlainTime/prototype/toLocaleString/timezone-getoffsetnanosecondsfor-not-callable.js
-
diff --git a/packages/temporal-polyfill/misc/expected-failures-before-node18.txt b/packages/temporal-polyfill/misc/expected-failures-before-node18.txt
deleted file mode 100644
index 69367f62..00000000
--- a/packages/temporal-polyfill/misc/expected-failures-before-node18.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-# Intl.supportedValuesOf("timeZone") is only available starting in Node 18
-intl402/Temporal/TimeZone/supported-values-of.js
-intl402/Temporal/TimeZone/prototype/getNextTransition/transition-at-instant-boundaries.js
-intl402/Temporal/TimeZone/prototype/getPreviousTransition/transition-at-instant-boundaries.js
diff --git a/packages/temporal-polyfill/misc/expected-failures-opt.txt b/packages/temporal-polyfill/misc/expected-failures-opt.txt
deleted file mode 100644
index e3f1ca16..00000000
--- a/packages/temporal-polyfill/misc/expected-failures-opt.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-# Failures in this file only apply to the optimized, but not transpiled,
-# polyfill sources.
-
-# This is an issue with Terser optimizing away default parameters
-# See https://github.com/terser/terser/issues/1115
-built-ins/Temporal/Duration/compare/length.js
-built-ins/Temporal/PlainDate/from/length.js
-built-ins/Temporal/PlainDateTime/from/length.js
-built-ins/Temporal/PlainMonthDay/from/length.js
-built-ins/Temporal/PlainTime/from/length.js
-built-ins/Temporal/PlainYearMonth/from/length.js
-built-ins/Temporal/ZonedDateTime/from/length.js
-built-ins/Temporal/Calendar/prototype/dateAdd/length.js
-built-ins/Temporal/Calendar/prototype/dateFromFields/length.js
-built-ins/Temporal/Calendar/prototype/dateUntil/length.js
-built-ins/Temporal/Calendar/prototype/monthDayFromFields/length.js
-built-ins/Temporal/Calendar/prototype/yearMonthFromFields/length.js
-built-ins/Temporal/Duration/prototype/add/length.js
-built-ins/Temporal/Duration/prototype/subtract/length.js
-built-ins/Temporal/Duration/prototype/toLocaleString/length.js
-built-ins/Temporal/Duration/prototype/toString/length.js
-built-ins/Temporal/Instant/prototype/since/length.js
-built-ins/Temporal/Instant/prototype/toLocaleString/length.js
-built-ins/Temporal/Instant/prototype/toString/length.js
-built-ins/Temporal/Instant/prototype/until/length.js
-built-ins/Temporal/PlainDate/prototype/add/length.js
-built-ins/Temporal/PlainDate/prototype/since/length.js
-built-ins/Temporal/PlainDate/prototype/subtract/length.js
-built-ins/Temporal/PlainDate/prototype/toLocaleString/length.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/length.js
-built-ins/Temporal/PlainDate/prototype/toString/length.js
-built-ins/Temporal/PlainDate/prototype/until/length.js
-built-ins/Temporal/PlainDate/prototype/with/length.js
-built-ins/Temporal/PlainDateTime/prototype/add/length.js
-built-ins/Temporal/PlainDateTime/prototype/since/length.js
-built-ins/Temporal/PlainDateTime/prototype/subtract/length.js
-built-ins/Temporal/PlainDateTime/prototype/toLocaleString/length.js
-built-ins/Temporal/PlainDateTime/prototype/toString/length.js
-built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/length.js
-built-ins/Temporal/PlainDateTime/prototype/until/length.js
-built-ins/Temporal/PlainDateTime/prototype/with/length.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/length.js
-built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/length.js
-built-ins/Temporal/PlainMonthDay/prototype/toString/length.js
-built-ins/Temporal/PlainMonthDay/prototype/with/length.js
-built-ins/Temporal/PlainTime/prototype/since/length.js
-built-ins/Temporal/PlainTime/prototype/toLocaleString/length.js
-built-ins/Temporal/PlainTime/prototype/toString/length.js
-built-ins/Temporal/PlainTime/prototype/until/length.js
-built-ins/Temporal/PlainTime/prototype/with/length.js
-built-ins/Temporal/PlainYearMonth/prototype/add/length.js
-built-ins/Temporal/PlainYearMonth/prototype/since/length.js
-built-ins/Temporal/PlainYearMonth/prototype/subtract/length.js
-built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/length.js
-built-ins/Temporal/PlainYearMonth/prototype/toString/length.js
-built-ins/Temporal/PlainYearMonth/prototype/until/length.js
-built-ins/Temporal/PlainYearMonth/prototype/with/length.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/length.js
-built-ins/Temporal/ZonedDateTime/prototype/add/length.js
-built-ins/Temporal/ZonedDateTime/prototype/since/length.js
-built-ins/Temporal/ZonedDateTime/prototype/subtract/length.js
-built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/length.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/length.js
-built-ins/Temporal/ZonedDateTime/prototype/until/length.js
-built-ins/Temporal/ZonedDateTime/prototype/with/length.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/length.js
diff --git a/packages/temporal-polyfill/misc/expected-failures-todo-migrated-code.txt b/packages/temporal-polyfill/misc/expected-failures-todo-migrated-code.txt
deleted file mode 100644
index 064cec81..00000000
--- a/packages/temporal-polyfill/misc/expected-failures-todo-migrated-code.txt
+++ /dev/null
@@ -1,692 +0,0 @@
-# Failures in this file will be fixed after migrating the latest polyfill changes
-# from proposal-temporal.
-
-built-ins/Temporal/Calendar/from/calendar-case-insensitive.js
-built-ins/Temporal/Calendar/from/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/from/calendar-wrong-type.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/dateAdd/order-of-operations.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-propertybag-calendar-wrong-type.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/dateUntil/order-of-operations.js
-built-ins/Temporal/Calendar/prototype/day/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/day/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/day/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/day/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/day/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/id/custom-calendar.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/mergeFields/non-string-properties.js
-built-ins/Temporal/Calendar/prototype/mergeFields/order-of-operations.js
-built-ins/Temporal/Calendar/prototype/month/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/month/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/month/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/month/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/month/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/monthCode/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/year/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/year/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/year/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/year/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/year/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-calendar-datefromfields-called-with-null-prototype-fields.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-calendar-fields-undefined.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-leap-second.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-number.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-leap-second.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-number.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-string.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-wrong-type.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-year-zero.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-calendar-annotation.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-critical-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-invalid.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-multiple-time-zone.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-time-separators.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-time-zone-annotation.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-unknown-annotation.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-with-utc-designator.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-wrong-type.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-zoneddatetime-convert.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-zoneddatetime-slots.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-zoneddatetime-timezone-getoffsetnanosecondsfor-non-integer.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-zoneddatetime-timezone-getoffsetnanosecondsfor-out-of-range.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/basic.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/branding.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/builtin.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/calendar-datefromfields-called-with-options-undefined.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/calendar-fields-iterable.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/calendar-temporal-object.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/cross-year.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/infinity-throws-rangeerror.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/length.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/name.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/prop-desc.js
-built-ins/Temporal/Calendar/prototype/yearOfWeek/year-zero.js
-built-ins/Temporal/Duration/compare/order-of-operations.js
-built-ins/Temporal/Duration/compare/relativeto-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Duration/compare/relativeto-propertybag-timezone-wrong-type.js
-built-ins/Temporal/Duration/prototype/add/order-of-operations.js
-built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-calendar-fields-undefined.js
-built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-calendar-wrong-type.js
-built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-timezone-wrong-type.js
-built-ins/Temporal/Duration/prototype/add/relativeto-string-datetime.js
-built-ins/Temporal/Duration/prototype/round/nanoseconds-to-days-loop-indefinitely-2.js
-built-ins/Temporal/Duration/prototype/round/nanoseconds-to-days-precision-exact-mathematical-values-1.js
-built-ins/Temporal/Duration/prototype/round/nanoseconds-to-days-precision-exact-mathematical-values-2.js
-built-ins/Temporal/Duration/prototype/round/order-of-operations.js
-built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-calendar-fields-undefined.js
-built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-calendar-wrong-type.js
-built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-timezone-wrong-type.js
-built-ins/Temporal/Duration/prototype/round/relativeto-string-datetime.js
-built-ins/Temporal/Duration/prototype/subtract/order-of-operations.js
-built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-calendar-fields-undefined.js
-built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-calendar-wrong-type.js
-built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-timezone-wrong-type.js
-built-ins/Temporal/Duration/prototype/subtract/relativeto-string-datetime.js
-built-ins/Temporal/Duration/prototype/toString/fractionalseconddigits-non-integer.js
-built-ins/Temporal/Duration/prototype/toString/order-of-operations.js
-built-ins/Temporal/Duration/prototype/total/order-of-operations.js
-built-ins/Temporal/Duration/prototype/total/precision-exact-mathematical-values-1.js
-built-ins/Temporal/Duration/prototype/total/precision-exact-mathematical-values-2.js
-built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-calendar-fields-undefined.js
-built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-calendar-wrong-type.js
-built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-timezone-wrong-type.js
-built-ins/Temporal/Duration/prototype/total/relativeto-string-datetime.js
-built-ins/Temporal/Instant/compare/argument-string-calendar-annotation.js
-built-ins/Temporal/Instant/compare/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Instant/compare/argument-string-time-zone-annotation.js
-built-ins/Temporal/Instant/compare/argument-string-unknown-annotation.js
-built-ins/Temporal/Instant/from/argument-string-calendar-annotation.js
-built-ins/Temporal/Instant/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Instant/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/Instant/from/argument-string-unknown-annotation.js
-built-ins/Temporal/Instant/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/Instant/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Instant/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/Instant/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/Instant/prototype/since/argument-string-calendar-annotation.js
-built-ins/Temporal/Instant/prototype/since/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Instant/prototype/since/argument-string-time-zone-annotation.js
-built-ins/Temporal/Instant/prototype/since/argument-string-unknown-annotation.js
-built-ins/Temporal/Instant/prototype/since/order-of-operations.js
-built-ins/Temporal/Instant/prototype/toString/fractionalseconddigits-non-integer.js
-built-ins/Temporal/Instant/prototype/toString/order-of-operations.js
-built-ins/Temporal/Instant/prototype/toString/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Instant/prototype/toString/timezone-wrong-type.js
-built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-case-insensitive.js
-built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-wrong-type.js
-built-ins/Temporal/Instant/prototype/toZonedDateTime/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Instant/prototype/toZonedDateTime/timezone-wrong-type.js
-built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/timezone-wrong-type.js
-built-ins/Temporal/Instant/prototype/until/argument-string-calendar-annotation.js
-built-ins/Temporal/Instant/prototype/until/argument-string-date-with-utc-offset.js
-built-ins/Temporal/Instant/prototype/until/argument-string-time-zone-annotation.js
-built-ins/Temporal/Instant/prototype/until/argument-string-unknown-annotation.js
-built-ins/Temporal/Instant/prototype/until/order-of-operations.js
-built-ins/Temporal/Now/plainDate/calendar-case-insensitive.js
-built-ins/Temporal/Now/plainDate/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Now/plainDate/calendar-wrong-type.js
-built-ins/Temporal/Now/plainDate/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/plainDate/timezone-wrong-type.js
-built-ins/Temporal/Now/plainDateISO/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/plainDateISO/timezone-wrong-type.js
-built-ins/Temporal/Now/plainDateTime/calendar-case-insensitive.js
-built-ins/Temporal/Now/plainDateTime/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Now/plainDateTime/calendar-wrong-type.js
-built-ins/Temporal/Now/plainDateTime/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/plainDateTime/timezone-wrong-type.js
-built-ins/Temporal/Now/plainDateTimeISO/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/plainDateTimeISO/timezone-wrong-type.js
-built-ins/Temporal/Now/plainTimeISO/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/plainTimeISO/timezone-wrong-type.js
-built-ins/Temporal/Now/zonedDateTime/calendar-case-insensitive.js
-built-ins/Temporal/Now/zonedDateTime/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/Now/zonedDateTime/calendar-wrong-type.js
-built-ins/Temporal/Now/zonedDateTime/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/zonedDateTime/timezone-wrong-type.js
-built-ins/Temporal/Now/zonedDateTimeISO/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/Now/zonedDateTimeISO/timezone-wrong-type.js
-built-ins/Temporal/PlainDate/calendar-case-insensitive.js
-built-ins/Temporal/PlainDate/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/compare/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-wrong-type.js
-built-ins/Temporal/PlainDate/compare/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/compare/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/compare/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/compare/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/from/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/from/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/from/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/from/calendar-fields-custom.js
-built-ins/Temporal/PlainDate/from/order-of-operations.js
-built-ins/Temporal/PlainDate/prototype/dayOfWeek/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/dayOfYear/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/daysInMonth/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/daysInWeek/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/daysInYear/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/prototype/inLeapYear/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/monthsInYear/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/since/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/prototype/since/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/prototype/since/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/prototype/since/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/prototype/since/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/prototype/since/order-of-operations.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/prototype/toPlainMonthDay/calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/prototype/toString/calendar-tostring.js
-built-ins/Temporal/PlainDate/prototype/toString/calendarname-critical.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-wrong-type.js
-built-ins/Temporal/PlainDate/prototype/until/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/prototype/until/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDate/prototype/until/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDate/prototype/until/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDate/prototype/until/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDate/prototype/until/order-of-operations.js
-built-ins/Temporal/PlainDate/prototype/weekOfYear/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/with/calendar-fields-undefined.js
-built-ins/Temporal/PlainDate/prototype/with/order-of-operations.js
-built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-case-insensitive.js
-built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-wrong-type.js
-built-ins/Temporal/PlainDate/prototype/year/validate-calendar-value.js
-built-ins/Temporal/PlainDate/prototype/yearOfWeek/basic.js
-built-ins/Temporal/PlainDate/prototype/yearOfWeek/branding.js
-built-ins/Temporal/PlainDate/prototype/yearOfWeek/custom.js
-built-ins/Temporal/PlainDate/prototype/yearOfWeek/prop-desc.js
-built-ins/Temporal/PlainDate/prototype/yearOfWeek/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/compare/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-wrong-type.js
-built-ins/Temporal/PlainDateTime/compare/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/compare/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/compare/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/compare/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/from/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/from/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/from/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/from/order-of-operations.js
-built-ins/Temporal/PlainDateTime/prototype/dayOfWeek/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/dayOfYear/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/daysInMonth/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/daysInWeek/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/daysInYear/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/inLeapYear/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/monthsInYear/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/since/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/since/order-of-operations.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainMonthDay/calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainYearMonth/calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/toString/calendar-tostring.js
-built-ins/Temporal/PlainDateTime/prototype/toString/calendarname-critical.js
-built-ins/Temporal/PlainDateTime/prototype/toString/fractionalseconddigits-non-integer.js
-built-ins/Temporal/PlainDateTime/prototype/toString/order-of-operations.js
-built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/timezone-wrong-type.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/until/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/until/order-of-operations.js
-built-ins/Temporal/PlainDateTime/prototype/weekOfYear/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/with/calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/with/order-of-operations.js
-built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-wrong-type.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainDateTime/prototype/year/validate-calendar-value.js
-built-ins/Temporal/PlainDateTime/prototype/yearOfWeek/basic.js
-built-ins/Temporal/PlainDateTime/prototype/yearOfWeek/branding.js
-built-ins/Temporal/PlainDateTime/prototype/yearOfWeek/custom.js
-built-ins/Temporal/PlainDateTime/prototype/yearOfWeek/prop-desc.js
-built-ins/Temporal/PlainDateTime/prototype/yearOfWeek/validate-calendar-value.js
-built-ins/Temporal/PlainMonthDay/calendar-case-insensitive.js
-built-ins/Temporal/PlainMonthDay/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainMonthDay/from/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainMonthDay/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainMonthDay/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainMonthDay/from/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainMonthDay/from/order-of-operations.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/calendar-fields-undefined.js
-built-ins/Temporal/PlainMonthDay/prototype/toString/calendar-tostring.js
-built-ins/Temporal/PlainMonthDay/prototype/toString/calendarname-critical.js
-built-ins/Temporal/PlainMonthDay/prototype/with/calendar-fields-undefined.js
-built-ins/Temporal/PlainMonthDay/prototype/with/order-of-operations.js
-built-ins/Temporal/PlainTime/compare/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/compare/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/compare/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainTime/compare/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/compare/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/from/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/from/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainTime/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/from/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/prototype/add/precision-exact-mathematical-values-1.js
-built-ins/Temporal/PlainTime/prototype/add/precision-exact-mathematical-values-2.js
-built-ins/Temporal/PlainTime/prototype/add/precision-exact-mathematical-values-3.js
-built-ins/Temporal/PlainTime/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/prototype/equals/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainTime/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/prototype/since/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/prototype/since/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/prototype/since/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainTime/prototype/since/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/prototype/since/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/prototype/since/order-of-operations.js
-built-ins/Temporal/PlainTime/prototype/subtract/precision-exact-mathematical-values-1.js
-built-ins/Temporal/PlainTime/prototype/subtract/precision-exact-mathematical-values-2.js
-built-ins/Temporal/PlainTime/prototype/subtract/precision-exact-mathematical-values-3.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/prototype/toString/fractionalseconddigits-non-integer.js
-built-ins/Temporal/PlainTime/prototype/toString/order-of-operations.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/timezone-wrong-type.js
-built-ins/Temporal/PlainTime/prototype/until/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainTime/prototype/until/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainTime/prototype/until/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/PlainTime/prototype/until/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainTime/prototype/until/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainTime/prototype/until/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/calendar-case-insensitive.js
-built-ins/Temporal/PlainYearMonth/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainYearMonth/compare/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-wrong-type.js
-built-ins/Temporal/PlainYearMonth/compare/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainYearMonth/compare/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainYearMonth/compare/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainYearMonth/compare/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainYearMonth/from/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainYearMonth/from/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainYearMonth/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainYearMonth/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainYearMonth/from/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainYearMonth/from/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/prototype/add/calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/add/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/prototype/daysInMonth/validate-calendar-value.js
-built-ins/Temporal/PlainYearMonth/prototype/daysInYear/validate-calendar-value.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/inLeapYear/validate-calendar-value.js
-built-ins/Temporal/PlainYearMonth/prototype/monthsInYear/validate-calendar-value.js
-built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/since/calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/since/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/subtract/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/copies-merge-fields-object.js
-built-ins/Temporal/PlainYearMonth/prototype/toString/calendar-tostring.js
-built-ins/Temporal/PlainYearMonth/prototype/toString/calendarname-critical.js
-built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-calendar-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-date-with-utc-offset.js
-built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-time-zone-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-unknown-annotation.js
-built-ins/Temporal/PlainYearMonth/prototype/until/calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/until/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/prototype/with/calendar-fields-undefined.js
-built-ins/Temporal/PlainYearMonth/prototype/with/order-of-operations.js
-built-ins/Temporal/PlainYearMonth/prototype/year/validate-calendar-value.js
-built-ins/Temporal/TimeZone/from/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/TimeZone/from/timezone-wrong-type.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-calendar-fields-undefined.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/order-of-operations.js
-built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-case-insensitive.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-wrong-type.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-calendar-fields-undefined.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-calendar-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-date-with-utc-offset.js
-built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-time-zone-annotation.js
-built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-unknown-annotation.js
-built-ins/Temporal/TimeZone/prototype/id/custom-timezone.js
-built-ins/Temporal/ZonedDateTime/calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/compare/argument-calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-wrong-type.js
-built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-timezone-wrong-type.js
-built-ins/Temporal/ZonedDateTime/compare/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/compare/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/compare/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/compare/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/compare/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/from/argument-calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/from/argument-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/ZonedDateTime/from/argument-propertybag-timezone-wrong-type.js
-built-ins/Temporal/ZonedDateTime/from/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/from/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/from/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/from/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/from/offset-overrides-critical-flag.js
-built-ins/Temporal/ZonedDateTime/from/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/prototype/dayOfWeek/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/dayOfYear/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/daysInMonth/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/daysInWeek/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/daysInYear/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-timezone-wrong-type.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/prototype/hoursInDay/precision-exact-mathematical-values.js
-built-ins/Temporal/ZonedDateTime/prototype/inLeapYear/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/monthsInYear/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-timezone-wrong-type.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/since/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/calendar-tostring.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/calendarname-critical.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/fractionalseconddigits-non-integer.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/timezonename-critical.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-timezone-wrong-type.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/until/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/prototype/weekOfYear/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/with/calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/with/copies-merge-fields-object.js
-built-ins/Temporal/ZonedDateTime/prototype/with/order-of-operations.js
-built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-wrong-type.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-calendar-fields-undefined.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-case-insensitive.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-calendar-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-date-with-utc-offset.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-time-designator-required-for-disambiguation.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-time-zone-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-unknown-annotation.js
-built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/timezone-instance-does-not-get-timeZone-property.js
-built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/timezone-wrong-type.js
-built-ins/Temporal/ZonedDateTime/prototype/year/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/branding.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/custom.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/prop-desc.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/timezone-getoffsetnanosecondsfor-non-integer.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/timezone-getoffsetnanosecondsfor-not-callable.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/timezone-getoffsetnanosecondsfor-out-of-range.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/timezone-getoffsetnanosecondsfor-wrong-type.js
-built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/validate-calendar-value.js
-built-ins/Temporal/ZonedDateTime/timezone-instance-does-not-get-timeZone-property.js
-intl402/Temporal/Calendar/calendar-case-insensitive.js
-intl402/Temporal/Calendar/from/calendar-case-insensitive.js
-intl402/Temporal/Calendar/prototype/era/argument-calendar-fields-undefined.js
-intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-case-insensitive.js
-intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-intl402/Temporal/Calendar/prototype/era/argument-string-calendar-annotation.js
-intl402/Temporal/Calendar/prototype/era/argument-string-date-with-utc-offset.js
-intl402/Temporal/Calendar/prototype/era/argument-string-time-zone-annotation.js
-intl402/Temporal/Calendar/prototype/era/argument-string-unknown-annotation.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-calendar-fields-undefined.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-case-insensitive.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-instance-does-not-get-calendar-property.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-string-calendar-annotation.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-string-date-with-utc-offset.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-string-time-zone-annotation.js
-intl402/Temporal/Calendar/prototype/eraYear/argument-string-unknown-annotation.js
-intl402/Temporal/Calendar/prototype/yearOfWeek/infinity-throws-rangeerror.js
-intl402/Temporal/TimeZone/prototype/getNextTransition/transition-at-instant-boundaries.js
-intl402/Temporal/TimeZone/prototype/getPreviousTransition/transition-at-instant-boundaries.js
-intl402/Temporal/ZonedDateTime/prototype/withCalendar/calendar-case-insensitive.js
-built-ins/Temporal/Duration/prototype/add/nanoseconds-to-days-loop-indefinitely-2.js
-built-ins/Temporal/Duration/prototype/add/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
-built-ins/Temporal/Duration/prototype/round/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
-built-ins/Temporal/Duration/prototype/subtract/nanoseconds-to-days-loop-indefinitely-2.js
-built-ins/Temporal/Duration/prototype/subtract/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
-built-ins/Temporal/Duration/prototype/total/nanoseconds-to-days-loop-indefinitely-2.js
-built-ins/Temporal/Duration/prototype/total/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
-built-ins/Temporal/PlainDate/argument-convert.js
-built-ins/Temporal/ZonedDateTime/prototype/since/nanoseconds-to-days-loop-indefinitely-2.js
-built-ins/Temporal/ZonedDateTime/prototype/since/nanoseconds-to-days-range-errors.js
-built-ins/Temporal/ZonedDateTime/prototype/until/nanoseconds-to-days-loop-indefinitely-2.js
-built-ins/Temporal/ZonedDateTime/prototype/until/nanoseconds-to-days-range-errors.js
diff --git a/packages/temporal-polyfill/misc/expected-failures.txt b/packages/temporal-polyfill/misc/expected-failures.txt
deleted file mode 100644
index d9e39ed8..00000000
--- a/packages/temporal-polyfill/misc/expected-failures.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-# Failures in this file are expected to fail for all Test262 tests. To record
-# expected test failures for the transpiled or optimized builds of the polyfill,
-# see expected-failures-es5.txt and expected-failures-opt.txt respectively.
-
-# https://github.com/tc39/test262/pull/3548
-
-#
-# fullcalendar/temporal notes
-#
-# Start with `pn test262 'Calendar/**'`
-# Figure out `[input.high, input.low]` error
-#
diff --git a/packages/temporal-polyfill/package.json b/packages/temporal-polyfill/package.json
index f47d2d79..22b10942 100644
--- a/packages/temporal-polyfill/package.json
+++ b/packages/temporal-polyfill/package.json
@@ -1,8 +1,8 @@
{
"name": "temporal-polyfill",
- "version": "0.1.1",
+ "version": "0.2.0",
"title": "Temporal Polyfill",
- "description": "A spec-compliant Temporal JavaScript polyfill in 16kb",
+ "description": "A lightweight polyfill for Temporal, successor to the JavaScript Date object",
"author": {
"name": "Adam Shaw",
"email": "arshaw@users.noreply.github.com",
@@ -18,75 +18,55 @@
"copyright": "2022 Adam Shaw",
"repository": {
"type": "git",
- "url": "https://github.com/fullcalendar/temporal.git",
+ "url": "https://github.com/fullcalendar/temporal-polyfill.git",
"directory": "packages/temporal-polyfill"
},
"scripts": {
- "build": "pnpm run types && pnpm run bundle",
- "build:dev": "pnpm run types && NO_MIN=1 pnpm run bundle",
- "watch": "concurrently npm:types:watch npm:bundle:watch",
- "types": "tsc --build --preserveWatchOutput",
- "types:watch": "tsc --build --preserveWatchOutput --watch",
- "bundle": "rollup -c ../../scripts/config/pkgBundle.cjs",
- "bundle:watch": "rollup -c ../../scripts/config/pkgBundle.cjs --watch",
- "test": "jest .",
- "test262": "node ./runtest262.js",
+ "build": "pnpm run bundle:clean && pnpm run pkg-json && pnpm run tsc && pnpm run type-overrides && pnpm run bundle",
+ "dev": "pnpm run bundle:clean && pnpm run pkg-json && pnpm run tsc && pnpm run type-overrides && concurrently --prefix-colors green npm:tsc:dev npm:bundle:dev",
+ "tsc": "tsc --build",
+ "tsc:dev": "tsc --build --watch --pretty",
+ "tsc:clean": "rm -rf dist/.tsc dist/tsconfig.tsbuildinfo",
+ "type-overrides": "cp src/typeOverrides/*.d.ts dist",
+ "bundle": "./scripts/bundle.js",
+ "bundle:dev": "./scripts/bundle.js --dev",
+ "bundle:clean": "rm -rf dist/*.js dist/*.cjs dist/*.map dist/*.d.ts",
+ "pkg-json": "./scripts/pkg-json.js",
+ "pkg-json:clean": "rm -rf dist/package.json",
+ "test": "./scripts/test.js",
"lint": "eslint .",
- "size": "node ../../scripts/pkgSize.cjs",
- "clean": "node ../../scripts/pkgClean.cjs"
+ "clean": "pnpm run tsc:clean && pnpm run bundle:clean && pnpm run pkg-json:clean",
+ "size": "gzip-size --include-original dist/global.min.js && pnpm export-size ./dist"
},
"type": "module",
- "types": "./dist/index.d.ts",
- "main": "./dist/index.cjs",
- "module": "./dist/index.mjs",
- "exports": {
- ".": {
- "types": "./dist/index.d.ts",
- "require": "./dist/index.cjs",
- "import": "./dist/index.mjs"
- },
- "./impl": {
- "types": "./dist/impl.d.ts",
- "require": "./dist/impl.cjs",
- "import": "./dist/impl.mjs"
- },
- "./shim": {
- "types": "./dist/shim.d.ts",
- "require": "./dist/shim.cjs",
- "import": "./dist/shim.mjs"
- },
- "./global": {
- "types": "./dist/global.d.ts",
- "require": "./dist/global.cjs",
- "import": "./dist/global.mjs"
+ "buildConfig": {
+ "exports": {
+ ".": {},
+ "./impl": {},
+ "./global": {
+ "iife": true
+ }
}
},
- "sideEffects": [
- "./dist/global.*"
- ],
- "files": [
- "/src",
- "/dist",
- "/*.d.ts"
- ],
+ "publishConfig": {
+ "directory": "./dist",
+ "linkDirectory": true
+ },
"dependencies": {
- "temporal-spec": "~0.1.0"
+ "temporal-spec": "~0.2.0"
},
"devDependencies": {
- "@types/chai": "^4.2.22",
- "@types/jest": "^26.0.24",
+ "@js-temporal/temporal-test262-runner": "workspace:*",
+ "@rollup/plugin-terser": "^0.4.4",
"@types/node": "^16.9.1",
- "@js-temporal/temporal-test262-runner": "^0.9.0",
- "ansi-colors": "^4.1.3",
- "chai": "^4.3.4",
- "concurrently": "^7.6.0",
+ "concurrently": "^8.2.0",
"eslint": "^7.25.0",
- "jest": "^27.0.6",
- "jest-date-mock": "^1.0.8",
- "js-yaml": "^4.1.0",
- "progress": "^2.0.3",
- "rollup": "^2.55.1",
- "tiny-glob": "^0.2.9",
- "typescript": "^4.3.5"
+ "export-size": "^0.7.0",
+ "gzip-size": "^7.0.0",
+ "rollup": "^3.27.2",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "terser": "^5.19.2",
+ "typescript": "^5.1.6",
+ "yargs": "^17.7.2"
}
}
diff --git a/packages/temporal-polyfill/runtest262.js b/packages/temporal-polyfill/runtest262.js
deleted file mode 100644
index a78facdc..00000000
--- a/packages/temporal-polyfill/runtest262.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import runTest262 from '@js-temporal/temporal-test262-runner'
-
-const testGlobs = process.argv.slice(2)
-const noTimeoutIndex = testGlobs.indexOf('--no-timeout')
-const noTimeout = noTimeoutIndex !== -1
-if (noTimeout) {
- testGlobs.splice(noTimeoutIndex, 1)
-}
-
-const result = runTest262({
- test262Dir: 'test262',
- polyfillCodeFile: 'dist/global.js',
- expectedFailureFiles: [
- // from https://github.com/js-temporal/temporal-polyfill/blob/main/runtest262.mjs
- 'misc/expected-failures.txt',
- // 'misc/expected-failures-es5.txt',
- 'misc/expected-failures-opt.txt',
- 'misc/expected-failures-before-node18.txt',
- // 'misc/expected-failures-before-node16.txt',
- // 'misc/expected-failures-todo-migrated-code.txt',
- ],
- testGlobs,
- timeoutMsecs: (noTimeout ? (24 * 60 * 60) : 2) * 1000,
-})
-
-// if result is `true`, all tests succeeded
-process.exit(result ? 0 : 1)
diff --git a/packages/temporal-polyfill/scripts/bundle.js b/packages/temporal-polyfill/scripts/bundle.js
new file mode 100755
index 00000000..879f60ae
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/bundle.js
@@ -0,0 +1,219 @@
+#!/usr/bin/env node
+
+import { join as joinPaths, basename } from 'path'
+import { readFile } from 'fs/promises'
+import { rollup as rollupBuild, watch as rollupWatch } from 'rollup'
+import sourcemaps from 'rollup-plugin-sourcemaps'
+import terser from '@rollup/plugin-terser'
+
+// TODO: make DRY with pkg-json.js
+const extensions = {
+ esm: '.esm.js',
+ cjs: '.cjs',
+ iife: '.js',
+}
+
+writeBundles(
+ joinPaths(process.argv[1], '../..'),
+ process.argv.slice(2).includes('--dev'),
+)
+
+async function writeBundles(pkgDir, isDev) {
+ const configs = await buildConfigs(pkgDir, isDev)
+
+ await (isDev ? watchWithConfigs : buildWithConfigs)(configs)
+}
+
+async function buildConfigs(pkgDir, isDev) {
+ const temporalReservedWords = await readTemporalReservedWords(pkgDir)
+
+ const pkgJsonPath = joinPaths(pkgDir, 'package.json')
+ const pkgJson = JSON.parse(await readFile(pkgJsonPath))
+ const exportMap = pkgJson.buildConfig.exports
+ const moduleInputs = {}
+ const iifeConfigs = []
+
+ for (const exportPath in exportMap) {
+ const exportConfig = exportMap[exportPath]
+ const shortName = exportPath === '.' ? 'index' : exportPath.replace(/^\.\//, '')
+ const inputPath = joinPaths(pkgDir, 'dist/.tsc', shortName + '.js')
+
+ moduleInputs[shortName] = inputPath
+
+ if (exportConfig.iife) {
+ iifeConfigs.push({
+ input: inputPath,
+ onwarn,
+ plugins: [
+ // for reading sourcemaps from tsc
+ isDev && sourcemaps(),
+ ],
+ output: [
+ {
+ format: 'iife',
+ file: joinPaths('dist', shortName + extensions.iife),
+ sourcemap: isDev,
+ sourcemapExcludeSources: true,
+ plugins: [
+ !isDev && buildTerserPlugin({
+ humanReadable: true,
+ optimize: true,
+ })
+ ],
+ },
+ !isDev && {
+ format: 'iife',
+ file: joinPaths('dist', shortName + '.min' + extensions.iife),
+ plugins: [
+ buildTerserPlugin({
+ optimize: true,
+ mangleProps: true,
+ manglePropsExcept: temporalReservedWords,
+ }),
+ ]
+ }
+ ],
+ })
+ }
+ }
+
+ return [
+ {
+ input: moduleInputs,
+ onwarn,
+ output: [
+ {
+ format: 'cjs',
+ dir: 'dist',
+ entryFileNames: '[name]' + extensions.cjs,
+ chunkFileNames: `chunk-[${isDev ? 'name' : 'hash'}]` + extensions.cjs,
+ plugins: [
+ !isDev && buildTerserPlugin({
+ humanReadable: true,
+ optimize: true,
+ // don't mangleProps. CJS export names are affected
+ })
+ ]
+ },
+ {
+ format: 'es',
+ dir: 'dist',
+ entryFileNames: '[name]' + extensions.esm,
+ chunkFileNames: `chunk-[${isDev ? 'name' : 'hash'}]` + extensions.esm,
+ plugins: [
+ !isDev && buildTerserPlugin({
+ humanReadable: true,
+ optimize: true,
+ mangleProps: true,
+ manglePropsExcept: temporalReservedWords,
+ })
+ ],
+ }
+ ],
+ },
+ ...iifeConfigs,
+ ]
+}
+
+function buildWithConfigs(configs) {
+ return Promise.all(
+ configs.map(async (config) => {
+ const bundle = await rollupBuild(config)
+
+ return Promise.all(
+ arrayify(config.output).map((outputConfig) => {
+ return bundle.write(outputConfig)
+ })
+ )
+ })
+ )
+}
+
+async function watchWithConfigs(configs) {
+ const rollupWatcher = rollupWatch(configs)
+
+ return new Promise((resolve) => {
+ rollupWatcher.on('event', (ev) => {
+ switch (ev.code) {
+ case 'ERROR':
+ console.error(ev.error)
+ break
+ case 'BUNDLE_END':
+ console.log(formatWriteMessage(ev.input))
+ break
+ case 'END':
+ resolve()
+ break
+ }
+ })
+ })
+}
+
+function formatWriteMessage(input) {
+ const inputPaths = typeof input === 'object' ? Object.values(input) : [input]
+ const inputNames = inputPaths.map((inputPath) => basename(inputPath))
+
+ return `Bundled ${inputNames.join(', ')}`
+}
+
+function onwarn(warning) {
+ if (warning.code !== 'CIRCULAR_DEPENDENCY') {
+ console.error(warning.toString())
+ }
+}
+
+function arrayify(input) {
+ return Array.isArray(input) ? input : (input == null ? [] : [input])
+}
+
+// Terser
+// -------------------------------------------------------------------------------------------------
+
+const terserNameCache = {} // for keeping prop mangling consistent across files
+
+function buildTerserPlugin({
+ humanReadable = false,
+ optimize = false,
+ mangleProps = false,
+ manglePropsExcept,
+}) {
+ return terser({
+ compress: optimize && {
+ ecma: 2018,
+ passes: 3, // enough to remove dead object assignment, get lower size
+ keep_fargs: false, // remove unused function args
+ unsafe_arrows: true,
+ unsafe_methods: true,
+ booleans_as_integers: true,
+ hoist_funs: true,
+ },
+ // Unfortunately can't just mangle props and nothing else
+ mangle: mangleProps && {
+ keep_fnames: humanReadable,
+ keep_classnames: humanReadable,
+ properties: {
+ reserved: manglePropsExcept,
+ keep_quoted: true,
+ },
+ },
+ format: {
+ beautify: humanReadable,
+ braces: humanReadable,
+ indent_level: 2,
+ },
+ nameCache: terserNameCache,
+ })
+}
+
+const startsWithLetterRegExp = /^[a-zA-Z]/
+
+async function readTemporalReservedWords(pkgDir) {
+ const code = await readFile(joinPaths(pkgDir, '../temporal-spec/global.d.ts'), 'utf-8')
+ return code.split(/\W+/)
+ .filter((symbol) => symbol && startsWithLetterRegExp.test(symbol))
+ .concat([
+ 'resolvedOptions',
+ 'useGrouping',
+ 'relatedYear',
+ ])
+}
diff --git a/packages/temporal-polyfill/scripts/pkg-json.js b/packages/temporal-polyfill/scripts/pkg-json.js
new file mode 100755
index 00000000..08dc69fd
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/pkg-json.js
@@ -0,0 +1,43 @@
+#!/usr/bin/env node
+
+import { join as joinPaths } from 'path'
+import { readFile, writeFile } from 'fs/promises'
+
+writePkgJson(
+ joinPaths(process.argv[1], '../..')
+)
+
+async function writePkgJson(pkgDir) {
+ const srcPkgJsonPath = joinPaths(pkgDir, 'package.json')
+ const distPkgJsonPath = joinPaths(pkgDir, 'dist/package.json')
+
+ const srcPkgJson = JSON.parse(await readFile(srcPkgJsonPath))
+ const distPkgJson = { ...srcPkgJson }
+
+ const srcExportMap = srcPkgJson.buildConfig.exports
+ const distExportMap = {}
+
+ for (const exportPath in srcExportMap) {
+ const shortName = exportPath === '.' ? './index' : exportPath
+
+ // TODO: make DRY with bundle.js
+ distExportMap[exportPath] = {
+ types: shortName + '.d.ts',
+ require: shortName + '.cjs',
+ import: shortName + '.esm.js',
+ }
+ }
+
+ distPkgJson.types = distExportMap['.'].types
+ distPkgJson.main = distExportMap['.'].require
+ distPkgJson.module = distExportMap['.'].import
+ distPkgJson.unpkg = distPkgJson.jsdelivr = './global.min.js'
+ distPkgJson.exports = distExportMap
+
+ delete distPkgJson.scripts
+ delete distPkgJson.buildConfig
+ delete distPkgJson.publishConfig
+ delete distPkgJson.devDependencies
+
+ await writeFile(distPkgJsonPath, JSON.stringify(distPkgJson, undefined, 2))
+}
diff --git a/packages/temporal-polyfill/scripts/test-config/expected-failures-before-node16.txt b/packages/temporal-polyfill/scripts/test-config/expected-failures-before-node16.txt
new file mode 100644
index 00000000..4a04ff09
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/test-config/expected-failures-before-node16.txt
@@ -0,0 +1,10 @@
+# Before Node 16, dateStyle/timeStyle options didn't conflict with other options
+intl402/Temporal/Instant/prototype/toLocaleString/options-conflict.js
+intl402/Temporal/PlainDate/prototype/toLocaleString/options-conflict.js
+intl402/Temporal/PlainDateTime/prototype/toLocaleString/options-conflict.js
+intl402/Temporal/PlainTime/prototype/toLocaleString/options-conflict.js
+intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-conflict.js
+
+# Not sure why these tests fail in Node 14, but it's EOL so not worth investigating.
+built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/builtin-calendar-no-observable-calls.js
+built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/builtin-calendar-no-observable-calls.js
diff --git a/packages/temporal-polyfill/scripts/test-config/expected-failures-before-node18.txt b/packages/temporal-polyfill/scripts/test-config/expected-failures-before-node18.txt
new file mode 100644
index 00000000..23978368
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/test-config/expected-failures-before-node18.txt
@@ -0,0 +1,15 @@
+# timeZoneName: 'shortOffset' is only available starting in Node 18
+intl402/DateTimeFormat/constructor-options-timeZoneName-valid.js
+
+# Intl.supportedValuesOf("timeZone") is only available starting in Node 18
+intl402/Temporal/TimeZone/supported-values-of.js
+intl402/Temporal/TimeZone/prototype/equals/canonical-not-equal.js
+intl402/Temporal/TimeZone/prototype/equals/timezone-case-insensitive.js
+
+intl402/Temporal/TimeZone/prototype/getNextTransition/transition-at-instant-boundaries.js
+intl402/Temporal/TimeZone/prototype/getPreviousTransition/transition-at-instant-boundaries.js
+intl402/Temporal/PlainDate/prototype/toLocaleString/calendar-mismatch.js
+intl402/Temporal/PlainDateTime/prototype/toLocaleString/calendar-mismatch.js
+intl402/Temporal/PlainMonthDay/prototype/toLocaleString/calendar-mismatch.js
+intl402/Temporal/PlainYearMonth/prototype/toLocaleString/calendar-mismatch.js
+intl402/Temporal/ZonedDateTime/prototype/toLocaleString/calendar-mismatch.js
diff --git a/packages/temporal-polyfill/scripts/test-config/expected-failures-intl-format-norm.txt b/packages/temporal-polyfill/scripts/test-config/expected-failures-intl-format-norm.txt
new file mode 100644
index 00000000..5f9d0c58
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/test-config/expected-failures-intl-format-norm.txt
@@ -0,0 +1,8 @@
+
+# Really picky about whitespace between characters
+# Nothing we can do about this since it relies on Intl.DateTimeFormat
+staging/Intl402/Temporal/old/date-time-format.js
+staging/Intl402/Temporal/old/datetime-toLocaleString.js
+staging/Intl402/Temporal/old/instant-toLocaleString.js
+staging/Intl402/Temporal/old/time-toLocaleString.js
+intl402/DateTimeFormat/prototype/format/temporal-objects-resolved-time-zone.js
diff --git a/packages/temporal-polyfill/misc/expected-failures-es5.txt b/packages/temporal-polyfill/scripts/test-config/expected-failures-surface.txt
similarity index 57%
rename from packages/temporal-polyfill/misc/expected-failures-es5.txt
rename to packages/temporal-polyfill/scripts/test-config/expected-failures-surface.txt
index d0e61f29..58558e93 100644
--- a/packages/temporal-polyfill/misc/expected-failures-es5.txt
+++ b/packages/temporal-polyfill/scripts/test-config/expected-failures-surface.txt
@@ -1,355 +1,518 @@
-# Failures in this file only apply to the optimized and transpiled polyfill
-# sources.
-built-ins/Temporal/Calendar/from/builtin.js
-built-ins/Temporal/Calendar/from/not-a-constructor.js
-built-ins/Temporal/Duration/compare/builtin.js
-built-ins/Temporal/Duration/compare/not-a-constructor.js
-built-ins/Temporal/Duration/from/builtin.js
-built-ins/Temporal/Duration/from/not-a-constructor.js
-built-ins/Temporal/Instant/compare/builtin.js
-built-ins/Temporal/Instant/compare/not-a-constructor.js
-built-ins/Temporal/Instant/from/builtin.js
-built-ins/Temporal/Instant/from/not-a-constructor.js
-built-ins/Temporal/Instant/fromEpochMicroseconds/builtin.js
-built-ins/Temporal/Instant/fromEpochMicroseconds/not-a-constructor.js
-built-ins/Temporal/Instant/fromEpochMilliseconds/builtin.js
-built-ins/Temporal/Instant/fromEpochMilliseconds/not-a-constructor.js
-built-ins/Temporal/Instant/fromEpochNanoseconds/builtin.js
-built-ins/Temporal/Instant/fromEpochNanoseconds/not-a-constructor.js
-built-ins/Temporal/Instant/fromEpochSeconds/builtin.js
-built-ins/Temporal/Instant/fromEpochSeconds/not-a-constructor.js
-built-ins/Temporal/Now/instant/not-a-constructor.js
-built-ins/Temporal/Now/plainDateTime/not-a-constructor.js
-built-ins/Temporal/Now/plainDateTimeISO/not-a-constructor.js
-built-ins/Temporal/Now/timeZone/not-a-constructor.js
-built-ins/Temporal/Now/zonedDateTime/not-a-constructor.js
-built-ins/Temporal/Now/zonedDateTimeISO/not-a-constructor.js
-built-ins/Temporal/PlainDate/compare/builtin.js
-built-ins/Temporal/PlainDate/compare/not-a-constructor.js
-built-ins/Temporal/PlainDate/from/builtin.js
-built-ins/Temporal/PlainDate/from/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/compare/builtin.js
-built-ins/Temporal/PlainDateTime/compare/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/from/builtin.js
-built-ins/Temporal/PlainDateTime/from/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/from/builtin.js
-built-ins/Temporal/PlainMonthDay/from/not-a-constructor.js
-built-ins/Temporal/PlainTime/compare/builtin.js
-built-ins/Temporal/PlainTime/compare/not-a-constructor.js
-built-ins/Temporal/PlainTime/from/builtin.js
-built-ins/Temporal/PlainTime/from/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/compare/builtin.js
-built-ins/Temporal/PlainYearMonth/compare/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/from/builtin.js
-built-ins/Temporal/PlainYearMonth/from/not-a-constructor.js
-built-ins/Temporal/TimeZone/from/builtin.js
-built-ins/Temporal/TimeZone/from/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/compare/builtin.js
-built-ins/Temporal/ZonedDateTime/compare/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/from/builtin.js
-built-ins/Temporal/ZonedDateTime/from/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/dateAdd/builtin.js
-built-ins/Temporal/Calendar/prototype/dateAdd/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/dateFromFields/builtin.js
-built-ins/Temporal/Calendar/prototype/dateFromFields/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/dateUntil/builtin.js
-built-ins/Temporal/Calendar/prototype/dateUntil/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/day/builtin.js
-built-ins/Temporal/Calendar/prototype/day/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/builtin.js
-built-ins/Temporal/Calendar/prototype/dayOfWeek/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/dayOfYear/builtin.js
+####################################################################################################
+# Surface-level JS Lang-related incompatibilities, like how class methods are defined
+####################################################################################################
+# cd test262/test
+
+#
+# find built-ins/Temporal intl402/Temporal -name 'length.js'
+#
+built-ins/Temporal/PlainMonthDay/length.js
+built-ins/Temporal/PlainMonthDay/from/length.js
+built-ins/Temporal/PlainMonthDay/prototype/with/length.js
+built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/length.js
+built-ins/Temporal/PlainMonthDay/prototype/equals/length.js
+built-ins/Temporal/PlainDateTime/length.js
+built-ins/Temporal/PlainDateTime/from/length.js
+built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/length.js
+built-ins/Temporal/PlainDateTime/prototype/with/length.js
+built-ins/Temporal/PlainDateTime/prototype/subtract/length.js
+built-ins/Temporal/PlainDateTime/prototype/since/length.js
+built-ins/Temporal/PlainDateTime/prototype/withCalendar/length.js
+built-ins/Temporal/PlainDateTime/prototype/withPlainDate/length.js
+built-ins/Temporal/PlainDateTime/prototype/until/length.js
+built-ins/Temporal/PlainDateTime/prototype/equals/length.js
+built-ins/Temporal/PlainDateTime/prototype/add/length.js
+built-ins/Temporal/PlainDateTime/prototype/round/length.js
+built-ins/Temporal/PlainYearMonth/length.js
+built-ins/Temporal/PlainYearMonth/from/length.js
+built-ins/Temporal/PlainYearMonth/prototype/with/length.js
+built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/length.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/length.js
+built-ins/Temporal/PlainYearMonth/prototype/since/length.js
+built-ins/Temporal/PlainYearMonth/prototype/until/length.js
+built-ins/Temporal/PlainYearMonth/prototype/equals/length.js
+built-ins/Temporal/PlainYearMonth/prototype/add/length.js
+built-ins/Temporal/Calendar/length.js
+built-ins/Temporal/Calendar/prototype/dayOfYear/length.js
+built-ins/Temporal/Calendar/prototype/month/length.js
+built-ins/Temporal/Calendar/prototype/dateFromFields/length.js
+built-ins/Temporal/Calendar/prototype/dateAdd/length.js
+built-ins/Temporal/Calendar/prototype/mergeFields/length.js
+built-ins/Temporal/Calendar/prototype/monthCode/length.js
+built-ins/Temporal/Calendar/prototype/monthDayFromFields/length.js
+built-ins/Temporal/Calendar/prototype/yearMonthFromFields/length.js
+built-ins/Temporal/Calendar/prototype/daysInWeek/length.js
+built-ins/Temporal/Calendar/prototype/inLeapYear/length.js
+built-ins/Temporal/Calendar/prototype/daysInMonth/length.js
+built-ins/Temporal/Calendar/prototype/year/length.js
+built-ins/Temporal/Calendar/prototype/dateUntil/length.js
+built-ins/Temporal/Calendar/prototype/dayOfWeek/length.js
+built-ins/Temporal/Calendar/prototype/fields/length.js
+built-ins/Temporal/Calendar/prototype/weekOfYear/length.js
+built-ins/Temporal/Calendar/prototype/yearOfWeek/length.js
+built-ins/Temporal/Calendar/prototype/day/length.js
+built-ins/Temporal/Calendar/prototype/daysInYear/length.js
+built-ins/Temporal/Calendar/prototype/monthsInYear/length.js
+built-ins/Temporal/TimeZone/length.js
+built-ins/Temporal/TimeZone/prototype/getInstantFor/length.js
+built-ins/Temporal/TimeZone/prototype/getPreviousTransition/length.js
+built-ins/Temporal/TimeZone/prototype/getNextTransition/length.js
+built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/length.js
+built-ins/Temporal/TimeZone/prototype/equals/length.js
+built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/length.js
+built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/length.js
+built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/length.js
+built-ins/Temporal/ZonedDateTime/length.js
+built-ins/Temporal/ZonedDateTime/from/length.js
+built-ins/Temporal/ZonedDateTime/prototype/with/length.js
+built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/length.js
+built-ins/Temporal/ZonedDateTime/prototype/subtract/length.js
+built-ins/Temporal/ZonedDateTime/prototype/since/length.js
+built-ins/Temporal/ZonedDateTime/prototype/withCalendar/length.js
+built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/length.js
+built-ins/Temporal/ZonedDateTime/prototype/until/length.js
+built-ins/Temporal/ZonedDateTime/prototype/equals/length.js
+built-ins/Temporal/ZonedDateTime/prototype/add/length.js
+built-ins/Temporal/ZonedDateTime/prototype/round/length.js
+built-ins/Temporal/Instant/length.js
+built-ins/Temporal/Instant/prototype/toZonedDateTime/length.js
+built-ins/Temporal/Instant/prototype/subtract/length.js
+built-ins/Temporal/Instant/prototype/since/length.js
+built-ins/Temporal/Instant/prototype/until/length.js
+built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/length.js
+built-ins/Temporal/Instant/prototype/equals/length.js
+built-ins/Temporal/Instant/prototype/add/length.js
+built-ins/Temporal/Instant/prototype/round/length.js
+built-ins/Temporal/PlainTime/from/length.js
+built-ins/Temporal/PlainTime/prototype/toZonedDateTime/length.js
+built-ins/Temporal/PlainTime/prototype/with/length.js
+built-ins/Temporal/PlainTime/prototype/toPlainDateTime/length.js
+built-ins/Temporal/PlainTime/prototype/subtract/length.js
+built-ins/Temporal/PlainTime/prototype/since/length.js
+built-ins/Temporal/PlainTime/prototype/until/length.js
+built-ins/Temporal/PlainTime/prototype/equals/length.js
+built-ins/Temporal/PlainTime/prototype/add/length.js
+built-ins/Temporal/PlainTime/prototype/round/length.js
+built-ins/Temporal/PlainDate/length.js
+built-ins/Temporal/PlainDate/from/length.js
+built-ins/Temporal/PlainDate/prototype/toZonedDateTime/length.js
+built-ins/Temporal/PlainDate/prototype/with/length.js
+built-ins/Temporal/PlainDate/prototype/subtract/length.js
+built-ins/Temporal/PlainDate/prototype/since/length.js
+built-ins/Temporal/PlainDate/prototype/withCalendar/length.js
+built-ins/Temporal/PlainDate/prototype/until/length.js
+built-ins/Temporal/PlainDate/prototype/equals/length.js
+built-ins/Temporal/PlainDate/prototype/add/length.js
+built-ins/Temporal/Duration/prototype/with/length.js
+built-ins/Temporal/Duration/prototype/subtract/length.js
+built-ins/Temporal/Duration/prototype/total/length.js
+built-ins/Temporal/Duration/prototype/add/length.js
+built-ins/Temporal/Duration/prototype/round/length.js
+built-ins/Temporal/Duration/compare/length.js
+intl402/Temporal/Calendar/prototype/eraYear/length.js
+intl402/Temporal/Calendar/prototype/era/length.js
+
+#
+# find built-ins/Temporal intl402/Temporal -name 'not-a-constructor.js'
+#
+built-ins/Temporal/PlainMonthDay/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/with/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/getCalendar/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/equals/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainMonthDay/prototype/getISOFields/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/with/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainMonthDay/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainDate/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/since/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/withCalendar/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/withPlainDate/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/until/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/getCalendar/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/equals/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/withPlainTime/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/add/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainYearMonth/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainTime/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/round/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/getISOFields/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/with/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/since/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/until/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/getCalendar/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/equals/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/add/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/getISOFields/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/toJSON/not-a-constructor.js
built-ins/Temporal/Calendar/prototype/dayOfYear/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/builtin.js
-built-ins/Temporal/Calendar/prototype/daysInMonth/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/builtin.js
-built-ins/Temporal/Calendar/prototype/daysInWeek/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/daysInYear/builtin.js
-built-ins/Temporal/Calendar/prototype/daysInYear/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/fields/builtin.js
-EXPECTED built-ins/Temporal/Calendar/prototype/fields/long-input.js
-built-ins/Temporal/Calendar/prototype/fields/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/builtin.js
-built-ins/Temporal/Calendar/prototype/inLeapYear/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/mergeFields/builtin.js
-built-ins/Temporal/Calendar/prototype/mergeFields/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/month/builtin.js
built-ins/Temporal/Calendar/prototype/month/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/monthCode/builtin.js
+built-ins/Temporal/Calendar/prototype/dateFromFields/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/dateAdd/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/mergeFields/not-a-constructor.js
built-ins/Temporal/Calendar/prototype/monthCode/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/monthDayFromFields/builtin.js
built-ins/Temporal/Calendar/prototype/monthDayFromFields/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/builtin.js
-built-ins/Temporal/Calendar/prototype/monthsInYear/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/toJSON/builtin.js
-built-ins/Temporal/Calendar/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/toString/builtin.js
+built-ins/Temporal/Calendar/prototype/yearMonthFromFields/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/daysInWeek/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/inLeapYear/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/daysInMonth/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/year/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/dateUntil/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/dayOfWeek/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/fields/not-a-constructor.js
built-ins/Temporal/Calendar/prototype/toString/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/weekOfYear/builtin.js
built-ins/Temporal/Calendar/prototype/weekOfYear/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/year/builtin.js
-built-ins/Temporal/Calendar/prototype/year/not-a-constructor.js
-built-ins/Temporal/Calendar/prototype/yearMonthFromFields/builtin.js
-built-ins/Temporal/Calendar/prototype/yearMonthFromFields/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/abs/builtin.js
-built-ins/Temporal/Duration/prototype/abs/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/add/builtin.js
-built-ins/Temporal/Duration/prototype/add/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/negated/builtin.js
-built-ins/Temporal/Duration/prototype/negated/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/round/builtin.js
-built-ins/Temporal/Duration/prototype/round/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/subtract/builtin.js
-built-ins/Temporal/Duration/prototype/subtract/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/toJSON/builtin.js
-built-ins/Temporal/Duration/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/toLocaleString/builtin.js
-built-ins/Temporal/Duration/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/toString/builtin.js
-built-ins/Temporal/Duration/prototype/toString/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/total/builtin.js
-built-ins/Temporal/Duration/prototype/total/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/valueOf/builtin.js
-built-ins/Temporal/Duration/prototype/valueOf/not-a-constructor.js
-built-ins/Temporal/Duration/prototype/with/builtin.js
-built-ins/Temporal/Duration/prototype/with/name.js
-built-ins/Temporal/Duration/prototype/with/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/add/builtin.js
-built-ins/Temporal/Instant/prototype/add/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/equals/builtin.js
-built-ins/Temporal/Instant/prototype/equals/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/round/builtin.js
-built-ins/Temporal/Instant/prototype/round/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/since/builtin.js
-built-ins/Temporal/Instant/prototype/since/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/subtract/builtin.js
-built-ins/Temporal/Instant/prototype/subtract/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/toJSON/builtin.js
+built-ins/Temporal/Calendar/prototype/yearOfWeek/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/day/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/daysInYear/not-a-constructor.js
+built-ins/Temporal/Calendar/prototype/monthsInYear/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getInstantFor/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getPreviousTransition/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getNextTransition/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/equals/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/toString/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/startOfDay/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/with/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainDateTime/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainDate/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/since/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/withCalendar/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/getTimeZone/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/until/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/getCalendar/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toInstant/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/equals/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/add/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toString/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainTime/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/round/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/getISOFields/not-a-constructor.js
built-ins/Temporal/Instant/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/toLocaleString/builtin.js
-built-ins/Temporal/Instant/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/toString/builtin.js
-built-ins/Temporal/Instant/prototype/toString/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/toZonedDateTime/builtin.js
built-ins/Temporal/Instant/prototype/toZonedDateTime/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/builtin.js
-built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/until/builtin.js
+built-ins/Temporal/Instant/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/Instant/prototype/since/not-a-constructor.js
built-ins/Temporal/Instant/prototype/until/not-a-constructor.js
-built-ins/Temporal/Instant/prototype/valueOf/builtin.js
+built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/not-a-constructor.js
built-ins/Temporal/Instant/prototype/valueOf/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/add/builtin.js
-built-ins/Temporal/PlainDate/prototype/add/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/equals/builtin.js
-built-ins/Temporal/PlainDate/prototype/equals/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/getISOFields/builtin.js
-built-ins/Temporal/PlainDate/prototype/getISOFields/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/since/builtin.js
-built-ins/Temporal/PlainDate/prototype/since/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/subtract/builtin.js
-built-ins/Temporal/PlainDate/prototype/subtract/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toJSON/builtin.js
+built-ins/Temporal/Instant/prototype/equals/not-a-constructor.js
+built-ins/Temporal/Instant/prototype/add/not-a-constructor.js
+built-ins/Temporal/Instant/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/Instant/prototype/toString/not-a-constructor.js
+built-ins/Temporal/Instant/prototype/round/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/toZonedDateTime/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/with/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/toPlainDateTime/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/since/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/until/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/equals/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/add/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/round/not-a-constructor.js
+built-ins/Temporal/PlainTime/prototype/getISOFields/not-a-constructor.js
built-ins/Temporal/PlainDate/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toLocaleString/builtin.js
-built-ins/Temporal/PlainDate/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/builtin.js
-built-ins/Temporal/PlainDate/prototype/toPlainDateTime/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toPlainMonthDay/builtin.js
-built-ins/Temporal/PlainDate/prototype/toPlainMonthDay/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/builtin.js
-built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toString/builtin.js
-built-ins/Temporal/PlainDate/prototype/toString/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/toZonedDateTime/builtin.js
built-ins/Temporal/PlainDate/prototype/toZonedDateTime/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/until/builtin.js
-built-ins/Temporal/PlainDate/prototype/until/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/valueOf/builtin.js
-built-ins/Temporal/PlainDate/prototype/valueOf/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/with/builtin.js
-built-ins/Temporal/PlainDate/prototype/with/name.js
built-ins/Temporal/PlainDate/prototype/with/not-a-constructor.js
-built-ins/Temporal/PlainDate/prototype/withCalendar/builtin.js
+built-ins/Temporal/PlainDate/prototype/toPlainMonthDay/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/toPlainDateTime/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/since/not-a-constructor.js
built-ins/Temporal/PlainDate/prototype/withCalendar/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/add/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/add/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/equals/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/equals/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/getISOFields/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/getISOFields/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/round/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/round/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/since/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/since/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/subtract/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/subtract/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toJSON/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toLocaleString/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainDate/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainDate/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainMonthDay/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainMonthDay/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainTime/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainTime/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainYearMonth/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toPlainYearMonth/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/toString/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/until/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/getCalendar/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/equals/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/add/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainDate/prototype/getISOFields/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/with/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/total/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/add/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/abs/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/toString/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/round/not-a-constructor.js
+built-ins/Temporal/Duration/prototype/negated/not-a-constructor.js
+intl402/Temporal/Calendar/prototype/eraYear/not-a-constructor.js
+intl402/Temporal/Calendar/prototype/era/not-a-constructor.js
+
+#
+# find built-ins/Temporal intl402/Temporal -name 'builtin.js'
+#
+built-ins/Temporal/PlainMonthDay/prototype/toJSON/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/with/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/getCalendar/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/valueOf/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/equals/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/toString/builtin.js
+built-ins/Temporal/PlainMonthDay/prototype/getISOFields/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/toJSON/builtin.js
built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/until/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/until/not-a-constructor.js
-built-ins/Temporal/PlainDateTime/prototype/valueOf/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/valueOf/not-a-constructor.js
built-ins/Temporal/PlainDateTime/prototype/with/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/with/name.js
-built-ins/Temporal/PlainDateTime/prototype/with/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainMonthDay/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainDate/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/subtract/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/since/builtin.js
built-ins/Temporal/PlainDateTime/prototype/withCalendar/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/withCalendar/not-a-constructor.js
built-ins/Temporal/PlainDateTime/prototype/withPlainDate/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainDate/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/until/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/getCalendar/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/valueOf/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/equals/builtin.js
built-ins/Temporal/PlainDateTime/prototype/withPlainTime/builtin.js
-built-ins/Temporal/PlainDateTime/prototype/withPlainTime/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/equals/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/getISOFields/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/getISOFields/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/toJSON/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/toString/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/toString/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/valueOf/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/valueOf/not-a-constructor.js
-built-ins/Temporal/PlainMonthDay/prototype/with/builtin.js
-built-ins/Temporal/PlainMonthDay/prototype/with/name.js
-built-ins/Temporal/PlainMonthDay/prototype/with/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/add/builtin.js
-built-ins/Temporal/PlainTime/prototype/add/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/equals/builtin.js
-built-ins/Temporal/PlainTime/prototype/equals/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/getISOFields/builtin.js
-built-ins/Temporal/PlainTime/prototype/getISOFields/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/round/builtin.js
-built-ins/Temporal/PlainTime/prototype/round/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/since/builtin.js
-built-ins/Temporal/PlainTime/prototype/since/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/subtract/builtin.js
-built-ins/Temporal/PlainTime/prototype/subtract/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/toJSON/builtin.js
-built-ins/Temporal/PlainTime/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/toLocaleString/builtin.js
-built-ins/Temporal/PlainTime/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/builtin.js
-built-ins/Temporal/PlainTime/prototype/toPlainDateTime/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/toString/builtin.js
-built-ins/Temporal/PlainTime/prototype/toString/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/builtin.js
-built-ins/Temporal/PlainTime/prototype/toZonedDateTime/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/until/builtin.js
-built-ins/Temporal/PlainTime/prototype/until/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/valueOf/builtin.js
-built-ins/Temporal/PlainTime/prototype/valueOf/not-a-constructor.js
-built-ins/Temporal/PlainTime/prototype/with/builtin.js
-built-ins/Temporal/PlainTime/prototype/with/name.js
-built-ins/Temporal/PlainTime/prototype/with/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/add/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/add/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/equals/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/getISOFields/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/getISOFields/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/since/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/since/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/subtract/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/subtract/not-a-constructor.js
+built-ins/Temporal/PlainDateTime/prototype/add/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainYearMonth/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/toLocaleString/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/toString/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainTime/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/round/builtin.js
+built-ins/Temporal/PlainDateTime/prototype/getISOFields/builtin.js
built-ins/Temporal/PlainYearMonth/prototype/toJSON/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/with/builtin.js
built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/toString/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/toString/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/builtin.js
+built-ins/Temporal/PlainYearMonth/prototype/since/builtin.js
built-ins/Temporal/PlainYearMonth/prototype/until/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/until/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/getCalendar/builtin.js
built-ins/Temporal/PlainYearMonth/prototype/valueOf/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/valueOf/not-a-constructor.js
-built-ins/Temporal/PlainYearMonth/prototype/with/builtin.js
-built-ins/Temporal/PlainYearMonth/prototype/with/name.js
-built-ins/Temporal/PlainYearMonth/prototype/with/not-a-constructor.js
+built-ins/Temporal/PlainYearMonth/prototype/equals/builtin.js
+built-ins/Temporal/PlainYearMonth/prototype/add/builtin.js
+built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/builtin.js
+built-ins/Temporal/PlainYearMonth/prototype/toString/builtin.js
+built-ins/Temporal/PlainYearMonth/prototype/getISOFields/builtin.js
+built-ins/Temporal/Calendar/prototype/toJSON/builtin.js
+built-ins/Temporal/Calendar/prototype/dayOfYear/builtin.js
+built-ins/Temporal/Calendar/prototype/month/builtin.js
+built-ins/Temporal/Calendar/prototype/dateFromFields/builtin.js
+built-ins/Temporal/Calendar/prototype/dateAdd/builtin.js
+built-ins/Temporal/Calendar/prototype/mergeFields/builtin.js
+built-ins/Temporal/Calendar/prototype/monthCode/builtin.js
+built-ins/Temporal/Calendar/prototype/monthDayFromFields/builtin.js
+built-ins/Temporal/Calendar/prototype/yearMonthFromFields/builtin.js
+built-ins/Temporal/Calendar/prototype/daysInWeek/builtin.js
+built-ins/Temporal/Calendar/prototype/inLeapYear/builtin.js
+built-ins/Temporal/Calendar/prototype/daysInMonth/builtin.js
+built-ins/Temporal/Calendar/prototype/year/builtin.js
+built-ins/Temporal/Calendar/prototype/dateUntil/builtin.js
+built-ins/Temporal/Calendar/prototype/dayOfWeek/builtin.js
+built-ins/Temporal/Calendar/prototype/fields/builtin.js
+built-ins/Temporal/Calendar/prototype/toString/builtin.js
+built-ins/Temporal/Calendar/prototype/weekOfYear/builtin.js
+built-ins/Temporal/Calendar/prototype/yearOfWeek/builtin.js
+built-ins/Temporal/Calendar/prototype/day/builtin.js
+built-ins/Temporal/Calendar/prototype/daysInYear/builtin.js
+built-ins/Temporal/Calendar/prototype/monthsInYear/builtin.js
+built-ins/Temporal/TimeZone/prototype/toJSON/builtin.js
built-ins/Temporal/TimeZone/prototype/getInstantFor/builtin.js
-built-ins/Temporal/TimeZone/prototype/getInstantFor/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getPreviousTransition/builtin.js
built-ins/Temporal/TimeZone/prototype/getNextTransition/builtin.js
-built-ins/Temporal/TimeZone/prototype/getNextTransition/not-a-constructor.js
-built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/builtin.js
-built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/not-a-constructor.js
built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/builtin.js
-built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/not-a-constructor.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/builtin.js
-built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/not-a-constructor.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/builtin.js
-built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/not-a-constructor.js
-built-ins/Temporal/TimeZone/prototype/getPreviousTransition/builtin.js
-built-ins/Temporal/TimeZone/prototype/getPreviousTransition/not-a-constructor.js
-built-ins/Temporal/TimeZone/prototype/toJSON/builtin.js
-built-ins/Temporal/TimeZone/prototype/toJSON/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/equals/builtin.js
built-ins/Temporal/TimeZone/prototype/toString/builtin.js
-built-ins/Temporal/TimeZone/prototype/toString/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/add/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/add/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/equals/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/getISOFields/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/getISOFields/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/round/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/round/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/since/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/since/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/startOfDay/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/startOfDay/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/subtract/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/subtract/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toInstant/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toInstant/not-a-constructor.js
+built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/builtin.js
+built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/builtin.js
+built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/builtin.js
built-ins/Temporal/ZonedDateTime/prototype/toJSON/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toJSON/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainDate/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainDate/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainDateTime/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainDateTime/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainTime/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainTime/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/toString/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/until/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/until/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/valueOf/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/valueOf/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/startOfDay/builtin.js
built-ins/Temporal/ZonedDateTime/prototype/with/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/with/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/with/name.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainDateTime/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainDate/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/subtract/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/since/builtin.js
built-ins/Temporal/ZonedDateTime/prototype/withCalendar/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/withCalendar/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/getTimeZone/builtin.js
built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/until/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/getCalendar/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toInstant/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/valueOf/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/equals/builtin.js
built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/not-a-constructor.js
-built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/builtin.js
-built-ins/Temporal/ZonedDateTime/prototype/withTimeZone/not-a-constructor.js
-intl402/Temporal/Calendar/prototype/era/builtin.js
-intl402/Temporal/Calendar/prototype/era/not-a-constructor.js
+built-ins/Temporal/ZonedDateTime/prototype/add/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toString/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainTime/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/round/builtin.js
+built-ins/Temporal/ZonedDateTime/prototype/getISOFields/builtin.js
+built-ins/Temporal/Instant/prototype/toJSON/builtin.js
+built-ins/Temporal/Instant/prototype/toZonedDateTime/builtin.js
+built-ins/Temporal/Instant/prototype/subtract/builtin.js
+built-ins/Temporal/Instant/prototype/since/builtin.js
+built-ins/Temporal/Instant/prototype/until/builtin.js
+built-ins/Temporal/Instant/prototype/toZonedDateTimeISO/builtin.js
+built-ins/Temporal/Instant/prototype/valueOf/builtin.js
+built-ins/Temporal/Instant/prototype/equals/builtin.js
+built-ins/Temporal/Instant/prototype/add/builtin.js
+built-ins/Temporal/Instant/prototype/toLocaleString/builtin.js
+built-ins/Temporal/Instant/prototype/toString/builtin.js
+built-ins/Temporal/Instant/prototype/round/builtin.js
+built-ins/Temporal/PlainTime/prototype/toJSON/builtin.js
+built-ins/Temporal/PlainTime/prototype/toZonedDateTime/builtin.js
+built-ins/Temporal/PlainTime/prototype/with/builtin.js
+built-ins/Temporal/PlainTime/prototype/toPlainDateTime/builtin.js
+built-ins/Temporal/PlainTime/prototype/subtract/builtin.js
+built-ins/Temporal/PlainTime/prototype/since/builtin.js
+built-ins/Temporal/PlainTime/prototype/until/builtin.js
+built-ins/Temporal/PlainTime/prototype/valueOf/builtin.js
+built-ins/Temporal/PlainTime/prototype/equals/builtin.js
+built-ins/Temporal/PlainTime/prototype/add/builtin.js
+built-ins/Temporal/PlainTime/prototype/toLocaleString/builtin.js
+built-ins/Temporal/PlainTime/prototype/toString/builtin.js
+built-ins/Temporal/PlainTime/prototype/round/builtin.js
+built-ins/Temporal/PlainTime/prototype/getISOFields/builtin.js
+built-ins/Temporal/PlainDate/prototype/toJSON/builtin.js
+built-ins/Temporal/PlainDate/prototype/toZonedDateTime/builtin.js
+built-ins/Temporal/PlainDate/prototype/with/builtin.js
+built-ins/Temporal/PlainDate/prototype/toPlainMonthDay/builtin.js
+built-ins/Temporal/PlainDate/prototype/toPlainDateTime/builtin.js
+built-ins/Temporal/PlainDate/prototype/subtract/builtin.js
+built-ins/Temporal/PlainDate/prototype/since/builtin.js
+built-ins/Temporal/PlainDate/prototype/withCalendar/builtin.js
+built-ins/Temporal/PlainDate/prototype/until/builtin.js
+built-ins/Temporal/PlainDate/prototype/getCalendar/builtin.js
+built-ins/Temporal/PlainDate/prototype/valueOf/builtin.js
+built-ins/Temporal/PlainDate/prototype/equals/builtin.js
+built-ins/Temporal/PlainDate/prototype/add/builtin.js
+built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/builtin.js
+built-ins/Temporal/PlainDate/prototype/toLocaleString/builtin.js
+built-ins/Temporal/PlainDate/prototype/toString/builtin.js
+built-ins/Temporal/PlainDate/prototype/getISOFields/builtin.js
+built-ins/Temporal/Duration/prototype/toJSON/builtin.js
+built-ins/Temporal/Duration/prototype/with/builtin.js
+built-ins/Temporal/Duration/prototype/subtract/builtin.js
+built-ins/Temporal/Duration/prototype/valueOf/builtin.js
+built-ins/Temporal/Duration/prototype/total/builtin.js
+built-ins/Temporal/Duration/prototype/add/builtin.js
+built-ins/Temporal/Duration/prototype/abs/builtin.js
+built-ins/Temporal/Duration/prototype/toLocaleString/builtin.js
+built-ins/Temporal/Duration/prototype/toString/builtin.js
+built-ins/Temporal/Duration/prototype/round/builtin.js
+built-ins/Temporal/Duration/prototype/negated/builtin.js
intl402/Temporal/Calendar/prototype/eraYear/builtin.js
-intl402/Temporal/Calendar/prototype/eraYear/not-a-constructor.js
+intl402/Temporal/Calendar/prototype/era/builtin.js
+
+# prop-desc
+built-ins/Temporal/PlainDate/prototype/prop-desc.js
+built-ins/Temporal/PlainDateTime/prototype/prop-desc.js
+built-ins/Temporal/PlainYearMonth/prototype/prop-desc.js
+built-ins/Temporal/PlainMonthDay/prototype/prop-desc.js
+built-ins/Temporal/PlainTime/prototype/prop-desc.js
+built-ins/Temporal/Instant/prototype/prop-desc.js
+built-ins/Temporal/Duration/prototype/prop-desc.js
+built-ins/Temporal/Calendar/prototype/prop-desc.js
+built-ins/Temporal/ZonedDateTime/prototype/prop-desc.js
+built-ins/Temporal/TimeZone/prototype/prop-desc.js
+
+# not allowed to call built-in utilities like Number.isFinite or Math.sign
+built-ins/Temporal/Duration/call-builtin.js
+
+# we use array spreading internally
+built-ins/Temporal/PlainMonthDay/from/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainMonthDay/prototype/with/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainMonthDay/prototype/equals/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/from/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/with/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainMonthDay/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/since/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/until/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/equals/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/prototype/toPlainYearMonth/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDateTime/compare/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/from/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/with/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/since/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/since/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/until/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/until/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/equals/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/prototype/add/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainYearMonth/compare/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/dayOfYear/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/month/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/dateAdd/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/monthCode/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/daysInWeek/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/inLeapYear/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/daysInMonth/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/year/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/dateUntil/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/weekOfYear/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/day/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/daysInYear/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Calendar/prototype/monthsInYear/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/from/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/with/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/since/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/until/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/equals/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/ZonedDateTime/compare/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/from/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/prototype/with/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/prototype/toPlainMonthDay/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/prototype/since/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/prototype/until/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/prototype/equals/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/prototype/toPlainYearMonth/builtin-calendar-no-array-iteration.js
+built-ins/Temporal/PlainDate/compare/argument-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-builtin-calendar-no-array-iteration.js
+built-ins/Temporal/Duration/compare/relativeto-propertybag-builtin-calendar-no-array-iteration.js
+intl402/Temporal/Calendar/prototype/era/argument-builtin-calendar-no-array-iteration.js
+intl402/Temporal/Calendar/prototype/eraYear/argument-builtin-calendar-no-array-iteration.js
diff --git a/packages/temporal-polyfill/scripts/test-config/expected-failures.txt b/packages/temporal-polyfill/scripts/test-config/expected-failures.txt
new file mode 100644
index 00000000..a42d5458
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/test-config/expected-failures.txt
@@ -0,0 +1,280 @@
+
+####################################################################################################
+# Duration
+####################################################################################################
+
+# SPEC-BUG
+# Duration::round wrong with zdt relativeTo
+# https://github.com/tc39/proposal-temporal/issues/2742
+intl402/Temporal/Duration/prototype/round/relativeto-string-datetime.js
+built-ins/Temporal/Duration/prototype/round/timezone-getpossibleinstantsfor-iterable.js
+
+# PRECISION
+# Duration::toString... we display super large duration units as Number would, not BigInt
+built-ins/Temporal/Duration/prototype/toString/precision-exact-mathematical-values.js
+built-ins/Temporal/Duration/prototype/toString/precision-formatted-as-decimal-number.js
+
+####################################################################################################
+# ZonedDateTime
+####################################################################################################
+
+# CALLING
+# for converting from ZonedDateTime -> PlainYearMonth, Calendar::year/monthCode is supposed to be queried.
+# for converting from ZonedDateTime -> PlainMonthDay, Calendar::monthCode/day is supposed to be queried.
+# Instead, we treat the incoming ZonedDateTime as a bag and access these parts as normal properties.
+# Better for code compactness.
+# (Same shortcoming for PlainDateTime but those tests are not written)
+built-ins/Temporal/ZonedDateTime/prototype/toPlainMonthDay/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/prototype/toPlainYearMonth/order-of-operations.js
+
+####################################################################################################
+# PlainDateTime
+####################################################################################################
+
+# CALLING
+# PlainDateTime::with is supposed to access time parts via internal slots.
+# We treat the current PlainDateTime as a bag and access the time parts as normal properties,
+# Better for code compactness.
+built-ins/Temporal/PlainDateTime/prototype/with/order-of-operations.js
+
+####################################################################################################
+# Calendar
+####################################################################################################
+
+# SPEC-BUG
+# CalendarRecord's dateAdd method is plucked but never used because all units are <=day
+# just don't pluck it. file bug?
+built-ins/Temporal/Duration/compare/order-of-operations.js
+built-ins/Temporal/Duration/prototype/round/order-of-operations.js
+built-ins/Temporal/Duration/prototype/total/order-of-operations.js
+
+# CALLING
+# Our onion-shell balancing algorithm results in fewer calls to dateAdd/dateUntil.
+# We do not do UnbalanceDateDurationRelative+BalanceDateDurationRelative
+built-ins/Temporal/PlainDateTime/prototype/since/order-of-operations.js
+built-ins/Temporal/PlainDateTime/prototype/until/order-of-operations.js
+built-ins/Temporal/Duration/prototype/add/calendar-dateadd-called-with-options-undefined.js
+built-ins/Temporal/Duration/prototype/round/calendar-dateadd-called-with-options-undefined.js
+built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd-called-with-options-undefined.js
+built-ins/Temporal/ZonedDateTime/prototype/since/calendar-dateuntil-called-with-singular-largestunit.js
+built-ins/Temporal/ZonedDateTime/prototype/until/calendar-dateuntil-called-with-singular-largestunit.js
+built-ins/Temporal/Duration/prototype/round/calendar-dateuntil-called-with-singular-largestunit.js
+built-ins/Temporal/ZonedDateTime/prototype/since/calendar-dateadd-called-with-options-undefined.js
+built-ins/Temporal/ZonedDateTime/prototype/until/calendar-dateadd-called-with-options-undefined.js
+built-ins/Temporal/Duration/prototype/round/dateuntil-field.js
+built-ins/Temporal/PlainDate/prototype/until/order-of-operations.js
+built-ins/Temporal/PlainDate/prototype/since/order-of-operations.js
+
+# CALLING
+# Combination of above: "CalendarRecord's dateAdd method is plucked" and "Our onion-shell balancing algorithm"
+built-ins/Temporal/Duration/prototype/add/order-of-operations.js
+built-ins/Temporal/Duration/prototype/subtract/order-of-operations.js
+
+# CALLING
+# In the spec, `AddDuration` adds dur0 y/m/w/d, then dur1 y/m/w/d, then combines and adds time parts.
+# Our version uses two `moveDateTime` calls for better code reuse, which results in:
+# +dur0.timeparts +dur0.ymwd +dur1.timeparts +dur1.ymwd
+# Same ultimate results but different calls to Calendar::dateAdd w/ different intermediate durations.
+built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd.js
+
+# CALLING
+# PlainYearMonth operations break spec because we don't convert to raw fields and then back
+# to PlainYearMonth. We leverage Calendar::day instead
+built-ins/Temporal/PlainYearMonth/prototype/since/calendar-datefromfields-called-with-options-undefined.js
+built-ins/Temporal/PlainYearMonth/prototype/since/calendar-fields-iterable.js
+built-ins/Temporal/PlainYearMonth/prototype/since/calendar-fromfields-called-with-null-prototype-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/since/order-of-operations.js
+built-ins/Temporal/PlainYearMonth/prototype/until/calendar-datefromfields-called-with-options-undefined.js
+built-ins/Temporal/PlainYearMonth/prototype/until/calendar-fields-iterable.js
+built-ins/Temporal/PlainYearMonth/prototype/until/calendar-fromfields-called-with-null-prototype-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/until/order-of-operations.js
+built-ins/Temporal/PlainYearMonth/prototype/add/order-of-operations.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/order-of-operations.js
+built-ins/Temporal/PlainYearMonth/prototype/add/calendar-datefromfields-called.js
+built-ins/Temporal/PlainYearMonth/prototype/add/calendar-fromfields-called-with-null-prototype-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/add/calendar-yearmonthfromfields-called-with-null-prototype-options.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-datefromfields-called.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-fromfields-called-with-null-prototype-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-yearmonthfromfields-called-with-null-prototype-options.js
+built-ins/Temporal/PlainYearMonth/prototype/add/end-of-month-out-of-range.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/end-of-month-out-of-range.js
+built-ins/Temporal/PlainYearMonth/prototype/add/calendar-fields-iterable.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-fields-iterable.js
+built-ins/Temporal/PlainYearMonth/prototype/add/constructor-in-calendar-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/add/duplicate-calendar-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/add/proto-in-calendar-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/constructor-in-calendar-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/duplicate-calendar-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/proto-in-calendar-fields.js
+built-ins/Temporal/PlainYearMonth/prototype/add/calendar-arguments.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-arguments.js
+built-ins/Temporal/PlainYearMonth/prototype/add/calendar-arguments-extra-options.js
+built-ins/Temporal/PlainYearMonth/prototype/add/overflow-wrong-type.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/calendar-arguments-extra-options.js
+built-ins/Temporal/PlainYearMonth/prototype/subtract/overflow-wrong-type.js
+
+# CALLING
+# when ZonedDateTime needs to query Calendar, should give PlainDateTime instead of PlainDate
+built-ins/Temporal/ZonedDateTime/prototype/day/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/dayOfWeek/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/dayOfYear/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/daysInMonth/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/daysInWeek/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/daysInYear/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/inLeapYear/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/month/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/monthCode/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/monthsInYear/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/year/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/yearOfWeek/custom.js
+
+# CALLING
+# problem with our adapter needing specific instance of Temporal object
+built-ins/Temporal/Duration/compare/calendar-dateadd-called-with-plaindate-instance.js
+built-ins/Temporal/PlainDate/prototype/add/custom.js
+built-ins/Temporal/PlainDate/prototype/day/custom.js
+built-ins/Temporal/PlainDate/prototype/dayOfWeek/custom.js
+built-ins/Temporal/PlainDate/prototype/dayOfYear/custom.js
+built-ins/Temporal/PlainDate/prototype/daysInMonth/custom.js
+built-ins/Temporal/PlainDate/prototype/daysInWeek/custom.js
+built-ins/Temporal/PlainDate/prototype/daysInYear/custom.js
+built-ins/Temporal/PlainDate/prototype/inLeapYear/custom.js
+built-ins/Temporal/PlainDate/prototype/month/custom.js
+built-ins/Temporal/PlainDate/prototype/monthCode/custom.js
+built-ins/Temporal/PlainDate/prototype/monthsInYear/custom.js
+built-ins/Temporal/PlainDate/prototype/since/calendar-dateadd-called-with-plaindate-instance.js
+built-ins/Temporal/PlainDate/prototype/subtract/custom.js
+built-ins/Temporal/PlainDate/prototype/since/custom.js
+built-ins/Temporal/PlainDate/prototype/until/calendar-dateadd-called-with-plaindate-instance.js
+built-ins/Temporal/PlainDate/prototype/until/custom.js
+built-ins/Temporal/PlainDate/prototype/weekOfYear/custom.js
+built-ins/Temporal/PlainDate/prototype/with/custom.js
+built-ins/Temporal/PlainDate/prototype/year/custom.js
+built-ins/Temporal/PlainDate/prototype/yearOfWeek/custom.js
+built-ins/Temporal/PlainDateTime/prototype/day/custom.js
+built-ins/Temporal/PlainDateTime/prototype/dayOfWeek/custom.js
+built-ins/Temporal/PlainDateTime/prototype/dayOfYear/custom.js
+built-ins/Temporal/PlainDateTime/prototype/daysInMonth/custom.js
+built-ins/Temporal/PlainDateTime/prototype/daysInWeek/custom.js
+built-ins/Temporal/PlainDateTime/prototype/daysInYear/custom.js
+built-ins/Temporal/PlainDateTime/prototype/inLeapYear/custom.js
+built-ins/Temporal/PlainDateTime/prototype/month/custom.js
+built-ins/Temporal/PlainDateTime/prototype/monthCode/custom.js
+built-ins/Temporal/PlainDateTime/prototype/monthsInYear/custom.js
+built-ins/Temporal/PlainDateTime/prototype/toZonedDateTime/plain-custom-timezone.js
+built-ins/Temporal/PlainDateTime/prototype/weekOfYear/custom.js
+built-ins/Temporal/PlainDateTime/prototype/year/custom.js
+built-ins/Temporal/PlainDateTime/prototype/yearOfWeek/custom.js
+built-ins/Temporal/ZonedDateTime/prototype/weekOfYear/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/daysInMonth/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/daysInYear/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/inLeapYear/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/month/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/monthCode/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/monthsInYear/custom.js
+built-ins/Temporal/PlainYearMonth/prototype/year/custom.js
+built-ins/Temporal/PlainMonthDay/prototype/day/custom.js
+built-ins/Temporal/PlainMonthDay/prototype/monthCode/custom.js
+built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/custom-timezone.js
+built-ins/Temporal/Duration/prototype/add/calendar-dateadd-called-with-plaindate-instance.js
+built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd-called-with-plaindate-instance.js
+built-ins/Temporal/Duration/prototype/total/calendar-dateadd-called-with-plaindate-instance.js
+built-ins/Temporal/Duration/prototype/round/calendar-dateadd-called-with-plaindate-instance.js
+
+####################################################################################################
+# TimeZone
+####################################################################################################
+
+# SPEC-BUG
+# It's not necessary to compute hours-in-day when rounding time parts. File bug?
+# (hours-in-day needs 2 extra getPossibleInstantsFor calls)
+built-ins/Temporal/ZonedDateTime/prototype/round/timezone-getpossibleinstantsfor-iterable.js
+built-ins/Temporal/ZonedDateTime/prototype/round/getpossibleinstantsfor-called-with-iso8601-calendar.js
+built-ins/Temporal/ZonedDateTime/prototype/round/div-zero.js
+
+# PRECISION (TimeZone subclass/protocol only)
+# we don't support hours-in-day greater than 10000000xxx (line 119 in the test),
+# which can happen if 1-day-apart TimeZone::getPossibleInstantsFor calls give results wildly apart.
+# results in slightly-less-precise-than-desirable (already ridiculous) .hoursInDay values
+# this happens because we don't leverage bigint for such normally-simple operations
+built-ins/Temporal/ZonedDateTime/prototype/hoursInDay/precision-exact-mathematical-values.js
+
+# CALLING
+# Moving/Diffing/Rounding with ZonedDateTimes
+# For balancing-up time parts to higher units, the spec uses NanosecondsToDays,
+# which liberally calls TimeZoneProtocol::getOffsetNanosecondsFor and ::getPossibleInstants,
+# and has copious sanity-checking around results to guard against malicious TimeZoneProtocols.
+# We don't have a separate internal algorithm for balancing. Instead, we add+diff instead, which
+# uses a simpler back-off strategy for detecting malicious TimeZoneProtocol results.
+built-ins/Temporal/Duration/prototype/round/throws-in-balance-duration-when-sign-mismatched-with-zoned-date-time.js
+built-ins/Temporal/Duration/prototype/round/zero-day-length.js
+built-ins/Temporal/Duration/prototype/total/zero-day-length.js
+built-ins/Temporal/ZonedDateTime/prototype/since/nanoseconds-to-days-range-errors.js
+built-ins/Temporal/ZonedDateTime/prototype/until/nanoseconds-to-days-range-errors.js
+built-ins/Temporal/Duration/prototype/add/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
+built-ins/Temporal/Duration/prototype/subtract/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
+built-ins/Temporal/Duration/prototype/round/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
+built-ins/Temporal/Duration/prototype/total/relativeto-zoneddatetime-nanoseconds-to-days-range-errors.js
+built-ins/Temporal/Duration/prototype/add/nanoseconds-to-days-loop-indefinitely.js
+built-ins/Temporal/Duration/prototype/round/nanoseconds-to-days-loop-indefinitely.js
+built-ins/Temporal/Duration/prototype/subtract/nanoseconds-to-days-loop-indefinitely.js
+built-ins/Temporal/Duration/prototype/total/nanoseconds-to-days-loop-indefinitely.js
+built-ins/Temporal/ZonedDateTime/prototype/since/nanoseconds-to-days-loop-indefinitely.js
+built-ins/Temporal/ZonedDateTime/prototype/until/nanoseconds-to-days-loop-indefinitely.js
+built-ins/Temporal/ZonedDateTime/prototype/since/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/prototype/until/order-of-operations.js
+
+# CALLING
+# From/With/Round/Compare/Equals uses InterpretISODateTimeOffset which calls
+# TimeZoneProtocol::getPossibleInstants many more times than our algorithm, not sure why.
+# The below tests might also be experiencing reduced TimeZoneProtocol calls due to the
+# NanosecondsToDays issue mentioned above.
+built-ins/Temporal/ZonedDateTime/prototype/round/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/prototype/with/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/from/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/compare/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/from/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/prototype/equals/order-of-operations.js
+built-ins/Temporal/ZonedDateTime/from/argument-propertybag-ambiguous-wall-clock-time.js
+
+# CALLING
+# our zonedInternalsToIso cache (which converts zdt to iso-fields) avoids a second call to getOffsetNanosecondsFor
+built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/order-of-operations.js
+
+# CALLING
+# getPossibleInstantsFor wants plainDateTimes that sometimes have calendar. instead, always give iso
+built-ins/Temporal/PlainDate/prototype/toZonedDateTime/timezone-getpossibleinstantsfor.js
+
+####################################################################################################
+# Intl
+####################################################################################################
+
+# NOT-IMPLEMENTED
+# Spec says we should NOT canonicalize time zone IDs, but that's too hard while also normalizing them.
+intl402/Temporal/ZonedDateTime/from/do-not-canonicalize-iana-identifiers.js
+intl402/Temporal/TimeZone/prototype/equals/argument-object.js
+intl402/DateTimeFormat/timezone-not-canonicalized.js
+intl402/Temporal/TimeZone/basic.js
+intl402/Temporal/TimeZone/from/argument-valid.js
+intl402/Temporal/TimeZone/etc-timezone.js
+intl402/Temporal/TimeZone/from/etc-timezone.js
+intl402/Temporal/TimeZone/from/iana-legacy-names.js
+intl402/Temporal/TimeZone/iana-legacy-names.js
+intl402/Temporal/TimeZone/non-canonical-utc.js
+intl402/Temporal/TimeZone/links-etcetera.js
+intl402/Temporal/TimeZone/links-northamerica.js
+intl402/Temporal/TimeZone/links-europe.js
+intl402/Temporal/TimeZone/links-backzone.js
+intl402/Temporal/TimeZone/links-backward.js
+intl402/Temporal/TimeZone/links-asia.js
+intl402/Temporal/TimeZone/links-africa.js
+intl402/Temporal/TimeZone/from/timezone-case-insensitive.js
+intl402/Temporal/ZonedDateTime/from/timezone-case-insensitive.js
+intl402/DateTimeFormat/timezone-case-insensitive.js
+
+# NOT-IMPLEMENTED
+# Intl.DateTimeFormat does not accept numeric-offset `timeZones`s and we are okay with that
+intl402/DateTimeFormat/prototype/format/offset-timezone-gmt-same.js
+intl402/DateTimeFormat/prototype/formatToParts/offset-timezone-correct.js
+intl402/DateTimeFormat/prototype/resolvedOptions/offset-timezone-basic.js
+intl402/DateTimeFormat/prototype/resolvedOptions/offset-timezone-change.js
diff --git a/packages/temporal-polyfill/scripts/test.js b/packages/temporal-polyfill/scripts/test.js
new file mode 100755
index 00000000..905d9652
--- /dev/null
+++ b/packages/temporal-polyfill/scripts/test.js
@@ -0,0 +1,80 @@
+#!/usr/bin/env node
+/*
+Based on https://github.com/js-temporal/temporal-polyfill/blob/main/runtest262.mjs
+*/
+
+import runTest262 from '@js-temporal/temporal-test262-runner';
+import { join as joinPaths } from 'path';
+import yargs from 'yargs';
+import { hideBin } from 'yargs/helpers';
+
+const scriptsDir = joinPaths(process.argv[1], '..');
+const pkgDir = joinPaths(scriptsDir, '..');
+const monorepoDir = joinPaths(pkgDir, '../..');
+
+yargs(hideBin(process.argv))
+ .command(
+ '*',
+ 'Run test262 tests',
+ (builder) => {
+ builder.option('update', {
+ requiresArg: false,
+ default: false,
+ type: 'boolean',
+ description: 'Whether to update the existing expected-failure files on-disk and remove tests that now pass.'
+ });
+ builder.option('timeout', {
+ requiresArg: false,
+ default: 30000,
+ type: 'number',
+ description: 'Millisecond allowance for a single test file to run'
+ })
+ builder.option('max', {
+ requiresArg: false,
+ default: 10,
+ type: 'number',
+ description: 'Maxiumum allowed number of failures before aborting'
+ })
+ builder.option('min', { // for "minify"
+ requiresArg: false,
+ default: false,
+ type: 'boolean',
+ description: 'Whether to test the minified bundle'
+ })
+ },
+ (parsedArgv) => {
+ const expectedFailureFiles = [
+ 'expected-failures.txt',
+ 'expected-failures-surface.txt',
+ ];
+
+ const nodeVersion = process.versions.node
+ const nodeMajorVersion = parseInt(nodeVersion.split('.')[0]);
+ if (nodeMajorVersion >= 18) expectedFailureFiles.push('expected-failures-intl-format-norm.txt');
+ if (nodeMajorVersion < 18) expectedFailureFiles.push('expected-failures-before-node18.txt');
+ if (nodeMajorVersion < 16) expectedFailureFiles.push('expected-failures-before-node16.txt');
+
+ console.log(`Testing with Node v${nodeVersion}...`)
+
+ const result = runTest262({
+ test262Dir: joinPaths(monorepoDir, 'test262'),
+ polyfillCodeFile: joinPaths(
+ pkgDir,
+ parsedArgv.min
+ ? 'dist/global.min.js'
+ : 'dist/global.js'
+ ),
+ expectedFailureFiles: expectedFailureFiles.map((filename) => (
+ joinPaths(scriptsDir, 'test-config', filename)
+ )),
+ testGlobs: parsedArgv._,
+ timeoutMsecs: parsedArgv.timeout || 86400000,
+ updateExpectedFailureFiles: parsedArgv.update,
+ maxFailures: parsedArgv.max,
+ fullPath: true
+ });
+
+ process.exit(result ? 0 : 1);
+ }
+ )
+ .help().argv;
diff --git a/packages/temporal-polyfill/src/argParse/calendar.ts b/packages/temporal-polyfill/src/argParse/calendar.ts
deleted file mode 100644
index 713de345..00000000
--- a/packages/temporal-polyfill/src/argParse/calendar.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { Temporal } from 'temporal-spec'
-import { isoCalendarID } from '../calendarImpl/isoCalendarImpl'
-import { ensureObj } from '../dateUtils/abstract'
-import { Calendar, createDefaultCalendar } from '../public/calendar'
-import { isObjectLike } from './refine'
-
-// TODO: move to argParse like timeZoneFromObj?
-export function calendarFromObj(obj: any): Temporal.CalendarProtocol {
- const innerCalendar = obj.calendar
- if (innerCalendar === undefined) {
- return obj
- }
- if (isObjectLike(innerCalendar) && innerCalendar.calendar === undefined) {
- return innerCalendar as any
- }
- return new Calendar(innerCalendar)
-}
-
-export function extractCalendar(input: any): Temporal.CalendarProtocol {
- if (input.calendar === undefined) {
- return createDefaultCalendar()
- }
- return ensureObj(Calendar, input.calendar)
-}
-
-export function getCommonCalendar(
- obj0: { calendar: Temporal.CalendarProtocol },
- obj1: { calendar: Temporal.CalendarProtocol },
-): Temporal.CalendarProtocol {
- const { calendar } = obj0
- ensureCalendarsEqual(calendar, obj1.calendar)
- return calendar
-}
-
-export function getStrangerCalendar(
- obj0: { calendar: Temporal.CalendarProtocol },
- obj1: { calendar: Temporal.CalendarProtocol },
-): Temporal.CalendarProtocol {
- const calendar0 = obj0.calendar
- const calendar1 = obj1.calendar
-
- if (calendar0.id === isoCalendarID) {
- return calendar1
- }
- if (calendar1.id === isoCalendarID) {
- return calendar0
- }
- if (calendar0.id !== calendar1.id) {
- throw new RangeError('Non-ISO calendars incompatible')
- }
-
- return calendar0
-}
-
-export function ensureCalendarsEqual(
- calendar0: Temporal.CalendarProtocol,
- calendar1: Temporal.CalendarProtocol,
-): void {
- if (calendar0.toString() !== calendar1.toString()) {
- throw new RangeError('Calendars must match')
- }
-}
diff --git a/packages/temporal-polyfill/src/argParse/calendarDisplay.ts b/packages/temporal-polyfill/src/argParse/calendarDisplay.ts
deleted file mode 100644
index 50bc1cb7..00000000
--- a/packages/temporal-polyfill/src/argParse/calendarDisplay.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { createOptionParser } from './refine'
-
-export const CALENDAR_DISPLAY_AUTO = 0
-export const CALENDAR_DISPLAY_NEVER = 1
-export const CALENDAR_DISPLAY_ALWAYS = 2
-export type CalendarDisplayInt = 0 | 1 | 2
-
-export interface CalendarDisplayMap {
- auto: 0
- never: 1
- always: 2
-}
-export const calendarDisplayMap: CalendarDisplayMap = {
- auto: 0,
- never: 1,
- always: 2,
-}
-
-export const parseCalendarDisplayOption = createOptionParser(
- 'calendarName',
- calendarDisplayMap,
- CALENDAR_DISPLAY_AUTO,
-)
diff --git a/packages/temporal-polyfill/src/argParse/diffOptions.ts b/packages/temporal-polyfill/src/argParse/diffOptions.ts
deleted file mode 100644
index 0fdb7de6..00000000
--- a/packages/temporal-polyfill/src/argParse/diffOptions.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { Temporal } from 'temporal-spec'
-import { DAY, UnitInt, nanoIn } from '../dateUtils/units'
-import { RoundingFunc } from '../utils/math'
-import { ensureOptionsObj } from './refine'
-import { parseRoundingModeOption } from './roundingMode'
-import { parseUnit } from './unitStr'
-
-export interface DiffConfig {
- smallestUnit: UnitType
- largestUnit: UnitType
- roundingFunc: RoundingFunc
- roundingIncrement: number
-}
-
-export function parseDiffOptions<
- UnitArg extends Temporal.DateTimeUnit,
- UnitIntType extends UnitInt
->(
- options: Temporal.DifferenceOptions | undefined,
- largestUnitDefault: UnitIntType,
- smallestUnitDefault: UnitIntType,
- minUnit: UnitIntType,
- maxUnit: UnitIntType,
- forDurationRounding?: boolean, // TODO: change to 'defaultRoundingFunc'
-): DiffConfig {
- const ensuredOptions = ensureOptionsObj(options)
- const roundingIncrement = ensuredOptions.roundingIncrement ?? 1
- const smallestUnit = parseUnit(ensuredOptions.smallestUnit, smallestUnitDefault, minUnit, maxUnit)
- const roundingFunc = parseRoundingModeOption(
- ensuredOptions,
- forDurationRounding ? Math.round : Math.trunc,
- )
-
- let largestUnitArg = ensuredOptions.largestUnit
- if (largestUnitArg === 'auto') {
- largestUnitArg = undefined
- }
-
- largestUnitDefault = Math.max(largestUnitDefault, smallestUnit) as UnitIntType
- const largestUnit = parseUnit(largestUnitArg, largestUnitDefault, minUnit, maxUnit)
-
- if (smallestUnit > largestUnit) {
- throw new RangeError('Bad smallestUnit/largestUnit')
- }
-
- if (smallestUnit < DAY) {
- const largerNano = nanoIn[smallestUnit + 1]
- const incNano = nanoIn[smallestUnit] * roundingIncrement
-
- if (largerNano === incNano) {
- throw new RangeError('Must not equal larger unit')
- }
-
- if (largerNano % incNano) {
- throw new RangeError('Must divide into larger unit')
- }
- }
-
- return {
- smallestUnit,
- largestUnit,
- roundingFunc,
- roundingIncrement,
- }
-}
diff --git a/packages/temporal-polyfill/src/argParse/disambig.ts b/packages/temporal-polyfill/src/argParse/disambig.ts
deleted file mode 100644
index 3a42aeed..00000000
--- a/packages/temporal-polyfill/src/argParse/disambig.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { createOptionParser } from './refine'
-
-export const DISAMBIG_COMPATIBLE = 0
-export const DISAMBIG_EARLIER = 1
-export const DISAMBIG_LATER = 2
-export const DISAMBIG_REJECT = 3
-export type DisambigInt = 0 | 1 | 2 | 3
-
-export interface DisambigMap {
- compatible: 0
- earlier: 1
- later: 2
- reject: 3
-}
-export const disambigMap: DisambigMap = {
- compatible: 0,
- earlier: 1,
- later: 2,
- reject: 3,
-}
-
-export const parseDisambigOption = createOptionParser(
- 'disambiguation',
- disambigMap,
- DISAMBIG_COMPATIBLE,
-)
diff --git a/packages/temporal-polyfill/src/argParse/fieldStr.ts b/packages/temporal-polyfill/src/argParse/fieldStr.ts
deleted file mode 100644
index 46953a22..00000000
--- a/packages/temporal-polyfill/src/argParse/fieldStr.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { strArrayToHash } from '../utils/obj'
-import { durationUnitNames } from './unitStr'
-
-export const yearMonthFieldMap = {
- era: String,
- eraYear: refineNumber,
- year: refineNumber,
- month: refineNumber,
- monthCode: String,
-}
-
-export const dateFieldMap = {
- ...yearMonthFieldMap,
- day: refineNumber,
-}
-
-export const timeFieldMap = {
- hour: refineNumber,
- minute: refineNumber,
- second: refineNumber,
- millisecond: refineNumber,
- microsecond: refineNumber,
- nanosecond: refineNumber,
-}
-
-export const monthDayFieldMap = {
- era: String,
- eraYear: refineNumber,
- year: refineNumber,
- month: refineNumber,
- monthCode: String,
- day: refineNumber,
-}
-
-// TODO: more DRY with constrainInt
-function refineNumber(input: any): number {
- const num = Number(input)
-
- if (!Number.isFinite(num)) {
- throw new RangeError('Number must be finite')
- }
-
- return num
-}
-
-export const durationFieldMap = strArrayToHash(durationUnitNames, () => Number)
diff --git a/packages/temporal-polyfill/src/argParse/isoFormatOptions.ts b/packages/temporal-polyfill/src/argParse/isoFormatOptions.ts
deleted file mode 100644
index 44908010..00000000
--- a/packages/temporal-polyfill/src/argParse/isoFormatOptions.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { Temporal } from 'temporal-spec'
-import {
- MICROSECOND,
- MILLISECOND,
- MINUTE,
- NANOSECOND,
- SECOND,
- nanoIn,
- unitDigitMap,
-} from '../dateUtils/units'
-import { OVERFLOW_REJECT } from './overflowHandling'
-import { constrainInt, ensureOptionsObj } from './refine'
-import { parseRoundingModeOption } from './roundingMode'
-import { RoundingConfig } from './roundingOptions'
-import { parseUnit } from './unitStr'
-
-export type DurationToStringUnitInt = // TODO: move this??? weird name/location for this
- typeof SECOND |
- typeof MILLISECOND |
- typeof MICROSECOND |
- typeof NANOSECOND
-
-export type TimeToStringUnitInt = typeof MINUTE | DurationToStringUnitInt
-
-export interface TimeToStringConfig<
- UnitType extends TimeToStringUnitInt = TimeToStringUnitInt
-> extends RoundingConfig {
- fractionalSecondDigits: number | undefined
-}
-
-export type DurationToStringConfig = TimeToStringConfig
-
-export function parseTimeToStringOptions(
- options: Temporal.ToStringPrecisionOptions | undefined,
- largestUnit: UnitType = MINUTE as UnitType,
-): TimeToStringConfig {
- const ensuredOptions = ensureOptionsObj(options)
- const smallestUnitArg = ensuredOptions.smallestUnit
- const digitsArg = ensuredOptions.fractionalSecondDigits
- let smallestUnit = NANOSECOND as UnitType
- let incNano = 1
- let digits: number | undefined
-
- if (smallestUnitArg !== undefined) {
- smallestUnit = parseUnit(
- smallestUnitArg,
- undefined, // no default. a required field
- NANOSECOND as UnitType, // minUnit
- largestUnit, // maxUnit
- )
- incNano = nanoIn[smallestUnit]
- digits = unitDigitMap[smallestUnit] || 0
- } else if (digitsArg !== undefined && digitsArg !== 'auto') {
- digits = constrainInt(digitsArg, 0, 9, OVERFLOW_REJECT)
- incNano = Math.pow(10, 9 - digits)
- }
-
- return {
- smallestUnit,
- fractionalSecondDigits: digits,
- roundingFunc: parseRoundingModeOption(options, Math.trunc),
- incNano,
- }
-}
diff --git a/packages/temporal-polyfill/src/argParse/offsetDisplay.ts b/packages/temporal-polyfill/src/argParse/offsetDisplay.ts
deleted file mode 100644
index fd6883d6..00000000
--- a/packages/temporal-polyfill/src/argParse/offsetDisplay.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { createOptionParser } from './refine'
-
-export const OFFSET_DISPLAY_AUTO = 0
-export const OFFSET_DISPLAY_NEVER = 1
-export type OffsetDisplayInt = 0 | 1
-
-export interface OffsetDisplayMap {
- auto: 0
- never: 1
-}
-export const offsetDisplayMap: OffsetDisplayMap = {
- auto: 0,
- never: 1,
-}
-
-export const parseOffsetDisplayOption = createOptionParser(
- 'offset',
- offsetDisplayMap,
- OFFSET_DISPLAY_AUTO,
-)
diff --git a/packages/temporal-polyfill/src/argParse/offsetHandling.ts b/packages/temporal-polyfill/src/argParse/offsetHandling.ts
deleted file mode 100644
index d11ac2b6..00000000
--- a/packages/temporal-polyfill/src/argParse/offsetHandling.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createOptionParser } from './refine'
-
-export const OFFSET_PREFER = 0
-export const OFFSET_USE = 1
-export const OFFSET_IGNORE = 2
-export const OFFSET_REJECT = 3
-export type OffsetHandlingInt = 0 | 1 | 2 | 3
-
-export interface OffsetHandlingMap {
- prefer: 0
- use: 1
- ignore: 2
- reject: 3
-}
-export const offsetHandlingMap: OffsetHandlingMap = {
- prefer: 0,
- use: 1,
- ignore: 2,
- reject: 3,
-}
-
-export const parseOffsetHandlingOption = createOptionParser(
- 'offset',
- offsetHandlingMap,
-)
diff --git a/packages/temporal-polyfill/src/argParse/overflowHandling.ts b/packages/temporal-polyfill/src/argParse/overflowHandling.ts
deleted file mode 100644
index 2d797474..00000000
--- a/packages/temporal-polyfill/src/argParse/overflowHandling.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { createOptionParser } from './refine'
-
-export const OVERFLOW_CONSTRAIN = 0
-export const OVERFLOW_REJECT = 1
-export type OverflowHandlingInt = 0 | 1
-
-export interface OverflowHandlingMap {
- constrain: 0
- reject: 1
-}
-export const overflowHandlingMap: OverflowHandlingMap = {
- constrain: 0,
- reject: 1,
-}
-
-export const parseOverflowOption = createOptionParser(
- 'overflow',
- overflowHandlingMap,
- OVERFLOW_CONSTRAIN,
-)
diff --git a/packages/temporal-polyfill/src/argParse/refine.ts b/packages/temporal-polyfill/src/argParse/refine.ts
deleted file mode 100644
index 3b167784..00000000
--- a/packages/temporal-polyfill/src/argParse/refine.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import { ValueOf } from '../utils/obj'
-import { OVERFLOW_REJECT, OverflowHandlingInt } from './overflowHandling'
-
-export function createOptionParser