From 3847c732a8c0e7079b248ddb761349a8d1d50536 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 02:37:55 +0000 Subject: [PATCH 01/11] pkg: Update changesets/action action to v2 (#4371) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/beta-release.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index f7a68b31692b..d0df16e44670 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -41,7 +41,7 @@ jobs: - name: Create Beta Release Pull Request or Publish to npm id: changesets - uses: changesets/action@v1 + uses: changesets/action@v2.1.2 with: version: yarn changeset:version:beta publish: yarn changeset:publish:beta diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 823757f5f6fc..8e44f2c51f00 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,7 +39,7 @@ jobs: - name: Create Release Pull Request or Publish to npm id: changesets - uses: changesets/action@v1 + uses: changesets/action@v2.1.2 with: version: yarn changeset:version publish: yarn changeset:publish From f3be7db263b988b0a9e58fd76070286a20a7a4fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 02:38:06 +0000 Subject: [PATCH 02/11] pkg: Update actions/setup-node action to v7 (#4370) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/agent-rules.yml | 2 +- .github/workflows/benchmark-react.yml | 2 +- .github/workflows/benchmark-spread.yml | 2 +- .github/workflows/benchmark.yml | 2 +- .github/workflows/beta-release.yml | 2 +- .github/workflows/bundle_size.yml | 2 +- .github/workflows/docs-snapshot.yml | 2 +- .github/workflows/regenerate.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/site-preview.yml | 6 +++--- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/agent-rules.yml b/.github/workflows/agent-rules.yml index f74b740be00a..53b186ced962 100644 --- a/.github/workflows/agent-rules.yml +++ b/.github/workflows/agent-rules.yml @@ -41,7 +41,7 @@ jobs: uses: actions/checkout@v7 with: fetch-depth: 1 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' # no install: these only need node and git diff --git a/.github/workflows/benchmark-react.yml b/.github/workflows/benchmark-react.yml index f22e12df368a..55538b8f35fb 100644 --- a/.github/workflows/benchmark-react.yml +++ b/.github/workflows/benchmark-react.yml @@ -64,7 +64,7 @@ jobs: fetch-depth: 1 # PR code runs here; the benchmark action passes its own token to git persist-credentials: false - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/benchmark-spread.yml b/.github/workflows/benchmark-spread.yml index 119268d5a34f..2fcf233595e6 100644 --- a/.github/workflows/benchmark-spread.yml +++ b/.github/workflows/benchmark-spread.yml @@ -68,7 +68,7 @@ jobs: fetch-depth: 1 # PR code runs here; the benchmark action passes its own token to git persist-credentials: false - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index ba03807701f6..56e9455a1b26 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -61,7 +61,7 @@ jobs: fetch-depth: 1 # PR code runs here; the benchmark action passes its own token to git persist-credentials: false - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index d0df16e44670..b97bfd37778f 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -31,7 +31,7 @@ jobs: steps: - uses: actions/checkout@v7 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/bundle_size.yml b/.github/workflows/bundle_size.yml index 6c2905750d56..a278ccf8c583 100644 --- a/.github/workflows/bundle_size.yml +++ b/.github/workflows/bundle_size.yml @@ -50,7 +50,7 @@ jobs: fetch-depth: 2 # PR code runs here; the action's git fetches need no token (public repo) persist-credentials: false - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/docs-snapshot.yml b/.github/workflows/docs-snapshot.yml index 1ac89fd58b95..80fe7dd5d5b1 100644 --- a/.github/workflows/docs-snapshot.yml +++ b/.github/workflows/docs-snapshot.yml @@ -70,7 +70,7 @@ jobs: run: echo "sha=$(git -C release rev-parse HEAD)" >> "$GITHUB_OUTPUT" # No dependency cache: this job runs the release's third-party code, # which must not leave anything later runs restore - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' - run: corepack enable diff --git a/.github/workflows/regenerate.yml b/.github/workflows/regenerate.yml index aefecf210b16..2fc77facd525 100644 --- a/.github/workflows/regenerate.yml +++ b/.github/workflows/regenerate.yml @@ -66,7 +66,7 @@ jobs: with: fetch-depth: 1 persist-credentials: false - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8e44f2c51f00..bbf30a39f138 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,7 +29,7 @@ jobs: steps: - uses: actions/checkout@v7 - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' diff --git a/.github/workflows/site-preview.yml b/.github/workflows/site-preview.yml index 42bbd20e5822..263a264837d8 100644 --- a/.github/workflows/site-preview.yml +++ b/.github/workflows/site-preview.yml @@ -69,7 +69,7 @@ jobs: if: github.event_name != 'pull_request' run: | [ ! -f website/versionCurrent.json ] || echo "next=1" >> "$GITHUB_OUTPUT" - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' cache: 'yarn' @@ -252,7 +252,7 @@ jobs: filter: blob:none # No dependency cache, like an archive build: the branch has its own lockfile - if: steps.current.outputs.sha && !steps.cache.outputs.cache-hit - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: '26' - name: Build @@ -342,7 +342,7 @@ jobs: { echo "::error::vercel.json has no /next/:path* redirect to drop"; exit 1; } jq '.redirects |= map(select(.source != "/next/:path*"))' website/vercel.json > vercel.json.tmp mv vercel.json.tmp website/vercel.json - - uses: actions/setup-node@v6 + - uses: actions/setup-node@v7 with: node-version: '26' - run: npm install --global "vercel@$VERCEL_CLI_VERSION" From ec888d07347586857ed705da3fded35578e68b3c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 02:38:25 +0000 Subject: [PATCH 03/11] pkg: Update `remark-directive` to v4 (#4369) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- website/package.json | 2 +- yarn.lock | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/website/package.json b/website/package.json index 9a8c1e6ba14f..84a994fd7c9e 100644 --- a/website/package.json +++ b/website/package.json @@ -45,7 +45,7 @@ "raw-loader": "^4.0.2", "react-redux": "^9.2.0", "redux": "^5.0.1", - "remark-directive": "^3.0.0", + "remark-directive": "^4.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "remark-mdx": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 03f518d9d60f..bdf379b5cc92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23542,6 +23542,21 @@ __metadata: languageName: node linkType: hard +"micromark-extension-directive@npm:^4.0.0": + version: 4.0.0 + resolution: "micromark-extension-directive@npm:4.0.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-factory-whitespace: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + parse-entities: "npm:^4.0.0" + checksum: 10c0/b4aef0f44339543466ae186130a4514985837b6b12d0c155bd1162e740f631e58f0883a39d0c723206fa0ff53a9b579965c79116f902236f6f123c3340b5fefb + languageName: node + linkType: hard + "micromark-extension-frontmatter@npm:^2.0.0": version: 2.0.0 resolution: "micromark-extension-frontmatter@npm:2.0.0" @@ -28275,7 +28290,7 @@ __metadata: react-live: "npm:^4.0.0" react-redux: "npm:^9.2.0" redux: "npm:^5.0.1" - remark-directive: "npm:^3.0.0" + remark-directive: "npm:^4.0.0" remark-frontmatter: "npm:^5.0.0" remark-gfm: "npm:^4.0.0" remark-mdx: "npm:^3.0.0" @@ -29046,6 +29061,18 @@ __metadata: languageName: node linkType: hard +"remark-directive@npm:^4.0.0": + version: 4.0.0 + resolution: "remark-directive@npm:4.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-directive: "npm:^3.0.0" + micromark-extension-directive: "npm:^4.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/ab1f71ae220913f62833464d483f29de7b4af0dcf1ff626d33cdb5dd81eda1c553a11f779de9fd9b641802586c5f070175824d70f14d53e451a484850705d53a + languageName: node + linkType: hard + "remark-emoji@npm:^4.0.0": version: 4.0.1 resolution: "remark-emoji@npm:4.0.1" From 6d36e01d937b3f3ca2880f37adbe1567aedc9987 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 02:38:43 +0000 Subject: [PATCH 04/11] pkg: Update `remark-mdx` to v3.1.1 (#4368) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bdf379b5cc92..09edc09dad52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29113,12 +29113,12 @@ __metadata: linkType: hard "remark-mdx@npm:^3.0.0": - version: 3.0.0 - resolution: "remark-mdx@npm:3.0.0" + version: 3.1.1 + resolution: "remark-mdx@npm:3.1.1" dependencies: mdast-util-mdx: "npm:^3.0.0" micromark-extension-mdxjs: "npm:^3.0.0" - checksum: 10c0/e7a59428c55753f89f1bd299bc92cfd96fb3289285384b631f8af253d8df6473ebdba085e6d1a846b55b46700aafc76f35810a3268733e6a7c676bc2a8648f17 + checksum: 10c0/3e5585d4c2448d8ac7548b1d148f04b89251ff47fbfc80be1428cecec2fc2530abe30a5da53bb031283f8a78933259df6120c1cd4cc7cc1d43978d508798ba88 languageName: node linkType: hard From ed7de64c3c5ecde940d0ae9c3198ec55ab31abfc Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Wed, 14 Oct 2026 02:44:35 +0000 Subject: [PATCH 05/11] pkg(website): Update react-live to v5 and adopt its fixes (#4366) * pkg: Update `react-live` to v5 * pkg(website): Adopt react-live v5 cleanups react-live v5 gives its error boundary getDerivedStateFromError and stops emitting __self from sucrase, so the playground no longer needs to demote those two console messages. Drop @docusaurus/theme-live-codeblock: no docs use live code blocks, and it bundled a second copy of react-live (v4) into every page with a code block. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_019RCvGPJXB1cCWsppCh9yQE * internal(website): Tidy playground console demotion after react-live v5 Match React's caught-error log on its stable line (the 'component:' pattern no longer matched React 19's text), explain why a console patch is used, drop the stale translate lock key, and cover the hook with a test. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_019RCvGPJXB1cCWsppCh9yQE * internal(website): Test console demotion against React's real caught-error log Throw inside a real error boundary instead of copying React's text, cover overlapping previews, and match the single remaining pattern directly. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_019RCvGPJXB1cCWsppCh9yQE * internal(website): Reuse ErrorBoundary in console demotion test Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_019RCvGPJXB1cCWsppCh9yQE --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Claude --- package.json | 2 +- website/docusaurus.config.ts | 2 +- website/i18n/es/code.json | 4 - website/i18n/pt-BR/code.json | 4 - website/i18n/zh-Hans/code.json | 4 - website/package.json | 3 +- .../usePlaygroundConsoleDemotion.test.tsx | 44 +++++ .../preview/usePlaygroundConsoleDemotion.ts | 54 ++---- website/src/theme/ReactLiveScope/index.js | 18 -- website/translate/lock/es.json | 1 - website/translate/lock/pt-BR.json | 1 - website/translate/lock/zh-Hans.json | 1 - yarn.lock | 178 +++--------------- 13 files changed, 86 insertions(+), 230 deletions(-) create mode 100644 website/src/components/Playground/preview/__tests__/usePlaygroundConsoleDemotion.test.tsx delete mode 100644 website/src/theme/ReactLiveScope/index.js diff --git a/package.json b/package.json index d741e3903e1c..c9e876602e65 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "prettier": "3.9.10", "react": "19.3.0", "react-dom": "19.3.0", - "react-live": "^4.0.0", + "react-live": "^5.0.0", "react-native": "0.87.1", "react-native-safe-area-context": "^5.0.0", "react-native-screens": "^4.1.0", diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index d56266f8ccd0..cc33cdf1bc17 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -292,7 +292,7 @@ const config: Config = { : []), ], //favicon: '/favicon.ico', we declare our own headers for this above - themes: ['@docusaurus/theme-live-codeblock', '@docusaurus/theme-mermaid'], + themes: ['@docusaurus/theme-mermaid'], customFields: { repoUrl: 'https://github.com/reactive/data-client', // read by FrameworkSelector to switch between differently named pages diff --git a/website/i18n/es/code.json b/website/i18n/es/code.json index 1465b8ad1210..c803ba1ca3bf 100644 --- a/website/i18n/es/code.json +++ b/website/i18n/es/code.json @@ -509,10 +509,6 @@ "message": "Buscar documentos", "description": "The placeholder of the input of the DocSearch pop-up modal" }, - "theme.Playground.buttons.reset": { - "message": "Restablecer", - "description": "The reset button label for live code blocks" - }, "theme.blog.post.plurals": { "message": "Una publicación|{count} publicaciones", "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" diff --git a/website/i18n/pt-BR/code.json b/website/i18n/pt-BR/code.json index 09ae2c885b0c..9fecc4c338c2 100644 --- a/website/i18n/pt-BR/code.json +++ b/website/i18n/pt-BR/code.json @@ -509,10 +509,6 @@ "message": "Procurar documentos", "description": "The placeholder of the input of the DocSearch pop-up modal" }, - "theme.Playground.buttons.reset": { - "message": "Redefinir", - "description": "The reset button label for live code blocks" - }, "theme.blog.post.plurals": { "message": "Uma publicação|{count} publicações", "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" diff --git a/website/i18n/zh-Hans/code.json b/website/i18n/zh-Hans/code.json index fa04ecbdc8f5..e1c4fc46137e 100644 --- a/website/i18n/zh-Hans/code.json +++ b/website/i18n/zh-Hans/code.json @@ -710,10 +710,6 @@ "message": "搜索文档", "description": "The placeholder of the input of the DocSearch pop-up modal" }, - "theme.Playground.buttons.reset": { - "message": "重置", - "description": "The reset button label for live code blocks" - }, "theme.blog.post.plurals": { "message": "{count} 篇博文", "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" diff --git a/website/package.json b/website/package.json index 84a994fd7c9e..29b0bae46496 100644 --- a/website/package.json +++ b/website/package.json @@ -72,7 +72,6 @@ "@docusaurus/plugin-content-docs": "^3.0.1", "@docusaurus/plugin-pwa": "^3.10.2", "@docusaurus/preset-classic": "^3.0.1", - "@docusaurus/theme-live-codeblock": "^3.0.1", "@docusaurus/theme-mermaid": "^3.0.1", "@docusaurus/utils": "^3.0.1", "@mdx-js/react": "^3.1.0", @@ -86,7 +85,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-live": "^4.0.0", + "react-live": "^5.0.0", "temporal-polyfill": "^0.3.0", "typescript": "npm:@typescript/typescript6@6.0.2", "uuid": "^14.0.0" diff --git a/website/src/components/Playground/preview/__tests__/usePlaygroundConsoleDemotion.test.tsx b/website/src/components/Playground/preview/__tests__/usePlaygroundConsoleDemotion.test.tsx new file mode 100644 index 000000000000..62b85a57ed90 --- /dev/null +++ b/website/src/components/Playground/preview/__tests__/usePlaygroundConsoleDemotion.test.tsx @@ -0,0 +1,44 @@ +/// +import { ErrorBoundary } from '@data-client/react'; +import { render, renderHook } from '@testing-library/react'; +import React from 'react'; + +import { usePlaygroundConsoleDemotion } from '../usePlaygroundConsoleDemotion'; + +function Throws(): React.ReactNode { + throw new Error('boom'); +} +/** Has React log an error a boundary caught, as a throwing preview does */ +const throwCaught = () => + render( + + + , + ).unmount(); + +let error: jest.SpyInstance; +let warn: jest.SpyInstance; +beforeEach(() => { + error = jest.spyOn(console, 'error').mockImplementation(() => {}); + warn = jest.spyOn(console, 'warn').mockImplementation(() => {}); +}); +afterEach(() => jest.restoreAllMocks()); + +it("demotes React's caught-error log to a warning while any preview is mounted", () => { + const first = renderHook(() => usePlaygroundConsoleDemotion()); + const second = renderHook(() => usePlaygroundConsoleDemotion()); + throwCaught(); + console.error('something else'); + expect(warn).toHaveBeenCalledTimes(1); + expect(error).toHaveBeenCalledTimes(1); + expect(error).toHaveBeenCalledWith('something else'); + + first.unmount(); + throwCaught(); + expect(warn).toHaveBeenCalledTimes(2); + + second.unmount(); + throwCaught(); + expect(warn).toHaveBeenCalledTimes(2); + expect(error).toHaveBeenCalledTimes(2); +}); diff --git a/website/src/components/Playground/preview/usePlaygroundConsoleDemotion.ts b/website/src/components/Playground/preview/usePlaygroundConsoleDemotion.ts index 082d47aaab22..5765c55b51db 100644 --- a/website/src/components/Playground/preview/usePlaygroundConsoleDemotion.ts +++ b/website/src/components/Playground/preview/usePlaygroundConsoleDemotion.ts @@ -3,9 +3,10 @@ import { useEffect } from 'react'; /** * Playground console demotion — third-party noise only. * - * Live previews pull in packages we do not own (react-live, React's reaction to - * react-live's ErrorBoundary, sucrase's classic JSX). Those emit development - * console noise that is expected during demos and is safe to demote/suppress. + * When preview code throws, react-live's ErrorBoundary shows the error, and + * React still logs it as a console.error. That is expected during demos, so it + * is demoted to a warning. (Docusaurus creates the React root, so we can't pass + * it an `onCaughtError` instead.) * * Do NOT add matchers for anything we control and should fix instead: * - `@data-client/*` packages @@ -15,23 +16,11 @@ import { useEffect } from 'react'; * paper over it here. */ -/** react-live / React ErrorBoundary follow-ups (not @data-client). → warn */ -const DEMOTE_ERROR = [ - // React after a preview throw caught by react-live's ErrorBoundary - /The above error occurred in the <[^>]+> component:/, - /React will try to recreate this component tree/, - // react-live's ErrorBoundary only implements componentDidCatch - /Error boundaries should implement getDerivedStateFromError\(\)/, -]; - -/** react-live → sucrase classic JSX (emits __self). Not our transform. → drop */ -const DEMOTE_WARN = [ - /Your app \(or one of its dependencies\) is using an outdated JSX transform/, -]; +/** React's report of an error a preview's ErrorBoundary caught. → warn */ +const DEMOTE_ERROR = /React will try to recreate this component tree/; let refCount = 0; let originalError: typeof console.error | undefined; -let originalWarn: typeof console.warn | undefined; /** Flatten console args the way React 19 may pass them (format string + Error). */ function consoleMessage(args: unknown[]): string { @@ -45,50 +34,31 @@ function consoleMessage(args: unknown[]): string { .join('\n'); } -function shouldDemoteConsole(args: unknown[], patterns: RegExp[]): boolean { - const message = consoleMessage(args); - return Boolean(message) && patterns.some(pattern => pattern.test(message)); -} - function demotedConsoleError(...args: unknown[]) { - if (shouldDemoteConsole(args, DEMOTE_ERROR)) { + const message = consoleMessage(args); + if (DEMOTE_ERROR.test(message)) { console.warn(...args); return; } originalError?.apply(console, args); } -function demotedConsoleWarn(...args: unknown[]) { - if (shouldDemoteConsole(args, DEMOTE_WARN)) { - return; - } - originalWarn?.apply(console, args); -} - -/** Demote third-party react-live / React preview console noise while previews are mounted. */ +/** Demote React's caught-error logs to warnings while previews are mounted. */ export function usePlaygroundConsoleDemotion() { useEffect(() => { if (typeof console === 'undefined') return; if (refCount === 0) { originalError = console.error; - originalWarn = console.warn; console.error = demotedConsoleError as typeof console.error; - console.warn = demotedConsoleWarn as typeof console.warn; } refCount += 1; return () => { refCount -= 1; - if (refCount === 0) { - if (originalError) { - console.error = originalError; - originalError = undefined; - } - if (originalWarn) { - console.warn = originalWarn; - originalWarn = undefined; - } + if (refCount === 0 && originalError) { + console.error = originalError; + originalError = undefined; } }; }, []); diff --git a/website/src/theme/ReactLiveScope/index.js b/website/src/theme/ReactLiveScope/index.js deleted file mode 100644 index e3c7de5fec01..000000000000 --- a/website/src/theme/ReactLiveScope/index.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import * as endpoint from '@data-client/endpoint'; -import React from 'react'; - -// Add react-live imports you need here -const ReactLiveScope = { - React, - ...React, - ...endpoint, -}; - -export default ReactLiveScope; diff --git a/website/translate/lock/es.json b/website/translate/lock/es.json index 8e55dcc71f89..6eed5ec48fb4 100644 --- a/website/translate/lock/es.json +++ b/website/translate/lock/es.json @@ -268,7 +268,6 @@ "theme.SearchModal.noResultsScreen.reportMissingResultsText": "Believe this query should return results?", "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": "Let us know.", "theme.SearchModal.placeholder": "Search docs", - "theme.Playground.buttons.reset": "Reset", "theme.blog.post.plurals": "One post|{count} posts", "theme.blog.tagTitle": "{nPosts} tagged with \"{tagName}\"", "theme.blog.authorsList.pageTitle": "Authors", diff --git a/website/translate/lock/pt-BR.json b/website/translate/lock/pt-BR.json index 60861f043225..c9664de12f15 100644 --- a/website/translate/lock/pt-BR.json +++ b/website/translate/lock/pt-BR.json @@ -280,7 +280,6 @@ "theme.SearchModal.startScreen.removeRecentConversationButtonTitle": "Remove this conversation from history", "theme.SearchModal.askAiScreen.likeButtonTitle": "Like", "theme.SearchModal.askAiScreen.dislikeButtonTitle": "Dislike", - "theme.Playground.buttons.reset": "Reset", "theme.SearchModal.searchBox.enterKeyHintAskAi": "enter", "theme.blog.author.pageTitle": "{authorName} - {nPosts}", "homepage.githubStars.star": "Star", diff --git a/website/translate/lock/zh-Hans.json b/website/translate/lock/zh-Hans.json index b7c80930127c..7ecbdcf59309 100644 --- a/website/translate/lock/zh-Hans.json +++ b/website/translate/lock/zh-Hans.json @@ -345,7 +345,6 @@ "theme.SearchModal.askAiScreen.afterToolCallText": "Searched for", "theme.SearchModal.footer.submitQuestionText": "Submit question", "theme.SearchModal.footer.backToSearchText": "Back to search", - "theme.Playground.buttons.reset": "Reset", "homepage.githubStars.star": "Star", "errors.dklj.customLink": "Entity key", "errors.osid.customLink": "Endpoint name", diff --git a/yarn.lock b/yarn.lock index 09edc09dad52..82c8705d0e40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6080,26 +6080,6 @@ __metadata: languageName: node linkType: hard -"@docusaurus/theme-live-codeblock@npm:^3.0.1": - version: 3.10.2 - resolution: "@docusaurus/theme-live-codeblock@npm:3.10.2" - dependencies: - "@docusaurus/core": "npm:3.10.2" - "@docusaurus/theme-common": "npm:3.10.2" - "@docusaurus/theme-translations": "npm:3.10.2" - "@docusaurus/utils-validation": "npm:3.10.2" - "@philpl/buble": "npm:^0.19.7" - clsx: "npm:^2.0.0" - fs-extra: "npm:^11.1.1" - react-live: "npm:^4.1.6" - tslib: "npm:^2.6.0" - peerDependencies: - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - checksum: 10c0/f1951bc6bda1e46d5936d7d15423bc94c33018e236bac0eb76eeec3e8f9154af2d7210e52ae0bc3072c1051d546a00d33bbea0e6be560f17a6daba0fad8253c1 - languageName: node - linkType: hard - "@docusaurus/theme-mermaid@npm:^3.0.1": version: 3.10.2 resolution: "@docusaurus/theme-mermaid@npm:3.10.2" @@ -9164,25 +9144,6 @@ __metadata: languageName: node linkType: hard -"@philpl/buble@npm:^0.19.7": - version: 0.19.7 - resolution: "@philpl/buble@npm:0.19.7" - dependencies: - acorn: "npm:^6.1.1" - acorn-class-fields: "npm:^0.2.1" - acorn-dynamic-import: "npm:^4.0.0" - acorn-jsx: "npm:^5.0.1" - chalk: "npm:^2.4.2" - magic-string: "npm:^0.25.2" - minimist: "npm:^1.2.0" - os-homedir: "npm:^1.0.1" - regexpu-core: "npm:^4.5.4" - bin: - buble: ./bin/buble - checksum: 10c0/3347a4f5ae1bde6b9cd40e1e9d6f1b7e8defa1d7d1d148f0a0a87f1f4489d7c6826bd0c2334add1233bbf378eb6397d9d3b9269baeb66341df7773751483a8ef - languageName: node - linkType: hard - "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -13063,24 +13024,6 @@ __metadata: languageName: node linkType: hard -"acorn-class-fields@npm:^0.2.1": - version: 0.2.1 - resolution: "acorn-class-fields@npm:0.2.1" - peerDependencies: - acorn: ^6.0.0 - checksum: 10c0/45f27a849178974e5b0fd727bbb63b5aa5498a58d9417b0bb3ad52979c66c94ec43b4de2c5a34f269b204bdad0cf47d55879a98f2171a8cc6bd3dde9c2a6f118 - languageName: node - linkType: hard - -"acorn-dynamic-import@npm:^4.0.0": - version: 4.0.0 - resolution: "acorn-dynamic-import@npm:4.0.0" - peerDependencies: - acorn: ^6.0.0 - checksum: 10c0/5450c917d28f39cabf64495928a711f446cb6a4731d45fcd8f160cc3ceb6fee3e1b4a8cb308b5ba4e9a0e450742f67d7295322033ffaa378a355af6cd2232693 - languageName: node - linkType: hard - "acorn-import-phases@npm:^1.0.3": version: 1.0.4 resolution: "acorn-import-phases@npm:1.0.4" @@ -13090,7 +13033,7 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.0.1, acorn-jsx@npm:^5.3.2": +"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -13106,15 +13049,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^6.1.1": - version: 6.4.2 - resolution: "acorn@npm:6.4.2" - bin: - acorn: bin/acorn - checksum: 10c0/52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b - languageName: node - linkType: hard - "acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.16.0, acorn@npm:^8.8.2": version: 8.16.0 resolution: "acorn@npm:8.16.0" @@ -14664,7 +14598,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.3.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:^2.3.0, chalk@npm:^2.4.1": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -19199,7 +19133,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.3.10, glob@npm:^10.4.1": +"glob@npm:^10.4.1": version: 10.5.0 resolution: "glob@npm:10.5.0" dependencies: @@ -22055,15 +21989,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 - languageName: node - linkType: hard - "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -22682,7 +22607,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.25.2, magic-string@npm:^0.25.7": +"magic-string@npm:^0.25.7": version: 0.25.9 resolution: "magic-string@npm:0.25.9" dependencies: @@ -25327,13 +25252,6 @@ __metadata: languageName: node linkType: hard -"os-homedir@npm:^1.0.1": - version: 1.0.2 - resolution: "os-homedir@npm:1.0.2" - checksum: 10c0/6be4aa67317ee247b8d46142e243fb4ef1d2d65d3067f54bfc5079257a2f4d4d76b2da78cba7af3cb3f56dbb2e4202e0c47f26171d11ca1ed4008d842c90363f - languageName: node - linkType: hard - "outdent@npm:^0.5.0": version: 0.5.0 resolution: "outdent@npm:0.5.0" @@ -27897,15 +27815,15 @@ __metadata: languageName: node linkType: hard -"prism-react-renderer@npm:^2.3.0, prism-react-renderer@npm:^2.4.0": - version: 2.4.0 - resolution: "prism-react-renderer@npm:2.4.0" +"prism-react-renderer@npm:^2.3.0, prism-react-renderer@npm:^2.4.1": + version: 2.4.1 + resolution: "prism-react-renderer@npm:2.4.1" dependencies: "@types/prismjs": "npm:^1.26.0" clsx: "npm:^2.0.0" peerDependencies: react: ">=16.0.0" - checksum: 10c0/3d6969b057da0efe39e3e637bf93601cd5757de5919180e8df16daf1d1b8eedc39b70c7f6f28724fba0a01bc857c6b78312ab027f4e913159d1165c5aba235bb + checksum: 10c0/ebbe8feb975224344bbdd046b3a937d121592dbe4b8f22ba0be31f5af37b9a8219f441138ef6cab1c5b96f2aa6b529015200959f7e5e85b60ca69c81d35edcd4 languageName: node linkType: hard @@ -28257,7 +28175,6 @@ __metadata: "@docusaurus/plugin-content-docs": "npm:^3.0.1" "@docusaurus/plugin-pwa": "npm:^3.10.2" "@docusaurus/preset-classic": "npm:^3.0.1" - "@docusaurus/theme-live-codeblock": "npm:^3.0.1" "@docusaurus/theme-mermaid": "npm:^3.0.1" "@docusaurus/utils": "npm:^3.0.1" "@emotion/react": "npm:^11.14.0" @@ -28287,7 +28204,7 @@ __metadata: raw-loader: "npm:^4.0.2" react: "npm:^19.0.0" react-dom: "npm:^19.0.0" - react-live: "npm:^4.0.0" + react-live: "npm:^5.0.0" react-redux: "npm:^9.2.0" redux: "npm:^5.0.1" remark-directive: "npm:^4.0.0" @@ -28475,17 +28392,17 @@ __metadata: languageName: node linkType: hard -"react-live@npm:^4.0.0, react-live@npm:^4.1.6": - version: 4.1.8 - resolution: "react-live@npm:4.1.8" +"react-live@npm:^5.0.0": + version: 5.0.1 + resolution: "react-live@npm:5.0.1" dependencies: - prism-react-renderer: "npm:^2.4.0" - sucrase: "npm:^3.35.0" + prism-react-renderer: "npm:^2.4.1" + sucrase: "npm:^3.35.1" use-editable: "npm:^2.3.3" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/fa96ca176bc9074e4892d6a079b94488ba74e95907ea187678afb17e4a23cc7760c3774ef17f4429d2ba562f1fda852a822e18a161ef386676371c56a7585970 + checksum: 10c0/9e7a85c8fe3ec364b19ff0ad43f7c931bc811d75b7eaa8583b7a2051b77600a6bd67a5d311e9379cd343ec84961cbc096d16aba871a8c0e5d971a41d04ccba47 languageName: node linkType: hard @@ -28893,15 +28810,6 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^9.0.0": - version: 9.0.0 - resolution: "regenerate-unicode-properties@npm:9.0.0" - dependencies: - regenerate: "npm:^1.4.2" - checksum: 10c0/dc648891572f1d8326c01b335b126d766fe6684e5e760d4daa6c1d214d162b8c027fe0e6ee0a3e3d8d20bd869567f363f6be60bdfc054a14e7ad7d347891a506 - languageName: node - linkType: hard - "regenerate@npm:^1.4.2, regenerate@npm:^1.5.0": version: 1.5.0 resolution: "regenerate@npm:1.5.0" @@ -28930,20 +28838,6 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^4.5.4": - version: 4.8.0 - resolution: "regexpu-core@npm:4.8.0" - dependencies: - regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^9.0.0" - regjsgen: "npm:^0.5.2" - regjsparser: "npm:^0.7.0" - unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.0.0" - checksum: 10c0/cea09893ae49956ba11c3a7433295c61bfbaa92792f565fb54c463dfdd5a81a150ba67a22cd4ecded005425cbb78dc0ea34d5ff771f07f9d31931bafb189e367 - languageName: node - linkType: hard - "regexpu-core@npm:^6.3.1, regexpu-core@npm:^6.5.3": version: 6.5.3 resolution: "regexpu-core@npm:6.5.3" @@ -28995,13 +28889,6 @@ __metadata: languageName: node linkType: hard -"regjsgen@npm:^0.5.2": - version: 0.5.2 - resolution: "regjsgen@npm:0.5.2" - checksum: 10c0/66cd5a9427a6db11a18eb544ecadf6866c8eeb3bf66d57185a9788929263b42641068df014d7e4d32a5cfbf114676f9bdd3013629203f03b1538416a1f4050e3 - languageName: node - linkType: hard - "regjsgen@npm:^0.8.0": version: 0.8.0 resolution: "regjsgen@npm:0.8.0" @@ -29020,17 +28907,6 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.7.0": - version: 0.7.0 - resolution: "regjsparser@npm:0.7.0" - dependencies: - jsesc: "npm:~0.5.0" - bin: - regjsparser: bin/parser - checksum: 10c0/4b891ff0d2c835717d6e7ad9194da7f5271e410422fe51fa73b1f33978df8f6784e2a079938c9827f62fd13c258ae7e7e69f910799bb003b6a0b5e8854801719 - languageName: node - linkType: hard - "rehype-raw@npm:^7.0.0": version: 7.0.0 resolution: "rehype-raw@npm:7.0.0" @@ -29692,7 +29568,7 @@ __metadata: prettier: "npm:3.9.10" react: "npm:19.3.0" react-dom: "npm:19.3.0" - react-live: "npm:^4.0.0" + react-live: "npm:^5.0.0" react-native: "npm:0.87.1" react-native-safe-area-context: "npm:^5.0.0" react-native-screens: "npm:^4.1.0" @@ -31226,21 +31102,21 @@ __metadata: languageName: node linkType: hard -"sucrase@npm:^3.35.0": - version: 3.35.0 - resolution: "sucrase@npm:3.35.0" +"sucrase@npm:^3.35.1": + version: 3.35.1 + resolution: "sucrase@npm:3.35.1" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.2" commander: "npm:^4.0.0" - glob: "npm:^10.3.10" lines-and-columns: "npm:^1.1.6" mz: "npm:^2.7.0" pirates: "npm:^4.0.1" + tinyglobby: "npm:^0.2.11" ts-interface-checker: "npm:^0.1.9" bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: 10c0/ac85f3359d2c2ecbf5febca6a24ae9bf96c931f05fde533c22a94f59c6a74895e5d5f0e871878dfd59c2697a75ebb04e4b2224ef0bfc24ca1210735c2ec191ef + checksum: 10c0/6fa22329c261371feb9560630d961ad0d0b9c87dce21ea74557c5f3ffbe5c1ee970ea8bcce9962ae9c90c3c47165ffa7dd41865c7414f5d8ea7a40755d612c5c languageName: node linkType: hard @@ -31686,13 +31562,13 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" +"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": + version: 0.2.17 + resolution: "tinyglobby@npm:0.2.17" dependencies: fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + picomatch: "npm:^4.0.4" + checksum: 10c0/7f7bb0f197c88bc4b20c231e0deca4240ca3bf313a88f5a7fee93a872b84966a4d50220947c0455ad07a60b3b360961c5b7fd979222aeb716a9f99b412002e4c languageName: node linkType: hard @@ -32253,7 +32129,7 @@ __metadata: languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^2.0.0, unicode-match-property-value-ecmascript@npm:^2.2.1": +"unicode-match-property-value-ecmascript@npm:^2.2.1": version: 2.2.1 resolution: "unicode-match-property-value-ecmascript@npm:2.2.1" checksum: 10c0/93acd1ad9496b600e5379d1aaca154cf551c5d6d4a0aefaf0984fc2e6288e99220adbeb82c935cde461457fb6af0264a1774b8dfd4d9a9e31548df3352a4194d From f314b2c91f53e2e11167671e6689eeff7e90ee21 Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Wed, 14 Oct 2026 02:49:22 +0000 Subject: [PATCH 06/11] docs: Show five more playgrounds' code and preview side by side (#4372) * docs: Show five more playgrounds' code and preview side by side The SWAPI demo, StreamManager demo, mocking guide, client-side join and Invalidate expiry demos each have one tall open file and a short preview, so row layout puts the result next to the code instead of a screen below it. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01VCh1jpzPu1pBp6zNSwyHFP * docs(website): Say when to use the playground's row layout Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01VCh1jpzPu1pBp6zNSwyHFP * docs(website): Give each row-layout exception its own reason Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01VCh1jpzPu1pBp6zNSwyHFP --------- Co-authored-by: Claude --- docs/core/concepts/expiry-policy.md | 2 +- docs/core/shared/_StreamManagerDemo.mdx | 2 +- docs/graphql/README.md | 2 +- docs/rest/guides/mocking-unfinished.md | 2 +- docs/rest/guides/relational-data.md | 2 +- website/src/components/Playground/index.tsx | 6 +++++- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/core/concepts/expiry-policy.md b/docs/core/concepts/expiry-policy.md index 55b0ac1d209a..2beb53c1a7f9 100644 --- a/docs/core/concepts/expiry-policy.md +++ b/docs/core/concepts/expiry-policy.md @@ -807,7 +807,7 @@ render(); Using the [Invalidate schema](/rest/api/Invalidate) allows us to invalidate _any_ endpoint that includes that relies on that [entity](/rest/api/Entity) in their response. If the endpoint uses the entity in an [Array](/rest/api/Array), it will simply be removed from that [Array](/rest/api/Array). - + ```ts title="Ticker" collapsed import { Entity } from '@data-client/rest'; diff --git a/docs/graphql/README.md b/docs/graphql/README.md index 3b5134d3fe79..320a129c6531 100644 --- a/docs/graphql/README.md +++ b/docs/graphql/README.md @@ -133,7 +133,7 @@ suspends.
SWAPI Demo - + ```tsx import { useSuspense } from '@data-client/react'; diff --git a/docs/rest/guides/mocking-unfinished.md b/docs/rest/guides/mocking-unfinished.md index 9fd7ccf7c506..c444a38f520c 100644 --- a/docs/rest/guides/mocking-unfinished.md +++ b/docs/rest/guides/mocking-unfinished.md @@ -9,7 +9,7 @@ but they are starting to code the same time as you. It would be nice to easily mock the endpoint and use it in a way such that when the endpoint is done you won't need to make major changes to your code. - + ```typescript title="resources/Rating" import { Entity, resource } from '@data-client/rest'; diff --git a/docs/rest/guides/relational-data.md b/docs/rest/guides/relational-data.md index 356d9e8ac02d..8824b60f8934 100644 --- a/docs/rest/guides/relational-data.md +++ b/docs/rest/guides/relational-data.md @@ -214,7 +214,7 @@ Nesting data when your endpoint doesn't. Even if the network responses don't nest data, we can perform client-side joins by specifying the relationship in [Entity.schema](../api/Entity.md#schema) - + ```ts title="resources/User" collapsed import { Entity, resource } from '@data-client/rest'; diff --git a/website/src/components/Playground/index.tsx b/website/src/components/Playground/index.tsx index 0c31124fffaa..1a4898157272 100644 --- a/website/src/components/Playground/index.tsx +++ b/website/src/components/Playground/index.tsx @@ -28,7 +28,11 @@ export interface PlaygroundProps { groupId?: string; /** Store inspector open by default */ defaultOpen?: 'y' | 'n'; - /** Tabs for files + editor beside preview (when wide enough) */ + /** Tabs for files + editor beside preview (when wide enough). + * Use when the code is one tall open file and the preview is short. Stay + * stacked when the Store opens by default (it would cover the code), when + * the fixtures are the lesson (row hides them), or when the preview renders + * a long list (it gets tall in the narrow column). */ row?: boolean; /** Inactive (e.g. unselected Demo tab): no Monaco until first shown, no preview */ hidden?: boolean; From fb1c84dabe1a4827df7243bb32c8f8d498d63a25 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 02:59:15 +0000 Subject: [PATCH 07/11] pkg: Update `temporal-polyfill` to v1 (#4367) * pkg: Update `temporal-polyfill` to v1 * pkg: Adapt to temporal-polyfill v1 v1 ships ESM only, so Jest now compiles temporal-polyfill and its temporal-spec/temporal-utils deps. It also defers to native Temporal itself, so the playground scope drops its manual fallback. Regenerates the playground's Temporal editor types from temporal-spec 1.0. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01NPWyKyp6ZsQTPy34USqPYA * pkg: Restore EntityMixin ts-expect-error placement tsc (TS 7, the CI typecheck) still reports the excess-property error on the key; only ts-jest's TS 6 reports it at the call, and CI runs Jest without type checking. Also drops types-only temporal-spec from Jest's transform list and notes that the polyfill now defers to native Temporal. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01NPWyKyp6ZsQTPy34USqPYA --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Claude --- examples/github-app/package-lock.json | 25 +- examples/github-app/package.json | 2 +- jest.config.js | 12 +- package.json | 2 +- packages/endpoint/package.json | 2 +- packages/normalizr/package.json | 2 +- packages/react/package.json | 2 +- packages/vue/package.json | 2 +- website/package.json | 2 +- .../Playground/editor-types/temporal.d.ts | 1825 ++++++----------- .../components/Playground/preview/scope.ts | 5 +- .../components/Playground/preview/temporal.ts | 11 - yarn.lock | 38 +- 13 files changed, 714 insertions(+), 1216 deletions(-) delete mode 100644 website/src/components/Playground/preview/temporal.ts diff --git a/examples/github-app/package-lock.json b/examples/github-app/package-lock.json index f757eee74424..d82b4689e23f 100644 --- a/examples/github-app/package-lock.json +++ b/examples/github-app/package-lock.json @@ -28,7 +28,7 @@ "rehype-highlight": "7.0.2", "remark-gfm": "4.0.1", "remark-remove-comments": "1.1.1", - "temporal-polyfill": "^0.3.0", + "temporal-polyfill": "^1.0.0", "uuid": "^14.0.0" }, "devDependencies": { @@ -24520,19 +24520,26 @@ } }, "node_modules/temporal-polyfill": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.2.tgz", - "integrity": "sha512-TzHthD/heRK947GNiSu3Y5gSPpeUDH34+LESnfsq8bqpFhsB79HFBX8+Z834IVX68P3EUyRPZK5bL/1fh437Eg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-1.0.6.tgz", + "integrity": "sha512-tYyEry1HLGUDbm2356W3iYD0OZdo7rlP7h98Zr/EnjqLZQwTAfcBDUvJnJbfA15v/vQad57hJZScG5O0W2oKEA==", "license": "MIT", "dependencies": { - "temporal-spec": "0.3.1" + "temporal-spec": "1.0.1", + "temporal-utils": "1.0.3" } }, "node_modules/temporal-spec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.1.tgz", - "integrity": "sha512-B4TUhezh9knfSIMwt7RVggApDRJZo73uZdj8AacL2mZ8RP5KtLianh2MXxL06GN9ESYiIsiuoLQhgVfwe55Yhw==", - "license": "ISC" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-1.0.1.tgz", + "integrity": "sha512-wxVoanmDeavXie1vu2JaQ3WIc3JZnWAOYFBsJyATaVsXsycKYUflGsyBmrRSnoCpZJpwPyr38VpgSUlQ8CbFxg==", + "license": "Apache-2.0" + }, + "node_modules/temporal-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/temporal-utils/-/temporal-utils-1.0.3.tgz", + "integrity": "sha512-9jbTSX3HvkOWvDpNpFzwX/d1mkCrgQgwLmVTOEiuocZGKHsrQJtttGZFmybJ2zYP5zCSZuU5ZyeS8+eOEPABiQ==", + "license": "MIT" }, "node_modules/terser": { "version": "5.46.0", diff --git a/examples/github-app/package.json b/examples/github-app/package.json index a996c8a96241..df3704e87e46 100644 --- a/examples/github-app/package.json +++ b/examples/github-app/package.json @@ -57,7 +57,7 @@ "@data-client/img": "0.18.2", "@data-client/react": "0.18.2", "@data-client/rest": "0.18.2", - "temporal-polyfill": "^0.3.0", + "temporal-polyfill": "^1.0.0", "antd": "6.6.6", "core-js": "^3.48.0", "history": "^5.3.0", diff --git a/jest.config.js b/jest.config.js index ada354a3bb14..ec59f06c9eaa 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,7 +5,14 @@ process.env.ANANSI_JEST_TSCONFIG = 'tsconfig.test.json'; const fs = require('fs'); const path = require('path'); +// ESM-only dependencies tests import; Jest must compile them to CommonJS +const esmModules = 'temporal-polyfill|temporal-utils'; + const baseConfig = { + transformIgnorePatterns: [ + `/node_modules/(?!@babel/runtime|${esmModules})`, + '\\.pnp\\.[^\\/]+$', + ], testEnvironmentOptions: { globalsCleanup: 'on', url: 'http://localhost', @@ -108,8 +115,7 @@ const projects = [ ], }, transformIgnorePatterns: [ - '/node_modules/(?!@babel/runtime)', - '\\.pnp\\.[^\\/]+$', + ...baseConfig.transformIgnorePatterns, '/.*__tests__/[^/]+\\.(web|native)\\.(j|t)sx?$', ], testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.node\\.(j|t)sx?$', @@ -136,7 +142,7 @@ const projects = [ testEnvironment: require.resolve('@react-native/jest-preset/jest/react-native-env.js'), transformIgnorePatterns: [ - 'node_modules\\/(?!(((jest-)?react-native)|@react-native(-community)?|@react-navigation))', + `node_modules\\/(?!(((jest-)?react-native)|@react-native(-community)?|@react-navigation|${esmModules}))`, '/.*__tests__/[^/]+\\.(web|node)\\.(j|t)sx?$', '/scripts', ], diff --git a/package.json b/package.json index c9e876602e65..0cdd5fef5eeb 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "react-test-renderer": "19.3.0", "rimraf": "^6.0.0", "rollup": "4.62.2", - "temporal-polyfill": "^0.3.0", + "temporal-polyfill": "^1.0.0", "typescript": "npm:@typescript/typescript6@6.0.2", "whatwg-fetch": "3.0.0" }, diff --git a/packages/endpoint/package.json b/packages/endpoint/package.json index 22da9b685295..24d9c4f5c28d 100644 --- a/packages/endpoint/package.json +++ b/packages/endpoint/package.json @@ -136,6 +136,6 @@ "immutable": "5.1.9", "nock": "13.3.1", "rollup-plugins": "workspace:*", - "temporal-polyfill": "^0.3.0" + "temporal-polyfill": "^1.0.0" } } diff --git a/packages/normalizr/package.json b/packages/normalizr/package.json index 4f5080f27b10..900bd43fab88 100644 --- a/packages/normalizr/package.json +++ b/packages/normalizr/package.json @@ -123,6 +123,6 @@ "@types/node": "^26.0.0", "immutable": "5.1.9", "rollup-plugins": "workspace:*", - "temporal-polyfill": "^0.3.0" + "temporal-polyfill": "^1.0.0" } } diff --git a/packages/react/package.json b/packages/react/package.json index cda4b6d5c10e..6d6b51c679b4 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -201,6 +201,6 @@ "react-test-renderer": "^19.0.0", "redux": "^5.0.1", "rollup-plugins": "workspace:*", - "temporal-polyfill": "^0.3.0" + "temporal-polyfill": "^1.0.0" } } diff --git a/packages/vue/package.json b/packages/vue/package.json index 1aa0632d8a15..e6be4863f659 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -135,7 +135,7 @@ "jest-mock": "^30.0.0", "nock": "13.3.1", "rollup-plugins": "workspace:*", - "temporal-polyfill": "^0.3.0", + "temporal-polyfill": "^1.0.0", "vue": "^3.4.0" } } diff --git a/website/package.json b/website/package.json index 29b0bae46496..d62470f23831 100644 --- a/website/package.json +++ b/website/package.json @@ -86,7 +86,7 @@ "react": "^19.0.0", "react-dom": "^19.0.0", "react-live": "^5.0.0", - "temporal-polyfill": "^0.3.0", + "temporal-polyfill": "^1.0.0", "typescript": "npm:@typescript/typescript6@6.0.2", "uuid": "^14.0.0" }, diff --git a/website/src/components/Playground/editor-types/temporal.d.ts b/website/src/components/Playground/editor-types/temporal.d.ts index c29e54693f77..626e9c1c176f 100644 --- a/website/src/components/Playground/editor-types/temporal.d.ts +++ b/website/src/components/Playground/editor-types/temporal.d.ts @@ -1,772 +1,365 @@ /* -NOTE: keep synced with all other definition files +This file was derived from the TypeScript project. +Original source: https://github.com/microsoft/TypeScript/blob/main/src/lib/esnext.intl.d.ts +Copyright (c) Microsoft Corporation. Licensed under the Apache License 2.0. */ -export namespace Temporal { - type ComparisonResult = -1 | 0 | 1; - type RoundingMode = - | 'ceil' - | 'floor' - | 'expand' - | 'trunc' - | 'halfCeil' - | 'halfFloor' - | 'halfExpand' - | 'halfTrunc' - | 'halfEven'; - - /** - * Options for assigning fields using `with()` or entire objects with - * `from()`. - * */ - type AssignmentOptions = { - /** - * How to deal with out-of-range values - * - * - In `'constrain'` mode, out-of-range values are clamped to the nearest - * in-range value. - * - In `'reject'` mode, out-of-range values will cause the function to - * throw a RangeError. - * - * The default is `'constrain'`. - */ - overflow?: 'constrain' | 'reject' | undefined; - }; - - /** - * Options for assigning fields using `Duration.prototype.with()` or entire - * objects with `Duration.from()`, and for arithmetic with - * `Duration.prototype.add()` and `Duration.prototype.subtract()`. - * */ - type DurationOptions = { - /** - * How to deal with out-of-range values - * - * - In `'constrain'` mode, out-of-range values are clamped to the nearest - * in-range value. - * - In `'balance'` mode, out-of-range values are resolved by balancing them - * with the next highest unit. - * - * The default is `'constrain'`. - */ - overflow?: 'constrain' | 'balance' | undefined; - }; - - /** - * Options for conversions of `Temporal.PlainDateTime` to `Temporal.Instant` - * */ - type ToInstantOptions = { - /** - * Controls handling of invalid or ambiguous times caused by time zone - * offset changes like Daylight Saving time (DST) transitions. - * - * This option is only relevant if a `DateTime` value does not exist in the - * destination time zone (e.g. near "Spring Forward" DST transitions), or - * exists more than once (e.g. near "Fall Back" DST transitions). - * - * In case of ambiguous or nonexistent times, this option controls what - * exact time to return: - * - `'compatible'`: Equivalent to `'earlier'` for backward transitions like - * the start of DST in the Spring, and `'later'` for forward transitions - * like the end of DST in the Fall. This matches the behavior of legacy - * `Date`, of libraries like moment.js, Luxon, or date-fns, and of - * cross-platform standards like [RFC 5545 - * (iCalendar)](https://tools.ietf.org/html/rfc5545). - * - `'earlier'`: The earlier time of two possible times - * - `'later'`: The later of two possible times - * - `'reject'`: Throw a RangeError instead - * - * The default is `'compatible'`. - * - * */ - disambiguation?: 'compatible' | 'earlier' | 'later' | 'reject' | undefined; - }; - - type OffsetDisambiguationOptions = { - /** - * Time zone definitions can change. If an application stores data about - * events in the future, then stored data about future events may become - * ambiguous, for example if a country permanently abolishes DST. The - * `offset` option controls this unusual case. - * - * - `'use'` always uses the offset (if it's provided) to calculate the - * instant. This ensures that the result will match the instant that was - * originally stored, even if local clock time is different. - * - `'prefer'` uses the offset if it's valid for the date/time in this time - * zone, but if it's not valid then the time zone will be used as a - * fallback to calculate the instant. - * - `'ignore'` will disregard any provided offset. Instead, the time zone - * and date/time value are used to calculate the instant. This will keep - * local clock time unchanged but may result in a different real-world - * instant. - * - `'reject'` acts like `'prefer'`, except it will throw a RangeError if - * the offset is not valid for the given time zone identifier and - * date/time value. - * - * If the ISO string ends in 'Z' then this option is ignored because there - * is no possibility of ambiguity. - * - * If a time zone offset is not present in the input, then this option is - * ignored because the time zone will always be used to calculate the - * offset. - * - * If the offset is not used, and if the date/time and time zone don't - * uniquely identify a single instant, then the `disambiguation` option will - * be used to choose the correct instant. However, if the offset is used - * then the `disambiguation` option will be ignored. - */ - offset?: 'use' | 'prefer' | 'ignore' | 'reject' | undefined; - }; - - type ZonedDateTimeAssignmentOptions = AssignmentOptions & ToInstantOptions & OffsetDisambiguationOptions; - - /** - * Options for arithmetic operations like `add()` and `subtract()` - * */ - type ArithmeticOptions = { - /** - * Controls handling of out-of-range arithmetic results. - * - * If a result is out of range, then `'constrain'` will clamp the result to - * the allowed range, while `'reject'` will throw a RangeError. - * - * The default is `'constrain'`. - */ - overflow?: 'constrain' | 'reject' | undefined; - }; - - type DateUnit = 'year' | 'month' | 'week' | 'day'; - type TimeUnit = 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'; - type DateTimeUnit = DateUnit | TimeUnit; - - /** - * When the name of a unit is provided to a Temporal API as a string, it is - * usually singular, e.g. 'day' or 'hour'. But plural unit names like 'days' - * or 'hours' are also accepted. - * */ - type PluralUnit = { - year: 'years'; - month: 'months'; - week: 'weeks'; - day: 'days'; - hour: 'hours'; - minute: 'minutes'; - second: 'seconds'; - millisecond: 'milliseconds'; - microsecond: 'microseconds'; - nanosecond: 'nanoseconds'; - }[T]; - - type LargestUnit = 'auto' | T | PluralUnit; - type SmallestUnit = T | PluralUnit; - type TotalUnit = T | PluralUnit; - - /** - * Options for outputting precision in toString() on types with seconds - */ - type ToStringPrecisionOptions = { - fractionalSecondDigits?: 'auto' | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined; - smallestUnit?: SmallestUnit<'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> | undefined; - - /** - * Controls how rounding is performed: - * - `halfExpand`: Round to the nearest of the values allowed by - * `roundingIncrement` and `smallestUnit`. When there is a tie, round up. - * This mode is the default. - * - `ceil`: Always round up, towards the end of time. - * - `trunc`: Always round down, towards the beginning of time. - * - `floor`: Also round down, towards the beginning of time. This mode acts - * the same as `trunc`, but it's included for consistency with - * `Temporal.Duration.round()` where negative values are allowed and - * `trunc` rounds towards zero, unlike `floor` which rounds towards - * negative infinity which is usually unexpected. For this reason, `trunc` - * is recommended for most use cases. - */ - roundingMode?: RoundingMode | undefined; - }; - - type ShowCalendarOption = { - calendarName?: 'auto' | 'always' | 'never' | 'critical' | undefined; - }; - - type CalendarTypeToStringOptions = ToStringPrecisionOptions & ShowCalendarOption; +/// +/// +/// - type ZonedDateTimeToStringOptions = CalendarTypeToStringOptions & { - timeZoneName?: 'auto' | 'never' | 'critical' | undefined; - offset?: 'auto' | 'never' | undefined; - }; +export namespace Temporal { + type CalendarLike = + | PlainDate + | PlainDateTime + | PlainMonthDay + | PlainYearMonth + | ZonedDateTime + | string + type DurationLike = Duration | DurationLikeObject | string + type InstantLike = Instant | ZonedDateTime | string + type PlainDateLike = + | PlainDate + | ZonedDateTime + | PlainDateTime + | DateLikeObject + | string + type PlainDateTimeLike = + | PlainDateTime + | ZonedDateTime + | PlainDate + | DateTimeLikeObject + | string + type PlainMonthDayLike = PlainMonthDay | DateLikeObject | string + type PlainTimeLike = + | PlainTime + | PlainDateTime + | ZonedDateTime + | TimeLikeObject + | string + type PlainYearMonthLike = PlainYearMonth | YearMonthLikeObject | string + type TimeZoneLike = ZonedDateTime | string + type ZonedDateTimeLike = ZonedDateTime | ZonedDateTimeLikeObject | string + + type PartialTemporalLike = { + [P in Exclude]?: T[P] | undefined + } - type InstantToStringOptions = ToStringPrecisionOptions & { - timeZone?: TimeZoneLike | undefined; - }; + interface DateLikeObject { + year?: number | undefined + era?: string | undefined + eraYear?: number | undefined + month?: number | undefined + monthCode?: string | undefined + day: number + calendar?: string | undefined + } - /** - * Options to control the result of `until()` and `since()` methods in - * `Temporal` types. - */ - interface DifferenceOptions { - /** - * The unit to round to. For example, to round to the nearest minute, use - * `smallestUnit: 'minute'`. This property is optional for `until()` and - * `since()`, because those methods default behavior is not to round. - * However, the same property is required for `round()`. - */ - smallestUnit?: SmallestUnit | undefined; + interface DateTimeLikeObject extends DateLikeObject, TimeLikeObject {} + + interface DurationLikeObject { + years?: number | undefined + months?: number | undefined + weeks?: number | undefined + days?: number | undefined + hours?: number | undefined + minutes?: number | undefined + seconds?: number | undefined + milliseconds?: number | undefined + microseconds?: number | undefined + nanoseconds?: number | undefined + } - /** - * The largest unit to allow in the resulting `Temporal.Duration` object. - * - * Larger units will be "balanced" into smaller units. For example, if - * `largestUnit` is `'minute'` then a two-hour duration will be output as a - * 120-minute duration. - * - * Valid values may include `'year'`, `'month'`, `'week'`, `'day'`, - * `'hour'`, `'minute'`, `'second'`, `'millisecond'`, `'microsecond'`, - * `'nanosecond'` and `'auto'`, although some types may throw an exception - * if a value is used that would produce an invalid result. For example, - * `hours` is not accepted by `Temporal.PlainDate.prototype.since()`. - * - * The default is always `'auto'`, though the meaning of this depends on the - * type being used. - */ - largestUnit?: LargestUnit | undefined; + interface TimeLikeObject { + hour?: number | undefined + minute?: number | undefined + second?: number | undefined + millisecond?: number | undefined + microsecond?: number | undefined + nanosecond?: number | undefined + } - /** - * Allows rounding to an integer number of units. For example, to round to - * increments of a half hour, use `{ smallestUnit: 'minute', - * roundingIncrement: 30 }`. - */ - roundingIncrement?: number | undefined; + interface YearMonthLikeObject extends Omit {} - /** - * Controls how rounding is performed: - * - `halfExpand`: Round to the nearest of the values allowed by - * `roundingIncrement` and `smallestUnit`. When there is a tie, round away - * from zero like `ceil` for positive durations and like `floor` for - * negative durations. - * - `ceil`: Always round up, towards the end of time. - * - `trunc`: Always round down, towards the beginning of time. This mode is - * the default. - * - `floor`: Also round down, towards the beginning of time. This mode acts - * the same as `trunc`, but it's included for consistency with - * `Temporal.Duration.round()` where negative values are allowed and - * `trunc` rounds towards zero, unlike `floor` which rounds towards - * negative infinity which is usually unexpected. For this reason, `trunc` - * is recommended for most use cases. - */ - roundingMode?: RoundingMode | undefined; + interface ZonedDateTimeLikeObject extends DateTimeLikeObject { + timeZone: TimeZoneLike + offset?: string | undefined } - /** - * `round` methods take one required parameter. If a string is provided, the - * resulting `Temporal.Duration` object will be rounded to that unit. If an - * object is provided, its `smallestUnit` property is required while other - * properties are optional. A string is treated the same as an object whose - * `smallestUnit` property value is that string. - */ - type RoundTo = - | SmallestUnit + type DateUnit = 'year' | 'month' | 'week' | 'day' + type TimeUnit = + | 'hour' + | 'minute' + | 'second' + | 'millisecond' + | 'microsecond' + | 'nanosecond' + type PluralizeUnit = + | T | { - /** - * The unit to round to. For example, to round to the nearest minute, - * use `smallestUnit: 'minute'`. This option is required. Note that the - * same-named property is optional when passed to `until` or `since` - * methods, because those methods do no rounding by default. - */ - smallestUnit: SmallestUnit; - - /** - * Allows rounding to an integer number of units. For example, to round to - * increments of a half hour, use `{ smallestUnit: 'minute', - * roundingIncrement: 30 }`. - */ - roundingIncrement?: number | undefined; - - /** - * Controls how rounding is performed: - * - `halfExpand`: Round to the nearest of the values allowed by - * `roundingIncrement` and `smallestUnit`. When there is a tie, round up. - * This mode is the default. - * - `ceil`: Always round up, towards the end of time. - * - `trunc`: Always round down, towards the beginning of time. - * - `floor`: Also round down, towards the beginning of time. This mode acts - * the same as `trunc`, but it's included for consistency with - * `Temporal.Duration.round()` where negative values are allowed and - * `trunc` rounds towards zero, unlike `floor` which rounds towards - * negative infinity which is usually unexpected. For this reason, `trunc` - * is recommended for most use cases. - */ - roundingMode?: RoundingMode | undefined; - }; - - /** - * The `round` method of the `Temporal.Duration` accepts one required - * parameter. If a string is provided, the resulting `Temporal.Duration` - * object will be rounded to that unit. If an object is provided, the - * `smallestUnit` and/or `largestUnit` property is required, while other - * properties are optional. A string parameter is treated the same as an - * object whose `smallestUnit` property value is that string. - */ - type DurationRoundTo = - | SmallestUnit - | (( - | { - /** - * The unit to round to. For example, to round to the nearest - * minute, use `smallestUnit: 'minute'`. This property is normally - * required, but is optional if `largestUnit` is provided and not - * undefined. - */ - smallestUnit: SmallestUnit; - - /** - * The largest unit to allow in the resulting `Temporal.Duration` - * object. - * - * Larger units will be "balanced" into smaller units. For example, - * if `largestUnit` is `'minute'` then a two-hour duration will be - * output as a 120-minute duration. - * - * Valid values include `'year'`, `'month'`, `'week'`, `'day'`, - * `'hour'`, `'minute'`, `'second'`, `'millisecond'`, - * `'microsecond'`, `'nanosecond'` and `'auto'`. - * - * The default is `'auto'`, which means "the largest nonzero unit in - * the input duration". This default prevents expanding durations to - * larger units unless the caller opts into this behavior. - * - * If `smallestUnit` is larger, then `smallestUnit` will be used as - * `largestUnit`, superseding a caller-supplied or default value. - */ - largestUnit?: LargestUnit | undefined; - } - | { - /** - * The unit to round to. For example, to round to the nearest - * minute, use `smallestUnit: 'minute'`. This property is normally - * required, but is optional if `largestUnit` is provided and not - * undefined. - */ - smallestUnit?: SmallestUnit | undefined; - - /** - * The largest unit to allow in the resulting `Temporal.Duration` - * object. - * - * Larger units will be "balanced" into smaller units. For example, - * if `largestUnit` is `'minute'` then a two-hour duration will be - * output as a 120-minute duration. - * - * Valid values include `'year'`, `'month'`, `'week'`, `'day'`, - * `'hour'`, `'minute'`, `'second'`, `'millisecond'`, - * `'microsecond'`, `'nanosecond'` and `'auto'`. - * - * The default is `'auto'`, which means "the largest nonzero unit in - * the input duration". This default prevents expanding durations to - * larger units unless the caller opts into this behavior. - * - * If `smallestUnit` is larger, then `smallestUnit` will be used as - * `largestUnit`, superseding a caller-supplied or default value. - */ - largestUnit: LargestUnit; - } - ) & { - /** - * Allows rounding to an integer number of units. For example, to round - * to increments of a half hour, use `{ smallestUnit: 'minute', - * roundingIncrement: 30 }`. - */ - roundingIncrement?: number | undefined; - - /** - * Controls how rounding is performed: - * - `halfExpand`: Round to the nearest of the values allowed by - * `roundingIncrement` and `smallestUnit`. When there is a tie, round - * away from zero like `ceil` for positive durations and like `floor` - * for negative durations. This mode is the default. - * - `ceil`: Always round towards positive infinity. For negative - * durations this option will decrease the absolute value of the - * duration which may be unexpected. To round away from zero, use - * `ceil` for positive durations and `floor` for negative durations. - * - `trunc`: Always round down towards zero. - * - `floor`: Always round towards negative infinity. This mode acts the - * same as `trunc` for positive durations but for negative durations - * it will increase the absolute value of the result which may be - * unexpected. For this reason, `trunc` is recommended for most "round - * down" use cases. - */ - roundingMode?: RoundingMode | undefined; + year: 'years' + month: 'months' + week: 'weeks' + day: 'days' + hour: 'hours' + minute: 'minutes' + second: 'seconds' + millisecond: 'milliseconds' + microsecond: 'microseconds' + nanosecond: 'nanoseconds' + }[T] + + interface DisambiguationOptions { + disambiguation?: 'compatible' | 'earlier' | 'later' | 'reject' | undefined + } - /** - * The starting point to use for rounding and conversions when - * variable-length units (years, months, weeks depending on the - * calendar) are involved. This option is required if any of the - * following are true: - * - `unit` is `'week'` or larger units - * - `this` has a nonzero value for `weeks` or larger units - * - * This value must be either a `Temporal.PlainDateTime`, a - * `Temporal.ZonedDateTime`, or a string or object value that can be - * passed to `from()` of those types. Examples: - * - `'2020-01-01T00:00-08:00[America/Los_Angeles]'` - * - `'2020-01-01'` - * - `Temporal.PlainDate.from('2020-01-01')` - * - * `Temporal.ZonedDateTime` will be tried first because it's more - * specific, with `Temporal.PlainDateTime` as a fallback. - * - * If the value resolves to a `Temporal.ZonedDateTime`, then operation - * will adjust for DST and other time zone transitions. Otherwise - * (including if this option is omitted), then the operation will ignore - * time zone transitions and all days will be assumed to be 24 hours - * long. - */ - relativeTo?: - | Temporal.PlainDateTime - | Temporal.ZonedDateTime - | PlainDateTimeLike - | ZonedDateTimeLike - | string - | undefined; - }); + interface OverflowOptions { + overflow?: 'constrain' | 'reject' | undefined + } - /** - * Options to control behavior of `Duration.prototype.total()` - */ - type DurationTotalOf = - | TotalUnit - | { - /** - * The unit to convert the duration to. This option is required. - */ - unit: TotalUnit; + interface TransitionOptions { + direction: 'next' | 'previous' + } - /** - * The starting point to use when variable-length units (years, months, - * weeks depending on the calendar) are involved. This option is required if - * any of the following are true: - * - `unit` is `'week'` or larger units - * - `this` has a nonzero value for `weeks` or larger units - * - * This value must be either a `Temporal.PlainDateTime`, a - * `Temporal.ZonedDateTime`, or a string or object value that can be passed - * to `from()` of those types. Examples: - * - `'2020-01-01T00:00-08:00[America/Los_Angeles]'` - * - `'2020-01-01'` - * - `Temporal.PlainDate.from('2020-01-01')` - * - * `Temporal.ZonedDateTime` will be tried first because it's more - * specific, with `Temporal.PlainDateTime` as a fallback. - * - * If the value resolves to a `Temporal.ZonedDateTime`, then operation will - * adjust for DST and other time zone transitions. Otherwise (including if - * this option is omitted), then the operation will ignore time zone - * transitions and all days will be assumed to be 24 hours long. - */ - relativeTo?: - | Temporal.ZonedDateTime - | Temporal.PlainDateTime - | ZonedDateTimeLike - | PlainDateTimeLike - | string - | undefined; - }; + interface RoundingOptions { + smallestUnit?: PluralizeUnit | undefined + roundingIncrement?: number | undefined + roundingMode?: + | 'ceil' + | 'floor' + | 'expand' + | 'trunc' + | 'halfCeil' + | 'halfFloor' + | 'halfExpand' + | 'halfTrunc' + | 'halfEven' + | undefined + } - /** - * Options to control behavior of `Duration.compare()` - */ - interface DurationArithmeticOptions { - /** - * The starting point to use when variable-length units (years, months, - * weeks depending on the calendar) are involved. This option is required if - * either of the durations has a nonzero value for `weeks` or larger units. - * - * This value must be either a `Temporal.PlainDateTime`, a - * `Temporal.ZonedDateTime`, or a string or object value that can be passed - * to `from()` of those types. Examples: - * - `'2020-01-01T00:00-08:00[America/Los_Angeles]'` - * - `'2020-01-01'` - * - `Temporal.PlainDate.from('2020-01-01')` - * - * `Temporal.ZonedDateTime` will be tried first because it's more - * specific, with `Temporal.PlainDateTime` as a fallback. - * - * If the value resolves to a `Temporal.ZonedDateTime`, then operation will - * adjust for DST and other time zone transitions. Otherwise (including if - * this option is omitted), then the operation will ignore time zone - * transitions and all days will be assumed to be 24 hours long. - */ - relativeTo?: - | Temporal.ZonedDateTime - | Temporal.PlainDateTime - | ZonedDateTimeLike - | PlainDateTimeLike - | string - | undefined; + interface RoundingOptionsWithLargestUnit + extends RoundingOptions { + largestUnit?: 'auto' | PluralizeUnit | undefined } - /** - * Options to control behaviour of `ZonedDateTime.prototype.getTimeZoneTransition()` - */ - type TransitionDirection = 'next' | 'previous' | { direction: 'next' | 'previous' }; + interface ToStringRoundingOptions + extends Pick, 'smallestUnit' | 'roundingMode'> {} + + interface ToStringRoundingOptionsWithFractionalSeconds< + Units extends DateUnit | TimeUnit, + > extends ToStringRoundingOptions { + fractionalSecondDigits?: + | 'auto' + | 0 + | 1 + | 2 + | 3 + | 4 + | 5 + | 6 + | 7 + | 8 + | 9 + | undefined + } - type DurationLike = { - years?: number | undefined; - months?: number | undefined; - weeks?: number | undefined; - days?: number | undefined; - hours?: number | undefined; - minutes?: number | undefined; - seconds?: number | undefined; - milliseconds?: number | undefined; - microseconds?: number | undefined; - nanoseconds?: number | undefined; - }; + namespace Now { + function timeZoneId(): string + function instant(): Instant + function plainDateTimeISO(timeZone?: TimeZoneLike): PlainDateTime + function zonedDateTimeISO(timeZone?: TimeZoneLike): ZonedDateTime + function plainDateISO(timeZone?: TimeZoneLike): PlainDate + function plainTimeISO(timeZone?: TimeZoneLike): PlainTime + } - /** - * Options for Intl.DurationFormat - */ - export type DurationFormatOptions = { - localeMatcher?: 'lookup' | 'best fit' | undefined; - numberingSystem?: string | undefined; - style?: 'long' | 'short' | 'narrow' | 'digital' | undefined; - years?: 'long' | 'short' | 'narrow' | undefined; - yearsDisplay?: 'always' | 'auto' | undefined; - months?: 'long' | 'short' | 'narrow' | undefined; - monthsDisplay?: 'always' | 'auto' | undefined; - weeks?: 'long' | 'short' | 'narrow' | undefined; - weeksDisplay?: 'always' | 'auto' | undefined; - days?: 'long' | 'short' | 'narrow' | undefined; - daysDisplay?: 'always' | 'auto' | undefined; - hours?: 'long' | 'short' | 'narrow' | 'numeric' | '2-digit' | undefined; - hoursDisplay?: 'always' | 'auto' | undefined; - minutes?: 'long' | 'short' | 'narrow' | 'numeric' | '2-digit' | undefined; - minutesDisplay?: 'always' | 'auto' | undefined; - seconds?: 'long' | 'short' | 'narrow' | 'numeric' | '2-digit' | undefined; - secondsDisplay?: 'always' | 'auto' | undefined; - milliseconds?: 'long' | 'short' | 'narrow' | 'numeric' | undefined; - millisecondsDisplay?: 'always' | 'auto' | undefined; - microseconds?: 'long' | 'short' | 'narrow' | 'numeric' | undefined; - microsecondsDisplay?: 'always' | 'auto' | undefined; - nanoseconds?: 'long' | 'short' | 'narrow' | 'numeric' | undefined; - nanosecondsDisplay?: 'always' | 'auto' | undefined; - fractionalDigits?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined; - }; + interface PlainDateToStringOptions { + calendarName?: 'auto' | 'always' | 'never' | 'critical' | undefined + } - /** - * - * A `Temporal.Duration` represents an immutable duration of time which can be - * used in date/time arithmetic. - * - * See https://tc39.es/proposal-temporal/docs/duration.html for more details. - */ - class Duration { - static from(item: Temporal.Duration | DurationLike | string): Temporal.Duration; - static compare( - one: Temporal.Duration | DurationLike | string, - two: Temporal.Duration | DurationLike | string, - options?: DurationArithmeticOptions - ): ComparisonResult; - constructor( - years?: number, - months?: number, - weeks?: number, - days?: number, - hours?: number, - minutes?: number, - seconds?: number, - milliseconds?: number, - microseconds?: number, - nanoseconds?: number - ); - readonly sign: -1 | 0 | 1; - readonly blank: boolean; - readonly years: number; - readonly months: number; - readonly weeks: number; - readonly days: number; - readonly hours: number; - readonly minutes: number; - readonly seconds: number; - readonly milliseconds: number; - readonly microseconds: number; - readonly nanoseconds: number; - negated(): Temporal.Duration; - abs(): Temporal.Duration; - with(durationLike: DurationLike): Temporal.Duration; - add(other: Temporal.Duration | DurationLike | string): Temporal.Duration; - subtract(other: Temporal.Duration | DurationLike | string): Temporal.Duration; - round(roundTo: DurationRoundTo): Temporal.Duration; - total(totalOf: DurationTotalOf): number; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: DurationFormatOptions): string; - toJSON(): string; - toString(options?: ToStringPrecisionOptions): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.Duration'; + interface PlainDateToZonedDateTimeOptions { + plainTime?: PlainTimeLike | undefined + timeZone: TimeZoneLike } - /** - * A `Temporal.Instant` is an exact point in time, with a precision in - * nanoseconds. No time zone or calendar information is present. Therefore, - * `Temporal.Instant` has no concept of days, months, or even hours. - * - * For convenience of interoperability, it internally uses nanoseconds since - * the {@link https://en.wikipedia.org/wiki/Unix_time|Unix epoch} (midnight - * UTC on January 1, 1970). However, a `Temporal.Instant` can be created from - * any of several expressions that refer to a single point in time, including - * an {@link https://datatracker.ietf.org/doc/html/rfc9557|RFC 9557 string} - * with a time zone offset such as '2020-01-23T17:04:36.491865121-08:00'. - * - * See https://tc39.es/proposal-temporal/docs/instant.html for more details. - */ - class Instant { - static fromEpochMilliseconds(epochMilliseconds: number): Temporal.Instant; - static fromEpochNanoseconds(epochNanoseconds: bigint): Temporal.Instant; - static from(item: Temporal.Instant | string): Temporal.Instant; - static compare(one: Temporal.Instant | string, two: Temporal.Instant | string): ComparisonResult; - constructor(epochNanoseconds: bigint); - readonly epochMilliseconds: number; - readonly epochNanoseconds: bigint; - equals(other: Temporal.Instant | string): boolean; - add( - durationLike: Omit | string - ): Temporal.Instant; - subtract( - durationLike: Omit | string - ): Temporal.Instant; + interface PlainDate { + readonly calendarId: string + readonly era: string | undefined + readonly eraYear: number | undefined + readonly year: number + readonly month: number + readonly monthCode: string + readonly day: number + readonly dayOfWeek: number + readonly dayOfYear: number + readonly weekOfYear: number | undefined + readonly yearOfWeek: number | undefined + readonly daysInWeek: number + readonly daysInMonth: number + readonly daysInYear: number + readonly monthsInYear: number + readonly inLeapYear: boolean + toPlainYearMonth(): PlainYearMonth + toPlainMonthDay(): PlainMonthDay + add(duration: DurationLike, options?: OverflowOptions): PlainDate + subtract(duration: DurationLike, options?: OverflowOptions): PlainDate + with( + dateLike: PartialTemporalLike, + options?: OverflowOptions, + ): PlainDate + withCalendar(calendarLike: CalendarLike): PlainDate until( - other: Temporal.Instant | string, - options?: DifferenceOptions<'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.Duration; + other: PlainDateLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration since( - other: Temporal.Instant | string, - options?: DifferenceOptions<'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.Duration; - round( - roundTo: RoundTo<'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.Instant; - toZonedDateTimeISO(tzLike: TimeZoneLike): Temporal.ZonedDateTime; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: InstantToStringOptions): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.Instant'; + other: PlainDateLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration + equals(other: PlainDateLike): boolean + toPlainDateTime(time?: PlainTimeLike): PlainDateTime + toZonedDateTime(timeZone: TimeZoneLike): ZonedDateTime + toZonedDateTime(item: PlainDateToZonedDateTimeOptions): ZonedDateTime + toString(options?: PlainDateToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never + readonly [Symbol.toStringTag]: 'Temporal.PlainDate' } - /** - * Any of these types can be passed to Temporal methods instead of a calendar ID. - * */ - export type CalendarLike = string | ZonedDateTime | PlainDateTime | PlainDate | PlainYearMonth | PlainMonthDay; - - type PlainDateLike = { - era?: string | undefined; - eraYear?: number | undefined; - year?: number | undefined; - month?: number | undefined; - monthCode?: string | undefined; - day?: number | undefined; - calendar?: CalendarLike | undefined; - }; + interface PlainDateConstructor { + new ( + isoYear: number, + isoMonth: number, + isoDay: number, + calendar?: string, + ): PlainDate + readonly prototype: PlainDate + from(item: PlainDateLike, options?: OverflowOptions): PlainDate + compare(one: PlainDateLike, two: PlainDateLike): number + } + var PlainDate: PlainDateConstructor + + interface PlainTimeToStringOptions + extends ToStringRoundingOptionsWithFractionalSeconds< + Exclude + > {} + + interface PlainTime { + readonly hour: number + readonly minute: number + readonly second: number + readonly millisecond: number + readonly microsecond: number + readonly nanosecond: number + add(duration: DurationLike): PlainTime + subtract(duration: DurationLike): PlainTime + with( + timeLike: PartialTemporalLike, + options?: OverflowOptions, + ): PlainTime + until( + other: PlainTimeLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration + since( + other: PlainTimeLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration + equals(other: PlainTimeLike): boolean + round(roundTo: PluralizeUnit): PlainTime + round(roundTo: RoundingOptions): PlainTime + toString(options?: PlainTimeToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never + readonly [Symbol.toStringTag]: 'Temporal.PlainTime' + } - /** - * A `Temporal.PlainDate` represents a calendar date. "Calendar date" refers to the - * concept of a date as expressed in everyday usage, independent of any time - * zone. For example, it could be used to represent an event on a calendar - * which happens during the whole day no matter which time zone it's happening - * in. - * - * See https://tc39.es/proposal-temporal/docs/date.html for more details. - */ - class PlainDate { - static from(item: Temporal.PlainDate | PlainDateLike | string, options?: AssignmentOptions): Temporal.PlainDate; - static compare( - one: Temporal.PlainDate | PlainDateLike | string, - two: Temporal.PlainDate | PlainDateLike | string - ): ComparisonResult; - constructor(isoYear: number, isoMonth: number, isoDay: number, calendar?: string); - readonly era: string | undefined; - readonly eraYear: number | undefined; - readonly year: number; - readonly month: number; - readonly monthCode: string; - readonly day: number; - readonly calendarId: string; - readonly dayOfWeek: number; - readonly dayOfYear: number; - readonly weekOfYear: number | undefined; - readonly yearOfWeek: number | undefined; - readonly daysInWeek: number; - readonly daysInYear: number; - readonly daysInMonth: number; - readonly monthsInYear: number; - readonly inLeapYear: boolean; - equals(other: Temporal.PlainDate | PlainDateLike | string): boolean; - with(dateLike: PlainDateLike, options?: AssignmentOptions): Temporal.PlainDate; - withCalendar(calendar: CalendarLike): Temporal.PlainDate; - add(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.PlainDate; - subtract(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.PlainDate; + interface PlainTimeConstructor { + new ( + hour?: number, + minute?: number, + second?: number, + millisecond?: number, + microsecond?: number, + nanosecond?: number, + ): PlainTime + readonly prototype: PlainTime + from(item: PlainTimeLike, options?: OverflowOptions): PlainTime + compare(one: PlainTimeLike, two: PlainTimeLike): number + } + var PlainTime: PlainTimeConstructor + + interface PlainDateTimeToStringOptions + extends PlainDateToStringOptions, + PlainTimeToStringOptions {} + + interface PlainDateTime { + readonly calendarId: string + readonly era: string | undefined + readonly eraYear: number | undefined + readonly year: number + readonly month: number + readonly monthCode: string + readonly day: number + readonly hour: number + readonly minute: number + readonly second: number + readonly millisecond: number + readonly microsecond: number + readonly nanosecond: number + readonly dayOfWeek: number + readonly dayOfYear: number + readonly weekOfYear: number | undefined + readonly yearOfWeek: number | undefined + readonly daysInWeek: number + readonly daysInMonth: number + readonly daysInYear: number + readonly monthsInYear: number + readonly inLeapYear: boolean + with( + dateTimeLike: PartialTemporalLike, + options?: OverflowOptions, + ): PlainDateTime + withPlainTime(plainTime?: PlainTimeLike): PlainDateTime + withCalendar(calendar: CalendarLike): PlainDateTime + add(duration: DurationLike, options?: OverflowOptions): PlainDateTime + subtract(duration: DurationLike, options?: OverflowOptions): PlainDateTime until( - other: Temporal.PlainDate | PlainDateLike | string, - options?: DifferenceOptions<'year' | 'month' | 'week' | 'day'> - ): Temporal.Duration; + other: PlainDateTimeLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration since( - other: Temporal.PlainDate | PlainDateLike | string, - options?: DifferenceOptions<'year' | 'month' | 'week' | 'day'> - ): Temporal.Duration; - toPlainDateTime(temporalTime?: Temporal.PlainTime | PlainTimeLike | string): Temporal.PlainDateTime; + other: PlainDateTimeLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration + round(roundTo: PluralizeUnit<'day' | TimeUnit>): PlainDateTime + round(roundTo: RoundingOptions<'day' | TimeUnit>): PlainDateTime + equals(other: PlainDateTimeLike): boolean + toString(options?: PlainDateTimeToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never toZonedDateTime( - timeZoneAndTime: - | string - | { - timeZone: TimeZoneLike; - plainTime?: Temporal.PlainTime | PlainTimeLike | string | undefined; - } - ): Temporal.ZonedDateTime; - toPlainYearMonth(): Temporal.PlainYearMonth; - toPlainMonthDay(): Temporal.PlainMonthDay; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: ShowCalendarOption): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.PlainDate'; + timeZone: TimeZoneLike, + options?: DisambiguationOptions, + ): ZonedDateTime + toPlainDate(): PlainDate + toPlainTime(): PlainTime + readonly [Symbol.toStringTag]: 'Temporal.PlainDateTime' } - type PlainDateTimeLike = { - era?: string | undefined; - eraYear?: number | undefined; - year?: number | undefined; - month?: number | undefined; - monthCode?: string | undefined; - day?: number | undefined; - hour?: number | undefined; - minute?: number | undefined; - second?: number | undefined; - millisecond?: number | undefined; - microsecond?: number | undefined; - nanosecond?: number | undefined; - calendar?: CalendarLike | undefined; - }; - - /** - * A `Temporal.PlainDateTime` represents a calendar date and wall-clock time, with - * a precision in nanoseconds, and without any time zone. Of the Temporal - * classes carrying human-readable time information, it is the most general - * and complete one. `Temporal.PlainDate`, `Temporal.PlainTime`, `Temporal.PlainYearMonth`, - * and `Temporal.PlainMonthDay` all carry less information and should be used when - * complete information is not required. - * - * See https://tc39.es/proposal-temporal/docs/datetime.html for more details. - */ - class PlainDateTime { - static from( - item: Temporal.PlainDateTime | PlainDateTimeLike | string, - options?: AssignmentOptions - ): Temporal.PlainDateTime; - static compare( - one: Temporal.PlainDateTime | PlainDateTimeLike | string, - two: Temporal.PlainDateTime | PlainDateTimeLike | string - ): ComparisonResult; - constructor( + interface PlainDateTimeConstructor { + new ( isoYear: number, isoMonth: number, isoDay: number, @@ -776,471 +369,365 @@ export namespace Temporal { millisecond?: number, microsecond?: number, nanosecond?: number, - calendar?: string - ); - readonly era: string | undefined; - readonly eraYear: number | undefined; - readonly year: number; - readonly month: number; - readonly monthCode: string; - readonly day: number; - readonly hour: number; - readonly minute: number; - readonly second: number; - readonly millisecond: number; - readonly microsecond: number; - readonly nanosecond: number; - readonly calendarId: string; - readonly dayOfWeek: number; - readonly dayOfYear: number; - readonly weekOfYear: number | undefined; - readonly yearOfWeek: number | undefined; - readonly daysInWeek: number; - readonly daysInYear: number; - readonly daysInMonth: number; - readonly monthsInYear: number; - readonly inLeapYear: boolean; - equals(other: Temporal.PlainDateTime | PlainDateTimeLike | string): boolean; - with(dateTimeLike: PlainDateTimeLike, options?: AssignmentOptions): Temporal.PlainDateTime; - withPlainTime(timeLike?: Temporal.PlainTime | PlainTimeLike | string): Temporal.PlainDateTime; - withCalendar(calendar: CalendarLike): Temporal.PlainDateTime; - add(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.PlainDateTime; - subtract( - durationLike: Temporal.Duration | DurationLike | string, - options?: ArithmeticOptions - ): Temporal.PlainDateTime; - until( - other: Temporal.PlainDateTime | PlainDateTimeLike | string, - options?: DifferenceOptions< - 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond' - > - ): Temporal.Duration; - since( - other: Temporal.PlainDateTime | PlainDateTimeLike | string, - options?: DifferenceOptions< - 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond' - > - ): Temporal.Duration; - round( - roundTo: RoundTo<'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.PlainDateTime; - toZonedDateTime(tzLike: TimeZoneLike, options?: ToInstantOptions): Temporal.ZonedDateTime; - toPlainDate(): Temporal.PlainDate; - toPlainTime(): Temporal.PlainTime; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: CalendarTypeToStringOptions): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.PlainDateTime'; + calendar?: string, + ): PlainDateTime + readonly prototype: PlainDateTime + from(item: PlainDateTimeLike, options?: OverflowOptions): PlainDateTime + compare(one: PlainDateTimeLike, two: PlainDateTimeLike): number } + var PlainDateTime: PlainDateTimeConstructor - type PlainMonthDayLike = { - era?: string | undefined; - eraYear?: number | undefined; - year?: number | undefined; - month?: number | undefined; - monthCode?: string | undefined; - day?: number | undefined; - calendar?: CalendarLike | undefined; - }; - - /** - * A `Temporal.PlainMonthDay` represents a particular day on the calendar, but - * without a year. For example, it could be used to represent a yearly - * recurring event, like "Bastille Day is on the 14th of July." - * - * See https://tc39.es/proposal-temporal/docs/monthday.html for more details. - */ - class PlainMonthDay { - static from( - item: Temporal.PlainMonthDay | PlainMonthDayLike | string, - options?: AssignmentOptions - ): Temporal.PlainMonthDay; - constructor(isoMonth: number, isoDay: number, calendar?: string, referenceISOYear?: number); - readonly monthCode: string; - readonly day: number; - readonly calendarId: string; - equals(other: Temporal.PlainMonthDay | PlainMonthDayLike | string): boolean; - with(monthDayLike: PlainMonthDayLike, options?: AssignmentOptions): Temporal.PlainMonthDay; - toPlainDate(year: { year: number }): Temporal.PlainDate; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: ShowCalendarOption): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.PlainMonthDay'; + interface ZonedDateTimeToStringOptions extends PlainDateTimeToStringOptions { + offset?: 'auto' | 'never' | undefined + timeZoneName?: 'auto' | 'never' | 'critical' | undefined } - type PlainTimeLike = { - hour?: number | undefined; - minute?: number | undefined; - second?: number | undefined; - millisecond?: number | undefined; - microsecond?: number | undefined; - nanosecond?: number | undefined; - }; + interface ZonedDateTimeFromOptions + extends OverflowOptions, + DisambiguationOptions { + offset?: 'use' | 'ignore' | 'prefer' | 'reject' | undefined + } - /** - * A `Temporal.PlainTime` represents a wall-clock time, with a precision in - * nanoseconds, and without any time zone. "Wall-clock time" refers to the - * concept of a time as expressed in everyday usage — the time that you read - * off the clock on the wall. For example, it could be used to represent an - * event that happens daily at a certain time, no matter what time zone. - * - * `Temporal.PlainTime` refers to a time with no associated calendar date; if you - * need to refer to a specific time on a specific day, use - * `Temporal.PlainDateTime`. A `Temporal.PlainTime` can be converted into a - * `Temporal.PlainDateTime` by combining it with a `Temporal.PlainDate` using the - * `toPlainDateTime()` method. - * - * See https://tc39.es/proposal-temporal/docs/time.html for more details. - */ - class PlainTime { - static from(item: Temporal.PlainTime | PlainTimeLike | string, options?: AssignmentOptions): Temporal.PlainTime; - static compare( - one: Temporal.PlainTime | PlainTimeLike | string, - two: Temporal.PlainTime | PlainTimeLike | string - ): ComparisonResult; - constructor( - hour?: number, - minute?: number, - second?: number, - millisecond?: number, - microsecond?: number, - nanosecond?: number - ); - readonly hour: number; - readonly minute: number; - readonly second: number; - readonly millisecond: number; - readonly microsecond: number; - readonly nanosecond: number; - equals(other: Temporal.PlainTime | PlainTimeLike | string): boolean; - with(timeLike: Temporal.PlainTime | PlainTimeLike, options?: AssignmentOptions): Temporal.PlainTime; - add(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.PlainTime; - subtract(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.PlainTime; + interface ZonedDateTime { + readonly calendarId: string + readonly timeZoneId: string + readonly era: string | undefined + readonly eraYear: number | undefined + readonly year: number + readonly month: number + readonly monthCode: string + readonly day: number + readonly hour: number + readonly minute: number + readonly second: number + readonly millisecond: number + readonly microsecond: number + readonly nanosecond: number + readonly epochMilliseconds: number + readonly epochNanoseconds: bigint + readonly dayOfWeek: number + readonly dayOfYear: number + readonly weekOfYear: number | undefined + readonly yearOfWeek: number | undefined + readonly hoursInDay: number + readonly daysInWeek: number + readonly daysInMonth: number + readonly daysInYear: number + readonly monthsInYear: number + readonly inLeapYear: boolean + readonly offsetNanoseconds: number + readonly offset: string + with( + zonedDateTimeLike: PartialTemporalLike, + options?: ZonedDateTimeFromOptions, + ): ZonedDateTime + withPlainTime(plainTime?: PlainTimeLike): ZonedDateTime + withTimeZone(timeZone: TimeZoneLike): ZonedDateTime + withCalendar(calendar: CalendarLike): ZonedDateTime + add(duration: DurationLike, options?: OverflowOptions): ZonedDateTime + subtract(duration: DurationLike, options?: OverflowOptions): ZonedDateTime until( - other: Temporal.PlainTime | PlainTimeLike | string, - options?: DifferenceOptions<'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.Duration; + other: ZonedDateTimeLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration since( - other: Temporal.PlainTime | PlainTimeLike | string, - options?: DifferenceOptions<'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.Duration; - round( - roundTo: RoundTo<'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.PlainTime; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: ToStringPrecisionOptions): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.PlainTime'; + other: ZonedDateTimeLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration + round(roundTo: PluralizeUnit<'day' | TimeUnit>): ZonedDateTime + round(roundTo: RoundingOptions<'day' | TimeUnit>): ZonedDateTime + equals(other: ZonedDateTimeLike): boolean + toString(options?: ZonedDateTimeToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never + startOfDay(): ZonedDateTime + getTimeZoneTransition(direction: 'next' | 'previous'): ZonedDateTime | null + getTimeZoneTransition(direction: TransitionOptions): ZonedDateTime | null + toInstant(): Instant + toPlainDate(): PlainDate + toPlainTime(): PlainTime + toPlainDateTime(): PlainDateTime + readonly [Symbol.toStringTag]: 'Temporal.ZonedDateTime' + } + + interface ZonedDateTimeConstructor { + new ( + epochNanoseconds: bigint, + timeZone: string, + calendar?: string, + ): ZonedDateTime + readonly prototype: ZonedDateTime + from( + item: ZonedDateTimeLike, + options?: ZonedDateTimeFromOptions, + ): ZonedDateTime + compare(one: ZonedDateTimeLike, two: ZonedDateTimeLike): number } + var ZonedDateTime: ZonedDateTimeConstructor - /** - * Any of these types can be passed to Temporal methods instead of a time zone ID. - * */ - type TimeZoneLike = string | ZonedDateTime; + interface DurationRelativeToOptions { + relativeTo?: ZonedDateTimeLike | PlainDateLike | undefined + } - type PlainYearMonthLike = { - era?: string | undefined; - eraYear?: number | undefined; - year?: number | undefined; - month?: number | undefined; - monthCode?: string | undefined; - calendar?: CalendarLike | undefined; - }; + interface DurationRoundingOptions + extends DurationRelativeToOptions, + RoundingOptionsWithLargestUnit {} - /** - * A `Temporal.PlainYearMonth` represents a particular month on the calendar. For - * example, it could be used to represent a particular instance of a monthly - * recurring event, like "the June 2019 meeting". - * - * See https://tc39.es/proposal-temporal/docs/yearmonth.html for more details. - */ - class PlainYearMonth { - static from( - item: Temporal.PlainYearMonth | PlainYearMonthLike | string, - options?: AssignmentOptions - ): Temporal.PlainYearMonth; - static compare( - one: Temporal.PlainYearMonth | PlainYearMonthLike | string, - two: Temporal.PlainYearMonth | PlainYearMonthLike | string - ): ComparisonResult; - constructor(isoYear: number, isoMonth: number, calendar?: string, referenceISODay?: number); - readonly era: string | undefined; - readonly eraYear: number | undefined; - readonly year: number; - readonly month: number; - readonly monthCode: string; - readonly calendarId: string; - readonly daysInMonth: number; - readonly daysInYear: number; - readonly monthsInYear: number; - readonly inLeapYear: boolean; - equals(other: Temporal.PlainYearMonth | PlainYearMonthLike | string): boolean; - with(yearMonthLike: PlainYearMonthLike, options?: AssignmentOptions): Temporal.PlainYearMonth; - add(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.PlainYearMonth; - subtract( - durationLike: Temporal.Duration | DurationLike | string, - options?: ArithmeticOptions - ): Temporal.PlainYearMonth; - until( - other: Temporal.PlainYearMonth | PlainYearMonthLike | string, - options?: DifferenceOptions<'year' | 'month'> - ): Temporal.Duration; - since( - other: Temporal.PlainYearMonth | PlainYearMonthLike | string, - options?: DifferenceOptions<'year' | 'month'> - ): Temporal.Duration; - toPlainDate(day: { day: number }): Temporal.PlainDate; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: ShowCalendarOption): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.PlainYearMonth'; + interface DurationToStringOptions + extends ToStringRoundingOptionsWithFractionalSeconds< + Exclude + > {} + + interface DurationTotalOptions extends DurationRelativeToOptions { + unit: PluralizeUnit } - type ZonedDateTimeLike = { - era?: string | undefined; - eraYear?: number | undefined; - year?: number | undefined; - month?: number | undefined; - monthCode?: string | undefined; - day?: number | undefined; - hour?: number | undefined; - minute?: number | undefined; - second?: number | undefined; - millisecond?: number | undefined; - microsecond?: number | undefined; - nanosecond?: number | undefined; - offset?: string | undefined; - timeZone?: TimeZoneLike | undefined; - calendar?: CalendarLike | undefined; - }; + // Use the host's Intl.DurationFormat options when the consumer includes a + // lib that declares Intl.DurationFormat, without forcing this file to + // reference es2025.intl for every consumer. + type DurationFormatOptions = typeof Intl extends { + DurationFormat: { + new (locales?: unknown, options?: infer Options): unknown + } + } + ? NonNullable + : unknown + + interface Duration { + readonly years: number + readonly months: number + readonly weeks: number + readonly days: number + readonly hours: number + readonly minutes: number + readonly seconds: number + readonly milliseconds: number + readonly microseconds: number + readonly nanoseconds: number + readonly sign: number + readonly blank: boolean + with(durationLike: PartialTemporalLike): Duration + negated(): Duration + abs(): Duration + add(other: DurationLike): Duration + subtract(other: DurationLike): Duration + round(roundTo: PluralizeUnit<'day' | TimeUnit>): Duration + round(roundTo: DurationRoundingOptions): Duration + total(totalOf: PluralizeUnit<'day' | TimeUnit>): number + total(totalOf: DurationTotalOptions): number + toString(options?: DurationToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: DurationFormatOptions, + ): string + toJSON(): string + valueOf(): never + readonly [Symbol.toStringTag]: 'Temporal.Duration' + } - class ZonedDateTime { - static from( - item: Temporal.ZonedDateTime | ZonedDateTimeLike | string, - options?: ZonedDateTimeAssignmentOptions - ): ZonedDateTime; - static compare( - one: Temporal.ZonedDateTime | ZonedDateTimeLike | string, - two: Temporal.ZonedDateTime | ZonedDateTimeLike | string - ): ComparisonResult; - constructor(epochNanoseconds: bigint, timeZone: string, calendar?: string); - readonly era: string | undefined; - readonly eraYear: number | undefined; - readonly year: number; - readonly month: number; - readonly monthCode: string; - readonly day: number; - readonly hour: number; - readonly minute: number; - readonly second: number; - readonly millisecond: number; - readonly microsecond: number; - readonly nanosecond: number; - readonly timeZoneId: string; - readonly calendarId: string; - readonly dayOfWeek: number; - readonly dayOfYear: number; - readonly weekOfYear: number | undefined; - readonly yearOfWeek: number | undefined; - readonly hoursInDay: number; - readonly daysInWeek: number; - readonly daysInMonth: number; - readonly daysInYear: number; - readonly monthsInYear: number; - readonly inLeapYear: boolean; - readonly offsetNanoseconds: number; - readonly offset: string; - readonly epochMilliseconds: number; - readonly epochNanoseconds: bigint; - equals(other: Temporal.ZonedDateTime | ZonedDateTimeLike | string): boolean; - with(zonedDateTimeLike: ZonedDateTimeLike, options?: ZonedDateTimeAssignmentOptions): Temporal.ZonedDateTime; - withPlainTime(timeLike?: Temporal.PlainTime | PlainTimeLike | string): Temporal.ZonedDateTime; - withCalendar(calendar: CalendarLike): Temporal.ZonedDateTime; - withTimeZone(timeZone: TimeZoneLike): Temporal.ZonedDateTime; - add(durationLike: Temporal.Duration | DurationLike | string, options?: ArithmeticOptions): Temporal.ZonedDateTime; - subtract( - durationLike: Temporal.Duration | DurationLike | string, - options?: ArithmeticOptions - ): Temporal.ZonedDateTime; + interface DurationConstructor { + new ( + years?: number, + months?: number, + weeks?: number, + days?: number, + hours?: number, + minutes?: number, + seconds?: number, + milliseconds?: number, + microseconds?: number, + nanoseconds?: number, + ): Duration + readonly prototype: Duration + from(item: DurationLike): Duration + compare( + one: DurationLike, + two: DurationLike, + options?: DurationRelativeToOptions, + ): number + } + var Duration: DurationConstructor + + interface InstantToStringOptions extends PlainTimeToStringOptions { + timeZone?: TimeZoneLike | undefined + } + + interface Instant { + readonly epochMilliseconds: number + readonly epochNanoseconds: bigint + add(duration: DurationLike): Instant + subtract(duration: DurationLike): Instant until( - other: Temporal.ZonedDateTime | ZonedDateTimeLike | string, - options?: Temporal.DifferenceOptions< - 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond' - > - ): Temporal.Duration; + other: InstantLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration since( - other: Temporal.ZonedDateTime | ZonedDateTimeLike | string, - options?: Temporal.DifferenceOptions< - 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond' - > - ): Temporal.Duration; - round( - roundTo: RoundTo<'day' | 'hour' | 'minute' | 'second' | 'millisecond' | 'microsecond' | 'nanosecond'> - ): Temporal.ZonedDateTime; - startOfDay(): Temporal.ZonedDateTime; - getTimeZoneTransition(direction: TransitionDirection): Temporal.ZonedDateTime | null; - toInstant(): Temporal.Instant; - toPlainDateTime(): Temporal.PlainDateTime; - toPlainDate(): Temporal.PlainDate; - toPlainTime(): Temporal.PlainTime; - toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string; - toJSON(): string; - toString(options?: ZonedDateTimeToStringOptions): string; - valueOf(): never; - readonly [Symbol.toStringTag]: 'Temporal.ZonedDateTime'; + other: InstantLike, + options?: RoundingOptionsWithLargestUnit, + ): Duration + round(roundTo: PluralizeUnit): Instant + round(roundTo: RoundingOptions): Instant + equals(other: InstantLike): boolean + toString(options?: InstantToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never + toZonedDateTimeISO(timeZone: TimeZoneLike): ZonedDateTime + readonly [Symbol.toStringTag]: 'Temporal.Instant' } - /** - * The `Temporal.Now` object has several methods which give information about - * the current date, time, and time zone. - * - * See https://tc39.es/proposal-temporal/docs/now.html for more details. - */ - const Now: { - /** - * Get the exact system date and time as a `Temporal.Instant`. - * - * This method gets the current exact system time, without regard to - * calendar or time zone. This is a good way to get a timestamp for an - * event, for example. It works like the old-style JavaScript `Date.now()`, - * but with nanosecond precision instead of milliseconds. - * - * Note that a `Temporal.Instant` doesn't know about time zones. For the - * exact time in a specific time zone, use `Temporal.Now.zonedDateTimeISO` - * or `Temporal.Now.zonedDateTime`. - * */ - instant: () => Temporal.Instant; + interface InstantConstructor { + new (epochNanoseconds: bigint): Instant + readonly prototype: Instant + from(item: InstantLike): Instant + fromEpochMilliseconds(epochMilliseconds: number): Instant + fromEpochNanoseconds(epochNanoseconds: bigint): Instant + compare(one: InstantLike, two: InstantLike): number + } + var Instant: InstantConstructor - /** - * Get the current calendar date and clock time in a specific time zone, - * using the ISO 8601 calendar. - * - * @param {TimeZoneLike} [tzLike] - - * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier} - * string (e.g. `'Europe/London'`). If omitted, the environment's - * current time zone will be used. - */ - zonedDateTimeISO: (tzLike?: TimeZoneLike) => Temporal.ZonedDateTime; + interface PlainYearMonthToPlainDateOptions { + day: number + } - /** - * Get the current date and clock time in a specific time zone, using the - * ISO 8601 calendar. - * - * Note that the `Temporal.PlainDateTime` type does not persist the time zone, - * but retaining the time zone is required for most time-zone-related use - * cases. Therefore, it's usually recommended to use - * `Temporal.Now.zonedDateTimeISO` instead of this function. - * - * @param {TimeZoneLike} [tzLike] - - * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier} - * string (e.g. `'Europe/London'`). If omitted, the environment's - * current time zone will be used. - */ - plainDateTimeISO: (tzLike?: TimeZoneLike) => Temporal.PlainDateTime; + interface PlainYearMonth { + readonly calendarId: string + readonly era: string | undefined + readonly eraYear: number | undefined + readonly year: number + readonly month: number + readonly monthCode: string + readonly daysInYear: number + readonly daysInMonth: number + readonly monthsInYear: number + readonly inLeapYear: boolean + with( + yearMonthLike: PartialTemporalLike, + options?: OverflowOptions, + ): PlainYearMonth + add(duration: DurationLike, options?: OverflowOptions): PlainYearMonth + subtract(duration: DurationLike, options?: OverflowOptions): PlainYearMonth + until( + other: PlainYearMonthLike, + options?: RoundingOptionsWithLargestUnit<'year' | 'month'>, + ): Duration + since( + other: PlainYearMonthLike, + options?: RoundingOptionsWithLargestUnit<'year' | 'month'>, + ): Duration + equals(other: PlainYearMonthLike): boolean + toString(options?: PlainDateToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never + toPlainDate(item: PlainYearMonthToPlainDateOptions): PlainDate + readonly [Symbol.toStringTag]: 'Temporal.PlainYearMonth' + } - /** - * Get the current date in a specific time zone, using the ISO 8601 - * calendar. - * - * @param {TimeZoneLike} [tzLike] - - * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier} - * string (e.g. `'Europe/London'`). If omitted, the environment's - * current time zone will be used. - */ - plainDateISO: (tzLike?: TimeZoneLike) => Temporal.PlainDate; + interface PlainYearMonthConstructor { + new ( + isoYear: number, + isoMonth: number, + calendar?: string, + referenceISODay?: number, + ): PlainYearMonth + readonly prototype: PlainYearMonth + from(item: PlainYearMonthLike, options?: OverflowOptions): PlainYearMonth + compare(one: PlainYearMonthLike, two: PlainYearMonthLike): number + } + var PlainYearMonth: PlainYearMonthConstructor - /** - * Get the current clock time in a specific time zone, using the ISO 8601 calendar. - * - * @param {TimeZoneLike} [tzLike] - - * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier} - * string (e.g. `'Europe/London'`). If omitted, the environment's - * current time zone will be used. - */ - plainTimeISO: (tzLike?: TimeZoneLike) => Temporal.PlainTime; + interface PlainMonthDayToPlainDateOptions { + era?: string | undefined + eraYear?: number | undefined + year?: number | undefined + } - /** - * Get the identifier of the environment's current time zone. - * - * This method gets the identifier of the current system time zone. This - * will usually be a named - * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone}. - */ - timeZoneId: () => string; + interface PlainMonthDay { + readonly calendarId: string + readonly monthCode: string + readonly day: number + with( + monthDayLike: PartialTemporalLike, + options?: OverflowOptions, + ): PlainMonthDay + equals(other: PlainMonthDayLike): boolean + toString(options?: PlainDateToStringOptions): string + toLocaleString( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): string + toJSON(): string + valueOf(): never + toPlainDate(item: PlainMonthDayToPlainDateOptions): PlainDate + readonly [Symbol.toStringTag]: 'Temporal.PlainMonthDay' + } - readonly [Symbol.toStringTag]: 'Temporal.Now'; - }; + interface PlainMonthDayConstructor { + new ( + isoMonth: number, + isoDay: number, + calendar?: string, + referenceISOYear?: number, + ): PlainMonthDay + readonly prototype: PlainMonthDay + from(item: PlainMonthDayLike, options?: OverflowOptions): PlainMonthDay + } + var PlainMonthDay: PlainMonthDayConstructor } export namespace Intl { - type Formattable = - | Date - | Temporal.Instant + type FormattableTemporalObject = | Temporal.PlainDate + | Temporal.PlainYearMonth + | Temporal.PlainMonthDay | Temporal.PlainTime | Temporal.PlainDateTime - | Temporal.PlainYearMonth - | Temporal.PlainMonthDay; - - interface DateTimeFormat extends globalThis.Intl.DateTimeFormat { - /** - * Format a date into a string according to the locale and formatting - * options of this `Intl.DateTimeFormat` object. - * - * @param date The date to format. - */ - format(date?: Formattable | number): string; - - /** - * Allow locale-aware formatting of strings produced by - * `Intl.DateTimeFormat` formatters. - * - * @param date The date to format. - */ - formatToParts(date?: Formattable | number): globalThis.Intl.DateTimeFormatPart[]; - - /** - * Format a date range in the most concise way based on the locale and - * options provided when instantiating this `Intl.DateTimeFormat` object. - * - * @param startDate The start date of the range to format. - * @param endDate The start date of the range to format. Must be the same - * type as `startRange`. - */ - formatRange(startDate: T, endDate: T): string; - formatRange(startDate: Date | number, endDate: Date | number): string; + | Temporal.Instant - /** - * Allow locale-aware formatting of tokens representing each part of the - * formatted date range produced by `Intl.DateTimeFormat` formatters. - * - * @param startDate The start date of the range to format. - * @param endDate The start date of the range to format. Must be the same - * type as `startRange`. - */ - formatRangeToParts(startDate: T, endDate: T): globalThis.Intl.DateTimeRangeFormatPart[]; - formatRangeToParts(startDate: Date | number, endDate: Date | number): globalThis.Intl.DateTimeRangeFormatPart[]; + interface DateTimeFormat + extends Omit< + globalThis.Intl.DateTimeFormat, + 'format' | 'formatToParts' | 'formatRange' | 'formatRangeToParts' + > { + format(date?: FormattableTemporalObject | Date | number): string + formatToParts( + date?: FormattableTemporalObject | Date | number, + ): globalThis.Intl.DateTimeFormatPart[] + formatRange( + startDate: FormattableTemporalObject | Date | number, + endDate: FormattableTemporalObject | Date | number, + ): string + formatRangeToParts( + startDate: FormattableTemporalObject | Date | number, + endDate: FormattableTemporalObject | Date | number, + ): globalThis.Intl.DateTimeRangeFormatPart[] } - const DateTimeFormat: { - /** - * Creates `Intl.DateTimeFormat` objects that enable language-sensitive - * date and time formatting. - */ - new (locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): DateTimeFormat; - (locales?: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): DateTimeFormat; - - /** - * Get an array containing those of the provided locales that are supported - * in date and time formatting without having to fall back to the runtime's - * default locale. - */ - supportedLocalesOf(locales: globalThis.Intl.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string[]; - }; + const DateTimeFormat: Omit< + typeof globalThis.Intl.DateTimeFormat, + 'prototype' + > & { + new ( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): DateTimeFormat + ( + locales?: globalThis.Intl.LocalesArgument, + options?: globalThis.Intl.DateTimeFormatOptions, + ): DateTimeFormat + readonly prototype: DateTimeFormat + } } -export function toTemporalInstant(this: Date): Temporal.Instant; +export function toTemporalInstant(this: Date): Temporal.Instant diff --git a/website/src/components/Playground/preview/scope.ts b/website/src/components/Playground/preview/scope.ts index cf5cb3efb753..fbcfbad27766 100644 --- a/website/src/components/Playground/preview/scope.ts +++ b/website/src/components/Playground/preview/scope.ts @@ -4,11 +4,12 @@ import * as rhReactNext from '@data-client/react/next'; import * as rest from '@data-client/rest'; import BigNumber from 'bignumber.js'; import { Suspense, use } from 'react'; +// uses native Temporal (and its Intl) when the browser has it +import { Temporal, Intl } from 'temporal-polyfill'; import { v4 as uuid } from 'uuid'; import * as designSystem from '../DesignSystem'; import { Link, ROUTER, Router, useNavigate } from './router'; -import { Temporal, Intl, DateTimeFormat } from './temporal'; function randomFloatInRange(min: number, max: number, decimals: number) { return parseFloat((Math.random() * (max - min) + min).toFixed(decimals)); @@ -41,7 +42,7 @@ export const previewScope = { BigNumber, Temporal, Intl, - DateTimeFormat, + DateTimeFormat: Intl.DateTimeFormat, ...designSystem, Link, useNavigate, diff --git a/website/src/components/Playground/preview/temporal.ts b/website/src/components/Playground/preview/temporal.ts deleted file mode 100644 index f9b059586ff9..000000000000 --- a/website/src/components/Playground/preview/temporal.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Temporal as PolyTemporal, Intl as PolyIntl } from 'temporal-polyfill'; - -export const Temporal = globalThis.Temporal ?? PolyTemporal; - -export const Intl = - globalThis.Temporal ? globalThis.Intl : { ...globalThis.Intl, ...PolyIntl }; - -export const DateTimeFormat = - globalThis.Temporal ? - globalThis.Intl.DateTimeFormat - : PolyIntl.DateTimeFormat; diff --git a/yarn.lock b/yarn.lock index 82c8705d0e40..703425d8e532 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5159,7 +5159,7 @@ __metadata: immutable: "npm:5.1.9" nock: "npm:13.3.1" rollup-plugins: "workspace:*" - temporal-polyfill: "npm:^0.3.0" + temporal-polyfill: "npm:^1.0.0" languageName: unknown linkType: soft @@ -5215,7 +5215,7 @@ __metadata: "@types/node": "npm:^26.0.0" immutable: "npm:5.1.9" rollup-plugins: "workspace:*" - temporal-polyfill: "npm:^0.3.0" + temporal-polyfill: "npm:^1.0.0" languageName: unknown linkType: soft @@ -5252,7 +5252,7 @@ __metadata: react-test-renderer: "npm:^19.0.0" redux: "npm:^5.0.1" rollup-plugins: "workspace:*" - temporal-polyfill: "npm:^0.3.0" + temporal-polyfill: "npm:^1.0.0" peerDependencies: "@react-navigation/native": ^6.0.0 || ^7.0.0 "@types/react": ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-0 || ^19.0.0 @@ -5370,7 +5370,7 @@ __metadata: jest-mock: "npm:^30.0.0" nock: "npm:13.3.1" rollup-plugins: "workspace:*" - temporal-polyfill: "npm:^0.3.0" + temporal-polyfill: "npm:^1.0.0" vue: "npm:^3.4.0" peerDependencies: "@types/vue": ^3.0.0 @@ -28214,7 +28214,7 @@ __metadata: remark-parse: "npm:^11.0.0" remark-stringify: "npm:^11.0.0" serve: "npm:14.2.6" - temporal-polyfill: "npm:^0.3.0" + temporal-polyfill: "npm:^1.0.0" typescript: "npm:@typescript/typescript6@6.0.2" unified: "npm:^11.0.4" unist-util-visit: "npm:^5.0.0" @@ -29575,7 +29575,7 @@ __metadata: react-test-renderer: "npm:19.3.0" rimraf: "npm:^6.0.0" rollup: "npm:4.62.2" - temporal-polyfill: "npm:^0.3.0" + temporal-polyfill: "npm:^1.0.0" typescript: "npm:@typescript/typescript6@6.0.2" whatwg-fetch: "npm:3.0.0" languageName: unknown @@ -31321,19 +31321,27 @@ __metadata: languageName: node linkType: hard -"temporal-polyfill@npm:^0.3.0": - version: 0.3.2 - resolution: "temporal-polyfill@npm:0.3.2" +"temporal-polyfill@npm:^1.0.0": + version: 1.0.5 + resolution: "temporal-polyfill@npm:1.0.5" dependencies: - temporal-spec: "npm:0.3.1" - checksum: 10c0/762795c94e1b6cb0574541d0b09f805ff23b0a2c9d0356ab3fc0205e390a3bce73e047de2fdc54c7d149d6e6d781aa1d95aa62afa5de4c83cb79c129b0e502da + temporal-spec: "npm:1.0.1" + temporal-utils: "npm:1.0.3" + checksum: 10c0/88928e40e60d0da0c998af2b8da09768ee2c8784fec7526317fde83f55eb69926209a6bbc4360792cac7ace7371949718bc1f12edac1df0fe42eba5d55a43451 languageName: node linkType: hard -"temporal-spec@npm:0.3.1": - version: 0.3.1 - resolution: "temporal-spec@npm:0.3.1" - checksum: 10c0/e38eae391bd59ae675f1925a65c8ef302933cf9ce98efedaf2e69269e8c36f2b5d486cd3084367f04a6c1ea0289b925690c0df20a73f0c4629b531775924e850 +"temporal-spec@npm:1.0.1": + version: 1.0.1 + resolution: "temporal-spec@npm:1.0.1" + checksum: 10c0/99f6bfe4a8e59cd0664d0e97706798a1e10d42b1b682da9b60778a4cb9a23362da01ea3d83a674ef426ed743bbab835e2e3d1acea5d2d4a9eabe33863237b014 + languageName: node + linkType: hard + +"temporal-utils@npm:1.0.3": + version: 1.0.3 + resolution: "temporal-utils@npm:1.0.3" + checksum: 10c0/185928a75aba0496ebbbdecbbbbd55cc817756bc39e099424e86477da01042a84ed27482bfc2168b6802fed2f01f004739f174f907e2e125b2fa060a978024b6 languageName: node linkType: hard From c07029602932e913f694b202f1800d9c42080c21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 02:59:26 +0000 Subject: [PATCH 08/11] pkg: Update react-navigation monorepo (#4373) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 703425d8e532..2bf6c9ec8bf0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28440,15 +28440,15 @@ __metadata: linkType: hard "react-native-screens@npm:^4.1.0": - version: 4.26.2 - resolution: "react-native-screens@npm:4.26.2" + version: 4.29.0 + resolution: "react-native-screens@npm:4.29.0" dependencies: react-freeze: "npm:^1.0.0" warn-once: "npm:^0.1.0" peerDependencies: react: "*" react-native: "*" - checksum: 10c0/3cdc702d8e21c63331e306a2b971307d5d9e13df52d94f435c5bb8d5dcf09fed00f4ef788e85ba87fae1ba5b155f4cdc2ee177a70f1f512adff73f94eef844d1 + checksum: 10c0/12f38ff90405dc3d4319fd2d91426fc68feee535c80e2890c99fc3a50b6c782ac4ae74af72a28e64d01a8d4bbf6ae3242966f8cf3285cc615d0e8c371512c90b languageName: node linkType: hard From a29757591c10244cb9fa222297865d4448b5ccb9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 03:15:05 +0000 Subject: [PATCH 09/11] internal: Upgrade to Changesets CLI v3 for changesets/action v2 changesets/action v2 refuses to run with Changesets CLI v2, so every Release run on master has failed since #4371. Moves to CLI v3 and changelog-github v1, renames the action's inputs and has-changesets output to their v2 names (including the maintenance cut script's sed), and keeps versioning private packages, which v3 stopped by default. Renovate now groups the action's and the CLI's majors. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01XT6Wh4vZ8ZJ94GaYksu7Gh --- .changeset/config.json | 3 +- .github/renovate.json | 7 + .github/workflows/beta-release.yml | 10 +- .github/workflows/release.yml | 14 +- package.json | 4 +- scripts/maintenance/cut.sh | 2 +- yarn.lock | 696 ++++++++++++----------------- 7 files changed, 303 insertions(+), 433 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index eea0b0316d9f..fad426fe011e 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,5 +1,5 @@ { - "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", + "$schema": "https://unpkg.com/@changesets/config@4.0.1/schema.json", "changelog": ["./changelog-github-custom.js", { "repo": "reactive/data-client" }], "commit": false, "linked": [ @@ -26,5 +26,6 @@ "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true }, + "privatePackages": { "version": true, "tag": false }, "ignore": [] } diff --git a/.github/renovate.json b/.github/renovate.json index 8d0083ceb270..f23830a33dff 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -176,6 +176,13 @@ "groupSlug": "react-navigation-monorepo", "groupName": "react-navigation monorepo" }, + { + "description": "changesets/action majors require matching Changesets CLI majors (action v2 refuses CLI v2), so they land together", + "matchPackageNames": ["changesets/action", "@changesets/cli"], + "matchUpdateTypes": ["major"], + "groupName": "changesets", + "groupSlug": "changesets" + }, { "matchPackageNames": ["node", "@types/node", "cimg/node"], "matchUpdateTypes": ["major"], diff --git a/.github/workflows/beta-release.yml b/.github/workflows/beta-release.yml index b97bfd37778f..2ac71a966ead 100644 --- a/.github/workflows/beta-release.yml +++ b/.github/workflows/beta-release.yml @@ -43,10 +43,10 @@ jobs: id: changesets uses: changesets/action@v2.1.2 with: - version: yarn changeset:version:beta - publish: yarn changeset:publish:beta - commit: "internal: Publish beta version" - title: "Version Packages (Beta)" - createGithubReleases: false + version-script: yarn changeset:version:beta + publish-script: yarn changeset:publish:beta + commit-message: "internal: Publish beta version" + pr-title: "Version Packages (Beta)" + create-github-releases: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bbf30a39f138..c7e8b4d26d73 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,19 +41,19 @@ jobs: id: changesets uses: changesets/action@v2.1.2 with: - version: yarn changeset:version - publish: yarn changeset:publish - commit: "internal: Publish new version" - createGithubReleases: false + version-script: yarn changeset:version + publish-script: yarn changeset:publish + commit-message: "internal: Publish new version" + create-github-releases: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # hasChangesets is 'false' after the Version Packages PR is merged (no + # has-changesets is 'false' after the Version Packages PR is merged (no # changeset files remain), which is the same run where publish executes. # We can't use `published == 'true'` because the custom yarn publish # command isn't detectable by changesets/action. - name: Create GitHub Releases - if: steps.changesets.outputs.hasChangesets == 'false' + if: steps.changesets.outputs.has-changesets == 'false' run: node scripts/create-github-releases.mjs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -63,7 +63,7 @@ jobs: # at .dataclient.io - name: Find docs to archive id: archive - if: steps.changesets.outputs.hasChangesets == 'false' + if: steps.changesets.outputs.has-changesets == 'false' env: BEFORE: ${{ github.event.before }} run: | diff --git a/package.json b/package.json index 0cdd5fef5eeb..8d0263cc6806 100644 --- a/package.json +++ b/package.json @@ -75,8 +75,8 @@ "@babel/core": "8.0.7", "@babel/node": "8.0.6", "@babel/preset-flow": "^8.0.0", - "@changesets/changelog-github": "^0.7.0", - "@changesets/cli": "^2.26.1", + "@changesets/changelog-github": "^1.0.1", + "@changesets/cli": "^3.0.3", "@data-client/react": "workspace:*", "@data-client/rest": "workspace:*", "@data-client/test": "workspace:*", diff --git a/scripts/maintenance/cut.sh b/scripts/maintenance/cut.sh index 0ac58068a75c..bd8fde949e71 100755 --- a/scripts/maintenance/cut.sh +++ b/scripts/maintenance/cut.sh @@ -29,7 +29,7 @@ cd "$tree" # has it, and builds a site preview for its PRs. The first `- master` in each # is its pull_request (site-preview.yml) or push (release.yml) branch. sed -i "s/\"baseBranch\": \"master\"/\"baseBranch\": \"$branch\"/" .changeset/config.json -sed -i 's#publish: yarn changeset:publish$#publish: bash scripts/maintenance/publish.sh#' \ +sed -i 's#publish-script: yarn changeset:publish$#publish-script: bash scripts/maintenance/publish.sh#' \ .github/workflows/release.yml for workflow in release site-preview; do sed -i "0,/^ - master$/s// - $branch/" ".github/workflows/$workflow.yml" diff --git a/yarn.lock b/yarn.lock index 2bf6c9ec8bf0..27241ab56495 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3399,7 +3399,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.9, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6": +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.9, @babel/runtime@npm:^7.7.6": version: 7.29.10 resolution: "@babel/runtime@npm:7.29.10" checksum: 10c0/32f975da8e9c2cae6b33e1a477f8fe8bbff6722c982b5ce35f99affaf3a7a1b612c8272b43afa0e51d3000928d6f3ba38f9296301115db5640264907c027b0cd @@ -3521,257 +3521,203 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.1.1": - version: 7.1.1 - resolution: "@changesets/apply-release-plan@npm:7.1.1" - dependencies: - "@changesets/config": "npm:^3.1.4" - "@changesets/get-version-range-type": "npm:^0.4.0" - "@changesets/git": "npm:^3.0.4" - "@changesets/should-skip-package": "npm:^0.1.2" - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - detect-indent: "npm:^6.0.0" - fs-extra: "npm:^7.0.1" - lodash.startcase: "npm:^4.4.0" - outdent: "npm:^0.5.0" - prettier: "npm:^2.7.1" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.5.3" - checksum: 10c0/27de184e74e8e48b43fca1f73e7c7a2887b0cdacfe7ba9c09cdc4547dff0de1587bed5fe2d5ec0a3754fa422f6b8a528e0ac452c22ac7a6ae5211f5ac089bfb2 +"@changesets/apply-release-plan@npm:^8.1.1": + version: 8.1.1 + resolution: "@changesets/apply-release-plan@npm:8.1.1" + dependencies: + "@changesets/config": "npm:^4.0.1" + "@changesets/format": "npm:^0.1.2" + "@changesets/git": "npm:^4.0.1" + "@changesets/should-skip-package": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + import-meta-resolve: "npm:^4.2.0" + jsonc-parser: "npm:^3.3.1" + semver: "npm:^7.8.1" + checksum: 10c0/2a1cfb9e4e3feb2c76bcec646e116ebebc81271fed21a3e77d5f170963f88347a34e5d1474f8b87258448182cfa651c047282c8b1a741613a7f7d3fefc2eb9a2 languageName: node linkType: hard -"@changesets/assemble-release-plan@npm:^6.0.10": - version: 6.0.10 - resolution: "@changesets/assemble-release-plan@npm:6.0.10" +"@changesets/assemble-release-plan@npm:^7.0.0": + version: 7.0.0 + resolution: "@changesets/assemble-release-plan@npm:7.0.0" dependencies: - "@changesets/errors": "npm:^0.2.0" - "@changesets/get-dependents-graph": "npm:^2.1.4" - "@changesets/should-skip-package": "npm:^0.1.2" - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - semver: "npm:^7.5.3" - checksum: 10c0/a0ea336a5f19f8d0a97b684983bcd9c3bb8d6881b7b6abd5b482b301795ae4600924c188982f5f98dc48ac88e94a063b66ab72659041eb2623ade3e35f05d555 + "@changesets/errors": "npm:^1.0.0" + "@changesets/get-dependents-graph": "npm:^3.0.0" + "@changesets/should-skip-package": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + semver: "npm:^7.8.1" + checksum: 10c0/2544759583889865487aec744e948c6d84206a42aa593430436ace83003fe00d3880ef623114c396cd5fd883eccb1e03fc4a719ba5c33038a8556df8fca4b9b7 languageName: node linkType: hard -"@changesets/changelog-git@npm:^0.2.1": - version: 0.2.1 - resolution: "@changesets/changelog-git@npm:0.2.1" +"@changesets/changelog-git@npm:^1.0.0": + version: 1.0.0 + resolution: "@changesets/changelog-git@npm:1.0.0" dependencies: - "@changesets/types": "npm:^6.1.0" - checksum: 10c0/6a6fb315ffb2266fcb8f32ae9a60ccdb5436e52350a2f53beacf9822d3355f9052aba5001a718e12af472b4a8fabd69b408d0b11c02ac909ba7a183d27a9f7fd + "@changesets/types": "npm:^7.0.0" + checksum: 10c0/f0f0ab31e6e6ac35ecdae46a521d4c84aab77bbb035898e364d8f9082391b2b8064ba33d9f97d4f1526195f8278f41910c72382b12fcc0092d5bb9ff3ae05310 languageName: node linkType: hard -"@changesets/changelog-github@npm:^0.7.0": - version: 0.7.0 - resolution: "@changesets/changelog-github@npm:0.7.0" - dependencies: - "@changesets/get-github-info": "npm:^0.8.0" - "@changesets/types": "npm:^6.1.0" - dotenv: "npm:^8.1.0" - checksum: 10c0/8054f8d5057e79eccf6658712603c9df04906f6b9c7a8b3581e63d178328ca9ba7cb27e4f2241115c3c3430099dd92ebdea097be86921d0a3cd0d07e06e896eb - languageName: node - linkType: hard - -"@changesets/cli@npm:^2.26.1": - version: 2.31.1 - resolution: "@changesets/cli@npm:2.31.1" - dependencies: - "@changesets/apply-release-plan": "npm:^7.1.1" - "@changesets/assemble-release-plan": "npm:^6.0.10" - "@changesets/changelog-git": "npm:^0.2.1" - "@changesets/config": "npm:^3.1.4" - "@changesets/errors": "npm:^0.2.0" - "@changesets/get-dependents-graph": "npm:^2.1.4" - "@changesets/get-release-plan": "npm:^4.0.16" - "@changesets/git": "npm:^3.0.4" - "@changesets/logger": "npm:^0.1.1" - "@changesets/pre": "npm:^2.0.2" - "@changesets/read": "npm:^0.6.7" - "@changesets/should-skip-package": "npm:^0.1.2" - "@changesets/types": "npm:^6.1.0" - "@changesets/write": "npm:^0.4.0" - "@inquirer/external-editor": "npm:^1.0.2" - "@manypkg/get-packages": "npm:^1.1.3" - ansi-colors: "npm:^4.1.3" - enquirer: "npm:^2.4.1" - fs-extra: "npm:^7.0.1" - mri: "npm:^1.2.0" - package-manager-detector: "npm:^0.2.0" - picocolors: "npm:^1.1.0" - resolve-from: "npm:^5.0.0" - semver: "npm:^7.5.3" - spawndamnit: "npm:^3.0.1" - term-size: "npm:^2.1.0" - bin: - changeset: bin.js - checksum: 10c0/375789e85def0bb303ada45d5085c92765010e6b88b8252eb459346ac8a94eba098c9cb8ad416241757796a8828c417fc9e0a23011bd3a74ce33eef013d8311a +"@changesets/changelog-github@npm:^1.0.1": + version: 1.0.1 + resolution: "@changesets/changelog-github@npm:1.0.1" + dependencies: + "@changesets/get-github-info": "npm:^1.0.1" + "@changesets/types": "npm:^7.0.0" + checksum: 10c0/d1538b48d8cfa8846ff5428f7c98301342378c5d8fe0c077679dfdcf373f53e989553783159e5e594cf292b61d303560d32de4abb57b77453cc0c872acc8420b languageName: node linkType: hard -"@changesets/config@npm:^3.1.4": - version: 3.1.4 - resolution: "@changesets/config@npm:3.1.4" - dependencies: - "@changesets/errors": "npm:^0.2.0" - "@changesets/get-dependents-graph": "npm:^2.1.4" - "@changesets/logger": "npm:^0.1.1" - "@changesets/should-skip-package": "npm:^0.1.2" - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - fs-extra: "npm:^7.0.1" - micromatch: "npm:^4.0.8" - checksum: 10c0/1c0e7975aa719e2c87dfda3f5a1eb81b9f4852cdfb5b5c9d181fa2f8f485e92370b3bdfdb6f666432207dd75a3f79fa8fffe7847d48fb11308acb5ecf327bc12 +"@changesets/cli@npm:^3.0.3": + version: 3.0.3 + resolution: "@changesets/cli@npm:3.0.3" + dependencies: + "@changesets/apply-release-plan": "npm:^8.1.1" + "@changesets/assemble-release-plan": "npm:^7.0.0" + "@changesets/changelog-git": "npm:^1.0.0" + "@changesets/config": "npm:^4.0.1" + "@changesets/errors": "npm:^1.0.0" + "@changesets/get-dependents-graph": "npm:^3.0.0" + "@changesets/git": "npm:^4.0.1" + "@changesets/pre": "npm:^3.0.0" + "@changesets/read": "npm:^1.0.1" + "@changesets/should-skip-package": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + "@changesets/write": "npm:^1.0.1" + "@clack/prompts": "npm:^1.7.0" + "@manypkg/get-packages": "npm:^3.1.0" + "@pnpm/deps.graph-sequencer": "npm:^1100.0.1" + cac: "npm:^7.0.0" + import-meta-resolve: "npm:^4.2.0" + launch-editor: "npm:^2.14.1" + package-manager-detector: "npm:^1.6.0" + semver: "npm:^7.8.1" + tinyexec: "npm:^1.3.1" + bin: + changeset: bin.js + checksum: 10c0/238b98c590bfe33e794cf5ab47e0fa6eb46fc587da9498af49037877f1043b3e91dac65c990ebd1675115d82f2a3a2b3e7aa1b5d385369b0322a24e858eb1313 languageName: node linkType: hard -"@changesets/errors@npm:^0.2.0": - version: 0.2.0 - resolution: "@changesets/errors@npm:0.2.0" +"@changesets/config@npm:^4.0.1": + version: 4.0.1 + resolution: "@changesets/config@npm:4.0.1" dependencies: - extendable-error: "npm:^0.1.5" - checksum: 10c0/f2757c752ab04e9733b0dfd7903f1caf873f9e603794c4d9ea2294af4f937c73d07273c24be864ad0c30b6a98424360d5b96a6eab14f97f3cf2cbfd3763b95c1 + "@changesets/get-dependents-graph": "npm:^3.0.0" + "@changesets/should-skip-package": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + "@manypkg/get-packages": "npm:^3.1.0" + picomatch: "npm:^4.0.7" + checksum: 10c0/959dbbb3ab9fab0427a8990cbe7d4465d9b67042c96108209c8110b7c5ccb2fc3303b75d5c024e911d3a51ca082d13d49a5091edf52014a2b8d69e89b58188ed languageName: node linkType: hard -"@changesets/get-dependents-graph@npm:^2.1.4": - version: 2.1.4 - resolution: "@changesets/get-dependents-graph@npm:2.1.4" - dependencies: - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - picocolors: "npm:^1.1.0" - semver: "npm:^7.5.3" - checksum: 10c0/37b12ba42f16c458d0b574bcafa0247ff2b9a218686a64c86fc75bccc9ba3982f9c27206542941cf3a0563d9b199f40a830682b45e9fd902536de91344cbd0a2 +"@changesets/errors@npm:^1.0.0": + version: 1.0.0 + resolution: "@changesets/errors@npm:1.0.0" + checksum: 10c0/502439fb046b9916e8a0745374c75fa80883b0bdeea92aa2e85be07b8675dcdb50df5bd108ce66eddbda1f8863be750bf817301c9d4904c2168305df870e3f9f languageName: node linkType: hard -"@changesets/get-github-info@npm:^0.8.0": - version: 0.8.0 - resolution: "@changesets/get-github-info@npm:0.8.0" +"@changesets/format@npm:^0.1.1, @changesets/format@npm:^0.1.2": + version: 0.1.2 + resolution: "@changesets/format@npm:0.1.2" dependencies: - dataloader: "npm:^1.4.0" - node-fetch: "npm:^2.5.0" - checksum: 10c0/b7c53e368a1e77504a704de3080ee99c63e7610c3a69549ab6709089bdb3ae2faed33059852033440afe8225827504aae8124c464a65cd91a9ada1de1955cb9e + package-manager-detector: "npm:^1.8.0" + tinyexec: "npm:^1.3.0" + checksum: 10c0/fdb35b885b0923c2fac48433f5d633cc1a091f10e589eb65e3cd33c6702864ea26ef41d7bb434f0c91715dafa609442b91a780e84089b9bd33b7906d65d13f39 languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.16": - version: 4.0.16 - resolution: "@changesets/get-release-plan@npm:4.0.16" +"@changesets/get-dependents-graph@npm:^3.0.0": + version: 3.0.0 + resolution: "@changesets/get-dependents-graph@npm:3.0.0" dependencies: - "@changesets/assemble-release-plan": "npm:^6.0.10" - "@changesets/config": "npm:^3.1.4" - "@changesets/pre": "npm:^2.0.2" - "@changesets/read": "npm:^0.6.7" - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10c0/4be4553e13fe331f6d5b2ed98fece21c8d2b38c04a0543f726a0398b7538ef8fd073d712c35ae4540ed4fc6f84f08de6335318bc09dd562b189fb6968d049e95 - languageName: node - linkType: hard - -"@changesets/get-version-range-type@npm:^0.4.0": - version: 0.4.0 - resolution: "@changesets/get-version-range-type@npm:0.4.0" - checksum: 10c0/e466208c8383489a383f37958d8b5b9aed38539f9287b47fe155a2e8855973f6960fb1724a1ee33b11580d65e1011059045ee654e8ef51e4783017d8989c9d3f + "@changesets/types": "npm:^7.0.0" + semver: "npm:^7.8.1" + checksum: 10c0/ab675098db0b92f61115952fb793620bb5b76e502bad5f7f63bcc85a50e5515f70e08957be87381a58141ab2078bf94dd92df86efa55e73227e7604ba6a3968b languageName: node linkType: hard -"@changesets/git@npm:^3.0.4": - version: 3.0.4 - resolution: "@changesets/git@npm:3.0.4" +"@changesets/get-github-info@npm:^1.0.1": + version: 1.0.1 + resolution: "@changesets/get-github-info@npm:1.0.1" dependencies: - "@changesets/errors": "npm:^0.2.0" - "@manypkg/get-packages": "npm:^1.1.3" - is-subdir: "npm:^1.1.1" - micromatch: "npm:^4.0.8" - spawndamnit: "npm:^3.0.1" - checksum: 10c0/4abbdc1dec6ddc50b6ad927d9eba4f23acd775fdff615415813099befb0cecd1b0f56ceea5e18a5a3cbbb919d68179366074b02a954fbf4016501e5fd125d2b5 + dataloader: "npm:^2.2.3" + checksum: 10c0/7b45b5ebc97b297e1c373ec782c501c3b6cc911badf43e4ebaaf46ce1d8b94f62e4d758705e03d3b9df06b730ab85b9dab5ad76ff070f8ff65ef2fb21647d61b languageName: node linkType: hard -"@changesets/logger@npm:^0.1.1": - version: 0.1.1 - resolution: "@changesets/logger@npm:0.1.1" +"@changesets/git@npm:^4.0.1": + version: 4.0.1 + resolution: "@changesets/git@npm:4.0.1" dependencies: - picocolors: "npm:^1.1.0" - checksum: 10c0/a0933b5bd4d99e10730b22612dc1bdfd25b8804c5b48f8cada050bf5c7a89b2ae9a61687f846a5e9e5d379a95b59fef795c8d5d91e49a251f8da2be76133f83f + "@changesets/errors": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + "@manypkg/get-packages": "npm:^3.1.0" + picomatch: "npm:^4.0.4" + tinyexec: "npm:^1.3.0" + checksum: 10c0/b548ecfafb238ff477a793e4ee91c1fe818274b9ea5b6d5a9d619f75a915ad27831f2accf2edce77da57f918bf1009b59cca2c5aaa7288db4b266f87872c2c23 languageName: node linkType: hard -"@changesets/parse@npm:^0.4.3": - version: 0.4.3 - resolution: "@changesets/parse@npm:0.4.3" +"@changesets/parse@npm:^1.0.0": + version: 1.0.0 + resolution: "@changesets/parse@npm:1.0.0" dependencies: - "@changesets/types": "npm:^6.1.0" - js-yaml: "npm:^4.1.1" - checksum: 10c0/4d8488eaf224974ae335fec964dc1dc486abcfa9f96856cf4267c2765b02ed6af1778375ec03d38252ebab9e191aa4a11c5f37a6ad42e907e08290fed2b9690c + "@changesets/types": "npm:^7.0.0" + yaml: "npm:^2.9.0" + checksum: 10c0/76e93b099015420dfc08f3e3a9321ea2512659d8946d1ed86de64899b52d37faa87173cc80ead5d313ffce2f829ce380a0188c0a1cccaad48350e7c6a83720d0 languageName: node linkType: hard -"@changesets/pre@npm:^2.0.2": - version: 2.0.2 - resolution: "@changesets/pre@npm:2.0.2" +"@changesets/pre@npm:^3.0.0": + version: 3.0.0 + resolution: "@changesets/pre@npm:3.0.0" dependencies: - "@changesets/errors": "npm:^0.2.0" - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - fs-extra: "npm:^7.0.1" - checksum: 10c0/0af9396d84c47a88d79b757e9db4e3579b6620260f92c243b8349e7fcefca3c2652583f6d215c13115bed5d5cdc30c975f307fd6acbb89d205b1ba2ae403b918 + "@changesets/errors": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + "@manypkg/get-packages": "npm:^3.1.0" + checksum: 10c0/56e49668f25cabf50dcab12b6ae20fd7dbeba628390149d38a9075b05c41b954d4fbcebe7535878087c5f0b707ce96b90b727286850c71d6d321477bd1a1c18e languageName: node linkType: hard -"@changesets/read@npm:^0.6.7": - version: 0.6.7 - resolution: "@changesets/read@npm:0.6.7" +"@changesets/read@npm:^1.0.1": + version: 1.0.1 + resolution: "@changesets/read@npm:1.0.1" dependencies: - "@changesets/git": "npm:^3.0.4" - "@changesets/logger": "npm:^0.1.1" - "@changesets/parse": "npm:^0.4.3" - "@changesets/types": "npm:^6.1.0" - fs-extra: "npm:^7.0.1" - p-filter: "npm:^2.1.0" - picocolors: "npm:^1.1.0" - checksum: 10c0/eebda5f5cea8684b9cb470e74cd5e67043a62ca54452ac88bb1a998bebeee1a2e3a642dc76818155a145863551c65f10f9c4ff85378b0419179fc60049edbbc6 + "@changesets/git": "npm:^4.0.1" + "@changesets/parse": "npm:^1.0.0" + "@changesets/types": "npm:^7.0.0" + checksum: 10c0/125de7132b71e9c184f35ec0ad4d23b9accb0aa04d178c835ef575fbf12afbed2fd2d975e987ebb70c007c9a08dc97a267123ba515a4c2f4f070279ad8193f46 languageName: node linkType: hard -"@changesets/should-skip-package@npm:^0.1.2": - version: 0.1.2 - resolution: "@changesets/should-skip-package@npm:0.1.2" +"@changesets/should-skip-package@npm:^1.0.0": + version: 1.0.0 + resolution: "@changesets/should-skip-package@npm:1.0.0" dependencies: - "@changesets/types": "npm:^6.1.0" - "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10c0/484e339e7d6e6950e12bff4eda6e8eccb077c0fbb1f09dd95d2ae948b715226a838c71eaf50cd2d7e0e631ce3bfb1ca93ac752436e6feae5b87aece2e917b440 - languageName: node - linkType: hard - -"@changesets/types@npm:^4.0.1": - version: 4.1.0 - resolution: "@changesets/types@npm:4.1.0" - checksum: 10c0/a372ad21f6a1e0d4ce6c19573c1ca269eef1ad53c26751ad9515a24f003e7c49dcd859dbb1fedb6badaf7be956c1559e8798304039e0ec0da2d9a68583f13464 + "@changesets/types": "npm:^7.0.0" + checksum: 10c0/9beb51e7a6a6d678fbfe60efca4646d7daf117ffb90d3dbe3e8b07806f87383cf2a49b0e15b5fe2b827b69f61c0cf7cb77c4bf27b403c2ce835c5ba7990ed0e5 languageName: node linkType: hard -"@changesets/types@npm:^6.1.0": - version: 6.1.0 - resolution: "@changesets/types@npm:6.1.0" - checksum: 10c0/b4cea3a4465d1eaf0bbd7be1e404aca5a055a61d4cc72aadcb73bbbda1670b4022736b8d3052616cbf1f451afa0637545d077697f4b923236539af9cd5abce6c +"@changesets/types@npm:^7.0.0": + version: 7.0.0 + resolution: "@changesets/types@npm:7.0.0" + checksum: 10c0/494e09ff94968c1c81521f5ac8c6ab60a1e30d7d0cd9ea7f83c2cbac92efba38b03e008ee6fb4592d90b05d69bad864b6ae8155827d52a51c652f5c24d36ec83 languageName: node linkType: hard -"@changesets/write@npm:^0.4.0": - version: 0.4.0 - resolution: "@changesets/write@npm:0.4.0" +"@changesets/write@npm:^1.0.1": + version: 1.0.1 + resolution: "@changesets/write@npm:1.0.1" dependencies: - "@changesets/types": "npm:^6.1.0" - fs-extra: "npm:^7.0.1" - human-id: "npm:^4.1.1" - prettier: "npm:^2.7.1" - checksum: 10c0/311f4d0e536d1b5f2d3f9053537d62b2d4cdbd51e1d2767807ac9d1e0f380367f915d2ad370e5c73902d5a54bffd282d53fff5418c8ad31df51751d652bea826 + "@changesets/format": "npm:^0.1.1" + "@changesets/types": "npm:^7.0.0" + human-id: "npm:^4.2.0" + checksum: 10c0/c9cb074a8c524db1327e54dc1379ff4b50d3a4915409a3e5abe1edaf1ce45f6dafc6c8aced17a1f3eebfa162241b5fd8ea74fc751d2e24df56c2966e4169fcaf languageName: node linkType: hard @@ -3815,6 +3761,28 @@ __metadata: languageName: node linkType: hard +"@clack/core@npm:1.5.1": + version: 1.5.1 + resolution: "@clack/core@npm:1.5.1" + dependencies: + fast-wrap-ansi: "npm:^0.2.0" + sisteransi: "npm:^1.0.5" + checksum: 10c0/6dca93ff5a34bfe8c150367519bc40a847e9172cb1a78b18c88da0507cb6ad899debe1ad5cfcb9796e439108f12f003cf06fd002e2293bc85ff500975e45ff13 + languageName: node + linkType: hard + +"@clack/prompts@npm:^1.7.0": + version: 1.8.1 + resolution: "@clack/prompts@npm:1.8.1" + dependencies: + "@clack/core": "npm:1.5.1" + fast-string-width: "npm:^3.0.2" + fast-wrap-ansi: "npm:^0.2.0" + sisteransi: "npm:^1.0.5" + checksum: 10c0/ed38748acde0cb1e7ebdac1242470c78bd90380cbdde1e5560e0828881e3c74e2676de666086cf8183c8d4d3f1fc6e489f15a004f0d9f8ee294a3aa744de2093 + languageName: node + linkType: hard + "@colordx/core@npm:^5.4.3": version: 5.8.0 resolution: "@colordx/core@npm:5.8.0" @@ -6880,7 +6848,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/external-editor@npm:^1.0.2, @inquirer/external-editor@npm:^1.0.3": +"@inquirer/external-editor@npm:^1.0.3": version: 1.0.3 resolution: "@inquirer/external-editor@npm:1.0.3" dependencies: @@ -7829,29 +7797,33 @@ __metadata: languageName: node linkType: hard -"@manypkg/find-root@npm:^1.1.0": - version: 1.1.0 - resolution: "@manypkg/find-root@npm:1.1.0" +"@manypkg/find-root@npm:^3.1.0": + version: 3.1.0 + resolution: "@manypkg/find-root@npm:3.1.0" dependencies: - "@babel/runtime": "npm:^7.5.5" - "@types/node": "npm:^12.7.1" - find-up: "npm:^4.1.0" - fs-extra: "npm:^8.1.0" - checksum: 10c0/0ee907698e6c73d6f1821ff630f3fec6dcf38260817c8752fec8991ac38b95ba431ab11c2773ddf9beb33d0e057f1122b00e8ffc9b8411b3fd24151413626fa6 + "@manypkg/tools": "npm:^2.1.0" + checksum: 10c0/15b3f5c5c66881af88c1c70dcec805237a2b7e1d541ca7687aade00978680024f8e77ca2f4bac1415e00377f2e78a998d842c345c288d3e69383d50280620b1c languageName: node linkType: hard -"@manypkg/get-packages@npm:^1.1.3": - version: 1.1.3 - resolution: "@manypkg/get-packages@npm:1.1.3" +"@manypkg/get-packages@npm:^3.1.0": + version: 3.1.0 + resolution: "@manypkg/get-packages@npm:3.1.0" + dependencies: + "@manypkg/find-root": "npm:^3.1.0" + "@manypkg/tools": "npm:^2.1.0" + checksum: 10c0/e8baabd85a13f4537ae22124d5e53f1523ba0653f33006da45fc8bd642e0134786a6aad9d0a7ed99282ae20a80687ef5700bd72980441627b5c96658503ad83d + languageName: node + linkType: hard + +"@manypkg/tools@npm:^2.1.0": + version: 2.1.2 + resolution: "@manypkg/tools@npm:2.1.2" dependencies: - "@babel/runtime": "npm:^7.5.5" - "@changesets/types": "npm:^4.0.1" - "@manypkg/find-root": "npm:^1.1.0" - fs-extra: "npm:^8.1.0" - globby: "npm:^11.0.0" - read-yaml-file: "npm:^1.1.0" - checksum: 10c0/f05907d1174ae28861eaa06d0efdc144f773d9a4b8b65e1e7cdc01eb93361d335351b4a336e05c6aac02661be39e8809a3f7ad28bc67b6b338071434ab442130 + jju: "npm:^1.4.0" + tinyglobby: "npm:^0.2.13" + yaml: "npm:^2.9.0" + checksum: 10c0/05c8ece3b3b3ff170765ecf230f0a5408543f1ad43f8b5dc97651adff0ffed3d860dabdd1e2d1068aa247832d473c4de583791675b8f3d07568da4cab2a0ebc3 languageName: node linkType: hard @@ -9212,6 +9184,13 @@ __metadata: languageName: node linkType: hard +"@pnpm/deps.graph-sequencer@npm:^1100.0.1": + version: 1100.0.1 + resolution: "@pnpm/deps.graph-sequencer@npm:1100.0.1" + checksum: 10c0/b38a152e1184055a358e7c522f068572e84759a88dfc56c98a349125b11d3cce72e452424c235af5cf18258a5034f88fe203c72ba57ffbe70b297afc50d08dea + languageName: node + linkType: hard + "@pnpm/network.ca-file@npm:^1.0.1": version: 1.0.2 resolution: "@pnpm/network.ca-file@npm:1.0.2" @@ -11615,13 +11594,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^12.7.1": - version: 12.20.55 - resolution: "@types/node@npm:12.20.55" - checksum: 10c0/3b190bb0410047d489c49bbaab592d2e6630de6a50f00ba3d7d513d59401d279972a8f5a598b5bb8ddc1702f8a2f4ec57a65d93852f9c329639738e7053637d1 - languageName: node - linkType: hard - "@types/node@npm:^17.0.5": version: 17.0.45 resolution: "@types/node@npm:17.0.45" @@ -13229,13 +13201,6 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 - languageName: node - linkType: hard - "ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -14001,15 +13966,6 @@ __metadata: languageName: node linkType: hard -"better-path-resolve@npm:1.0.0": - version: 1.0.0 - resolution: "better-path-resolve@npm:1.0.0" - dependencies: - is-windows: "npm:^1.0.0" - checksum: 10c0/7335130729d59a14b8e4753fea180ca84e287cccc20cb5f2438a95667abc5810327c414eee7b3c79ed1b5a348a40284ea872958f50caba69432c40405eb0acce - languageName: node - linkType: hard - "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" @@ -14414,6 +14370,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^7.0.0": + version: 7.1.0 + resolution: "cac@npm:7.1.0" + checksum: 10c0/8bfeef75404cf7d1799abdf6e07b276f3bb646caacdef4d492c64dcff6d4277ec81254612343d041e00ede588fd57117d1a46238b6db18770461dcb2cb1f7487 + languageName: node + linkType: hard + "cacache@npm:20.0.3, cacache@npm:^20.0.0, cacache@npm:^20.0.1": version: 20.0.3 resolution: "cacache@npm:20.0.3" @@ -15582,7 +15545,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -16523,10 +16486,10 @@ __metadata: languageName: node linkType: hard -"dataloader@npm:^1.4.0": - version: 1.4.0 - resolution: "dataloader@npm:1.4.0" - checksum: 10c0/5fa4c843b9e60195092f1fc7e2acaff318ed46886dc670ddff683bc560f12d4079e6d1e77749501b7e111a8582d26a2aa2a2fbe6d7d5e1520cef64f4e1fd242d +"dataloader@npm:^2.2.3": + version: 2.2.3 + resolution: "dataloader@npm:2.2.3" + checksum: 10c0/9b9a056fbc863ca86da87d59e053e871e263b4966aa4d55e40d61a65e96815fae5530ca220629064ca5f8e3000c0c4ec93292e170c38ff393fb34256b4d7c1aa languageName: node linkType: hard @@ -16761,13 +16724,6 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^6.0.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 - languageName: node - linkType: hard - "detect-libc@npm:^2.0.3": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -16991,13 +16947,6 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^8.1.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 10c0/6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f - languageName: node - linkType: hard - "downlevel-dts@npm:^0.10.0": version: 0.10.0 resolution: "downlevel-dts@npm:0.10.0" @@ -17236,16 +17185,6 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:^2.4.1": - version: 2.4.1 - resolution: "enquirer@npm:2.4.1" - dependencies: - ansi-colors: "npm:^4.1.1" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 - languageName: node - linkType: hard - "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -18307,13 +18246,6 @@ __metadata: languageName: node linkType: hard -"extendable-error@npm:^0.1.5": - version: 0.1.7 - resolution: "extendable-error@npm:0.1.7" - checksum: 10c0/c46648b7682448428f81b157cbfe480170fd96359c55db477a839ddeaa34905a18cba0b989bafe5e83f93c2491a3fcc7cc536063ea326ba9d72e9c6e2fe736a7 - languageName: node - linkType: hard - "fast-content-type-parse@npm:^3.0.0": version: 3.0.0 resolution: "fast-content-type-parse@npm:3.0.0" @@ -18369,6 +18301,22 @@ __metadata: languageName: node linkType: hard +"fast-string-truncated-width@npm:^3.0.2": + version: 3.0.3 + resolution: "fast-string-truncated-width@npm:3.0.3" + checksum: 10c0/043b8663397d14a3880ce4f3407bcda60b40db9bbeafe62863a35d1f9c69ea17c8da3fcd72de235553e6c9cd053128cde9e24ca0d4a7463208f48db3cd23d981 + languageName: node + linkType: hard + +"fast-string-width@npm:^3.0.2": + version: 3.0.2 + resolution: "fast-string-width@npm:3.0.2" + dependencies: + fast-string-truncated-width: "npm:^3.0.2" + checksum: 10c0/c8822d175315bb353ebe782b65214ac53b13e3bf704e03b132ea7bdfa8de6a636375b3ab7a4097545393d109381c37c4f387c72a462c90b61412dbc4632f39a7 + languageName: node + linkType: hard + "fast-uri@npm:^3.0.1": version: 3.1.8 resolution: "fast-uri@npm:3.1.8" @@ -18376,6 +18324,15 @@ __metadata: languageName: node linkType: hard +"fast-wrap-ansi@npm:^0.2.0": + version: 0.2.2 + resolution: "fast-wrap-ansi@npm:0.2.2" + dependencies: + fast-string-width: "npm:^3.0.2" + checksum: 10c0/1aa7be4f7cb86f4bdb14691cb6bcc0b8df8b3b89df142ade3ae1602332dcf6f990cd750a923cd581ca0847808cb4ec1aa5afaafa7a72f849e87a2a62c98fa370 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.8.0 resolution: "fastq@npm:1.8.0" @@ -18848,28 +18805,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 - languageName: node - linkType: hard - -"fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 - languageName: node - linkType: hard - "fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -19255,7 +19190,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.0.4, globby@npm:^11.1.0": +"globby@npm:^11.0.4, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -19328,7 +19263,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -20116,12 +20051,12 @@ __metadata: languageName: node linkType: hard -"human-id@npm:^4.1.1": - version: 4.1.1 - resolution: "human-id@npm:4.1.1" +"human-id@npm:^4.2.0": + version: 4.2.2 + resolution: "human-id@npm:4.2.2" bin: human-id: dist/cli.js - checksum: 10c0/9a9a18130fb7d6bc707054bacc32cb328289be0de47ba5669fd04995435e7e59931b87c644a223d68473c450221d104175a5fefe93d77f3522822ead8945def8 + checksum: 10c0/7bf51bf2cec8c26129d3f6ea068b18eca702130641afe5c475cb92270015e403be5bdd35f53b2da38a058a3c1c2632c2d0576c026ad78dc33d30af53eb7d426d languageName: node linkType: hard @@ -20988,15 +20923,6 @@ __metadata: languageName: node linkType: hard -"is-subdir@npm:^1.1.1": - version: 1.2.0 - resolution: "is-subdir@npm:1.2.0" - dependencies: - better-path-resolve: "npm:1.0.0" - checksum: 10c0/03a03ee2ee6578ce589b1cfaf00e65c86b20fd1b82c1660625557c535439a7477cda77e20c62cda6d4c99e7fd908b4619355ae2d989f4a524a35350a44353032 - languageName: node - linkType: hard - "is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": version: 1.1.1 resolution: "is-symbol@npm:1.1.1" @@ -21064,13 +20990,6 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.0": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 - languageName: node - linkType: hard - "is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -21833,6 +21752,13 @@ __metadata: languageName: node linkType: hard +"jju@npm:^1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 10c0/f3f444557e4364cfc06b1abf8331bf3778b26c0c8552ca54429bc0092652172fdea26cbffe33e1017b303d5aa506f7ede8571857400efe459cb7439180e2acad + languageName: node + linkType: hard + "joi@npm:^17.9.2": version: 17.13.8 resolution: "joi@npm:17.13.8" @@ -21884,7 +21810,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1": +"js-yaml@npm:^3.13.1": version: 3.15.2 resolution: "js-yaml@npm:3.15.2" dependencies: @@ -21896,7 +21822,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": +"js-yaml@npm:^4.1.0": version: 4.3.2 resolution: "js-yaml@npm:4.3.2" dependencies: @@ -22072,6 +21998,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.3.1": + version: 3.3.1 + resolution: "jsonc-parser@npm:3.3.1" + checksum: 10c0/269c3ae0a0e4f907a914bf334306c384aabb9929bd8c99f909275ebd5c2d3bc70b9bcd119ad794f339dec9f24b6a4ee9cd5a8ab2e6435e730ad4075388fc2ab6 + languageName: node + linkType: hard + "jsondiffpatch@npm:^0.7.3": version: 0.7.6 resolution: "jsondiffpatch@npm:0.7.6" @@ -22083,18 +22016,6 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: "npm:^4.1.6" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 - languageName: node - linkType: hard - "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -22503,13 +22424,6 @@ __metadata: languageName: node linkType: hard -"lodash.startcase@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.startcase@npm:4.4.0" - checksum: 10c0/bd82aa87a45de8080e1c5ee61128c7aee77bf7f1d86f4ff94f4a6d7438fc9e15e5f03374b947be577a93804c8ad6241f0251beaf1452bf716064eeb657b3a9f0 - languageName: node - linkType: hard - "lodash.throttle@npm:^4.1.1": version: 4.1.1 resolution: "lodash.throttle@npm:4.1.1" @@ -24328,13 +24242,6 @@ __metadata: languageName: node linkType: hard -"mri@npm:^1.2.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 - languageName: node - linkType: hard - "mrmime@npm:^1.0.0": version: 1.0.1 resolution: "mrmime@npm:1.0.1" @@ -24540,7 +24447,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.5.0, node-fetch@npm:^2.7.0": +"node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -25252,13 +25159,6 @@ __metadata: languageName: node linkType: hard -"outdent@npm:^0.5.0": - version: 0.5.0 - resolution: "outdent@npm:0.5.0" - checksum: 10c0/e216a4498889ba1babae06af84cdc4091f7cac86da49d22d0163b3be202a5f52efcd2bcd3dfca60a361eb3a27b4299f185c5655061b6b402552d7fcd1d040cff - languageName: node - linkType: hard - "own-keys@npm:^1.0.1": version: 1.0.1 resolution: "own-keys@npm:1.0.1" @@ -25482,15 +25382,6 @@ __metadata: languageName: node linkType: hard -"p-filter@npm:^2.1.0": - version: 2.1.0 - resolution: "p-filter@npm:2.1.0" - dependencies: - p-map: "npm:^2.0.0" - checksum: 10c0/5ac34b74b3b691c04212d5dd2319ed484f591c557a850a3ffc93a08cb38c4f5540be059c6b10a185773c479ca583a91ea00c7d6c9958c815e6b74d052f356645 - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -25661,13 +25552,6 @@ __metadata: languageName: node linkType: hard -"package-manager-detector@npm:^0.2.0": - version: 0.2.0 - resolution: "package-manager-detector@npm:0.2.0" - checksum: 10c0/1ad699098018f9425b0f0a197537e085420ebcb7b6c49ef5a8dcff198f50d8de206f52ed10867624b7cb01bebac76396f5ac020dcff96f44154d59e6a5dcf36a - languageName: node - linkType: hard - "package-manager-detector@npm:^1.3.0": version: 1.3.0 resolution: "package-manager-detector@npm:1.3.0" @@ -25675,6 +25559,13 @@ __metadata: languageName: node linkType: hard +"package-manager-detector@npm:^1.6.0, package-manager-detector@npm:^1.8.0": + version: 1.9.0 + resolution: "package-manager-detector@npm:1.9.0" + checksum: 10c0/c901b08e9d284e9b517d27be1783fc279f3e814fac9de4c30441129a3a4b1475b16314ff95b98268daf49e20d5076478c50bc7b1b3ff8a591eb39f03f02dbb16 + languageName: node + linkType: hard + "pacote@npm:^21.5.1": version: 21.5.1 resolution: "pacote@npm:21.5.1" @@ -26053,7 +25944,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:1.1.1, picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": +"picocolors@npm:1.1.1, picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -26067,7 +25958,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4, picomatch@npm:^4.0.7": version: 4.0.7 resolution: "picomatch@npm:4.0.7" checksum: 10c0/beb6ae02c43ae44e84883b90830196d9046b1726ead292adcf7f57945e0bb0d992d68563d87e03b484b6f3c9a5c6defda7523477f047d7f0e663f126cc01787f @@ -27739,15 +27630,6 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.7.1": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a - languageName: node - linkType: hard - "pretty-bytes@npm:^5.3.0": version: 5.6.0 resolution: "pretty-bytes@npm:5.6.0" @@ -28633,18 +28515,6 @@ __metadata: languageName: node linkType: hard -"read-yaml-file@npm:^1.1.0": - version: 1.1.0 - resolution: "read-yaml-file@npm:1.1.0" - dependencies: - graceful-fs: "npm:^4.1.5" - js-yaml: "npm:^3.6.1" - pify: "npm:^4.0.1" - strip-bom: "npm:^3.0.0" - checksum: 10c0/85a9ba08bb93f3c91089bab4f1603995ec7156ee595f8ce40ae9f49d841cbb586511508bd47b7cf78c97f678c679b2c6e2c0092e63f124214af41b6f8a25ca31 - languageName: node - linkType: hard - "readable-stream@npm:^2.0.1, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" @@ -29532,8 +29402,8 @@ __metadata: "@babel/core": "npm:8.0.7" "@babel/node": "npm:8.0.6" "@babel/preset-flow": "npm:^8.0.0" - "@changesets/changelog-github": "npm:^0.7.0" - "@changesets/cli": "npm:^2.26.1" + "@changesets/changelog-github": "npm:^1.0.1" + "@changesets/cli": "npm:^3.0.3" "@data-client/react": "workspace:*" "@data-client/rest": "workspace:*" "@data-client/test": "workspace:*" @@ -29893,7 +29763,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.7.4, semver@npm:^7.8.5": +"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.7.4, semver@npm:^7.8.1, semver@npm:^7.8.5": version: 7.8.5 resolution: "semver@npm:7.8.5" bin: @@ -30523,16 +30393,6 @@ __metadata: languageName: node linkType: hard -"spawndamnit@npm:^3.0.1": - version: 3.0.1 - resolution: "spawndamnit@npm:3.0.1" - dependencies: - cross-spawn: "npm:^7.0.5" - signal-exit: "npm:^4.0.1" - checksum: 10c0/a9821a59bc78a665bd44718dea8f4f4010bb1a374972b0a6a1633b9186cda6d6fd93f22d1e49d9944d6bb175ba23ce29036a4bd624884fb157d981842c3682f3 - languageName: node - linkType: hard - "spdx-correct@npm:^3.0.0": version: 3.1.0 resolution: "spdx-correct@npm:3.1.0" @@ -31357,13 +31217,6 @@ __metadata: languageName: node linkType: hard -"term-size@npm:^2.1.0": - version: 2.2.1 - resolution: "term-size@npm:2.2.1" - checksum: 10c0/89f6bba1d05d425156c0910982f9344d9e4aebf12d64bfa1f460d93c24baa7bc4c4a21d355fbd7153c316433df0538f64d0ae6e336cc4a69fdda4f85d62bc79d - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^5.3.9, terser-webpack-plugin@npm:^5.6.1": version: 5.6.1 resolution: "terser-webpack-plugin@npm:5.6.1" @@ -31570,7 +31423,14 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": +"tinyexec@npm:^1.3.0, tinyexec@npm:^1.3.1": + version: 1.3.1 + resolution: "tinyexec@npm:1.3.1" + checksum: 10c0/c590369cb3fa73cc18a3998caec8a00f9712d91309c881be3ac52b160fb2f80c7b1fbf3591858ab6abab47ad55385b0c86ec19982e32441a01f55298dab9ccd2 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": version: 0.2.17 resolution: "tinyglobby@npm:0.2.17" dependencies: @@ -32292,13 +32152,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -33766,6 +33619,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.9.0": + version: 2.9.1 + resolution: "yaml@npm:2.9.1" + bin: + yaml: bin.mjs + checksum: 10c0/9d06676ef02b89559a8b10a71882bd2cdae81e8393dc8dbc871615c3259475d9609ad973d19cb3c9e71e72d6206e3d1e7aa241c7e55f3d16fd2e77db305827d6 + languageName: node + linkType: hard + "yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" From 8f496f0f15046d127862d6c61e1861365616203e Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 03:18:45 +0000 Subject: [PATCH 10/11] internal: Let cut.sh point either action input spelling at publish.sh Cuts default to the newest release tag, whose release.yml still uses changesets/action v1's publish: input. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01XT6Wh4vZ8ZJ94GaYksu7Gh --- scripts/create-github-releases.mjs | 2 +- scripts/maintenance/cut.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/create-github-releases.mjs b/scripts/create-github-releases.mjs index f2b22a962a83..78b659e446d7 100644 --- a/scripts/create-github-releases.mjs +++ b/scripts/create-github-releases.mjs @@ -2,7 +2,7 @@ /** * Creates GitHub releases for published packages. * Scans all packages, checks if a release already exists for the current version, - * and creates one if not. Gated in CI by `hasChangesets == 'false'` so it only + * and creates one if not. Gated in CI by `has-changesets == 'false'` so it only * runs after the Version Packages PR is merged and publish executes. */ import { execSync } from 'child_process'; diff --git a/scripts/maintenance/cut.sh b/scripts/maintenance/cut.sh index bd8fde949e71..f0ff5c1ac4ae 100755 --- a/scripts/maintenance/cut.sh +++ b/scripts/maintenance/cut.sh @@ -29,7 +29,8 @@ cd "$tree" # has it, and builds a site preview for its PRs. The first `- master` in each # is its pull_request (site-preview.yml) or push (release.yml) branch. sed -i "s/\"baseBranch\": \"master\"/\"baseBranch\": \"$branch\"/" .changeset/config.json -sed -i 's#publish-script: yarn changeset:publish$#publish-script: bash scripts/maintenance/publish.sh#' \ +# publish: before changesets/action v2, publish-script: since +sed -Ei 's#(publish(-script)?): yarn changeset:publish$#\1: bash scripts/maintenance/publish.sh#' \ .github/workflows/release.yml for workflow in release site-preview; do sed -i "0,/^ - master$/s// - $branch/" ".github/workflows/$workflow.yml" From a463364cbe3f8fb899012e73a4bbadd9c2dadbda Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 03:21:30 +0000 Subject: [PATCH 11/11] internal: Group every changesets/action and Changesets CLI update in one PR Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01XT6Wh4vZ8ZJ94GaYksu7Gh --- .github/renovate.json | 4 ++-- scripts/maintenance/cut.sh | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index f23830a33dff..359cdb1871ba 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -177,9 +177,9 @@ "groupName": "react-navigation monorepo" }, { - "description": "changesets/action majors require matching Changesets CLI majors (action v2 refuses CLI v2), so they land together", + "description": "changesets/action requires a matching Changesets CLI (action v2 refuses CLI v2), so every update of either lands in one PR", "matchPackageNames": ["changesets/action", "@changesets/cli"], - "matchUpdateTypes": ["major"], + "separateMajorMinor": false, "groupName": "changesets", "groupSlug": "changesets" }, diff --git a/scripts/maintenance/cut.sh b/scripts/maintenance/cut.sh index f0ff5c1ac4ae..654e5a96bf43 100755 --- a/scripts/maintenance/cut.sh +++ b/scripts/maintenance/cut.sh @@ -29,7 +29,8 @@ cd "$tree" # has it, and builds a site preview for its PRs. The first `- master` in each # is its pull_request (site-preview.yml) or push (release.yml) branch. sed -i "s/\"baseBranch\": \"master\"/\"baseBranch\": \"$branch\"/" .changeset/config.json -# publish: before changesets/action v2, publish-script: since +# The ref may predate changesets/action v2, whose input is publish-script: +# instead of publish:, so match either spelling sed -Ei 's#(publish(-script)?): yarn changeset:publish$#\1: bash scripts/maintenance/publish.sh#' \ .github/workflows/release.yml for workflow in release site-preview; do