diff --git a/.changeset/config.json b/.changeset/config.json index 8e1dec4247..00703cce3a 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -10,7 +10,13 @@ "react-router", "react-router-dom", "react-router-dom-v5-compat", - "react-router-native" + "react-router-native", + "@react-router/dev", + "@react-router/express", + "@react-router/node", + "@react-router/serve", + "@react-router/server-runtime", + "@react-router/testing" ] ], "linked": [], @@ -18,5 +24,8 @@ "baseBranch": "dev", "updateInternalDependencies": "patch", "bumpVersionsWithWorkspaceProtocolOnly": true, - "ignore": [] + "ignore": ["integration", "integration-*"], + "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { + "onlyUpdatePeerDependentsWhenOutOfRange": true + } } diff --git a/.github/workflows/release-experimental.yml b/.github/workflows/release-experimental.yml index d344598cee..4e6feaa4d4 100644 --- a/.github/workflows/release-experimental.yml +++ b/.github/workflows/release-experimental.yml @@ -1,8 +1,10 @@ -name: ๐Ÿš€ Release (experimental) +name: ๐Ÿงช Experimental Release + on: - push: - tags: - - "v0.0.0-experimental*" + workflow_dispatch: + inputs: + branch: + required: true concurrency: ${{ github.workflow }}-${{ github.ref }} @@ -10,16 +12,17 @@ env: CI: true jobs: - release: - name: ๐Ÿง‘โ€๐Ÿ”ฌ Experimental Release - if: | - github.repository == 'remix-run/react-router' && - contains(github.ref, 'experimental') + experimental: + name: ๐Ÿงช Experimental Release + if: github.repository == 'remix-run/react-router' runs-on: ubuntu-latest steps: - name: โฌ‡๏ธ Checkout repo uses: actions/checkout@v4 with: + ref: ${{ github.event.inputs.branch }} + # checkout using a custom token so that we can push later on + token: ${{ secrets.NIGHTLY_PAT }} fetch-depth: 0 - name: ๐Ÿ“ฆ Setup pnpm @@ -34,6 +37,16 @@ jobs: - name: ๐Ÿ“ฅ Install deps run: pnpm install --frozen-lockfile + - name: โคด๏ธ Update version + run: | + git config --local user.email "hello@remix.run" + git config --local user.name "Remix Run Bot" + SHORT_SHA=$(git rev-parse --short HEAD) + NEXT_VERSION=0.0.0-experimental-${SHORT_SHA} + git checkout -b experimental/${NEXT_VERSION} + pnpm run version ${NEXT_VERSION} + git push origin --tags + - name: ๐Ÿ— Build run: pnpm build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 11e860cdf4..acbd189f93 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,7 +53,7 @@ jobs: id: changesets uses: changesets/action@v1 with: - version: pnpm run version + version: pnpm run changeset:version commit: "chore: Update version for release" title: "chore: Update version for release" publish: pnpm run release diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 36606785a7..e094395bee 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -67,10 +67,12 @@ Hotfix releases follow the same process as standard releases above, but the `rel ### Experimental releases -Experimental releases and hot-fixes do not need to be branched off of `dev`. Experimental releases can be branched from anywhere as they are not intended for general use. - -- Create a new branch for the release: `git checkout -b release-experimental` -- Make whatever changes you need and commit them: `git add . && git commit "experimental changes!"` -- Update version numbers and create a release tag: `pnpm run version:experimental` -- Push to GitHub: `git push origin --follow-tags` -- The CI workflow should automatically trigger from the experimental tag to publish the release to npm +Experimental releases use a [manually-triggered Github Actions workflow](./.github/workflows/release-experimental.yml) and can be built from any existing branch. to build and publish an experimental release: + +- Commit your changes to a branch +- Push the branch to github +- Go to the Github Actions UI for the [release-experimental.yml workflow](https://github.com/remix-run/react-router/actions/workflows/release-experimental.yml) +- Click the `Run workflow` dropdown +- Leave the `Use workflow from` dropdown as `main` +- Enter your feature branch in the `branch` input +- Click the `Run workflow` button diff --git a/docs/guides/contributing.md b/docs/guides/contributing.md index 1e639c987f..dc8970a44b 100644 --- a/docs/guides/contributing.md +++ b/docs/guides/contributing.md @@ -133,7 +133,7 @@ git checkout -b release/v6.1.0 # Create a new tag and update version references throughout the # codebase. -pnpm run version minor # | "patch" | "major" +pnpm run version [nextVersion] # Push the release branch along with the new release tag. git push origin release/v6.1.0 --follow-tags @@ -164,7 +164,7 @@ pnpm install && pnpm build && pnpm test # Assuming the tests pass, create the release tag and update # version references throughout the codebase. -pnpm run version patch +pnpm run version [nextVersion] # Push changes along with the new release tag. git push origin main --follow-tags diff --git a/package.json b/package.json index 1a4a50694b..c8190d79c9 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,9 @@ "posttest:integration": "pnpm clean:integration", "playwright:integration": "playwright test --config ./integration/playwright.config.ts", "changeset": "changeset", - "version": "changeset version && node ./scripts/remove-prerelease-changelogs.mjs", + "changeset:version": "changeset version && node ./scripts/remove-prerelease-changelogs.mjs", "publish": "node scripts/publish.js", - "version:experimental": "node ./scripts/version experimental", + "version": "node ./scripts/version", "watch": "rollup -c -w" }, "jest": { @@ -99,7 +99,6 @@ "jest-environment-jsdom": "^29.6.2", "jsonfile": "^6.1.0", "prettier": "^2.8.8", - "prompt-confirm": "^2.0.4", "react": "^18.2.0", "react-dom": "^18.2.0", "react-test-renderer": "^18.2.0", @@ -144,7 +143,8 @@ }, "pnpm": { "patchedDependencies": { - "@changesets/get-dependents-graph@1.3.6": "patches/@changesets__get-dependents-graph@1.3.6.patch" + "@changesets/get-dependents-graph@1.3.6": "patches/@changesets__get-dependents-graph@1.3.6.patch", + "@changesets/assemble-release-plan@5.2.4": "patches/@changesets__assemble-release-plan@5.2.4.patch" } } } diff --git a/patches/@changesets__assemble-release-plan@5.2.4.patch b/patches/@changesets__assemble-release-plan@5.2.4.patch new file mode 100644 index 0000000000..dae69c7198 --- /dev/null +++ b/patches/@changesets__assemble-release-plan@5.2.4.patch @@ -0,0 +1,39 @@ +diff --git a/dist/assemble-release-plan.cjs.dev.js b/dist/assemble-release-plan.cjs.dev.js +index e1376ca756d69816f8c79637ee7b45161f092167..d9dc4c17cc90bc31794956a603f0baf6c5fee0d9 100644 +--- a/dist/assemble-release-plan.cjs.dev.js ++++ b/dist/assemble-release-plan.cjs.dev.js +@@ -257,7 +257,7 @@ function shouldBumpMajor({ + // 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. ++ !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..b3ce3ce688c16cafe92fc16569a7850ea644b904 100644 +--- a/dist/assemble-release-plan.cjs.prod.js ++++ b/dist/assemble-release-plan.cjs.prod.js +@@ -130,7 +130,7 @@ 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); ++ 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..d183129242ce8582ce2e7a40d507b46f51583427 100644 +--- a/dist/assemble-release-plan.esm.js ++++ b/dist/assemble-release-plan.esm.js +@@ -246,7 +246,7 @@ function shouldBumpMajor({ + // 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. ++ !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/pnpm-lock.yaml b/pnpm-lock.yaml index 12a84aa156..2558016711 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ overrides: jsdom: 22.1.0 patchedDependencies: + '@changesets/assemble-release-plan@5.2.4': + hash: xlpxbvc6gfcmwbnthfqwsopnoi + path: patches/@changesets__assemble-release-plan@5.2.4.patch '@changesets/get-dependents-graph@1.3.6': hash: arforfmj6nw2w4znv7h66rwf5y path: patches/@changesets__get-dependents-graph@1.3.6.patch @@ -201,9 +204,6 @@ importers: prettier: specifier: ^2.8.8 version: 2.8.8 - prompt-confirm: - specifier: ^2.0.4 - version: 2.0.4 react: specifier: ^18.2.0 version: 18.2.0 @@ -3668,7 +3668,7 @@ packages: semver: 7.5.4 dev: false - /@changesets/assemble-release-plan@5.2.4: + /@changesets/assemble-release-plan@5.2.4(patch_hash=xlpxbvc6gfcmwbnthfqwsopnoi): resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} dependencies: '@babel/runtime': 7.22.6 @@ -3678,6 +3678,7 @@ packages: '@manypkg/get-packages': 1.1.3 semver: 7.5.4 dev: false + patched: true /@changesets/changelog-git@0.1.14: resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} @@ -3691,7 +3692,7 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4 + '@changesets/assemble-release-plan': 5.2.4(patch_hash=xlpxbvc6gfcmwbnthfqwsopnoi) '@changesets/changelog-git': 0.1.14 '@changesets/config': 2.3.1 '@changesets/errors': 0.1.4 @@ -3766,7 +3767,7 @@ packages: resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} dependencies: '@babel/runtime': 7.22.6 - '@changesets/assemble-release-plan': 5.2.4 + '@changesets/assemble-release-plan': 5.2.4(patch_hash=xlpxbvc6gfcmwbnthfqwsopnoi) '@changesets/config': 2.3.1 '@changesets/pre': 1.0.14 '@changesets/read': 0.5.9 @@ -6401,135 +6402,11 @@ packages: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} dev: true - /ansi-bgblack@0.1.1: - resolution: {integrity: sha512-tp8M/NCmSr6/skdteeo9UgJ2G1rG88X3ZVNZWXUxFw4Wh0PAGaAAWQS61sfBt/1QNcwMTY3EBKOMPujwioJLaw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bgblue@0.1.1: - resolution: {integrity: sha512-R8JmX2Xv3+ichUQE99oL+LvjsyK+CDWo/BtVb4QUz3hOfmf2bdEmiDot3fQcpn2WAHW3toSRdjSLm6bgtWRDlA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bgcyan@0.1.1: - resolution: {integrity: sha512-6SByK9q2H978bmqzuzA5NPT1lRDXl3ODLz/DjC4URO5f/HqK7dnRKfoO/xQLx/makOz7zWIbRf6+Uf7bmaPSkQ==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bggreen@0.1.1: - resolution: {integrity: sha512-8TRtOKmIPOuxjpklrkhUbqD2NnVb4WZQuIjXrT+TGKFKzl7NrL7wuNvEap3leMt2kQaCngIN1ZzazSbJNzF+Aw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bgmagenta@0.1.1: - resolution: {integrity: sha512-UZYhobiGAlV4NiwOlKAKbkCyxOl1PPZNvdIdl/Ce5by45vwiyNdBetwHk/AjIpo1Ji9z+eE29PUBAjjfVmz5SA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bgred@0.1.1: - resolution: {integrity: sha512-BpPHMnYmRBhcjY5knRWKjQmPDPvYU7wrgBSW34xj7JCH9+a/SEIV7+oSYVOgMFopRIadOz9Qm4zIy+mEBvUOPA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bgwhite@0.1.1: - resolution: {integrity: sha512-KIF19t+HOYOorUnHTOhZpeZ3bJsjzStBG2hSGM0WZ8YQQe4c7lj9CtwnucscJDPrNwfdz6GBF+pFkVfvHBq6uw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bgyellow@0.1.1: - resolution: {integrity: sha512-WyRoOFSIvOeM7e7YdlSjfAV82Z6K1+VUVbygIQ7C/VGzWYuO/d30F0PG7oXeo4uSvSywR0ozixDQvtXJEorq4Q==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-black@0.1.1: - resolution: {integrity: sha512-hl7re02lWus7lFOUG6zexhoF5gssAfG5whyr/fOWK9hxNjUFLTjhbU/b4UHWOh2dbJu9/STSUv+80uWYzYkbTQ==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-blue@0.1.1: - resolution: {integrity: sha512-8Um59dYNDdQyoczlf49RgWLzYgC2H/28W3JAIyOAU/+WkMcfZmaznm+0i1ikrE0jME6Ypk9CJ9CY2+vxbPs7Fg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-bold@0.1.1: - resolution: {integrity: sha512-wWKwcViX1E28U6FohtWOP4sHFyArELHJ2p7+3BzbibqJiuISeskq6t7JnrLisUngMF5zMhgmXVw8Equjzz9OlA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-colors@0.2.0: - resolution: {integrity: sha512-ScRNUT0TovnYw6+Xo3iKh6G+VXDw2Ds7ZRnMIuKBgHY02DgvT2T2K22/tc/916Fi0W/5Z1RzDaHQwnp75hqdbA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-bgblack: 0.1.1 - ansi-bgblue: 0.1.1 - ansi-bgcyan: 0.1.1 - ansi-bggreen: 0.1.1 - ansi-bgmagenta: 0.1.1 - ansi-bgred: 0.1.1 - ansi-bgwhite: 0.1.1 - ansi-bgyellow: 0.1.1 - ansi-black: 0.1.1 - ansi-blue: 0.1.1 - ansi-bold: 0.1.1 - ansi-cyan: 0.1.1 - ansi-dim: 0.1.1 - ansi-gray: 0.1.1 - ansi-green: 0.1.1 - ansi-grey: 0.1.1 - ansi-hidden: 0.1.1 - ansi-inverse: 0.1.1 - ansi-italic: 0.1.1 - ansi-magenta: 0.1.1 - ansi-red: 0.1.1 - ansi-reset: 0.1.1 - ansi-strikethrough: 0.1.1 - ansi-underline: 0.1.1 - ansi-white: 0.1.1 - ansi-yellow: 0.1.1 - lazy-cache: 2.0.2 - dev: false - /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: false - /ansi-cyan@0.1.1: - resolution: {integrity: sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-dim@0.1.1: - resolution: {integrity: sha512-zAfb1fokXsq4BoZBkL0eK+6MfFctbzX3R4UMcoWrL1n2WHewFKentTvOZv2P11u6P4NtW/V47hVjaN7fJiefOg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -6545,67 +6422,6 @@ packages: strip-ansi: 5.2.0 dev: true - /ansi-gray@0.1.1: - resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-green@0.1.1: - resolution: {integrity: sha512-WJ70OI4jCaMy52vGa/ypFSKFb/TrYNPaQ2xco5nUwE0C5H8piume/uAZNNdXXiMQ6DbRmiE7l8oNBHu05ZKkrw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-grey@0.1.1: - resolution: {integrity: sha512-+J1nM4lC+whSvf3T4jsp1KR+C63lypb+VkkwtLQMc1Dlt+nOvdZpFT0wwFTYoSlSwCcLUAaOpHF6kPkYpSa24A==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-hidden@0.1.1: - resolution: {integrity: sha512-8gB1bo9ym9qZ/Obvrse1flRsfp2RE+40B23DhQcKxY+GSeaOJblLnzBOxzvmLTWbi5jNON3as7wd9rC0fNK73Q==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-inverse@0.1.1: - resolution: {integrity: sha512-Kq8Z0dBRhQhDMN/Rso1Nu9niwiTsRkJncfJZXiyj7ApbfJrGrrubHXqXI37feJZkYcIx6SlTBdNCeK0OQ6X6ag==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-italic@0.1.1: - resolution: {integrity: sha512-jreCxifSAqbaBvcibeQxcwhQDbEj7gF69XnpA6x83qbECEBaRBD1epqskrmov1z4B+zzQuEdwbWxgzvhKa+PkA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-magenta@0.1.1: - resolution: {integrity: sha512-A1Giu+HRwyWuiXKyXPw2AhG1yWZjNHWO+5mpt+P+VWYkmGRpLPry0O5gmlJQEvpjNpl4RjFV7DJQ4iozWOmkbQ==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-red@0.1.1: - resolution: {integrity: sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - dev: false - /ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -6619,20 +6435,6 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - /ansi-reset@0.1.1: - resolution: {integrity: sha512-n+D0qD3B+h/lP0dSwXX1SZMoXufdUVotLMwUuvXa50LtBAh3f+WV8b5nFMfLL/hgoPBUt+rG/pqqzF8krlZKcw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-strikethrough@0.1.1: - resolution: {integrity: sha512-gWkLPDvHH2pC9YEKqp8dIl0mg3sRglMPvioqGDIOXiwxjxUwIJ1gF86E2o4R5yLNh8IAkwHbaMtASkJfkQ2hIA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -6653,32 +6455,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - /ansi-underline@0.1.1: - resolution: {integrity: sha512-D+Bzwio/0/a0Fu5vJzrIT6bFk43TW46vXfSvzysOTEHcXOAUJTVMHWDbELIzGU4AVxVw2rCTb7YyWS4my2cSKQ==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-white@0.1.1: - resolution: {integrity: sha512-DJHaF2SRzBb9wZBgqIJNjjTa7JUJTO98sHeTS1sDopyKKRopL1KpaJ20R6W2f/ZGras8bYyIZDtNwYOVXNgNFg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-wrap@0.1.0: - resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} - engines: {node: '>=0.10.0'} - dev: false - - /ansi-yellow@0.1.1: - resolution: {integrity: sha512-6E3D4BQLXHLl3c/NwirWVZ+BCkMq2qsYxdeAGGOijKrx09FaqU+HktFL6QwAwNvgJiMLnv6AQ2C1gFZx0h1CBg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -6718,13 +6494,7 @@ packages: /arr-flatten@1.1.0: resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} engines: {node: '>=0.10.0'} - - /arr-swap@1.0.1: - resolution: {integrity: sha512-SxBKd/By8+AaREcv/ZhFqmapfpqK4kyaQkUHwmJjlczI5ZtuuT5gofKHlCrSJ4oR7zXezFhv+7zsnLEdg9uGgQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - dev: false + dev: true /arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} @@ -7630,17 +7400,6 @@ packages: parse5-htmlparser2-tree-adapter: 7.0.0 dev: false - /choices-separator@2.0.0: - resolution: {integrity: sha512-BCKlzRcP2V6X+85TSKn09oGZkO2zK2zytGyZeHvM2s+kv/ydAzJtsc+rZqYRWNlojIBfkOnPxgKXrBefTFZbTQ==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-dim: 0.1.1 - debug: 2.6.9 - strip-color: 0.1.0 - transitivePeerDependencies: - - supports-color - dev: false - /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -7705,16 +7464,6 @@ packages: wrap-ansi: 7.0.0 dev: false - /clone-deep@1.0.0: - resolution: {integrity: sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==} - engines: {node: '>=0.10.0'} - dependencies: - for-own: 1.0.0 - is-plain-object: 2.0.4 - kind-of: 5.1.0 - shallow-clone: 1.0.0 - dev: false - /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -7722,6 +7471,7 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 + dev: true /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} @@ -7746,6 +7496,7 @@ packages: dependencies: map-visit: 1.0.0 object-visit: 1.0.1 + dev: true /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -7798,6 +7549,7 @@ packages: /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} @@ -7878,6 +7630,7 @@ packages: /copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} + dev: true /core-js-compat@3.32.0: resolution: {integrity: sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==} @@ -8183,12 +7936,14 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-descriptor: 0.1.6 + dev: true /define-property@1.0.0: resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.2 + dev: true /define-property@2.0.2: resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} @@ -8196,6 +7951,7 @@ packages: dependencies: is-descriptor: 1.0.2 isobject: 3.0.1 + dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -8407,11 +8163,6 @@ packages: stackframe: 1.3.4 dev: true - /error-symbol@0.1.0: - resolution: {integrity: sha512-VyjaKxUmeDX/m2lxm/aknsJ1GWDWUO2Ze2Ad8S1Pb9dykAm9TjSKp5CjrNyltYqZ5W/PO6TInAmO2/BfwMyT1g==} - engines: {node: '>=0.10.0'} - dev: false - /errorhandler@1.5.1: resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} engines: {node: '>= 0.8'} @@ -9285,6 +9036,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 + dev: true /extend-shallow@3.0.2: resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} @@ -9514,21 +9266,10 @@ packages: is-callable: 1.2.7 dev: false - /for-in@0.1.8: - resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} - engines: {node: '>=0.10.0'} - dev: false - /for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} - - /for-own@1.0.0: - resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - dev: false + dev: true /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} @@ -10194,11 +9935,6 @@ packages: once: 1.4.0 wrappy: 1.0.2 - /info-symbol@0.1.0: - resolution: {integrity: sha512-qkc9wjLDQ+dYYZnY5uJXGNNHyZ0UOMDUnhvy0SEZGVVYmQ5s4i8cPAin2MbU6OxJgi8dfj/AnwqPx0CJE6+Lsw==} - engines: {node: '>=0.10.0'} - dev: false - /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -10253,6 +9989,7 @@ packages: deprecated: Please upgrade to v0.1.7 dependencies: kind-of: 3.2.2 + dev: true /is-accessor-descriptor@1.0.0: resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} @@ -10260,6 +9997,7 @@ packages: deprecated: Please upgrade to v1.0.1 dependencies: kind-of: 6.0.3 + dev: true /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -10320,6 +10058,7 @@ packages: /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} @@ -10355,6 +10094,7 @@ packages: deprecated: Please upgrade to v0.1.5 dependencies: kind-of: 3.2.2 + dev: true /is-data-descriptor@1.0.0: resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} @@ -10362,6 +10102,7 @@ packages: deprecated: Please upgrade to v1.0.1 dependencies: kind-of: 6.0.3 + dev: true /is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} @@ -10392,6 +10133,7 @@ packages: is-accessor-descriptor: 0.1.6 is-data-descriptor: 0.1.4 kind-of: 5.1.0 + dev: true /is-descriptor@1.0.2: resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} @@ -10400,6 +10142,7 @@ packages: is-accessor-descriptor: 1.0.0 is-data-descriptor: 1.0.0 kind-of: 6.0.3 + dev: true /is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} @@ -10409,6 +10152,7 @@ packages: /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} + dev: true /is-extendable@1.0.1: resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} @@ -10430,6 +10174,7 @@ packages: /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} + dev: true /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -10498,11 +10243,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - - /is-number@6.0.0: - resolution: {integrity: sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==} - engines: {node: '>=0.10.0'} - dev: false + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -10527,6 +10268,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true /is-plain-object@3.0.1: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} @@ -10679,6 +10421,7 @@ packages: /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + dev: true /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} @@ -11527,6 +11270,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 + dev: true /kind-of@4.0.0: resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} @@ -11538,6 +11282,7 @@ packages: /kind-of@5.1.0: resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} engines: {node: '>=0.10.0'} + dev: true /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -11558,11 +11303,6 @@ packages: engines: {node: '>=6'} dev: false - /koalas@1.0.2: - resolution: {integrity: sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==} - engines: {node: '>=0.10.0'} - dev: false - /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: false @@ -11574,13 +11314,6 @@ packages: language-subtag-registry: 0.3.22 dev: false - /lazy-cache@2.0.2: - resolution: {integrity: sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==} - engines: {node: '>=0.10.0'} - dependencies: - set-getter: 0.1.1 - dev: false - /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -11676,14 +11409,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-ok@0.1.1: - resolution: {integrity: sha512-cc8VrkS6C+9TFuYAwuHpshrcrGRAv7d0tUJ0GdM72ZBlKXtlgjUZF84O+OhQUdiVHoF7U/nVxwpjOdwUJ8d3Vg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-green: 0.1.1 - success-symbol: 0.1.0 - dev: false - /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -11692,19 +11417,6 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-utils@0.2.1: - resolution: {integrity: sha512-udyegKoMz9eGfpKAX//Khy7sVAZ8b1F7oLDnepZv/1/y8xTvsyPgqQrM94eG8V0vcc2BieYI2kVW4+aa6m+8Qw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-colors: 0.2.0 - error-symbol: 0.1.0 - info-symbol: 0.1.0 - log-ok: 0.1.1 - success-symbol: 0.1.0 - time-stamp: 1.1.0 - warning-symbol: 0.1.0 - dev: false - /logkitty@0.7.1: resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} hasBin: true @@ -11808,6 +11520,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: object-visit: 1.0.1 + dev: true /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -13010,14 +12723,6 @@ packages: is-extendable: 1.0.1 dev: true - /mixin-object@2.0.1: - resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 0.1.8 - is-extendable: 0.1.1 - dev: false - /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} @@ -13077,10 +12782,6 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true - /mute-stream@0.0.7: - resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} - dev: false - /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -13315,6 +13016,7 @@ packages: copy-descriptor: 0.1.1 define-property: 0.2.5 kind-of: 3.2.2 + dev: true /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} @@ -13337,6 +13039,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -13759,11 +13462,6 @@ packages: xmlbuilder: 15.1.1 dev: true - /pointer-symbol@1.0.0: - resolution: {integrity: sha512-pozTTFO3kG9HQWXCSTJkCgq4fBF8lUQf+5bLddTEW6v4zdjQhcBVfLmKzABEMJMA7s8jhzi0sgANIwdrf4kq+A==} - engines: {node: '>=4'} - dev: false - /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -13918,81 +13616,6 @@ packages: asap: 2.0.6 dev: true - /prompt-actions@3.0.2: - resolution: {integrity: sha512-dhz2Fl7vK+LPpmnQ/S/eSut4BnH4NZDLyddHKi5uTU/2PDn3grEMGkgsll16V5RpVUh/yxdiam0xsM0RD4xvtg==} - engines: {node: '>=4'} - dependencies: - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - dev: false - - /prompt-base@4.1.0: - resolution: {integrity: sha512-svGzgLUKZoqomz9SGMkf1hBG8Wl3K7JGuRCXc/Pv7xw8239hhaTBXrmjt7EXA9P/QZzdyT8uNWt9F/iJTXq75g==} - engines: {node: '>=5.0'} - dependencies: - component-emitter: 1.3.0 - debug: 3.2.7 - koalas: 1.0.2 - log-utils: 0.2.1 - prompt-actions: 3.0.2 - prompt-question: 5.0.2 - readline-ui: 2.2.3 - readline-utils: 2.2.3 - static-extend: 0.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /prompt-choices@4.1.0: - resolution: {integrity: sha512-ZNYLv6rW9z9n0WdwCkEuS+w5nUAGzRgtRt6GQ5aFNFz6MIcU7nHFlHOwZtzy7RQBk80KzUGPSRQphvMiQzB8pg==} - engines: {node: '>=4.0.0'} - dependencies: - arr-flatten: 1.1.0 - arr-swap: 1.0.1 - choices-separator: 2.0.0 - clone-deep: 4.0.1 - collection-visit: 1.0.0 - define-property: 2.0.2 - is-number: 6.0.0 - kind-of: 6.0.3 - koalas: 1.0.2 - log-utils: 0.2.1 - pointer-symbol: 1.0.0 - radio-symbol: 2.0.0 - set-value: 3.0.3 - strip-color: 0.1.0 - terminal-paginator: 2.0.2 - toggle-array: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /prompt-confirm@2.0.4: - resolution: {integrity: sha512-X5lzbC8/kMNHdPOqQPfMKpH4VV2f7v2OTRJoN69ZYBirSwTeQaf9ZhmzPEO9ybMA0YV2Pha5MV27u2/U4ahWfg==} - engines: {node: '>=6.0'} - dependencies: - ansi-cyan: 0.1.1 - prompt-base: 4.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /prompt-question@5.0.2: - resolution: {integrity: sha512-wreaLbbu8f5+7zXds199uiT11Ojp59Z4iBi6hONlSLtsKGTvL2UY8VglcxQ3t/X4qWIxsNCg6aT4O8keO65v6Q==} - engines: {node: '>=4.0.0'} - dependencies: - clone-deep: 1.0.0 - debug: 3.2.7 - define-property: 1.0.0 - isobject: 3.0.1 - kind-of: 5.1.0 - koalas: 1.0.2 - prompt-choices: 4.1.0 - transitivePeerDependencies: - - supports-color - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -14084,15 +13707,6 @@ packages: engines: {node: '>=8'} dev: false - /radio-symbol@2.0.0: - resolution: {integrity: sha512-fpuWhwGD4XG1BfUWKXhCqdguCXzGi/DDb6RzmAGZo9R75enjlx0l+ZhHF93KNG7iNpT0Vi7wEqbf8ZErbe+JtQ==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-gray: 0.1.1 - ansi-green: 0.1.1 - is-windows: 1.0.2 - dev: false - /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -14344,33 +13958,6 @@ packages: dependencies: picomatch: 2.3.1 - /readline-ui@2.2.3: - resolution: {integrity: sha512-ix7jz0PxqQqcIuq3yQTHv1TOhlD2IHO74aNO+lSuXsRYm1d+pdyup1yF3zKyLK1wWZrVNGjkzw5tUegO2IDy+A==} - engines: {node: '>=4.0'} - dependencies: - component-emitter: 1.3.0 - debug: 2.6.9 - readline-utils: 2.2.3 - string-width: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /readline-utils@2.2.3: - resolution: {integrity: sha512-cjFo7R7e7AaFOz2JLQ4EgsHh4+l7mw29Eu3DAEPgGeWbYQFKqyxWsL61/McC6b2oJAvn14Ea8eUms9o8ZFC1iQ==} - engines: {node: '>=4.0'} - dependencies: - arr-flatten: 1.1.0 - extend-shallow: 2.0.1 - is-buffer: 1.1.6 - is-number: 3.0.0 - is-windows: 1.0.2 - koalas: 1.0.2 - mute-stream: 0.0.7 - strip-color: 0.1.0 - window-size: 1.1.1 - dev: false - /readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} dev: true @@ -14945,13 +14532,6 @@ packages: has-property-descriptors: 1.0.2 dev: false - /set-getter@0.1.1: - resolution: {integrity: sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==} - engines: {node: '>=0.10.0'} - dependencies: - to-object-path: 0.3.0 - dev: false - /set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} @@ -14962,30 +14542,15 @@ packages: split-string: 3.1.0 dev: true - /set-value@3.0.3: - resolution: {integrity: sha512-Xsn/XSatoVOGBbp5hs3UylFDs5Bi9i+ArpVJKdHPniZHoEgRniXTqHWrWrGQ0PbEClVT6WtfnBwR8CAHC9sveg==} - engines: {node: '>=6.0'} - dependencies: - is-plain-object: 2.0.4 - dev: false - /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - /shallow-clone@1.0.0: - resolution: {integrity: sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - kind-of: 5.1.0 - mixin-object: 2.0.1 - dev: false - /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} dependencies: kind-of: 6.0.3 + dev: true /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -15227,6 +14792,7 @@ packages: dependencies: define-property: 0.2.5 object-copy: 0.1.0 + dev: true /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} @@ -15267,14 +14833,6 @@ packages: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: false - /string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - dev: false - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -15389,13 +14947,6 @@ packages: character-entities-legacy: 3.0.0 dev: false - /strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - dependencies: - ansi-regex: 3.0.1 - dev: false - /strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -15425,11 +14976,6 @@ packages: engines: {node: '>=8'} dev: false - /strip-color@0.1.0: - resolution: {integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==} - engines: {node: '>=0.10.0'} - dev: false - /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} @@ -15462,11 +15008,6 @@ packages: inline-style-parser: 0.2.3 dev: false - /success-symbol@0.1.0: - resolution: {integrity: sha512-7S6uOTxPklNGxOSbDIg4KlVLBQw1UiGVyfCUYgYxrZUKRblUkmGj7r8xlfQoFudvqLv6Ap5gd76/IIFfI9JG2A==} - engines: {node: '>=0.10.0'} - dev: false - /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -15587,17 +15128,6 @@ packages: engines: {node: '>=8'} dev: false - /terminal-paginator@2.0.2: - resolution: {integrity: sha512-IZMT5ECF9p4s+sNCV8uvZSW9E1+9zy9Ji9xz2oee8Jfo7hUFpauyjxkhfRcIH6Lu3Wdepv5D1kVRc8Hx74/LfQ==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - extend-shallow: 2.0.1 - log-utils: 0.2.1 - transitivePeerDependencies: - - supports-color - dev: false - /terser@5.15.0: resolution: {integrity: sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==} engines: {node: '>=10'} @@ -15642,11 +15172,6 @@ packages: readable-stream: 2.3.7 xtend: 4.0.2 - /time-stamp@1.1.0: - resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} - engines: {node: '>=0.10.0'} - dev: false - /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -15673,6 +15198,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 + dev: true /to-regex-range@2.1.1: resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} @@ -15698,13 +15224,6 @@ packages: safe-regex: 1.1.0 dev: true - /toggle-array@1.0.1: - resolution: {integrity: sha512-TZXgboKpD5Iu0Goi8hRXuJpE06Pbo+bies4I4jnTBhlRRgyen9c37nMylnquK/ZPKXXOeh1mJ14p9QdKp+9v7A==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -16478,11 +15997,6 @@ packages: dependencies: makeerror: 1.0.12 - /warning-symbol@0.1.0: - resolution: {integrity: sha512-1S0lwbHo3kNUKA4VomBAhqn4DPjQkIKSdbOin5K7EFUQNwyIKx+wZMGXKI53RUjla8V2B8ouQduUlgtx8LoSMw==} - engines: {node: '>=0.10.0'} - dev: false - /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -16619,15 +16133,6 @@ packages: isexe: 2.0.0 dev: false - /window-size@1.1.1: - resolution: {integrity: sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==} - engines: {node: '>= 0.10.0'} - hasBin: true - dependencies: - define-property: 1.0.0 - is-number: 3.0.0 - dev: false - /workerd@1.20240320.1: resolution: {integrity: sha512-nuavAGGjh0qqM6RF5zxTHyUwEqdLCHchodbrpbh/xlJpFGnJVY5C1YgSi2S9aLkJJoa0/25Ta/+EzXEbApA/3w==} engines: {node: '>=16'} diff --git a/scripts/utils.js b/scripts/utils.js index cd55393b60..59ac192ace 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -2,7 +2,6 @@ const fsp = require("fs").promises; const path = require("path"); const { execSync } = require("child_process"); const jsonfile = require("jsonfile"); -const Confirm = require("prompt-confirm"); const { ROOT_DIR, EXAMPLES_DIR } = require("./constants"); @@ -37,16 +36,6 @@ function ensureCleanWorkingDirectory() { ); } -/** - * @param {string} question - * @returns {Promise} - */ -async function prompt(question) { - let confirm = new Confirm(question); - let answer = await confirm.run(); - return answer; -} - /** * @param {string} packageName * @param {(json: import('type-fest').PackageJson) => any} transform @@ -99,7 +88,6 @@ module.exports = { getPackageVersion, ensureCleanWorkingDirectory, invariant, - prompt, updatePackageConfig, updateExamplesPackageConfig, }; diff --git a/scripts/version.js b/scripts/version.js index 89c33ce101..5d6e1f0b59 100644 --- a/scripts/version.js +++ b/scripts/version.js @@ -9,126 +9,65 @@ const { ensureCleanWorkingDirectory, getPackageVersion, invariant, - prompt, updateExamplesPackageConfig, updatePackageConfig, } = require("./utils"); const { EXAMPLES_DIR } = require("./constants"); -/** - * @param {string} currentVersion - * @param {string} givenVersion - * @param {string} [prereleaseId] - * @returns {string} - */ -function getNextVersion(currentVersion, givenVersion, prereleaseId) { - invariant( - givenVersion != null, - `Missing next version. Usage: node version.js [nextVersion]` - ); - - if (/^pre/.test(givenVersion)) { - invariant( - prereleaseId != null, - `Missing prerelease id. Usage: node version.js ${givenVersion} [prereleaseId]` - ); - } - - let nextVersion; - if (givenVersion === "experimental") { - let hash = execSync(`git rev-parse --short HEAD`).toString().trim(); - nextVersion = `0.0.0-experimental-${hash}`; - } else { - // @ts-ignore - nextVersion = semver.inc(currentVersion, givenVersion, prereleaseId); - } - - invariant(nextVersion != null, `Invalid version specifier: ${givenVersion}`); - - return nextVersion; -} - async function run() { try { let args = process.argv.slice(2); + let skipGit = args.includes("--skip-git"); + let givenVersion = args[0]; - let prereleaseId = args[1]; - let isExperimental = givenVersion === "experimental"; + invariant( + givenVersion != null, + `Missing next version. Usage: node version.js [nextVersion]` + ); + + let isSnapshotVersion = givenVersion.startsWith("0.0.0-"); // 0. Make sure the working directory is clean - ensureCleanWorkingDirectory(); + if (!skipGit) { + ensureCleanWorkingDirectory(); + } // 1. Get the next version number let currentRouterVersion = await getPackageVersion("router"); - let currentVersion = await getPackageVersion("react-router"); let version = semver.valid(givenVersion); - if (version == null) { - version = getNextVersion(currentVersion, givenVersion, prereleaseId); - } + invariant(version != null, `Invalid version specifier: ${givenVersion}`); // We will only bump the router version if this is an experimental let routerVersion = currentRouterVersion; - // 2. Confirm the next version number - let answer = await prompt( - `Are you sure you want to bump version ${currentVersion} to ${version}? [Yn] ` - ); - - if (answer === false) return 0; - - // We only handle @remix-run/router for experimental since in normal/pre - // releases it's versioned independently from the rest of the packages - if (isExperimental) { - routerVersion = version; - // 2.5. Update @remix-run/router version - await updatePackageConfig("router", (config) => { - config.version = routerVersion; + // 2. Bump package versions + let packageDirNamesToBump = [ + // We only handle @remix-run/router for snapshot versions since in normal/pre + // releases it's versioned independently from the rest of the packages + ...(isSnapshotVersion ? ["router"] : []), + "react-router", + "react-router-dom", + "react-router-dom-v5-compat", + "react-router-native", + "remix-dev", + "remix-express", + "remix-node", + "remix-serve", + "remix-server-runtime", + "remix-testing", + ]; + for (let packageDirName of packageDirNamesToBump) { + let packageName; + await updatePackageConfig(packageDirName, (pkg) => { + packageName = pkg.name; + pkg.version = version; }); console.log( - chalk.green(` Updated @remix-run/router to version ${version}`) + chalk.green(` Updated ${packageName} to version ${version}`) ); } - // 3. Update react-router version - await updatePackageConfig("react-router", (config) => { - config.version = version; - if (isExperimental) { - config.dependencies["@remix-run/router"] = routerVersion; - } - }); - console.log(chalk.green(` Updated react-router to version ${version}`)); - - // 4. Update react-router-dom version + react-router dep - await updatePackageConfig("react-router-dom", (config) => { - config.version = version; - if (isExperimental) { - config.dependencies["@remix-run/router"] = routerVersion; - } - config.dependencies["react-router"] = version; - }); - console.log( - chalk.green(` Updated react-router-dom to version ${version}`) - ); - - // 4.1 Update react-router-dom-v5-compat version + react-router dep - await updatePackageConfig("react-router-dom-v5-compat", (config) => { - config.version = version; - config.dependencies["react-router"] = version; - }); - console.log( - chalk.green(` Updated react-router-dom-v5-compat to version ${version}`) - ); - - // 5. Update react-router-native version + react-router dep - await updatePackageConfig("react-router-native", (config) => { - config.version = version; - config.dependencies["react-router"] = version; - }); - console.log( - chalk.green(` Updated react-router-native to version ${version}`) - ); - - // 6. Update react-router and react-router-dom versions in the examples + // 3. Update react-router and react-router-dom versions in the examples let examples = await fsp.readdir(EXAMPLES_DIR); for (const example of examples) { let stat = await fsp.stat(path.join(EXAMPLES_DIR, example)); @@ -147,18 +86,14 @@ async function run() { }); } - // 7. Sync up the pnpm-lock.yaml for pnpm if this is an experimental release - if (isExperimental) { - console.log(chalk.green(" Syncing pnpm lockfile...")); - execSync("pnpm install --no-frozen-lockfile"); + // 4. Commit and tag + if (!skipGit) { + execSync(`git commit --all --message="Version ${version}"`); + execSync(`git tag -a -m "Version ${version}" v${version}`); + console.log(chalk.green(` Committed and tagged version ${version}`)); } - // 8. Commit and tag - execSync(`git commit --all --message="Version ${version}"`); - execSync(`git tag -a -m "Version ${version}" v${version}`); - console.log(chalk.green(` Committed and tagged version ${version}`)); - - if (givenVersion !== "experimental") { + if (!isSnapshotVersion) { console.log( chalk.red( ` ๐Ÿšจ @remix-run/router isn't handled by this script, do it manually!`