diff --git a/.agents/skills/fix-bug/SKILL.md b/.agents/skills/fix-bug/SKILL.md index a1904c4e08..eaded97045 100644 --- a/.agents/skills/fix-bug/SKILL.md +++ b/.agents/skills/fix-bug/SKILL.md @@ -121,20 +121,16 @@ pnpm lint pnpm typecheck ``` -### 6. Create a Changeset +### 6. Create a Change file -Create `.changeset/.md`: +Create a change file at `packages//.changes/..md`. `` should be either `patch`, `minor`, `major` or `unstable` to indicate the type of API change being made. -```markdown ---- -"react-router": patch ---- +Format: +```markdown fix: ``` -Use `patch` for bug fixes. Only include packages in the frontmatter that were actually changed. - ### 7. Report Results Summarize: diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index e5b6d8d6a6..0000000000 --- a/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index 19a0281431..0000000000 --- a/.changeset/config.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", - "changelog": [ - "@remix-run/changelog-github", - { "repo": "remix-run/react-router" } - ], - "commit": false, - "fixed": [ - [ - "create-react-router", - "react-router", - "react-router-dom", - "@react-router/architect", - "@react-router/cloudflare", - "@react-router/dev", - "@react-router/fs-routes", - "@react-router/express", - "@react-router/node", - "@react-router/remix-routes-option-adapter", - "@react-router/serve" - ] - ], - "linked": [], - "access": "public", - "baseBranch": "dev", - "updateInternalDependencies": "patch", - "bumpVersionsWithWorkspaceProtocolOnly": true, - "ignore": ["integration", "integration-*", "@playground/*"], - "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { - "onlyUpdatePeerDependentsWhenOutOfRange": true - } -} diff --git a/.github/workflows/changes-file.yml b/.github/workflows/changes-file.yml new file mode 100644 index 0000000000..12a9df2c62 --- /dev/null +++ b/.github/workflows/changes-file.yml @@ -0,0 +1,41 @@ +name: 📝 Change File Check + +on: + pull_request: + branches: + - dev + types: [opened, synchronize, reopened] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + check: + name: 📝 Change File Check + # TODO: Temporarily only run on my PRs for testing purposes + if: github.repository == 'remix-run/react-router' && github.event.pull_request.user.login == 'brophdawg11' + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - name: ⬇️ Checkout repo + uses: actions/checkout@v6 + + - name: 📦 Setup pnpm + uses: pnpm/action-setup@v4 + + - name: ⎔ Setup node + uses: actions/setup-node@v6 + with: + node-version-file: ".nvmrc" + cache: pnpm + + - name: 📥 Install deps + run: pnpm install --frozen-lockfile + + - name: 📝 Check change file and update PR comment + env: + GITHUB_TOKEN: ${{ github.token }} + run: node scripts/changes/check-pr.ts ${{ github.event.pull_request.number }} diff --git a/.github/workflows/integration-full.yml b/.github/workflows/integration-full.yml index 57913eaf61..91633ebe83 100644 --- a/.github/workflows/integration-full.yml +++ b/.github/workflows/integration-full.yml @@ -9,7 +9,7 @@ on: - main - dev paths-ignore: - - ".changeset/**" + - "packages/*/.changes/**" - "decisions/**" - "docs/**" - "examples/**" diff --git a/.github/workflows/integration-pr-ubuntu.yml b/.github/workflows/integration-pr-ubuntu.yml index ac25713e08..98724ba356 100644 --- a/.github/workflows/integration-pr-ubuntu.yml +++ b/.github/workflows/integration-pr-ubuntu.yml @@ -5,7 +5,7 @@ name: PR (Base) on: pull_request: paths-ignore: - - ".changeset/**" + - "packages/*/.changes/**" - "decisions/**" - "docs/**" - "examples/**" diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 40d45785d8..1e3c2ce6e1 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -3,6 +3,9 @@ # Commits to `dev` push builds to a `preview/dev` branch: # pnpm install "remix-run/react-router#preview/dev&path:packages/react-router" # +# Pull Requests create `preview/pr-{number}` branches: +# pnpm install "remix-run/react-router#preview/pr-12345&path:packages/react-router" +# # Can also be dispatched manually with base/installable branches to provide # `experimental` branches from PRs or otherwise. @@ -20,6 +23,8 @@ on: installableBranch: description: Installable Branch required: true + pull_request: + types: [opened, synchronize, reopened, closed] concurrency: # Include `event_name` here because when a pull_request is merged (closed), the @@ -30,16 +35,23 @@ concurrency: jobs: preview: - if: github.repository == 'remix-run/react-router' + # Don't run on PRs from forked repos + if: github.repository == 'remix-run/react-router' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) runs-on: ubuntu-latest steps: - name: Checkout (push) if: github.event_name == 'push' - uses: actions/checkout@v4 + uses: actions/checkout@v6 + + - name: Checkout (pull_request) + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Checkout (workflow_dispatch) if: github.event_name == 'workflow_dispatch' - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ inputs.baseBranch }} @@ -47,7 +59,7 @@ jobs: uses: pnpm/action-setup@v4 - name: Install Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version-file: "package.json" cache: pnpm @@ -68,6 +80,17 @@ jobs: git push --force --set-upstream origin preview/dev echo "💿 pushed installable branch: https://github.com/$GITHUB_REPOSITORY/commit/$(git rev-parse HEAD)" + # Build and force push over the PR preview/pr-{number} branch + comment on the PR + - name: Build/push branch (pull_request) + if: github.event_name == 'pull_request' && github.event.pull_request.state == 'open' + env: + GITHUB_TOKEN: ${{ github.token }} + run: | + pnpm run setup-installable-branch preview/pr-${{ github.event.pull_request.number }} + git push --force --set-upstream origin preview/pr-${{ github.event.pull_request.number }} + echo "pushed installable branch: https://github.com/$GITHUB_REPOSITORY/commit/$(git rev-parse HEAD)" + pnpm run pr-preview comment ${{ github.event.pull_request.number }} preview/pr-${{ github.event.pull_request.number }} + # Build and normal push for experimental releases to avoid unintended force # pushes over remote branches in case of a branch name collision - name: Build/push branch (workflow_dispatch) @@ -76,3 +99,11 @@ jobs: pnpm run setup-installable-branch ${{ inputs.installableBranch }} git push --set-upstream origin ${{ inputs.installableBranch }} echo "💿 pushed installable branch: https://github.com/$GITHUB_REPOSITORY/commit/$(git rev-parse HEAD)" + + # Cleanup PR preview/pr-{number} branches when the PR is closed + - name: Cleanup preview branch + if: github.event_name == 'pull_request' && github.event.pull_request.state == 'closed' + env: + GITHUB_TOKEN: ${{ github.token }} + run: | + pnpm run pr-preview cleanup ${{ github.event.pull_request.number }} preview/pr-${{ github.event.pull_request.number }} diff --git a/AGENTS.md b/AGENTS.md index 0758c92192..7ba6f50fc6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -122,18 +122,13 @@ export default [ Test both states (on/off) for future flags. Don't break existing behavior without a flag. -## Changesets +## Change Files -When making changes that affect users, create a changeset at `.changeset/.md`. If iterating on a change that hasn't shipped yet, update the existing changeset file instead of creating a new one. +When making changes that affect users, create a change file at `packages//.changes/..md`. `` should be either `patch`, `minor`, `major` or `unstable` to indicate the type of API change being made. If iterating on a change that hasn't shipped yet, update the existing change file instead of creating a new one. Format: ```markdown ---- -"react-router": patch -"@react-router/dev": minor ---- - Brief description of the change - Additional details if needed diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 60eec9eb2d..738b293c85 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -123,7 +123,7 @@ This table gives a high-level overview of the stages, but please see the individ - Because the alpha release may contain other work committed to `dev` but not yet released in a stable version, it may not be ideal for testing in all cases - In these cases, PR authors may also add the contents for a `.patch` file in a comment that folks can use via [patch-package](https://www.npmjs.com/package/patch-package) or [pnpm patch](https://pnpm.io/cli/patch) - Feedback from alpha testers is considered essential for further progress -- The PR should also contain a changeset documenting the new API for the release notes +- The PR should also contain a changes file documenting the new API for the release notes - SC members will review and approve the PR via GitHub reviews - Approval at this stage communicates: - The feature is valuable for React Router diff --git a/docs/community/contributing.md b/docs/community/contributing.md index b200c19a36..115e374ea8 100644 --- a/docs/community/contributing.md +++ b/docs/community/contributing.md @@ -67,6 +67,19 @@ All commits that fix bugs or add features need one or more tests. Do not merge code without tests! +### Change Files + +In order to facilitate release notes generation, every PR with a user-facing impact should include one or more change files. You can generate these vis `pnpm run changes:add` (requires node 24+). + +This tool will generate change files in the relevant `packages//.changes/` directories. Change files are markdown files with a short description of the change. They should be named using the format `..md` where type is either `patch`, `minor`, `major`, or `unstable`. For example: + +```sh +patch.fix-fetcher-redirects.md +minor.add-some-new-api.md +major.require-node-24.md +unstable.update-unstable-api.md +``` + ### Docs + Examples All commits that change or add to the API must be done in a pull request that also updates all relevant examples and docs. diff --git a/package.json b/package.json index 7acd0f368f..c52c6ee3e6 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "scripts": { "build": "pnpm run --filter=\"./packages/**/*\" build", "watch": "pnpm build && pnpm run --filter=\"./packages/**/*\" --parallel build --watch", + "changes:add": "node ./scripts/changes/add.ts", "changes:publish": "node ./scripts/changes/publish.ts", "changes:pr": "node ./scripts/changes/pr.ts", "changes:preview": "node ./scripts/changes/version.ts --preview", @@ -19,6 +20,7 @@ "format:check": "prettier --ignore-path .prettierignore --check .", "lint": "eslint --cache .", "playground": "node ./scripts/playground.js", + "pr-preview": "node ./scripts/pr-preview.ts", "prerelease": "pnpm build", "setup-installable-branch": "node scripts/setup-installable-branch.ts", "test": "jest", @@ -31,12 +33,7 @@ "playwright:integration": "playwright test --config ./integration/playwright.config.ts", "vite-ecosystem-ci:build": "pnpm build", "vite-ecosystem-ci:before-test": "pnpm playwright install", - "vite-ecosystem-ci:test": "pnpm playwright:integration --project=chromium && pnpm clean:integration", - "changeset": "changeset", - "__disabled_release": "changeset publish", - "__disabled_changeset:version": "changeset version && node ./scripts/remove-prerelease-changelogs.mjs", - "__disabled_publish": "node scripts/publish.js", - "__disabled_version": "node ./scripts/version" + "vite-ecosystem-ci:test": "pnpm playwright:integration --project=chromium && pnpm clean:integration" }, "jest": { "projects": [ @@ -58,12 +55,10 @@ "@babel/preset-env": "^7.27.2", "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", - "@changesets/cli": "^2.26.2", "@eslint/compat": "^2.0.3", "@manypkg/get-packages": "^1.1.3", "@mdx-js/rollup": "^3.1.0", "@playwright/test": "^1.58.2", - "@remix-run/changelog-github": "^0.0.5", "@types/jest": "^29.5.4", "@types/jsdom": "^21.1.1", "@types/react": "catalog:", @@ -106,8 +101,6 @@ }, "pnpm": { "patchedDependencies": { - "@changesets/get-dependents-graph@1.3.6": "patches/@changesets__get-dependents-graph@1.3.6.patch", - "@changesets/assemble-release-plan": "patches/@changesets__assemble-release-plan.patch", "@mdx-js/rollup": "patches/@mdx-js__rollup.patch" }, "overrides": { diff --git a/patches/@changesets__assemble-release-plan.patch b/patches/@changesets__assemble-release-plan.patch deleted file mode 100644 index 1b35f71281..0000000000 --- a/patches/@changesets__assemble-release-plan.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/dist/assemble-release-plan.cjs.dev.js b/dist/assemble-release-plan.cjs.dev.js -index e1376ca756d69816f8c79637ee7b45161f092167..314c42e8c39a34dacc3ed0c10bc7e62ca46de7d3 100644 ---- a/dist/assemble-release-plan.cjs.dev.js -+++ b/dist/assemble-release-plan.cjs.dev.js -@@ -254,10 +254,16 @@ function shouldBumpMajor({ - preInfo, - onlyUpdatePeerDependentsWhenOutOfRange - }) { -+ // PATCH: Don't do peerDependency-driven major bumps because we release in lock step -+ if (nextRelease.name === "react-router" || nextRelease.name.startsWith('@react-router/')) { -+ return false; -+ } -+ - // we check if it is a peerDependency because if it is, our dependent bump type might need to be major. - return depType === "peerDependencies" && nextRelease.type !== "none" && nextRelease.type !== "patch" && ( // 1. If onlyUpdatePeerDependentsWhenOutOfRange set to true, bump major if the version is leaving the range. - // 2. If onlyUpdatePeerDependentsWhenOutOfRange set to false, bump major regardless whether or not the version is leaving the range. -- !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default['default'](incrementVersion(nextRelease, preInfo), versionRange)) && ( // bump major only if the dependent doesn't already has a major release. -+ // PATCH: pass includePrerelease to incrementVersion() -+ !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default['default'](incrementVersion(nextRelease, preInfo), versionRange, { includePrerelease: true })) && ( // bump major only if the dependent doesn't already has a major release. - !releases.has(dependent) || releases.has(dependent) && releases.get(dependent).type !== "major"); - } - -diff --git a/dist/assemble-release-plan.cjs.prod.js b/dist/assemble-release-plan.cjs.prod.js -index 3a83720644a94cdf6e62fa188a72c51c0384d00e..273f6bb9b46cf166f9d72058e524b4f3cbc05957 100644 ---- a/dist/assemble-release-plan.cjs.prod.js -+++ b/dist/assemble-release-plan.cjs.prod.js -@@ -130,7 +130,10 @@ function getDependencyVersionRanges(dependentPkgJSON, dependencyRelease) { - } - - function shouldBumpMajor({dependent: dependent, depType: depType, versionRange: versionRange, releases: releases, nextRelease: nextRelease, preInfo: preInfo, onlyUpdatePeerDependentsWhenOutOfRange: onlyUpdatePeerDependentsWhenOutOfRange}) { -- return "peerDependencies" === depType && "none" !== nextRelease.type && "patch" !== nextRelease.type && (!onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange)) && (!releases.has(dependent) || releases.has(dependent) && "major" !== releases.get(dependent).type); -+ if (nextRelease.name === "react-router" || nextRelease.name.startsWith('@react-router/')) { -+ return false; -+ } -+ return "peerDependencies" === depType && "none" !== nextRelease.type && "patch" !== nextRelease.type && (!onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange, { includePrerelease: true })) && (!releases.has(dependent) || releases.has(dependent) && "major" !== releases.get(dependent).type); - } - - function flattenReleases(changesets, packagesByName, ignoredPackages) { -diff --git a/dist/assemble-release-plan.esm.js b/dist/assemble-release-plan.esm.js -index 62891eb5dee97a33e6587514267c3cde5b314830..9a70c1ac86f530dc0cb3857d202675ed23d694b5 100644 ---- a/dist/assemble-release-plan.esm.js -+++ b/dist/assemble-release-plan.esm.js -@@ -243,10 +243,16 @@ function shouldBumpMajor({ - preInfo, - onlyUpdatePeerDependentsWhenOutOfRange - }) { -+ // PATCH: Don't do peerDependency-driven major bumps because we release in lock step -+ if (nextRelease.name === "react-router" || nextRelease.name.startsWith('@react-router/')) { -+ return false; -+ } -+ - // we check if it is a peerDependency because if it is, our dependent bump type might need to be major. - return depType === "peerDependencies" && nextRelease.type !== "none" && nextRelease.type !== "patch" && ( // 1. If onlyUpdatePeerDependentsWhenOutOfRange set to true, bump major if the version is leaving the range. - // 2. If onlyUpdatePeerDependentsWhenOutOfRange set to false, bump major regardless whether or not the version is leaving the range. -- !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange)) && ( // bump major only if the dependent doesn't already has a major release. -+ // PATCH: pass includePrerelease to incrementVersion() -+ !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange, { includePrerelease: true })) && ( // bump major only if the dependent doesn't already has a major release. - !releases.has(dependent) || releases.has(dependent) && releases.get(dependent).type !== "major"); - } - diff --git a/patches/@changesets__get-dependents-graph@1.3.6.patch b/patches/@changesets__get-dependents-graph@1.3.6.patch deleted file mode 100644 index 011ffcf31e..0000000000 --- a/patches/@changesets__get-dependents-graph@1.3.6.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/dist/get-dependents-graph.cjs.dev.js b/dist/get-dependents-graph.cjs.dev.js -index 94dde7b0aa903cf4aa099acfd2fc62f6243264d9..70407b017dd86b0363af989663ff83e1ba34a925 100644 ---- a/dist/get-dependents-graph.cjs.dev.js -+++ b/dist/get-dependents-graph.cjs.dev.js -@@ -10,8 +10,14 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; - var Range__default = /*#__PURE__*/_interopDefault(Range); - var chalk__default = /*#__PURE__*/_interopDefault(chalk); - --// This is a modified version of the graph-getting in bolt --const DEPENDENCY_TYPES = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]; -+// This is a modified version of the graph-getting in bolt PATCH: Changesets -+// will check all of our internal dependencies to ensure that the versions -+// required match the current version in the repo. This doesn't work for peer -+// dependencies in our case because the compat package requires a peer -+// dependency of v4 or v5. -+// https://twitter.com/AndaristRake/status/1532379909028466688 -+const DEPENDENCY_TYPES = ["dependencies", "devDependencies", "optionalDependencies"]; -+// const DEPENDENCY_TYPES = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]; - - const getAllDependencies = config => { - const allDependencies = new Map(); -diff --git a/dist/get-dependents-graph.cjs.prod.js b/dist/get-dependents-graph.cjs.prod.js -index 39b2dfe0c15d052f4e342a81626c4012a695867b..dc0fed7320dd1157b3f020c06d46530547070cda 100644 ---- a/dist/get-dependents-graph.cjs.prod.js -+++ b/dist/get-dependents-graph.cjs.prod.js -@@ -14,7 +14,7 @@ function _interopDefault(e) { - - var Range__default = _interopDefault(Range), chalk__default = _interopDefault(chalk); - --const DEPENDENCY_TYPES = [ "dependencies", "devDependencies", "peerDependencies", "optionalDependencies" ], getAllDependencies = config => { -+const DEPENDENCY_TYPES = [ "dependencies", "devDependencies", "optionalDependencies" ], getAllDependencies = config => { - const allDependencies = new Map; - for (const type of DEPENDENCY_TYPES) { - const deps = config[type]; -diff --git a/dist/get-dependents-graph.esm.js b/dist/get-dependents-graph.esm.js -index 5f29582339d3a6a45ff882caf843ecf8a9d6c99d..1e4b7509e48cff7a2c702922ee5a6987e33959e0 100644 ---- a/dist/get-dependents-graph.esm.js -+++ b/dist/get-dependents-graph.esm.js -@@ -2,7 +2,7 @@ import Range from 'semver/classes/range'; - import chalk from 'chalk'; - - // This is a modified version of the graph-getting in bolt --const DEPENDENCY_TYPES = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]; -+const DEPENDENCY_TYPES = ["dependencies", "devDependencies", "optionalDependencies"]; - - const getAllDependencies = config => { - const allDependencies = new Map(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82947ede45..d62156eced 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,12 +47,6 @@ overrides: react-is: 19.1.0 patchedDependencies: - '@changesets/assemble-release-plan': - hash: ismjcgzyajdphoz3q5q3incsia - path: patches/@changesets__assemble-release-plan.patch - '@changesets/get-dependents-graph@1.3.6': - hash: arforfmj6nw2w4znv7h66rwf5y - path: patches/@changesets__get-dependents-graph@1.3.6.patch '@mdx-js/rollup': hash: wjxfd5pqp7spa3snsugst7roxm path: patches/@mdx-js__rollup.patch @@ -73,9 +67,6 @@ importers: '@babel/preset-typescript': specifier: ^7.27.1 version: 7.27.1(@babel/core@7.27.7) - '@changesets/cli': - specifier: ^2.26.2 - version: 2.26.2 '@eslint/compat': specifier: ^2.0.3 version: 2.0.3(eslint@10.1.0(jiti@2.4.2)) @@ -88,9 +79,6 @@ importers: '@playwright/test': specifier: ^1.58.2 version: 1.58.2 - '@remix-run/changelog-github': - specifier: ^0.0.5 - version: 0.0.5 '@types/jest': specifier: ^29.5.4 version: 29.5.12 @@ -1706,7 +1694,7 @@ importers: version: 5.4.5 vite: specifier: ^8.0.0 - version: 8.0.0(@types/node@22.14.0)(esbuild@0.27.4)(jiti@2.4.2)(terser@5.44.1)(tsx@4.19.3)(yaml@2.8.0) + version: 8.0.0(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.4.2)(terser@5.44.1)(tsx@4.19.3)(yaml@2.8.0) playground/rsc-vite: dependencies: @@ -2038,6 +2026,9 @@ importers: '@types/node': specifier: ^22.18.0 version: 22.19.15 + '@types/prompts': + specifier: ^2.4.9 + version: 2.4.9 '@types/semver': specifier: ^7.7.0 version: 7.7.0 @@ -2773,61 +2764,9 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@changesets/apply-release-plan@6.1.4': - resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} - - '@changesets/assemble-release-plan@5.2.4': - resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} - - '@changesets/changelog-git@0.1.14': - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} - - '@changesets/cli@2.26.2': - resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} - hasBin: true - - '@changesets/config@2.3.1': - resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} - - '@changesets/errors@0.1.4': - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} - - '@changesets/get-dependents-graph@1.3.6': - resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} - - '@changesets/get-github-info@0.5.1': - resolution: {integrity: sha512-w2yl3AuG+hFuEEmT6j1zDlg7GQLM/J2UxTmk0uJBMdRqHni4zXGe/vUlPfLom5KfX3cRfHc0hzGvloDPjWFNZw==} - - '@changesets/get-release-plan@3.0.17': - resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} - - '@changesets/get-version-range-type@0.3.2': - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - - '@changesets/git@2.0.0': - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} - - '@changesets/logger@0.0.5': - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} - - '@changesets/parse@0.3.16': - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} - - '@changesets/pre@1.0.14': - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} - - '@changesets/read@0.5.9': - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} - '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - '@changesets/types@5.2.1': - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - - '@changesets/write@0.2.3': - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} - '@cloudflare/kv-asset-handler@0.4.2': resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} @@ -3957,9 +3896,6 @@ packages: '@poppinss/exception@1.2.3': resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@remix-run/changelog-github@0.0.5': - resolution: {integrity: sha512-43tqwUqWqirbv6D9uzo55ASPsCJ61Ein1k/M8qn+Qpros0MmbmuzjLVPmtaxfxfe2ANX0LefLvCD0pAgr1tp4g==} - '@remix-run/node-fetch-server@0.13.0': resolution: {integrity: sha512-1EsNo0ZpgXu/90AWoRZf/oE3RVTUS80tiTUpt+hv5pjtAkw7icN4WskDwz/KdAw5ARbJLMhZBrO1NqThmy/McA==} @@ -4462,9 +4398,6 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - '@types/is-ci@3.0.0': - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - '@types/istanbul-lib-coverage@2.0.4': resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} @@ -4519,9 +4452,6 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - '@types/morgan@1.9.10': resolution: {integrity: sha512-sS4A1zheMvsADRVfT0lYbJ4S9lmsey8Zo2F7cnbYjWHP67Q0AwMYuuzLlkIM2N8gAbb9cubhIVFwcIN2XyYCkA==} @@ -4540,15 +4470,15 @@ packages: '@types/node@22.19.15': resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==} - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - '@types/npmcli__package-json@4.0.4': resolution: {integrity: sha512-6QjlFUSHBmZJWuC08bz1ZCx6tm4t+7+OJXAdvM6tL2pI7n6Bh5SIp/YxQvnOLFf8MzCXs2ijyFgrzaiu1UFBGA==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/prompts@2.4.9': + resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} + '@types/prop-types@15.7.5': resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -4957,10 +4887,6 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -4977,10 +4903,6 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -5063,10 +4985,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} @@ -5209,10 +5127,6 @@ packages: engines: {node: '>=10.0.0'} deprecated: Security vulnerability fixed in 5.2.1, please upgrade - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -5248,9 +5162,6 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - breakword@1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} - browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} @@ -5298,10 +5209,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -5320,10 +5227,6 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -5348,9 +5251,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -5388,9 +5288,6 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -5399,10 +5296,6 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -5413,16 +5306,10 @@ packages: collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -5535,9 +5422,6 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -5568,19 +5452,6 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -5611,9 +5482,6 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -5639,14 +5507,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.0: - resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -5674,9 +5534,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.3: - resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -5826,10 +5683,6 @@ packages: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} @@ -5914,10 +5767,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -6202,13 +6051,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - fast-content-type-parse@2.0.1: resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} @@ -6277,9 +6119,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} @@ -6338,10 +6177,6 @@ packages: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -6474,9 +6309,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -6488,17 +6320,9 @@ packages: resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} hasBin: true - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -6544,9 +6368,6 @@ packages: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -6580,9 +6401,6 @@ packages: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -6697,10 +6515,6 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -6777,10 +6591,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -6823,10 +6633,6 @@ packages: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - is-symbol@1.1.1: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} @@ -6851,10 +6657,6 @@ packages: resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} engines: {node: '>= 0.4'} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -7270,10 +7072,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -7295,9 +7093,6 @@ packages: lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -7315,9 +7110,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -7342,14 +7134,6 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -7445,10 +7229,6 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -7693,10 +7473,6 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -7704,10 +7480,6 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mixme@0.5.4: - resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} - engines: {node: '>= 8.0.0'} - mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -7782,15 +7554,6 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -7805,9 +7568,6 @@ packages: resolution: {integrity: sha512-Sla56CeSLWvPbwud2kogqf5edQtKNXZBtXDDpmOzAgNZjwETbK/Am6PXfs54iZPLBm8K8amZ9XWaCQwGqZmKyQ==} engines: {node: '>=6.6.0'} - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -7887,13 +7647,6 @@ packages: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} @@ -7901,10 +7654,6 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -7921,10 +7670,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - p-map@7.0.3: resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} @@ -8104,10 +7849,6 @@ packages: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} - preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -8117,11 +7858,6 @@ packages: engines: {node: '>=6'} hasBin: true - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - prettier@3.6.2: resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} @@ -8169,9 +7905,6 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -8209,10 +7942,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - random-bytes@1.0.0: resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} engines: {node: '>= 0.8'} @@ -8274,14 +8003,6 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -8409,9 +8130,6 @@ packages: require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -8531,10 +8249,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -8555,9 +8269,6 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} @@ -8584,18 +8295,10 @@ packages: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -8646,11 +8349,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - socks-proxy-agent@8.0.4: resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} engines: {node: '>= 14'} @@ -8692,18 +8390,9 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - - spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} @@ -8749,9 +8438,6 @@ packages: stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -8859,10 +8545,6 @@ packages: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -8889,10 +8571,6 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - terser-webpack-plugin@5.3.15: resolution: {integrity: sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==} engines: {node: '>= 10.13.0'} @@ -8952,10 +8630,6 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -8978,9 +8652,6 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -8995,10 +8666,6 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} @@ -9064,11 +8731,6 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - tty-table@4.1.6: - resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} - engines: {node: '>=8.0.0'} - hasBin: true - turbo-stream@3.1.0: resolution: {integrity: sha512-tVI25WEXl4fckNEmrq70xU1XumxUwEx/FZD5AgEcV8ri7Wvrg2o7GEq8U7htrNx3CajciGm+kDyhRf5JB6t7/A==} @@ -9080,10 +8742,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -9092,14 +8750,6 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -9303,9 +8953,6 @@ packages: typescript: optional: true - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vandium-utils@1.2.0: resolution: {integrity: sha512-yxYUDZz4BNo0CW/z5w4mvclitt5zolY7zjW97i6tTE+sU63cxYs1A6Bl9+jtIQa3+0hkeqY87k+7ptRvmeHe3g==} @@ -9597,9 +9244,6 @@ packages: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} @@ -9607,9 +9251,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} @@ -9653,9 +9294,6 @@ packages: resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} engines: {node: '>=14'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -9671,21 +9309,10 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - which-typed-array@1.1.20: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -9758,16 +9385,10 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -9780,18 +9401,10 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -10771,162 +10384,8 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@changesets/apply-release-plan@6.1.4': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/config': 2.3.1 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 2.0.0 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.7.4 - - '@changesets/assemble-release-plan@5.2.4(patch_hash=ismjcgzyajdphoz3q5q3incsia)': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6(patch_hash=arforfmj6nw2w4znv7h66rwf5y) - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - semver: 7.7.4 - - '@changesets/changelog-git@0.1.14': - dependencies: - '@changesets/types': 5.2.1 - - '@changesets/cli@2.26.2': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4(patch_hash=ismjcgzyajdphoz3q5q3incsia) - '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.1 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6(patch_hash=arforfmj6nw2w4znv7h66rwf5y) - '@changesets/get-release-plan': 3.0.17 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@changesets/write': 0.2.3 - '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 - '@types/semver': 7.7.0 - ansi-colors: 4.1.3 - chalk: 2.4.2 - enquirer: 2.3.6 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - is-ci: 3.0.1 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.7.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.1.6 - - '@changesets/config@2.3.1': - dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6(patch_hash=arforfmj6nw2w4znv7h66rwf5y) - '@changesets/logger': 0.0.5 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - - '@changesets/errors@0.1.4': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@1.3.6(patch_hash=arforfmj6nw2w4znv7h66rwf5y)': - dependencies: - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.7.4 - - '@changesets/get-github-info@0.5.1': - dependencies: - dataloader: 1.4.0 - node-fetch: 2.6.7 - transitivePeerDependencies: - - encoding - - '@changesets/get-release-plan@3.0.17': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/assemble-release-plan': 5.2.4(patch_hash=ismjcgzyajdphoz3q5q3incsia) - '@changesets/config': 2.3.1 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.3.2': {} - - '@changesets/git@2.0.0': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - - '@changesets/logger@0.0.5': - dependencies: - chalk: 2.4.2 - - '@changesets/parse@0.3.16': - dependencies: - '@changesets/types': 5.2.1 - js-yaml: 3.14.1 - - '@changesets/pre@1.0.14': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.5.9': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.16 - '@changesets/types': 5.2.1 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - '@changesets/types@4.1.0': {} - '@changesets/types@5.2.1': {} - - '@changesets/write@0.2.3': - dependencies: - '@babel/runtime': 7.24.1 - '@changesets/types': 5.2.1 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - '@cloudflare/kv-asset-handler@0.4.2': {} '@cloudflare/unenv-preset@2.15.0(unenv@2.0.0-rc.24)(workerd@1.20250705.0)': @@ -11895,15 +11354,6 @@ snapshots: '@poppinss/exception@1.2.3': {} - '@remix-run/changelog-github@0.0.5': - dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-github-info': 0.5.1 - '@changesets/types': 5.2.1 - dotenv: 8.6.0 - transitivePeerDependencies: - - encoding - '@remix-run/node-fetch-server@0.13.0': {} '@remix-run/web-blob@3.1.0': @@ -12345,10 +11795,6 @@ snapshots: '@types/http-errors@2.0.4': {} - '@types/is-ci@3.0.0': - dependencies: - ci-info: 3.8.0 - '@types/istanbul-lib-coverage@2.0.4': {} '@types/istanbul-lib-report@3.0.0': @@ -12406,8 +11852,6 @@ snapshots: '@types/minimatch@5.1.2': {} - '@types/minimist@1.2.2': {} - '@types/morgan@1.9.10': dependencies: '@types/node': 20.19.37 @@ -12428,12 +11872,15 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/normalize-package-data@2.4.1': {} - '@types/npmcli__package-json@4.0.4': {} '@types/parse-json@4.0.2': {} + '@types/prompts@2.4.9': + dependencies: + '@types/node': 22.19.15 + kleur: 3.0.3 + '@types/prop-types@15.7.5': {} '@types/qs@6.9.14': {} @@ -13181,8 +12628,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-colors@4.1.3: {} - ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -13195,10 +12640,6 @@ snapshots: ansi-regex@6.0.1: {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -13303,8 +12744,6 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - arrify@1.0.1: {} - as-table@1.0.55: dependencies: printable-characters: 1.0.42 @@ -13500,10 +12939,6 @@ snapshots: basic-ftp@5.0.5: {} - better-path-resolve@1.0.0: - dependencies: - is-windows: 1.0.2 - binary-extensions@2.3.0: {} bl@4.1.0: @@ -13554,10 +12989,6 @@ snapshots: dependencies: fill-range: 7.0.1 - breakword@1.0.5: - dependencies: - wcwidth: 1.0.1 - browserify-zlib@0.1.4: dependencies: pako: 0.2.9 @@ -13609,12 +13040,6 @@ snapshots: callsites@3.1.0: {} - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - camelcase@5.3.1: {} camelcase@6.3.0: {} @@ -13625,12 +13050,6 @@ snapshots: chai@6.2.2: {} - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - chalk@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -13651,8 +13070,6 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} - cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -13706,12 +13123,6 @@ snapshots: cli-width@4.1.0: {} - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -13724,24 +13135,16 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 - clone@1.0.4: {} - co@4.6.0: {} collapse-white-space@2.1.0: {} collect-v8-coverage@1.0.1: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} combined-stream@1.0.8: @@ -13843,12 +13246,6 @@ snapshots: dependencies: cross-spawn: 7.0.6 - cross-spawn@5.1.0: - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -13881,19 +13278,6 @@ snapshots: csstype@3.2.3: {} - csv-generate@3.4.3: {} - - csv-parse@4.16.3: {} - - csv-stringify@5.6.5: {} - - csv@5.5.3: - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - damerau-levenshtein@1.0.8: {} data-uri-to-buffer@2.0.2: {} @@ -13926,8 +13310,6 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - dataloader@1.4.0: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -13940,13 +13322,6 @@ snapshots: dependencies: ms: 2.1.3 - decamelize-keys@1.1.0: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - decimal.js@10.4.3: {} decode-named-character-reference@1.0.2: @@ -13965,10 +13340,6 @@ snapshots: deepmerge@4.3.1: {} - defaults@1.0.3: - dependencies: - clone: 1.0.4 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -14107,10 +13478,6 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.0 - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - entities@3.0.1: {} entities@4.5.0: {} @@ -14357,8 +13724,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} @@ -14862,14 +14227,6 @@ snapshots: extend@3.0.2: {} - extendable-error@0.1.7: {} - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - fast-content-type-parse@2.0.1: {} fast-deep-equal@3.1.3: {} @@ -14944,11 +14301,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 @@ -15005,12 +14357,6 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.0 - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 @@ -15169,8 +14515,6 @@ snapshots: graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - graphemer@1.4.0: {} graphql@16.9.0: {} @@ -15184,12 +14528,8 @@ snapshots: pumpify: 1.5.1 through2: 2.0.5 - hard-rejection@2.1.0: {} - has-bigints@1.0.2: {} - has-flag@3.0.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -15265,8 +14605,6 @@ snapshots: hexoid@1.0.0: {} - hosted-git-info@2.8.9: {} - html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 @@ -15319,8 +14657,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@1.0.2: {} - human-signals@2.1.0: {} human-signals@8.0.1: {} @@ -15420,10 +14756,6 @@ snapshots: is-callable@1.2.7: {} - is-ci@3.0.1: - dependencies: - ci-info: 3.8.0 - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -15482,8 +14814,6 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - is-plain-obj@2.1.0: {} is-plain-obj@4.1.0: {} @@ -15520,10 +14850,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-subdir@1.2.0: - dependencies: - better-path-resolve: 1.0.0 - is-symbol@1.1.1: dependencies: call-bound: 1.0.4 @@ -15547,8 +14873,6 @@ snapshots: call-bind: 1.0.8 get-intrinsic: 1.3.0 - is-windows@1.0.2: {} - isarray@1.0.0: {} isarray@2.0.5: {} @@ -15925,7 +15249,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.19.37 + '@types/node': 22.19.15 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16153,13 +15477,6 @@ snapshots: load-tsconfig@0.2.5: {} - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - loader-runner@4.3.1: {} locate-path@5.0.0: @@ -16176,8 +15493,6 @@ snapshots: lodash.sortby@4.7.0: {} - lodash.startcase@4.4.0: {} - lodash@4.17.21: {} log-update@5.0.1: @@ -16196,11 +15511,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -16223,10 +15533,6 @@ snapshots: dependencies: tmpl: 1.0.5 - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - markdown-extensions@2.0.0: {} markdown-it@13.0.1: @@ -16458,20 +15764,6 @@ snapshots: media-typer@0.3.0: {} - meow@6.1.1: - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -16950,18 +16242,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minipass@7.1.2: {} - mixme@0.5.4: {} - mkdirp-classic@0.5.3: {} mlly@1.7.4: @@ -17066,10 +16350,6 @@ snapshots: netmask@2.0.2: {} - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - node-int64@0.4.0: {} node-mocks-http@1.14.1: @@ -17091,13 +16371,6 @@ snapshots: node-webtokens@1.0.4: {} - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.10 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} npm-run-path@4.0.1: @@ -17188,10 +16461,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - os-tmpdir@1.0.2: {} - - outdent@0.5.0: {} - outvariant@1.4.3: {} own-keys@1.0.1: @@ -17200,10 +16469,6 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - p-filter@2.1.0: - dependencies: - p-map: 2.1.0 - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -17220,8 +16485,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@2.1.0: {} - p-map@7.0.3: {} p-try@2.2.0: {} @@ -17396,19 +16659,10 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preferred-pm@3.0.3: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - prelude-ls@1.2.1: {} premove@4.0.0: {} - prettier@2.8.8: {} - prettier@3.6.2: {} pretty-format@27.5.1: @@ -17470,8 +16724,6 @@ snapshots: proxy-from-env@1.1.0: {} - pseudomap@1.0.2: {} - psl@1.9.0: {} pump@2.0.1: @@ -17508,8 +16760,6 @@ snapshots: queue-microtask@1.2.3: {} - quick-lru@4.0.1: {} - random-bytes@1.0.0: {} randombytes@2.1.0: @@ -17582,19 +16832,6 @@ snapshots: dependencies: pify: 2.3.0 - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -17755,8 +16992,6 @@ snapshots: require-like@0.1.2: {} - require-main-filename@2.0.0: {} - requires-port@1.0.0: {} reserved-identifiers@1.2.0: {} @@ -17905,8 +17140,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - semver@5.7.1: {} - semver@6.3.1: {} semver@7.7.4: {} @@ -17942,8 +17175,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - set-cookie-parser@2.6.0: {} set-function-length@1.2.2: @@ -18005,16 +17236,10 @@ snapshots: '@img/sharp-win32-ia32': 0.34.5 '@img/sharp-win32-x64': 0.34.5 - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shelljs@0.8.5: @@ -18068,15 +17293,6 @@ snapshots: smart-buffer@4.2.0: {} - smartwrap@2.0.2: - dependencies: - array.prototype.flat: 1.3.3 - breakword: 1.0.5 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 @@ -18123,23 +17339,8 @@ snapshots: space-separated-tokens@2.0.2: {} - spawndamnit@2.0.0: - dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - - spdx-correct@3.1.1: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 - spdx-exceptions@2.3.0: {} - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 - spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.3.0 @@ -18177,10 +17378,6 @@ snapshots: stream-shift@1.0.3: {} - stream-transform@2.1.3: - dependencies: - mixme: 0.5.4 - strict-event-emitter@0.5.1: {} string-length@4.0.2: @@ -18329,10 +17526,6 @@ snapshots: supports-color@10.2.2: {} - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -18362,8 +17555,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - term-size@2.2.1: {} - terser-webpack-plugin@5.3.15(@swc/core@1.11.24)(esbuild@0.27.4)(webpack@5.103.0(@swc/core@1.11.24)(esbuild@0.27.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -18439,10 +17630,6 @@ snapshots: tinyrainbow@3.1.0: {} - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -18465,8 +17652,6 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tr46@0.0.3: {} - tr46@1.0.1: dependencies: punycode: 2.3.0 @@ -18479,8 +17664,6 @@ snapshots: trim-lines@3.0.1: {} - trim-newlines@3.0.1: {} - trough@2.1.0: {} ts-api-utils@2.5.0(typescript@5.4.5): @@ -18547,16 +17730,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tty-table@4.1.6: - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 - turbo-stream@3.1.0: {} type-check@0.4.0: @@ -18565,16 +17738,10 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.13.1: {} - type-fest@0.20.2: {} type-fest@0.21.3: {} - type-fest@0.6.0: {} - - type-fest@0.8.1: {} - type-fest@1.4.0: {} type-fest@4.40.1: {} @@ -18815,11 +17982,6 @@ snapshots: optionalDependencies: typescript: 5.4.5 - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - vandium-utils@1.2.0: {} vandium-utils@2.0.0: {} @@ -19235,10 +18397,6 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.3 - web-encoding@1.1.5: dependencies: util: 0.12.5 @@ -19247,8 +18405,6 @@ snapshots: web-streams-polyfill@3.3.3: {} - webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} webidl-conversions@7.0.0: {} @@ -19368,11 +18524,6 @@ snapshots: tr46: 4.1.1 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -19410,13 +18561,6 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.3 - which-module@2.0.0: {} - - which-pm@2.0.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 @@ -19427,10 +18571,6 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -19506,39 +18646,16 @@ snapshots: xtend@4.0.2: {} - y18n@4.0.3: {} - y18n@5.0.8: {} - yallist@2.1.2: {} - yallist@3.1.1: {} yaml@1.10.2: {} yaml@2.8.0: {} - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@21.1.1: {} - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 - yargs@17.7.2: dependencies: cliui: 8.0.1 diff --git a/scripts/changes/add.ts b/scripts/changes/add.ts new file mode 100644 index 0000000000..3f40580ddb --- /dev/null +++ b/scripts/changes/add.ts @@ -0,0 +1,138 @@ +/** + * Interactive script to create a change file + * + * Usage: + * node scripts/changes/add.ts + */ +import * as fs from "node:fs"; +import * as path from "node:path"; +import prompts from "prompts"; +import { getAllPackageDirNames, getPackagePath } from "../utils/packages.ts"; + +const bumpTypes = ["patch", "minor", "major", "unstable"] as const; + +interface Package { + dirName: string; + name: string; +} + +console.log("\nCreate a change file\n"); + +let packages = getPackages(); + +// Abort cleanly on Ctrl-C +let cancelled = false; +const onCancel = () => { + cancelled = true; + return false; // stops prompts from throwing +}; + +// 1. Select packages +const { selectedPackages } = await prompts( + { + type: "multiselect", + name: "selectedPackages", + message: "Select packages", + choices: packages.map((pkg) => ({ title: pkg.name, value: pkg })), + min: 1, + hint: "Space to select, arrow keys to navigate, Enter to confirm", + }, + { onCancel }, +); + +if (cancelled || !selectedPackages) process.exit(0); + +// 2. Select bump type +const { bump } = await prompts( + { + type: "select", + name: "bump", + message: "Change type", + choices: bumpTypes.map((t) => ({ title: t, value: t })), + initial: 0, + }, + { onCancel }, +); + +if (cancelled || bump == null) process.exit(0); + +// 3. Description +const { description } = await prompts( + { + type: "text", + name: "description", + message: "Description", + validate: (v: string) => + v.trim().length > 0 ? true : "Description cannot be empty", + }, + { onCancel }, +); + +if (cancelled || description == null) process.exit(0); + +// 4. Derive slug and write files +let slug = toSlug(description.trim()); +let fileName = `${bump}.${slug}.md`; + +console.log(); +for (let pkg of selectedPackages as Package[]) { + let changesDir = path.join(getPackagePath(pkg.dirName), ".changes"); + let filePath = path.join(changesDir, fileName); + + if (!fs.existsSync(changesDir)) { + fs.mkdirSync(changesDir, { recursive: true }); + } + + if (fs.existsSync(filePath)) { + console.warn( + `⚠️ File already exists, skipping: packages/${pkg.dirName}/.changes/${fileName}`, + ); + continue; + } + + fs.writeFileSync(filePath, description.trim() + "\n", "utf-8"); + console.log(`✅ ${pkg.name}: packages/${pkg.dirName}/.changes/${fileName}`); +} + +console.log(); + +// --- Utils --- + +function getPackages(): Package[] { + return getAllPackageDirNames() + .map((dirName) => { + let pkgJsonPath = path.join(getPackagePath(dirName), "package.json"); + if (!fs.existsSync(pkgJsonPath)) return null; + let { name } = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8")); + return { dirName, name } as Package; + }) + .filter((p): p is Package => p !== null) + .sort((a, b) => { + const order = (name: string) => { + if (name === "react-router") return 0; + if (name === "react-router-dom") return 1; + if (name.startsWith("@react-router/")) return 2; + return 3; + }; + const oa = order(a.name); + const ob = order(b.name); + if (oa !== ob) return oa - ob; + return a.name.localeCompare(b.name); + }); +} + +/** + * Converts a free-text description into a kebab-case slug of at most 6 words. + * Non-alphanumeric characters (other than spaces) are stripped before slugging. + */ +function toSlug(description: string): string { + return ( + description + .toLowerCase() + .replace(/[^a-z0-9\s]/g, "") + .trim() + .split(/\s+/) + .slice(0, 6) + .join("-") || "change" + ); +} diff --git a/scripts/changes/check-pr.ts b/scripts/changes/check-pr.ts new file mode 100644 index 0000000000..d3c0c095ea --- /dev/null +++ b/scripts/changes/check-pr.ts @@ -0,0 +1,81 @@ +/** + * Checks whether the current PR contains a change file and posts (or + * updates) a sticky comment on the PR with the result. + * + * Usage (called by the changes-file GitHub Actions workflow): + * node scripts/changes/check-pr.ts + * + * Usage: + * node scripts/changes/check-pr.ts + * + * Environment: + * GITHUB_TOKEN - Required. GitHub token with pull-requests:write permission. + */ +import { + createPrComment, + getPrComments, + getPrFiles, + updatePrComment, +} from "../utils/github.ts"; + +const COMMENT_MARKER = ""; + +const COMMENT_FOUND = `${COMMENT_MARKER} +## ✅ Change File Found + +A \`.changes\` file has been found in this PR. Thanks!`; + +const COMMENT_MISSING = `${COMMENT_MARKER} +## 📝 No Change File Found + +This PR doesn't include a change file which is used for automated release notes. +If your change affects users, please add one (or more) and commit the generated file(s). + +\`\`\`sh +pnpm run changes:add +\`\`\` + +> This script requires Node 24+. If you are on a lower version, please [add a file manually](https://reactrouter.com/community/contributing#change-files) + +> Not every PR needs a change file — you can skip this step if the change is internal-only +> (tests, tooling, docs)\ +`; + +// Matches packages/*/.changes/*.md but not .gitkeep +const CHANGE_FILE_RE = /^packages\/[^/]+\/\.changes\/[^/]+\.md$/; + +async function main() { + let arg = process.argv[2]; + let prNumber = arg ? parseInt(arg, 10) : NaN; + if (!arg || isNaN(prNumber)) { + console.error("Usage: node scripts/changes/check-pr.ts "); + process.exit(1); + } + + // Check for change files via the GitHub API — no git fetch needed + let files = await getPrFiles(prNumber); + let found = files.some((f) => CHANGE_FILE_RE.test(f.filename)); + let body = found ? COMMENT_FOUND : COMMENT_MISSING; + console.log(`Change files found: ${found}`); + + // Find existing sticky comment + let comments = await getPrComments(prNumber); + let existing = comments.find( + (c) => + c.user?.login === "github-actions[bot]" && + c.body?.includes(COMMENT_MARKER), + ); + + if (existing) { + console.log(`Updating existing comment #${existing.id}`); + await updatePrComment(existing.id, body); + } else { + console.log("Creating new comment"); + await createPrComment(prNumber, body); + } +} + +main().catch((err) => { + console.error("Error:", err.message); + process.exit(1); +}); diff --git a/scripts/find-release-from-changeset.js b/scripts/find-release-from-changeset.js deleted file mode 100644 index fe923aec47..0000000000 --- a/scripts/find-release-from-changeset.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * - * @param {string | undefined} publishedPackages - * @param {string | undefined} packageVersionToFollow - * @returns {string | undefined} - */ -function findReleaseFromChangeset(publishedPackages, packageVersionToFollow) { - if (!publishedPackages) { - throw new Error("No published packages found"); - } - - let packages = JSON.parse(publishedPackages); - - if (!Array.isArray(packages)) { - throw new Error("Published packages is not an array"); - } - - /** @see https://github.com/changesets/action#outputs */ - /** @type { { name: string; version: string }[] } */ - let typed = packages.filter((pkg) => "name" in pkg && "version" in pkg); - - let found = typed.find((pkg) => pkg.name === packageVersionToFollow); - - if (!found) { - throw new Error( - `${packageVersionToFollow} was not found in the published packages`, - ); - } - - console.log(found.version); - return found.version; -} - -findReleaseFromChangeset( - process.env.PUBLISHED_PACKAGES, - process.env.PACKAGE_VERSION_TO_FOLLOW, -); diff --git a/scripts/finish-stable-release.sh b/scripts/finish-stable-release.sh deleted file mode 100755 index c23bbd32ad..0000000000 --- a/scripts/finish-stable-release.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -set -x -set -e - -CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) -if [[ "${CURRENT_BRANCH}" != "release-next" ]]; then - echo "Error: Script must be run from the 'release-next' branch." - exit 1 -fi - -if [[ -n $(git status --porcelain) ]]; then - echo "Error: Your git working directory is not clean. Please commit or stash your changes." - exit 1 -fi - -git pull -git checkout main -git pull -git merge release-next --no-edit - -if [[ -n $(git status --porcelain) ]]; then - echo "Error: Your git working directory is not clean after the merge to main." - exit 1 -fi - -git push - -git checkout dev -git pull -git merge release-next --no-edit - -if [[ -n $(git status --porcelain) ]]; then - echo "Error: Your git working directory is not clean after the merge to dev." - exit 1 -fi - -git push - -git branch -d release-next - -if [[ -n $(git show-ref refs/heads/changeset-release/release-next) ]]; then - git branch -D changeset-release/release-next -fi - -./scripts/delete-pre-tags.sh -./scripts/delete-nightly-tags.sh - -set +e -set +x \ No newline at end of file diff --git a/scripts/package.json b/scripts/package.json index dd433e0a13..7509e889af 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -8,6 +8,7 @@ }, "devDependencies": { "@types/node": "^22.18.0", + "@types/prompts": "^2.4.9", "@types/semver": "^7.7.0" }, "engines": { diff --git a/scripts/pr-preview.ts b/scripts/pr-preview.ts new file mode 100644 index 0000000000..7a2b219371 --- /dev/null +++ b/scripts/pr-preview.ts @@ -0,0 +1,123 @@ +/** + * PR Preview Script + * + * This script manages preview builds for pull requests by: + * - Creating comments on PRs with installation instructions for preview builds + * - Cleaning up preview branches when PRs are merged or closed + * + * Commands: + * - `comment `: Adds a comment to the specified PR with instructions + * to install the preview build. Updates any existing preview comments. + * - `cleanup `: Deletes the preview branch from the remote repository + * and adds a cleanup notification comment to the PR. + * + * Usage: `node pr-preview.ts ` + */ + +import { parseArgs } from "node:util"; + +import { + createPrComment, + deletePrComment, + getPrComments, + updatePrComment, +} from "./utils/github.ts"; +import { logAndExec } from "./utils/process.ts"; + +const STICKY_MARKER = ""; +const CLEANUP_MARKER = ""; + +const { positionals } = parseArgs({ + allowPositionals: true, + strict: true, +}); + +if (positionals.length !== 3) { + printUsage(); + process.exit(1); +} + +const [command, prNumberString, branch] = positionals; +const prNumber = parseInt(prNumberString, 10); +if (isNaN(prNumber) || prNumber <= 0) { + printUsage(); + throw new Error(`Invalid PR number: ${prNumberString}`); +} + +const commands: Record Promise> = { + comment, + cleanup, +}; + +if (commands[command]) { + await commands[command](); +} else { + printUsage(); + throw new Error(`Unknown command: ${command}`); +} + +function printUsage() { + console.error("Usage: node pr-preview.ts "); + console.error( + " comment - Add preview comment to PR", + ); + console.error( + " cleanup - Delete branch from origin", + ); +} + +async function comment() { + let commentBody = `\ +${STICKY_MARKER} +### Preview Build Available + +Preview builds have been created for this PR. You can install them using: + +\`\`\`sh +# Install react-router +pnpm install "remix-run/react-router#${branch}&path:packages/react-router" + +# Install other packages as necessary +pnpm install "remix-run/react-router#${branch}&path:packages/react-router-node" +pnpm install "remix-run/react-router#${branch}&path:packages/react-router-serve" +pnpm install "remix-run/react-router#${branch}&path:packages/react-router-dev" +\`\`\` + +These preview builds will be updated automatically as you push new commits.`; + + // Get existing comments + let comments = await getPrComments(prNumber); + + // Only add a comment if one doesn't already exist + let stickyComment = comments.find((comment) => + comment.body?.includes(STICKY_MARKER), + ); + if (stickyComment) { + console.log("Updating preview comment on PR"); + await updatePrComment(stickyComment.id, commentBody); + } else { + console.log("Adding preview comment to PR"); + await createPrComment(prNumber, commentBody); + } + + // Delete cleanup comment if it exists + let cleanupComment = comments.find((comment) => + comment.body?.includes(CLEANUP_MARKER), + ); + if (cleanupComment) { + console.log("Deleting existing cleanup comment"); + await deletePrComment(cleanupComment.id); + } +} + +async function cleanup() { + console.log(`Deleted branch: ${branch}`); + await logAndExec(`git push --delete origin ${branch}`); + + let commentBody = `\ +${CLEANUP_MARKER} +The preview branch \`${branch}\` has been deleted now that this PR is merged/closed.`; + + console.log("Adding cleanup comment to PR"); + await createPrComment(prNumber, commentBody); +} diff --git a/scripts/remove-prerelease-changelogs.mjs b/scripts/remove-prerelease-changelogs.mjs deleted file mode 100644 index 7a599ab933..0000000000 --- a/scripts/remove-prerelease-changelogs.mjs +++ /dev/null @@ -1,123 +0,0 @@ -import * as fs from "node:fs"; -import path from "node:path"; -import * as url from "node:url"; -import { getPackagesSync } from "@manypkg/get-packages"; -import remarkParse from "remark-parse"; -import remarkGfm from "remark-gfm"; -import rehypeStringify from "remark-stringify"; -import { unified } from "unified"; -import { remove } from "unist-util-remove"; - -const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); -const rootDir = path.join(__dirname, ".."); - -main(); - -async function main() { - if (isPrereleaseMode()) { - console.log("🚫 Skipping changelog removal in prerelease mode"); - return; - } - await removePreReleaseChangelogs(); - console.log("✅ Removed pre-release changelogs"); -} - -async function removePreReleaseChangelogs() { - let allPackages = getPackagesSync(rootDir).packages; - - /** @type {Promise[]} */ - let processes = []; - for (let pkg of allPackages) { - let changelogPath = path.join(pkg.dir, "CHANGELOG.md"); - if (!fs.existsSync(changelogPath)) { - continue; - } - let changelogFileContents = fs.readFileSync(changelogPath, "utf-8"); - processes.push( - (async () => { - let file = await unified() - // Since we have multiple versions of remark-parse, TS resolves to the - // wrong one - // @ts-expect-error - .use(remarkParse) - .use(remarkGfm) - .use(removePreReleaseSectionFromMarkdown) - // same problem - // @ts-expect-error - .use(rehypeStringify, { - bullet: "-", - emphasis: "_", - listItemIndent: "one", - }) - .process(changelogFileContents); - - let fileContents = file.toString(); - await fs.promises.writeFile(changelogPath, fileContents, "utf-8"); - })(), - ); - } - return Promise.all(processes); -} - -function removePreReleaseSectionFromMarkdown() { - /** - * @param {import('./unist').RootNode} tree - * @returns {Promise} - */ - async function transformer(tree) { - remove( - tree, - /** - * @param {import("./unist").Node & { __REMOVE__?: boolean }} node - * @param {number | null | undefined} index - * @param {*} parent - */ - (node, index, parent) => { - if (node.__REMOVE__ === true) return true; - if ( - node.type === "heading" && - node.depth === 2 && - node.children[0].type === "text" && - isPrereleaseVersion(node.children[0].value) - ) { - if (index == null || parent == null) return false; - - let nextIdx = 1; - let nextNode = parent.children[index + 1]; - let found = false; - - /** @type {import('./unist').FlowNode[]} */ - while (nextNode && !found) { - if (nextNode.type === "heading" && nextNode.depth === 2) { - found = true; - break; - } - nextNode.__REMOVE__ = true; - nextNode = parent.children[++nextIdx + index]; - } - return true; - } - - return false; - }, - ); - } - return transformer; -} - -/** - * @param {string} str - * @returns - */ -function isPrereleaseVersion(str) { - return /^(v?\d+\.){2}\d+-[a-z]+\.\d+$/i.test(str.trim()); -} - -function isPrereleaseMode() { - try { - let prereleaseFilePath = path.join(rootDir, ".changeset", "pre.json"); - return fs.existsSync(prereleaseFilePath); - } catch (err) { - return false; - } -} diff --git a/scripts/start-prerelease.sh b/scripts/start-prerelease.sh deleted file mode 100755 index 9cbb7d891d..0000000000 --- a/scripts/start-prerelease.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -x -set -e - -if [[ -n $(git status --porcelain) ]]; then - echo "Error: Your git working directory is not clean. Please commit or stash your changes." - exit 1 -fi - -git checkout main -git pull -git checkout dev -git pull -git checkout -b release-next -git merge main --no-edit - -if [[ -n $(git status --porcelain) ]]; then - echo "Error: Your git working directory is not clean after merging main ito release-next." - exit 1 -fi - -pnpm changeset pre enter pre -git add .changeset/pre.json -git commit -m "Enter prerelease mode" -git push --set-upstream origin release-next - -set +e -set +x \ No newline at end of file diff --git a/scripts/utils/github.ts b/scripts/utils/github.ts index d2df114c9d..5b5e413933 100644 --- a/scripts/utils/github.ts +++ b/scripts/utils/github.ts @@ -189,6 +189,22 @@ export async function updatePrComment(commentId: number, body: string) { }); } +/** + * Get all files changed in a PR + */ +export async function getPrFiles(prNumber: number) { + let response = await request( + "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", + { + ...requestOptions(), + pull_number: prNumber, + per_page: 100, + }, + ); + + return response.data; +} + /** * Delete a comment on a PR */