diff --git a/.deploy/tag.js b/.deploy/tag.js deleted file mode 100644 index 682bff1..0000000 --- a/.deploy/tag.js +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env node - -const { execSync, execFileSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); - -const STRATEGIES = ['major', 'minor', 'patch']; - -const [pkg, strategy] = process.argv.slice(2); - -function fail(message) { - console.error(message); - process.exit(1); -} - -function git(...args) { - execFileSync('git', args, { stdio: 'inherit' }); -} - -const manifestPath = path.join(pkg ?? '', 'package.json'); - -if (!pkg || !fs.existsSync(manifestPath)) { - fail('Invalid package name'); -} - -if (!strategy) { - fail('Strategy is required'); -} - -if (!STRATEGIES.includes(strategy)) { - fail(`Invalid strategy, must be one of: ${STRATEGIES.join(', ')}`); -} - -function readManifest() { - return JSON.parse(fs.readFileSync(manifestPath, 'utf8')); -} - -const { name } = readManifest(); - -// yarn is a .cmd shim on Windows, so it has to go through a shell -execSync(`yarn workspace ${name} version ${strategy}`, { stdio: 'inherit' }); - -const { version } = readManifest(); - -git('add', manifestPath); -git('commit', '-m', `chore: bump ${name} to ${version}`); - -const tag = pkg === 'cli' ? `v${version}` : `${name}@${version}`; - -console.log(`Creating tag: ${tag}`); - -git('tag', '-a', tag, '-m', version); - -console.log('Creating release commit'); -git('add', '.'); -git('commit', '-m', `chore: release ${name} ${version}`); - -git('push', '--tags'); -git('push'); diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..ad2c0a6 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +version: 2 +updates: + - package-ecosystem: npm + directory: / + schedule: + interval: weekly + commit-message: + prefix: chore + include: scope diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bd6fd02 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,83 @@ +name: CI + +on: + pull_request: + push: + branches: + - master + +permissions: + contents: read + +jobs: + commitlint: + runs-on: ubuntu-latest + steps: + # Squash merges use the PR title as the commit message, so lint the title. + # Keep `scopes` in sync with commitlint.config.js + - name: Lint PR title + if: github.event_name == 'pull_request' + uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + requireScope: false + scopes: | + api + get + cli + deps + ci + release + repo + + - uses: actions/checkout@v4 + if: github.event_name == 'push' + with: + fetch-depth: 0 + + - uses: actions/setup-node@v4 + if: github.event_name == 'push' + with: + node-version: '22.20' + + - name: Install + if: github.event_name == 'push' + run: yarn install --immutable + + # Fails after the fact: it cannot block a direct push, only make the violation visible + - name: Lint pushed commits + if: github.event_name == 'push' + env: + BEFORE: ${{ github.event.before }} + AFTER: ${{ github.sha }} + run: | + if [[ "$BEFORE" =~ ^0+$ ]] || ! git cat-file -e "${BEFORE}^{commit}" 2>/dev/null; then + # first push of a branch, or force push over history we no longer have + yarn commitlint --last + else + yarn commitlint --from "$BEFORE" --to "$AFTER" + fi + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '22.20' + + - name: Install + run: yarn install --immutable + + - name: Cache turbo + uses: actions/cache@v4 + with: + path: .turbo + key: ${{ runner.os }}-turbo-${{ hashFiles('yarn.lock') }}-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-turbo-${{ hashFiles('yarn.lock') }}- + + - name: Build + run: yarn turbo run build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7ae240..585af86 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,65 +1,124 @@ +name: Release + on: push: - tags: + branches: + - master permissions: - id-token: write contents: write + pull-requests: write + id-token: write + +# A run's tags must exist before the next run's release-please reads them +concurrency: + group: release + cancel-in-progress: false jobs: - release: + release-please: runs-on: ubuntu-latest - if: ${{ startsWith(github.ref, 'refs/tags/') }} + outputs: + cli_release_created: ${{ steps.rp.outputs['cli--release_created'] }} + cli_tag_name: ${{ steps.rp.outputs['cli--tag_name'] }} + steps: + # A PAT or GitHub App token, not GITHUB_TOKEN, so CI runs on the release PR + - uses: googleapis/release-please-action@v4 + id: rp + with: + token: ${{ secrets.RELEASE_PLEASE_TOKEN }} + config-file: release-please-config.json + manifest-file: .release-please-manifest.json + + # Libraries skip GitHub Releases, so release-please outputs never signal them. + # A version missing from npm always means a pending release. + publish-libs: + needs: release-please + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + package: [api, get] steps: - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: '22.20' registry-url: 'https://registry.npmjs.org' - - name: Get Tag - id: tag - run: | - echo "value=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - name: Get Package - id: package + + - name: Check npm + id: check run: | - TAG="${{ steps.tag.outputs.value }}" - if [[ "$TAG" =~ @ ]]; then - PACKAGE="$(echo "$TAG" | sed -e 's#@[0-9].[0-9].[0-9]$##')" + NAME="$(node -p "require('./${{ matrix.package }}/package.json').name")" + VERSION="$(node -p "require('./${{ matrix.package }}/package.json').version")" + echo "name=$NAME" >> "$GITHUB_OUTPUT" + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + if [ "$(npm view "$NAME@$VERSION" version 2>/dev/null)" = "$VERSION" ]; then + echo "published=true" >> "$GITHUB_OUTPUT" else - PACKAGE="@shift-code/cli" + echo "published=false" >> "$GITHUB_OUTPUT" fi - echo "value=$PACKAGE" >> $GITHUB_OUTPUT - - name: Get Version - id: version - run: | - TAG="${{ steps.tag.outputs.value }}" - VERSION="$(echo "$TAG" | sed -e 's#.*\([0-9].[0-9].[0-9]$\)#\1#')" - echo "value=$VERSION" >> $GITHUB_OUTPUT - - name: Get Changes - id: changes + + - name: Install + if: steps.check.outputs.published == 'false' + run: yarn install --immutable + + - name: Build + if: steps.check.outputs.published == 'false' + run: yarn turbo run build --filter=${{ steps.check.outputs.name }} + + - name: Publish + if: steps.check.outputs.published == 'false' + run: yarn workspace ${{ steps.check.outputs.name }} npm publish + + - name: Tag + if: steps.check.outputs.published == 'false' + env: + TAG: ${{ steps.check.outputs.name }}@${{ steps.check.outputs.version }} run: | - CHANGES=$(git log --graph --pretty=format:'%h - %s' "$(git describe --abbrev=0 --tags $(git describe --tags --abbrev=0)^)"..HEAD | cat) - echo "value=$CHANGES" >> $GITHUB_OUTPUT + if [ -z "$(git ls-remote --tags origin "refs/tags/$TAG")" ]; then + git tag "$TAG" + git push origin "refs/tags/$TAG" + fi + + # Must run after publish-libs: the published cli manifest references the new library versions + publish-cli: + needs: [release-please, publish-libs] + if: always() && needs.release-please.outputs.cli_release_created == 'true' && needs.publish-libs.result == 'success' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '22.20' + registry-url: 'https://registry.npmjs.org' + - name: Install - run: yarn install + run: yarn install --immutable + - name: Build - run: yarn workspace ${{ steps.package.outputs.value }} run build + run: yarn turbo run build --filter=@shift-code/cli + + - name: Publish + run: | + VERSION="$(node -p "require('./cli/package.json').version")" + if [ "$(npm view "@shift-code/cli@$VERSION" version 2>/dev/null)" = "$VERSION" ]; then + echo "@shift-code/cli@$VERSION already published" + else + yarn workspace @shift-code/cli npm publish + fi + - name: Package - if: ${{ steps.package.outputs.value == '@shift-code/cli' }} run: | - yarn workspace ${{ steps.package.outputs.value }} run pkg + yarn turbo run pkg --filter=@shift-code/cli for file in cli/pkg/cli-*; do - mv "$file" "$(echo "$file" | sed -e s#cli-#shift-code-#)" + mv "$file" "$(echo "$file" | sed -e 's#cli-#shift-code-#')" done - - name: Release - if: ${{ steps.package.outputs.value == '@shift-code/cli' }} - uses: softprops/action-gh-release@v1 - with: - body: ${{ steps.changes.outputs.value }} - files: cli/pkg/* - - name: Publish - run: | - git config user.email "git@tylerstewart.ca" - git config user.name "Tyler Stewart" - yarn workspace ${{ steps.package.outputs.value }} npm publish + + - name: Upload binaries + env: + GH_TOKEN: ${{ secrets.RELEASE_PLEASE_TOKEN }} + TAG: ${{ needs.release-please.outputs.cli_tag_name }} + run: gh release upload "$TAG" cli/pkg/* --clobber diff --git a/.gitignore b/.gitignore index 8414df4..e083be5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,16 @@ -node_modules/ -dist/ -pkg/ - -.env -tsconfig.tsbuildinfo +# yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions +.pnp.* + +node_modules/ +dist/ +pkg/ +.turbo/ + +.env +tsconfig.tsbuildinfo diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..00fe3c8 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +yarn commitlint --edit "$1" diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..bb6bc78 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,5 @@ +{ + "api": "0.6.4", + "get": "0.7.2", + "cli": "1.3.7" +} diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz deleted file mode 100644 index fd8b394..0000000 Binary files a/.yarn/install-state.gz and /dev/null differ diff --git a/README.md b/README.md index fa2ce0b..5b6bec6 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,24 @@ If you're a developer, some of the other packages might interest you in creating +## Development + +- `yarn install` sets up the workspace and the commit-msg hook +- `yarn build` builds all packages in dependency order +- `yarn dev -- ` runs the cli in dev mode, eg: `yarn dev -- redeem` + ## Deployment -- Run `yarn run tag ` - - eg: `yarn run tag cli minor` -- Version will be changed and a tag will be created -- Tag and commit are then pushed -- Workflow triggers on tag, publishing to NPM and creating a Github release +Releases are automated with [release-please](https://github.com/googleapis/release-please), driven by [conventional commits](https://www.conventionalcommits.org). + +- Commit messages, and PR titles for squash merges, must look like `type(scope): subject` + - scope is optional: `api`, `get`, `cli`, `deps`, `ci`, `release`, `repo` + - `fix` makes a patch release, `feat` a minor release, and `!` or a `BREAKING CHANGE` footer a major release + - other types (`chore`, `docs`, `ci`, ...) do not release; to ship a dependency fix, use `fix(deps): ...` +- A commit-msg hook lints commits locally; CI lints PR titles and pushes to `master` +- Pushing releasable commits to `master` opens or updates a release PR with version bumps and changelogs + - releasing `api` or `get` also releases `cli` +- Merging the release PR triggers the release workflow + - `api` and `get` are published to NPM and tagged (`@shift-code/@`) + - `cli` is published to NPM, tagged (`v`), and a Github release is created with the binaries attached +- If a release job fails, re-run the failed jobs; every step is safe to repeat diff --git a/cli/package.json b/cli/package.json index e225903..2734f6e 100644 --- a/cli/package.json +++ b/cli/package.json @@ -14,7 +14,7 @@ }, "scripts": { "dev": "ts-node-dev src/bin.ts", - "build": "tsc --build", + "build": "tsc", "pkg": "pkg ./package.json --out-path pkg" }, "engines": { @@ -45,8 +45,8 @@ "typescript": "^5.9.2" }, "dependencies": { - "@shift-code/api": "^0.6.4", - "@shift-code/get": "^0.7.2", + "@shift-code/api": "workspace:^", + "@shift-code/get": "workspace:^", "chalk": "^4.1.2", "mkdirp": "^1.0.4", "prompts": "^2.4.2", diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..cf98ede --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,7 @@ +// Keep the scope list in sync with the `scopes` input in .github/workflows/ci.yml +module.exports = { + extends: ['@commitlint/config-conventional'], + rules: { + 'scope-enum': [2, 'always', ['api', 'get', 'cli', 'deps', 'ci', 'release', 'repo']], + }, +}; diff --git a/package.json b/package.json index 5349c26..ce6cc1a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,10 @@ { "name": "@shift-code/redeem", "scripts": { - "tag": "node .deploy/tag.js" + "build": "turbo run build", + "test": "turbo run test", + "dev": "turbo run dev", + "postinstall": "husky" }, "private": true, "workspaces": [ @@ -12,5 +15,11 @@ "volta": { "node": "22.20.0" }, - "packageManager": "yarn@4.10.3" + "packageManager": "yarn@4.10.3", + "devDependencies": { + "@commitlint/cli": "^21.2.3", + "@commitlint/config-conventional": "^21.2.3", + "husky": "^9.1.7", + "turbo": "^2.11.8" + } } diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..29209c3 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,23 @@ +{ + "release-type": "node", + "bootstrap-sha": "81e65c81fca5e31797b538fa0b99dbf0ed02c4bc", + "group-pull-request-title-pattern": "chore(release): release ${branch}", + "plugins": [{ "type": "node-workspace" }], + "packages": { + "cli": { + "include-component-in-tag": false + }, + "api": { + "component": "@shift-code/api", + "tag-separator": "@", + "include-v-in-tag": false, + "skip-github-release": true + }, + "get": { + "component": "@shift-code/get", + "tag-separator": "@", + "include-v-in-tag": false, + "skip-github-release": true + } + } +} diff --git a/turbo.json b/turbo.json new file mode 100644 index 0000000..c95db00 --- /dev/null +++ b/turbo.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://turborepo.com/schema.json", + "tasks": { + "build": { + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**", + "tsconfig.tsbuildinfo" + ] + }, + "test": { + "dependsOn": [ + "^build" + ], + "cache": false + }, + "pkg": { + "dependsOn": [ + "build" + ], + "cache": false + }, + "dev": { + "dependsOn": [ + "^build" + ], + "cache": false, + "persistent": true + } + } +} diff --git a/yarn.lock b/yarn.lock index 41385f6..b59f0bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -448,6 +448,217 @@ __metadata: languageName: node linkType: hard +"@commitlint/cli@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/cli@npm:21.2.3" + dependencies: + "@commitlint/config-conventional": "npm:^21.2.3" + "@commitlint/format": "npm:^21.2.3" + "@commitlint/lint": "npm:^21.2.3" + "@commitlint/load": "npm:^21.2.3" + "@commitlint/read": "npm:^21.2.3" + "@commitlint/types": "npm:^21.2.3" + tinyexec: "npm:^1.0.0" + yargs: "npm:^18.0.0" + bin: + commitlint: cli.js + checksum: 10c0/544e86b5e5af0cbae5a55b5643dd9a8565b7f00e435378b46eb372a0b46adf330577b7d5c25abddbb30d4aa3ad78b114b2514ca936aeff3b310eb6e5f13dfc9c + languageName: node + linkType: hard + +"@commitlint/config-conventional@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/config-conventional@npm:21.2.3" + dependencies: + "@commitlint/types": "npm:^21.2.3" + conventional-changelog-conventionalcommits: "npm:^10.0.0" + checksum: 10c0/584a7b436d6f2aace31f9a35c48da213aa5eed01f7d21ca6db3800992e59c0f52894e54d2006f1c42739b8edce509387bd2cba783a5b18088db58da3b2afbf44 + languageName: node + linkType: hard + +"@commitlint/config-validator@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/config-validator@npm:21.2.3" + dependencies: + "@commitlint/types": "npm:^21.2.3" + ajv: "npm:^8.11.0" + checksum: 10c0/54641610bf9863ba085be7e806a34324e67b8ee8e3f4c12fe7c3f1116a385729eabd0d16f42823d60128bc6de99742e31112bc54c70ef45b5c439cad6fd95d8d + languageName: node + linkType: hard + +"@commitlint/ensure@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/ensure@npm:21.2.3" + dependencies: + "@commitlint/types": "npm:^21.2.3" + es-toolkit: "npm:^1.46.0" + checksum: 10c0/55314de93bc297624c62e10f68622928fde9b3a8e9522d0f8c1b54e31c86d5b1e98518682673651e7e5894be821d683099b23eb26aae300b0e7958ee62b340bc + languageName: node + linkType: hard + +"@commitlint/execute-rule@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/execute-rule@npm:21.0.1" + checksum: 10c0/84fd03f20e808b9f4b68193410d9be90c54b3599f81e82ac23847e90ccba4b52768cfd1ee637931a6ca90575eaefa6ed5fc43a5398d52a4e2d6bef6dd354227e + languageName: node + linkType: hard + +"@commitlint/format@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/format@npm:21.2.3" + dependencies: + "@commitlint/types": "npm:^21.2.3" + picocolors: "npm:^1.1.1" + checksum: 10c0/d87685e1e10d3338d4d1cab929af03d938070b1bfed79c16ef6fb54a95e1f5e11d56ed7ac188e332b0db8ab25302426087b2152a58334c09c6764497fd2b3465 + languageName: node + linkType: hard + +"@commitlint/is-ignored@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/is-ignored@npm:21.2.3" + dependencies: + "@commitlint/types": "npm:^21.2.3" + semver: "npm:^7.6.0" + checksum: 10c0/bf2b8a47149c537cb90bacc9dec12cfeae891597490e3919813deacaec3b64821268c2595c84327641b9b1e5988e2668362ecca4cdf011141deac1ad3956f56b + languageName: node + linkType: hard + +"@commitlint/lint@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/lint@npm:21.2.3" + dependencies: + "@commitlint/is-ignored": "npm:^21.2.3" + "@commitlint/parse": "npm:^21.2.3" + "@commitlint/rules": "npm:^21.2.3" + "@commitlint/types": "npm:^21.2.3" + checksum: 10c0/fe572e141f84b2a289e7c33356b8adaecc75d09e5e4cb07f173e0d80ea5f1070897536729fab5f1e0123e77a06982c97c3a417ae84b46877d7bd0913e382b647 + languageName: node + linkType: hard + +"@commitlint/load@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/load@npm:21.2.3" + dependencies: + "@commitlint/config-validator": "npm:^21.2.3" + "@commitlint/execute-rule": "npm:^21.0.1" + "@commitlint/resolve-extends": "npm:^21.2.3" + "@commitlint/types": "npm:^21.2.3" + cosmiconfig: "npm:^9.0.1" + cosmiconfig-typescript-loader: "npm:^6.1.0" + es-toolkit: "npm:^1.46.0" + is-plain-obj: "npm:^4.1.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/b79e17711857fe6a14459e1acb63f233d39bcfacdab8ebbbc60bca0f87843768e9c6a40ccea5e8ab6e095c3eb79d74c61d910e620eef33fe673a034494b74e50 + languageName: node + linkType: hard + +"@commitlint/message@npm:^21.2.0": + version: 21.2.0 + resolution: "@commitlint/message@npm:21.2.0" + checksum: 10c0/f3f97efd382970316aac689545b7f7bc278e114cce0540469ba56539f2ab78089b84bd0137c82be0908d1e251890e035348acd369c24c4011abf6445d8ec928f + languageName: node + linkType: hard + +"@commitlint/parse@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/parse@npm:21.2.3" + dependencies: + "@commitlint/types": "npm:^21.2.3" + conventional-changelog-angular: "npm:^9.0.0" + conventional-commits-parser: "npm:^7.0.0" + checksum: 10c0/5692b5298bf9668d45cde1a33087bf40c17ccf9c6421dbe314740b5a9779386261532386c4dfae421d82c80dbc1742ca5a78150dfeb6891421570b4206bb343b + languageName: node + linkType: hard + +"@commitlint/read@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/read@npm:21.2.3" + dependencies: + "@commitlint/top-level": "npm:^21.2.0" + "@commitlint/types": "npm:^21.2.3" + "@conventional-changelog/git-client": "npm:^3.0.0" + tinyexec: "npm:^1.0.0" + checksum: 10c0/7a0421c9135dbef584ecf8e4aa8d3eee2536cf575dab8dbcbf7ea8d79753fd31df5701cb877f413189763f1d2e0e6fbc7b6e2061b35b15acca1ed602a0b28ca3 + languageName: node + linkType: hard + +"@commitlint/resolve-extends@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/resolve-extends@npm:21.2.3" + dependencies: + "@commitlint/config-validator": "npm:^21.2.3" + "@commitlint/types": "npm:^21.2.3" + es-toolkit: "npm:^1.46.0" + global-directory: "npm:^5.0.0" + resolve-from: "npm:^5.0.0" + checksum: 10c0/527fb212ced6b5a1009f2a7ee972e58369196030d846d23f59a141c0f22e1b22fc19bfec0ff2739d63f72fa764d62dd78c0204d435f1134d62e0b88ea1defcd4 + languageName: node + linkType: hard + +"@commitlint/rules@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/rules@npm:21.2.3" + dependencies: + "@commitlint/ensure": "npm:^21.2.3" + "@commitlint/message": "npm:^21.2.0" + "@commitlint/to-lines": "npm:^21.0.1" + "@commitlint/types": "npm:^21.2.3" + checksum: 10c0/cb15fe727d0a0a8845b472eef1dc61885862ee23e1afd154e55a288a486fbc2a228ec87f0152a58a4d27646cc0a19eddee0855c15a3f528653b5c19512f0e115 + languageName: node + linkType: hard + +"@commitlint/to-lines@npm:^21.0.1": + version: 21.0.1 + resolution: "@commitlint/to-lines@npm:21.0.1" + checksum: 10c0/bdf0640e260e11aeb6c6450095477ff123d2792c19307aba11ffaf35170ec8f05244d106edfecfb979fe5c1559b821db77a9d844261ef443895cee1d847e15ca + languageName: node + linkType: hard + +"@commitlint/top-level@npm:^21.2.0": + version: 21.2.0 + resolution: "@commitlint/top-level@npm:21.2.0" + dependencies: + escalade: "npm:^3.2.0" + checksum: 10c0/2358c836db34a0405b8e7e4eda38ca120d80dafa0b6ca84b12460131649d7fbdad35e5b68de19db51cf3a4725ae8a721f8f1f6909dcd161d60e3953d96f775f3 + languageName: node + linkType: hard + +"@commitlint/types@npm:^21.2.3": + version: 21.2.3 + resolution: "@commitlint/types@npm:21.2.3" + dependencies: + conventional-commits-parser: "npm:^7.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/64a2dd651b6c54b0e332a77d5e39fac823cf5750f0f9d8f6f562b97143ee2b76b689537a2d2bf98e64258b5d951fb0e21bc83bcf7969ce4b084f8a588d933740 + languageName: node + linkType: hard + +"@conventional-changelog/git-client@npm:^3.0.0": + version: 3.2.0 + resolution: "@conventional-changelog/git-client@npm:3.2.0" + dependencies: + "@simple-libs/child-process-utils": "npm:^2.0.0" + "@simple-libs/stream-utils": "npm:^2.0.0" + verkit: "npm:^0.5.0" + peerDependencies: + conventional-commits-filter: ^6.0.1 + conventional-commits-parser: ^7.1.3 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + checksum: 10c0/6f56e7d5b572fa45500620ea64604b2c49e4d3fa60dd6322e7ffa04150626ff8fd73b5814b6447777e6fd9eb100b9ad5cecc1f8d2c356cbb713073e950c6c234 + languageName: node + linkType: hard + +"@conventional-changelog/template@npm:^1.4.0": + version: 1.4.0 + resolution: "@conventional-changelog/template@npm:1.4.0" + checksum: 10c0/052ac38b43f67b2572d101ced1dee2691a2ac3828cbc1041738cf1646b956ff0fb3e87258ec59f46eb2c3fcc9a68bb89f90b8dcb1e354880f2c71d8f5ef3a021 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -779,7 +990,7 @@ __metadata: languageName: node linkType: hard -"@shift-code/api@npm:^0.6.4, @shift-code/api@workspace:api": +"@shift-code/api@workspace:^, @shift-code/api@workspace:api": version: 0.0.0-use.local resolution: "@shift-code/api@workspace:api" dependencies: @@ -801,8 +1012,8 @@ __metadata: version: 0.0.0-use.local resolution: "@shift-code/cli@workspace:cli" dependencies: - "@shift-code/api": "npm:^0.6.4" - "@shift-code/get": "npm:^0.7.2" + "@shift-code/api": "workspace:^" + "@shift-code/get": "workspace:^" "@types/mkdirp": "npm:^1.0.2" "@types/node": "npm:^22.18.6" "@types/prompts": "npm:^2.4.9" @@ -821,7 +1032,7 @@ __metadata: languageName: unknown linkType: soft -"@shift-code/get@npm:^0.7.2, @shift-code/get@workspace:get": +"@shift-code/get@workspace:^, @shift-code/get@workspace:get": version: 0.0.0-use.local resolution: "@shift-code/get@workspace:get" dependencies: @@ -838,9 +1049,30 @@ __metadata: "@shift-code/redeem@workspace:.": version: 0.0.0-use.local resolution: "@shift-code/redeem@workspace:." + dependencies: + "@commitlint/cli": "npm:^21.2.3" + "@commitlint/config-conventional": "npm:^21.2.3" + husky: "npm:^9.1.7" + turbo: "npm:^2.11.8" languageName: unknown linkType: soft +"@simple-libs/child-process-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "@simple-libs/child-process-utils@npm:2.0.0" + dependencies: + "@simple-libs/stream-utils": "npm:^2.0.0" + checksum: 10c0/8bd2ad6fe0eb7ed45e7f656b8fb2ea249673dad807ba69b950a91319747fd871c386010c766cbf8ac7242aeef76d4a03f83765c068ebb6267e2bf7e6a042e2f2 + languageName: node + linkType: hard + +"@simple-libs/stream-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "@simple-libs/stream-utils@npm:2.0.0" + checksum: 10c0/27fa4a9eef3d652a80b970bee18589a618f66884cd15845a0c57d7b73f005ea4d9acda7fe580851af229d07de749419715d06dcedf33bcb1a671e7a27106fdda + languageName: node + linkType: hard + "@sinonjs/commons@npm:^1.7.0": version: 1.8.3 resolution: "@sinonjs/commons@npm:1.8.3" @@ -866,6 +1098,48 @@ __metadata: languageName: node linkType: hard +"@turbo/darwin-64@npm:2.11.8": + version: 2.11.8 + resolution: "@turbo/darwin-64@npm:2.11.8" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@turbo/darwin-arm64@npm:2.11.8": + version: 2.11.8 + resolution: "@turbo/darwin-arm64@npm:2.11.8" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@turbo/linux-64@npm:2.11.8": + version: 2.11.8 + resolution: "@turbo/linux-64@npm:2.11.8" + conditions: (os=android | os=linux) & cpu=x64 + languageName: node + linkType: hard + +"@turbo/linux-arm64@npm:2.11.8": + version: 2.11.8 + resolution: "@turbo/linux-arm64@npm:2.11.8" + conditions: (os=android | os=linux) & cpu=arm64 + languageName: node + linkType: hard + +"@turbo/windows-64@npm:2.11.8": + version: 2.11.8 + resolution: "@turbo/windows-64@npm:2.11.8" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@turbo/windows-arm64@npm:2.11.8": + version: 2.11.8 + resolution: "@turbo/windows-arm64@npm:2.11.8" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": version: 7.1.19 resolution: "@types/babel__core@npm:7.1.19" @@ -1199,6 +1473,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.11.0": + version: 8.20.0 + resolution: "ajv@npm:8.20.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/5df9a1c8f83863cde1bd3a9ddb426f599718f88e3dc9153616c79fb28e0be455335830d7f21d745576519f057b371352daa31047b6a33d7036fe08777d60cf2a + languageName: node + linkType: hard + "ansi-escapes@npm:^4.2.1": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -1222,6 +1508,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^6.2.2": + version: 6.4.0 + resolution: "ansi-regex@npm:6.4.0" + checksum: 10c0/e42f68ffa21aac4c4de27aad601bb5ea415b5a07b127681ef44728195f22231b77bc39230ce0c976420d84650b7bf5a5b60eb4e7500c1f74e9a3f3cd4a68f3f6 + languageName: node + linkType: hard + "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" @@ -1247,7 +1540,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.1.0": +"ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": version: 6.2.3 resolution: "ansi-styles@npm:6.2.3" checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 @@ -1280,6 +1573,20 @@ __metadata: languageName: node linkType: hard +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"argue-cli@npm:^3.1.0": + version: 3.2.0 + resolution: "argue-cli@npm:3.2.0" + checksum: 10c0/1b3df0c0e0a7a6199b45124aa2e664d9ec467b484cc9e9263ecf3062cc30725548fd840688ceee8bf5d67955cad8d155111e80ec6626d60b884b6c66264e9940 + languageName: node + linkType: hard + "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -1671,6 +1978,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^9.0.1": + version: 9.0.1 + resolution: "cliui@npm:9.0.1" + dependencies: + string-width: "npm:^7.2.0" + strip-ansi: "npm:^7.1.0" + wrap-ansi: "npm:^9.0.0" + checksum: 10c0/13441832e9efe7c7a76bd2b8e683555c478d461a9f249dc5db9b17fe8d4b47fa9277b503914b90bd00e4a151abb6b9b02b2288972ffe2e5e3ca40bcb1c2330d3 + languageName: node + linkType: hard + "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" @@ -1733,6 +2051,36 @@ __metadata: languageName: node linkType: hard +"conventional-changelog-angular@npm:^9.0.0": + version: 9.4.0 + resolution: "conventional-changelog-angular@npm:9.4.0" + dependencies: + "@conventional-changelog/template": "npm:^1.4.0" + checksum: 10c0/79368f0bb9a0b10cc38b5eb0af64b7a69c815f3e5fed853af9f80b56b8f09b1578d0fb47d8a0cf13e8030c6dedb81a0f507d1998cd064d2ade3f517c82fbdcde + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^10.0.0": + version: 10.4.1 + resolution: "conventional-changelog-conventionalcommits@npm:10.4.1" + dependencies: + "@conventional-changelog/template": "npm:^1.4.0" + checksum: 10c0/a03c982c12255025cab0e3197b36e4a7e8cc411f20e8edc22cf86126db870093003472db1019103c6680804750638c96fa96da1c6738e506b790445de3c7b032 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^7.0.0": + version: 7.1.3 + resolution: "conventional-commits-parser@npm:7.1.3" + dependencies: + "@simple-libs/stream-utils": "npm:^2.0.0" + argue-cli: "npm:^3.1.0" + bin: + conventional-commits-parser: ./dist/cli/index.js + checksum: 10c0/0e8ce6d3faaf65a5b3b029fadea4064e27abee7c1ec959945ebc8cad5bfcbdf09c88e4d59baeaf4bacfce3e2d585d86b1dadf7a885176cad404a3f1b41de70d7 + languageName: node + linkType: hard + "convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.8.0 resolution: "convert-source-map@npm:1.8.0" @@ -1749,6 +2097,36 @@ __metadata: languageName: node linkType: hard +"cosmiconfig-typescript-loader@npm:^6.1.0": + version: 6.3.0 + resolution: "cosmiconfig-typescript-loader@npm:6.3.0" + dependencies: + jiti: "npm:2.6.1" + peerDependencies: + "@types/node": "*" + cosmiconfig: ">=9" + typescript: ">=5" + checksum: 10c0/dd53519bf59b31c32a831f1140eaa44f4f0bf49229b7e3ba27bb6f26097c3ecff955a490e70b31349049463066b5047bd129ab82ed078be9b1f1f22ccb776c6a + languageName: node + linkType: hard + +"cosmiconfig@npm:^9.0.1": + version: 9.0.2 + resolution: "cosmiconfig@npm:9.0.2" + dependencies: + env-paths: "npm:^2.2.1" + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/132d32863c0b3d9ace7010a10011e09089532b36e3b11e02004d671dcbd8b8f2f16293b82d510d9c15890f30358baf8722127c7b1c011449c90b6a178f9c6594 + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -2028,6 +2406,13 @@ __metadata: languageName: node linkType: hard +"emoji-regex@npm:^10.3.0": + version: 10.6.0 + resolution: "emoji-regex@npm:10.6.0" + checksum: 10c0/1e4aa097bb007301c3b4b1913879ae27327fdc48e93eeefefe3b87e495eb33c5af155300be951b4349ff6ac084f4403dc9eff970acba7c1c572d89396a9a32d7 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -2084,7 +2469,7 @@ __metadata: languageName: node linkType: hard -"env-paths@npm:^2.2.0": +"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": version: 2.2.1 resolution: "env-paths@npm:2.2.1" checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 @@ -2107,6 +2492,20 @@ __metadata: languageName: node linkType: hard +"es-toolkit@npm:^1.46.0": + version: 1.52.0 + resolution: "es-toolkit@npm:1.52.0" + dependenciesMeta: + "@trivago/prettier-plugin-sort-imports@4.3.0": + unplugged: true + prettier-plugin-sort-re-exports@0.0.1: + unplugged: true + vitepress-plugin-sandpack@1.1.4: + unplugged: true + checksum: 10c0/465988c0a6b84b6d1d171287cbbe40c3247a1f94acea210ae14bc66b7d90c93e6839bd6937cbaf2a1d206669f3179eb26141a89d9125969a4b8e58cb7d86a2ca + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -2114,6 +2513,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -2401,6 +2807,13 @@ __metadata: languageName: node linkType: hard +"get-east-asian-width@npm:^1.0.0, get-east-asian-width@npm:^1.5.0": + version: 1.7.0 + resolution: "get-east-asian-width@npm:1.7.0" + checksum: 10c0/680a5f611a186e4a065291f31821f7e4ad7742625be814e05b8ab5535c6fa53562bc0333a83138fca5f2e1030ed960a561b2fd4629e0cff0dc68b19cf46d7c53 + languageName: node + linkType: hard + "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -2461,6 +2874,15 @@ __metadata: languageName: node linkType: hard +"global-directory@npm:^5.0.0": + version: 5.0.0 + resolution: "global-directory@npm:5.0.0" + dependencies: + ini: "npm:6.0.0" + checksum: 10c0/2b90eea8975bb332db7e8c9096ff310f0deb617d17e47e93b921d1c69f7677c1759a07009f2581f050d3ea08a3e079bf4ffdb9c34c94d48dc369c6577b3d45f4 + languageName: node + linkType: hard + "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -2597,6 +3019,15 @@ __metadata: languageName: node linkType: hard +"husky@npm:^9.1.7": + version: 9.1.7 + resolution: "husky@npm:9.1.7" + bin: + husky: bin.js + checksum: 10c0/35bb110a71086c48906aa7cd3ed4913fb913823715359d65e32e0b964cb1e255593b0ae8014a5005c66a68e6fa66c38dcfa8056dbbdfb8b0187c0ffe7ee3a58f + languageName: node + linkType: hard + "iconv-lite@npm:0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -2622,6 +3053,16 @@ __metadata: languageName: node linkType: hard +"import-fresh@npm:^3.3.0": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + "import-local@npm:^3.0.2": version: 3.1.0 resolution: "import-local@npm:3.1.0" @@ -2658,6 +3099,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:6.0.0": + version: 6.0.0 + resolution: "ini@npm:6.0.0" + checksum: 10c0/9a7f55f306e2b25b41ae67c8b526e8f4673f057b70852b9025816ef4f15f07bf1ba35ed68ea4471ff7b31718f7ef1bc50d709f8d03cb012e10a3135eb99c7206 + languageName: node + linkType: hard + "ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -2753,6 +3201,13 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^4.1.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -3349,6 +3804,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:2.6.1": + version: 2.6.1 + resolution: "jiti@npm:2.6.1" + bin: + jiti: lib/jiti-cli.mjs + checksum: 10c0/79b2e96a8e623f66c1b703b98ec1b8be4500e1d217e09b09e343471bbb9c105381b83edbb979d01cef18318cc45ce6e153571b6c83122170eefa531c64b6789b + languageName: node + linkType: hard + "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -3368,6 +3832,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.1.0": + version: 4.3.2 + resolution: "js-yaml@npm:4.3.2" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/dedd34c2e8fef1d504687f1bc94ed0ee1311a1f78770fa2800352c6d59c635ccf555009d74e9afe529ae62199da2b1ccef30e53dc84dcd8d2d8187c22574bc97 + languageName: node + linkType: hard + "jsdom@npm:^16.6.0": version: 16.7.0 resolution: "jsdom@npm:16.7.0" @@ -3984,6 +4459,15 @@ __metadata: languageName: node linkType: hard +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + "parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" @@ -4076,7 +4560,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.1.0": +"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -4333,6 +4817,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -4478,6 +4969,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.0": + version: 7.8.5 + resolution: "semver@npm:7.8.5" + bin: + semver: bin/semver.js + checksum: 10c0/b1f3127a5be8125a94f37188b361c212466c292c6910adce3ec106cff5dc211ccaedc4739c11bb70fda59d6fc1f040a9bca289f4e093451521a2372e5231fe0c + languageName: node + linkType: hard + "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -4699,6 +5199,27 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^7.0.0, string-width@npm:^7.2.0": + version: 7.2.0 + resolution: "string-width@npm:7.2.0" + dependencies: + emoji-regex: "npm:^10.3.0" + get-east-asian-width: "npm:^1.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9 + languageName: node + linkType: hard + +"string-width@npm:^8.2.1": + version: 8.3.0 + resolution: "string-width@npm:8.3.0" + dependencies: + get-east-asian-width: "npm:^1.5.0" + strip-ansi: "npm:^7.1.2" + checksum: 10c0/bc354b27772777c314e6792106f01586e959f36abb3d4b8ad46c4d4ee92d5e906acb10c1f3be97a85ae0ba1b11389094bc5672999fc5f03f12d22a4725fa30fe + languageName: node + linkType: hard + "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -4735,6 +5256,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^7.1.0, strip-ansi@npm:^7.1.2": + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" + dependencies: + ansi-regex: "npm:^6.2.2" + checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221 + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -4900,6 +5430,13 @@ __metadata: languageName: node linkType: hard +"tinyexec@npm:^1.0.0": + version: 1.3.1 + resolution: "tinyexec@npm:1.3.1" + checksum: 10c0/c590369cb3fa73cc18a3998caec8a00f9712d91309c881be3ac52b160fb2f80c7b1fbf3591858ab6abab47ad55385b0c86ec19982e32441a01f55298dab9ccd2 + languageName: node + linkType: hard + "tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" @@ -5050,6 +5587,35 @@ __metadata: languageName: node linkType: hard +"turbo@npm:^2.11.8": + version: 2.11.8 + resolution: "turbo@npm:2.11.8" + dependencies: + "@turbo/darwin-64": "npm:2.11.8" + "@turbo/darwin-arm64": "npm:2.11.8" + "@turbo/linux-64": "npm:2.11.8" + "@turbo/linux-arm64": "npm:2.11.8" + "@turbo/windows-64": "npm:2.11.8" + "@turbo/windows-arm64": "npm:2.11.8" + dependenciesMeta: + "@turbo/darwin-64": + optional: true + "@turbo/darwin-arm64": + optional: true + "@turbo/linux-64": + optional: true + "@turbo/linux-arm64": + optional: true + "@turbo/windows-64": + optional: true + "@turbo/windows-arm64": + optional: true + bin: + turbo: bin/turbo + checksum: 10c0/717c0ba7b6b19ae672ca17ceeabd7d549664552d626e4543d05c78b3ad0cdd1cdec5c0a2eaed8ec28803f7cc9c63741ee3fef7803a60cf60cd42c32198489f56 + languageName: node + linkType: hard + "type-check@npm:~0.3.2": version: 0.3.2 resolution: "type-check@npm:0.3.2" @@ -5196,6 +5762,13 @@ __metadata: languageName: node linkType: hard +"verkit@npm:^0.5.0": + version: 0.5.0 + resolution: "verkit@npm:0.5.0" + checksum: 10c0/0bad45304bd0b3d2e56e4bdb422a43863c7a86902741eb632adb104ea37e1213706e08be4eaa7b3e28f843658be56ace16081d3ed3478477a5872f94a83ef7d0 + languageName: node + linkType: hard + "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2" @@ -5366,6 +5939,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^9.0.0": + version: 9.0.2 + resolution: "wrap-ansi@npm:9.0.2" + dependencies: + ansi-styles: "npm:^6.2.1" + string-width: "npm:^7.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/3305839b9a0d6fb930cb63a52f34d3936013d8b0682ff3ec133c9826512620f213800ffa19ea22904876d5b7e9a3c1f40682f03597d986a4ca881fa7b033688c + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" @@ -5466,6 +6050,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^22.0.0": + version: 22.0.0 + resolution: "yargs-parser@npm:22.0.0" + checksum: 10c0/cb7ef81759c4271cb1d96b9351dbbc9a9ce35d3e1122d2b739bf6c432603824fa02c67cc12dcef6ea80283379d63495686e8f41cc7b06c6576e792aba4d33e1c + languageName: node + linkType: hard + "yargs@npm:^15.4.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -5500,6 +6091,20 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^18.0.0": + version: 18.2.0 + resolution: "yargs@npm:18.2.0" + dependencies: + cliui: "npm:^9.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + string-width: "npm:^8.2.1" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^22.0.0" + checksum: 10c0/7419338c3c00f9143ec6b6ab168335061c6f5342d161642aec23ff119e28cac1c417e0eca1d7dc82fd084f07207cc5d34c7d8315f605c0e3dbf12c350e405f3f + languageName: node + linkType: hard + "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1"