diff --git a/README.md b/README.md index 1a3e96e..3690f66 100644 --- a/README.md +++ b/README.md @@ -105,16 +105,18 @@ Options: Defaults to "chore({{name}}): release {{full-name}}@{{new-version}}" You can use "{{new-version}}" in your template which will be dynamically replaced with whatever the new version is that will be published. You can use "{{name}}" in your template, this will be replaced with the name provided through "-n", "--name" or the same value set in your config file. - You can use "{{full-name}}" in your template, this will be replaced "{{name}}" (when "org" is not provided), or "@{{org}}/{{name}}" (when "org" is provided). + You can use "{{full-name}}" in your template, this will be replaced "{{name}}" (when "org" is not provided), or "@{{org}}/{{name}}" (when "org" is + provided). --tag-template [string] A custom tag template to use. When "org" is provided this will default to "@{{org}}/{{name}}@{{new-version}}", for example "@favware/cliff-jumper@1.0.0" When "org" is not provided this will default to "v{{new-version}}", for example "v1.0.0" You can use "{{new-version}}" in your template which will be dynamically replaced with whatever the new version is that will be published. You can use "{{org}}" in your template, this will be replaced with the org provided through "-o", "--org" or the same value set in your config file. You can use "{{name}}" in your template, this will be replaced with the name provided through "-n", "--name" or the same value set in your config file. - You can use "{{full-name}}" in your template, this will be replaced "{{name}}" (when "org" is not provided), or "@{{org}}/{{name}}" (when "org" is provided). - -i, --install Whether to run npm install after bumping the version but before committing and creating a git tag. This is useful when you have a mono repo where bumping one package - would then cause the lockfile to be out of date. + You can use "{{full-name}}" in your template, this will be replaced "{{name}}" (when "org" is not provided), or "@{{org}}/{{name}}" (when "org" is + provided). + -i, --install Whether to run npm install after bumping the version but before committing and creating a git tag. This is useful when you have a mono repo where bumping + one package would then cause the lockfile to be out of date. --skip-changelog Whether to skip updating your changelog file default "true" when CI=true, "false" otherwise --no-skip-changelog Whether to skip updating your changelog file @@ -124,6 +126,7 @@ Options: --no-skip-tag Whether to skip creating a git tag default "true" when CI=true, "false" otherwise -cpf, --changelog-prepend-file [string] The file that git-cliff should use for the --prepend flag, defaults to ./CHANGELOG.md. This should be relative to the current working directory. + --skip-commit [skipCommit...] Repeatable, each will be treated as a new entry. A list of SHA1 commit hashes that will be skipped in the changelog. --github-repo The GitHub repository to use for linking to issues and PRs in the changelog. You can pass the unique string "auto" to automatically set this value as {{org}}/{{name}} as provided from --org and --name This should be in the format "owner/repo" @@ -134,8 +137,8 @@ Options: - GH_TOKEN - TOKEN_GITHUB - TOKEN_GH - The multiple options for the name of the environment are to aim to not conflict with other tooling that use similar tokens in case you want to use a unique token for - release management. + The multiple options for the name of the environment are to aim to not conflict with other tooling that use similar tokens in case you want to use a unique + token for release management. -pt, --push-tag Whether to push the tag to the remote repository. This will simply execute "git push && git push --tags" so make sure you have configured git for pushing properly beforehand. -npt, --no-push-tag Whether to push the tag to the remote repository. @@ -148,13 +151,15 @@ Options: If the changelog section from git-cliff is empty, the release notes will be auto-generated by GitHub. -ghrd, --github-release-draft Whether the release should be a draft -ghrpr, --github-release-pre-release Whether the release should be a pre-release - -ghrl, --github-release-latest Whether the release should be marked as the latest release, will try to read this value, then the value of --github-release, and then default to false. Please note that - when setting --github-release-pre-release to `true` GitHub will prevent the release to be marked as latest an this option will essentially be ignored. + -ghrl, --github-release-latest Whether the release should be marked as the latest release, will try to read this value, then the value of --github-release, and then default to false. + Please note that when setting --github-release-pre-release to `true` GitHub will prevent the release to be marked as latest an this option will essentially + be ignored. -ghrnt, --github-release-name-template [string] A GitHub release name template to use. Defaults to an empty string, which means GitHub will use the tag name as the release name. You can use "{{new-version}}" in your template which will be dynamically replaced with whatever the new version is that will be published. You can use "{{org}}" in your template, this will be replaced with the org provided through "-o", "--org" or the same value set in your config file. You can use "{{name}}" in your template, this will be replaced with the name provided through "-n", "--name" or the same value set in your config file. - You can use "{{full-name}}" in your template, this will be replaced "{{name}}" (when "org" is not provided), or "@{{org}}/{{name}}" (when "org" is provided). + You can use "{{full-name}}" in your template, this will be replaced "{{name}}" (when "org" is not provided), or "@{{org}}/{{name}}" (when "org" is + provided). -v, --verbose Whether to print verbose information (default: false) -h, --help display help for command ``` @@ -180,6 +185,7 @@ package). It should be named `.cliff-jumperrc`, optionally suffixed with - `--skip-changelog` and `--no-skip-changelog` map to `skipChangelog` - `--skip-tag` and `--no-skip-tag` map to `skipTag` - `--changelog-prepend-file` maps to `changelogPrependFile` +- `--skip-commit` maps to `skipCommit` - `--github-repo` maps to `githubRepo` - `--github-token` maps to `githubToken` - `--push-tag` and `--no-push-tag` map to `pushTag` @@ -265,6 +271,7 @@ This library has opinionated defaults for its options. These are as follows: - `{{full-name}}` will be replaced with `{{name}}` (when `org` is not provided), or `@{{org}}/{{name}}` (when `org` is provided). - `--changelog-prepend-file` will default to `./CHANGELOG.md`. +- `--skip-commit` will default to `[]` (an empty array). - `--github-repo` will default to `undefined`. - `--github-token` will default to `undefined`. - `--push-tag` will default to `false`. Alternatively you can force this to diff --git a/assets/cliff-jumper.schema.json b/assets/cliff-jumper.schema.json index 378cf1e..1de8d37 100644 --- a/assets/cliff-jumper.schema.json +++ b/assets/cliff-jumper.schema.json @@ -50,6 +50,14 @@ "type": "string", "default": "./CHANGELOG.md" }, + "skipCommit": { + "description": "Repeatable, each will be treated as a new entry. A list of SHA1 commit hashes that will be skipped in the changelog.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, "githubRepo": { "description": "The GitHub repository to use for linking to issues and PRs in the changelog.\n\nYou can pass the unique string \"auto\" to automatically set this value as \"{{org}}/{{name}}\" as provided from \"--org\" and \"--name\". This should be in the format \"owner/repo\". You can use the \"GITHUB_REPO\" environment variable to automatically set this value", "type": "string" diff --git a/package.json b/package.json index 0e7651c..6c5b5d1 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "colorette": "^2.0.20", "commander": "^12.1.0", "conventional-recommended-bump": "^10.0.0", - "execa": "^9.4.0", + "execa": "^9.4.1", "git-cliff": "^2.6.1", "js-yaml": "^4.1.0", "semver": "^7.6.3", @@ -56,10 +56,10 @@ "@sapphire/prettier-config": "^2.0.0", "@sapphire/ts-config": "^5.0.1", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.16.11", + "@types/node": "^20.16.13", "@types/semver": "^7.5.8", - "@typescript-eslint/eslint-plugin": "^7.13.1", - "@typescript-eslint/parser": "^7.13.1", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", "cz-conventional-changelog": "^3.3.0", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", @@ -67,7 +67,7 @@ "lint-staged": "^15.2.10", "prettier": "^3.3.3", "rimraf": "^6.0.1", - "typescript": "~5.4.5" + "typescript": "~5.6.3" }, "engines": { "node": ">=v18" diff --git a/src/cli.ts b/src/cli.ts index 0a245a6..7ac7288 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -119,6 +119,11 @@ const command = new Command() '-cpf, --changelog-prepend-file [string]', 'The file that git-cliff should use for the --prepend flag, defaults to ./CHANGELOG.md. This should be relative to the current working directory.' ) + .option( + '--skip-commit [skipCommit...]', + 'Repeatable, each will be treated as a new entry. A list of SHA1 commit hashes that will be skipped in the changelog.', + (value: string, previous: string[]) => (previous ?? []).concat([value]) + ) .option('--github-repo', githubRepoDescription) .option( '--github-token', @@ -173,6 +178,7 @@ logVerboseInfo( `${indent}install: ${JSON.stringify(options.install)}`, `${indent}skip changelog: ${JSON.stringify(options.skipChangelog)}`, `${indent}skip tag: ${JSON.stringify(options.skipTag)}`, + `${indent}commits to be skipped: ${JSON.stringify(options.skipCommit)}`, `${indent}verbose: ${JSON.stringify(options.verbose)}`, `${indent}changelog prepend file: ${options.changelogPrependFile}`, `${indent}github repo: ${JSON.stringify(getGitHubRepo(options))}`, diff --git a/src/commands/get-conventional-bump.ts b/src/commands/get-conventional-bump.ts index 645d3df..c539819 100644 --- a/src/commands/get-conventional-bump.ts +++ b/src/commands/get-conventional-bump.ts @@ -1,11 +1,12 @@ -import { getFullPackageName } from '#lib/utils'; +import { getFullPackageName, getSHA1HashesRegexp } from '#lib/utils'; import type { Options } from 'commander'; import { Bumper, packagePrefix } from 'conventional-recommended-bump'; export async function getConventionalBump(options: Options) { const bumper = new Bumper().commits( { - path: process.cwd() + path: process.cwd(), + ignore: getSHA1HashesRegexp(options.skipCommit) }, { headerPattern: /^(\w*)(?:\((.*)\))?: (.*)$/, diff --git a/src/commands/update-changelog.ts b/src/commands/update-changelog.ts index 9ec4a82..23c76cb 100644 --- a/src/commands/update-changelog.ts +++ b/src/commands/update-changelog.ts @@ -1,4 +1,4 @@ -import { doActionAndLog, getGitHubRepo, getGitHubToken, getGitRootDirection, resolveTagTemplate } from '#lib/utils'; +import { doActionAndLog, getGitHubRepo, getGitHubToken, getGitRootDirection, getSHA1HashesArray, resolveTagTemplate } from '#lib/utils'; import { isNullishOrEmpty } from '@sapphire/utilities'; import type { Options } from 'commander'; import { runGitCliff, type Options as GitCliffOptions } from 'git-cliff'; @@ -7,29 +7,30 @@ export async function updateChangelog(options: Options, newVersion: string) { const repositoryRootDirectory = await getGitRootDirection(); return doActionAndLog('Updating Changelog', async () => { - if (!options.dryRun) { - const gitCliffOptions: GitCliffOptions = { - tag: resolveTagTemplate(options, newVersion), - prepend: options.changelogPrependFile ?? './CHANGELOG.md', - unreleased: true, - config: './cliff.toml', - output: '-' - }; + const gitCliffOptions: GitCliffOptions = { + tag: resolveTagTemplate(options, newVersion), + prepend: options.changelogPrependFile ?? './CHANGELOG.md', + unreleased: true, + config: './cliff.toml', + output: '-', + skipCommit: getSHA1HashesArray(options.skipCommit) + }; - if (!isNullishOrEmpty(repositoryRootDirectory)) { - gitCliffOptions.repository = repositoryRootDirectory; - gitCliffOptions.includePath = `${options.packagePath}/*`; - } + if (!isNullishOrEmpty(repositoryRootDirectory)) { + gitCliffOptions.repository = repositoryRootDirectory; + gitCliffOptions.includePath = `${options.packagePath}/*`; + } - const githubToken = getGitHubToken(options); - const githubRepo = getGitHubRepo(options); - if (!isNullishOrEmpty(githubRepo) && !isNullishOrEmpty(githubToken)) { - const resolvedGitHubRepo = githubRepo === 'auto' ? `${options.org}/${options.name}` : `${githubRepo}`; + const githubToken = getGitHubToken(options); + const githubRepo = getGitHubRepo(options); + if (!isNullishOrEmpty(githubRepo) && !isNullishOrEmpty(githubToken)) { + const resolvedGitHubRepo = githubRepo === 'auto' ? `${options.org}/${options.name}` : `${githubRepo}`; - gitCliffOptions.githubRepo = resolvedGitHubRepo; - gitCliffOptions.githubToken = githubToken; - } + gitCliffOptions.githubRepo = resolvedGitHubRepo; + gitCliffOptions.githubToken = githubToken; + } + if (!options.dryRun) { const result = await runGitCliff(gitCliffOptions, { stdio: options.githubRelease ? 'pipe' : 'ignore' }); return result.stdout; } diff --git a/src/lib/interfaces.d.ts b/src/lib/interfaces.d.ts index 3a6091f..a7fb1fb 100644 --- a/src/lib/interfaces.d.ts +++ b/src/lib/interfaces.d.ts @@ -19,6 +19,7 @@ declare module 'commander' { commitMessageTemplate: string; tagTemplate: string; changelogPrependFile: string; + skipCommit: string[]; githubRepo: string; githubToken: string; pushTag: boolean; diff --git a/src/lib/utils.ts b/src/lib/utils.ts index d8a6649..b64a3a8 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -175,3 +175,34 @@ export function getGitHubRepo(options: Options): string | undefined { export function getGitHubToken(options: Options): string | undefined { return process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN ?? process.env.TOKEN_GITHUB ?? process.env.TOKEN_GH ?? options.githubToken ?? undefined; } + +/** + * Gets SHA1 hashes for the given array of commits. + * + * @param commits - The array of commits to calculate the SHA1 hashes for. + * @returns The concatenated SHA1 hashes separated by a space. + */ +export function getSHA1HashesArray(commits: string[]): string[] { + return commits.filter(isValidSHA1); +} + +/** + * Generates a regular expression pattern that matches any of the SHA1 hashes in the given array of commits. + * + * @param commits - An array of SHA1 hashes representing commits. + * @returns A regular expression pattern that matches any of the SHA1 hashes. + */ +export function getSHA1HashesRegexp(commits: string[]): RegExp { + return new RegExp(getSHA1HashesArray(commits).join('|')); +} + +const sha1regex = /^[a-fA-F0-9]{40}$/; +/** + * Checks if a given string is a valid SHA1 hash. + * + * @param string - The string to be checked. + * @returns `true` if the string is a valid SHA1 hash, `false` otherwise. + */ +function isValidSHA1(string: string): boolean { + return sha1regex.test(string); +} diff --git a/yarn.lock b/yarn.lock index 60c7546..9b1c527 100644 --- a/yarn.lock +++ b/yarn.lock @@ -301,10 +301,10 @@ __metadata: "@sapphire/ts-config": "npm:^5.0.1" "@sapphire/utilities": "npm:3.17.0" "@types/js-yaml": "npm:^4.0.9" - "@types/node": "npm:^20.16.11" + "@types/node": "npm:^20.16.13" "@types/semver": "npm:^7.5.8" - "@typescript-eslint/eslint-plugin": "npm:^7.13.1" - "@typescript-eslint/parser": "npm:^7.13.1" + "@typescript-eslint/eslint-plugin": "npm:^7.18.0" + "@typescript-eslint/parser": "npm:^7.18.0" colorette: "npm:^2.0.20" commander: "npm:^12.1.0" conventional-recommended-bump: "npm:^10.0.0" @@ -312,7 +312,7 @@ __metadata: eslint: "npm:^8.57.1" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-prettier: "npm:^5.2.1" - execa: "npm:^9.4.0" + execa: "npm:^9.4.1" git-cliff: "npm:^2.6.1" js-yaml: "npm:^4.1.0" lint-staged: "npm:^15.2.10" @@ -320,7 +320,7 @@ __metadata: rimraf: "npm:^6.0.1" semver: "npm:^7.6.3" smol-toml: "npm:^1.3.0" - typescript: "npm:~5.4.5" + typescript: "npm:~5.6.3" bin: cj: ./dist/cli.js cliff-jumper: ./dist/cli.js @@ -587,7 +587,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^20.16.11": +"@types/node@npm:*": version: 20.16.11 resolution: "@types/node@npm:20.16.11" dependencies: @@ -596,6 +596,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.16.13": + version: 20.16.13 + resolution: "@types/node@npm:20.16.13" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10/6e7b82119372cc12d28fcc1b0c10d1b8fa560bbb500f87a4c68bc446a0986d42c92e0f583040167841a0c598131979c3399b17c736c9fb8ba4f0dcf2b2048a84 + languageName: node + linkType: hard + "@types/semver@npm:^7.5.5, @types/semver@npm:^7.5.8": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -603,15 +612,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.11.0, @typescript-eslint/eslint-plugin@npm:^7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/eslint-plugin@npm:7.13.1" +"@typescript-eslint/eslint-plugin@npm:^7.11.0, @typescript-eslint/eslint-plugin@npm:^7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.13.1" - "@typescript-eslint/type-utils": "npm:7.13.1" - "@typescript-eslint/utils": "npm:7.13.1" - "@typescript-eslint/visitor-keys": "npm:7.13.1" + "@typescript-eslint/scope-manager": "npm:7.18.0" + "@typescript-eslint/type-utils": "npm:7.18.0" + "@typescript-eslint/utils": "npm:7.18.0" + "@typescript-eslint/visitor-keys": "npm:7.18.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -622,44 +631,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/37fff8c302f93f5f88fc8d6e6c9151a7d1873a3c8af6e15547d737bdc066a6b8887fa54bcd8eb4e4ca6a11494051801c8e957eea8d8b4d4b078a477df6f10692 + checksum: 10/6ee4c61f145dc05f0a567b8ac01b5399ef9c75f58bc6e9a3ffca8927b15e2be2d4c3fd32a2c1a7041cc0848fdeadac30d9cb0d3bcd3835d301847a88ffd19c4d languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.11.0, @typescript-eslint/parser@npm:^7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/parser@npm:7.13.1" +"@typescript-eslint/parser@npm:^7.11.0, @typescript-eslint/parser@npm:^7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/parser@npm:7.18.0" dependencies: - "@typescript-eslint/scope-manager": "npm:7.13.1" - "@typescript-eslint/types": "npm:7.13.1" - "@typescript-eslint/typescript-estree": "npm:7.13.1" - "@typescript-eslint/visitor-keys": "npm:7.13.1" + "@typescript-eslint/scope-manager": "npm:7.18.0" + "@typescript-eslint/types": "npm:7.18.0" + "@typescript-eslint/typescript-estree": "npm:7.18.0" + "@typescript-eslint/visitor-keys": "npm:7.18.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/a76cfcf97c289110403b50a377e925f29cda74340de0526f68b0c34199ce643d9c31803e492217e0f3df28361d3019ced4806f974ea70529c559b26b70cec7ef + checksum: 10/36b00e192a96180220ba100fcce3c777fc3e61a6edbdead4e6e75a744d9f0cbe3fabb5f1c94a31cce6b28a4e4d5de148098eec01296026c3c8e16f7f0067cb1e languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/scope-manager@npm:7.13.1" +"@typescript-eslint/scope-manager@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/scope-manager@npm:7.18.0" dependencies: - "@typescript-eslint/types": "npm:7.13.1" - "@typescript-eslint/visitor-keys": "npm:7.13.1" - checksum: 10/fea9ab8f72ace1dd55d835037efe038c70021275581855820cdb7fc4b01e8afb51723856537adff1fdb0ea3899c1f8b593fd75c34b5087ca2ef2f7c72e610050 + "@typescript-eslint/types": "npm:7.18.0" + "@typescript-eslint/visitor-keys": "npm:7.18.0" + checksum: 10/9eb2ae5d69d9f723e706c16b2b97744fc016996a5473bed596035ac4d12429b3d24e7340a8235d704efa57f8f52e1b3b37925ff7c2e3384859d28b23a99b8bcc languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/type-utils@npm:7.13.1" +"@typescript-eslint/type-utils@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/type-utils@npm:7.18.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.13.1" - "@typescript-eslint/utils": "npm:7.13.1" + "@typescript-eslint/typescript-estree": "npm:7.18.0" + "@typescript-eslint/utils": "npm:7.18.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: @@ -667,23 +676,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/cc03cd44e125933511ea657e386c5cf427eb6a386fdb110cba0858598195fb4f8c71173b00b187f388a6713e16b919a2037a86e0be10f4c40c18bcbdbe06d5de + checksum: 10/bcc7958a4ecdddad8c92e17265175773e7dddf416a654c1a391e69cb16e43960b39d37b6ffa349941bf3635e050f0ca7cd8f56ec9dd774168f2bbe7afedc9676 languageName: node linkType: hard -"@typescript-eslint/types@npm:7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/types@npm:7.13.1" - checksum: 10/006a5518608184c1d017b27fb4f66ce28bc75f89e2380ac42969ebdf0dc726af1cfcdf4ba36ce2858e9f6907d6f4295d3453859d7e9a35bc7855d4ebc900955d +"@typescript-eslint/types@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/types@npm:7.18.0" + checksum: 10/0e30c73a3cc3c67dd06360a5a12fd12cee831e4092750eec3d6c031bdc4feafcb0ab1d882910a73e66b451a4f6e1dd015e9e2c4d45bf6bf716a474e5d123ddf0 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/typescript-estree@npm:7.13.1" +"@typescript-eslint/typescript-estree@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" dependencies: - "@typescript-eslint/types": "npm:7.13.1" - "@typescript-eslint/visitor-keys": "npm:7.13.1" + "@typescript-eslint/types": "npm:7.18.0" + "@typescript-eslint/visitor-keys": "npm:7.18.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -693,31 +702,31 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/5c68b5faa962e5f984067aa91770486af817858d2fa35b54a44fa4d5c0c612ba23b52b191d8051d9e4439e5425251e32861c81239e9400a29de057f8360537fb + checksum: 10/b01e66235a91aa4439d02081d4a5f8b4a7cf9cb24f26b334812f657e3c603493e5f41e5c1e89cf4efae7d64509fa1f73affc16afc5e15cb7f83f724577c82036 languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/utils@npm:7.13.1" +"@typescript-eslint/utils@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/utils@npm:7.18.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.13.1" - "@typescript-eslint/types": "npm:7.13.1" - "@typescript-eslint/typescript-estree": "npm:7.13.1" + "@typescript-eslint/scope-manager": "npm:7.18.0" + "@typescript-eslint/types": "npm:7.18.0" + "@typescript-eslint/typescript-estree": "npm:7.18.0" peerDependencies: eslint: ^8.56.0 - checksum: 10/e1bc916dcb567c6b35819f635a84561e015f40b28d650b987f74c79b013ec43fb4f5b61199d4039fcdf9480281f945f622650cba2e68739600822da05808a706 + checksum: 10/f43fedb4f4d2e3836bdf137889449063a55c0ece74fdb283929cd376197b992313be8ef4df920c1c801b5c3076b92964c84c6c3b9b749d263b648d0011f5926e languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.13.1": - version: 7.13.1 - resolution: "@typescript-eslint/visitor-keys@npm:7.13.1" +"@typescript-eslint/visitor-keys@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" dependencies: - "@typescript-eslint/types": "npm:7.13.1" + "@typescript-eslint/types": "npm:7.18.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/811e9642851359b5197d45a9878143c4c608aaef887a20c26f57f8b012ce9e316d232b82a311bdd52a2af0c8b8da5d4bd9401ce565fc7bdb43cd44556e76d225 + checksum: 10/b7cfe6fdeae86c507357ac6b2357813c64fb2fbf1aaf844393ba82f73a16e2599b41981b34200d9fc7765d70bc3a8181d76b503051e53f04bcb7c9afef637eab languageName: node linkType: hard @@ -1598,9 +1607,9 @@ __metadata: languageName: node linkType: hard -"execa@npm:^9.4.0": - version: 9.4.0 - resolution: "execa@npm:9.4.0" +"execa@npm:^9.4.1": + version: 9.4.1 + resolution: "execa@npm:9.4.1" dependencies: "@sindresorhus/merge-streams": "npm:^4.0.0" cross-spawn: "npm:^7.0.3" @@ -1614,7 +1623,7 @@ __metadata: signal-exit: "npm:^4.1.0" strip-final-newline: "npm:^4.0.0" yoctocolors: "npm:^2.0.0" - checksum: 10/a92be5d2b5baa84e6ef32fc38c620e1f4b5990399e88661563933ffbcd7be1ea28cc96bef059f14d45fee289061980c9452d2abb4786f4c6f492f04767387a67 + checksum: 10/a9b4177049ffe3d998746b789f7cd22ffc5583f789c322d8fa7601f3f630b5b27b97df6e0223c0dfb04305c639e67cbb69a8375c2529b85f5e23c03081fd47c2 languageName: node linkType: hard @@ -3488,43 +3497,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.4.2, typescript@npm:^5.4.5": - version: 5.5.2 - resolution: "typescript@npm:5.5.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/9118b20f248e76b0dbff8737fef65dfa89d02668d4e633d2c5ceac99033a0ca5e8a1c1a53bc94da68e8f67677a88f318663dde859c9e9a09c1e116415daec2ba - languageName: node - linkType: hard - -"typescript@npm:~5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^5.4.2#optional!builtin, typescript@patch:typescript@npm%3A^5.4.5#optional!builtin": - version: 5.5.2 - resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin::version=5.5.2&hash=379a07" +"typescript@npm:^5.4.2, typescript@npm:^5.4.5, typescript@npm:~5.6.3": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/ac3145f65cf9e72ab29f2196e05d5816b355dc1a9195b9f010d285182a12457cfacd068be2dd22c877f88ebc966ac6e0e83f51c8586412b16499a27e3670ff4b + checksum: 10/c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~5.4.5#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" +"typescript@patch:typescript@npm%3A^5.4.2#optional!builtin, typescript@patch:typescript@npm%3A^5.4.5#optional!builtin, typescript@patch:typescript@npm%3A~5.6.3#optional!builtin": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/760f7d92fb383dbf7dee2443bf902f4365db2117f96f875cf809167f6103d55064de973db9f78fe8f31ec08fff52b2c969aee0d310939c0a3798ec75d0bca2e1 + checksum: 10/00504c01ee42d470c23495426af07512e25e6546bce7e24572e72a9ca2e6b2e9bea63de4286c3cfea644874da1467dcfca23f4f98f7caf20f8b03c0213bb6837 languageName: node linkType: hard