From f12bbddf699234b1d1e0043e96259dadb8a946f8 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 5 Sep 2023 23:53:34 -0400 Subject: [PATCH 1/4] build: migrate to create-typescript-app@1 --- .all-contributorsrc | 395 ++- .eslintignore | 2 +- .eslintrc.cjs | 19 +- .github/CONTRIBUTING.md | 18 +- .github/DEVELOPMENT.md | 63 +- .github/ISSUE_TEMPLATE.md | 2 +- .github/ISSUE_TEMPLATE/01-bug.yml | 4 +- .github/ISSUE_TEMPLATE/02-documentation.yml | 2 +- .github/ISSUE_TEMPLATE/03-feature.yml | 4 +- .github/ISSUE_TEMPLATE/04-tooling.yml | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 6 +- .github/workflows/lint-knip.yml | 1 - ...lint-package.yml => lint-package-json.yml} | 6 +- .github/workflows/lint-packages.yml | 1 - .github/workflows/lint.yml | 1 - .github/workflows/post-release.yml | 4 +- .github/workflows/release.yml | 33 +- .gitignore | 2 +- .prettierignore | 5 +- .release-it.json | 3 - README.md | 76 +- bin/hydrate.js | 1 - codecov.yml | 5 - cspell.json | 5 +- knip.jsonc | 20 +- package.json | 76 +- pnpm-lock.yaml | 2114 +++++------------ src/greet.test.ts | 44 - src/greet.ts | 13 - src/hydrate/index.ts | 86 - src/hydrate/steps/clearUnnecessaryFiles.ts | 32 - .../steps/detectExistingContributors.ts | 14 - .../steps/finalizeDependencies.test.ts | 107 - src/hydrate/steps/finalizeDependencies.ts | 68 - src/hydrate/steps/runCommand.test.ts | 48 - src/hydrate/steps/runCommand.ts | 27 - src/hydrate/steps/writeReadme.test.ts | 96 - src/hydrate/steps/writeReadme.ts | 105 - .../creation/dotGitHub/actions.test.ts | 29 - .../writing/creation/dotGitHub/actions.ts | 28 - .../dotGitHub/createWorkflowFile.test.ts | 31 - .../creation/dotGitHub/createWorkflowFile.ts | 97 - .../steps/writing/creation/dotGitHub/index.ts | 14 - .../creation/dotGitHub/issueTemplate.ts | 210 -- .../writing/creation/dotGitHub/rootFiles.ts | 368 --- .../writing/creation/dotGitHub/workflows.ts | 263 -- .../steps/writing/creation/dotHusky.ts | 12 - .../steps/writing/creation/dotVSCode.ts | 51 - .../creation/formatters/formatIgnoreFile.ts | 3 - .../writing/creation/formatters/formatJson.ts | 5 - .../writing/creation/formatters/formatYaml.ts | 26 - src/hydrate/steps/writing/creation/index.ts | 17 - .../steps/writing/creation/rootFiles.ts | 316 --- .../creation/writeAllContributorsRC.ts | 26 - .../writing/creation/writePackageJson.test.ts | 79 - .../writing/creation/writePackageJson.ts | 117 - src/hydrate/steps/writing/types.ts | 3 - src/hydrate/steps/writing/writeStructure.ts | 7 - .../writing/writeStructureWorker.test.ts | 55 - .../steps/writing/writeStructureWorker.ts | 55 - .../values/getHydrationDefaults.test.ts | 55 - src/hydrate/values/getHydrationDefaults.ts | 24 - src/hydrate/values/hydrationInputValues.ts | 23 - src/hydrate/values/readAuthorIfExists.test.ts | 40 - src/hydrate/values/readAuthorIfExists.ts | 14 - src/hydrate/values/readEmailIfExists.test.ts | 79 - src/hydrate/values/readEmailIfExists.ts | 29 - .../values/readFundingIfExists.test.ts | 29 - src/hydrate/values/readFundingIfExists.ts | 12 - .../values/readOwnerFromGitRemote.test.ts | 29 - src/hydrate/values/readOwnerFromGitRemote.ts | 6 - .../values/readTitleFromReadme.test.ts | 33 - src/hydrate/values/readTitleFromReadme.ts | 10 - src/hydrate/values/types.ts | 14 - src/index.ts | 5 +- src/sentences-per-line.test.ts | 40 + src/sentences-per-line.ts | 129 + src/setup/index.ts | 3 - .../settings/addOwnerAsAllContributor.ts | 68 - src/setup/setup.ts | 10 - src/setup/setupWithInformation.ts | 85 - src/setup/steps/clearChangelog.ts | 9 - .../hydrateBranchProtectionSettings.test.ts | 36 - .../steps/hydrateBranchProtectionSettings.ts | 51 - src/setup/steps/hydrateRepositorySettings.ts | 35 - .../labels/getExistingEquivalentLabel.test.ts | 47 - .../labels/getExistingEquivalentLabel.ts | 19 - .../labels/hydrateRepositoryLabels.test.ts | 107 - .../steps/labels/hydrateRepositoryLabels.ts | 38 - src/setup/steps/labels/outcomeLabels.ts | 84 - src/setup/steps/removeSetupScripts.ts | 17 - src/setup/steps/resetGitTags.ts | 13 - src/setup/steps/uninstallPackages.ts | 7 - src/setup/steps/updateAllContributorsTable.ts | 25 - src/setup/steps/updateLocalFiles.ts | 82 - src/setup/steps/updateReadme.ts | 14 - src/shared/PrefillPrompter.test.ts | 75 - src/shared/PrefillPrompter.ts | 44 - src/shared/cli/lines.ts | 5 - src/shared/cli/spinners.ts | 43 - src/shared/ensureRepositoryExists.test.ts | 96 - src/shared/ensureRepositoryExists.ts | 70 - src/shared/getDefaultSettings.test.ts | 34 - src/shared/getDefaultSettings.ts | 26 - src/shared/getNpmAuthor.test.ts | 63 - src/shared/getNpmAuthor.ts | 21 - src/shared/getNpmUserInfo.test.ts | 56 - src/shared/getNpmUserInfo.ts | 38 - src/shared/getOctokit.ts | 35 - src/shared/inputs.ts | 138 -- src/shared/optionalDefault.test.ts | 31 - src/shared/optionalDefault.ts | 14 - src/shared/prompts.ts | 15 - src/shared/readFileAsJson.test.ts | 36 - src/shared/readFileAsJson.ts | 12 - src/shared/readFileSafe.test.ts | 29 - src/shared/readFileSafe.ts | 9 - src/shared/readFileSafeAsJson.ts | 5 - src/shared/runOrRestore.test.ts | 92 - src/shared/runOrRestore.ts | 95 - src/shared/types.ts | 3 - src/types.ts | 5 - tsconfig.json | 5 +- tsup.config.ts | 6 +- vitest.config.ts | 1 - 125 files changed, 1105 insertions(+), 6640 deletions(-) rename .github/workflows/{lint-package.yml => lint-package-json.yml} (68%) delete mode 100644 codecov.yml delete mode 100644 src/greet.test.ts delete mode 100644 src/greet.ts delete mode 100644 src/hydrate/index.ts delete mode 100644 src/hydrate/steps/clearUnnecessaryFiles.ts delete mode 100644 src/hydrate/steps/detectExistingContributors.ts delete mode 100644 src/hydrate/steps/finalizeDependencies.test.ts delete mode 100644 src/hydrate/steps/finalizeDependencies.ts delete mode 100644 src/hydrate/steps/runCommand.test.ts delete mode 100644 src/hydrate/steps/runCommand.ts delete mode 100644 src/hydrate/steps/writeReadme.test.ts delete mode 100644 src/hydrate/steps/writeReadme.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/actions.test.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/actions.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.test.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/index.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/issueTemplate.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/rootFiles.ts delete mode 100644 src/hydrate/steps/writing/creation/dotGitHub/workflows.ts delete mode 100644 src/hydrate/steps/writing/creation/dotHusky.ts delete mode 100644 src/hydrate/steps/writing/creation/dotVSCode.ts delete mode 100644 src/hydrate/steps/writing/creation/formatters/formatIgnoreFile.ts delete mode 100644 src/hydrate/steps/writing/creation/formatters/formatJson.ts delete mode 100644 src/hydrate/steps/writing/creation/formatters/formatYaml.ts delete mode 100644 src/hydrate/steps/writing/creation/index.ts delete mode 100644 src/hydrate/steps/writing/creation/rootFiles.ts delete mode 100644 src/hydrate/steps/writing/creation/writeAllContributorsRC.ts delete mode 100644 src/hydrate/steps/writing/creation/writePackageJson.test.ts delete mode 100644 src/hydrate/steps/writing/creation/writePackageJson.ts delete mode 100644 src/hydrate/steps/writing/types.ts delete mode 100644 src/hydrate/steps/writing/writeStructure.ts delete mode 100644 src/hydrate/steps/writing/writeStructureWorker.test.ts delete mode 100644 src/hydrate/steps/writing/writeStructureWorker.ts delete mode 100644 src/hydrate/values/getHydrationDefaults.test.ts delete mode 100644 src/hydrate/values/getHydrationDefaults.ts delete mode 100644 src/hydrate/values/hydrationInputValues.ts delete mode 100644 src/hydrate/values/readAuthorIfExists.test.ts delete mode 100644 src/hydrate/values/readAuthorIfExists.ts delete mode 100644 src/hydrate/values/readEmailIfExists.test.ts delete mode 100644 src/hydrate/values/readEmailIfExists.ts delete mode 100644 src/hydrate/values/readFundingIfExists.test.ts delete mode 100644 src/hydrate/values/readFundingIfExists.ts delete mode 100644 src/hydrate/values/readOwnerFromGitRemote.test.ts delete mode 100644 src/hydrate/values/readOwnerFromGitRemote.ts delete mode 100644 src/hydrate/values/readTitleFromReadme.test.ts delete mode 100644 src/hydrate/values/readTitleFromReadme.ts delete mode 100644 src/hydrate/values/types.ts create mode 100644 src/sentences-per-line.test.ts create mode 100644 src/sentences-per-line.ts delete mode 100644 src/setup/index.ts delete mode 100644 src/setup/settings/addOwnerAsAllContributor.ts delete mode 100644 src/setup/setup.ts delete mode 100644 src/setup/setupWithInformation.ts delete mode 100644 src/setup/steps/clearChangelog.ts delete mode 100644 src/setup/steps/hydrateBranchProtectionSettings.test.ts delete mode 100644 src/setup/steps/hydrateBranchProtectionSettings.ts delete mode 100644 src/setup/steps/hydrateRepositorySettings.ts delete mode 100644 src/setup/steps/labels/getExistingEquivalentLabel.test.ts delete mode 100644 src/setup/steps/labels/getExistingEquivalentLabel.ts delete mode 100644 src/setup/steps/labels/hydrateRepositoryLabels.test.ts delete mode 100644 src/setup/steps/labels/hydrateRepositoryLabels.ts delete mode 100644 src/setup/steps/labels/outcomeLabels.ts delete mode 100644 src/setup/steps/removeSetupScripts.ts delete mode 100644 src/setup/steps/resetGitTags.ts delete mode 100644 src/setup/steps/uninstallPackages.ts delete mode 100644 src/setup/steps/updateAllContributorsTable.ts delete mode 100644 src/setup/steps/updateLocalFiles.ts delete mode 100644 src/setup/steps/updateReadme.ts delete mode 100644 src/shared/PrefillPrompter.test.ts delete mode 100644 src/shared/PrefillPrompter.ts delete mode 100644 src/shared/cli/lines.ts delete mode 100644 src/shared/cli/spinners.ts delete mode 100644 src/shared/ensureRepositoryExists.test.ts delete mode 100644 src/shared/ensureRepositoryExists.ts delete mode 100644 src/shared/getDefaultSettings.test.ts delete mode 100644 src/shared/getDefaultSettings.ts delete mode 100644 src/shared/getNpmAuthor.test.ts delete mode 100644 src/shared/getNpmAuthor.ts delete mode 100644 src/shared/getNpmUserInfo.test.ts delete mode 100644 src/shared/getNpmUserInfo.ts delete mode 100644 src/shared/getOctokit.ts delete mode 100644 src/shared/inputs.ts delete mode 100644 src/shared/optionalDefault.test.ts delete mode 100644 src/shared/optionalDefault.ts delete mode 100644 src/shared/prompts.ts delete mode 100644 src/shared/readFileAsJson.test.ts delete mode 100644 src/shared/readFileAsJson.ts delete mode 100644 src/shared/readFileSafe.test.ts delete mode 100644 src/shared/readFileSafe.ts delete mode 100644 src/shared/readFileSafeAsJson.ts delete mode 100644 src/shared/runOrRestore.test.ts delete mode 100644 src/shared/runOrRestore.ts delete mode 100644 src/shared/types.ts delete mode 100644 src/types.ts diff --git a/.all-contributorsrc b/.all-contributorsrc index 17e83094..b487da76 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1,230 +1,169 @@ { - "badgeTemplate": "\"All 🤝\" src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>_🤝-21bb42.svg\" />", - "commit": false, - "commitConvention": "angular", - "contributors": [ - { - "avatar_url": "https://avatars.githubusercontent.com/u/3335181?v=4", - "contributions": [ - "bug", - "code", - "maintenance", - "review", - "tool", - "doc", - "infra", - "test" - ], - "login": "JoshuaKGoldberg", - "name": "Josh Goldberg", - "profile": "http://www.joshuakgoldberg.com" - }, - { - "login": "sinchang", - "name": "Jeff Wen", - "avatar_url": "https://avatars.githubusercontent.com/u/3297859?v=4", - "profile": "https://sinchang.me", - "contributions": [ - "code" - ] - }, - { - "login": "Pinjasaur", - "name": "Paul Esch-Laurent", - "avatar_url": "https://avatars.githubusercontent.com/u/6335792?v=4", - "profile": "https://paulisaweso.me/", - "contributions": [ - "code" - ] - }, - { - "login": "NazCodeland", - "name": "NazCodeland", - "avatar_url": "https://avatars.githubusercontent.com/u/113494366?v=4", - "profile": "https://github.com/NazCodeland", - "contributions": [ - "code" - ] - }, - { - "login": "johnnyreilly", - "name": "John Reilly", - "avatar_url": "https://avatars.githubusercontent.com/u/1010525?v=4", - "profile": "https://blog.johnnyreilly.com/", - "contributions": [ - "code" - ] - }, - { - "login": "webpro", - "name": "Lars Kappert", - "avatar_url": "https://avatars.githubusercontent.com/u/456426?v=4", - "profile": "https://webpro.nl", - "contributions": [ - "code" - ] - }, - { - "login": "RebeccaStevens", - "name": "Rebecca Stevens", - "avatar_url": "https://avatars.githubusercontent.com/u/7224206?v=4", - "profile": "https://github.com/RebeccaStevens", - "contributions": [ - "code", - "infra" - ] - }, - { - "login": "ronthetech", - "name": "Ron Jean-Francois", - "avatar_url": "https://avatars.githubusercontent.com/u/105710107?v=4", - "profile": "http://ronjeanfrancois.com", - "contributions": [ - "code", - "infra" - ] - }, - { - "login": "nowyDEV", - "name": "Dominik Nowik", - "avatar_url": "https://avatars.githubusercontent.com/u/12304307?v=4", - "profile": "https://github.com/nowyDEV", - "contributions": [ - "tool", - "code" - ] - }, - { - "login": "TAKANOME-DEV", - "name": "takanomedev", - "avatar_url": "https://avatars.githubusercontent.com/u/79809121?v=4", - "profile": "https://github.com/TAKANOME-DEV", - "contributions": [ - "code" - ] - }, - { - "login": "emday4prez", - "name": "Emerson", - "avatar_url": "https://avatars.githubusercontent.com/u/35363144?v=4", - "profile": "https://github.com/emday4prez", - "contributions": [ - "code" - ] - }, - { - "login": "jsjoeio", - "name": "Joe Previte", - "avatar_url": "https://avatars.githubusercontent.com/u/3806031?v=4", - "profile": "https://typescriptcourse.com/tutorials", - "contributions": [ - "bug", - "code" - ] - }, - { - "login": "navin-moorthy", - "name": "Navin Moorthy", - "avatar_url": "https://avatars.githubusercontent.com/u/39694575?v=4", - "profile": "https://navinmoorthy.me/", - "contributions": [ - "bug", - "code" - ] - }, - { - "login": "garuna-m6", - "name": "Anurag", - "avatar_url": "https://avatars.githubusercontent.com/u/23234342?v=4", - "profile": "https://github.com/garuna-m6", - "contributions": [ - "code" - ] - }, - { - "login": "danielroe", - "name": "Daniel Roe", - "avatar_url": "https://avatars.githubusercontent.com/u/28706372?v=4", - "profile": "https://roe.dev/", - "contributions": [ - "code" - ] - }, - { - "login": "the-lazy-learner", - "name": "Sudhansu", - "avatar_url": "https://avatars.githubusercontent.com/u/13695177?v=4", - "profile": "https://github.com/the-lazy-learner", - "contributions": [ - "code" - ] - }, - { - "login": "RNR1", - "name": "Ron Braha", - "avatar_url": "https://avatars.githubusercontent.com/u/45559220?v=4", - "profile": "https://linktr.ee/ronbraha", - "contributions": [ - "code", - "design", - "test" - ] - }, - { - "login": "tungbq", - "name": "Tung Bui (Leo)", - "avatar_url": "https://avatars.githubusercontent.com/u/85242618?v=4", - "profile": "https://github.com/tungbq", - "contributions": [ - "code" - ] - }, - { - "login": "orta", - "name": "Orta Therox", - "avatar_url": "https://avatars.githubusercontent.com/u/49038?v=4", - "profile": "https://orta.io", - "contributions": [ - "code" - ] - }, - { - "login": "promise-dash", - "name": "Promise Dash", - "avatar_url": "https://avatars.githubusercontent.com/u/86062880?v=4", - "profile": "https://github.com/promise-dash", - "contributions": [ - "code" - ] - }, - { - "login": "jolg42", - "name": "Joël Galeran", - "avatar_url": "https://avatars.githubusercontent.com/u/1328733?v=4", - "profile": "https://twitter.com/Jolg42", - "contributions": [ - "code" - ] - }, - { - "login": "kristo-baricevic", - "name": "Kristo Baricevic", - "avatar_url": "https://avatars.githubusercontent.com/u/108290619?v=4", - "profile": "https://kristo-baricevic.github.io/", - "contributions": [ - "code" - ] - } - ], - "contributorsPerLine": 7, - "contributorsSortAlphabetically": true, - "files": [ - "README.md" - ], - "imageSize": 100, - "projectName": "template-typescript-node-package", - "projectOwner": "JoshuaKGoldberg", - "repoHost": "https://github.com", - "repoType": "github", - "commitType": "docs" + "badgeTemplate": "\"All\" src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>-21bb42.svg\" />", + "commit": false, + "commitConvention": "angular", + "contributors": [ + { + "avatar_url": "https://avatars.githubusercontent.com/u/3335181?v=4", + "contributions": ["maintenance", "tool"], + "login": "JoshuaKGoldberg", + "name": "Josh Goldberg", + "profile": "http://www.joshuakgoldberg.com" + }, + { + "login": "sinchang", + "name": "Jeff Wen", + "avatar_url": "https://avatars.githubusercontent.com/u/3297859?v=4", + "profile": "https://sinchang.me", + "contributions": ["code"] + }, + { + "login": "Pinjasaur", + "name": "Paul Esch-Laurent", + "avatar_url": "https://avatars.githubusercontent.com/u/6335792?v=4", + "profile": "https://paulisaweso.me/", + "contributions": ["code"] + }, + { + "login": "NazCodeland", + "name": "NazCodeland", + "avatar_url": "https://avatars.githubusercontent.com/u/113494366?v=4", + "profile": "https://github.com/NazCodeland", + "contributions": ["code"] + }, + { + "login": "johnnyreilly", + "name": "John Reilly", + "avatar_url": "https://avatars.githubusercontent.com/u/1010525?v=4", + "profile": "https://blog.johnnyreilly.com/", + "contributions": ["code"] + }, + { + "login": "webpro", + "name": "Lars Kappert", + "avatar_url": "https://avatars.githubusercontent.com/u/456426?v=4", + "profile": "https://webpro.nl", + "contributions": ["code"] + }, + { + "login": "RebeccaStevens", + "name": "Rebecca Stevens", + "avatar_url": "https://avatars.githubusercontent.com/u/7224206?v=4", + "profile": "https://github.com/RebeccaStevens", + "contributions": ["code", "infra"] + }, + { + "login": "ronthetech", + "name": "Ron Jean-Francois", + "avatar_url": "https://avatars.githubusercontent.com/u/105710107?v=4", + "profile": "http://ronjeanfrancois.com", + "contributions": ["code", "infra"] + }, + { + "login": "nowyDEV", + "name": "Dominik Nowik", + "avatar_url": "https://avatars.githubusercontent.com/u/12304307?v=4", + "profile": "https://github.com/nowyDEV", + "contributions": ["tool", "code"] + }, + { + "login": "TAKANOME-DEV", + "name": "takanomedev", + "avatar_url": "https://avatars.githubusercontent.com/u/79809121?v=4", + "profile": "https://github.com/TAKANOME-DEV", + "contributions": ["code"] + }, + { + "login": "emday4prez", + "name": "Emerson", + "avatar_url": "https://avatars.githubusercontent.com/u/35363144?v=4", + "profile": "https://github.com/emday4prez", + "contributions": ["code"] + }, + { + "login": "jsjoeio", + "name": "Joe Previte", + "avatar_url": "https://avatars.githubusercontent.com/u/3806031?v=4", + "profile": "https://typescriptcourse.com/tutorials", + "contributions": ["bug", "code"] + }, + { + "login": "navin-moorthy", + "name": "Navin Moorthy", + "avatar_url": "https://avatars.githubusercontent.com/u/39694575?v=4", + "profile": "https://navinmoorthy.me/", + "contributions": ["bug", "code"] + }, + { + "login": "garuna-m6", + "name": "Anurag", + "avatar_url": "https://avatars.githubusercontent.com/u/23234342?v=4", + "profile": "https://github.com/garuna-m6", + "contributions": ["code"] + }, + { + "login": "danielroe", + "name": "Daniel Roe", + "avatar_url": "https://avatars.githubusercontent.com/u/28706372?v=4", + "profile": "https://roe.dev/", + "contributions": ["code"] + }, + { + "login": "the-lazy-learner", + "name": "Sudhansu", + "avatar_url": "https://avatars.githubusercontent.com/u/13695177?v=4", + "profile": "https://github.com/the-lazy-learner", + "contributions": ["code"] + }, + { + "login": "RNR1", + "name": "Ron Braha", + "avatar_url": "https://avatars.githubusercontent.com/u/45559220?v=4", + "profile": "https://linktr.ee/ronbraha", + "contributions": ["code", "design", "test"] + }, + { + "login": "tungbq", + "name": "Tung Bui (Leo)", + "avatar_url": "https://avatars.githubusercontent.com/u/85242618?v=4", + "profile": "https://github.com/tungbq", + "contributions": ["code"] + }, + { + "login": "orta", + "name": "Orta Therox", + "avatar_url": "https://avatars.githubusercontent.com/u/49038?v=4", + "profile": "https://orta.io", + "contributions": ["code"] + }, + { + "login": "promise-dash", + "name": "Promise Dash", + "avatar_url": "https://avatars.githubusercontent.com/u/86062880?v=4", + "profile": "https://github.com/promise-dash", + "contributions": ["code"] + }, + { + "login": "jolg42", + "name": "Joël Galeran", + "avatar_url": "https://avatars.githubusercontent.com/u/1328733?v=4", + "profile": "https://twitter.com/Jolg42", + "contributions": ["code"] + }, + { + "login": "kristo-baricevic", + "name": "Kristo Baricevic", + "avatar_url": "https://avatars.githubusercontent.com/u/108290619?v=4", + "profile": "https://kristo-baricevic.github.io/", + "contributions": ["code"] + } + ], + "contributorsPerLine": 7, + "contributorsSortAlphabetically": true, + "files": ["README.md"], + "imageSize": 100, + "projectName": "sentences-per-line", + "projectOwner": "JoshuaKGoldberg", + "repoHost": "https://github.com", + "repoType": "github" } diff --git a/.eslintignore b/.eslintignore index 06a1beac..9425b10c 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,5 @@ !.* -coverage* +coverage lib node_modules pnpm-lock.yaml diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 64d3a580..a08ecefe 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,13 +1,3 @@ -/* -👋 Hi! This ESLint configuration contains a lot more stuff than many repos'! -You can read from it to see all sorts of linting goodness, but don't worry - -it's not something you need to exhaustively understand immediately. 💙 - -If you're interested in learning more, see the 'getting started' docs on: -- ESLint: https://eslint.org -- typescript-eslint: https://typescript-eslint.io -*/ - /** @type {import("@types/eslint").Linter.Config} */ module.exports = { env: { @@ -65,16 +55,15 @@ module.exports = { project: "./tsconfig.eslint.json", }, rules: { - // These off-by-default rules work well for this repo and we like them on. - "deprecation/deprecation": "error", - - // These more-strict-by-default rules don't work well for this repo and we like them less strict. + // These rules need configuring for this repo and we like them on. "@typescript-eslint/no-unnecessary-condition": [ "error", { allowConstantLoopConditions: true, }, ], + // These off-by-default rules work well for this repo and we like them on. + "deprecation/deprecation": "error", }, }, { @@ -100,6 +89,7 @@ module.exports = { "@typescript-eslint/no-unsafe-call": "off", }, }, + { extends: ["plugin:yml/standard", "plugin:yml/prettier"], files: ["**/*.{yml,yaml}"], @@ -134,6 +124,7 @@ module.exports = { "regexp", "vitest", ], + reportUnusedDisableDirectives: true, root: true, rules: { // These off/less-strict-by-default rules work well for this repo and we like them on. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index ce9b8e31..411e0280 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing -Thanks for your interest in contributing to `template-typescript-node-package`! 💖 +Thanks for your interest in contributing to `sentences-per-line`! 💖 > After this page, see [DEVELOPMENT.md](./DEVELOPMENT.md) for local development instructions. @@ -10,7 +10,7 @@ This project contains a [Contributor Covenant code of conduct](./CODE_OF_CONDUCT ## Reporting Issues -Please do [report an issue on the issue tracker](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues/new/choose) if there's any bugfix, documentation improvement, or general enhancement you'd like to see in the repository! Please fully fill out all required fields in the most appropriate issue form. +Please do [report an issue on the issue tracker](https://github.com/JoshuaKGoldberg/sentences-per-line/issues/new/choose) if there's any bugfix, documentation improvement, or general enhancement you'd like to see in the repository! Please fully fill out all required fields in the most appropriate issue form. ## Sending Contributions @@ -22,10 +22,18 @@ There are two steps involved: ### Finding an Issue -With the exception of very small typos, all changes to this repository generally need to correspond to an [open issue marked as `accepting prs` on the issue tracker](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22). -If this is your first time contributing, consider searching for [unassigned issues that also have the `good first issue` label](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22+label%3A%22good+first+issue%22+no%3Aassignee). +With the exception of very small typos, all changes to this repository generally need to correspond to an [open issue marked as `accepting prs` on the issue tracker](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22). +If this is your first time contributing, consider searching for [unassigned issues that also have the `good first issue` label](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22+label%3A%22good+first+issue%22+no%3Aassignee). If the issue you'd like to fix isn't found on the issue, see [Reporting Issues](#reporting-issues) for filing your own (please do!). +#### Issue Claiming + +We don't use any kind of issue claiming system. +We've found in the past that they result in accidental ["licked cookie"](https://devblogs.microsoft.com/oldnewthing/20091201-00/?p=15843) situations where contributors claim an issue but run out of time or energy trying before sending a PR. + +If an issue has been marked as `accepting prs` and an open PR does not exist, feel free to send a PR. +You don't need to ask for permission. + ### Sending a Pull Request Once you've identified an open issue accepting PRs that doesn't yet have a PR sent, you're free to send a pull request. @@ -34,7 +42,7 @@ Be sure to fill out the pull request template's requested information -- otherwi PRs are also expected to have a title that adheres to [commitlint](https://github.com/conventional-changelog/commitlint). Only PR titles need to be in that format, not individual commits. Don't worry if you get this wrong: you can always change the PR title after sending it. -Check [previously merged PRs](https://github.com/JoshuaKGoldberg/template-typescript-node-package/pulls?q=is%3Apr+is%3Amerged+-label%3Adependencies+) for reference. +Check [previously merged PRs](https://github.com/JoshuaKGoldberg/sentences-per-line/pulls?q=is%3Apr+is%3Amerged+-label%3Adependencies+) for reference. #### Draft PRs diff --git a/.github/DEVELOPMENT.md b/.github/DEVELOPMENT.md index 55e6aab5..a5ec6d8e 100644 --- a/.github/DEVELOPMENT.md +++ b/.github/DEVELOPMENT.md @@ -3,8 +3,8 @@ After [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo) and [installing pnpm](https://pnpm.io/installation): ```shell -git clone https://github.com//template-typescript-node-package -cd template-typescript-node-package +git clone https://github.com//sentences-per-line +cd sentences-per-line pnpm install ``` @@ -13,7 +13,7 @@ pnpm install ## Building -Run [[**tsup**](https://tsup.egoist.dev) locally to build source files from `src/` into output files in `lib/`: +Run [**tsup**](https://tsup.egoist.dev) locally to build source files from `src/` into output files in `lib/`: ```shell pnpm build @@ -41,12 +41,20 @@ pnpm format:write This package includes several forms of linting to enforce consistent code quality and styling. Each should be shown in VS Code, and can be run manually on the command-line: +- `pnpm lint` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files - `pnpm lint:knip` ([knip](https://github.com/webpro/knip)): Detects unused files, dependencies, and code exports - `pnpm lint:md` ([Markdownlint](https://github.com/DavidAnson/markdownlint)): Checks Markdown source files -- `pnpm lint:package` ([npm-package-json-lint](https://npmpackagejsonlint.org/)): Lints the `package.json` file +- `pnpm lint:package-json` ([npm-package-json-lint](https://npmpackagejsonlint.org/)): Lints the `package.json` file - `pnpm lint:packages` ([pnpm dedupe --check](https://pnpm.io/cli/dedupe)): Checks for unnecessarily duplicated packages in the `pnpm-lock.yml` file - `pnpm lint:spelling` ([cspell](https://cspell.org)): Spell checks across all source files -- `pnpm lint` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files + +Read the individual documentation for each linter to understand how it can be configured and used best. + +For example, ESLint can be run with `--fix` to auto-fix some lint rule complaints: + +```shell +pnpm run lint --fix +``` ## Testing @@ -86,48 +94,3 @@ Add `--watch` to keep the type checker running in a watch mode that updates the ```shell pnpm tsc --watch ``` - -## The Hydration Script - -This template's "hydration" script is located in `src/hydrate/`. -It needs to be [built](#building) before it can be run. - -Be warned that running the hydration script in a repository -including this one- will modify that repository. -To test out the script, you may want to create a new test repository to run on: - -```shell -cd .. -mkdir temp -cd temp -echo node_modules > .gitignore -git init -npm init --yes -``` - -Then, in that directory, you can directly call the hydration script: - -```shell -node ../template-typescript-node-package/lib/hydrate/index.js -- description "Hooray, trying things out locally." -``` - -Along with the hydration script itself, end-to-end tests are removed on package setup. - -## The Setup Script - -This template's "setup" script is located in `script/`. - -### Testing the Setup Script - -This template source includes an "end-to-end" test for `script/setup.js`. -You can run it locally on the command-line: - -```shell -pnpm run setup:test -``` - -That end-to-end test executes `script/setup-test-e2e.js`, which: - -1. Runs the setup script using `--skip-api` -2. Checks that the local repository's files were changed correctly (e.g. removed setup-only files) - -Along with the setup script itself, end-to-end tests are removed on package setup. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index c81c05dc..892e28be 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1,5 @@ - + diff --git a/.github/ISSUE_TEMPLATE/01-bug.yml b/.github/ISSUE_TEMPLATE/01-bug.yml index 327da0b1..c0888780 100644 --- a/.github/ISSUE_TEMPLATE/01-bug.yml +++ b/.github/ISSUE_TEMPLATE/01-bug.yml @@ -7,7 +7,7 @@ body: required: true - label: I have pulled the latest `main` branch of the repository. required: true - - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aissue) and found none that matched my issue. + - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aissue) and found none that matched my issue. required: true type: checkboxes - attributes: @@ -29,5 +29,5 @@ body: description: Report a bug trying to run the code labels: - "type: bug" -name: 🐛 Report a Bug +name: 🐛 Bug title: "🐛 Bug: " diff --git a/.github/ISSUE_TEMPLATE/02-documentation.yml b/.github/ISSUE_TEMPLATE/02-documentation.yml index 9d3de670..180a0c0f 100644 --- a/.github/ISSUE_TEMPLATE/02-documentation.yml +++ b/.github/ISSUE_TEMPLATE/02-documentation.yml @@ -5,7 +5,7 @@ body: options: - label: I have pulled the latest `main` branch of the repository. required: true - - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aissue) and found none that matched my issue. + - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aissue) and found none that matched my issue. required: true type: checkboxes - attributes: diff --git a/.github/ISSUE_TEMPLATE/03-feature.yml b/.github/ISSUE_TEMPLATE/03-feature.yml index bbdc34a5..5fff8e71 100644 --- a/.github/ISSUE_TEMPLATE/03-feature.yml +++ b/.github/ISSUE_TEMPLATE/03-feature.yml @@ -7,7 +7,7 @@ body: required: true - label: I have pulled the latest `main` branch of the repository. required: true - - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aissue) and found none that matched my issue. + - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aissue) and found none that matched my issue. required: true type: checkboxes - attributes: @@ -23,5 +23,5 @@ body: description: Request that a new feature be added or an existing feature improved labels: - "type: feature" -name: 🚀 Request a Feature +name: 🚀 Feature title: "🚀 Feature: " diff --git a/.github/ISSUE_TEMPLATE/04-tooling.yml b/.github/ISSUE_TEMPLATE/04-tooling.yml index b70e426f..ae5190e4 100644 --- a/.github/ISSUE_TEMPLATE/04-tooling.yml +++ b/.github/ISSUE_TEMPLATE/04-tooling.yml @@ -7,7 +7,7 @@ body: required: true - label: I have pulled the latest `main` branch of the repository. required: true - - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aissue) and found none that matched my issue. + - label: I have [searched for related issues](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aissue) and found none that matched my issue. required: true type: checkboxes - attributes: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a31a3a54..92300870 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,12 +1,12 @@ - ## PR Checklist - [ ] Addresses an existing open issue: fixes #000 -- [ ] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22) -- [ ] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/template-typescript-node-package/blob/main/.github/CONTRIBUTING.md) were taken +- [ ] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22) +- [ ] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/sentences-per-line/blob/main/.github/CONTRIBUTING.md) were taken ## Overview diff --git a/.github/workflows/lint-knip.yml b/.github/workflows/lint-knip.yml index 4519467a..37aed604 100644 --- a/.github/workflows/lint-knip.yml +++ b/.github/workflows/lint-knip.yml @@ -4,7 +4,6 @@ jobs: steps: - uses: actions/checkout@v3 - uses: ./.github/actions/prepare - - run: pnpm build || true - run: pnpm lint:knip name: Lint Knip diff --git a/.github/workflows/lint-package.yml b/.github/workflows/lint-package-json.yml similarity index 68% rename from .github/workflows/lint-package.yml rename to .github/workflows/lint-package-json.yml index 446c7d77..e0aba606 100644 --- a/.github/workflows/lint-package.yml +++ b/.github/workflows/lint-package-json.yml @@ -1,12 +1,12 @@ jobs: - lint_package: + lint_package_json: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: ./.github/actions/prepare - - run: pnpm lint:package + - run: pnpm lint:package-json -name: Lint Package +name: Lint Package JSON on: pull_request: ~ diff --git a/.github/workflows/lint-packages.yml b/.github/workflows/lint-packages.yml index c6f694d9..87543683 100644 --- a/.github/workflows/lint-packages.yml +++ b/.github/workflows/lint-packages.yml @@ -10,7 +10,6 @@ name: Lint Packages on: pull_request: ~ - push: branches: - main diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5c4018c9..e84889b8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -4,7 +4,6 @@ jobs: steps: - uses: actions/checkout@v3 - uses: ./.github/actions/prepare - - run: pnpm build || true - run: pnpm lint name: Lint diff --git a/.github/workflows/post-release.yml b/.github/workflows/post-release.yml index ad0a54e3..b10abd9e 100644 --- a/.github/workflows/post-release.yml +++ b/.github/workflows/post-release.yml @@ -14,8 +14,8 @@ jobs: The release is available on: - * [GitHub releases](https://github.com/JoshuaKGoldberg/template-typescript-node-package/releases/tag/{release_tag}) - * [npm package (@latest dist-tag)](https://www.npmjs.com/package/template-typescript-node-package/v/${{ env.npm_version }}) + * [GitHub releases](https://github.com/JoshuaKGoldberg/sentences-per-line/releases/tag/{release_tag}) + * [npm package (@latest dist-tag)](https://www.npmjs.com/package/sentences-per-line/v/${{ env.npm_version }}) Cheers! 📦🚀 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index faa3f328..54ff1e20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: script: | try { await github.request( - `DELETE /repos/JoshuaKGoldberg/template-typescript-node-package/branches/main/protection`, + `DELETE /repos/JoshuaKGoldberg/sentences-per-line/branches/main/protection`, ); } catch (error) { if (!error.message?.includes?.("Branch not protected")) { @@ -35,6 +35,7 @@ jobs: run: | if pnpm run should-semantic-release ; then pnpm release-it --verbose + gh workflow run post-release.yml fi - if: always() name: Recreate branch protection on main @@ -43,7 +44,7 @@ jobs: github-token: ${{ secrets.ACCESS_TOKEN }} script: | github.request( - `PUT /repos/JoshuaKGoldberg/template-typescript-node-package/branches/main/protection`, + `PUT /repos/JoshuaKGoldberg/sentences-per-line/branches/main/protection`, { allow_deletions: false, allow_force_pushes: true, @@ -53,24 +54,24 @@ jobs: branch: "main", enforce_admins: false, owner: "JoshuaKGoldberg", - repo: "template-typescript-node-package", + repo: "sentences-per-line", required_conversation_resolution: true, required_linear_history: false, required_pull_request_reviews: null, required_status_checks: { - checks: [ - { context: "build" }, - { context: "compliance" }, - { context: "lint" }, - { context: "lint_knip" }, - { context: "lint_markdown" }, - { context: "lint_package" }, - { context: "lint_packages" }, - { context: "lint_spelling" }, - { context: "prettier" }, - { context: "test" }, - ], - strict: false, + checks: [ + { context: "build" }, + { context: "compliance" }, + { context: "lint" }, + { context: "lint_knip" }, + { context: "lint_markdown" }, + { context: "lint_package_json" }, + { context: "lint_packages" }, + { context: "lint_spelling" }, + { context: "prettier" }, + { context: "test" }, + ], + strict: false, }, restrictions: null, } diff --git a/.gitignore b/.gitignore index 32ffbca9..a8bff3bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -coverage*/ +coverage/ lib/ node_modules/ diff --git a/.prettierignore b/.prettierignore index fb77bd67..37616903 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,3 @@ -coverage*/ +coverage/ lib/ pnpm-lock.yaml - -# See https://github.com/all-contributors/cli/issues/347 -.all-contributorsrc diff --git a/.release-it.json b/.release-it.json index 35e18fbd..0367a363 100644 --- a/.release-it.json +++ b/.release-it.json @@ -7,8 +7,5 @@ "autoGenerate": true, "release": true, "releaseName": "v${version}" - }, - "npm": { - "publishArgs": ["--provenance"] } } diff --git a/README.md b/README.md index 38c12b09..096d087b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,30 @@ -

Template TypeScript Node Package

+

sentences-per-line

+ +

Contributed markdownlint rule for limiting sentence per line. 📐

+ +

+ + + +All Contributors: 22 + + + + + Codecov Test Coverage + + + Contributor Covenant + + + License: MIT + + + Sponsor: On GitHub + + Style: Prettier + TypeScript: Strict +

A quickstart-friendly TypeScript template with comprehensive formatting, linting, releases, testing, and other great tooling built-in. ✨

@@ -164,34 +190,34 @@ Thanks! 💖 - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - +
Anurag
Anurag

💻
Daniel Roe
Daniel Roe

💻
Dominik Nowik
Dominik Nowik

🔧 💻
Emerson
Emerson

💻
Jeff Wen
Jeff Wen

💻
Joe Previte
Joe Previte

🐛 💻
John Reilly
John Reilly

💻
Anurag
Anurag

💻
Daniel Roe
Daniel Roe

💻
Dominik Nowik
Dominik Nowik

🔧 💻
Emerson
Emerson

💻
Jeff Wen
Jeff Wen

💻
Joe Previte
Joe Previte

🐛 💻
John Reilly
John Reilly

💻
Josh Goldberg
Josh Goldberg

🐛 💻 🚧 👀 🔧 📖 🚇 ⚠️
Joël Galeran
Joël Galeran

💻
Kristo Baricevic
Kristo Baricevic

💻
Lars Kappert
Lars Kappert

💻
Navin Moorthy
Navin Moorthy

🐛 💻
NazCodeland
NazCodeland

💻
Orta Therox
Orta Therox

💻
Josh Goldberg
Josh Goldberg

🚧 🔧
Joël Galeran
Joël Galeran

💻
Kristo Baricevic
Kristo Baricevic

💻
Lars Kappert
Lars Kappert

💻
Navin Moorthy
Navin Moorthy

🐛 💻
NazCodeland
NazCodeland

💻
Orta Therox
Orta Therox

💻
Paul Esch-Laurent
Paul Esch-Laurent

💻
Promise Dash
Promise Dash

💻
Rebecca Stevens
Rebecca Stevens

💻 🚇
Ron Braha
Ron Braha

💻 🎨 ⚠️
Ron Jean-Francois
Ron Jean-Francois

💻 🚇
Sudhansu
Sudhansu

💻
Tung Bui (Leo)
Tung Bui (Leo)

💻
Paul Esch-Laurent
Paul Esch-Laurent

💻
Promise Dash
Promise Dash

💻
Rebecca Stevens
Rebecca Stevens

💻 🚇
Ron Braha
Ron Braha

💻 🎨 ⚠️
Ron Jean-Francois
Ron Jean-Francois

💻 🚇
Sudhansu
Sudhansu

💻
Tung Bui (Leo)
Tung Bui (Leo)

💻
takanomedev
takanomedev

💻
takanomedev
takanomedev

💻
@@ -201,3 +227,7 @@ Thanks! 💖 + + + +> 💙 This package is based on [@JoshuaKGoldberg](https://github.com/JoshuaKGoldberg)'s [sentences-per-line](https://github.com/JoshuaKGoldberg/sentences-per-line). diff --git a/bin/hydrate.js b/bin/hydrate.js index 7331e50d..dd727b70 100644 --- a/bin/hydrate.js +++ b/bin/hydrate.js @@ -1,4 +1,3 @@ -#!/usr/bin/env node import { hydrate } from "../lib/hydrate/index.js"; process.exitCode = await hydrate(process.argv.slice(2)); diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index ad556f55..00000000 --- a/codecov.yml +++ /dev/null @@ -1,5 +0,0 @@ -codecov: - notify: - after_n_builds: 3 -comment: - after_n_builds: 3 diff --git a/cspell.json b/cspell.json index ce8b1da2..494dd2ec 100644 --- a/cspell.json +++ b/cspell.json @@ -1,9 +1,9 @@ { "dictionaries": ["typescript"], "ignorePaths": [ - "./coverage*", ".github", "CHANGELOG.md", + "coverage", "lib", "node_modules", "pnpm-lock.yaml" @@ -14,17 +14,14 @@ "commitlint", "contributorsrc", "conventionalcommits", - "execa", "knip", "lcov", "markdownlintignore", - "npmignore", "npmpackagejsonlintrc", "outro", "packagejson", "quickstart", "tsup", - "Unstaged", "wontfix" ] } diff --git a/knip.jsonc b/knip.jsonc index 5a6ffc7d..ca6ceda5 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -1,19 +1,7 @@ { "$schema": "https://unpkg.com/knip@latest/schema.json", - "entry": [ - "src/index.ts!", - "src/hydrate/index.ts", - "src/setup/index.ts", - "script/*e2e.js" - ], - "ignoreBinaries": ["gh"], - "ignoreDependencies": [ - // https://github.com/webpro/knip/issues/207 - "c8" - ], - "ignoreExportsUsedInFile": { - "interface": true, - "type": true - }, - "project": ["src/**/*.ts!", "script/**/*.js"] + "entry": ["src/index.ts!"], + "ignoreDependencies": ["sentences-per-line"], + "ignoreExportsUsedInFile": { "interface": true, "type": true }, + "project": ["src/**/*.ts!"] } diff --git a/package.json b/package.json index 4656c5e7..db3152ae 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,19 @@ { - "name": "template-typescript-node-package", - "version": "1.28.53", - "description": "A quickstart-friendly TypeScript template with comprehensive formatting, linting, releases, testing, and other great tooling built-in. ✨", + "name": "sentences-per-line", + "version": "0.2.1", + "description": "Contributed markdownlint rule for limiting sentence per line. 📐", "repository": { "type": "git", - "url": "https://github.com/JoshuaKGoldberg/template-typescript-node-package" + "url": "https://github.com/JoshuaKGoldberg/sentences-per-line" }, "license": "MIT", "author": { - "name": "Josh Goldberg", + "name": "JoshuaKGoldberg", "email": "npm@joshuakgoldberg.com" }, "type": "module", - "main": "./lib/index.js", - "bin": "./bin/hydrate.js", + "main": "./lib/index.cjs", "files": [ - "bin/", "lib/", "package.json", "LICENSE.md", @@ -25,85 +23,65 @@ "build": "tsup", "format": "prettier \"**/*\" --ignore-unknown", "format:write": "pnpm format --write", - "hydrate:test": "node script/hydrate-test-e2e.js", "lint": "eslint . .*js --max-warnings 0 --report-unused-disable-directives", "lint:knip": "knip", "lint:md": "markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line", - "lint:package": "npmPkgJsonLint .", + "lint:package-json": "npmPkgJsonLint .", "lint:packages": "pnpm dedupe --check", "lint:spelling": "cspell \"**\" \".github/**/*\"", "prepare": "husky install", - "setup": "tsx src/setup/index.ts", - "setup:test": "node script/setup-test-e2e.js", "should-semantic-release": "should-semantic-release --verbose", - "test": "vitest" + "test": "vitest", + "tsc": "tsc" }, "lint-staged": { "*": "prettier --ignore-unknown --write" }, "dependencies": { - "@clack/prompts": "^0.7.0", - "all-contributors-for-repository": "^0.1.0", - "chalk": "^5.3.0", - "execa": "^8.0.0", - "git-remote-origin-url": "^4.0.0", - "git-url-parse": "^13.1.0", - "js-yaml": "^4.1.0", - "npm-user": "^5.0.1", - "octokit": "^3.1.0", - "prettier": "^3.0.2", - "replace-in-file": "^7.0.1", - "title-case": "^3.0.3" + "markdownlint-rule-helpers": "^0.21.0" }, "devDependencies": { - "@octokit/request-error": "^5.0.0", "@types/eslint": "^8.44.2", - "@types/git-url-parse": "^9.0.1", - "@types/js-yaml": "^4.0.5", - "@types/node": "^20.5.1", - "@types/prettier": "^2.7.3", - "@typescript-eslint/eslint-plugin": "^6.4.0", - "@typescript-eslint/parser": "^6.4.0", - "@vitest/coverage-istanbul": "^0.34.2", - "all-contributors-cli": "^6.26.1", - "c8": "^8.0.1", + "@types/markdownlint-rule-helpers": "^0.21.0", + "@typescript-eslint/eslint-plugin": "^6.6.0", + "@typescript-eslint/parser": "^6.6.0", + "@vitest/coverage-v8": "^0.34.3", "console-fail-test": "^0.2.3", - "cspell": "^7.0.0", - "eslint": "^8.47.0", + "cspell": "^7.3.2", + "eslint": "^8.48.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-deprecation": "^1.5.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsdoc": "^46.4.6", + "eslint-plugin-jsdoc": "^46.5.1", "eslint-plugin-jsonc": "^2.9.0", "eslint-plugin-markdown": "^3.0.1", - "eslint-plugin-n": "^16.0.1", + "eslint-plugin-n": "^16.0.2", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-perfectionist": "^1.5.1", "eslint-plugin-regexp": "^1.15.0", - "eslint-plugin-vitest": "^0.2.8", + "eslint-plugin-vitest": "^0.3.1", "eslint-plugin-yml": "^1.8.0", - "globby": "^13.2.2", "husky": "^8.0.3", "jsonc-eslint-parser": "^2.3.0", - "knip": "2.19.5", - "lint-staged": "^14.0.0", + "knip": "2.21.2", + "lint-staged": "^14.0.1", "markdownlint": "^0.30.0", - "markdownlint-cli": "^0.35.0", + "markdownlint-cli": "^0.36.0", "npm-package-json-lint": "^7.0.0", "npm-package-json-lint-config-default": "^6.0.0", - "prettier-plugin-curly": "^0.1.2", + "prettier": "^3.0.3", + "prettier-plugin-curly": "^0.1.3", "prettier-plugin-packagejson": "^2.4.5", "release-it": "^16.1.5", "sentences-per-line": "^0.2.1", "should-semantic-release": "^0.1.1", "tsup": "^7.2.0", - "tsx": "^3.12.7", - "typescript": "^5.1.6", - "vitest": "^0.34.2", + "typescript": "^5.2.2", + "vitest": "^0.34.3", "yaml-eslint-parser": "^1.2.2" }, - "packageManager": "pnpm@8.7.1", + "packageManager": "pnpm@8.7.0", "engines": { "node": ">=18" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57026709..a1e7fe7e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,128 +5,74 @@ settings: excludeLinksFromLockfile: false dependencies: - '@clack/prompts': - specifier: ^0.7.0 - version: 0.7.0 - all-contributors-for-repository: - specifier: ^0.1.0 - version: 0.1.0 - chalk: - specifier: ^5.3.0 - version: 5.3.0 - execa: - specifier: ^8.0.0 - version: 8.0.0 - git-remote-origin-url: - specifier: ^4.0.0 - version: 4.0.0 - git-url-parse: - specifier: ^13.1.0 - version: 13.1.0 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - npm-user: - specifier: ^5.0.1 - version: 5.0.1 - octokit: - specifier: ^3.1.0 - version: 3.1.0 - prettier: - specifier: ^3.0.2 - version: 3.0.2 - replace-in-file: - specifier: ^7.0.1 - version: 7.0.1 - title-case: - specifier: ^3.0.3 - version: 3.0.3 + markdownlint-rule-helpers: + specifier: ^0.21.0 + version: 0.21.0 devDependencies: - '@octokit/request-error': - specifier: ^5.0.0 - version: 5.0.0 '@types/eslint': specifier: ^8.44.2 version: 8.44.2 - '@types/git-url-parse': - specifier: ^9.0.1 - version: 9.0.1 - '@types/js-yaml': - specifier: ^4.0.5 - version: 4.0.5 - '@types/node': - specifier: ^20.5.1 - version: 20.5.1 - '@types/prettier': - specifier: ^2.7.3 - version: 2.7.3 + '@types/markdownlint-rule-helpers': + specifier: ^0.21.0 + version: 0.21.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.4.0 - version: 6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6) + specifier: ^6.6.0 + version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.4.0 - version: 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@vitest/coverage-istanbul': - specifier: ^0.34.2 - version: 0.34.2(vitest@0.34.2) - all-contributors-cli: - specifier: ^6.26.1 - version: 6.26.1 - c8: - specifier: ^8.0.1 - version: 8.0.1 + specifier: ^6.6.0 + version: 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@vitest/coverage-v8': + specifier: ^0.34.3 + version: 0.34.3(vitest@0.34.3) console-fail-test: specifier: ^0.2.3 version: 0.2.3 cspell: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^7.3.2 + version: 7.3.2 eslint: - specifier: ^8.47.0 - version: 8.47.0 + specifier: ^8.48.0 + version: 8.48.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.47.0) + version: 9.0.0(eslint@8.48.0) eslint-plugin-deprecation: specifier: ^1.5.0 - version: 1.5.0(eslint@8.47.0)(typescript@5.1.6) + version: 1.5.0(eslint@8.48.0)(typescript@5.2.2) eslint-plugin-eslint-comments: specifier: ^3.2.0 - version: 3.2.0(eslint@8.47.0) + version: 3.2.0(eslint@8.48.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.4.0)(eslint@8.47.0) + version: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.48.0) eslint-plugin-jsdoc: - specifier: ^46.4.6 - version: 46.4.6(eslint@8.47.0) + specifier: ^46.5.1 + version: 46.5.1(eslint@8.48.0) eslint-plugin-jsonc: specifier: ^2.9.0 - version: 2.9.0(eslint@8.47.0) + version: 2.9.0(eslint@8.48.0) eslint-plugin-markdown: specifier: ^3.0.1 - version: 3.0.1(eslint@8.47.0) + version: 3.0.1(eslint@8.48.0) eslint-plugin-n: - specifier: ^16.0.1 - version: 16.0.1(eslint@8.47.0) + specifier: ^16.0.2 + version: 16.0.2(eslint@8.48.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-perfectionist: specifier: ^1.5.1 - version: 1.5.1(eslint@8.47.0)(typescript@5.1.6) + version: 1.5.1(eslint@8.48.0)(typescript@5.2.2) eslint-plugin-regexp: specifier: ^1.15.0 - version: 1.15.0(eslint@8.47.0) + version: 1.15.0(eslint@8.48.0) eslint-plugin-vitest: - specifier: ^0.2.8 - version: 0.2.8(eslint@8.47.0)(typescript@5.1.6)(vitest@0.34.2) + specifier: ^0.3.1 + version: 0.3.1(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(vitest@0.34.3) eslint-plugin-yml: specifier: ^1.8.0 - version: 1.8.0(eslint@8.47.0) - globby: - specifier: ^13.2.2 - version: 13.2.2 + version: 1.8.0(eslint@8.48.0) husky: specifier: ^8.0.3 version: 8.0.3 @@ -134,29 +80,32 @@ devDependencies: specifier: ^2.3.0 version: 2.3.0 knip: - specifier: 2.19.5 - version: 2.19.5 + specifier: 2.21.2 + version: 2.21.2 lint-staged: - specifier: ^14.0.0 - version: 14.0.0 + specifier: ^14.0.1 + version: 14.0.1 markdownlint: specifier: ^0.30.0 version: 0.30.0 markdownlint-cli: - specifier: ^0.35.0 - version: 0.35.0 + specifier: ^0.36.0 + version: 0.36.0 npm-package-json-lint: specifier: ^7.0.0 version: 7.0.0 npm-package-json-lint-config-default: specifier: ^6.0.0 version: 6.0.0(npm-package-json-lint@7.0.0) + prettier: + specifier: ^3.0.3 + version: 3.0.3 prettier-plugin-curly: - specifier: ^0.1.2 - version: 0.1.2(prettier@3.0.2) + specifier: ^0.1.3 + version: 0.1.3(prettier@3.0.3) prettier-plugin-packagejson: specifier: ^2.4.5 - version: 2.4.5(prettier@3.0.2) + version: 2.4.5(prettier@3.0.3) release-it: specifier: ^16.1.5 version: 16.1.5 @@ -168,16 +117,13 @@ devDependencies: version: 0.1.1 tsup: specifier: ^7.2.0 - version: 7.2.0(typescript@5.1.6) - tsx: - specifier: ^3.12.7 - version: 3.12.7 + version: 7.2.0(typescript@5.2.2) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.34.2 - version: 0.34.2 + specifier: ^0.34.3 + version: 0.34.3 yaml-eslint-parser: specifier: ^1.2.2 version: 1.2.2 @@ -189,11 +135,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: true @@ -202,33 +148,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 - - /@babel/compat-data@7.20.10: - resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.7 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color dev: true /@babel/generator@7.22.5: @@ -241,20 +160,6 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets@7.20.7(@babel/core@7.20.12): - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.12 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} @@ -275,36 +180,6 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-module-transforms@7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - /@babel/helper-split-export-declaration@7.22.5: resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} @@ -320,21 +195,6 @@ packages: /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.20.7: - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true /@babel/highlight@7.22.5: @@ -344,6 +204,7 @@ packages: '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} @@ -353,13 +214,6 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/runtime@7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -400,35 +254,18 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@clack/core@0.3.3: - resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} - dependencies: - picocolors: 1.0.0 - sisteransi: 1.0.5 - dev: false - - /@clack/prompts@0.7.0: - resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} - dependencies: - '@clack/core': 0.3.3 - picocolors: 1.0.0 - sisteransi: 1.0.5 - dev: false - bundledDependencies: - - is-unicode-supported - - /@cspell/cspell-bundled-dicts@7.0.0: - resolution: {integrity: sha512-qfBAS4W35+loOfbprBDS8nN0Eitl9wmuPE8GQLbwYj9Qj+COlLg57KECeXF8cgGnHkahrIkc3t6V6eFF8nhXQw==} + /@cspell/cspell-bundled-dicts@7.3.2: + resolution: {integrity: sha512-mmb9gi2/jTj983ijgVsdsQ4FM5Bv/lKslgJt4jDUm6SOtQYW4geCJNl5/MbMzcMQUWSJouS0w4C55AyrJmq0iw==} engines: {node: '>=16'} dependencies: '@cspell/dict-ada': 4.0.2 '@cspell/dict-aws': 4.0.0 '@cspell/dict-bash': 4.1.1 - '@cspell/dict-companies': 3.0.19 + '@cspell/dict-companies': 3.0.21 '@cspell/dict-cpp': 5.0.4 - '@cspell/dict-cryptocurrencies': 3.0.1 + '@cspell/dict-cryptocurrencies': 4.0.0 '@cspell/dict-csharp': 4.0.2 - '@cspell/dict-css': 4.0.6 + '@cspell/dict-css': 4.0.7 '@cspell/dict-dart': 2.0.3 '@cspell/dict-django': 4.1.0 '@cspell/dict-docker': 1.1.7 @@ -436,7 +273,7 @@ packages: '@cspell/dict-elixir': 4.0.3 '@cspell/dict-en-common-misspellings': 1.0.2 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.6 + '@cspell/dict-en_us': 4.3.7 '@cspell/dict-filetypes': 3.0.1 '@cspell/dict-fonts': 4.0.0 '@cspell/dict-fsharp': 1.0.0 @@ -454,15 +291,15 @@ packages: '@cspell/dict-lua': 4.0.1 '@cspell/dict-node': 4.0.2 '@cspell/dict-npm': 5.0.8 - '@cspell/dict-php': 4.0.1 + '@cspell/dict-php': 4.0.2 '@cspell/dict-powershell': 5.0.2 '@cspell/dict-public-licenses': 2.0.3 - '@cspell/dict-python': 4.1.5 + '@cspell/dict-python': 4.1.7 '@cspell/dict-r': 2.0.1 '@cspell/dict-ruby': 5.0.0 '@cspell/dict-rust': 4.0.1 '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.2.1 + '@cspell/dict-software-terms': 3.2.2 '@cspell/dict-sql': 2.1.1 '@cspell/dict-svelte': 1.0.2 '@cspell/dict-swift': 2.0.1 @@ -470,25 +307,32 @@ packages: '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-json-reporter@7.0.0: - resolution: {integrity: sha512-8OheTVzwwfOQqPZe3Enbe1F7Y0djjGunk5K7aC5MyXc3BuIV7Cx13xWo2gfAjiHBRuO5lqg9qidEfp6NE33amg==} + /@cspell/cspell-json-reporter@7.3.2: + resolution: {integrity: sha512-5j1CX2OXkQGO3ljMBzfHjDzEiixodjfxVGR3VKkQX1vxTUMTIkPgt4BsgOVCQtqTiO21Dd2Bzn+H0/Jf4OL37g==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-types': 7.0.0 + '@cspell/cspell-types': 7.3.2 + dev: true + + /@cspell/cspell-pipe@7.3.2: + resolution: {integrity: sha512-ZKOkb6IxuEXRXtjVAlZ41+4SXhyiGqrQ3FW16iZlCbM9Mp9WJAw2MOVh6wvpXmfKcM5/3jK1A4rFylB7b0QBHw==} + engines: {node: '>=16'} dev: true - /@cspell/cspell-pipe@7.0.0: - resolution: {integrity: sha512-MmQeLyyS5rZ/VvRtHGOLFUcCF9zy01WpWYthLZB61o96HCokqtlN4BBBPLYNxrotFNA4syVy9Si/wTxsC9oTiA==} + /@cspell/cspell-resolver@7.3.2: + resolution: {integrity: sha512-3gvZPlYLkjuPezF2VyCVurEJiJnb3sbr32Jp3MfvpO7x026RXMbetkdH87MKoiSAThxSiyG+qi/jvUeDYY/Wtg==} engines: {node: '>=16'} + dependencies: + global-dirs: 3.0.1 dev: true - /@cspell/cspell-service-bus@7.0.0: - resolution: {integrity: sha512-0YMM5SJY+XooOTEoo5+xuqTBLO87FP6QR8OBLBDeWNHvON9M4TpeAAN5K+IM0vMSFzgt1aSSMJNO0HSmxn17Yw==} + /@cspell/cspell-service-bus@7.3.2: + resolution: {integrity: sha512-i2sPnUSsFJXc5afijbUsUtv1YEXyO8EbJbXV0kdE6KVu7I0CSMV8jprJaG3X1m5HE6lGftNcpLKLHjSlFOFvsA==} engines: {node: '>=16'} dev: true - /@cspell/cspell-types@7.0.0: - resolution: {integrity: sha512-b/Dee5lb362ODlEK+kQcUDJfCprDRUFWcddo5tyzsYm3ID08ll6+DzCtfRxf48isyX1tL7uBKMj/iIpAhRNu9Q==} + /@cspell/cspell-types@7.3.2: + resolution: {integrity: sha512-2lvRUfIgH9TvqGEDpuukuD6J84XPP8KFxR/qphtPZAzwg9SEpiagdN79eFlPe4ZI2xHNvwEsPDJUxuvxXu15wQ==} engines: {node: '>=16'} dev: true @@ -504,32 +348,32 @@ packages: resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} dev: true - /@cspell/dict-companies@3.0.19: - resolution: {integrity: sha512-hO7rS4DhFA333qyvf89wIVoclCtXe/2sftY6aS0oMIH1bMZLjLx2B2sQJj6dCiu6gG/By1S9YZ0fXabiPk2Tkg==} + /@cspell/dict-companies@3.0.21: + resolution: {integrity: sha512-u9b7qtCWYS728WqiJeAucJcjRs16Y1yGGwagS/w59SV25R0rXbXbPbQuX8wYDcaeIO8uRHGkbSWngx6O4qFoCQ==} dev: true /@cspell/dict-cpp@5.0.4: resolution: {integrity: sha512-Vmz/CCb2d91ES5juaO8+CFWeTa2AFsbpR8bkCPJq+P8cRP16+37tY0zNXEBSK/1ur4MakaRf76jeQBijpZxw0Q==} dev: true - /@cspell/dict-cryptocurrencies@3.0.1: - resolution: {integrity: sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==} + /@cspell/dict-cryptocurrencies@4.0.0: + resolution: {integrity: sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==} dev: true /@cspell/dict-csharp@4.0.2: resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} dev: true - /@cspell/dict-css@4.0.6: - resolution: {integrity: sha512-2Lo8W2ezHmGgY8cWFr4RUwnjbndna5mokpCK/DuxGILQnuajR0J31ANQOXj/8iZM2phFB93ZzMNk/0c04TDfSQ==} + /@cspell/dict-css@4.0.7: + resolution: {integrity: sha512-NNlUTx/sYg+74kC0EtRewb7pjkEtPlIsu9JFNWAXa0JMTqqpQXqM3aEO4QJvUZFZF09bObeCAvzzxemAwxej7Q==} dev: true /@cspell/dict-dart@2.0.3: resolution: {integrity: sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==} dev: true - /@cspell/dict-data-science@1.0.10: - resolution: {integrity: sha512-7ZsRCnW0f4Bdo6Cqq8V4gHr8K58h+MP8majcDeMNhpMFUPiiSnvKsDuG9V5jciI/0t+lptPrZwGGIVEDF4Kqtg==} + /@cspell/dict-data-science@1.0.11: + resolution: {integrity: sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==} dev: true /@cspell/dict-django@4.1.0: @@ -556,8 +400,8 @@ packages: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us@4.3.6: - resolution: {integrity: sha512-odhgsjNZI9BtEOJdvqfAuv/3yz5aB1ngfBNaph7WSnYVt//9e3fhrElZ6/pIIkoyuGgeQPwz1fXt+tMgcnLSEQ==} + /@cspell/dict-en_us@4.3.7: + resolution: {integrity: sha512-83V0XXqiXJvXa1pj5cVpviYKeLTN2Dxvouz8ullrwgcfPtY57pYBy+3ACVAMYK0eGByhRPc/xVXlIgv4o0BNZw==} dev: true /@cspell/dict-filetypes@3.0.1: @@ -628,8 +472,8 @@ packages: resolution: {integrity: sha512-KuqH8tEsFD6DPKqKwIfWr9E+admE3yghaC0AKXG8jPaf77N0lkctKaS3dm0oxWUXkYKA/eXj6LCtz3VcTyxFPg==} dev: true - /@cspell/dict-php@4.0.1: - resolution: {integrity: sha512-XaQ/JkSyq2c07MfRG54DjLi2CV+HHwS99DDCAao9Fq2JfkWroTQsUeek7wYZXJATrJVOULoV3HKih12x905AtQ==} + /@cspell/dict-php@4.0.2: + resolution: {integrity: sha512-7yglcmMoFHDPQXHW+9QAl8YjAToMm1qOi+4x/yGY1FSIEjZbCpjeDgyKMGg/NgpooQQceEN38AR59Pn23EDriA==} dev: true /@cspell/dict-powershell@5.0.2: @@ -640,10 +484,10 @@ packages: resolution: {integrity: sha512-JSLEdpEYufQ1H+93UHi+axlqQm1fhgK6kpdLHp6uPHu//CsvETcqNVawjB+qOdI/g38JTMw5fBqSd0aGNxa6Dw==} dev: true - /@cspell/dict-python@4.1.5: - resolution: {integrity: sha512-wWUWyHdyJtx5iG6Fz9rBQ17BtdpEsB17vmutao+gixQD28Jzb6XoLgDQ6606M0RnFjBSFhs5iT4CJBzlD2Kq6g==} + /@cspell/dict-python@4.1.7: + resolution: {integrity: sha512-8GkO7/w1QEpu4Y1GTHGYHrwfc/ZdiBRw7D/BGYCIiOoQPLi0YxMke7wzRC3j246yrzLt28ntDBjr4fB3+uFZtQ==} dependencies: - '@cspell/dict-data-science': 1.0.10 + '@cspell/dict-data-science': 1.0.11 dev: true /@cspell/dict-r@2.0.1: @@ -662,8 +506,8 @@ packages: resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms@3.2.1: - resolution: {integrity: sha512-+QXmyoONVc/3aNgKW+0F0u3XUCRTfNRkWKLZQA78i+9fOfde8ZT4JmROmZgRveH/MxD4n6pNFceIRcYI6C8WuQ==} + /@cspell/dict-software-terms@3.2.2: + resolution: {integrity: sha512-DmdS/qAyJVmKKku4ab89HVZhsvRIk84HoPUVIZ/zJhmuCO+LF45Ylzy1/7G32MYLjbG/o1Ze3UvbaE9HY4FKKA==} dev: true /@cspell/dict-sql@2.1.1: @@ -686,15 +530,15 @@ packages: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import@7.0.0: - resolution: {integrity: sha512-GRSJvdQvVOC0y7Qla8eg6LLe8p8WnbnHLabGJGsqYfXgtfkUFev9v65kMybQSJt9qhDtGCRw6EN1UyaeeEtavQ==} + /@cspell/dynamic-import@7.3.2: + resolution: {integrity: sha512-G2ZBPC08X3lUQmHRobGdFYxb3oTSuSIfpW1P/oTMovqbuVoQh108W2WXv0Va40LVGkQD9OS31ZafHbcLELANeA==} engines: {node: '>=16'} dependencies: import-meta-resolve: 3.0.0 dev: true - /@cspell/strong-weak-map@7.0.0: - resolution: {integrity: sha512-DT1R30i3V7aJIGLt7x1igaMLHhYSFv6pgc9gNwXvZWFl1xm/f7Jx07GPXKKKhwwXd4vy7G5rhwo63F4Pt9i8Ng==} + /@cspell/strong-weak-map@7.3.2: + resolution: {integrity: sha512-Y2JL8A/CG37NnreVtU3DhvcOuYWNEAKUmOSU9NfBeOoptWwTMBvbNF5UbOpmZrf2BXc8OmdHIogIWHXYIESiyg==} engines: {node: '>=16'} dev: true @@ -732,27 +576,6 @@ packages: jsdoc-type-pratt-parser: 4.0.0 dev: true - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.5.0 - dev: true - - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - dependencies: - esbuild: 0.17.18 - source-map-support: 0.5.21 - dev: true - - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.5.0 - dev: true - /@esbuild/android-arm64@0.17.18: resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} @@ -1149,13 +972,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.47.0 + eslint: 8.48.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1181,8 +1004,8 @@ packages: - supports-color dev: true - /@eslint/js@8.47.0: - resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1234,14 +1057,6 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} @@ -1307,7 +1122,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@npmcli/name-from-folder': 2.0.0 - glob: 10.2.7 + glob: 10.3.4 minimatch: 9.0.3 read-package-json-fast: 3.0.2 dev: true @@ -1317,96 +1132,18 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /@octokit/app@14.0.0: - resolution: {integrity: sha512-g/zDXttroZ9Se08shK0d0d/j0cgSA+h4WV7qGUevNEM0piNBkIlfb4Fm6bSwCNAZhNf72mBgERmYOoxicPkqdw==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-app': 6.0.0 - '@octokit/auth-unauthenticated': 5.0.0 - '@octokit/core': 5.0.0 - '@octokit/oauth-app': 6.0.0 - '@octokit/plugin-paginate-rest': 8.0.0(@octokit/core@5.0.0) - '@octokit/types': 11.1.0 - '@octokit/webhooks': 12.0.3 - dev: false - - /@octokit/auth-app@6.0.0: - resolution: {integrity: sha512-OKct7Rukf3g9DjpzcpdacQsdmd6oPrJ7fZND22JkjzhDvfhttUOnmh+qPS4kHhaNNyTxqSThnfrUWvkqNLd1nw==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-oauth-app': 7.0.0 - '@octokit/auth-oauth-user': 4.0.0 - '@octokit/request': 8.1.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - deprecation: 2.3.1 - lru-cache: 10.0.0 - universal-github-app-jwt: 1.1.1 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/auth-oauth-app@7.0.0: - resolution: {integrity: sha512-8JvJEXGoEqrbzLwt3SwIUvkDd+1wrM8up0KawvDIElB8rbxPbvWppGO0SLKAWSJ0q8ILcVq+mWck6pDcZ3a9KA==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-oauth-device': 6.0.0 - '@octokit/auth-oauth-user': 4.0.0 - '@octokit/request': 8.1.0 - '@octokit/types': 11.1.0 - '@types/btoa-lite': 1.0.0 - btoa-lite: 1.0.0 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/auth-oauth-device@6.0.0: - resolution: {integrity: sha512-Zgf/LKhwWk54rJaTGYVYtbKgUty+ouil6VQeRd+pCw7Gd0ECoSWaZuHK6uDGC/HtnWHjpSWFhzxPauDoHcNRtg==} - engines: {node: '>= 18'} - dependencies: - '@octokit/oauth-methods': 4.0.0 - '@octokit/request': 8.1.0 - '@octokit/types': 11.1.0 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/auth-oauth-user@4.0.0: - resolution: {integrity: sha512-VOm5aIkVGHaOhIvsF/4YmSjoYDzzrKbbYkdSEO0KqHK7I8SlO3ZndSikQ1fBlNPUEH0ve2BOTxLrVvI1qBf9/Q==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-oauth-device': 6.0.0 - '@octokit/oauth-methods': 4.0.0 - '@octokit/request': 8.1.0 - '@octokit/types': 11.1.0 - btoa-lite: 1.0.0 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/auth-token@3.0.2: - resolution: {integrity: sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==} + /@octokit/auth-token@3.0.4: + resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} engines: {node: '>= 14'} - dependencies: - '@octokit/types': 8.0.0 dev: true - /@octokit/auth-token@4.0.0: - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - dev: false - - /@octokit/auth-unauthenticated@5.0.0: - resolution: {integrity: sha512-AjOI6FNB2dweJ85p6rf7D4EhE4y6VBcwYfX/7KJkR5Q9fD9ET6NABAjajUTSNFfCxmNIaQgISggZ3pkgwtTqsA==} - engines: {node: '>= 18'} - dependencies: - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - dev: false - /@octokit/core@4.2.4: resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} engines: {node: '>= 14'} dependencies: - '@octokit/auth-token': 3.0.2 - '@octokit/graphql': 5.0.4 - '@octokit/request': 6.2.3 + '@octokit/auth-token': 3.0.4 + '@octokit/graphql': 5.0.6 + '@octokit/request': 6.2.8 '@octokit/request-error': 3.0.3 '@octokit/types': 9.3.2 before-after-hook: 2.2.3 @@ -1415,102 +1152,29 @@ packages: - encoding dev: true - /@octokit/core@5.0.0: - resolution: {integrity: sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.0.1 - '@octokit/request': 8.1.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/endpoint@7.0.3: - resolution: {integrity: sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==} + /@octokit/endpoint@7.0.6: + resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 8.0.0 + '@octokit/types': 9.3.2 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: true - /@octokit/endpoint@9.0.0: - resolution: {integrity: sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==} - engines: {node: '>= 18'} - dependencies: - '@octokit/types': 11.1.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/graphql@5.0.4: - resolution: {integrity: sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==} + /@octokit/graphql@5.0.6: + resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} engines: {node: '>= 14'} dependencies: - '@octokit/request': 6.2.3 - '@octokit/types': 8.0.0 + '@octokit/request': 6.2.8 + '@octokit/types': 9.3.2 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: true - /@octokit/graphql@7.0.1: - resolution: {integrity: sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==} - engines: {node: '>= 18'} - dependencies: - '@octokit/request': 8.1.0 - '@octokit/types': 11.1.0 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/oauth-app@6.0.0: - resolution: {integrity: sha512-bNMkS+vJ6oz2hCyraT9ZfTpAQ8dZNqJJQVNaKjPLx4ue5RZiFdU1YWXguOPR8AaSHS+lKe+lR3abn2siGd+zow==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-oauth-app': 7.0.0 - '@octokit/auth-oauth-user': 4.0.0 - '@octokit/auth-unauthenticated': 5.0.0 - '@octokit/core': 5.0.0 - '@octokit/oauth-authorization-url': 6.0.2 - '@octokit/oauth-methods': 4.0.0 - '@types/aws-lambda': 8.10.114 - universal-user-agent: 6.0.0 - dev: false - - /@octokit/oauth-authorization-url@6.0.2: - resolution: {integrity: sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==} - engines: {node: '>= 18'} - dev: false - - /@octokit/oauth-methods@4.0.0: - resolution: {integrity: sha512-dqy7BZLfLbi3/8X8xPKUKZclMEK9vN3fK5WF3ortRvtplQTszFvdAGbTo71gGLO+4ZxspNiLjnqdd64Chklf7w==} - engines: {node: '>= 18'} - dependencies: - '@octokit/oauth-authorization-url': 6.0.2 - '@octokit/request': 8.1.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - btoa-lite: 1.0.0 - dev: false - - /@octokit/openapi-types@14.0.0: - resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==} - dev: true - /@octokit/openapi-types@18.0.0: resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==} - - /@octokit/plugin-paginate-graphql@4.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-7HcYW5tP7/Z6AETAPU14gp5H5KmCPT3hmJrS/5tO7HIgbwenYmgw4OY9Ma54FDySuxMwD+wsJlxtuGWwuZuItA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=5' - dependencies: - '@octokit/core': 5.0.0 - dev: false + dev: true /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4): resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} @@ -1523,16 +1187,6 @@ packages: '@octokit/types': 9.3.2 dev: true - /@octokit/plugin-paginate-rest@8.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=5' - dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 11.1.0 - dev: false - /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4): resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} peerDependencies: @@ -1551,39 +1205,6 @@ packages: '@octokit/types': 10.0.0 dev: true - /@octokit/plugin-rest-endpoint-methods@9.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-KquMF/VB1IkKNiVnzJKspY5mFgGyLd7HzdJfVEGTJFzqu9BRFNWt+nwTCMuUiWc72gLQhRWYubTwOkQj+w/1PA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=5' - dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 11.1.0 - dev: false - - /@octokit/plugin-retry@6.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-a1/A4A+PB1QoAHQfLJxGHhLfSAT03bR1jJz3GgQJZvty2ozawFWs93MiBQXO7SL2YbO7CIq0Goj4qLOBj8JeMQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '>=5' - dependencies: - '@octokit/core': 5.0.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - bottleneck: 2.19.5 - dev: false - - /@octokit/plugin-throttling@7.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': ^5.0.0 - dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 11.1.0 - bottleneck: 2.19.5 - dev: false - /@octokit/request-error@3.0.3: resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} engines: {node: '>= 14'} @@ -1593,39 +1214,20 @@ packages: once: 1.4.0 dev: true - /@octokit/request-error@5.0.0: - resolution: {integrity: sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==} - engines: {node: '>= 18'} - dependencies: - '@octokit/types': 11.1.0 - deprecation: 2.3.1 - once: 1.4.0 - - /@octokit/request@6.2.3: - resolution: {integrity: sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==} + /@octokit/request@6.2.8: + resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} engines: {node: '>= 14'} dependencies: - '@octokit/endpoint': 7.0.3 + '@octokit/endpoint': 7.0.6 '@octokit/request-error': 3.0.3 '@octokit/types': 9.3.2 is-plain-object: 5.0.0 - node-fetch: 2.6.12 + node-fetch: 2.7.0 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: true - /@octokit/request@8.1.0: - resolution: {integrity: sha512-0gg/NwewU0iXctYBale0VVcCPqOtoW5lsog8cNBJgzV/CyTHa2gicUBOlNnzOk6pJkuwXI34qkq+uRm40PmD4A==} - engines: {node: '>= 18'} - dependencies: - '@octokit/endpoint': 9.0.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.0 - dev: false - /@octokit/rest@19.0.13: resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} engines: {node: '>= 14'} @@ -1648,42 +1250,12 @@ packages: '@octokit/openapi-types': 18.0.0 dev: true - /@octokit/types@11.1.0: - resolution: {integrity: sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==} - dependencies: - '@octokit/openapi-types': 18.0.0 - - /@octokit/types@8.0.0: - resolution: {integrity: sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==} - dependencies: - '@octokit/openapi-types': 14.0.0 - dev: true - /@octokit/types@9.3.2: resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} dependencies: '@octokit/openapi-types': 18.0.0 dev: true - /@octokit/webhooks-methods@4.0.0: - resolution: {integrity: sha512-M8mwmTXp+VeolOS/kfRvsDdW+IO0qJ8kYodM/sAysk093q6ApgmBXwK1ZlUvAwXVrp/YVHp6aArj4auAxUAOFw==} - engines: {node: '>= 18'} - dev: false - - /@octokit/webhooks-types@7.1.0: - resolution: {integrity: sha512-y92CpG4kFFtBBjni8LHoV12IegJ+KFxLgKRengrVjKmGE5XMeCuGvlfRe75lTRrgXaG6XIWJlFpIDTlkoJsU8w==} - dev: false - - /@octokit/webhooks@12.0.3: - resolution: {integrity: sha512-8iG+/yza7hwz1RrQ7i7uGpK2/tuItZxZq1aTmeg2TNp2xTUB8F8lZF/FcZvyyAxT8tpDMF74TjFGCDACkf1kAQ==} - engines: {node: '>= 18'} - dependencies: - '@octokit/request-error': 5.0.0 - '@octokit/webhooks-methods': 4.0.0 - '@octokit/webhooks-types': 7.1.0 - aggregate-error: 3.1.0 - dev: false - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1701,6 +1273,11 @@ packages: tslib: 2.5.0 dev: true + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: true + /@pnpm/network.ca-file@1.0.2: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} @@ -1708,10 +1285,11 @@ packages: graceful-fs: 4.2.10 dev: true - /@pnpm/npm-conf@1.0.5: - resolution: {integrity: sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==} + /@pnpm/npm-conf@2.2.2: + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} engines: {node: '>=12'} dependencies: + '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 dev: true @@ -1720,9 +1298,10 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sindresorhus/is@5.3.0: - resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} + dev: true /@snyk/github-codeowners@1.1.0: resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} @@ -1739,19 +1318,12 @@ packages: engines: {node: '>=14.16'} dependencies: defer-to-connect: 2.0.1 + dev: true /@tootallnate/quickjs-emscripten@0.23.0: resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} dev: true - /@types/aws-lambda@8.10.114: - resolution: {integrity: sha512-M8WpEGfC9iQ6V2Ccq6nGIXoQgeVc6z0Ngk8yCOL5V/TYIxshvb0MWQYLFFTZDesL0zmsoBc4OBjG9DB/4rei6w==} - dev: false - - /@types/btoa-lite@1.0.0: - resolution: {integrity: sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==} - dev: false - /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: @@ -1765,29 +1337,22 @@ packages: /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 dev: true - /@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - dev: true - - /@types/git-url-parse@9.0.1: - resolution: {integrity: sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA==} + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + dev: true /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} - dev: true - /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true @@ -1796,11 +1361,24 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonwebtoken@9.0.1: - resolution: {integrity: sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==} + /@types/linkify-it@3.0.3: + resolution: {integrity: sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==} + dev: true + + /@types/markdown-it@13.0.1: + resolution: {integrity: sha512-SUEb8Frsxs3D5Gg9xek6i6EG6XQ5s+O+ZdQzIPESZVZw3Pv3CPQfjCJBI+RgqZd1IBeu18S0Rn600qpPnEK37w==} dependencies: + '@types/linkify-it': 3.0.3 + '@types/mdurl': 1.0.2 + dev: true + + /@types/markdownlint-rule-helpers@0.21.0: + resolution: {integrity: sha512-C+ktOaT/Zxpl0hD7kGMwS6hYCYx41XPg6Pmkay/WdmW1I3dYCcfjADvTuKVWcKJS0h34d3w4ioewLg9xGAGrnQ==} + dependencies: + '@types/markdown-it': 13.0.1 '@types/node': 20.5.1 - dev: false + markdownlint: 0.30.0 + dev: true /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} @@ -1808,17 +1386,20 @@ packages: '@types/unist': 2.0.6 dev: true + /@types/mdurl@1.0.2: + resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + dev: true + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true /@types/node@20.5.1: resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} + dev: true /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} dev: true /@types/semver@7.5.0: @@ -1829,8 +1410,8 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@typescript-eslint/eslint-plugin@6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-62o2Hmc7Gs3p8SLfbXcipjWAa6qk2wZGChXG2JbBtYpwSRmti/9KHLqfbLs9uDigOexG+3PaQ9G2g3201FWLKg==} + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1841,25 +1422,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.4.0 - '@typescript-eslint/type-utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.47.0 + eslint: 8.48.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.1(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.4.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==} + /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1868,13 +1449,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.4.0 - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.47.0 - typescript: 5.1.6 + eslint: 8.48.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -1887,16 +1468,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.4.0: - resolution: {integrity: sha512-TUS7vaKkPWDVvl7GDNHFQMsMruD+zhkd3SdVW0d7b+7Zo+bd/hXJQ8nsiUZMi1jloWo6c9qt3B7Sqo+flC1nig==} + /@typescript-eslint/scope-manager@6.6.0: + resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 dev: true - /@typescript-eslint/type-utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-TvqrUFFyGY0cX3WgDHcdl2/mMCWCDv/0thTtx/ODMY1QhEiyFtv/OlLaNIiYLwRpAxAtOLOY9SUf1H3Q3dlwAg==} + /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1905,12 +1486,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.47.0 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + eslint: 8.48.0 + ts-api-utils: 1.0.1(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -1920,12 +1501,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.4.0: - resolution: {integrity: sha512-+FV9kVFrS7w78YtzkIsNSoYsnOtrYVnKWSTVXoL1761CsCRv5wpDOINgsXpxD67YCLZtVQekDDyaxfjVWUJmmg==} + /@typescript-eslint/types@6.6.0: + resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1940,14 +1521,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.4.0(typescript@5.1.6): - resolution: {integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==} + /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): + resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1955,31 +1536,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.1(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - eslint: 8.47.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -1987,19 +1568,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-BvvwryBQpECPGo8PwF/y/q+yacg8Hn/2XS+DqL/oRsOPK+RPt29h5Ui5dqOKHDlbXrAeHUTnyG3wZA0KTDxRZw==} + /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.4.0 - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) - eslint: 8.47.0 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + eslint: 8.48.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -2014,62 +1595,67 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.4.0: - resolution: {integrity: sha512-yJSfyT+uJm+JRDWYRYdCm2i+pmvXJSMtPR9Cq5/XQs4QIgNoLcoRtDdzsLbLsFM/c6um6ohQkg/MLxWvoIndJA==} + /@typescript-eslint/visitor-keys@6.6.0: + resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.0 + '@typescript-eslint/types': 6.6.0 eslint-visitor-keys: 3.4.3 dev: true - /@vitest/coverage-istanbul@0.34.2(vitest@0.34.2): - resolution: {integrity: sha512-rf6nY80ieYDGBg+50Sm1XTeYkrAF2sJu3pqL4IddBakxddTNUjEWY90Bv3LvspII6Bd/fiVcestozShQ/NVDtQ==} + /@vitest/coverage-v8@0.34.3(vitest@0.34.3): + resolution: {integrity: sha512-bNjP0RHe8UxdklCigZlk6FVCNbOiqVjWnpZJ1zKixpvb7YHSaZiN/w+mzpvXIoqyxyePzKC+L+G1oj7SB20PJw==} peerDependencies: vitest: '>=0.32.0 <1' dependencies: + '@ampproject/remapping': 2.2.1 + '@bcoe/v8-coverage': 0.2.3 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 + magic-string: 0.30.1 + picocolors: 1.0.0 + std-env: 3.3.3 test-exclude: 6.0.0 - vitest: 0.34.2 + v8-to-istanbul: 9.1.0 + vitest: 0.34.3 transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.34.2: - resolution: {integrity: sha512-EZm2dMNlLyIfDMha17QHSQcg2KjeAZaXd65fpPzXY5bvnfx10Lcaz3N55uEe8PhF+w4pw+hmrlHLLlRn9vkBJg==} + /@vitest/expect@0.34.3: + resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} dependencies: - '@vitest/spy': 0.34.2 - '@vitest/utils': 0.34.2 + '@vitest/spy': 0.34.3 + '@vitest/utils': 0.34.3 chai: 4.3.7 dev: true - /@vitest/runner@0.34.2: - resolution: {integrity: sha512-8ydGPACVX5tK3Dl0SUwxfdg02h+togDNeQX3iXVFYgzF5odxvaou7HnquALFZkyVuYskoaHUOqOyOLpOEj5XTA==} + /@vitest/runner@0.34.3: + resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} dependencies: - '@vitest/utils': 0.34.2 + '@vitest/utils': 0.34.3 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.2: - resolution: {integrity: sha512-qhQ+xy3u4mwwLxltS4Pd4SR+XHv4EajiTPNY3jkIBLUApE6/ce72neJPSUQZ7bL3EBuKI+NhvzhGj3n5baRQUQ==} + /@vitest/snapshot@0.34.3: + resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} dependencies: magic-string: 0.30.1 pathe: 1.1.1 pretty-format: 29.6.1 dev: true - /@vitest/spy@0.34.2: - resolution: {integrity: sha512-yd4L9OhfH6l0Av7iK3sPb3MykhtcRN5c5K5vm1nTbuN7gYn+yvUVVsyvzpHrjqS7EWqn9WsPJb7+0c3iuY60tA==} + /@vitest/spy@0.34.3: + resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.2: - resolution: {integrity: sha512-Lzw+kAsTPubhoQDp1uVAOP6DhNia1GMDsI9jgB0yMn+/nDaPieYQ88lKqz/gGjSHL4zwOItvpehec9OY+rS73w==} + /@vitest/utils@0.34.3: + resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 @@ -2082,6 +1668,7 @@ packages: dependencies: jsonparse: 1.3.1 through: 2.3.8 + dev: true /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -2117,6 +1704,7 @@ packages: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 + dev: true /ajv-errors@1.0.1(ajv@6.12.6): resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} @@ -2135,35 +1723,6 @@ packages: uri-js: 4.4.1 dev: true - /all-contributors-cli@6.26.1: - resolution: {integrity: sha512-Ymgo3FJACRBEd1eE653FD1J/+uD0kqpUNYfr9zNC1Qby0LgbhDBzB3EF6uvkAbYpycStkk41J+0oo37Lc02yEw==} - engines: {node: '>=4'} - hasBin: true - dependencies: - '@babel/runtime': 7.21.0 - async: 3.2.4 - chalk: 4.1.2 - didyoumean: 1.2.2 - inquirer: 7.3.3 - json-fixer: 1.6.15 - lodash: 4.17.21 - node-fetch: 2.6.12 - pify: 5.0.0 - yargs: 15.4.1 - optionalDependencies: - prettier: 2.8.8 - transitivePeerDependencies: - - encoding - dev: true - - /all-contributors-for-repository@0.1.0: - resolution: {integrity: sha512-rdRo42A0NsoLpKOePBTXmKfbeVmDVU6OJ7fne8KWC3pvkeOg2OE61kOYxnjLXxZ7jn3rercggq8xnUhR6Pc8Aw==} - engines: {node: '>=18'} - dependencies: - conventional-commits-parser: 4.0.0 - octokit: 3.1.0 - dev: false - /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -2187,6 +1746,7 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + dev: true /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} @@ -2198,12 +1758,14 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -2240,6 +1802,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /arity-n@1.0.4: resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} @@ -2336,6 +1899,7 @@ packages: /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} + dev: true /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} @@ -2354,10 +1918,6 @@ packages: retry: 0.13.1 dev: true - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - dev: true - /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -2370,6 +1930,7 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2382,6 +1943,7 @@ packages: /before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} @@ -2409,16 +1971,8 @@ packages: readable-stream: 3.6.0 dev: true - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false - - /bottleneck@2.19.5: - resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - dev: false - - /boxen@7.0.1: - resolution: {integrity: sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==} + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} dependencies: ansi-align: 3.0.1 @@ -2449,6 +2003,7 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -2457,29 +2012,6 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001442 - electron-to-chromium: 1.4.284 - node-releases: 2.0.8 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - dev: true - - /btoa-lite@1.0.0: - resolution: {integrity: sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==} - dev: false - - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2522,25 +2054,6 @@ packages: load-tsconfig: 0.2.5 dev: true - /c8@8.0.1: - resolution: {integrity: sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==} - engines: {node: '>=12'} - hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.6 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - dev: true - /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2549,18 +2062,20 @@ packages: /cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} + dev: true - /cacheable-request@10.2.10: - resolution: {integrity: sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==} + /cacheable-request@10.2.13: + resolution: {integrity: sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==} engines: {node: '>=14.16'} dependencies: '@types/http-cache-semantics': 4.0.1 get-stream: 6.0.1 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.3 mimic-response: 4.0.0 normalize-url: 8.0.0 responselike: 3.0.0 + dev: true /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} @@ -2581,20 +2096,18 @@ packages: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 + dev: true /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} + dev: true /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001442: - resolution: {integrity: sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==} - dev: true - /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} @@ -2622,6 +2135,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2629,10 +2143,12 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -2654,28 +2170,6 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /cheerio@0.22.0: - resolution: {integrity: sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==} - engines: {node: '>= 0.6'} - dependencies: - css-select: 1.2.0 - dom-serializer: 0.1.1 - entities: 1.1.2 - htmlparser2: 3.10.1 - lodash.assignin: 4.2.0 - lodash.bind: 4.2.1 - lodash.defaults: 4.2.0 - lodash.filter: 4.6.0 - lodash.flatten: 4.4.0 - lodash.foreach: 4.5.0 - lodash.map: 4.6.0 - lodash.merge: 4.6.2 - lodash.pick: 4.4.0 - lodash.reduce: 4.6.0 - lodash.reject: 4.6.0 - lodash.some: 4.6.0 - dev: false - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -2691,14 +2185,15 @@ packages: fsevents: 2.3.2 dev: true - /ci-info@3.7.1: - resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + dev: true /clear-module@4.1.2: resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} @@ -2740,32 +2235,11 @@ packages: string-width: 5.1.2 dev: true - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - /cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} dev: true - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -2776,28 +2250,27 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: true - /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} @@ -2869,17 +2342,6 @@ packages: through2: 4.0.2 dev: true - /conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} - hasBin: true - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 - dev: false - /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true @@ -2915,6 +2377,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} @@ -2923,106 +2386,107 @@ packages: type-fest: 1.4.0 dev: true - /cspell-dictionary@7.0.0: - resolution: {integrity: sha512-CYB02vB870JfCtmi4Njuzw1nCjbyRCjoqlsAQgHkhRSevRKcjFrK3+XsBhNA3Zo4ek4P35+oS/I4vMOHu6cdCg==} + /cspell-dictionary@7.3.2: + resolution: {integrity: sha512-hL8fOZ7zTkUuE6jq2CUObxUp0fSLsNQyMo+HAkpg0w6ssHvbgnP6HP8kyEN641L/F0X/Ow2vo3CaRBadvyyzCA==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 7.0.0 - '@cspell/cspell-types': 7.0.0 - cspell-trie-lib: 7.0.0 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 + cspell-trie-lib: 7.3.2 fast-equals: 4.0.3 gensequence: 5.0.2 dev: true - /cspell-gitignore@7.0.0: - resolution: {integrity: sha512-9VVLuiVhntXO/It3K0nTDhxbPPc2nItvGLymItfUudfB0ZqgzBaomdoYZzXrcNOITjYiBXWCPuVOXLbyoL0DjQ==} + /cspell-gitignore@7.3.2: + resolution: {integrity: sha512-NWxxFcf4wwKbRInkZK/p/BrPR2ElCpcB8DLcrBxRkiI4uX7yCX8v5QjI8ZpTyuaUTl9aFqJFYtj9Q7GqkBnPzA==} engines: {node: '>=16'} hasBin: true dependencies: - cspell-glob: 7.0.0 + cspell-glob: 7.3.2 find-up: 5.0.0 dev: true - /cspell-glob@7.0.0: - resolution: {integrity: sha512-Wl47kChIuSiuStofVSPdgvwi8BRD4tN03j+yhpJ1q+lWT023ctFacZy+Lc+L6nxaTUriDy5ET+UoooPMJ2PskA==} + /cspell-glob@7.3.2: + resolution: {integrity: sha512-R/YwtBN5ApOTONkBoTOSCKDMmnRRA1fF9prkaFMfE0aT5oC2VF0N7hLCSYjpQM+kYsXeqLDc13vxFBOnHRuc3g==} engines: {node: '>=16'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar@7.0.0: - resolution: {integrity: sha512-0k1qVvxMNwP4WXX1zIp3Ub+RQnUzjiBtB+BO4Lprnkp6/JuRndpBRDrXBsqNZBVzZ+JjyRSU1elNSN6/nudXvQ==} + /cspell-grammar@7.3.2: + resolution: {integrity: sha512-ale40T4M0jHmwQsPjIbpZKzaRxMVy5dnpyvplwj7ExX4sp2Grt1wcqxk2ELS4r4bsaIap+iIfeYYhoXqYq1dQg==} engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-pipe': 7.0.0 - '@cspell/cspell-types': 7.0.0 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 dev: true - /cspell-io@7.0.0: - resolution: {integrity: sha512-pGf+XlMcOxZfO7NIwJYmje8D30OEUt2Vb7cfZ2nazdFf9/NfiZpYp3JHOT+n53DhbIXTfdmojXo5bVezPXA48g==} + /cspell-io@7.3.2: + resolution: {integrity: sha512-nul6K4YUMe1VdxuJDDOMvWUw/hIS2UZkvJLDo5GkAus7YmGSR0knfDueU+hebYszRa0LxjrduuPNcNJE/ZWUFg==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-service-bus': 7.0.0 - node-fetch: 2.6.12 + '@cspell/cspell-service-bus': 7.3.2 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true - /cspell-lib@7.0.0: - resolution: {integrity: sha512-CJAa7uV4hrm8OTnWdFPONSUP1Dp7J7fVhKu15aTrpNASUMAHe5YWqFqInCg+0+XhdRpGGYjQKhd+khsXL5a+bg==} + /cspell-lib@7.3.2: + resolution: {integrity: sha512-cbo0TSL2JnM/GdiutH193aynxdxSnxBR1DYJ1/8ycIWDU0p4AHO0EZ+5L5MkBFwpM20OicuXvLrAem9WjYVDBQ==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-bundled-dicts': 7.0.0 - '@cspell/cspell-pipe': 7.0.0 - '@cspell/cspell-types': 7.0.0 - '@cspell/strong-weak-map': 7.0.0 + '@cspell/cspell-bundled-dicts': 7.3.2 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-resolver': 7.3.2 + '@cspell/cspell-types': 7.3.2 + '@cspell/dynamic-import': 7.3.2 + '@cspell/strong-weak-map': 7.3.2 clear-module: 4.1.2 comment-json: 4.2.3 configstore: 6.0.0 cosmiconfig: 8.0.0 - cspell-dictionary: 7.0.0 - cspell-glob: 7.0.0 - cspell-grammar: 7.0.0 - cspell-io: 7.0.0 - cspell-trie-lib: 7.0.0 + cspell-dictionary: 7.3.2 + cspell-glob: 7.3.2 + cspell-grammar: 7.3.2 + cspell-io: 7.3.2 + cspell-trie-lib: 7.3.2 fast-equals: 5.0.1 find-up: 6.3.0 gensequence: 5.0.2 import-fresh: 3.3.0 resolve-from: 5.0.0 - resolve-global: 1.0.0 vscode-languageserver-textdocument: 1.0.8 vscode-uri: 3.0.7 transitivePeerDependencies: - encoding dev: true - /cspell-trie-lib@7.0.0: - resolution: {integrity: sha512-mopXyfjNRVuYbrZcbBcLwOMrWeyTezh4w8zy+RywUmsF6IW6/HM2DkfE2BmH1IyE9af29lgQqdB5eDbJLWrP5A==} + /cspell-trie-lib@7.3.2: + resolution: {integrity: sha512-IXNCWBw4UDZuY6MB+j7YNdcDpTdcfElsLkwTV8fEmNfUeClJacn2mQicQ/LKZJLvOc1TNbcSPWSCe3kQA+uxNw==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 7.0.0 - '@cspell/cspell-types': 7.0.0 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 gensequence: 5.0.2 dev: true - /cspell@7.0.0: - resolution: {integrity: sha512-E8wQP30bTLROJsSNwYnhhRUdzVa4vQo6zILv7PqgTCSaveg8Af1HEh4ocRPRhppRgIXDpccG27+ATlpEzxiPGQ==} + /cspell@7.3.2: + resolution: {integrity: sha512-/YY1C0CYBP+GueFon1BUgcDGc1YXDCyAIjuebvRygjt1cXwCklQVF5bZIGCrimgjzTrY+wx0ePgzuVQ9RyJnOQ==} engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-json-reporter': 7.0.0 - '@cspell/cspell-pipe': 7.0.0 - '@cspell/cspell-types': 7.0.0 - '@cspell/dynamic-import': 7.0.0 + '@cspell/cspell-json-reporter': 7.3.2 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 + '@cspell/dynamic-import': 7.3.2 chalk: 5.3.0 chalk-template: 1.1.0 - commander: 10.0.1 - cspell-gitignore: 7.0.0 - cspell-glob: 7.0.0 - cspell-io: 7.0.0 - cspell-lib: 7.0.0 + commander: 11.0.0 + cspell-gitignore: 7.3.2 + cspell-glob: 7.3.2 + cspell-io: 7.3.2 + cspell-lib: 7.3.2 fast-glob: 3.3.1 fast-json-stable-stringify: 2.1.0 file-entry-cache: 6.0.1 @@ -3034,21 +2498,8 @@ packages: - encoding dev: true - /css-select@1.2.0: - resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} - dependencies: - boolbase: 1.0.0 - css-what: 2.1.3 - domutils: 1.5.1 - nth-check: 1.0.2 - dev: false - - /css-what@2.1.3: - resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} - dev: false - - /data-uri-to-buffer@4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} dev: true @@ -3086,16 +2537,19 @@ packages: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 + dev: true /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 + dev: true /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} @@ -3145,6 +2599,7 @@ packages: /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} + dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -3175,6 +2630,7 @@ packages: /deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true /detect-indent@7.0.1: resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} @@ -3186,10 +2642,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: true - /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3216,37 +2668,6 @@ packages: esutils: 2.0.3 dev: true - /dom-serializer@0.1.1: - resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==} - dependencies: - domelementtype: 1.3.1 - entities: 1.1.2 - dev: false - - /domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - dev: false - - /domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} - dependencies: - domelementtype: 1.3.1 - dev: false - - /domutils@1.5.1: - resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} - dependencies: - dom-serializer: 0.1.1 - domelementtype: 1.3.1 - dev: false - - /domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - dependencies: - dom-serializer: 0.1.1 - domelementtype: 1.3.1 - dev: false - /dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -3266,22 +2687,13 @@ packages: wcwidth: 1.0.1 dev: true - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - dev: true - /emoji-regex@10.2.1: resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==} dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -3289,6 +2701,7 @@ packages: /entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true /entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} @@ -3299,6 +2712,7 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true /es-abstract@1.22.1: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} @@ -3349,8 +2763,8 @@ packages: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true - /es-get-iterator@1.1.2: - resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 @@ -3360,6 +2774,7 @@ packages: is-set: 2.0.2 is-string: 1.0.7 isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 dev: true /es-set-tostringtag@2.0.1: @@ -3446,10 +2861,6 @@ packages: '@esbuild/win32-x64': 0.18.19 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - /escape-goat@4.0.0: resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} engines: {node: '>=12'} @@ -3458,6 +2869,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -3481,13 +2893,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.0.0(eslint@8.47.0): + /eslint-config-prettier@9.0.0(eslint@8.48.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.47.0 + eslint: 8.48.0 dev: true /eslint-import-resolver-node@0.3.7: @@ -3500,7 +2912,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3521,52 +2933,52 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.47.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-deprecation@1.5.0(eslint@8.47.0)(typescript@5.1.6): + /eslint-plugin-deprecation@1.5.0(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-mRcssI/tLROueBQ6yf4LnnGTijbMsTCPIpbRbPj5R5wGYVCpk1zDmAS0SEkgcUDXOPc22qMNFR24Qw7vSPrlTA==} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: ^3.7.5 || ^4.0.0 || ^5.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6) - eslint: 8.47.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 tslib: 2.5.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.47.0): + /eslint-plugin-es-x@7.2.0(eslint@8.48.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@eslint-community/regexpp': 4.6.2 - eslint: 8.47.0 + eslint: 8.48.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.47.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.48.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.47.0 + eslint: 8.48.0 ignore: 5.2.4 dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.4.0)(eslint@8.47.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.48.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -3576,16 +2988,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.47.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.7)(eslint@8.47.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -3601,8 +3013,8 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc@46.4.6(eslint@8.47.0): - resolution: {integrity: sha512-z4SWYnJfOqftZI+b3RM9AtWL1vF/sLWE/LlO9yOKDof9yN2+n3zOdOJTGX/pRE/xnPsooOLG2Rq6e4d+XW3lNw==} + /eslint-plugin-jsdoc@46.5.1(eslint@8.48.0): + resolution: {integrity: sha512-CPbvKprmEuJYoxMj5g8gXfPqUGgcqMM6jpH06Kp4pn5Uy5MrPkFKzoD7UFp2E4RBzfXbJz1+TeuEivwFVMkXBg==} engines: {node: '>=16'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3612,7 +3024,7 @@ packages: comment-parser: 1.4.0 debug: 4.3.4 escape-string-regexp: 4.0.0 - eslint: 8.47.0 + eslint: 8.48.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.5.4 @@ -3621,40 +3033,40 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.47.0): + /eslint-plugin-jsonc@2.9.0(eslint@8.48.0): resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) - eslint: 8.47.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + eslint: 8.48.0 jsonc-eslint-parser: 2.3.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.47.0): + /eslint-plugin-markdown@3.0.1(eslint@8.48.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.47.0 + eslint: 8.48.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.0.1(eslint@8.47.0): - resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} + /eslint-plugin-n@16.0.2(eslint@8.48.0): + resolution: {integrity: sha512-Y66uDfUNbBzypsr0kELWrIz+5skicECrLUqlWuXawNSLUq3ltGlCwu6phboYYOTSnoTdHgTLrc+5Ydo6KjzZog==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) builtins: 5.0.1 - eslint: 8.47.0 - eslint-plugin-es-x: 7.2.0(eslint@8.47.0) + eslint: 8.48.0 + eslint-plugin-es-x: 7.2.0(eslint@8.48.0) ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 @@ -3667,14 +3079,14 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-perfectionist@1.5.1(eslint@8.47.0)(typescript@5.1.6): + /eslint-plugin-perfectionist@1.5.1(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-PiUrAfGDc/l6MKKUP8qt5RXueC7FZC6F/0j8ijXYU8o3x8o2qUi6zEEYBkId/IiKloIXM5KTD4jrH9833kDNzA==} peerDependencies: eslint: '>=8.0.0' dependencies: '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6) - eslint: 8.47.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 is-core-module: 2.13.0 json5: 2.2.3 minimatch: 9.0.3 @@ -3684,16 +3096,16 @@ packages: - typescript dev: true - /eslint-plugin-regexp@1.15.0(eslint@8.47.0): + /eslint-plugin-regexp@1.15.0(eslint@8.48.0): resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} engines: {node: ^12 || >=14} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@eslint-community/regexpp': 4.6.2 comment-parser: 1.4.0 - eslint: 8.47.0 + eslint: 8.48.0 grapheme-splitter: 1.0.4 jsdoctypeparser: 9.0.0 refa: 0.11.0 @@ -3701,33 +3113,34 @@ packages: scslre: 0.2.0 dev: true - /eslint-plugin-vitest@0.2.8(eslint@8.47.0)(typescript@5.1.6)(vitest@0.34.2): - resolution: {integrity: sha512-q8s4tStyKtn3gXf+8nf1ZYTHhoCXKdnozZzp6u8b4ni5v68Y4vxhNh4Z8njUfNjEY8HoPBB77MazHMR23IPb+g==} + /eslint-plugin-vitest@0.3.1(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(vitest@0.34.3): + resolution: {integrity: sha512-GeR3zISHmqUGWK2sfW+eyCZivMqiQYzPf9UttHXBiEyMveS/jkKLHCrHUllwr3Hz1+i0zoseANd2xL0cFha8Eg==} engines: {node: 14.x || >= 16} peerDependencies: + '@typescript-eslint/eslint-plugin': '*' eslint: '>=8.0.0' - vite: '*' vitest: '*' peerDependenciesMeta: - vite: + '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - eslint: 8.47.0 - vitest: 0.34.2 + '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + typescript: 5.2.2 + vitest: 0.34.3 transitivePeerDependencies: - supports-color - - typescript dev: true - /eslint-plugin-yml@1.8.0(eslint@8.47.0): + /eslint-plugin-yml@1.8.0(eslint@8.48.0): resolution: {integrity: sha512-fgBiJvXD0P2IN7SARDJ2J7mx8t0bLdG6Zcig4ufOqW5hOvSiFxeUyc2g5I1uIm8AExbo26NNYCcTGZT0MXTsyg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.47.0 + eslint: 8.48.0 lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -3756,15 +3169,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.47.0: - resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@eslint-community/regexpp': 4.6.2 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.47.0 + '@eslint/js': 8.48.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3880,21 +3293,6 @@ packages: strip-final-newline: 3.0.0 dev: true - /execa@8.0.0: - resolution: {integrity: sha512-CTNS0BcKBcoOsawKBlpcKNmK4Kjuyz5jVLhf+PUsHGMqiKMVTa4cN3U7r7bRY8KTpfOGpXMo27fdy0dYVg2pqA==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: false - /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -3950,13 +3348,6 @@ packages: web-streams-polyfill: 3.2.1 dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - /figures@5.0.0: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} @@ -3994,6 +3385,7 @@ packages: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -4029,14 +3421,6 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true - /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -4048,6 +3432,7 @@ packages: /form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} + dev: true /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} @@ -4067,6 +3452,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -4078,6 +3464,7 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} @@ -4098,15 +3485,6 @@ packages: engines: {node: '>=14'} dev: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true @@ -4128,11 +3506,7 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: false + dev: true /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -4142,10 +3516,6 @@ packages: get-intrinsic: 1.2.1 dev: true - /get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: true - /get-uri@6.0.1: resolution: {integrity: sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==} engines: {node: '>= 14'} @@ -4162,29 +3532,18 @@ packages: resolution: {integrity: sha512-XDfdemBGJIMAsHHOONHQxEH5dX2kCpE6MGZ1IsNvBuDPBZM3p4EAwAC7ygMjn/1/x+BJX0TK1ara1Zrh7JCFdQ==} dev: true - /git-remote-origin-url@4.0.0: - resolution: {integrity: sha512-EAxDksNdjuWgmVW9pVvA9jQDi/dmTaiDONktIy7qiRRhBZUI4FQK1YvBvteuTSX24aNKg9lfgxNYJEeeSXe6DA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - gitconfiglocal: 2.1.0 - dev: false - /git-up@7.0.0: resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} dependencies: is-ssh: 1.4.0 parse-url: 8.1.0 + dev: true /git-url-parse@13.1.0: resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} dependencies: git-up: 7.0.0 - - /gitconfiglocal@2.1.0: - resolution: {integrity: sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==} - dependencies: - ini: 1.3.8 - dev: false + dev: true /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -4200,8 +3559,8 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.2.7: - resolution: {integrity: sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==} + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: @@ -4209,7 +3568,7 @@ packages: jackspeak: 2.2.0 minimatch: 9.0.3 minipass: 5.0.0 - path-scurry: 1.7.0 + path-scurry: 1.10.1 dev: true /glob@7.1.6: @@ -4234,24 +3593,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: false - - /global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - dependencies: - ini: 1.3.8 - dev: true - /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -4315,14 +3656,14 @@ packages: get-intrinsic: 1.2.1 dev: true - /got@12.6.0: - resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} dependencies: - '@sindresorhus/is': 5.3.0 + '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.10 + cacheable-request: 10.2.13 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 @@ -4330,15 +3671,16 @@ packages: lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 3.0.0 + dev: true /got@13.0.0: resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} engines: {node: '>=16'} dependencies: - '@sindresorhus/is': 5.3.0 + '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.10 + cacheable-request: 10.2.13 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 @@ -4363,6 +3705,7 @@ packages: /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} + dev: true /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -4371,10 +3714,12 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-own-prop@2.0.0: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} @@ -4418,33 +3763,26 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 + dev: true /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 + dev: true /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} - dependencies: - domelementtype: 1.3.1 - domhandler: 2.4.2 - domutils: 1.7.0 - entities: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: false - /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true /http-proxy-agent@7.0.0: resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} @@ -4462,9 +3800,10 @@ packages: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + dev: true - /https-proxy-agent@7.0.0: - resolution: {integrity: sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==} + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -4483,11 +3822,6 @@ packages: engines: {node: '>=14.18.0'} dev: true - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: false - /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -4539,46 +3873,31 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} dev: true - /ini@3.0.1: - resolution: {integrity: sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dev: true - - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true /inquirer@9.2.10: @@ -4658,6 +3977,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -4696,13 +4016,14 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.7.1 + ci-info: 3.8.0 dev: true /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 + dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4735,6 +4056,7 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: true /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} @@ -4827,6 +4149,7 @@ packages: /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} + dev: true /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} @@ -4841,6 +4164,7 @@ packages: /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} + dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -4864,6 +4188,7 @@ packages: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} dependencies: protocols: 2.0.1 + dev: true /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -4873,6 +4198,7 @@ packages: /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -4893,6 +4219,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 + dev: true /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} @@ -4943,6 +4270,7 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true /issue-parser@6.0.0: resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} @@ -4960,19 +4288,6 @@ packages: engines: {node: '>=8'} dev: true - /istanbul-lib-instrument@6.0.0: - resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.22.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - /istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -5013,7 +4328,7 @@ packages: /iterate-value@1.0.2: resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==} dependencies: - es-get-iterator: 1.1.2 + es-get-iterator: 1.1.3 iterate-iterator: 1.0.2 dev: true @@ -5026,8 +4341,8 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jiti@1.19.1: - resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} + /jiti@1.19.3: + resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} hasBin: true dev: true @@ -5038,12 +4353,14 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 + dev: true /jsdoc-type-pratt-parser@4.0.0: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} @@ -5061,21 +4378,14 @@ packages: engines: {node: '>=4'} hasBin: true dev: true - - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - /json-fixer@1.6.15: - resolution: {integrity: sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw==} - engines: {node: '>=10'} - dependencies: - '@babel/runtime': 7.21.0 - chalk: 4.1.2 - pegjs: 0.10.0 + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true /json-parse-even-better-errors@3.0.0: resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} @@ -5126,43 +4436,21 @@ packages: /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + dev: true - /jsonwebtoken@9.0.0: - resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash: 4.17.21 - ms: 2.1.3 - semver: 7.5.4 - dev: false - - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - - /keyv@4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} dependencies: json-buffer: 3.0.1 + dev: true /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true - /knip@2.19.5: - resolution: {integrity: sha512-kSGe/dzC1gnKcOj48tUWyb5OtHSnbbOG55tH2XVn2Obv477B1kKyiyrC/9Akim3X+6UcVGd/sOo4gbF6a1bMgw==} + /knip@2.21.2: + resolution: {integrity: sha512-/fGWb1OZHtGj5/9nONL2iiSKdK6gbc7Kf9o5zoQJQyKe0nTYt21WnzGoXM4c6LE78V7hadJZF+2eVH56/VwdHw==} engines: {node: '>=16.17.0 <17 || >=18.6.0'} hasBin: true dependencies: @@ -5173,23 +4461,23 @@ packages: easy-table: 1.2.0 fast-glob: 3.3.1 globby: 13.2.2 - jiti: 1.19.1 + jiti: 1.19.3 js-yaml: 4.1.0 micromatch: 4.0.5 minimist: 1.2.8 pretty-ms: 8.0.0 strip-json-comments: 5.0.0 summary: 2.1.0 - typescript: 5.1.6 - zod: 3.21.4 - zod-validation-error: 1.3.1(zod@3.21.4) + typescript: 5.2.2 + zod: 3.22.2 + zod-validation-error: 1.5.0(zod@3.22.2) dev: true /latest-version@7.0.0: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} dependencies: - package-json: 8.1.0 + package-json: 8.1.1 dev: true /levn@0.4.1: @@ -5207,6 +4495,7 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true /linkify-it@2.2.0: resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} @@ -5220,8 +4509,8 @@ packages: uc.micro: 1.0.6 dev: true - /lint-staged@14.0.0: - resolution: {integrity: sha512-0tLf0pqZYkar/wu3nTctk4rVIG+d7PanDYv4/IQR4qwdqfQkTDziLRFnqMcLuLBTuUqmcLwsHPD2EjQ18d/oaA==} + /lint-staged@14.0.1: + resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} engines: {node: ^16.14.0 || >=18.0.0} hasBin: true dependencies: @@ -5272,6 +4561,7 @@ packages: engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: true /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -5287,14 +4577,6 @@ packages: p-locate: 6.0.0 dev: true - /lodash.assignin@4.2.0: - resolution: {integrity: sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==} - dev: false - - /lodash.bind@4.2.1: - resolution: {integrity: sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==} - dev: false - /lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} dev: true @@ -5303,26 +4585,10 @@ packages: resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} dev: true - /lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: false - /lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} dev: true - /lodash.filter@4.6.0: - resolution: {integrity: sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==} - dev: false - - /lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - dev: false - - /lodash.foreach@4.5.0: - resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} - dev: false - /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true @@ -5331,28 +4597,9 @@ packages: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} dev: true - /lodash.map@4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - dev: false - /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - /lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} - dev: false - - /lodash.reduce@4.6.0: - resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} - dev: false - - /lodash.reject@4.6.0: - resolution: {integrity: sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==} - dev: false - - /lodash.some@4.6.0: - resolution: {integrity: sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==} - dev: false + dev: true /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -5364,6 +4611,7 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -5401,16 +4649,11 @@ packages: /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /lru-cache@10.0.0: resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} engines: {node: 14 || >=16.14} - dev: false - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 dev: true /lru-cache@6.0.0: @@ -5418,19 +4661,15 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true /lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} dev: true - /lru-cache@9.1.1: - resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} - engines: {node: 14 || >=16.14} - dev: true - - /macos-release@3.1.0: - resolution: {integrity: sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==} + /macos-release@3.2.0: + resolution: {integrity: sha512-fSErXALFNsnowREYZ49XCdOHF8wOPWuFOGQrAhP7x5J/BqQv+B02cNsTykGpDgRVx43EKg++6ANmTaGTtW+hUA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true @@ -5457,6 +4696,7 @@ packages: /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} + dev: true /map-obj@2.0.0: resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} @@ -5466,6 +4706,7 @@ packages: /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} + dev: true /markdown-it@13.0.1: resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} @@ -5489,32 +4730,39 @@ packages: uc.micro: 1.0.6 dev: true - /markdownlint-cli@0.35.0: - resolution: {integrity: sha512-lVIIIV1MrUtjoocgDqXLxUCxlRbn7Ve8rsWppfwciUNwLlNS28AhNiyQ3PU7jjj4Qvj+rWTTvwkqg7AcdG988g==} + /markdownlint-cli@0.36.0: + resolution: {integrity: sha512-h4WdqOam3+QOVOcJSOQuG8KvvN8dlS0OiJhbPwYWBk7VMZR40UtSSMIOpSP5B4EHPHg3W3ILSQUvqg1HNpTCxA==} engines: {node: '>=16'} hasBin: true dependencies: commander: 11.0.0 get-stdin: 9.0.0 - glob: 10.2.7 + glob: 10.3.4 ignore: 5.2.4 js-yaml: 4.1.0 jsonc-parser: 3.2.0 - markdownlint: 0.29.0 + markdownlint: 0.30.0 minimatch: 9.0.3 - run-con: 1.2.11 + run-con: 1.3.2 dev: true - /markdownlint-micromark@0.1.5: - resolution: {integrity: sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A==} - engines: {node: '>=16'} - dev: true + /markdownlint-micromark@0.1.2: + resolution: {integrity: sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==} + engines: {node: '>=14.18.0'} + dev: false /markdownlint-micromark@0.1.7: resolution: {integrity: sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==} engines: {node: '>=16'} dev: true + /markdownlint-rule-helpers@0.21.0: + resolution: {integrity: sha512-27WM6H76t79EZjEl3jSabV0ZzXsC5QaSslI/5N1XuXV0mJRA6i3BPMGFrtZUbhlCNgtY6oC9h5JhtpDMv95tKg==} + engines: {node: '>=16'} + dependencies: + markdownlint-micromark: 0.1.2 + dev: false + /markdownlint@0.11.0: resolution: {integrity: sha512-wE5WdKD6zW2DQaPQ5TFBTXh5j76DnWd/IFffnDQgHmi6Y61DJXBDfLftZ/suJHuv6cwPjM6gKw2GaRLJMOR+Mg==} engines: {node: '>=6'} @@ -5522,14 +4770,6 @@ packages: markdown-it: 8.4.2 dev: true - /markdownlint@0.29.0: - resolution: {integrity: sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA==} - engines: {node: '>=16'} - dependencies: - markdown-it: 13.0.1 - markdownlint-micromark: 0.1.5 - dev: true - /markdownlint@0.30.0: resolution: {integrity: sha512-nInuFvI/rEzanAOArW5490Ez4EYpB5ODqVM0mcDYCPx9DKJWCQqCgejjiCvbSeE7sjbDscVtZmwr665qpF5xGA==} engines: {node: '>=16'} @@ -5573,6 +4813,7 @@ packages: trim-newlines: 3.0.1 type-fest: 0.18.1 yargs-parser: 20.2.9 + dev: true /meow@9.0.0: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} @@ -5594,6 +4835,7 @@ packages: /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -5637,18 +4879,22 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + dev: true /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + dev: true /mimic-response@4.0.0: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -5656,13 +4902,6 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -5677,6 +4916,7 @@ packages: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -5702,9 +4942,6 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true /mute-stream@1.0.0: @@ -5751,8 +4988,8 @@ packages: engines: {node: '>=10.5.0'} dev: true - /node-fetch@2.6.12: - resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -5767,15 +5004,11 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - data-uri-to-buffer: 4.0.0 + data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 dev: true - /node-releases@2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} - dev: true - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -5783,6 +5016,7 @@ packages: resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 + dev: true /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} @@ -5792,6 +5026,7 @@ packages: is-core-module: 2.13.0 semver: 7.5.4 validate-npm-package-license: 3.0.4 + dev: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -5801,13 +5036,7 @@ packages: /normalize-url@8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} - - /npm-email@4.0.1: - resolution: {integrity: sha512-pksm4gQZQbjZgOvVDn2CNB270mnvYM/BsR/UylL3yHcV3ieuUIqBi/QSMsVdyAsVgmTuwkhjxciv+xUpTDRPqg==} - engines: {node: ^14.17.0 || >=16.0.0} - dependencies: - got: 12.6.0 - dev: false + dev: true /npm-normalize-package-bin@3.0.0: resolution: {integrity: sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==} @@ -5861,21 +5090,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 - - /npm-user@5.0.1: - resolution: {integrity: sha512-XD7j7N1R3m/R+I5J2NRGd4OZaJ8IdDwnz4zIDvUQSWh7ZsXfFNCAZdJ1ETA+4wdFobVfWni1SChGczt8ee0AJA==} - engines: {node: '>=14.16'} - dependencies: - cheerio: 0.22.0 - got: 12.6.0 - npm-email: 4.0.1 - dev: false - - /nth-check@1.0.2: - resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} - dependencies: - boolbase: 1.0.0 - dev: false + dev: true /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -5937,26 +5152,11 @@ packages: es-abstract: 1.22.1 dev: true - /octokit@3.1.0: - resolution: {integrity: sha512-dmIH5D+edpb4/ASd6ZGo6BiRR1g4ytu8lG4f+6XN/2AW+CSuTsT0nj1d6rv/HKgoflMQ1+rb3KlVWcvrmgQZhw==} - engines: {node: '>= 18'} - dependencies: - '@octokit/app': 14.0.0 - '@octokit/core': 5.0.0 - '@octokit/oauth-app': 6.0.0 - '@octokit/plugin-paginate-graphql': 4.0.0(@octokit/core@5.0.0) - '@octokit/plugin-paginate-rest': 8.0.0(@octokit/core@5.0.0) - '@octokit/plugin-rest-endpoint-methods': 9.0.0(@octokit/core@5.0.0) - '@octokit/plugin-retry': 6.0.0(@octokit/core@5.0.0) - '@octokit/plugin-throttling': 7.0.0(@octokit/core@5.0.0) - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 - dev: false - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -5970,6 +5170,7 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} @@ -6036,8 +5237,8 @@ packages: resolution: {integrity: sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - macos-release: 3.1.0 - windows-release: 5.0.1 + macos-release: 3.2.0 + windows-release: 5.1.1 dev: true /os-tmpdir@1.0.2: @@ -6048,12 +5249,14 @@ packages: /p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} + dev: true /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 + dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -6074,6 +5277,7 @@ packages: engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -6099,9 +5303,10 @@ packages: /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + dev: true - /pac-proxy-agent@7.0.0: - resolution: {integrity: sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA==} + /pac-proxy-agent@7.0.1: + resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} engines: {node: '>= 14'} dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -6109,9 +5314,9 @@ packages: debug: 4.3.4 get-uri: 6.0.1 http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 pac-resolver: 7.0.0 - socks-proxy-agent: 8.0.1 + socks-proxy-agent: 8.0.2 transitivePeerDependencies: - supports-color dev: true @@ -6125,12 +5330,12 @@ packages: netmask: 2.0.2 dev: true - /package-json@8.1.0: - resolution: {integrity: sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==} + /package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} dependencies: - got: 12.6.0 - registry-auth-token: 5.0.1 + got: 12.6.1 + registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.5.4 dev: true @@ -6168,6 +5373,7 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true /parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} @@ -6178,15 +5384,18 @@ packages: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} dependencies: protocols: 2.0.1 + dev: true /parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} dependencies: parse-path: 7.0.0 + dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} @@ -6201,19 +5410,22 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true - /path-scurry@1.7.0: - resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 9.1.1 + lru-cache: 10.0.0 minipass: 5.0.0 dev: true @@ -6230,14 +5442,9 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /pegjs@0.10.0: - resolution: {integrity: sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -6250,11 +5457,6 @@ packages: hasBin: true dev: true - /pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - dev: true - /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -6305,20 +5507,20 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-curly@0.1.2(prettier@3.0.2): - resolution: {integrity: sha512-DNc9cd7SI/p9hJ2/HanlRgdb5s2nFO9ZZXXe/HsdPFSF7fbs7zYKsh0lEncuWMhGTBePQbVJjv94jEcNXhlaTw==} + /prettier-plugin-curly@0.1.3(prettier@3.0.3): + resolution: {integrity: sha512-NYr2BPex/0fFwDbiZZr91kfgBko1tmaorLOrVAkT5rN91mIYYJRiWabRxWGFqzRSO7J0eoEcxakY9NWvJWAh4w==} engines: {node: '>=18'} peerDependencies: prettier: ^2 || ^3 dependencies: '@babel/parser': 7.22.5 '@babel/traverse': 7.22.5 - prettier: 3.0.2 + prettier: 3.0.3 transitivePeerDependencies: - supports-color dev: true - /prettier-plugin-packagejson@2.4.5(prettier@3.0.2): + /prettier-plugin-packagejson@2.4.5(prettier@3.0.3): resolution: {integrity: sha512-glG71jE1gO3y5+JNAhC8X+4yrlN28rub6Aj461SKbaPie9RgMiHKcInH2Moi2VGOfkTXaEHBhg4uVMBqa+kBUA==} peerDependencies: prettier: '>= 1.16.0' @@ -6326,23 +5528,16 @@ packages: prettier: optional: true dependencies: - prettier: 3.0.2 + prettier: 3.0.3 sort-package-json: 2.5.1 synckit: 0.8.5 dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true + dev: true /pretty-format@29.6.1: resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} @@ -6378,6 +5573,7 @@ packages: /protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + dev: true /proxy-agent@6.3.0: resolution: {integrity: sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==} @@ -6386,11 +5582,11 @@ packages: agent-base: 7.1.0 debug: 4.3.4 http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 lru-cache: 7.18.3 - pac-proxy-agent: 7.0.0 + pac-proxy-agent: 7.0.1 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.1 + socks-proxy-agent: 8.0.2 transitivePeerDependencies: - supports-color dev: true @@ -6418,10 +5614,12 @@ packages: /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} + dev: true /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + dev: true /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -6452,6 +5650,7 @@ packages: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + dev: true /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} @@ -6461,6 +5660,7 @@ packages: normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 + dev: true /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} @@ -6469,6 +5669,7 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: true /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -6490,6 +5691,7 @@ packages: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true /refa@0.11.0: resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} @@ -6498,10 +5700,6 @@ packages: '@eslint-community/regexpp': 4.6.2 dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true - /regexp-ast-analysis@0.6.0: resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -6519,11 +5717,11 @@ packages: functions-have-names: 1.2.3 dev: true - /registry-auth-token@5.0.1: - resolution: {integrity: sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==} + /registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} dependencies: - '@pnpm/npm-conf': 1.0.5 + '@pnpm/npm-conf': 2.2.2 dev: true /registry-url@6.0.1: @@ -6575,26 +5773,9 @@ packages: engines: {node: '>=0.10'} dev: true - /replace-in-file@7.0.1: - resolution: {integrity: sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - chalk: 4.1.2 - glob: 8.1.0 - yargs: 17.7.2 - dev: false - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -6606,13 +5787,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: true - /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -6620,12 +5794,14 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} dependencies: lowercase-keys: 3.0.0 + dev: true /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} @@ -6683,22 +5859,17 @@ packages: execa: 5.1.1 dev: true - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - /run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} dev: true - /run-con@1.2.11: - resolution: {integrity: sha512-NEMGsUT+cglWkzEr4IFK21P4Jca45HqiAbIIZIBdX5+UZTB24Mb/21iNGgz9xZa8tL6vbW7CXmq7MFN42+VjNQ==} + /run-con@1.3.2: + resolution: {integrity: sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==} hasBin: true dependencies: deep-extend: 0.6.0 - ini: 3.0.1 + ini: 4.1.1 minimist: 1.2.8 strip-json-comments: 3.1.1 dev: true @@ -6709,13 +5880,6 @@ packages: queue-microtask: 1.2.3 dev: true - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true - /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: @@ -6734,6 +5898,7 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -6765,6 +5930,7 @@ packages: /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true + dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -6777,6 +5943,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /sentences-per-line@0.2.1: resolution: {integrity: sha512-6hlyKBwqoaZJ5+RBTKNNem2kBGAboh9e9KfFw5KYKA+64xaTYWbv5C6XnOudx8xk1Sg6f/4yalhJtCZFSLWIsQ==} @@ -6784,19 +5951,17 @@ packages: markdownlint: 0.11.0 dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /shell-quote-word@1.0.1: resolution: {integrity: sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg==} @@ -6840,10 +6005,7 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false + dev: true /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -6868,8 +6030,8 @@ packages: engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: true - /socks-proxy-agent@8.0.1: - resolution: {integrity: sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==} + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -6909,13 +6071,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -6933,23 +6088,28 @@ packages: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 + dev: true /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 + dev: true /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + dev: true /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.0 + dev: true /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -6970,6 +6130,13 @@ packages: bl: 5.1.0 dev: true + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: true + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -6982,6 +6149,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -7034,12 +6202,14 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: true /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} @@ -7061,12 +6231,14 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + dev: true /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} @@ -7112,16 +6284,19 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: true /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} @@ -7143,6 +6318,7 @@ packages: /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} + dev: true /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -7169,6 +6345,7 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -7191,12 +6368,6 @@ packages: engines: {node: '>=14.0.0'} dev: true - /title-case@3.0.3: - resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} - dependencies: - tslib: 2.5.0 - dev: false - /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} @@ -7255,14 +6426,15 @@ packages: /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} + dev: true - /ts-api-utils@1.0.1(typescript@5.1.6): + /ts-api-utils@1.0.1(typescript@5.2.2): resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true /ts-interface-checker@0.1.13: @@ -7284,8 +6456,9 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true - /tsup@7.2.0(typescript@5.1.6): + /tsup@7.2.0(typescript@5.2.2): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true @@ -7315,31 +6488,20 @@ packages: source-map: 0.8.0-beta.0 sucrase: 3.34.0 tree-kill: 1.2.2 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - supports-color - ts-node dev: true - /tsutils@3.21.0(typescript@5.1.6): + /tsutils@3.21.0(typescript@5.2.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.1.6 - dev: true - - /tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} - hasBin: true - dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 - '@esbuild-kit/esm-loader': 2.5.5 - optionalDependencies: - fsevents: 2.3.2 + typescript: 5.2.2 dev: true /type-check@0.4.0: @@ -7357,6 +6519,7 @@ packages: /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} + dev: true /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -7371,10 +6534,12 @@ packages: /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} + dev: true /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + dev: true /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} @@ -7435,8 +6600,8 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -7477,15 +6642,9 @@ packages: '@types/unist': 2.0.6 dev: true - /universal-github-app-jwt@1.1.1: - resolution: {integrity: sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==} - dependencies: - '@types/jsonwebtoken': 9.0.1 - jsonwebtoken: 9.0.0 - dev: false - /universal-user-agent@6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} + dev: true /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -7497,22 +6656,11 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} dependencies: - boxen: 7.0.1 + boxen: 7.1.1 chalk: 5.3.0 configstore: 6.0.0 has-yarn: 3.0.0 @@ -7541,6 +6689,7 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} @@ -7556,6 +6705,7 @@ packages: dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 + dev: true /validate-npm-package-name@5.0.0: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} @@ -7564,8 +6714,8 @@ packages: builtins: 5.0.1 dev: true - /vite-node@0.34.2(@types/node@20.5.1): - resolution: {integrity: sha512-JtW249Zm3FB+F7pQfH56uWSdlltCo1IOkZW5oHBzeQo0iX4jtC7o1t9aILMGd9kVekXBP2lfJBEQt9rBh07ebA==} + /vite-node@0.34.3(@types/node@20.5.1): + resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -7618,8 +6768,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest@0.34.2: - resolution: {integrity: sha512-WgaIvBbjsSYMq/oiMlXUI7KflELmzM43BEvkdC/8b5CAod4ryAiY2z8uR6Crbi5Pjnu5oOmhKa9sy7uk6paBxQ==} + /vitest@0.34.3: + resolution: {integrity: sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -7652,11 +6802,11 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.5.1 - '@vitest/expect': 0.34.2 - '@vitest/runner': 0.34.2 - '@vitest/snapshot': 0.34.2 - '@vitest/spy': 0.34.2 - '@vitest/utils': 0.34.2 + '@vitest/expect': 0.34.3 + '@vitest/runner': 0.34.3 + '@vitest/snapshot': 0.34.3 + '@vitest/spy': 0.34.3 + '@vitest/utils': 0.34.3 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -7671,7 +6821,7 @@ packages: tinybench: 2.5.0 tinypool: 0.7.0 vite: 4.3.3(@types/node@20.5.1) - vite-node: 0.34.2(@types/node@20.5.1) + vite-node: 0.34.3(@types/node@20.5.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -7696,6 +6846,7 @@ packages: /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + requiresBuild: true dependencies: defaults: 1.0.4 dev: true @@ -7738,10 +6889,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: true - /which-typed-array@1.1.11: resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} @@ -7759,6 +6906,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} @@ -7780,8 +6928,8 @@ packages: resolution: {integrity: sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==} dev: true - /windows-release@5.0.1: - resolution: {integrity: sha512-y1xFdFvdMiDXI3xiOhMbJwt1Y7dUxidha0CWPs1NgjZIjZANTcX7+7bMqNjuezhzb8s5JGEiBAbQjQQYYy7ulw==} + /windows-release@5.1.1: + resolution: {integrity: sha512-NMD00arvqcq2nwqc5Q6KtrSRHK+fVD31erE5FEMahAw5PmVCgD7MUXodq3pdZSUkqA9Cda2iWx6s1XYwiJWRmw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: execa: 5.1.1 @@ -7803,6 +6951,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -7815,6 +6964,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -7830,20 +6980,9 @@ packages: engines: {node: '>=12'} dev: true - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true /yaml-eslint-parser@1.2.2: resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} @@ -7859,51 +6998,16 @@ packages: engines: {node: '>= 14'} dev: true - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} + dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -7914,15 +7018,15 @@ packages: engines: {node: '>=12.20'} dev: true - /zod-validation-error@1.3.1(zod@3.21.4): - resolution: {integrity: sha512-cNEXpla+tREtNdAnNKY4xKY1SGOn2yzyuZMu4O0RQylX9apRpUjNcPkEc3uHIAr5Ct7LenjZt6RzjEH6+JsqVQ==} + /zod-validation-error@1.5.0(zod@3.22.2): + resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} engines: {node: '>=16.0.0'} peerDependencies: zod: ^3.18.0 dependencies: - zod: 3.21.4 + zod: 3.22.2 dev: true - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + /zod@3.22.2: + resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: true diff --git a/src/greet.test.ts b/src/greet.test.ts deleted file mode 100644 index f729115f..00000000 --- a/src/greet.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { greet } from "./greet.js"; - -const message = "Yay, testing!"; - -describe("greet", () => { - it("logs to the console once when message is provided as a string", () => { - const logger = vi.spyOn(console, "log").mockImplementation(() => undefined); - - greet(message); - - expect(logger).toHaveBeenCalledWith(message); - expect(logger).toHaveBeenCalledTimes(1); - }); - - it("logs to the console once when message is provided as an object", () => { - const logger = vi.spyOn(console, "log").mockImplementation(() => undefined); - - greet({ message }); - - expect(logger).toHaveBeenCalledWith(message); - expect(logger).toHaveBeenCalledTimes(1); - }); - - it("logs once when times is not provided in an object", () => { - const logger = vi.fn(); - - greet({ logger, message }); - - expect(logger).toHaveBeenCalledWith(message); - expect(logger).toHaveBeenCalledTimes(1); - }); - - it("logs a specified number of times when times is provided", () => { - const logger = vi.fn(); - const times = 7; - - greet({ logger, message, times }); - - expect(logger).toHaveBeenCalledWith(message); - expect(logger).toHaveBeenCalledTimes(7); - }); -}); diff --git a/src/greet.ts b/src/greet.ts deleted file mode 100644 index a0d3b4c6..00000000 --- a/src/greet.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { GreetOptions } from "./types.js"; - -export function greet(options: GreetOptions | string) { - const { - logger = console.log.bind(console), - message, - times = 1, - } = typeof options === "string" ? { message: options } : options; - - for (let i = 0; i < times; i += 1) { - logger(message); - } -} diff --git a/src/hydrate/index.ts b/src/hydrate/index.ts deleted file mode 100644 index 14d52402..00000000 --- a/src/hydrate/index.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { parseArgs } from "node:util"; - -import { setupWithInformation } from "../setup/setupWithInformation.js"; -import { - skipSpinnerBlock, - successSpinnerBlock, - withSpinner, -} from "../shared/cli/spinners.js"; -import { runOrRestore } from "../shared/runOrRestore.js"; -import { clearUnnecessaryFiles } from "./steps/clearUnnecessaryFiles.js"; -import { detectExistingContributors } from "./steps/detectExistingContributors.js"; -import { finalizeDependencies as finalizeDependencies } from "./steps/finalizeDependencies.js"; -import { runCommand } from "./steps/runCommand.js"; -import { writeReadme } from "./steps/writeReadme.js"; -import { writeStructure } from "./steps/writing/writeStructure.js"; -import { getHydrationDefaults } from "./values/getHydrationDefaults.js"; -import { augmentWithHydrationValues } from "./values/hydrationInputValues.js"; - -export async function hydrate(args: string[]) { - const { values: hydrationSkips } = parseArgs({ - args, - options: { - "skip-contributors": { type: "boolean" }, - "skip-install": { type: "boolean" }, - "skip-setup": { type: "boolean" }, - }, - strict: false, - tokens: true, - }); - - return await runOrRestore({ - args, - defaults: await getHydrationDefaults(), - label: "hydration", - run: async ({ octokit, values }) => { - const hydrationValues = await augmentWithHydrationValues(values); - - await withSpinner(clearUnnecessaryFiles, "clearing unnecessary files"); - - await withSpinner( - () => writeStructure(hydrationValues), - "writing new repository structure", - ); - - await withSpinner( - () => writeReadme(hydrationValues), - "writing README.md", - ); - - if (hydrationSkips["skip-contributors"]) { - skipSpinnerBlock(`Skipping detecting existing contributors.`); - } else { - await withSpinner( - detectExistingContributors, - "detecting existing contributors", - ); - } - - if (hydrationSkips["skip-install"]) { - skipSpinnerBlock(`Skipping package installations.`); - } else { - await withSpinner( - () => finalizeDependencies(hydrationValues), - "finalizing dependencies", - ); - } - - await runCommand("pnpm lint --fix", "auto-fixing lint rules"); - await runCommand("pnpm format --write", "formatting files"); - - if (hydrationSkips["skip-setup"]) { - skipSpinnerBlock(`Done hydrating, and skipping setup command.`); - } else { - successSpinnerBlock("Done hydrating. Starting setup command..."); - - await setupWithInformation({ - octokit, - values: { - ...hydrationValues, - skipUninstalls: true, - }, - }); - } - }, - }); -} diff --git a/src/hydrate/steps/clearUnnecessaryFiles.ts b/src/hydrate/steps/clearUnnecessaryFiles.ts deleted file mode 100644 index e67d1cb3..00000000 --- a/src/hydrate/steps/clearUnnecessaryFiles.ts +++ /dev/null @@ -1,32 +0,0 @@ -import fs from "node:fs/promises"; - -const globPaths = [ - ...extensions(".babelrc", "cjs", "cts", "js", "json", "mjs"), - ...extensions(".eslintrc", "js", "json", "yml"), - ...extensions(".prettierrc", "json", "json5", "yaml", "yml"), - ...extensions("babel.config", "cjs", "cts", "js", "json", "mjs"), - ...extensions("jest.config", "cjs", "js", "json", "mjs", "ts"), - "./src/**/*.js", - ".circleci/config.yml", - ".babelrc", - ".npmignore", - "CODE_OF_CONDUCT.md", - "CONTRIBUTING.md", - "codecov.yml", - "DEVELOPMENT.md", - "dist", - "lib", - "package-lock.json", - "travis.yml", - "yarn.lock", -]; - -function extensions(base: string, ...extensions: string[]) { - return extensions.map((extension) => [base, extension].join(".")); -} - -export async function clearUnnecessaryFiles() { - for (const globPath of globPaths) { - await fs.rm(globPath, { force: true, recursive: true }); - } -} diff --git a/src/hydrate/steps/detectExistingContributors.ts b/src/hydrate/steps/detectExistingContributors.ts deleted file mode 100644 index 5e5bb717..00000000 --- a/src/hydrate/steps/detectExistingContributors.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getAllContributorsForRepository } from "all-contributors-for-repository"; -import { $ } from "execa"; - -export async function detectExistingContributors() { - const contributors = await getAllContributorsForRepository({ - owner: "JoshuaKGoldberg", - repo: "template-typescript-node-package", - }); - - for (const [contributor, contributions] of Object.entries(contributors)) { - const contributionTypes = Object.keys(contributions).join(","); - await $`npx all-contributors add ${contributor} ${contributionTypes}`; - } -} diff --git a/src/hydrate/steps/finalizeDependencies.test.ts b/src/hydrate/steps/finalizeDependencies.test.ts deleted file mode 100644 index c309fe4a..00000000 --- a/src/hydrate/steps/finalizeDependencies.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { finalizeDependencies } from "./finalizeDependencies.js"; - -const mockExecaCommand = vi.fn(); - -vi.mock("execa", () => ({ - get execaCommand() { - return mockExecaCommand; - }, -})); - -describe("finalize", () => { - it("installs the base list of commands when no options are enabled", async () => { - await finalizeDependencies({ releases: false, unitTests: false }); - - expect(mockExecaCommand).toHaveBeenCalledWith( - [ - "pnpm add", - "@types/eslint@latest", - "@typescript-eslint/eslint-plugin@latest", - "@typescript-eslint/parser@latest", - "all-contributors-cli@latest", - "cspell@latest", - "eslint@latest", - "eslint-config-prettier@latest", - "eslint-plugin-deprecation@latest", - "eslint-plugin-eslint-comments@latest", - "eslint-plugin-import@latest", - "eslint-plugin-jsdoc@latest", - "eslint-plugin-jsonc@latest", - "eslint-plugin-markdown@latest", - "eslint-plugin-n@latest", - "eslint-plugin-perfectionist@latest", - "eslint-plugin-regexp@latest", - "eslint-plugin-yml@latest", - "husky@latest", - "jsonc-eslint-parser@latest", - "knip@latest", - "lint-staged@latest", - "markdownlint@latest", - "markdownlint-cli@latest", - "npm-package-json-lint@latest", - "npm-package-json-lint-config-default@latest", - "prettier@latest", - "prettier-plugin-curly@latest", - "prettier-plugin-packagejson@latest", - "sentences-per-line@latest", - "should-semantic-release@latest", - "typescript@latest", - "yaml-eslint-parser@latest", - "-D", - ].join(" "), - { stdio: "inherit" }, - ); - }); - - it("installs the full list of commands when both options are enabled", async () => { - await finalizeDependencies({ releases: true, unitTests: true }); - - expect(mockExecaCommand).toHaveBeenCalledWith( - [ - "pnpm add", - "@types/eslint@latest", - "@typescript-eslint/eslint-plugin@latest", - "@typescript-eslint/parser@latest", - "all-contributors-cli@latest", - "cspell@latest", - "eslint@latest", - "eslint-config-prettier@latest", - "eslint-plugin-deprecation@latest", - "eslint-plugin-eslint-comments@latest", - "eslint-plugin-import@latest", - "eslint-plugin-jsdoc@latest", - "eslint-plugin-jsonc@latest", - "eslint-plugin-markdown@latest", - "eslint-plugin-n@latest", - "eslint-plugin-perfectionist@latest", - "eslint-plugin-regexp@latest", - "eslint-plugin-yml@latest", - "husky@latest", - "jsonc-eslint-parser@latest", - "knip@latest", - "lint-staged@latest", - "markdownlint@latest", - "markdownlint-cli@latest", - "npm-package-json-lint@latest", - "npm-package-json-lint-config-default@latest", - "prettier@latest", - "prettier-plugin-curly@latest", - "prettier-plugin-packagejson@latest", - "sentences-per-line@latest", - "should-semantic-release@latest", - "typescript@latest", - "yaml-eslint-parser@latest", - "release-it@latest", - "@vitest/coverage-istanbul@latest", - "console-fail-test@latest", - "eslint-plugin-no-only-tests@latest", - "eslint-plugin-vitest@latest", - "vitest@latest", - "-D", - ].join(" "), - { stdio: "inherit" }, - ); - }); -}); diff --git a/src/hydrate/steps/finalizeDependencies.ts b/src/hydrate/steps/finalizeDependencies.ts deleted file mode 100644 index 315d5fb1..00000000 --- a/src/hydrate/steps/finalizeDependencies.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { execaCommand } from "execa"; - -import { HydrationInputValues } from "../values/types.js"; - -export async function finalizeDependencies({ - releases, - unitTests, -}: Pick) { - const devDependencies = [ - "@types/eslint", - "@typescript-eslint/eslint-plugin", - "@typescript-eslint/parser", - "all-contributors-cli", - "cspell", - "eslint", - "eslint-config-prettier", - "eslint-plugin-deprecation", - "eslint-plugin-eslint-comments", - "eslint-plugin-import", - "eslint-plugin-jsdoc", - "eslint-plugin-jsonc", - "eslint-plugin-markdown", - "eslint-plugin-n", - "eslint-plugin-perfectionist", - "eslint-plugin-regexp", - "eslint-plugin-yml", - "husky", - "jsonc-eslint-parser", - "knip", - "lint-staged", - "markdownlint", - "markdownlint-cli", - "npm-package-json-lint", - "npm-package-json-lint-config-default", - "prettier", - "prettier-plugin-curly", - "prettier-plugin-packagejson", - "sentences-per-line", - "should-semantic-release", - "typescript", - "yaml-eslint-parser", - ]; - - if (releases) { - devDependencies.push("release-it"); - } - - if (unitTests) { - devDependencies.push( - "@vitest/coverage-istanbul", - "console-fail-test", - "eslint-plugin-no-only-tests", - "eslint-plugin-vitest", - "vitest", - ); - } - - for (const command of [ - `pnpm add ${devDependencies.map(atLatest).join(" ")} -D`, - `npx all-contributors generate`, - `pnpm uninstall all-contributors-cli all-contributors-for-repository -D`, - "pnpm run format:write", - ]) { - await execaCommand(command, { stdio: "inherit" }); - } -} - -const atLatest = (packageName: string) => `${packageName}@latest`; diff --git a/src/hydrate/steps/runCommand.test.ts b/src/hydrate/steps/runCommand.test.ts deleted file mode 100644 index 8765cda8..00000000 --- a/src/hydrate/steps/runCommand.test.ts +++ /dev/null @@ -1,48 +0,0 @@ -import chalk from "chalk"; -import { describe, expect, it, vi } from "vitest"; - -import { runCommand } from "./runCommand.js"; - -const mockExecaCommand = vi.fn().mockRejectedValue("Oh no!"); - -vi.mock("execa", () => ({ - get execaCommand() { - return mockExecaCommand; - }, -})); - -const mockLogLine = vi.fn(); - -vi.mock("../../shared/cli/lines.js", () => ({ - get logLine() { - return mockLogLine; - }, -})); - -vi.mock("../../shared/cli/spinners.js", () => ({ - withSpinner: vi.fn((callback: () => unknown) => callback()), -})); - -describe("runCommand", () => { - it("does not log when the command succeeds", async () => { - mockExecaCommand.mockResolvedValue(undefined); - - await runCommand("command", "label"); - - expect(mockLogLine).not.toHaveBeenCalled(); - }); - - it("logs when the command failures", async () => { - mockExecaCommand.mockRejectedValue(new Error("Oh no!")); - - await runCommand("command", "label"); - - expect(mockLogLine).toHaveBeenCalledWith( - [ - chalk.yellow(`⚠️ Running \``), - chalk.yellowBright("command"), - chalk.yellow(`\` failed. You should run it and fix its complaints.`), - ].join(""), - ); - }); -}); diff --git a/src/hydrate/steps/runCommand.ts b/src/hydrate/steps/runCommand.ts deleted file mode 100644 index 8406f9d1..00000000 --- a/src/hydrate/steps/runCommand.ts +++ /dev/null @@ -1,27 +0,0 @@ -import chalk from "chalk"; -import { execaCommand } from "execa"; - -import { logLine } from "../../shared/cli/lines.js"; -import { withSpinner } from "../../shared/cli/spinners.js"; - -export async function runCommand(command: string, label: string) { - const succeeded = await withSpinner(async () => { - try { - await execaCommand(command); - return true; - } catch { - return false; - } - }, label); - - if (!succeeded) { - logLine(); - logLine( - [ - chalk.yellow(`⚠️ Running \``), - chalk.yellowBright(command), - chalk.yellow(`\` failed. You should run it and fix its complaints.`), - ].join(""), - ); - } -} diff --git a/src/hydrate/steps/writeReadme.test.ts b/src/hydrate/steps/writeReadme.test.ts deleted file mode 100644 index 6f0e149f..00000000 --- a/src/hydrate/steps/writeReadme.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { writeReadme } from "./writeReadme.js"; - -const mockWriteFile = vi.fn(); - -vi.mock("node:fs/promises", () => ({ - get default() { - return { - get writeFile() { - return mockWriteFile; - }, - }; - }, -})); - -const mockReadFileSafe = vi.fn(); - -vi.mock("../readFileSafe.js", () => ({ - get readFileSafe() { - return mockReadFileSafe; - }, -})); - -const stubValues = { - author: "Test Author", - description: "Test description.", - email: "test@test.test", - funding: undefined, - owner: "TestOwner", - releases: undefined, - repository: "test-repository", - skipApi: false, - skipRemoval: false, - skipRestore: false, - skipUninstalls: false, - title: "Test Title", - unitTests: undefined, -}; - -describe("writeReadme", () => { - it("writes a new file when README.md does not yet exist", async () => { - mockReadFileSafe.mockResolvedValue(undefined); - - await writeReadme(stubValues); - - expect(mockWriteFile.mock.calls).toMatchInlineSnapshot(` - [ - [ - "README.md", - "

Test Title

- -

Test description.

- -

- - - - \\"All - - - - - - - \\"Contributor - - - \\"License: - - \\"Style: - \\"TypeScript: -

- - - ## Contributors - - - - - - - -
- - - - - - - ", - ], - ] - `); - }); -}); diff --git a/src/hydrate/steps/writeReadme.ts b/src/hydrate/steps/writeReadme.ts deleted file mode 100644 index d1f351ff..00000000 --- a/src/hydrate/steps/writeReadme.ts +++ /dev/null @@ -1,105 +0,0 @@ -import fs from "node:fs/promises"; - -import { readFileSafe } from "../../shared/readFileSafe.js"; -import { HydrationInputValues } from "../values/types.js"; - -const contributorsIndicator = ``; - -const allContributorsContent = ` -## Contributors - - -${contributorsIndicator} - - - - -
- - - - - - -`; - -export async function writeReadme(values: HydrationInputValues) { - let contents = await readFileSafe("README.md", ""); - if (!contents) { - await fs.writeFile( - "README.md", - [generateTopContent(values), allContributorsContent].join("\n\n"), - ); - return; - } - - const endOfH1 = findH1Close(contents); - - contents = [generateTopContent(values), contents.slice(endOfH1)] - .join("") - .replace(/\[!\[.+\]\(.+\)\]\(.+\)/g, "") - .replace(/!\[.+\]\(.+\)/g, "") - .replaceAll("\r", "") - .replaceAll("\n\n\n", "\n\n"); - - if (!contents.includes(contributorsIndicator)) { - contents = [contents, allContributorsContent].join("\n\n"); - } - - await fs.writeFile("README.md", contents); -} - -function findH1Close(contents: string) { - const markdownMatch = contents.match(/^#.+/); - if (markdownMatch) { - return (markdownMatch.index ?? 0) + markdownMatch[0].length; - } - - return contents.indexOf("") + "".length; -} - -function generateTopContent(values: HydrationInputValues) { - return `

${values.title}

- -

${values.description}

- -

- - - -All Contributors: 17 - - - - ${ - values.unitTests - ? ` - Codecov Test Coverage` - : "" - } - - - Contributor Covenant - - - License: MIT - ${ - values.funding - ? ` - - Sponsor: On GitHub - ` - : "" - } - Style: Prettier - TypeScript: Strict -

`; -} diff --git a/src/hydrate/steps/writing/creation/dotGitHub/actions.test.ts b/src/hydrate/steps/writing/creation/dotGitHub/actions.test.ts deleted file mode 100644 index 5650f7c4..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/actions.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { createDotGitHubActions } from "./actions.js"; - -describe("createDotGitHubActions", () => { - it("creates a prepare/action.yml file", () => { - const actual = createDotGitHubActions(); - - expect(actual).toEqual({ - prepare: { - "action.yml": `description: Prepares the repo for a typical CI job - -name: Prepare - -runs: - steps: - - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3 - with: - cache: pnpm - node-version: '18' - - run: pnpm install --frozen-lockfile - shell: bash - using: composite -`, - }, - }); - }); -}); diff --git a/src/hydrate/steps/writing/creation/dotGitHub/actions.ts b/src/hydrate/steps/writing/creation/dotGitHub/actions.ts deleted file mode 100644 index 67db8be3..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/actions.ts +++ /dev/null @@ -1,28 +0,0 @@ -import jsYaml from "js-yaml"; - -export function createDotGitHubActions() { - return { - prepare: { - "action.yml": jsYaml - .dump({ - description: "Prepares the repo for a typical CI job", - name: "Prepare", - runs: { - steps: [ - { uses: "pnpm/action-setup@v2" }, - { - uses: "actions/setup-node@v3", - with: { cache: "pnpm", "node-version": "18" }, - }, - { - run: "pnpm install --frozen-lockfile", - shell: "bash", - }, - ], - using: "composite", - }, - }) - .replaceAll(/\n(\S)/g, "\n\n$1"), - }, - }; -} diff --git a/src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.test.ts b/src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.test.ts deleted file mode 100644 index 1041f608..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { createWorkflowFile } from "./createWorkflowFile.js"; - -describe("createWorkflowFile", () => { - it("creates a workflow file when runs are provided", () => { - const actual = createWorkflowFile({ - name: "Test Name", - runs: ["pnpm build"], - }); - - expect(actual).toEqual( - `jobs: - test_name: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: ./.github/actions/prepare - - run: pnpm build - -name: Test Name - -on: - pull_request: ~ - push: - branches: - - main -`, - ); - }); -}); diff --git a/src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.ts b/src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.ts deleted file mode 100644 index a38aa10f..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/createWorkflowFile.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { formatYaml } from "../formatters/formatYaml.js"; - -interface WorkflowFileConcurrency { - "cancel-in-progress": boolean; - group: string; -} - -interface WorkflowFileOn { - pull_request?: - | { - branches?: string | string[]; - types?: string[]; - } - | null - | string; - pull_request_target?: { - types: string[]; - }; - push?: { - branches: string[]; - }; - release?: { - types: string[]; - }; - workflow_dispatch?: null | string; -} - -interface WorkflowFilePermissions { - contents?: string; - "pull-requests"?: string; -} - -interface WorkflowFileStep { - env?: Record; - if?: string; - name?: string; - run?: string; - uses?: string; - with?: Record; -} - -interface WorkflowFileOptionsBase { - concurrency?: WorkflowFileConcurrency; - name: string; - on?: WorkflowFileOn; - permissions?: WorkflowFilePermissions; -} - -interface WorkflowFileOptionsRuns extends WorkflowFileOptionsBase { - runs: (WorkflowFileStep | string)[]; -} - -interface WorkflowFileOptionsSteps extends WorkflowFileOptionsBase { - steps: WorkflowFileStep[]; -} - -type WorkflowFileOptions = WorkflowFileOptionsRuns | WorkflowFileOptionsSteps; - -export function createWorkflowFile({ - concurrency, - name, - on = { - pull_request: null, - push: { - branches: ["main"], - }, - }, - permissions, - ...options -}: WorkflowFileOptions) { - return ( - formatYaml({ - concurrency, - jobs: { - [name.replaceAll(" ", "_").toLowerCase()]: { - "runs-on": "ubuntu-latest", - steps: - "runs" in options - ? [ - { uses: "actions/checkout@v3" }, - { uses: "./.github/actions/prepare" }, - ...options.runs.map((run) => ({ run })), - ] - : options.steps, - }, - }, - name, - on, - permissions, - }) - .replaceAll(/\n(\S)/g, "\n\n$1") - // https://github.com/nodeca/js-yaml/pull/515 - .replaceAll(/: "\\n(.+)"/g, ": |\n$1") - .replaceAll("\\n", "\n") - .replaceAll("\\t", " ") - ); -} diff --git a/src/hydrate/steps/writing/creation/dotGitHub/index.ts b/src/hydrate/steps/writing/creation/dotGitHub/index.ts deleted file mode 100644 index b1d6b076..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { HydrationInputValues } from "../../../../values/types.js"; -import { createDotGitHubActions } from "./actions.js"; -import { createDotGitHubIssueTemplate } from "./issueTemplate.js"; -import { createDotGitHubFiles } from "./rootFiles.js"; -import { createWorkflows } from "./workflows.js"; - -export function createDotGitHub(values: HydrationInputValues) { - return { - ISSUE_TEMPLATE: createDotGitHubIssueTemplate(values), - actions: createDotGitHubActions(), - workflows: createWorkflows(values), - ...createDotGitHubFiles(values), - }; -} diff --git a/src/hydrate/steps/writing/creation/dotGitHub/issueTemplate.ts b/src/hydrate/steps/writing/creation/dotGitHub/issueTemplate.ts deleted file mode 100644 index 50ab41c8..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/issueTemplate.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { HydrationInputValues } from "../../../../values/types.js"; -import { formatYaml } from "../formatters/formatYaml.js"; - -export function createDotGitHubIssueTemplate({ - owner, - repository, -}: Pick) { - return { - "01-bug.yml": formatYaml({ - body: [ - { - attributes: { - description: - "If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!", - label: "Bug Report Checklist", - options: [ - { - label: "I have tried restarting my IDE and the issue persists.", - required: true, - }, - { - label: - "I have pulled the latest `main` branch of the repository.", - required: true, - }, - { - label: `I have [searched for related issues](https://github.com/${owner}/${repository}/issues?q=is%3Aissue) and found none that matched my issue.`, - required: true, - }, - ], - }, - type: "checkboxes", - }, - { - attributes: { - description: "What did you expect to happen?", - label: "Expected", - }, - type: "textarea", - validations: { - required: true, - }, - }, - { - attributes: { - description: "What happened instead?", - label: "Actual", - }, - type: "textarea", - validations: { - required: true, - }, - }, - { - attributes: { - description: "Any additional info you'd like to provide.", - label: "Additional Info", - }, - type: "textarea", - }, - ], - description: "Report a bug trying to run the code", - labels: ["type: bug"], - name: "🐛 Report a Bug", - title: "🐛 Bug: ", - }), - "02-documentation.yml": formatYaml({ - body: [ - { - attributes: { - description: - "If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!", - label: "Bug Report Checklist", - options: [ - { - label: - "I have pulled the latest `main` branch of the repository.", - required: true, - }, - { - label: `I have [searched for related issues](https://github.com/${owner}/${repository}/issues?q=is%3Aissue) and found none that matched my issue.`, - required: true, - }, - ], - }, - type: "checkboxes", - }, - { - attributes: { - description: "What would you like to report?", - label: "Overview", - }, - type: "textarea", - validations: { - required: true, - }, - }, - { - attributes: { - description: "Any additional info you'd like to provide.", - label: "Additional Info", - }, - type: "textarea", - }, - ], - description: "Report a typo or missing area of documentation", - labels: ["area: documentation"], - name: "📝 Documentation", - title: "📝 Documentation: ", - }), - "03-feature.yml": formatYaml({ - body: [ - { - attributes: { - description: - "If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!", - label: "Bug Report Checklist", - options: [ - { - label: "I have tried restarting my IDE and the issue persists.", - required: true, - }, - { - label: - "I have pulled the latest `main` branch of the repository.", - required: true, - }, - { - label: `I have [searched for related issues](https://github.com/${owner}/${repository}/issues?q=is%3Aissue) and found none that matched my issue.`, - required: true, - }, - ], - }, - type: "checkboxes", - }, - { - attributes: { - description: "What did you expect to be able to do?", - label: "Overview", - }, - type: "textarea", - validations: { - required: true, - }, - }, - { - attributes: { - description: "Any additional info you'd like to provide.", - label: "Additional Info", - }, - type: "textarea", - }, - ], - description: - "Request that a new feature be added or an existing feature improved", - labels: ["type: feature"], - name: "🚀 Request a Feature", - title: "🚀 Feature: ", - }), - "04-tooling.yml": formatYaml({ - body: [ - { - attributes: { - description: - "If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!", - label: "Bug Report Checklist", - options: [ - { - label: "I have tried restarting my IDE and the issue persists.", - required: true, - }, - { - label: - "I have pulled the latest `main` branch of the repository.", - required: true, - }, - { - label: `I have [searched for related issues](https://github.com/${owner}/${repository}/issues?q=is%3Aissue) and found none that matched my issue.`, - required: true, - }, - ], - }, - type: "checkboxes", - }, - { - attributes: { - description: "What did you expect to be able to do?", - label: "Overview", - }, - type: "textarea", - validations: { - required: true, - }, - }, - { - attributes: { - description: "Any additional info you'd like to provide.", - label: "Additional Info", - }, - type: "textarea", - }, - ], - description: - "Report a bug or request an enhancement in repository tooling", - labels: ["area: tooling"], - name: "🛠 Tooling", - title: "🛠 Tooling: ", - }), - }; -} diff --git a/src/hydrate/steps/writing/creation/dotGitHub/rootFiles.ts b/src/hydrate/steps/writing/creation/dotGitHub/rootFiles.ts deleted file mode 100644 index 5f4ce157..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/rootFiles.ts +++ /dev/null @@ -1,368 +0,0 @@ -/* spellchecker: disable */ -import { HydrationInputValues } from "../../../../values/types.js"; -import { formatYaml } from "../formatters/formatYaml.js"; - -export function createDotGitHubFiles({ - email, - funding, - owner, - repository, -}: Pick) { - return { - "CODE_OF_CONDUCT.md": `# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -- Demonstrating empathy and kindness toward other people -- Being respectful of differing opinions, viewpoints, and experiences -- Giving and gracefully accepting constructive feedback -- Accepting responsibility and apologizing to those affected by our mistakes, -and learning from the experience -- Focusing on what is best not just for us as individuals, but for the overall -community - -Examples of unacceptable behavior include: - -- The use of sexualized language or imagery, and sexual attention or advances of -any kind -- Trolling, insulting or derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or email address, -without their explicit permission -- Other conduct which could reasonably be considered inappropriate in a -professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -${email}. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][mozilla coc]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][faq]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[mozilla coc]: https://github.com/mozilla/diversity -[faq]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations -`, - "CONTRIBUTING.md": `# Contributing - -Thanks for your interest in contributing to \`${repository}\`! 💖 - -> After this page, see [DEVELOPMENT.md](./DEVELOPMENT.md) for local development instructions. - -## Code of Conduct - -This project contains a [Contributor Covenant code of conduct](./CODE_OF_CONDUCT.md) all contributors are expected to follow. - -## Reporting Issues - -Please do [report an issue on the issue tracker](https://github.com/${owner}/${repository}/issues/new/choose) if there's any bugfix, documentation improvement, or general enhancement you'd like to see in the repository! Please fully fill out all required fields in the most appropriate issue form. - -## Sending Contributions - -Sending your own changes as contribution is always appreciated! -There are two steps involved: - -1. [Finding an Issue](#finding-an-issue) -2. [Sending a Pull Request](#sending-a-pull-request) - -### Finding an Issue - -With the exception of very small typos, all changes to this repository generally need to correspond to an [open issue marked as \`accepting prs\` on the issue tracker](https://github.com/${owner}/${repository}/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22). -If this is your first time contributing, consider searching for [unassigned issues that also have the \`good first issue\` label](https://github.com/${owner}/${repository}/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22+label%3A%22good+first+issue%22+no%3Aassignee). -If the issue you'd like to fix isn't found on the issue, see [Reporting Issues](#reporting-issues) for filing your own (please do!). - -### Sending a Pull Request - -Once you've identified an open issue accepting PRs that doesn't yet have a PR sent, you're free to send a pull request. -Be sure to fill out the pull request template's requested information -- otherwise your PR will likely be closed. - -PRs are also expected to have a title that adheres to [commitlint](https://github.com/conventional-changelog/commitlint). -Only PR titles need to be in that format, not individual commits. -Don't worry if you get this wrong: you can always change the PR title after sending it. -Check [previously merged PRs](https://github.com/${owner}/${repository}/pulls?q=is%3Apr+is%3Amerged+-label%3Adependencies+) for reference. - -#### Draft PRs - -If you don't think your PR is ready for review, [set it as a draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft). -Draft PRs won't be reviewed. - -#### Granular PRs - -Please keep pull requests single-purpose: in other words, don't attempt to solve multiple unrelated problems in one pull request. -Send one PR per area of concern. -Multi-purpose pull requests are harder and slower to review, block all changes from being merged until the whole pull request is reviewed, and are difficult to name well with semantic PR titles. - -#### Pull Request Reviews - -When a PR is not in draft, it's considered ready for review. -Please don't manually \`@\` tag anybody to request review. -A maintainer will look at it when they're next able to. - -PRs should have passing [GitHub status checks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks) before review is requested (unless there are explicit questions asked in the PR about any failures). - -#### Asking Questions - -If you need help and/or have a question, posting a comment in the PR is a great way to do so. -There's no need to tag anybody individually. -One of us will drop by and help when we can. - -Please post comments as [line comments](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request) when possible, so that they can be threaded. -You can [resolve conversations](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request#resolving-conversations) on your own when you feel they're resolved - no need to comment explicitly and/or wait for a maintainer. - -#### Requested Changes - -After a maintainer reviews your PR, they may request changes on it. -Once you've made those changes, [re-request review on GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews#re-requesting-a-review). - -Please try not to force-push commits to PRs that have already been reviewed. -Doing so makes it harder to review the changes. -We squash merge all commits so there's no need to try to preserve Git history within a PR branch. - -Once you've addressed all our feedback by making code changes and/or started a followup discussion, [re-request review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews#re-requesting-a-review) from each maintainer whose feedback you addressed. - -Once all feedback is addressed and the PR is approved, we'll ensure the branch is up to date with \`main\` and merge it for you. - -#### Post-Merge Recognition - -Once your PR is merged, if you haven't yet been added to the [_Contributors_ table in the README.md](../README.md#contributors) for its [type of contribution](https://allcontributors.org/docs/en/emoji-key "Allcontributors emoji key"), you should be soon. -Please do ping the maintainer who merged your PR if that doesn't happen within 24 hours - it was likely an oversight on our end! - -## Emojis & Appreciation - -If you made it all the way to the end, bravo dear user, we love you. -Please include your favorite emoji in the bottom of your issues and PRs to signal to us that you did in fact read this file and are trying to conform to it as best as possible. -💖 is a good starter if you're not sure which to use. -`, - "DEVELOPMENT.md": `# Development - -After [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo) and [installing pnpm](https://pnpm.io/installation): - -\`\`\`shell -git clone https://github.com//${repository} -cd ${repository} -pnpm install -\`\`\` - -> This repository includes a list of suggested VS Code extensions. -> It's a good idea to use [VS Code](https://code.visualstudio.com) and accept its suggestion to install them, as they'll help with development. - -## Building - -Run [TypeScript](https://typescriptlang.org) locally to type check and build source files from \`src/\` into output files in \`lib/\`: - -\`\`\`shell -pnpm build --watch -\`\`\` - -You should also see suggestions from TypeScript in your editor. - -## Formatting - -[Prettier](https://prettier.io) is used to format code. -It should be applied automatically when you save files in VS Code or make a Git commit. - -To manually reformat all files, you can run: - -\`\`\`shell -pnpm format:write -\`\`\` - -## Linting - -This package includes several forms of linting to enforce consistent code quality and styling. -Each should be shown in VS Code, and can be run manually on the command-line: - -- \`pnpm lint:knip\` ([knip](https://github.com/webpro/knip)): Detects unused files, dependencies, and code exports -- \`pnpm lint:md\` ([Markdownlint](https://github.com/DavidAnson/markdownlint)): Checks Markdown source files -- \`pnpm lint:package\` ([npm-package-json-lint](https://npmpackagejsonlint.org/)): Lints the \`package.json\` file -- \`pnpm lint:packages\` ([pnpm dedupe --check](https://pnpm.io/cli/dedupe)): Checks for unnecessarily duplicated packages in the \`pnpm-lock.yml\` file -- \`pnpm lint:spelling\` ([cspell](https://cspell.org)): Spell checks across all source files -- \`pnpm lint\` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files - -## Testing - -[Vitest](https://vitest.dev) is used for tests. -You can run it locally on the command-line: - -\`\`\`shell -pnpm run test -\`\`\` - -Add the \`--coverage\` flag to compute test coverage and place reports in the \`coverage/\` directory: - -\`\`\`shell -pnpm run test --coverage -\`\`\` - -Note that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs. -Calls to \`console.log\`, \`console.warn\`, and other console methods will cause a test to fail. - -### Debugging Tests - -This repository includes a [VS Code launch configuration](https://code.visualstudio.com/docs/editor/debugging) for debugging unit tests. -To launch it, open a test file, then run _Debug Current Test File_ from the VS Code Debug panel (or press F5). - -### Testing the Setup Script - -In addition to unit tests, this template also includes an "end-to-end" test for \`script/setup.js\`. -You can run it locally on the command-line: - -\`\`\`shell -pnpm run setup:test -\`\`\` - -That end-to-end test executes \`script/setup-test-e2e.js\`, which: - -1. Runs the setup script using \`--skip-api\` -2. Checks that the local repository's files were changed correctly (e.g. removed setup-only files) - -As with the setup script itself, end-to-end tests are removed on package setup. - `, - ...(funding && { "FUNDING.yml": formatYaml({ github: funding }) }), - "ISSUE_TEMPLATE.md": ` - - - - - -## Overview - -... -`, - "PULL_REQUEST_TEMPLATE.md": ` - -## PR Checklist - -- [ ] Addresses an existing open issue: fixes #000 -- [ ] That issue was marked as [\`status: accepting prs\`](https://github.com/${owner}/${repository}/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22) -- [ ] Steps in [CONTRIBUTING.md](https://github.com/${owner}/${repository}/blob/main/.github/CONTRIBUTING.md) were taken - -## Overview - - -`, - "SECURITY.md": `# Security Policy - -We take all security vulnerabilities seriously. -If you have a vulnerability or other security issues to disclose: - -- Thank you very much, please do! -- Please send them to us by emailing \`${email}\` - -We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. -`, - "renovate.json": JSON.stringify( - { - $schema: "https://docs.renovatebot.com/renovate-schema.json", - automerge: true, - internalChecksFilter: "strict", - labels: ["dependencies"], - postUpdateOptions: ["pnpmDedupe"], - stabilityDays: 3, - }, - null, - 4, - ), - }; -} diff --git a/src/hydrate/steps/writing/creation/dotGitHub/workflows.ts b/src/hydrate/steps/writing/creation/dotGitHub/workflows.ts deleted file mode 100644 index 6319a934..00000000 --- a/src/hydrate/steps/writing/creation/dotGitHub/workflows.ts +++ /dev/null @@ -1,263 +0,0 @@ -/* spellchecker: disable */ -import { HydrationInputValues } from "../../../../values/types.js"; -import { createWorkflowFile } from "./createWorkflowFile.js"; - -export function createWorkflows({ - owner, - repository, -}: Pick) { - return { - "build.yml": createWorkflowFile({ - name: "Build", - runs: ["pnpm build", "node ./lib/index.js"], - }), - "compliance.yml": createWorkflowFile({ - name: "Compliance", - on: { - pull_request: { - branches: ["main"], - types: ["edited", "opened", "reopened", "synchronize"], - }, - }, - permissions: { - "pull-requests": "write", - }, - steps: [ - { - uses: "mtfoley/pr-compliance-action@main", - with: { - "body-auto-close": false, - "ignore-authors": [ - "allcontributors", - "allcontributors[bot]", - "renovate", - "renovate[bot]", - ].join("\n"), - "ignore-team-members": false, - }, - }, - ], - }), - "contributors.yml": createWorkflowFile({ - name: "Contributors", - on: { - push: { - branches: ["main"], - }, - }, - steps: [ - { uses: "actions/checkout@v3", with: { "fetch-depth": 0 } }, - { uses: "./.github/actions/prepare" }, - { - env: { GITHUB_TOKEN: "${{ secrets.ACCESS_TOKEN }}" }, - uses: `JoshuaKGoldberg/all-contributors-auto-action@v0.3.2`, - }, - ], - }), - "lint.yml": createWorkflowFile({ - name: "Lint", - runs: ["pnpm lint"], - }), - "lint-knip.yml": createWorkflowFile({ - name: "Lint Knip", - runs: ["pnpm lint:knip"], - }), - "lint-markdown.yml": createWorkflowFile({ - name: "Lint Markdown", - runs: ["pnpm lint:md"], - }), - "lint-package.yml": createWorkflowFile({ - name: "Lint Package", - runs: ["pnpm lint:package"], - }), - "lint-spelling.yml": createWorkflowFile({ - name: "Lint spelling", - runs: ["pnpm lint:spelling"], - }), - "post-release.yml": createWorkflowFile({ - name: "Post Release", - on: { - release: { - types: ["published"], - }, - }, - steps: [ - { uses: "actions/checkout@v3", with: { "fetch-depth": 0 } }, - { - run: `echo "npm_version=$(npm pkg get version | tr -d '"')" >> "$GITHUB_ENV"`, - }, - { - uses: "apexskier/github-release-commenter@v1", - with: { - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}", - "comment-template": ` - :tada: This is included in version {release_link} :tada: - - The release is available on: - - * [GitHub releases](https://github.com/${owner}/${repository}/releases/tag/{release_tag}) - * [npm package (@latest dist-tag)](https://www.npmjs.com/package/${repository}/v/\${{ env.npm_version }}) - - Cheers! 📦🚀 - `, - }, - }, - ], - }), - "pr-review-requested.yml": createWorkflowFile({ - name: "PR Review Requested", - on: { - pull_request_target: { - types: ["review_requested"], - }, - }, - permissions: { - "pull-requests": "write", - }, - steps: [ - { - uses: "actions-ecosystem/action-remove-labels@v1", - with: { - labels: "status: waiting for author", - }, - }, - { - if: "failure()", - run: 'echo "Don\'t worry if the previous step failed."\necho "See https://github.com/actions-ecosystem/action-remove-labels/issues/221."\n', - }, - ], - }), - "prettier.yml": createWorkflowFile({ - name: "Prettier", - runs: ["pnpm format --list-different"], - }), - "release.yml": createWorkflowFile({ - concurrency: { - "cancel-in-progress": true, - group: "${{ github.workflow }}", - }, - name: "Release", - on: { - push: { - branches: ["main"], - }, - }, - permissions: { - contents: "write", - }, - steps: [ - { - uses: "actions/checkout@v3", - with: { - "fetch-depth": 0, - }, - }, - { - uses: "./.github/actions/prepare", - }, - { - run: "pnpm build", - }, - { - run: 'git config user.name "${GITHUB_ACTOR}"', - }, - { - run: 'git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"', - }, - { - env: { - NPM_TOKEN: "${{ secrets.NPM_TOKEN }}", - }, - run: "npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN", - }, - { - name: "Delete branch protection on main", - uses: "actions/github-script@v6.4.1", - with: { - "github-token": "${{ secrets.ACCESS_TOKEN }}", - script: ` - try { - await github.request( - \`DELETE /repos/${owner}/${repository}/branches/main/protection\`, - ); - } catch (error) { - if (!error.message?.includes?.("Branch not protected")) { - throw error; - } - }`, - }, - }, - { - env: { - GITHUB_TOKEN: "${{ secrets.ACCESS_TOKEN }}", - }, - run: ` - if pnpm run should-semantic-release ; then - pnpm release-it --verbose - gh workflow run post-release.yml - fi`, - }, - { - if: "always()", - name: "Recreate branch protection on main", - uses: "actions/github-script@v6.4.1", - with: { - "github-token": "${{ secrets.ACCESS_TOKEN }}", - script: ` - github.request( - \`PUT /repos/${owner}/${repository}/branches/main/protection\`, - { - allow_deletions: false, - allow_force_pushes: true, - allow_fork_pushes: false, - allow_fork_syncing: true, - block_creations: false, - branch: "main", - enforce_admins: false, - owner: "${owner}", - repo: "${repository}", - required_conversation_resolution: true, - required_linear_history: false, - required_pull_request_reviews: null, - required_status_checks: { - checks: [ - { context: "build" }, - { context: "compliance" }, - { context: "lint" }, - { context: "lint_knip" }, - { context: "lint_markdown" }, - { context: "lint_package" }, - { context: "lint_packages" }, - { context: "lint_spelling" }, - { context: "prettier" }, - { context: "test" }, - ], - strict: false, - }, - restrictions: null, - } - ); - `, - }, - }, - ], - }), - "test.yml": createWorkflowFile({ - name: "Test", - steps: [ - { uses: "actions/checkout@v3" }, - { uses: "./.github/actions/prepare" }, - { run: "pnpm run test --coverage" }, - { - name: "Codecov", - uses: "codecov/codecov-action@v3", - with: { "github-token": "${{ secrets.GITHUB_TOKEN }}" }, - }, - ], - }), - "tsc.yml": createWorkflowFile({ - name: "Type Check", - runs: ["pnpm tsc"], - }), - }; -} diff --git a/src/hydrate/steps/writing/creation/dotHusky.ts b/src/hydrate/steps/writing/creation/dotHusky.ts deleted file mode 100644 index b3484d7e..00000000 --- a/src/hydrate/steps/writing/creation/dotHusky.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { formatIgnoreFile } from "./formatters/formatIgnoreFile.js"; - -export function createDotHusky() { - return { - ".gitignore": formatIgnoreFile(["_"]), - "pre-commit": formatIgnoreFile([ - `#!/bin/sh`, - `. "$(dirname "$0")/_/husky.sh"`, - "npx lint-staged", - ]), - }; -} diff --git a/src/hydrate/steps/writing/creation/dotVSCode.ts b/src/hydrate/steps/writing/creation/dotVSCode.ts deleted file mode 100644 index 5fa5e89d..00000000 --- a/src/hydrate/steps/writing/creation/dotVSCode.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { formatJson } from "./formatters/formatJson.js"; - -/* spellchecker: disable */ -export async function createDotVSCode() { - return { - "extensions.json": await formatJson({ - recommendations: [ - "DavidAnson.vscode-markdownlint", - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "streetsidesoftware.code-spell-checker", - ], - }), - "launch.json": await formatJson({ - configurations: [ - { - args: ["run", "${relativeFile}"], - autoAttachChildProcesses: true, - console: "integratedTerminal", - name: "Debug Current Test File", - program: "${workspaceRoot}/node_modules/vitest/vitest.mjs", - request: "launch", - skipFiles: ["/**", "**/node_modules/**"], - smartStep: true, - type: "node", - }, - ], - version: "0.2.0", - }), - "settings.json": await formatJson({ - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true, - }, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "editor.rulers": [80], - "eslint.probe": [ - "javascript", - "javascriptreact", - "json", - "jsonc", - "markdown", - "typescript", - "typescriptreact", - "yaml", - ], - "eslint.rules.customizations": [{ rule: "*", severity: "warn" }], - "typescript.tsdk": "node_modules/typescript/lib", - }), - }; -} diff --git a/src/hydrate/steps/writing/creation/formatters/formatIgnoreFile.ts b/src/hydrate/steps/writing/creation/formatters/formatIgnoreFile.ts deleted file mode 100644 index f4a18355..00000000 --- a/src/hydrate/steps/writing/creation/formatters/formatIgnoreFile.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function formatIgnoreFile(lines: string[]) { - return [...lines, ""].join("\n"); -} diff --git a/src/hydrate/steps/writing/creation/formatters/formatJson.ts b/src/hydrate/steps/writing/creation/formatters/formatJson.ts deleted file mode 100644 index f99b6a97..00000000 --- a/src/hydrate/steps/writing/creation/formatters/formatJson.ts +++ /dev/null @@ -1,5 +0,0 @@ -import prettier from "prettier"; - -export function formatJson(value: unknown) { - return prettier.format(JSON.stringify(value), { parser: "json" }); -} diff --git a/src/hydrate/steps/writing/creation/formatters/formatYaml.ts b/src/hydrate/steps/writing/creation/formatters/formatYaml.ts deleted file mode 100644 index cbfd753c..00000000 --- a/src/hydrate/steps/writing/creation/formatters/formatYaml.ts +++ /dev/null @@ -1,26 +0,0 @@ -import jsYaml from "js-yaml"; - -const options: jsYaml.DumpOptions = { - lineWidth: -1, - noCompatMode: true, - // https://github.com/nodeca/js-yaml/pull/515 - replacer(_, value: unknown) { - if (typeof value !== "string" || !value.includes("\n\t\t")) { - return value; - } - - return value - .replaceAll(": |-\n", ": |\n") - .replaceAll("\n\t \t\t\t", "") - - .replaceAll(/\n\t\t\t\t\t\t$/g, ""); - }, - sortKeys: true, - styles: { - "!!null": "canonical", - }, -}; - -export function formatYaml(value: unknown) { - return jsYaml.dump(value, options).replaceAll(`\\"`, `"`); -} diff --git a/src/hydrate/steps/writing/creation/index.ts b/src/hydrate/steps/writing/creation/index.ts deleted file mode 100644 index 1686effa..00000000 --- a/src/hydrate/steps/writing/creation/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { HydrationInputValues } from "../../../values/types.js"; -import { Structure } from "../types.js"; -import { createDotGitHub } from "./dotGitHub/index.js"; -import { createDotHusky } from "./dotHusky.js"; -import { createDotVSCode } from "./dotVSCode.js"; -import { createRootFiles } from "./rootFiles.js"; - -export async function createStructure( - values: HydrationInputValues, -): Promise { - return { - ".github": createDotGitHub(values), - ".husky": createDotHusky(), - ".vscode": await createDotVSCode(), - ...(await createRootFiles(values)), - }; -} diff --git a/src/hydrate/steps/writing/creation/rootFiles.ts b/src/hydrate/steps/writing/creation/rootFiles.ts deleted file mode 100644 index 93deedb7..00000000 --- a/src/hydrate/steps/writing/creation/rootFiles.ts +++ /dev/null @@ -1,316 +0,0 @@ -import { HydrationInputValues } from "../../../values/types.js"; -import { formatIgnoreFile } from "./formatters/formatIgnoreFile.js"; -import { formatJson } from "./formatters/formatJson.js"; -import { writeAllContributorsRC } from "./writeAllContributorsRC.js"; -import { writePackageJson } from "./writePackageJson.js"; - -export async function createRootFiles(values: HydrationInputValues) { - return { - ".all-contributorsrc": await writeAllContributorsRC(values), - ".eslintignore": formatIgnoreFile([ - "!.*", - ...(values.unitTests ? ["coverage"] : []), - "lib", - "node_modules", - "pnpm-lock.yaml", - ]), - ".eslintrc.cjs": `/* -👋 Hi! This ESLint configuration contains a lot more stuff than many repos'! -You can read from it to see all sorts of linting goodness, but don't worry - -it's not something you need to exhaustively understand immediately. 💙 - -If you're interested in learning more, see the 'getting started' docs on: -- ESLint: https://eslint.org -- typescript-eslint: https://typescript-eslint.io -*/ - -/** @type {import("@types/eslint").Linter.Config} */ -module.exports = { - env: { - es2022: true, - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:eslint-comments/recommended", - "plugin:n/recommended", - "plugin:perfectionist/recommended-natural", - "plugin:regexp/recommended", - "prettier", - ], - /* eslint-disable perfectionist/sort-objects -- https://github.com/azat-io/eslint-plugin-perfectionist/issues/22 */ - overrides: [ - { - extends: ["plugin:markdown/recommended"], - files: ["**/*.md"], - processor: "markdown/markdown", - }, - { - extends: [ - "plugin:jsdoc/recommended-typescript-error", - "plugin:@typescript-eslint/recommended", - ], - files: ["**/*.ts"], - parser: "@typescript-eslint/parser", - rules: { - // These off-by-default rules work well for this repo and we like them on. - "jsdoc/informative-docs": "error", - - // These on-by-default rules don't work well for this repo and we like them off. - "jsdoc/require-jsdoc": "off", - "jsdoc/require-param": "off", - "jsdoc/require-property": "off", - "jsdoc/require-returns": "off", - }, - }, - { - excludedFiles: ["**/*.md/*.ts"], - extends: [ - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:@typescript-eslint/strict", - ], - files: ["**/*.ts"], - parser: "@typescript-eslint/parser", - parserOptions: { - project: "./tsconfig.eslint.json", - }, - rules: { - // These off-by-default rules work well for this repo and we like them on. - "deprecation/deprecation": "error", - }, - }, - { - excludedFiles: ["package.json"], - extends: ["plugin:jsonc/recommended-with-json"], - files: ["*.json", "*.jsonc"], - parser: "jsonc-eslint-parser", - rules: { - "jsonc/sort-keys": "error", - }, - },${ - values.unitTests - ? `\n{ - files: "**/*.test.ts", - rules: { - // These on-by-default rules aren't useful in test files. - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-call": "off", - }, - },` - : "" - } - { - extends: ["plugin:yml/standard", "plugin:yml/prettier"], - files: ["**/*.{yml,yaml}"], - parser: "yaml-eslint-parser", - rules: { - "yml/file-extension": ["error", { extension: "yml" }], - "yml/sort-keys": [ - "error", - { - order: { type: "asc" }, - pathPattern: "^.*$", - }, - ], - "yml/sort-sequence-values": [ - "error", - { - order: { type: "asc" }, - pathPattern: "^.*$", - }, - ], - }, - }, - ], - parser: "@typescript-eslint/parser", - plugins: [ - "@typescript-eslint", - "deprecation", - "import", - "jsdoc",${values.unitTests ? `\n"no-only-tests",` : ""} - "perfectionist", - "regexp",${values.unitTests ? `\n"vitest",` : ""} - ], - root: true, - rules: { - // These off/less-strict-by-default rules work well for this repo and we like them on. - "@typescript-eslint/no-unused-vars": ["error", { caughtErrors: "all" }], - "import/extensions": ["error", "ignorePackages"], - "n/no-missing-import": "off",${ - values.unitTests ? `\n"no-only-tests/no-only-tests": "error",` : "" - } - - // These on-by-default rules don't work well for this repo and we like them off. - "no-case-declarations": "off", - "no-constant-condition": "off", - "no-inner-declarations": "off", - - // Stylistic concerns that don't interfere with Prettier - curly: ["error", "all"], - "padding-line-between-statements": "off", - "@typescript-eslint/padding-line-between-statements": [ - "error", - { blankLine: "always", next: "*", prev: "block-like" }, - ], - }, - /* eslint-enable perfectionist/sort-objects */ -}; -`, - ".gitignore": formatIgnoreFile([ - ...(values.unitTests ? ["coverage/"] : []), - "lib/", - "node_modules/", - ]), - ".markdownlint.json": await formatJson({ - extends: "markdownlint/style/prettier", - "first-line-h1": false, - "no-inline-html": false, - }), - ".markdownlintignore": formatIgnoreFile([ - ".github/CODE_OF_CONDUCT.md", - "CHANGELOG.md", - "lib/", - "node_modules/", - ]), - ".npmpackagejsonlintrc.json": await formatJson({ - extends: "npm-package-json-lint-config-default", - rules: { - "require-description": "error", - "require-license": "error", - }, - }), - ".nvmrc": `18.17.1\n`, - ".prettierignore": formatIgnoreFile([ - ...(values.unitTests ? ["coverage/"] : []), - "lib/", - "pnpm-lock.yaml", - "", - "# See https://github.com/all-contributors/cli/issues/347", - ".all-contributorsrc", - ]), - ".prettierrc": await formatJson({ - $schema: "http://json.schemastore.org/prettierrc", - overrides: [ - { - files: ".*rc", - options: { parser: "json" }, - }, - { - files: ".nvmrc", - options: { parser: "yaml" }, - }, - ], - plugins: ["prettier-plugin-curly", "prettier-plugin-packagejson"], - useTabs: true, - }), - ".release-it.json": await formatJson({ - git: { - commitMessage: "chore: release v${version}", - requireCommits: true, - }, - github: { - autoGenerate: true, - release: true, - releaseName: "v${version}", - }, - }), - "LICENSE.md": `# MIT License - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -`, - "cspell.json": await formatJson({ - dictionaries: ["typescript"], - ignorePaths: [ - ".github", - "CHANGELOG.md", - ...(values.unitTests ? ["coverage"] : []), - "lib", - "node_modules", - "pnpm-lock.yaml", - "script/*.json", - ], - words: [ - "Codecov", - "codespace", - "commitlint", - "contributorsrc", - "conventionalcommits", - "execa", - "knip", - "lcov", - "markdownlintignore", - "npmpackagejsonlintrc", - "outro", - "packagejson", - "quickstart", - "wontfix", - ], - }), - "knip.jsonc": await formatJson({ - $schema: "https://unpkg.com/knip@latest/schema.json", - entry: ["src/index.ts!"], - ignoreExportsUsedInFile: { - interface: true, - type: true, - }, - project: ["src/**/*.ts!"], - }), - "package.json": await writePackageJson(values), - "tsconfig.eslint.json": await formatJson({ - extends: "./tsconfig.json", - include: ["."], - }), - "tsconfig.json": await formatJson({ - compilerOptions: { - declaration: true, - declarationMap: true, - esModuleInterop: true, - module: "ESNext", - moduleResolution: "NodeNext", - outDir: "lib", - resolveJsonModule: true, - skipLibCheck: true, - sourceMap: true, - strict: true, - target: "ES2022", - }, - include: ["src"], - }), - ...(values.unitTests && { - "vitest.config.ts": `import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - clearMocks: true, - coverage: { - all: true, - exclude: ["lib"], - include: ["src"], - provider: "istanbul", - reporter: ["html", "lcov"], - }, - exclude: ["lib", "node_modules"], - setupFiles: ["console-fail-test/setup"], - }, -}); -`, - }), - }; -} diff --git a/src/hydrate/steps/writing/creation/writeAllContributorsRC.ts b/src/hydrate/steps/writing/creation/writeAllContributorsRC.ts deleted file mode 100644 index 9ff1a2c7..00000000 --- a/src/hydrate/steps/writing/creation/writeAllContributorsRC.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { readFileSafeAsJson } from "../../../../shared/readFileSafeAsJson.js"; -import { AllContributorsData } from "../../../../shared/types.js"; -import { HydrationInputValues } from "../../../values/types.js"; -import { formatJson } from "./formatters/formatJson.js"; - -export async function writeAllContributorsRC(values: HydrationInputValues) { - const existing = (await readFileSafeAsJson( - ".all-contributorsrc", - )) as AllContributorsData | null; - - return await formatJson({ - badgeTemplate: - 'All Contributors: <%= contributors.length %>', - commit: false, - commitConvention: "angular", - contributors: existing?.contributors ?? [], - contributorsPerLine: 7, - contributorsSortAlphabetically: true, - files: ["README.md"], - imageSize: 100, - projectName: values.repository, - projectOwner: values.owner, - repoHost: "https://github.com", - repoType: "github", - }); -} diff --git a/src/hydrate/steps/writing/creation/writePackageJson.test.ts b/src/hydrate/steps/writing/creation/writePackageJson.test.ts deleted file mode 100644 index 01ea0607..00000000 --- a/src/hydrate/steps/writing/creation/writePackageJson.test.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { writePackageJson } from "./writePackageJson.js"; - -const mockReadFileAsJson = vi.fn(); - -vi.mock("../../../../shared/readFileAsJson.js", () => ({ - get readFileAsJson() { - return mockReadFileAsJson; - }, -})); - -const values = { - author: "test-author", - description: "test-description", - email: "test-email", - owner: "test-owner", - releases: false, - repository: "test-repository", - unitTests: false, -}; - -describe("writePackageJson", () => { - it("preserves existing dependencies when they exist", async () => { - const dependencies = { abc: "1.2.3" }; - mockReadFileAsJson.mockResolvedValue({ dependencies }); - - const packageJson = await writePackageJson(values); - - expect(JSON.parse(packageJson)).toEqual( - expect.objectContaining({ dependencies }), - ); - }); - - it("preserves existing devDependencies that aren't known to be unnecessary when they exist", async () => { - const devDependencies = { abc: "1.2.3", jest: "4.5.6" }; - mockReadFileAsJson.mockResolvedValue({ devDependencies }); - - const packageJson = await writePackageJson(values); - - expect(JSON.parse(packageJson)).toEqual( - expect.objectContaining({ devDependencies }), - ); - }); - - it("includes a release script when releases is true", async () => { - mockReadFileAsJson.mockResolvedValue({}); - - const packageJson = await writePackageJson({ - ...values, - releases: true, - }); - - expect(JSON.parse(packageJson)).toEqual( - expect.objectContaining({ - scripts: expect.objectContaining({ - "should-semantic-release": "should-semantic-release --verbose", - }), - }), - ); - }); - - it("includes a test script when unitTests is true", async () => { - mockReadFileAsJson.mockResolvedValue({}); - - const packageJson = await writePackageJson({ - ...values, - unitTests: true, - }); - - expect(JSON.parse(packageJson)).toEqual( - expect.objectContaining({ - scripts: expect.objectContaining({ - test: "vitest", - }), - }), - ); - }); -}); diff --git a/src/hydrate/steps/writing/creation/writePackageJson.ts b/src/hydrate/steps/writing/creation/writePackageJson.ts deleted file mode 100644 index 00169acd..00000000 --- a/src/hydrate/steps/writing/creation/writePackageJson.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { readFileAsJson } from "../../../../shared/readFileAsJson.js"; -import { HydrationInputValues } from "../../../values/types.js"; -import { formatJson } from "./formatters/formatJson.js"; - -const devDependenciesToRemove = [ - "@babel/core", - "@babel/preset-env", - "@babel/preset-react", - "@babel/preset-typescript", - "@swc/jest", - "ava", - "babel-jest", - "commitlint", - "cson-parser", - "esbuild", - "eslint-config-prettier", - "eslint-plugin-prettier", - "eslint-plugin-simple-import-sort", - "jasmine", - "jest", - "mocha", - "npm-run-all", - "pretty-quick", -]; - -export async function writePackageJson({ - author, - description, - email, - owner, - releases, - repository, - unitTests, -}: Pick< - HydrationInputValues, - | "author" - | "description" - | "email" - | "owner" - | "releases" - | "repository" - | "unitTests" ->) { - const existingPackageJson = (await readFileAsJson( - "./package.json", - )) as object; - - return await formatJson({ - // To start, copy over all existing package fields (e.g. "dependencies") - ...existingPackageJson, - - author: { email, name: author }, - description, - - // We copy all existing dev dependencies except those we know are not used anymore - devDependencies: copyDevDependencies(existingPackageJson), - - engines: { - node: ">=18", - }, - - // Remove fields we know we don't want, such as old or redundant configs - eslintConfig: undefined, - - files: ["lib/", "package.json", "LICENSE.md", "README.md"], - husky: undefined, - license: "MIT", - "lint-staged": { - "*": "prettier --ignore-unknown --write", - }, - main: "./lib/index.js", - // The rest of the fields are ones we know from our template - name: repository, - packageManager: "pnpm@8.5.0", - prettierConfig: undefined, - publishConfig: { - provenance: true, - }, - repository: { - type: "git", - url: `https://github.com/${owner}/${repository}`, - }, - scripts: { - build: "tsc", - format: 'prettier "**/*" --ignore-unknown', - "format:write": "pnpm format --write", - lint: "eslint . .*js --max-warnings 0 --report-unused-disable-directives", - "lint:knip": "knip", - "lint:md": - 'markdownlint "**/*.md" ".github/**/*.md" --rules sentences-per-line', - "lint:package": "npmPkgJsonLint .", - "lint:packages": "pnpm dedupe --check", - "lint:spelling": 'cspell "**" ".github/**/*"', - prepare: "husky install", - ...(releases && { - "should-semantic-release": "should-semantic-release --verbose", - }), - ...(unitTests && { test: "vitest" }), - }, - type: "module", - types: undefined, - }); -} - -function copyDevDependencies(existingPackageJson: object) { - const devDependencies = - "devDependencies" in existingPackageJson - ? (existingPackageJson.devDependencies as Record) - : {}; - - for (const devDependencyToRemove of devDependenciesToRemove) { - // eslint-disable-next-line @typescript-eslint/no-dynamic-delete - delete devDependencies[devDependencyToRemove]; - } - - return devDependencies; -} diff --git a/src/hydrate/steps/writing/types.ts b/src/hydrate/steps/writing/types.ts deleted file mode 100644 index 6b5449c3..00000000 --- a/src/hydrate/steps/writing/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Structure { - [i: string]: Structure | string; -} diff --git a/src/hydrate/steps/writing/writeStructure.ts b/src/hydrate/steps/writing/writeStructure.ts deleted file mode 100644 index fe2dd4f1..00000000 --- a/src/hydrate/steps/writing/writeStructure.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { HydrationInputValues } from "../../values/types.js"; -import { createStructure } from "./creation/index.js"; -import { writeStructureWorker } from "./writeStructureWorker.js"; - -export async function writeStructure(values: HydrationInputValues) { - await writeStructureWorker(await createStructure(values), "."); -} diff --git a/src/hydrate/steps/writing/writeStructureWorker.test.ts b/src/hydrate/steps/writing/writeStructureWorker.test.ts deleted file mode 100644 index 92c03b1c..00000000 --- a/src/hydrate/steps/writing/writeStructureWorker.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { writeStructureWorker } from "./writeStructureWorker.js"; - -const mockMkdir = vi.fn(); -const mockWriteFile = vi.fn(); - -vi.mock("node:fs/promises", () => ({ - get mkdir() { - return mockMkdir; - }, - get writeFile() { - return mockWriteFile; - }, -})); - -describe("writeStructureWorker", () => { - it("writes an unformatted file when structure has a file", async () => { - await writeStructureWorker( - { - file: "content", - }, - ".", - ); - - expect(mockMkdir).toHaveBeenCalledWith(".", { recursive: true }); - expect(mockWriteFile).toHaveBeenCalledWith("file", "content"); - }); - - it.each([ - ["implicit json", ".rc", '{ "value": true }', '{ "value": true }\n'], - ["cjs", "file.cjs", " module.exports = { };", "module.exports = {};\n"], - ["js", "file.js", " export default { }", "export default {};\n"], - ["explicit json", "file.json", "{ }", "{}\n"], - ["md", "file.md", " # h1 ", "# h1\n"], - ["yml", "file.yml", " on: true ", "on: true\n"], - ])("writes a formatted %s file", async (_, file, input, output) => { - await writeStructureWorker({ [file]: input }, "."); - expect(mockWriteFile).toHaveBeenCalledWith(file, output); - }); - - it("writes a nested file when structure has a file inside a directory", async () => { - await writeStructureWorker( - { - directory: { - file: "content", - }, - }, - ".", - ); - - expect(mockMkdir).toHaveBeenCalledWith(".", { recursive: true }); - expect(mockMkdir).toHaveBeenCalledWith("directory", { recursive: true }); - }); -}); diff --git a/src/hydrate/steps/writing/writeStructureWorker.ts b/src/hydrate/steps/writing/writeStructureWorker.ts deleted file mode 100644 index 9a02547d..00000000 --- a/src/hydrate/steps/writing/writeStructureWorker.ts +++ /dev/null @@ -1,55 +0,0 @@ -import * as fs from "node:fs/promises"; -import * as path from "path"; -import prettier from "prettier"; - -import { Structure } from "./types.js"; - -export async function writeStructureWorker( - structure: Structure, - basePath: string, -) { - await fs.mkdir(basePath, { recursive: true }); - - for (const [fileName, contents] of Object.entries(structure)) { - if (typeof contents === "string") { - await fs.writeFile( - path.join(basePath, fileName), - await format(fileName, contents), - ); - } else { - await writeStructureWorker(contents, path.join(basePath, fileName)); - } - } -} - -async function format(fileName: string, text: string) { - const parser = inferParser(fileName, text); - if (!parser) { - return text; - } - - return await prettier.format(text, { - parser, - useTabs: true, - }); -} - -function inferParser(fileName: string, text: string) { - if (text.startsWith("{")) { - return "json"; - } - - switch (fileName.split(".").at(-1)) { - case "cjs": - case "js": - return "babel"; - case "json": - return "json"; - case "md": - return "markdown"; - case "yml": - return "yaml"; - } - - return undefined; -} diff --git a/src/hydrate/values/getHydrationDefaults.test.ts b/src/hydrate/values/getHydrationDefaults.test.ts deleted file mode 100644 index 01043b5a..00000000 --- a/src/hydrate/values/getHydrationDefaults.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { getHydrationDefaults } from "./getHydrationDefaults.js"; - -const mockReadFileSafe = vi.fn(); - -vi.mock("../../shared/readFileSafe.js", () => ({ - get readFileSafe() { - return mockReadFileSafe; - }, -})); - -const mockReadFundingIfExists = vi.fn(); - -vi.mock("./readFundingIfExists.js", () => ({ - get readFundingIfExists() { - return mockReadFundingIfExists; - }, -})); - -const mockReadOwnerFromGitRemote = vi.fn(); - -vi.mock("./readOwnerFromGitRemote.js", () => ({ - get readOwnerFromGitRemote() { - return mockReadOwnerFromGitRemote; - }, -})); - -const mockReadTitleFromReadme = vi.fn(); - -vi.mock("./readTitleFromReadme.js", () => ({ - get readTitleFromReadme() { - return mockReadTitleFromReadme; - }, -})); - -describe("getHydrationDefaults", () => { - it("reads hydration defaults from existing readme and package json when exists", async () => { - mockReadTitleFromReadme.mockResolvedValue("My Awesome Package"); - mockReadFileSafe.mockResolvedValueOnce( - '{"author":"Someone "}', - ); - mockReadFundingIfExists.mockResolvedValue("Someone"); - mockReadOwnerFromGitRemote.mockResolvedValue("SUM1"); - - const result = await getHydrationDefaults(); - expect(await result.author()).toBe("Someone"); - expect(await result.email()).toBe("someone@test.com"); - expect(await result.funding()).toBe("Someone"); - expect(await result.owner()).toBe("SUM1"); - expect(result.releases).toBe(true); - expect(await result.title()).toBe("My Awesome Package"); - expect(result.unitTests).toBe(true); - }); -}); diff --git a/src/hydrate/values/getHydrationDefaults.ts b/src/hydrate/values/getHydrationDefaults.ts deleted file mode 100644 index 20952715..00000000 --- a/src/hydrate/values/getHydrationDefaults.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { PartialPackageData } from "./types.js"; - -import { readFileSafe } from "../../shared/readFileSafe.js"; -import { readAuthorIfExists } from "./readAuthorIfExists.js"; -import { readEmailIfExists } from "./readEmailIfExists.js"; -import { readFundingIfExists } from "./readFundingIfExists.js"; -import { readOwnerFromGitRemote } from "./readOwnerFromGitRemote.js"; -import { readTitleFromReadme } from "./readTitleFromReadme.js"; - -export async function getHydrationDefaults() { - const existingPackage = JSON.parse( - await readFileSafe("./package.json", "{}"), - ) as PartialPackageData; - - return { - author: () => readAuthorIfExists(existingPackage), - email: () => readEmailIfExists(existingPackage), - funding: readFundingIfExists, - owner: readOwnerFromGitRemote, - releases: true, - title: readTitleFromReadme, - unitTests: true, - }; -} diff --git a/src/hydrate/values/hydrationInputValues.ts b/src/hydrate/values/hydrationInputValues.ts deleted file mode 100644 index f3a30e8e..00000000 --- a/src/hydrate/values/hydrationInputValues.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { PrefillPrompter } from "../../shared/PrefillPrompter.js"; -import { InputValues } from "../../shared/inputs.js"; -import { HydrationInputValues } from "./types.js"; - -export async function augmentWithHydrationValues( - values: InputValues, -): Promise { - const prompter = new PrefillPrompter(); - - return { - ...values, - author: await prompter.getPrefillOrPromptedValue( - "author", - values.author, - "What author will be used for the owner?", - ), - email: await prompter.getPrefillOrPromptedValue( - "email", - values.email, - "What email will be used for the owner?", - ), - }; -} diff --git a/src/hydrate/values/readAuthorIfExists.test.ts b/src/hydrate/values/readAuthorIfExists.test.ts deleted file mode 100644 index 8b0c9f77..00000000 --- a/src/hydrate/values/readAuthorIfExists.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readAuthorIfExists } from "./readAuthorIfExists.js"; - -const mockGetNpmAuthor = vi.fn(); - -vi.mock("../../shared/getNpmAuthor.js", () => ({ - get getNpmAuthor() { - return mockGetNpmAuthor; - }, -})); - -const npmAuthorMockResult = "Someone from NPM "; - -describe("readAuthorIfExists", () => { - it('reads author as a string from the existing package "author" field when it exists', async () => { - mockGetNpmAuthor.mockResolvedValue(npmAuthorMockResult); - const author = await readAuthorIfExists({ - author: "John Doe ", - }); - expect(author).not.toBe(npmAuthorMockResult); - expect(author).not.toContain(" "); - expect(author).toBe("John Doe"); - }); - - it('reads author as an object from the existing package "author" field when it exists', async () => { - mockGetNpmAuthor.mockResolvedValue(npmAuthorMockResult); - const author = await readAuthorIfExists({ - author: { email: "someone@example.com", name: "John Doe" }, - }); - expect(author).not.toBe(npmAuthorMockResult); - expect(author).toBe("John Doe"); - }); - - it("reads author from getNpmAuthor when author is missing from package", async () => { - mockGetNpmAuthor.mockResolvedValue(npmAuthorMockResult); - const author = await readAuthorIfExists({}); - expect(author).toBe(npmAuthorMockResult); - }); -}); diff --git a/src/hydrate/values/readAuthorIfExists.ts b/src/hydrate/values/readAuthorIfExists.ts deleted file mode 100644 index d4cd53b7..00000000 --- a/src/hydrate/values/readAuthorIfExists.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { PartialPackageData } from "./types.js"; - -import { getNpmAuthor } from "../../shared/getNpmAuthor.js"; - -export async function readAuthorIfExists( - existingPackage: PartialPackageData, -): Promise { - const fromPackage = - typeof existingPackage.author === "string" - ? existingPackage.author.split("<")[0].trim() - : existingPackage.author?.name; - - return fromPackage ?? (await getNpmAuthor()); -} diff --git a/src/hydrate/values/readEmailIfExists.test.ts b/src/hydrate/values/readEmailIfExists.test.ts deleted file mode 100644 index 05ebbd3a..00000000 --- a/src/hydrate/values/readEmailIfExists.test.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readEmailIfExists } from "./readEmailIfExists.js"; - -const validAuthorPackage = { - author: "Author", - email: "author@package.com", -}; - -const validEmailPackage = { - author: { email: "info@package.com", name: "Author" }, -}; - -const mock$ = vi.fn(); - -vi.mock("execa", () => ({ - get $() { - return mock$; - }, -})); - -const mockGetNpmUserInfo = vi.fn(); - -vi.mock("../../shared/getNpmUserInfo.js", () => ({ - get getNpmUserInfo() { - return mockGetNpmUserInfo; - }, -})); - -describe("readEmailIfExists", () => { - it('reads email from the package "author" field when it exists', async () => { - const email = await readEmailIfExists(validAuthorPackage); - - expect(email).toBe("author@package.com"); - }); - - it("reads email from the email field in an author object when it exists", async () => { - const email = await readEmailIfExists(validEmailPackage); - - expect(email).toBe("info@package.com"); - }); - - it("reads email from getNpmUserInfo when available and no author information exists", async () => { - mockGetNpmUserInfo.mockResolvedValue({ - succeeded: true, - value: { - avatar: "", - email: "info@npm.worked", - github: "", - name: "someone", - twitter: "", - }, - }); - - const email = await readEmailIfExists({}); - expect(email).toBe("info@npm.worked"); - }); - - it("reads email from git config when it exists and nothing else worked", async () => { - mockGetNpmUserInfo.mockResolvedValue({ - reason: "it doesn't matter", - succeeded: false, - }); - mock$.mockResolvedValue({ stdout: "info@git.worked" }); - const email = await readEmailIfExists({}); - - expect(email).toBe("info@git.worked"); - }); - - it("return undefined when nothing worked", async () => { - mockGetNpmUserInfo.mockResolvedValue({ - reason: "it doesn't matter", - succeeded: false, - }); - mock$.mockRejectedValue(""); - const email = await readEmailIfExists({}); - expect(email).toBe(undefined); - }); -}); diff --git a/src/hydrate/values/readEmailIfExists.ts b/src/hydrate/values/readEmailIfExists.ts deleted file mode 100644 index e0894af9..00000000 --- a/src/hydrate/values/readEmailIfExists.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { $ } from "execa"; - -import type { PartialPackageData } from "./types.js"; - -import { getNpmUserInfo } from "../../shared/getNpmUserInfo.js"; - -export async function readEmailIfExists( - existingPackage: PartialPackageData, -): Promise { - const fromPackage = - typeof existingPackage.author === "string" - ? existingPackage.author.split(/<|>/)[1] - : existingPackage.author?.email; - if (fromPackage) { - return fromPackage; - } - - const result = await getNpmUserInfo(); - if (result.succeeded) { - return result.value.email; - } - - try { - const { stdout } = await $`git config --get user.email`; - return stdout; - } catch { - return undefined; - } -} diff --git a/src/hydrate/values/readFundingIfExists.test.ts b/src/hydrate/values/readFundingIfExists.test.ts deleted file mode 100644 index bf697c90..00000000 --- a/src/hydrate/values/readFundingIfExists.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readFundingIfExists } from "./readFundingIfExists.js"; - -const mockReadFile = vi.fn(); - -vi.mock("node:fs/promises", () => ({ - get default() { - return { - get readFile() { - return mockReadFile; - }, - }; - }, -})); - -describe("readFundingIfExists", () => { - it("reads funding from .github/FUNDING.yml when it exists", async () => { - mockReadFile.mockResolvedValue("github: Contributor"); - const result = await readFundingIfExists(); - expect(result).toBe("Contributor"); - }); - - it("returns undefined when funding does not exists", async () => { - mockReadFile.mockRejectedValue("Oops"); - const result = await readFundingIfExists(); - expect(result).toBe(undefined); - }); -}); diff --git a/src/hydrate/values/readFundingIfExists.ts b/src/hydrate/values/readFundingIfExists.ts deleted file mode 100644 index 17803dfc..00000000 --- a/src/hydrate/values/readFundingIfExists.ts +++ /dev/null @@ -1,12 +0,0 @@ -import fs from "node:fs/promises"; - -export async function readFundingIfExists() { - try { - return (await fs.readFile(".github/FUNDING.yml")) - .toString() - .split(":")[1] - ?.trim(); - } catch { - return undefined; - } -} diff --git a/src/hydrate/values/readOwnerFromGitRemote.test.ts b/src/hydrate/values/readOwnerFromGitRemote.test.ts deleted file mode 100644 index 0304f918..00000000 --- a/src/hydrate/values/readOwnerFromGitRemote.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readOwnerFromGitRemote } from "./readOwnerFromGitRemote.js"; - -const mock$ = vi.fn(); - -vi.mock("execa", () => ({ - get $() { - return mock$; - }, -})); - -describe("readOwnerFromGitRemote", () => { - it("reads owner from the git remote when it exists", async () => { - mock$.mockResolvedValue({ - stdout: - "origin https://github.com/Contributor/template-typescript-node-package.git (fetch)", - }); - const result = await readOwnerFromGitRemote(); - - expect(result).toBe("Contributor"); - }); - - it("reads undefined when no remote available", async () => { - mock$.mockResolvedValue({ stdout: "" }); - const result = await readOwnerFromGitRemote(); - expect(result).toBe(undefined); - }); -}); diff --git a/src/hydrate/values/readOwnerFromGitRemote.ts b/src/hydrate/values/readOwnerFromGitRemote.ts deleted file mode 100644 index b76a12d7..00000000 --- a/src/hydrate/values/readOwnerFromGitRemote.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { $ } from "execa"; - -export async function readOwnerFromGitRemote(): Promise { - const { stdout } = await $`git remote -v`; - return stdout.match(/origin\s+https:\/\/\S+\.\w+\/([^/]+)/)?.[1]; -} diff --git a/src/hydrate/values/readTitleFromReadme.test.ts b/src/hydrate/values/readTitleFromReadme.test.ts deleted file mode 100644 index 6b2223d4..00000000 --- a/src/hydrate/values/readTitleFromReadme.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readTitleFromReadme } from "./readTitleFromReadme.js"; - -const mockReadFileSafe = vi.fn(); - -vi.mock("../../shared/readFileSafe.js", () => ({ - get readFileSafe() { - return mockReadFileSafe; - }, -})); - -describe("readTitleFromReadme", () => { - it('reads title as markdown from "README.md" when it exists', async () => { - mockReadFileSafe.mockResolvedValue("# My Awesome Package"); - const result = await readTitleFromReadme(); - expect(result).toBe("My Awesome Package"); - }); - - it('reads title as HTML from "README.md" when it exists', async () => { - mockReadFileSafe.mockResolvedValue( - '

My Awesome Package

', - ); - const result = await readTitleFromReadme(); - expect(result).toBe("My Awesome Package"); - }); - - it("returns undefined when title does not exist", async () => { - mockReadFileSafe.mockResolvedValue(""); - const result = await readTitleFromReadme(); - expect(result).toBe(""); - }); -}); diff --git a/src/hydrate/values/readTitleFromReadme.ts b/src/hydrate/values/readTitleFromReadme.ts deleted file mode 100644 index 21080176..00000000 --- a/src/hydrate/values/readTitleFromReadme.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { readFileSafe } from "../../shared/readFileSafe.js"; - -export async function readTitleFromReadme() { - return ( - (await readFileSafe("./README.md", "")) - .match(/^(?:# |)(.*?)(?:<\/h1>)?$/i)?.[1] - ?.trim() - .replace(/<[^>]+(?:>|$)/g, "") ?? "" - ); -} diff --git a/src/hydrate/values/types.ts b/src/hydrate/values/types.ts deleted file mode 100644 index 6a9b7131..00000000 --- a/src/hydrate/values/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { InputValues } from "../../shared/inputs.js"; - -export interface HydrationInputValues extends InputValues { - author: string; - email: string; -} - -export interface PartialPackageData { - author?: { email: string; name: string } | string; - description?: string; - email?: string; - name?: string; - repository?: string; -} diff --git a/src/index.ts b/src/index.ts index a39b40fa..61ca6aca 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,3 @@ -export * from "./greet.js"; -export * from "./types.js"; +import { sentencesPerLine } from "./sentences-per-line.js"; + +export = sentencesPerLine; diff --git a/src/sentences-per-line.test.ts b/src/sentences-per-line.test.ts new file mode 100644 index 00000000..103017a6 --- /dev/null +++ b/src/sentences-per-line.test.ts @@ -0,0 +1,40 @@ +import markdownlint from "markdownlint"; +import { describe, expect, test } from "vitest"; + +import { sentencesPerLine } from "./sentences-per-line.js"; + +describe("sentences-per-line", () => { + test.each([ + ["", undefined], + ["abc", undefined], + ["abc.", undefined], + ["Abc. Def.", "Abc. Def."], + ["Abc def. Ghi jkl.", "Abc def. Ghi j"], + ])("%s", (input, errorContext) => { + const actual = markdownlint.sync({ + config: { + default: false, + "sentences-per-line": true, + }, + customRules: [sentencesPerLine], + strings: { input }, + }); + + expect(actual).toEqual({ + input: errorContext + ? [ + { + errorContext, + errorDetail: null, + errorRange: null, + fixInfo: null, + lineNumber: 1, + ruleDescription: "Each sentence should be on its own line", + ruleInformation: null, + ruleNames: ["sentences-per-line"], + }, + ] + : [], + }); + }); +}); diff --git a/src/sentences-per-line.ts b/src/sentences-per-line.ts new file mode 100644 index 00000000..751fbe24 --- /dev/null +++ b/src/sentences-per-line.ts @@ -0,0 +1,129 @@ +import type * as markdownlint from "markdownlint"; + +import helpers from "markdownlint-rule-helpers"; + +const isCapitalizedAlphabetCharacter = (char: string) => { + const charCode = char.charCodeAt(0); + + return charCode >= "A".charCodeAt(0) && charCode <= "Z".charCodeAt(0); +}; + +const getNextIndexNotInCode = (line: string, i: number) => { + if (line[i] !== "`") { + return i; + } + + i += 1; + + // Get to the inside of this inline code segment + while (line[i] === "`") { + i += 1; + + if (i === line.length) { + return undefined; + } + } + + // Get to the end of the inline code segment + while (true) { + i = line.indexOf("`", i); + + if (i === -1) { + return undefined; + } + + if (line[i - 1] !== "\\") { + break; + } + } + + while (line[i] === "`") { + i += 1; + + if (i === line.length) { + return undefined; + } + } + + return i; +}; + +const ignoredWords = ["ie", "i.e", "eg", "e.g", "etc", "ex"]; + +const isAfterIgnoredWord = (line: string, i: number) => { + for (const ignoredWord of ignoredWords) { + if ( + ignoredWord === line.substring(i - ignoredWord.length, i).toLowerCase() + ) { + return true; + } + } + + return false; +}; + +const visitLine = ( + line: string, + lineNumber: number, + onError: markdownlint.RuleOnError, +) => { + let i: number | undefined = 0; + + // Ignore headings + if (/^\s*#/.test(line)) { + return; + } + + // Ignore any starting list number, e.g. "1. " or " 1. " + if (/^\s*\d+\./.test(line)) { + i = line.indexOf(".") + 1; + } + + for (; i < line.length - 2; i += 1) { + i = getNextIndexNotInCode(line, i); + if (i === undefined || i >= line.length - 2) { + return; + } + + if ( + line[i] === "." && + line[i + 1] === " " && + isCapitalizedAlphabetCharacter(line[i + 2]) && + !isAfterIgnoredWord(line, i) + ) { + helpers.addError( + onError, + lineNumber, + undefined, + line.slice(Math.max(0, i - 7), 14), + ); + } + } +}; + +export const sentencesPerLine = { + description: "Each sentence should be on its own line", + function: ( + params: markdownlint.RuleParams, + onError: markdownlint.RuleOnError, + ) => { + let inFenceLine = false; + + for (let i = 0; i < params.lines.length; i += 1) { + const line = params.lines[i]; + + if (line.startsWith("```")) { + inFenceLine = !inFenceLine; + continue; + } + + if (inFenceLine) { + continue; + } + + visitLine(line, i + 1, onError); + } + }, + names: ["sentences-per-line"], + tags: ["sentences"], +}; diff --git a/src/setup/index.ts b/src/setup/index.ts deleted file mode 100644 index caec91aa..00000000 --- a/src/setup/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { setup } from "./setup.js"; - -process.exitCode = await setup(process.argv.slice(2)); diff --git a/src/setup/settings/addOwnerAsAllContributor.ts b/src/setup/settings/addOwnerAsAllContributor.ts deleted file mode 100644 index 5c326160..00000000 --- a/src/setup/settings/addOwnerAsAllContributor.ts +++ /dev/null @@ -1,68 +0,0 @@ -import chalk from "chalk"; -import { $ } from "execa"; -import fs from "node:fs/promises"; -import prettier from "prettier"; - -import { readFileAsJson } from "../../shared/readFileAsJson.js"; -import { AllContributorsData } from "../../shared/types.js"; - -interface GhUserOutput { - login: string; -} - -export async function addOwnerAsAllContributor(owner: string) { - let user: string; - try { - user = (JSON.parse((await $`gh api user`).stdout) as GhUserOutput).login; - } catch { - console.warn( - chalk.gray( - `Couldn't authenticate GitHub user, falling back to the provided owner name '${owner}'.`, - ), - ); - user = owner; - } - - await $`npx -y all-contributors-cli@6.25 add ${user} ${[ - "code", - "content", - "doc", - "ideas", - "infra", - "maintenance", - "projectManagement", - "tool", - ].join(",")}`; - - const existingContributors = (await readFileAsJson( - "./.all-contributorsrc", - )) as AllContributorsData; - if (!isValidAllContributorsData(existingContributors)) { - throw new Error( - `Invalid .all-contributorsrc: ${JSON.stringify(existingContributors)}`, - ); - } - - await fs.writeFile( - "./.all-contributorsrc", - await prettier.format( - JSON.stringify({ - ...existingContributors, - contributors: existingContributors.contributors - .filter(({ login }) => ["JoshuaKGoldberg", user].includes(login)) - .map((contributor) => - contributor.login === "JoshuaKGoldberg" - ? { ...contributor, contributions: ["tool"] } - : contributor, - ), - }), - { parser: "json" }, - ), - ); -} - -function isValidAllContributorsData( - value: unknown, -): value is AllContributorsData { - return !!value && typeof value === "object" && "contributors" in value; -} diff --git a/src/setup/setup.ts b/src/setup/setup.ts deleted file mode 100644 index c3c1a519..00000000 --- a/src/setup/setup.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { runOrRestore } from "../shared/runOrRestore.js"; -import { setupWithInformation } from "./setupWithInformation.js"; - -export async function setup(args: string[]) { - return await runOrRestore({ - args, - label: "setup", - run: setupWithInformation, - }); -} diff --git a/src/setup/setupWithInformation.ts b/src/setup/setupWithInformation.ts deleted file mode 100644 index e843df7f..00000000 --- a/src/setup/setupWithInformation.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - skipSpinnerBlock, - successSpinnerBlock, - withSpinner, -} from "../shared/cli/spinners.js"; -import { getNpmAuthor } from "../shared/getNpmAuthor.js"; -import { InputValuesAndOctokit } from "../shared/inputs.js"; -import { addOwnerAsAllContributor } from "./settings/addOwnerAsAllContributor.js"; -import { clearChangelog } from "./steps/clearChangelog.js"; -import { hydrateBranchProtectionSettings } from "./steps/hydrateBranchProtectionSettings.js"; -import { hydrateRepositorySettings } from "./steps/hydrateRepositorySettings.js"; -import { hydrateRepositoryLabels } from "./steps/labels/hydrateRepositoryLabels.js"; -import { removeSetupScripts } from "./steps/removeSetupScripts.js"; -import { resetGitTags } from "./steps/resetGitTags.js"; -import { uninstallPackages } from "./steps/uninstallPackages.js"; -import { updateAllContributorsTable } from "./steps/updateAllContributorsTable.js"; -import { updateLocalFiles } from "./steps/updateLocalFiles.js"; -import { updateReadme } from "./steps/updateReadme.js"; - -export async function setupWithInformation({ - octokit, - values, -}: InputValuesAndOctokit) { - successSpinnerBlock("Started hydrating package metadata locally."); - - await withSpinner(async () => { - await addOwnerAsAllContributor(values.owner); - }, "updating existing contributors details..."); - - const npmAuthor = await getNpmAuthor(values.owner); - - await withSpinner(async () => { - await updateLocalFiles({ ...values, npmAuthor }); - }, "Updating all the files with provided details."); - - await withSpinner( - updateReadme, - "Appending template-typescript-node-package notice to 'README.md'", - ); - - successSpinnerBlock(`Finished hydrating package metadata locally.`); - - await withSpinner(clearChangelog, "clearing CHANGELOG.md"); - - await withSpinner(async () => { - await updateAllContributorsTable(values); - }, "generating all-contributors table in README.md"); - - await withSpinner(resetGitTags, "deleting local git tags..."); - - if (!octokit) { - skipSpinnerBlock(`Skipping API hydration.`); - } else { - successSpinnerBlock(`Starting API hydration.`); - - await withSpinner(hydrateRepositoryLabels, "hydrating repository labels"); - - await withSpinner(async () => { - await hydrateRepositorySettings(octokit, values); - }, "hydrating initial repository settings"); - - await withSpinner( - () => hydrateBranchProtectionSettings(octokit, values), - "hydrating branch protection settings", - "private repositories require GitHub Pro for that API.", - ); - - successSpinnerBlock(`Finished API hydration.`); - } - - if (values.skipRemoval) { - skipSpinnerBlock(`Skipping removal of setup scripts.`); - } else { - await withSpinner(removeSetupScripts, "removing setup scripts"); - } - - if (values.skipUninstalls) { - skipSpinnerBlock(`Skipping uninstall of packages only used for setup.`); - } else { - await withSpinner( - uninstallPackages, - "removing packages only used for setup", - ); - } -} diff --git a/src/setup/steps/clearChangelog.ts b/src/setup/steps/clearChangelog.ts deleted file mode 100644 index d543f6d0..00000000 --- a/src/setup/steps/clearChangelog.ts +++ /dev/null @@ -1,9 +0,0 @@ -import fs from "node:fs/promises"; -import prettier from "prettier"; - -export async function clearChangelog() { - await fs.writeFile( - "./CHANGELOG.md", - await prettier.format(`# Changelog`, { parser: "markdown" }), - ); -} diff --git a/src/setup/steps/hydrateBranchProtectionSettings.test.ts b/src/setup/steps/hydrateBranchProtectionSettings.test.ts deleted file mode 100644 index 08f8b1be..00000000 --- a/src/setup/steps/hydrateBranchProtectionSettings.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Octokit } from "octokit"; -import { SpyInstance, describe, expect, it, vi } from "vitest"; - -import { hydrateBranchProtectionSettings } from "./hydrateBranchProtectionSettings.js"; - -const createMockOctokit = (request: SpyInstance) => - ({ - request, - }) as unknown as Octokit; - -const stubValues = { owner: "", repository: "" }; - -describe("hydrateBranchProtectionSettings", () => { - it("returns false when the request receives a 403 response", async () => { - const mockRequest = vi.fn().mockRejectedValue({ status: 403 }); - - const actual = await hydrateBranchProtectionSettings( - createMockOctokit(mockRequest), - stubValues, - ); - - expect(actual).toBe(false); - }); - - it("throws the error when the request throws with a non-403 response", async () => { - const error = { status: 404 }; - const mockRequest = vi.fn().mockRejectedValue(error); - - await expect(() => - hydrateBranchProtectionSettings( - createMockOctokit(mockRequest), - stubValues, - ), - ).rejects.toBe(error); - }); -}); diff --git a/src/setup/steps/hydrateBranchProtectionSettings.ts b/src/setup/steps/hydrateBranchProtectionSettings.ts deleted file mode 100644 index 0798a5c1..00000000 --- a/src/setup/steps/hydrateBranchProtectionSettings.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { RequestError } from "@octokit/request-error"; -import { Octokit } from "octokit"; - -import { InputValues } from "../../shared/inputs.js"; - -export async function hydrateBranchProtectionSettings( - octokit: Octokit, - { owner, repository }: Pick, -) { - try { - await octokit.request( - `PUT /repos/${owner}/${repository}/branches/main/protection`, - { - allow_deletions: false, - allow_force_pushes: true, - allow_fork_pushes: false, - allow_fork_syncing: true, - block_creations: false, - branch: "main", - enforce_admins: false, - owner, - repo: repository, - required_conversation_resolution: true, - required_linear_history: false, - required_pull_request_reviews: null, - required_status_checks: { - checks: [ - { context: "build" }, - { context: "compliance" }, - { context: "lint" }, - { context: "lint_knip" }, - { context: "lint_markdown" }, - { context: "lint_package" }, - { context: "lint_packages" }, - { context: "lint_spelling" }, - { context: "prettier" }, - { context: "test" }, - ], - strict: false, - }, - restrictions: null, - }, - ); - } catch (error) { - if ((error as RequestError).status === 403) { - return false; - } - - throw error; - } -} diff --git a/src/setup/steps/hydrateRepositorySettings.ts b/src/setup/steps/hydrateRepositorySettings.ts deleted file mode 100644 index 6c954565..00000000 --- a/src/setup/steps/hydrateRepositorySettings.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Octokit } from "octokit"; - -import { InputValues } from "../../shared/inputs.js"; - -type HydrateRepositoryValues = Pick< - InputValues, - "description" | "owner" | "repository" ->; - -export async function hydrateRepositorySettings( - octokit: Octokit, - { description, owner, repository }: HydrateRepositoryValues, -) { - await octokit.rest.repos.update({ - allow_auto_merge: true, - allow_rebase_merge: false, - allow_squash_merge: true, - default_branch: "main", - delete_branch_on_merge: true, - description, - has_wiki: false, - owner, - repo: repository, - security_and_analysis: { - secret_scanning: { - status: "enabled", - }, - secret_scanning_push_protection: { - status: "enabled", - }, - }, - squash_merge_commit_message: "PR_BODY", - squash_merge_commit_title: "PR_TITLE", - }); -} diff --git a/src/setup/steps/labels/getExistingEquivalentLabel.test.ts b/src/setup/steps/labels/getExistingEquivalentLabel.test.ts deleted file mode 100644 index 7a0f8114..00000000 --- a/src/setup/steps/labels/getExistingEquivalentLabel.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { getExistingEquivalentLabel } from "./getExistingEquivalentLabel.js"; - -describe("getExistingEquivalentLabel", () => { - it("returns undefined when there are no existing labels", () => { - const actual = getExistingEquivalentLabel([], "abc"); - - expect(actual).toBe(undefined); - }); - - it("returns undefined when no existing label matches", () => { - const actual = getExistingEquivalentLabel(["abc"], "def"); - - expect(actual).toBe(undefined); - }); - - it("returns an existing un-prefixed label when it matches by name", () => { - const actual = getExistingEquivalentLabel(["def", "abc", "ghi"], "abc"); - - expect(actual).toBe("abc"); - }); - - it("returns an existing prefixed label when it matches by name", () => { - const actual = getExistingEquivalentLabel(["abc: def"], "abc: def"); - - expect(actual).toBe("abc: def"); - }); - - it("returns the existing label when it matches excluding prefix", () => { - const actual = getExistingEquivalentLabel( - ["abc: def", "abc", "ghi"], - "type: abc", - ); - - expect(actual).toBe("abc"); - }); - - it("returns the existing label when it matches an alias", () => { - const actual = getExistingEquivalentLabel( - ["abc: def", "enhancement", "ghi"], - "type: feature", - ); - - expect(actual).toBe("enhancement"); - }); -}); diff --git a/src/setup/steps/labels/getExistingEquivalentLabel.ts b/src/setup/steps/labels/getExistingEquivalentLabel.ts deleted file mode 100644 index 966752a7..00000000 --- a/src/setup/steps/labels/getExistingEquivalentLabel.ts +++ /dev/null @@ -1,19 +0,0 @@ -const aliases = new Map([ - ["enhancement", "type: feature"], - ["help wanted", "status: accepting prs"], -]); - -export function getExistingEquivalentLabel( - existingLabels: string[], - outcomeLabel: string, -) { - const outcomeTrimmed = outcomeLabel.replace(/\w+: (\w+)/, "$1"); - - return existingLabels.find((existingLabel) => { - return ( - existingLabel === outcomeLabel || - existingLabel === outcomeTrimmed || - aliases.get(existingLabel) === outcomeLabel - ); - }); -} diff --git a/src/setup/steps/labels/hydrateRepositoryLabels.test.ts b/src/setup/steps/labels/hydrateRepositoryLabels.test.ts deleted file mode 100644 index b7d2e2ad..00000000 --- a/src/setup/steps/labels/hydrateRepositoryLabels.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { hydrateRepositoryLabels } from "./hydrateRepositoryLabels.js"; - -const mock$ = vi.fn(); - -vi.mock("execa", () => ({ - get $() { - return mock$; - }, -})); - -vi.mock("./outcomeLabels.js", () => ({ - outcomeLabels: [ - { - color: "000000", - description: "def ghi", - name: "abc", - }, - ], -})); - -describe("hydrateRepositoryLabels", () => { - it("creates a setup label when it doesn't already exist", async () => { - mock$.mockResolvedValue({ - stdout: JSON.stringify([ - { - color: "000000", - description: "def ghi", - name: "other", - }, - ]), - }); - - await hydrateRepositoryLabels(); - - expect(mock$).toHaveBeenCalledWith( - ["gh label ", " ", " --color ", " --description ", ""], - "create", - "abc", - "000000", - "def ghi", - ); - }); - - it("edits a setup label when it already exists", async () => { - mock$.mockResolvedValue({ - stdout: JSON.stringify([ - { - color: "000000", - description: "def ghi", - name: "abc", - }, - ]), - }); - - await hydrateRepositoryLabels(); - - expect(mock$).toHaveBeenCalledWith( - ["gh label ", " ", " --color ", " --description ", ""], - "edit", - "abc", - "000000", - "def ghi", - ); - }); - - it("deletes a pre-existing label when it isn't a setup label", async () => { - mock$.mockResolvedValue({ - stdout: JSON.stringify([ - { - color: "000000", - description: "def ghi", - name: "unknown", - }, - ]), - }); - - await hydrateRepositoryLabels(); - - expect(mock$).toHaveBeenCalledWith( - ["gh label delete ", " --yes"], - "unknown", - ); - expect(mock$).toHaveBeenCalledTimes(3); - }); - - it("doesn't delete a pre-existing label when it isn't a setup label", async () => { - mock$.mockResolvedValue({ - stdout: JSON.stringify([ - { - color: "000000", - description: "def ghi", - name: "abc", - }, - ]), - }); - - await hydrateRepositoryLabels(); - - expect(mock$).not.toHaveBeenCalledWith( - ["gh label delete ", " --yes"], - "abc", - ); - expect(mock$).toHaveBeenCalledTimes(2); - }); -}); diff --git a/src/setup/steps/labels/hydrateRepositoryLabels.ts b/src/setup/steps/labels/hydrateRepositoryLabels.ts deleted file mode 100644 index 80ae535a..00000000 --- a/src/setup/steps/labels/hydrateRepositoryLabels.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { $ } from "execa"; - -import { getExistingEquivalentLabel } from "./getExistingEquivalentLabel.js"; -import { outcomeLabels } from "./outcomeLabels.js"; - -interface GhLabelData { - name: string; -} - -export async function hydrateRepositoryLabels() { - const getLabelName = (label: { name: string }) => label.name; - - const existingLabels = ( - JSON.parse( - (await $`gh label list --json name`).stdout || "[]", - ) as GhLabelData[] - ).map(getLabelName); - - for (const outcome of outcomeLabels) { - const existingEquivalent = getExistingEquivalentLabel( - existingLabels, - outcome.name, - ); - const [action, label] = existingEquivalent - ? ["edit", existingEquivalent] - : ["create", outcome.name]; - - await $`gh label ${action} ${label} --color ${outcome.color} --description ${outcome.description}`; - } - - const allowedLabels = new Set(outcomeLabels.map(getLabelName)); - - for (const existingLabel of existingLabels) { - if (!allowedLabels.has(existingLabel)) { - await $`gh label delete ${existingLabel} --yes`; - } - } -} diff --git a/src/setup/steps/labels/outcomeLabels.ts b/src/setup/steps/labels/outcomeLabels.ts deleted file mode 100644 index 3585015e..00000000 --- a/src/setup/steps/labels/outcomeLabels.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* spellchecker: disable */ -export const outcomeLabels = [ - { - color: "0075ca", - description: "Improvements or additions to docs", - name: "area: documentation", - }, - { - color: "6009D7", - description: - "Improving how the repository's tests are run and/or code is tested", - name: "area: testing", - }, - { - color: "f9d0c4", - description: "Managing the repository's maintenance", - name: "area: tooling", - }, - { - color: "5319E7", - description: "Good for newcomers, please hop on!", - name: "good first issue", - }, - { - color: "7a5901", - description: "This doesn't seem right", - name: "invalid", - }, - { - color: "0E8A16", - description: "Please, send a pull request to resolve this!", - name: "status: accepting prs", - }, - { - color: "#ddcccc", - description: "Waiting for something else to be resolved", - name: "status: blocked", - }, - { - color: "cfd3d7", - description: "This issue or pull request already exists", - name: "status: duplicate", - }, - { - color: "#05104F", - description: "Not yet ready for implementation or a pull request", - name: "status: in discussion", - }, - { - color: "D3F82D", - description: "Further research required...?", - name: "status: needs investigation", - }, - { - color: "E4BC82", - description: "Needs an action taken by the original poster", - name: "status: waiting for author", - }, - { - color: "ffffff", - description: "This will not be worked on", - name: "status: wontfix", - }, - { - color: "d73a4a", - description: "Something isn't working :(", - name: "type: bug", - }, - { - color: "a2eeef", - description: "New enhancement or request", - name: "type: feature", - }, - { - color: "d876e3", - description: "Further information is requested", - name: "type: question", - }, - { - color: "fde282", - description: "Tech debt or other code/repository cleanups", - name: "type: cleanup", - }, -]; diff --git a/src/setup/steps/removeSetupScripts.ts b/src/setup/steps/removeSetupScripts.ts deleted file mode 100644 index 71847d1f..00000000 --- a/src/setup/steps/removeSetupScripts.ts +++ /dev/null @@ -1,17 +0,0 @@ -import fs from "node:fs/promises"; - -const globPaths = [ - "./bin", - "./script", - "./src/hydrate", - "./src/setup", - "./src/shared", - ".github/workflows/hydrate.yml", - ".github/workflows/setup.yml", -]; - -export async function removeSetupScripts() { - for (const globPath of globPaths) { - await fs.rm(globPath, { force: true, recursive: true }); - } -} diff --git a/src/setup/steps/resetGitTags.ts b/src/setup/steps/resetGitTags.ts deleted file mode 100644 index 59894fb5..00000000 --- a/src/setup/steps/resetGitTags.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { $ } from "execa"; - -export async function resetGitTags() { - const { stdout: allLocalTags } = await $`git tag -l`; - - // Create array of local tags by splitting the string at each new line and filtering out empty strings - const allLocalTagsArray = allLocalTags.split("\n").filter(Boolean); - - // Delete all local tags if there are any - if (allLocalTagsArray.length !== 0) { - await $`git tag -d ${allLocalTagsArray}`; - } -} diff --git a/src/setup/steps/uninstallPackages.ts b/src/setup/steps/uninstallPackages.ts deleted file mode 100644 index c931f08c..00000000 --- a/src/setup/steps/uninstallPackages.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { $ } from "execa"; - -export async function uninstallPackages() { - await $`pnpm remove @clack/prompts all-contributors-for-repository chalk execa git-remote-origin-url git-url-parse js-yaml npm-user octokit prettier replace-in-file title-case`; - await $`pnpm remove @octokit/request-error @types/git-url-parse @types/js-yaml @types/prettier all-contributors-cli c8 globby tsx -D`; - await $`pnpm add prettier -D`; -} diff --git a/src/setup/steps/updateAllContributorsTable.ts b/src/setup/steps/updateAllContributorsTable.ts deleted file mode 100644 index 2c0d3c12..00000000 --- a/src/setup/steps/updateAllContributorsTable.ts +++ /dev/null @@ -1,25 +0,0 @@ -import fs from "node:fs/promises"; -import prettier from "prettier"; - -import { InputValues } from "../../shared/inputs.js"; -import { readFileSafeAsJson } from "../../shared/readFileSafeAsJson.js"; -import { AllContributorsData } from "../../shared/types.js"; - -export async function updateAllContributorsTable({ - owner, - repository, -}: Pick) { - await fs.writeFile( - ".all-contributorsrc", - await prettier.format( - JSON.stringify({ - ...((await readFileSafeAsJson( - ".all-contributorsrc", - )) as AllContributorsData), - projectName: repository, - projectOwner: owner, - }), - { parser: "json" }, - ), - ); -} diff --git a/src/setup/steps/updateLocalFiles.ts b/src/setup/steps/updateLocalFiles.ts deleted file mode 100644 index 1bf0a20c..00000000 --- a/src/setup/steps/updateLocalFiles.ts +++ /dev/null @@ -1,82 +0,0 @@ -import replaceInFile from "replace-in-file"; - -import { readFileAsJson } from "../../shared/readFileAsJson.js"; - -interface UpdateLocalFilesOptions { - description: string; - npmAuthor: string; - owner: string; - repository: string; - title: string; -} - -interface ExistingPackageData { - description?: string; - version?: string; -} - -export async function updateLocalFiles({ - description, - npmAuthor, - owner, - repository, - title, -}: UpdateLocalFilesOptions) { - const existingPackage = (await readFileAsJson( - "./package.json", - )) as ExistingPackageData; - - const replacements: [RegExp | string, string, string?][] = [ - [/Template TypeScript Node Package/g, title], - [/JoshuaKGoldberg/g, owner], - [/template-typescript-node-package/g, repository], - [/\/\*\n.+\*\/\n\n/gs, ``, ".eslintrc.cjs"], - [/"author": ".+"/g, `"author": "${npmAuthor}"`, "./package.json"], - [/"bin": ".+\n/g, ``, "./package.json"], - [/"hydrate:test": ".+\n/g, ``, "./package.json"], - [/"setup:test": ".*/g, ``, "./package.json"], - [/"setup": ".*/g, ``, "./package.json"], - - [/## Explainer.*## Usage/gs, `## Usage`, "./README.md"], - [/\n## The .+ Script.*$/gs, "", "./.github/DEVELOPMENT.md"], - [`,\n\t\t["src/setup/*.json"`, ``, "./cspell.json"], - [`\t\t"src/hydrate/index.ts",\n`, ``, "./knip.jsonc"], - [`\t\t"src/setup/index.ts",\n`, ``, "./knip.jsonc"], - [`\t\t"ignoreDependencies": ["c8"],\n`, ``, "./knip.jsonc"], - [ - `["src/index.ts!", "script/setup*.js"]`, - `"src/index.ts!"`, - "./knip.jsonc", - ], - [`["src/**/*.ts!", "script/**/*.js"]`, `"src/**/*.ts!"`, "./knip.jsonc"], - ]; - - if (existingPackage.description) { - replacements.push([ - new RegExp(existingPackage.description, "g"), - description, - ]); - } - - if (existingPackage.version) { - replacements.push([ - new RegExp(`"version": "${existingPackage.version}"`, "g"), - `"version": "0.0.0"`, - "./package.json", - ]); - } - - for (const [from, to, files = ["./.github/**/*", "./*.*"]] of replacements) { - try { - // @ts-expect-error -- https://github.com/microsoft/TypeScript/issues/54342 - await replaceInFile({ files, from, to }); - } catch (error) { - throw new Error( - `Failed to replace ${from.toString()} with ${to} in ${files.toString()}`, - { - cause: error, - }, - ); - } - } -} diff --git a/src/setup/steps/updateReadme.ts b/src/setup/steps/updateReadme.ts deleted file mode 100644 index 0d83ff86..00000000 --- a/src/setup/steps/updateReadme.ts +++ /dev/null @@ -1,14 +0,0 @@ -import fs from "node:fs/promises"; -import { EOL } from "node:os"; - -export async function updateReadme() { - const endOfReadmeNotice = [ - ``, - ``, - ``, - `> 💙 This package is based on [@JoshuaKGoldberg](https://github.com/JoshuaKGoldberg)'s [template-typescript-node-package](https://github.com/JoshuaKGoldberg/template-typescript-node-package).`, - ``, - ].join(EOL); - - await fs.appendFile("./README.md", endOfReadmeNotice); -} diff --git a/src/shared/PrefillPrompter.test.ts b/src/shared/PrefillPrompter.test.ts deleted file mode 100644 index 00354e21..00000000 --- a/src/shared/PrefillPrompter.test.ts +++ /dev/null @@ -1,75 +0,0 @@ -import chalk from "chalk"; -import { describe, expect, it, vi } from "vitest"; - -import { PrefillPrompter } from "./PrefillPrompter.js"; - -const mockText = vi.fn(); - -vi.mock("@clack/prompts", () => ({ - isCancel: () => false, - get text() { - return mockText; - }, -})); - -const mockLogLine = vi.fn(); - -vi.mock("./cli/lines.js", () => ({ - get logLine() { - return mockLogLine; - }, -})); - -describe("PrefillPrompter", () => { - it("logs a line and a pre-fill message when a first value already exists", async () => { - const prompter = new PrefillPrompter(); - const existing = "existing value"; - - const actual = await prompter.getPrefillOrPromptedValue( - "key", - existing, - "", - ); - - expect(actual).toEqual(existing); - expect(mockLogLine.mock.calls).toEqual([ - [], - [chalk.gray(`Pre-filling key to existing value.`)], - ]); - }); - - it("logs only a pre-fill message when a second value already exists", async () => { - const prompter = new PrefillPrompter(); - - await prompter.getPrefillOrPromptedValue("key 1", "existing 1", ""); - - const actual = await prompter.getPrefillOrPromptedValue( - "key 2", - "existing 2", - "", - ); - - expect(actual).toEqual("existing 2"); - expect(mockLogLine.mock.calls).toEqual([ - [], - [chalk.gray(`Pre-filling key 1 to existing 1.`)], - [chalk.gray(`Pre-filling key 2 to existing 2.`)], - ]); - }); - - it("prompts for a new value when the value doesn't already exist", async () => { - const prompter = new PrefillPrompter(); - const expected = "expected value"; - - mockText.mockResolvedValue(expected); - - const actual = await prompter.getPrefillOrPromptedValue( - "key", - undefined, - "", - ); - - expect(actual).toEqual(expected); - expect(mockLogLine).not.toHaveBeenCalled(); - }); -}); diff --git a/src/shared/PrefillPrompter.ts b/src/shared/PrefillPrompter.ts deleted file mode 100644 index efc696c5..00000000 --- a/src/shared/PrefillPrompter.ts +++ /dev/null @@ -1,44 +0,0 @@ -import * as prompts from "@clack/prompts"; -import chalk from "chalk"; - -import { logLine } from "./cli/lines.js"; -import { handlePromptCancel } from "./prompts.js"; - -export class PrefillPrompter { - #shouldLogLineBeforePrefill = true; - - async getPrefillOrPromptedValue( - key: string, - existingValue: string | undefined, - message: string, - placeholder?: string, - ) { - if (existingValue) { - if (this.#shouldLogLineBeforePrefill) { - logLine(); - this.#shouldLogLineBeforePrefill = false; - } - - logLine(chalk.gray(`Pre-filling ${key} to ${existingValue}.`)); - return existingValue; - } - - const value = await prompts.text({ - message, - placeholder, - validate: (val) => { - if (val.length === 0) { - return "Please enter a value."; - } - }, - }); - - handlePromptCancel(value); - - return value; - } - - reset() { - this.#shouldLogLineBeforePrefill = true; - } -} diff --git a/src/shared/cli/lines.ts b/src/shared/cli/lines.ts deleted file mode 100644 index 0790606a..00000000 --- a/src/shared/cli/lines.ts +++ /dev/null @@ -1,5 +0,0 @@ -import chalk from "chalk"; - -export function logLine(line?: string) { - console.log([chalk.gray("│"), line].filter(Boolean).join(" ")); -} diff --git a/src/shared/cli/spinners.ts b/src/shared/cli/spinners.ts deleted file mode 100644 index b7104bb5..00000000 --- a/src/shared/cli/spinners.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as prompts from "@clack/prompts"; -import chalk from "chalk"; - -const s = prompts.spinner(); - -export function skipSpinnerBlock(blockText: string) { - s.start(chalk.gray("➖ " + blockText)); - s.stop(chalk.gray("➖ " + blockText)); -} - -export function successSpinnerBlock(blockText: string) { - s.start(chalk.green("✅ " + blockText)); - s.stop(chalk.green("✅ " + blockText)); -} - -export async function withSpinner( - callback: () => Promise, - label: string, - warningHint?: string, -) { - s.start(`${upperFirst(label)}...`); - - try { - const result = await callback(); - - if (result === false) { - const extra = warningHint ? `: ${warningHint}` : ""; - s.stop(chalk.yellow(`⚠️ Error ${label}${extra}.`)); - } else { - s.stop(chalk.green(`✅ Passed ${label}.`)); - } - - return result; - } catch (error) { - s.stop(chalk.red(`❌ Error ${label}.`)); - - throw new Error(`Failed ${label}`, { cause: error }); - } -} - -function upperFirst(text: string) { - return text[0].toUpperCase() + text.slice(1); -} diff --git a/src/shared/ensureRepositoryExists.test.ts b/src/shared/ensureRepositoryExists.test.ts deleted file mode 100644 index c3567401..00000000 --- a/src/shared/ensureRepositoryExists.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { Octokit } from "octokit"; -import { SpyInstance, beforeEach, describe, expect, it, vi } from "vitest"; - -import { ensureRepositoryExists } from "./ensureRepositoryExists.js"; - -const mockSelect = vi.fn(); -const mockText = vi.fn(); - -vi.mock("@clack/prompts", () => ({ - intro: vi.fn(), - isCancel: vi.fn(), - outro: vi.fn(), - get select() { - return mockSelect; - }, - get text() { - return mockText; - }, -})); - -const owner = "StubOwner"; -const repository = "stub-repository"; - -const createMockOctokit = ( - repos: Partial>, -) => - ({ - rest: { - repos, - }, - }) as unknown as Octokit; - -describe("ensureRepositoryExists", () => { - beforeEach(() => { - vi.spyOn(console, "clear").mockImplementation(() => undefined); - vi.spyOn(console, "log").mockImplementation(() => undefined); - }); - - it("returns the repository when octokit is undefined", async () => { - const actual = await ensureRepositoryExists(undefined, owner, repository); - - expect(actual).toEqual(repository); - }); - - it("returns the repository when the octokit GET resolves", async () => { - const octokit = createMockOctokit({ get: vi.fn().mockResolvedValue({}) }); - - const actual = await ensureRepositoryExists(octokit, owner, repository); - - expect(actual).toEqual(repository); - }); - - it("throws the error when awaiting the octokit GET throws a non-404 error", async () => { - const error = new Error("Oh no!"); - const octokit = createMockOctokit({ - get: vi.fn().mockRejectedValue(error), - }); - - await expect(() => - ensureRepositoryExists(octokit, owner, repository), - ).rejects.toEqual(error); - }); - - it("creates the repository when the octokit GET rejects and the prompt resolves 'create'", async () => { - const octokit = createMockOctokit({ - createUsingTemplate: vi.fn().mockResolvedValue({}), - get: vi - .fn() - .mockRejectedValueOnce({ status: 404 }) - .mockResolvedValueOnce({}), - }); - - mockSelect.mockResolvedValue("create"); - - const actual = await ensureRepositoryExists(octokit, owner, repository); - - expect(actual).toEqual(repository); - }); - - it("creates a different repository when the octokit GET rejects and the prompt resolves 'different'", async () => { - const octokit = createMockOctokit({ - get: vi - .fn() - .mockRejectedValueOnce({ status: 404 }) - .mockResolvedValueOnce({}), - }); - const newRepository = "new-repository"; - - mockSelect.mockResolvedValue("different"); - mockText.mockResolvedValue(newRepository); - - const actual = await ensureRepositoryExists(octokit, owner, repository); - - expect(actual).toEqual(newRepository); - }); -}); diff --git a/src/shared/ensureRepositoryExists.ts b/src/shared/ensureRepositoryExists.ts deleted file mode 100644 index 4e7f4ea5..00000000 --- a/src/shared/ensureRepositoryExists.ts +++ /dev/null @@ -1,70 +0,0 @@ -import * as prompts from "@clack/prompts"; -import { RequestError } from "@octokit/request-error"; -import { Octokit } from "octokit"; - -import { handleCancel, handlePromptCancel } from "./prompts.js"; - -export async function ensureRepositoryExists( - octokit: Octokit | undefined, - owner: string, - repository: string, -) { - if (!octokit) { - return repository; - } - - // We'll continuously pester the user for a repository - // until they bail, create a new one, or it exists. - while (true) { - // Because the Octokit SDK throws on 404s (😡), - // we try/catch to check whether the repo exists. - try { - await octokit.rest.repos.get({ - owner, - repo: repository, - }); - return repository; - } catch (error) { - if ((error as RequestError).status !== 404) { - throw error; - } - } - - const selection = (await prompts.select({ - message: `Repository ${repository} doesn't seem to exist under ${owner}. What would you like to do?`, - options: [ - { label: "Bail out and maybe try again later", value: "bail" }, - { label: "Create a new repository", value: "create" }, - { - label: "Try again with a different repository", - value: "different", - }, - ], - })) as "bail" | "create" | "different"; - - handlePromptCancel(selection); - - switch (selection) { - case "bail": - handleCancel(); - break; - - case "create": - await octokit.rest.repos.createUsingTemplate({ - name: repository, - owner, - template_owner: "JoshuaKGoldberg", - template_repo: "template-typescript-node-package", - }); - break; - - case "different": - const newRepository = await prompts.text({ - message: `What would you like to call the repository?`, - }); - handlePromptCancel(newRepository); - repository = newRepository; - break; - } - } -} diff --git a/src/shared/getDefaultSettings.test.ts b/src/shared/getDefaultSettings.test.ts deleted file mode 100644 index 9248bc6d..00000000 --- a/src/shared/getDefaultSettings.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { getDefaultSettings } from "./getDefaultSettings.js"; - -vi.mock("./cli/lines.js"); - -const mockGitRemoteOriginUrl = vi.fn(); - -vi.mock("git-remote-origin-url", () => ({ - get default() { - return mockGitRemoteOriginUrl; - }, -})); - -describe("getDefaultSettings", () => { - it("returns the retrieved owner and repository when gitRemoteOriginUrl succeeds", async () => { - mockGitRemoteOriginUrl.mockResolvedValue("https://github.com/abc/def"); - - const settings = await getDefaultSettings(); - - expect(settings).toEqual({ defaultOwner: "abc", defaultRepository: "def" }); - }); - - it("returns arbitrary owner and repository defaults when gitRemoteOriginUrl rejects", async () => { - mockGitRemoteOriginUrl.mockRejectedValue(new Error("Oh no!")); - - const settings = await getDefaultSettings(); - - expect(settings).toEqual({ - defaultOwner: "UserName", - defaultRepository: "my-lovely-repository", - }); - }); -}); diff --git a/src/shared/getDefaultSettings.ts b/src/shared/getDefaultSettings.ts deleted file mode 100644 index ccc6ff19..00000000 --- a/src/shared/getDefaultSettings.ts +++ /dev/null @@ -1,26 +0,0 @@ -import chalk from "chalk"; -import gitRemoteOriginUrl from "git-remote-origin-url"; -import gitUrlParse from "git-url-parse"; - -import { logLine } from "./cli/lines.js"; - -export async function getDefaultSettings() { - try { - const gitRemoteUrl = await gitRemoteOriginUrl(); - const { name, owner } = gitUrlParse(gitRemoteUrl); - - return { defaultOwner: owner, defaultRepository: name }; - } catch { - logLine(); - logLine( - chalk.gray( - "Could not populate default owner and repository. Did not detect a Git repository with an origin. ", - ), - ); - - return { - defaultOwner: "UserName", - defaultRepository: "my-lovely-repository", - }; - } -} diff --git a/src/shared/getNpmAuthor.test.ts b/src/shared/getNpmAuthor.test.ts deleted file mode 100644 index 074fe2fb..00000000 --- a/src/shared/getNpmAuthor.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import chalk from "chalk"; -import { SpyInstance, beforeEach, describe, expect, it, vi } from "vitest"; - -import { getNpmAuthor } from "./getNpmAuthor.js"; - -const mockNpmUserInfo = vi.fn(); - -vi.mock("./getNpmUserInfo", () => ({ - get getNpmUserInfo() { - return mockNpmUserInfo; - }, -})); - -let mockConsoleLog: SpyInstance; - -const owner = "test-owner"; - -describe("getNpmAuthor", () => { - beforeEach(() => { - mockConsoleLog = vi - .spyOn(console, "log") - .mockImplementation(() => undefined); - }); - - it("logs and defaults to owner when getNpmUserInfo fails", async () => { - mockNpmUserInfo.mockResolvedValue({ - reason: "Some reason", - succeeded: false, - }); - - const author = await getNpmAuthor(owner); - - expect(author).toBe(owner); - expect(mockConsoleLog).toHaveBeenCalledWith( - [chalk.gray("│"), chalk.gray("Some reason")].join(" "), - ); - }); - - it("returns npm user info with only name when no email available for npm user", async () => { - const name = "Test Author"; - mockNpmUserInfo.mockResolvedValue({ - succeeded: true, - value: { name }, - }); - - const author = await getNpmAuthor(owner); - expect(author).toBe(name); - expect(mockConsoleLog).not.toHaveBeenCalled(); - }); - - it("returns npm user info when getNpmUserInfo succeeds and contains all information", async () => { - const name = "Test Author"; - const email = ""; - mockNpmUserInfo.mockResolvedValue({ - succeeded: true, - value: { email, name }, - }); - - const author = await getNpmAuthor(owner); - expect(author).toBe(`${name} <${email}>`); - expect(mockConsoleLog).not.toHaveBeenCalled(); - }); -}); diff --git a/src/shared/getNpmAuthor.ts b/src/shared/getNpmAuthor.ts deleted file mode 100644 index 2059504f..00000000 --- a/src/shared/getNpmAuthor.ts +++ /dev/null @@ -1,21 +0,0 @@ -import chalk from "chalk"; - -import { logLine } from "./cli/lines.js"; -import { getNpmUserInfo } from "./getNpmUserInfo.js"; - -export async function getNpmAuthor(): Promise; -export async function getNpmAuthor(owner: string): Promise; -export async function getNpmAuthor( - owner?: string | undefined, -): Promise { - const result = await getNpmUserInfo(); - if (!result.succeeded) { - logLine(); - logLine(chalk.gray(result.reason)); - return owner; - } - - const { email, name = owner } = result.value; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return email ? `${name!} <${email}>` : name; -} diff --git a/src/shared/getNpmUserInfo.test.ts b/src/shared/getNpmUserInfo.test.ts deleted file mode 100644 index 42c3587a..00000000 --- a/src/shared/getNpmUserInfo.test.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { getNpmUserInfo } from "./getNpmUserInfo.js"; - -const mock$ = vi.fn(); - -vi.mock("execa", () => ({ - get $() { - return mock$; - }, -})); - -const mockNpmUser = vi.fn(); - -vi.mock("npm-user", () => ({ - get default() { - return mockNpmUser; - }, -})); - -const npmUsername = "test-npm-username"; - -describe("getNpmUserInfo", () => { - it("returns an error result when npm whoami fails", async () => { - mock$.mockRejectedValue({ stderr: "Oh no!" }); - const result = await getNpmUserInfo(); - - expect(result).toEqual({ - reason: "Could not populate npm user. Failed to run npm whoami.", - succeeded: false, - }); - }); - - it("returns a success result when the npm whoami user succeeds", async () => { - mock$.mockResolvedValue({ stdout: npmUsername }); - mockNpmUser.mockResolvedValue({ name: npmUsername }); - const result = await getNpmUserInfo(); - - expect(result).toEqual({ - succeeded: true, - value: { name: npmUsername }, - }); - }); - - it("returns an error result the npm whoami user fails", async () => { - mock$.mockResolvedValue({ stdout: npmUsername }); - mockNpmUser.mockRejectedValue("error"); - const result = await getNpmUserInfo(); - - expect(result).toEqual({ - reason: - "Could not populate npm user. Failed to retrieve user info from npm.", - succeeded: false, - }); - }); -}); diff --git a/src/shared/getNpmUserInfo.ts b/src/shared/getNpmUserInfo.ts deleted file mode 100644 index cbd0b1b9..00000000 --- a/src/shared/getNpmUserInfo.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { $ } from "execa"; -import npmUser, { type UserInfo } from "npm-user"; - -export type { UserInfo }; -interface ErrorResult { - reason: string; - succeeded: false; -} -interface SuccessResult { - succeeded: true; - value: UserInfo; -} -type Result = ErrorResult | SuccessResult; - -export async function getNpmUserInfo(): Promise { - let username; - - try { - const { stdout } = await $`npm whoami`; - username = stdout; - } catch { - return { - reason: "Could not populate npm user. Failed to run npm whoami.", - succeeded: false, - }; - } - - try { - const user = await npmUser(username); - return { succeeded: true, value: user }; - } catch { - return { - reason: - "Could not populate npm user. Failed to retrieve user info from npm.", - succeeded: false, - }; - } -} diff --git a/src/shared/getOctokit.ts b/src/shared/getOctokit.ts deleted file mode 100644 index dcf96d14..00000000 --- a/src/shared/getOctokit.ts +++ /dev/null @@ -1,35 +0,0 @@ -import chalk from "chalk"; -import { $ } from "execa"; -import { Octokit } from "octokit"; - -import { - skipSpinnerBlock, - successSpinnerBlock, - withSpinner, -} from "./cli/spinners.js"; - -export async function getOctokit( - skipApi: boolean, -): Promise { - if (skipApi) { - skipSpinnerBlock(`Skipping checking GitHub authentication.`); - return undefined; - } - - successSpinnerBlock(`Checking GitHub authentication.`); - - return await withSpinner(async () => { - try { - await $`gh auth status`; - } catch (error) { - console.error(); - console.error(chalk.red((error as Error).message)); - console.error(); - throw new Error("GitHub authentication failed."); - } - - const auth = (await $`gh auth token`).stdout.trim(); - - return new Octokit({ auth }); - }, "fetching gh auth status"); -} diff --git a/src/shared/inputs.ts b/src/shared/inputs.ts deleted file mode 100644 index c4a12a47..00000000 --- a/src/shared/inputs.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { parseArgs } from "node:util"; -import { Octokit } from "octokit"; -import { titleCase } from "title-case"; - -import { PrefillPrompter } from "./PrefillPrompter.js"; -import { ensureRepositoryExists } from "./ensureRepositoryExists.js"; -import { getDefaultSettings } from "./getDefaultSettings.js"; -import { getOctokit } from "./getOctokit.js"; -import { optionalDefault } from "./optionalDefault.js"; - -export type GetterDefaultInputValues = { - [K in keyof DefaultInputValues]: - | (() => Promise) - | DefaultInputValues[K]; -}; - -export interface DefaultInputValues { - author: string | undefined; - description: string; - email: string | undefined; - funding: string | undefined; - owner: string | undefined; - releases: boolean | undefined; - repository: string; - skipApi: boolean; - skipRemoval: boolean; - skipRestore: boolean; - skipUninstalls: boolean; - title: string; - unitTests: boolean | undefined; -} - -export interface InputValues extends DefaultInputValues { - owner: string; -} - -export interface InputValuesAndOctokit { - octokit: Octokit | undefined; - values: InputValues; -} - -export async function getInputValuesAndOctokit( - args: string[], - defaults: Partial = {}, -): Promise { - const { defaultOwner, defaultRepository } = await getDefaultSettings(); - const { values } = parseArgs({ - args, - options: { - author: { type: "string" }, - description: { type: "string" }, - email: { type: "string" }, - funding: { type: "string" }, - owner: { type: "string" }, - releases: { type: "boolean" }, - repository: { type: "string" }, - "skip-api": { type: "boolean" }, - "skip-removal": { type: "boolean" }, - "skip-restore": { type: "boolean" }, - "skip-uninstall": { type: "boolean" }, - title: { type: "string" }, - unitTests: { type: "boolean" }, - }, - strict: false, - tokens: true, - }); - const prompter = new PrefillPrompter(); - - const owner = await prompter.getPrefillOrPromptedValue( - "owner", - values.owner as string | undefined, - "What owner or user will the repository be under?", - defaultOwner, - ); - - const octokit = await getOctokit(!!values["skip-api"]); - - prompter.reset(); - - const repository = await ensureRepositoryExists( - octokit, - owner, - await prompter.getPrefillOrPromptedValue( - "repository", - values.repository as string | undefined, - "What will the kebab-case name of the repository be?", - defaultRepository, - ), - ); - - const title = await prompter.getPrefillOrPromptedValue( - "title", - values.title as string | undefined, - "What will the Title Case title of the repository be?", - titleCase(repository).replaceAll("-", " "), - ); - - const description = await prompter.getPrefillOrPromptedValue( - "description", - values.description as string | undefined, - "How would you describe the new package?", - "A very lovely package. Hooray!", - ); - - return { - octokit, - values: { - author: await optionalDefault( - values.author as string | undefined, - defaults.author, - ), - description, - email: await optionalDefault( - values.email as string | undefined, - defaults.email, - ), - funding: await optionalDefault( - values.funding as string | undefined, - defaults.funding, - ), - owner, - releases: await optionalDefault( - values.releases as boolean | undefined, - defaults.releases, - ), - repository, - skipApi: !!values["skip-api"], - skipRemoval: !!values["skip-removal"], - skipRestore: !!values["skip-restore"], - skipUninstalls: !!values["skip-uninstalls"], - title, - unitTests: await optionalDefault( - values.unitTests as boolean | undefined, - defaults.unitTests, - ), - }, - }; -} diff --git a/src/shared/optionalDefault.test.ts b/src/shared/optionalDefault.test.ts deleted file mode 100644 index 78222f77..00000000 --- a/src/shared/optionalDefault.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { optionalDefault } from "./optionalDefault.js"; - -describe("optionalDefault", () => { - it("returns the provided value when it exists", async () => { - const value = "abc"; - - const actual = await optionalDefault(value, () => Promise.resolve("def")); - - expect(actual).toBe(value); - }); - - it("defaults to the default value when provided as an async function", async () => { - const value = "abc"; - - const actual = await optionalDefault(undefined, () => - Promise.resolve(value), - ); - - expect(actual).toBe(value); - }); - - it("defaults to the default value when provided directly", async () => { - const value = "abc"; - - const actual = await optionalDefault(undefined, value); - - expect(actual).toBe(value); - }); -}); diff --git a/src/shared/optionalDefault.ts b/src/shared/optionalDefault.ts deleted file mode 100644 index cba3eec9..00000000 --- a/src/shared/optionalDefault.ts +++ /dev/null @@ -1,14 +0,0 @@ -export async function optionalDefault( - value: T | undefined, - getDefault: (() => Promise) | T | undefined, -) { - if (value !== undefined) { - return value; - } - - if (typeof getDefault === "function") { - return await getDefault(); - } - - return getDefault; -} diff --git a/src/shared/prompts.ts b/src/shared/prompts.ts deleted file mode 100644 index 69efb5b9..00000000 --- a/src/shared/prompts.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as prompts from "@clack/prompts"; - -export function handleCancel() { - prompts.cancel("Operation cancelled. Exiting - maybe another time? 👋"); - // eslint-disable-next-line n/no-process-exit - process.exit(1); -} - -export function handlePromptCancel( - value: boolean | string | symbol, -): asserts value is boolean | string { - if (prompts.isCancel(value)) { - handleCancel(); - } -} diff --git a/src/shared/readFileAsJson.test.ts b/src/shared/readFileAsJson.test.ts deleted file mode 100644 index 90105897..00000000 --- a/src/shared/readFileAsJson.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readFileAsJson } from "./readFileAsJson.js"; - -const mockReadFile = vi.fn(); - -vi.mock("node:fs/promises", () => ({ - get readFile() { - return mockReadFile; - }, -})); - -describe("readFileAsJson", () => { - it("returns the file's parsed contents when it exists", async () => { - const data = { abc: 123 }; - - mockReadFile.mockResolvedValue(JSON.stringify(data)); - - const actual = await readFileAsJson("filePath.json"); - - expect(actual).toEqual(data); - }); - - it("throws an error when the file doesn't exist", async () => { - const error = new Error("Oh no!"); - - mockReadFile.mockRejectedValue(error); - - await expect(() => readFileAsJson("filePath.json")).rejects.toEqual( - new Error( - `Could not read file from filePath.json as JSON. Please ensure the file exists and is valid JSON.`, - { cause: error }, - ), - ); - }); -}); diff --git a/src/shared/readFileAsJson.ts b/src/shared/readFileAsJson.ts deleted file mode 100644 index ea501dfd..00000000 --- a/src/shared/readFileAsJson.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as fs from "node:fs/promises"; - -export async function readFileAsJson(filePath: string) { - try { - return JSON.parse((await fs.readFile(filePath)).toString()) as unknown; - } catch (error) { - throw new Error( - `Could not read file from ${filePath} as JSON. Please ensure the file exists and is valid JSON.`, - { cause: error }, - ); - } -} diff --git a/src/shared/readFileSafe.test.ts b/src/shared/readFileSafe.test.ts deleted file mode 100644 index c910ca46..00000000 --- a/src/shared/readFileSafe.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; - -import { readFileSafe } from "./readFileSafe.js"; - -const mockReadFile = vi.fn(); - -vi.mock("node:fs/promises", () => ({ - get default() { - return { - get readFile() { - return mockReadFile; - }, - }; - }, -})); - -describe("readFundingIfExists", () => { - it("outputs the file content as string when it exists", async () => { - mockReadFile.mockResolvedValue("File content as string"); - const result = await readFileSafe("/path/to/file.ext", "fallback"); - expect(result).toBe("File content as string"); - }); - - it("returns fallback when readFile fails", async () => { - mockReadFile.mockRejectedValue("Oops"); - const result = await readFileSafe("/path/to/nowhere.ext", "fallback"); - expect(result).toBe("fallback"); - }); -}); diff --git a/src/shared/readFileSafe.ts b/src/shared/readFileSafe.ts deleted file mode 100644 index 32815547..00000000 --- a/src/shared/readFileSafe.ts +++ /dev/null @@ -1,9 +0,0 @@ -import fs from "node:fs/promises"; - -export async function readFileSafe(filePath: string, fallback: string) { - try { - return (await fs.readFile(filePath)).toString(); - } catch { - return fallback; - } -} diff --git a/src/shared/readFileSafeAsJson.ts b/src/shared/readFileSafeAsJson.ts deleted file mode 100644 index 27b43c0f..00000000 --- a/src/shared/readFileSafeAsJson.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { readFileSafe } from "./readFileSafe.js"; - -export async function readFileSafeAsJson(filePath: string) { - return JSON.parse(await readFileSafe(filePath, "null")) as unknown; -} diff --git a/src/shared/runOrRestore.test.ts b/src/shared/runOrRestore.test.ts deleted file mode 100644 index 5dd22271..00000000 --- a/src/shared/runOrRestore.test.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { beforeEach, describe, expect, it, vi } from "vitest"; - -import { runOrRestore } from "./runOrRestore.js"; - -const mockConfirm = vi.fn(); - -vi.mock("@clack/prompts", () => ({ - get confirm() { - return mockConfirm; - }, - intro: vi.fn(), - isCancel: vi.fn(), - outro: vi.fn(), -})); - -const mock$ = vi.fn(); - -vi.mock("execa", () => ({ - get $() { - return mock$; - }, -})); - -const mockGetInputValuesAndOctokit = vi.fn(); - -vi.mock("./inputs.js", () => ({ - get getInputValuesAndOctokit() { - return mockGetInputValuesAndOctokit; - }, -})); - -describe("runOrRestore", () => { - beforeEach(() => { - vi.spyOn(console, "clear").mockImplementation(() => undefined); - vi.spyOn(console, "log").mockImplementation(() => undefined); - }); - - it("returns 0 when run resolves", async () => { - mockGetInputValuesAndOctokit.mockResolvedValue({ - octokit: undefined, - values: {}, - }); - - const actual = await runOrRestore({ - args: [], - label: "testing", - run: vi.fn(), - }); - - expect(actual).toEqual(0); - }); - - it("returns 1 and does not restore the repository when run rejects, skipRestore is false, and shouldRestore is not confirmed", async () => { - mockGetInputValuesAndOctokit.mockResolvedValue({ - octokit: undefined, - values: { - skipRestore: false, - }, - }); - mockConfirm.mockResolvedValue(false); - - const actual = await runOrRestore({ - args: [], - label: "testing", - run: vi.fn().mockRejectedValue(new Error("Oh no!")), - }); - - expect(actual).toEqual(1); - - expect(mock$).not.toHaveBeenCalled(); - }); - - it("returns 1 and restores the repository when run rejects, skipRestore is false, and shouldRestore is confirmed", async () => { - mockGetInputValuesAndOctokit.mockResolvedValue({ - octokit: undefined, - values: { - skipRestore: false, - }, - }); - mockConfirm.mockResolvedValue(true); - - const actual = await runOrRestore({ - args: [], - label: "testing", - run: vi.fn().mockRejectedValue(new Error("Oh no!")), - }); - - expect(actual).toEqual(1); - - expect(mock$).toHaveBeenCalledWith(["git restore ."]); - }); -}); diff --git a/src/shared/runOrRestore.ts b/src/shared/runOrRestore.ts deleted file mode 100644 index f433aeae..00000000 --- a/src/shared/runOrRestore.ts +++ /dev/null @@ -1,95 +0,0 @@ -import * as prompts from "@clack/prompts"; -import chalk from "chalk"; -import { $ } from "execa"; - -import { - GetterDefaultInputValues, - InputValuesAndOctokit, - getInputValuesAndOctokit, -} from "./inputs.js"; -import { handlePromptCancel } from "./prompts.js"; - -export interface RunOrRestoreOptions { - args: string[]; - defaults?: Partial; - label: string; - run: (inputValuesAndOctokit: InputValuesAndOctokit) => Promise; -} - -export async function runOrRestore({ - args, - defaults, - label, - run, -}: RunOrRestoreOptions) { - console.clear(); - console.log( - chalk.greenBright`Welcome to the`, - chalk.bgGreenBright.black`template-typescript-node-package`, - chalk.greenBright(`package ${label} script! 🎉`), - ); - console.log(); - - let skipRestore = false; - - try { - prompts.intro( - chalk.blue( - "Let's collect some information to fill out repository details...", - ), - ); - - const { octokit, values } = await getInputValuesAndOctokit(args, defaults); - - skipRestore = values.skipRestore; - - await run({ octokit, values }); - - prompts.outro(chalk.blue`Great, looks like everything worked! 🎉`); - - console.log(chalk.blue`You may consider committing these changes:`); - console.log(); - console.log(chalk.gray`git add -A`); - console.log(chalk.gray(`git commit -m "chore: ${label} repo"`)); - console.log(chalk.gray`git push`); - console.log(); - console.log(chalk.greenBright`See ya! 👋`); - console.log(); - - return 0; - } catch (error) { - prompts.outro( - chalk.red`Looks like there was a problem. Correct it and try again? 😕`, - ); - - console.log(); - console.log(error); - - if (skipRestore) { - console.log(); - console.log( - chalk.gray`Skipping restoring local repository, as requested.`, - ); - console.log(); - } else { - const shouldRestore = await prompts.confirm({ - message: "Do you want to restore the repository to how it was?", - }); - - handlePromptCancel(shouldRestore); - - if (shouldRestore) { - console.log(); - console.log( - chalk.gray`Resetting repository using`, - chalk.reset`git restore .`, - ); - await $`git restore .`; - console.log("Repository is reset. Ready to try again?"); - console.log(); - } - } - - return 1; - } -} diff --git a/src/shared/types.ts b/src/shared/types.ts deleted file mode 100644 index a7b1246d..00000000 --- a/src/shared/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface AllContributorsData { - contributors: { contributions: string[]; login: string }[]; -} diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index 4f16ae39..00000000 --- a/src/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GreetOptions { - logger?: (message: string) => void; - message: string; - times?: number; -} diff --git a/tsconfig.json b/tsconfig.json index fab9df63..d6bc00fe 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,8 +3,9 @@ "declaration": true, "declarationMap": true, "esModuleInterop": true, - "module": "ESNext", - "moduleResolution": "NodeNext", + "module": "CommonJS", + "moduleResolution": "Node10", + "noEmit": true, "outDir": "lib", "resolveJsonModule": true, "skipLibCheck": true, diff --git a/tsup.config.ts b/tsup.config.ts index d33373a0..b9061687 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,10 +1,10 @@ import { defineConfig } from "tsup"; export default defineConfig({ - bundle: false, clean: true, dts: true, - entry: ["src/**/*.ts", "!src/**/*.test.*"], - format: "esm", + entry: ["src/index.ts"], + format: "cjs", outDir: "lib", + sourcemap: true, }); diff --git a/vitest.config.ts b/vitest.config.ts index 9b88e5cd..36fbb032 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -7,7 +7,6 @@ export default defineConfig({ all: true, exclude: ["lib"], include: ["src"], - provider: "istanbul", reporter: ["html", "lcov"], }, exclude: ["lib", "node_modules"], From 41e753e4cb848711679090bc30feea24d2f5a464 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 5 Sep 2023 23:57:52 -0400 Subject: [PATCH 2/4] set up readme --- .all-contributorsrc | 149 +----------------------------------- README.md | 183 ++++---------------------------------------- package.json | 2 +- 3 files changed, 18 insertions(+), 316 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index b487da76..3fee258e 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -5,157 +5,10 @@ "contributors": [ { "avatar_url": "https://avatars.githubusercontent.com/u/3335181?v=4", - "contributions": ["maintenance", "tool"], + "contributions": ["tool", "code", "bug", "ideas", "maintenance"], "login": "JoshuaKGoldberg", "name": "Josh Goldberg", "profile": "http://www.joshuakgoldberg.com" - }, - { - "login": "sinchang", - "name": "Jeff Wen", - "avatar_url": "https://avatars.githubusercontent.com/u/3297859?v=4", - "profile": "https://sinchang.me", - "contributions": ["code"] - }, - { - "login": "Pinjasaur", - "name": "Paul Esch-Laurent", - "avatar_url": "https://avatars.githubusercontent.com/u/6335792?v=4", - "profile": "https://paulisaweso.me/", - "contributions": ["code"] - }, - { - "login": "NazCodeland", - "name": "NazCodeland", - "avatar_url": "https://avatars.githubusercontent.com/u/113494366?v=4", - "profile": "https://github.com/NazCodeland", - "contributions": ["code"] - }, - { - "login": "johnnyreilly", - "name": "John Reilly", - "avatar_url": "https://avatars.githubusercontent.com/u/1010525?v=4", - "profile": "https://blog.johnnyreilly.com/", - "contributions": ["code"] - }, - { - "login": "webpro", - "name": "Lars Kappert", - "avatar_url": "https://avatars.githubusercontent.com/u/456426?v=4", - "profile": "https://webpro.nl", - "contributions": ["code"] - }, - { - "login": "RebeccaStevens", - "name": "Rebecca Stevens", - "avatar_url": "https://avatars.githubusercontent.com/u/7224206?v=4", - "profile": "https://github.com/RebeccaStevens", - "contributions": ["code", "infra"] - }, - { - "login": "ronthetech", - "name": "Ron Jean-Francois", - "avatar_url": "https://avatars.githubusercontent.com/u/105710107?v=4", - "profile": "http://ronjeanfrancois.com", - "contributions": ["code", "infra"] - }, - { - "login": "nowyDEV", - "name": "Dominik Nowik", - "avatar_url": "https://avatars.githubusercontent.com/u/12304307?v=4", - "profile": "https://github.com/nowyDEV", - "contributions": ["tool", "code"] - }, - { - "login": "TAKANOME-DEV", - "name": "takanomedev", - "avatar_url": "https://avatars.githubusercontent.com/u/79809121?v=4", - "profile": "https://github.com/TAKANOME-DEV", - "contributions": ["code"] - }, - { - "login": "emday4prez", - "name": "Emerson", - "avatar_url": "https://avatars.githubusercontent.com/u/35363144?v=4", - "profile": "https://github.com/emday4prez", - "contributions": ["code"] - }, - { - "login": "jsjoeio", - "name": "Joe Previte", - "avatar_url": "https://avatars.githubusercontent.com/u/3806031?v=4", - "profile": "https://typescriptcourse.com/tutorials", - "contributions": ["bug", "code"] - }, - { - "login": "navin-moorthy", - "name": "Navin Moorthy", - "avatar_url": "https://avatars.githubusercontent.com/u/39694575?v=4", - "profile": "https://navinmoorthy.me/", - "contributions": ["bug", "code"] - }, - { - "login": "garuna-m6", - "name": "Anurag", - "avatar_url": "https://avatars.githubusercontent.com/u/23234342?v=4", - "profile": "https://github.com/garuna-m6", - "contributions": ["code"] - }, - { - "login": "danielroe", - "name": "Daniel Roe", - "avatar_url": "https://avatars.githubusercontent.com/u/28706372?v=4", - "profile": "https://roe.dev/", - "contributions": ["code"] - }, - { - "login": "the-lazy-learner", - "name": "Sudhansu", - "avatar_url": "https://avatars.githubusercontent.com/u/13695177?v=4", - "profile": "https://github.com/the-lazy-learner", - "contributions": ["code"] - }, - { - "login": "RNR1", - "name": "Ron Braha", - "avatar_url": "https://avatars.githubusercontent.com/u/45559220?v=4", - "profile": "https://linktr.ee/ronbraha", - "contributions": ["code", "design", "test"] - }, - { - "login": "tungbq", - "name": "Tung Bui (Leo)", - "avatar_url": "https://avatars.githubusercontent.com/u/85242618?v=4", - "profile": "https://github.com/tungbq", - "contributions": ["code"] - }, - { - "login": "orta", - "name": "Orta Therox", - "avatar_url": "https://avatars.githubusercontent.com/u/49038?v=4", - "profile": "https://orta.io", - "contributions": ["code"] - }, - { - "login": "promise-dash", - "name": "Promise Dash", - "avatar_url": "https://avatars.githubusercontent.com/u/86062880?v=4", - "profile": "https://github.com/promise-dash", - "contributions": ["code"] - }, - { - "login": "jolg42", - "name": "Joël Galeran", - "avatar_url": "https://avatars.githubusercontent.com/u/1328733?v=4", - "profile": "https://twitter.com/Jolg42", - "contributions": ["code"] - }, - { - "login": "kristo-baricevic", - "name": "Kristo Baricevic", - "avatar_url": "https://avatars.githubusercontent.com/u/108290619?v=4", - "profile": "https://kristo-baricevic.github.io/", - "contributions": ["code"] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 096d087b..dffb654a 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@

sentences-per-line

-

Contributed markdownlint rule for limiting sentence per line. 📐

+

Contributed markdownlint rule for limiting sentences per line. 📐

-All Contributors: 22 +All Contributors: 1 @@ -26,154 +26,30 @@ TypeScript: Strict

-

A quickstart-friendly TypeScript template with comprehensive formatting, linting, releases, testing, and other great tooling built-in. ✨

- -

- - - -All Contributors: 22 🤝 - - - - - Codecov Test Coverage - - - Code of Conduct: Enforced 🤝 - - - License: MIT 📝 - - - Sponsor: On GitHub 💸 - - Style: Prettier 🧹 - TypeScript: Strict 💪 -

- -## Explainer - -This template is available for anybody who wants to set up a basic Node application using TypeScript. -It sets up the following tooling for you: - -- [**All Contributors**](https://allcontributors.org): Tracks various kinds of contributions and displays them in a nicely formatted table in the README.md. -- [**ESLint**](https://eslint.org): Static analysis for JavaScript code, configured with [typescript-eslint](https://typescript-eslint.io) for TypeScript code and other general-use plugins. -- [**Knip**](https://github.com/webpro/knip): Detects unused files, dependencies, and code exports. -- [**Markdownlint**](https://github.com/DavidAnson/markdownlint): Static analysis for Markdown code. -- [**pnpm**](https://pnpm.io): Disk-efficient package manager alternative. -- [**PR Compliance Action**](https://github.com/mtfoley/pr-compliance-action): Checks PRs for compliance such as addressing a linked issue and proper title formatting. -- [**Prettier**](https://prettier.io): Opinionated formatting for code, run on file save and as a Git commit hook via [husky](https://typicode.github.io/husky) and [lint-staged](https://github.com/okonet/lint-staged). -- [**release-it**](https://github.com/release-it/release-it): Generates changelogs, bumps the package version, and publishes to GitHub and npm based on [conventional commits](https://www.conventionalcommits.org). -- [**Renovate**](https://docs.renovatebot.com): Keeps dependencies up-to-date with PRs, configured to wait a few days after each update for safety. -- [**tsup**](https://tsup.egoist.dev): Builds output definitions and JavaScript files using [esbuild](https://esbuild.github.io). -- [**TypeScript**](https://typescriptlang.org): A typed superset of JavaScript, configured with strict compiler options. -- [**Vitest**](https://vitest.dev): Fast unit tests, configured with coverage tracking and [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test). - -## Setup - -This package comes with a bootstrap/initialization setup script that fills out your repository's details, installs necessary packages, then removes itself and uninstalls setup dependencies. - -First make sure you have the following installed: - -- [GitHub CLI](https://cli.github.com) _(you'll need to be logged in)_ -- [Node.js](https://nodejs.org) -- [pnpm](https://pnpm.io) - -To use this template: - -1. Click the [_Use this template_](https://github.com/JoshuaKGoldberg/template-typescript-node-package/generate) button to create a new repository with the same Git history -2. Open that repository, such as by [cloning it locally](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) or [developing in a codespace](https://docs.github.com/en/codespaces/developing-in-codespaces/developing-in-a-codespace) -3. Create two tokens in [repository secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets): - - `ACCESS_TOKEN`: A [GitHub PAT](https://github.com/settings/tokens/new) with _repo_ and _workflow_ permissions - - `NPM_TOKEN`: An [npm access token](https://docs.npmjs.com/creating-and-viewing-access-tokens/) with _Automation_ permissions -4. `pnpm install` -5. `pnpm run setup` to run the setup script -6. Install the [Codecov GitHub App](https://github.com/marketplace/codecov) and [Renovate GitHub App](https://github.com/marketplace/renovate) - -> The setup script removes the `## Explainer`, `## Setup`, and `## Repository Hydration` sections from this README.md. - -### Setup Options - -The setup script requires four options to fill out repository details. -It will interactively prompt for any that are not provided as a string CLI flag: - -1. `repository`: The kebab-case name of the repository (e.g. `template-typescript-node-package`) -2. `title`: Title Case title for the repository to be used in documentation (e.g. `Template TypeScript Node Package`) -3. `owner`: GitHub organization or user the repository is underneath (e.g. `JoshuaKGoldberg`) -4. `description`: Sentence case description of the repository (e.g. `A quickstart-friendly TypeScript package with lots of great repository tooling. ✨`) - -Additionally, a `--skip-api` boolean CLI flag may be specified to prevent the setup script from calling to GitHub APIs for repository hydration. -The script normally posts to GitHub APIs to set information such as repository description and branch protections on github.com. -Specifying `--skip-api` prevents those API calls, effectively limiting setup changes to local files in Git. -Doing so can be useful to preview what running setup does. - -For example, pre-populating all values and skipping API calls: - -```shell -pnpm run setup --repository "testing-repository" --title "Testing Title" --owner "TestingOwner" --description "Test Description" --skip-api -``` - -> Tip: after running `pnpm run setup` with `--skip-api`, you can always `git add -A; git reset --hard HEAD` to completely reset all changes. - -## Repository Hydration - -> **Warning** -> Hydration will override many files in your repository. -> You'll want to review each of the changes and make sure nothing important is removed. - -Alternately, if you have an existing repository that you'd like to give the files from this repository, you can run `template-typescript-node-package` in a repository to "hydrate" it. - -```shell -npx template-typescript-node-package -``` - -Repository settings will be auto-filled from the repository's files if possible, but can be provided manually as well: - -- `author` _(`string`)_: e.g. `"Josh Goldberg"` -- `description` _(`string`)_: e.g. `"A quickstart-friendly TypeScript template with comprehensive formatting, linting, releases, testing, and other great tooling built-in. ✨"` -- `email` _(`string`)_: e.g. `"git@joshuakgoldberg.com"` -- `funding` _(`string`, optional)_: e.g. `"JoshuaKGoldberg"` -- `owner` _(`string`)_: e.g. `"JoshuaKGoldberg"` -- `repository` _(`string`)_: e.g. `"template-typescript-node-package"` -- `title` _(`string`)_: e.g. `"Template TypeScript Node Package"` - -For example, providing a `funding` value different from the `author`: - -```shell -npx template-typescript-node-package --funding MyOrganization +```diff +- First sentence. Second sentence. ++ First sentence. ++ Second sentence. ``` -The hydration script by default will include all the features in this template. -You can disable some of them on the command-line: +In other words, sentences-per-line makes sure no line contains more than one sentence. +This is useful because: -- `releases` _(`boolean`)_: Whether to include automated package publishing -- `unitTests` _(`boolean`)_: Whether to include unit tests with code coverage tracking +- Shorter lines result in simpler, easier-to-understand Git diffs +- Longer lines are harder to read in source code -```shell -npx template-typescript-node-package --releases false --unitTests false -``` - -You can prevent the hydration script from making network-based changes using either or both of the following CLI flags: +## Usage -- `--skip-contributors` _(`boolean`)_: Skips detecting existing contributors with [`all-contributors-for-repository`](https://github.com/JoshuaKGoldberg/all-contributors-for-repository) -- `--skip-install` _(`boolean`)_: Skips installing all the new template packages with `pnpm` -- `--skip-setup` _(`boolean`)_: Skips running the setup script at the end of hydration +First install this package as a devDependency: ```shell -npx template-typescript-node-package --skip-install --skip-setup +npm i -D sentences-per-line ``` -## Usage +Then provide it to [markdownlint-cli's `--rules`](https://github.com/igorshubovych/markdownlint-cli): ```shell -npm i template-typescript-node-package -``` - -```ts -import { greet } from "template-typescript-node-package"; - -greet("Hello, world!"); +markdownlint --rules sentences-per-line ``` ## Development @@ -190,34 +66,7 @@ Thanks! 💖 - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Anurag
Anurag

💻
Daniel Roe
Daniel Roe

💻
Dominik Nowik
Dominik Nowik

🔧 💻
Emerson
Emerson

💻
Jeff Wen
Jeff Wen

💻
Joe Previte
Joe Previte

🐛 💻
John Reilly
John Reilly

💻
Josh Goldberg
Josh Goldberg

🚧 🔧
Joël Galeran
Joël Galeran

💻
Kristo Baricevic
Kristo Baricevic

💻
Lars Kappert
Lars Kappert

💻
Navin Moorthy
Navin Moorthy

🐛 💻
NazCodeland
NazCodeland

💻
Orta Therox
Orta Therox

💻
Paul Esch-Laurent
Paul Esch-Laurent

💻
Promise Dash
Promise Dash

💻
Rebecca Stevens
Rebecca Stevens

💻 🚇
Ron Braha
Ron Braha

💻 🎨 ⚠️
Ron Jean-Francois
Ron Jean-Francois

💻 🚇
Sudhansu
Sudhansu

💻
Tung Bui (Leo)
Tung Bui (Leo)

💻
takanomedev
takanomedev

💻
Josh Goldberg
Josh Goldberg

🔧 💻 🐛 🤔 🚧
diff --git a/package.json b/package.json index db3152ae..533aba7b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sentences-per-line", "version": "0.2.1", - "description": "Contributed markdownlint rule for limiting sentence per line. 📐", + "description": "Contributed markdownlint rule for limiting sentences per line. 📐", "repository": { "type": "git", "url": "https://github.com/JoshuaKGoldberg/sentences-per-line" From 03ac6b702c8f641dbeb0c659a6902e32cf70933a Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 6 Sep 2023 00:06:13 -0400 Subject: [PATCH 3/4] Removed more templating cruft --- .github/workflows/build.yml | 2 +- .github/workflows/hydrate.yml | 27 ------------- .github/workflows/setup.yml | 27 ------------- bin/hydrate.js | 3 -- script/hydrate-test-e2e.js | 76 ----------------------------------- script/setup-test-e2e.js | 55 ------------------------- 6 files changed, 1 insertion(+), 189 deletions(-) delete mode 100644 .github/workflows/hydrate.yml delete mode 100644 .github/workflows/setup.yml delete mode 100644 bin/hydrate.js delete mode 100644 script/hydrate-test-e2e.js delete mode 100644 script/setup-test-e2e.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 780e12b2..fd614fcd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ jobs: - uses: actions/checkout@v3 - uses: ./.github/actions/prepare - run: pnpm build - - run: node ./lib/index.js + - run: node ./lib/index.cjs name: Build diff --git a/.github/workflows/hydrate.yml b/.github/workflows/hydrate.yml deleted file mode 100644 index 6e700c8c..00000000 --- a/.github/workflows/hydrate.yml +++ /dev/null @@ -1,27 +0,0 @@ -jobs: - hydrate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: ./.github/actions/prepare - - run: pnpm run build - - run: pnpm run hydrate:test - - name: Codecov - uses: codecov/codecov-action@v3 - with: - files: coverage-hydrate/lcov.info - flags: hydrate - - if: always() - name: Archive code coverage results - uses: actions/upload-artifact@v3 - with: - path: coverage-hydrate - -name: Test Hydrate Script - -on: - pull_request: ~ - - push: - branches: - - main diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml deleted file mode 100644 index 27f18c6a..00000000 --- a/.github/workflows/setup.yml +++ /dev/null @@ -1,27 +0,0 @@ -jobs: - setup: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: ./.github/actions/prepare - - run: pnpm run build - - run: pnpm run setup:test - - name: Codecov - uses: codecov/codecov-action@v3 - with: - files: coverage-setup/lcov.info - flags: setup - - if: always() - name: Archive code coverage results - uses: actions/upload-artifact@v3 - with: - path: coverage-setup - -name: Test Setup Script - -on: - pull_request: ~ - - push: - branches: - - main diff --git a/bin/hydrate.js b/bin/hydrate.js deleted file mode 100644 index dd727b70..00000000 --- a/bin/hydrate.js +++ /dev/null @@ -1,3 +0,0 @@ -import { hydrate } from "../lib/hydrate/index.js"; - -process.exitCode = await hydrate(process.argv.slice(2)); diff --git a/script/hydrate-test-e2e.js b/script/hydrate-test-e2e.js deleted file mode 100644 index 6d148405..00000000 --- a/script/hydrate-test-e2e.js +++ /dev/null @@ -1,76 +0,0 @@ -import chalk from "chalk"; -import { $, execaCommand } from "execa"; - -import packageData from "../package.json" assert { type: "json" }; - -const { description, name: repository } = packageData; -const owner = "JoshuaKGoldberg"; -const title = "Template TypeScript Node Package"; - -await $({ - stdio: "inherit", -})`c8 -o ./coverage-hydrate -r html -r lcov node ./bin/hydrate.js --description ${description} --owner ${owner} --title ${title} --repository ${repository} --skip-api --skip-contributors --skip-install --skip-setup`; - -const { stdout: gitStatus } = await $`git status`; -console.log(`Stdout from running \`git status\`:\n${gitStatus}`); - -const indexOfUnstagedFilesMessage = gitStatus.indexOf( - "Changes not staged for commit:", -); -if (indexOfUnstagedFilesMessage === -1) { - throw new Error( - `Looks like hydrate didn't cause any file changes? That's ...probably incorrect? 😬`, - ); -} - -const filesExpectedToBeChanged = new Set([ - ".all-contributorsrc", - "README.md", - "knip.jsonc", - "package.json", - "pnpm-lock.yaml", - ".eslintignore", - ".eslintrc.cjs", - ".github/DEVELOPMENT.md", - ".github/workflows/release.yml", - ".github/workflows/lint.yml", - ".github/workflows/lint-knip.yml", - ".github/workflows/test.yml", - ".gitignore", - ".prettierignore", - ".release-it.json", - "cspell.json", -]); - -const unstagedModifiedFiles = gitStatus - .slice(indexOfUnstagedFilesMessage) - .match(/modified: {3}(\S+)\n/g) - .map((match) => match.split(/\s+/g)[1]) - .filter((filePath) => !filesExpectedToBeChanged.has(filePath)); - -console.log("Unexpected modified files are:", unstagedModifiedFiles); - -if (unstagedModifiedFiles.length) { - const gitDiffCommand = `git diff HEAD -- ${unstagedModifiedFiles.join(" ")}`; - console.log( - `Stdout from running \`${gitDiffCommand}\`:\n${ - (await execaCommand(gitDiffCommand)).stdout - }`, - ); - console.error( - [ - "", - "Oh no! Running the hydrate script modified some files:", - ...unstagedModifiedFiles.map((filePath) => ` - ${filePath}`), - "", - "That likely indicates changes made to the repository without", - "corresponding updates to templates in src/hydrate/creation.", - "", - "Please search for those file(s)' name(s) under src/hydrate for", - "the corresponding template and update those as well.", - ] - .map((line) => chalk.red(line)) - .join("\n"), - ); - process.exitCode = 1; -} diff --git a/script/setup-test-e2e.js b/script/setup-test-e2e.js deleted file mode 100644 index ecc83663..00000000 --- a/script/setup-test-e2e.js +++ /dev/null @@ -1,55 +0,0 @@ -import { $ } from "execa"; -import { globby } from "globby"; -import { strict as assert } from "node:assert"; -import fs from "node:fs/promises"; - -const description = "New Description Test"; -const owner = "RNR1"; -const title = "New Title Test"; -const repository = "new-repository-test"; - -// First we run setup to modifies the local repo, so we can test the changes -await $({ - stdio: "inherit", -})`node ./lib/setup/index.js --description ${description} --owner ${owner} --title ${title} --repository ${repository} --skip-api --skip-restore`; - -const newPackageJson = JSON.parse( - (await fs.readFile("./package.json")).toString(), -); -console.log("New package JSON:", newPackageJson); - -assert.equal(newPackageJson.description, description); -assert.equal(newPackageJson.name, repository); - -const files = await globby(["*.*", "**/*.*"], { - gitignore: true, - ignoreFiles: ["script/setup.js", "script/setup-test-e2e.js"], -}); - -for (const search of [ - `/JoshuaKGoldberg/`, - "template-typescript-node-package", -]) { - const { stdout } = await $`grep -i ${search} ${files}`; - assert.equal( - stdout, - `README.md:> 💙 This package is based on [@JoshuaKGoldberg](https://github.com/JoshuaKGoldberg)'s [template-typescript-node-package](https://github.com/JoshuaKGoldberg/template-typescript-node-package).`, - ); -} - -try { - await $`pnpm run lint:knip`; -} catch (error) { - console.error("Error running lint:knip:", error); - process.exitCode = 1; -} - -// Now that setup has passed normal steps, we reset everything, -// then run again without removing files - so we can capture test coverage -await $`git add -A`; -await $`git reset --hard HEAD`; -await $`pnpm i`; -await $`pnpm run build`; -await $({ - stdio: "inherit", -})`c8 -o ./coverage-setup -r html -r lcov node ./lib/setup/index.js --description ${description} --owner ${owner} --title ${title} --repository ${repository} --skip-api --skip-removal --skip-restore`; From 632f2c840234d28c78cb702b493e25d244225299 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sun, 12 Nov 2023 16:23:19 -0500 Subject: [PATCH 4/4] Bumped to the latest tooling version --- .all-contributorsrc | 2 +- .eslintrc.cjs | 19 +- .github/CODE_OF_CONDUCT.md | 2 +- .github/CONTRIBUTING.md | 10 +- .github/DEVELOPMENT.md | 4 +- .github/SECURITY.md | 2 +- .github/actions/prepare/action.yml | 2 +- .github/renovate.json | 4 +- .../workflows/accessibility-alt-text-bot.yml | 25 + .github/workflows/build.yml | 4 +- .github/workflows/contributors.yml | 2 +- .github/workflows/lint-knip.yml | 2 +- .github/workflows/lint-markdown.yml | 2 +- .github/workflows/lint-package-json.yml | 2 +- .github/workflows/lint-packages.yml | 2 +- .github/workflows/lint-spelling.yml | 2 +- .github/workflows/lint.yml | 3 +- .github/workflows/post-release.yml | 2 +- .github/workflows/prettier.yml | 2 +- .github/workflows/release.yml | 69 +- .github/workflows/test.yml | 10 +- .github/workflows/tsc.yml | 2 +- .nvmrc | 2 +- .prettierignore | 1 + .release-it.json | 7 + README.md | 12 +- package.json | 66 +- pnpm-lock.yaml | 2248 ++++++++++------- tsup.config.ts | 2 +- 29 files changed, 1444 insertions(+), 1068 deletions(-) create mode 100644 .github/workflows/accessibility-alt-text-bot.yml diff --git a/.all-contributorsrc b/.all-contributorsrc index 3fee258e..0c7013c9 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1,5 +1,5 @@ { - "badgeTemplate": "\"All\" src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>-21bb42.svg\" />", + "badgeTemplate": "\"All 👪\" src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>_👪-21bb42.svg\" />", "commit": false, "commitConvention": "angular", "contributors": [ diff --git a/.eslintrc.cjs b/.eslintrc.cjs index a08ecefe..64ea426f 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -10,7 +10,7 @@ module.exports = { "plugin:n/recommended", "plugin:perfectionist/recommended-natural", "plugin:regexp/recommended", - "prettier", + "plugin:vitest/recommended", ], overrides: [ { @@ -43,6 +43,15 @@ module.exports = { "jsdoc/require-returns": "off", }, }, + { + files: "**/*.md/*.ts", + rules: { + "n/no-missing-import": [ + "error", + { allowModules: ["sentences-per-line"] }, + ], + }, + }, { excludedFiles: ["**/*.md/*.ts"], extends: [ @@ -62,6 +71,7 @@ module.exports = { allowConstantLoopConditions: true, }, ], + // These off-by-default rules work well for this repo and we like them on. "deprecation/deprecation": "error", }, @@ -89,7 +99,6 @@ module.exports = { "@typescript-eslint/no-unsafe-call": "off", }, }, - { extends: ["plugin:yml/standard", "plugin:yml/prettier"], files: ["**/*.{yml,yaml}"], @@ -117,7 +126,6 @@ module.exports = { plugins: [ "@typescript-eslint", "deprecation", - "import", "jsdoc", "no-only-tests", "perfectionist", @@ -129,20 +137,21 @@ module.exports = { rules: { // These off/less-strict-by-default rules work well for this repo and we like them on. "@typescript-eslint/no-unused-vars": ["error", { caughtErrors: "all" }], - "import/extensions": ["error", "ignorePackages"], "no-only-tests/no-only-tests": "error", // These on-by-default rules don't work well for this repo and we like them off. - "n/no-missing-import": "off", "no-case-declarations": "off", "no-constant-condition": "off", "no-inner-declarations": "off", + "no-mixed-spaces-and-tabs": "off", // Stylistic concerns that don't interfere with Prettier "@typescript-eslint/padding-line-between-statements": [ "error", { blankLine: "always", next: "*", prev: "block-like" }, ], + "no-useless-rename": "error", + "object-shorthand": "error", "perfectionist/sort-objects": [ "error", { diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 527e3f5c..fa256b83 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -npm@joshuakgoldberg.com. +github@joshuakgoldberg.com. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 411e0280..8c8624ac 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -22,8 +22,8 @@ There are two steps involved: ### Finding an Issue -With the exception of very small typos, all changes to this repository generally need to correspond to an [open issue marked as `accepting prs` on the issue tracker](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22). -If this is your first time contributing, consider searching for [unassigned issues that also have the `good first issue` label](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aopen+is%3Aissue+label%3A%22accepting+prs%22+label%3A%22good+first+issue%22+no%3Aassignee). +With the exception of very small typos, all changes to this repository generally need to correspond to an [unassigned open issue marked as `status: accepting prs` on the issue tracker](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+accepting+prs%22+no%3Aassignee+). +If this is your first time contributing, consider searching for [unassigned issues that also have the `good first issue` label](https://github.com/JoshuaKGoldberg/sentences-per-line/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22+label%3A%22status%3A+accepting+prs%22+no%3Aassignee+). If the issue you'd like to fix isn't found on the issue, see [Reporting Issues](#reporting-issues) for filing your own (please do!). #### Issue Claiming @@ -31,15 +31,15 @@ If the issue you'd like to fix isn't found on the issue, see [Reporting Issues]( We don't use any kind of issue claiming system. We've found in the past that they result in accidental ["licked cookie"](https://devblogs.microsoft.com/oldnewthing/20091201-00/?p=15843) situations where contributors claim an issue but run out of time or energy trying before sending a PR. -If an issue has been marked as `accepting prs` and an open PR does not exist, feel free to send a PR. -You don't need to ask for permission. +If an unassigned issue has been marked as `status: accepting prs` and an open PR does not exist, feel free to send a PR. +Please don't post comments asking for permission or stating you will work on an issue. ### Sending a Pull Request Once you've identified an open issue accepting PRs that doesn't yet have a PR sent, you're free to send a pull request. Be sure to fill out the pull request template's requested information -- otherwise your PR will likely be closed. -PRs are also expected to have a title that adheres to [commitlint](https://github.com/conventional-changelog/commitlint). +PRs are also expected to have a title that adheres to [conventional commits](https://www.conventionalcommits.org/en/v1.0.0). Only PR titles need to be in that format, not individual commits. Don't worry if you get this wrong: you can always change the PR title after sending it. Check [previously merged PRs](https://github.com/JoshuaKGoldberg/sentences-per-line/pulls?q=is%3Apr+is%3Amerged+-label%3Adependencies+) for reference. diff --git a/.github/DEVELOPMENT.md b/.github/DEVELOPMENT.md index a5ec6d8e..02cad25a 100644 --- a/.github/DEVELOPMENT.md +++ b/.github/DEVELOPMENT.md @@ -33,7 +33,7 @@ It should be applied automatically when you save files in VS Code or make a Git To manually reformat all files, you can run: ```shell -pnpm format:write +pnpm format --write ``` ## Linting @@ -56,6 +56,8 @@ For example, ESLint can be run with `--fix` to auto-fix some lint rule complaint pnpm run lint --fix ``` +Note that you'll likely need to run `pnpm build` before `pnpm lint` so that lint rules which check the file system can pick up on any built files. + ## Testing [Vitest](https://vitest.dev) is used for tests. diff --git a/.github/SECURITY.md b/.github/SECURITY.md index c0c143f0..5ea3d619 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -4,6 +4,6 @@ We take all security vulnerabilities seriously. If you have a vulnerability or other security issues to disclose: - Thank you very much, please do! -- Please send them to us by emailing `npm@joshuakgoldberg.com` +- Please send them to us by emailing `github@joshuakgoldberg.com` We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. diff --git a/.github/actions/prepare/action.yml b/.github/actions/prepare/action.yml index c15700d5..c8d87aaf 100644 --- a/.github/actions/prepare/action.yml +++ b/.github/actions/prepare/action.yml @@ -5,7 +5,7 @@ name: Prepare runs: steps: - uses: pnpm/action-setup@v2 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: cache: pnpm node-version: "18" diff --git a/.github/renovate.json b/.github/renovate.json index a5cfe151..639a1461 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -3,6 +3,6 @@ "automerge": true, "internalChecksFilter": "strict", "labels": ["dependencies"], - "postUpdateOptions": ["pnpmDedupe"], - "stabilityDays": 3 + "minimumReleaseAge": "3 days", + "postUpdateOptions": ["pnpmDedupe"] } diff --git a/.github/workflows/accessibility-alt-text-bot.yml b/.github/workflows/accessibility-alt-text-bot.yml new file mode 100644 index 00000000..bba5c6af --- /dev/null +++ b/.github/workflows/accessibility-alt-text-bot.yml @@ -0,0 +1,25 @@ +jobs: + accessibility_alt_text_bot: + runs-on: ubuntu-latest + steps: + - uses: github/accessibility-alt-text-bot@v1.4.0 + +name: Accessibility Alt Text Bot + +on: + issue_comment: + types: + - created + - edited + issues: + types: + - edited + - opened + pull_request: + types: + - edited + - opened + +permissions: + issues: write + pull-requests: write diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd614fcd..057fc542 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,10 +2,10 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm build - - run: node ./lib/index.cjs + - run: node ./lib/index.js name: Build diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml index 5e5b8381..c148046f 100644 --- a/.github/workflows/contributors.yml +++ b/.github/workflows/contributors.yml @@ -2,7 +2,7 @@ jobs: contributors: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: ./.github/actions/prepare diff --git a/.github/workflows/lint-knip.yml b/.github/workflows/lint-knip.yml index 37aed604..781d52ef 100644 --- a/.github/workflows/lint-knip.yml +++ b/.github/workflows/lint-knip.yml @@ -2,7 +2,7 @@ jobs: lint_knip: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm lint:knip diff --git a/.github/workflows/lint-markdown.yml b/.github/workflows/lint-markdown.yml index 0c34d833..acac714d 100644 --- a/.github/workflows/lint-markdown.yml +++ b/.github/workflows/lint-markdown.yml @@ -2,7 +2,7 @@ jobs: lint_markdown: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm lint:md diff --git a/.github/workflows/lint-package-json.yml b/.github/workflows/lint-package-json.yml index e0aba606..d5a8cd39 100644 --- a/.github/workflows/lint-package-json.yml +++ b/.github/workflows/lint-package-json.yml @@ -2,7 +2,7 @@ jobs: lint_package_json: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm lint:package-json diff --git a/.github/workflows/lint-packages.yml b/.github/workflows/lint-packages.yml index 87543683..87520cac 100644 --- a/.github/workflows/lint-packages.yml +++ b/.github/workflows/lint-packages.yml @@ -2,7 +2,7 @@ jobs: lint_packages: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm lint:packages diff --git a/.github/workflows/lint-spelling.yml b/.github/workflows/lint-spelling.yml index 24bba656..ef020b62 100644 --- a/.github/workflows/lint-spelling.yml +++ b/.github/workflows/lint-spelling.yml @@ -2,7 +2,7 @@ jobs: lint_spelling: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm lint:spelling diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e84889b8..49b2ba34 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,8 +2,9 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare + - run: pnpm build || true - run: pnpm lint name: Lint diff --git a/.github/workflows/post-release.yml b/.github/workflows/post-release.yml index b10abd9e..d424f75c 100644 --- a/.github/workflows/post-release.yml +++ b/.github/workflows/post-release.yml @@ -2,7 +2,7 @@ jobs: post_release: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - run: echo "npm_version=$(npm pkg get version | tr -d '"')" >> "$GITHUB_ENV" diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 06b7b11a..ae43fc44 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -2,7 +2,7 @@ jobs: prettier: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm format --list-different diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 54ff1e20..f1f8e392 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,81 +1,20 @@ concurrency: - cancel-in-progress: true group: ${{ github.workflow }} jobs: release: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 + ref: main - uses: ./.github/actions/prepare - run: pnpm build - - run: git config user.name "${GITHUB_ACTOR}" - - run: git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" - - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN - - name: Delete branch protection on main - uses: actions/github-script@v6.4.1 - with: - github-token: ${{ secrets.ACCESS_TOKEN }} - script: | - try { - await github.request( - `DELETE /repos/JoshuaKGoldberg/sentences-per-line/branches/main/protection`, - ); - } catch (error) { - if (!error.message?.includes?.("Branch not protected")) { - throw error; - } - } - env: GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} - run: | - if pnpm run should-semantic-release ; then - pnpm release-it --verbose - gh workflow run post-release.yml - fi - - if: always() - name: Recreate branch protection on main - uses: actions/github-script@v6.4.1 - with: - github-token: ${{ secrets.ACCESS_TOKEN }} - script: | - github.request( - `PUT /repos/JoshuaKGoldberg/sentences-per-line/branches/main/protection`, - { - allow_deletions: false, - allow_force_pushes: true, - allow_fork_pushes: false, - allow_fork_syncing: true, - block_creations: false, - branch: "main", - enforce_admins: false, - owner: "JoshuaKGoldberg", - repo: "sentences-per-line", - required_conversation_resolution: true, - required_linear_history: false, - required_pull_request_reviews: null, - required_status_checks: { - checks: [ - { context: "build" }, - { context: "compliance" }, - { context: "lint" }, - { context: "lint_knip" }, - { context: "lint_markdown" }, - { context: "lint_package_json" }, - { context: "lint_packages" }, - { context: "lint_spelling" }, - { context: "prettier" }, - { context: "test" }, - ], - strict: false, - }, - restrictions: null, - } - ); + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + uses: JoshuaKGoldberg/release-it-action@v0.2.2 name: Release diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f45ba0ca..0c7400b5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,19 +2,11 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm run test --coverage - name: Codecov uses: codecov/codecov-action@v3 - with: - flags: unit - - if: always() - name: Archive code coverage results - uses: actions/upload-artifact@v3 - with: - name: code-coverage-report - path: coverage name: Test diff --git a/.github/workflows/tsc.yml b/.github/workflows/tsc.yml index 0e11a07c..3b20f242 100644 --- a/.github/workflows/tsc.yml +++ b/.github/workflows/tsc.yml @@ -2,7 +2,7 @@ jobs: type_check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ./.github/actions/prepare - run: pnpm tsc diff --git a/.nvmrc b/.nvmrc index 4a1f488b..f3f52b42 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.17.1 +20.9.0 diff --git a/.prettierignore b/.prettierignore index 37616903..32ca0f25 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,4 @@ +.all-contributorsrc coverage/ lib/ pnpm-lock.yaml diff --git a/.release-it.json b/.release-it.json index 0367a363..2b95facc 100644 --- a/.release-it.json +++ b/.release-it.json @@ -7,5 +7,12 @@ "autoGenerate": true, "release": true, "releaseName": "v${version}" + }, + "npm": { "publishArgs": ["--access public", "--provenance"] }, + "plugins": { + "@release-it/conventional-changelog": { + "infile": "CHANGELOG.md", + "preset": "angular" + } } } diff --git a/README.md b/README.md index dffb654a..a341ab03 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ -All Contributors: 1 +All Contributors: 1 👪 - + Codecov Test Coverage @@ -24,6 +24,8 @@ Style: Prettier TypeScript: Strict + npm package version + Contributor Covenant

```diff @@ -66,7 +68,7 @@ Thanks! 💖 - +
Josh Goldberg
Josh Goldberg

🔧 💻 🐛 🤔 🚧
Josh Goldberg
Josh Goldberg

🔧 🚧
@@ -77,6 +79,4 @@ Thanks! 💖 - - -> 💙 This package is based on [@JoshuaKGoldberg](https://github.com/JoshuaKGoldberg)'s [sentences-per-line](https://github.com/JoshuaKGoldberg/sentences-per-line). +> 💙 This package was templated with [create-typescript-app](https://github.com/JoshuaKGoldberg/create-typescript-app). diff --git a/package.json b/package.json index 533aba7b..fe83d14b 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,18 @@ "name": "JoshuaKGoldberg", "email": "npm@joshuakgoldberg.com" }, - "type": "module", - "main": "./lib/index.cjs", + "type": "commonjs", + "exports": { + ".": { + "types": { + "import": "./lib/index.d.mts", + "require": "./lib/index.d.ts" + }, + "import": "./lib/index.mjs", + "require": "./lib/index.js" + } + }, + "main": "./lib/index.js", "files": [ "lib/", "package.json", @@ -22,7 +32,6 @@ "scripts": { "build": "tsup", "format": "prettier \"**/*\" --ignore-unknown", - "format:write": "pnpm format --write", "lint": "eslint . .*js --max-warnings 0 --report-unused-disable-directives", "lint:knip": "knip", "lint:md": "markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line", @@ -41,44 +50,43 @@ "markdownlint-rule-helpers": "^0.21.0" }, "devDependencies": { - "@types/eslint": "^8.44.2", + "@release-it/conventional-changelog": "^8.0.1", + "@types/eslint": "^8.44.7", "@types/markdownlint-rule-helpers": "^0.21.0", - "@typescript-eslint/eslint-plugin": "^6.6.0", - "@typescript-eslint/parser": "^6.6.0", - "@vitest/coverage-v8": "^0.34.3", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", + "@vitest/coverage-v8": "^0.34.6", "console-fail-test": "^0.2.3", - "cspell": "^7.3.2", - "eslint": "^8.48.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-deprecation": "^1.5.0", + "cspell": "^8.0.0", + "eslint": "^8.53.0", + "eslint-plugin-deprecation": "^2.0.0", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsdoc": "^46.5.1", - "eslint-plugin-jsonc": "^2.9.0", + "eslint-plugin-jsdoc": "^46.9.0", + "eslint-plugin-jsonc": "^2.10.0", "eslint-plugin-markdown": "^3.0.1", - "eslint-plugin-n": "^16.0.2", + "eslint-plugin-n": "^16.3.1", "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-perfectionist": "^1.5.1", - "eslint-plugin-regexp": "^1.15.0", - "eslint-plugin-vitest": "^0.3.1", - "eslint-plugin-yml": "^1.8.0", + "eslint-plugin-perfectionist": "^2.3.0", + "eslint-plugin-regexp": "^2.1.1", + "eslint-plugin-vitest": "^0.3.9", + "eslint-plugin-yml": "^1.10.0", "husky": "^8.0.3", - "jsonc-eslint-parser": "^2.3.0", - "knip": "2.21.2", - "lint-staged": "^14.0.1", - "markdownlint": "^0.30.0", - "markdownlint-cli": "^0.36.0", - "npm-package-json-lint": "^7.0.0", + "jsonc-eslint-parser": "^2.4.0", + "knip": "2.41.0", + "lint-staged": "^15.1.0", + "markdownlint": "^0.31.1", + "markdownlint-cli": "^0.37.0", + "npm-package-json-lint": "^7.1.0", "npm-package-json-lint-config-default": "^6.0.0", "prettier": "^3.0.3", "prettier-plugin-curly": "^0.1.3", - "prettier-plugin-packagejson": "^2.4.5", - "release-it": "^16.1.5", + "prettier-plugin-packagejson": "^2.4.6", + "release-it": "^17.0.0", "sentences-per-line": "^0.2.1", - "should-semantic-release": "^0.1.1", + "should-semantic-release": "^0.2.1", "tsup": "^7.2.0", "typescript": "^5.2.2", - "vitest": "^0.34.3", + "vitest": "^0.34.6", "yaml-eslint-parser": "^1.2.2" }, "packageManager": "pnpm@8.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1e7fe7e..8c41472f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,93 +10,90 @@ dependencies: version: 0.21.0 devDependencies: + '@release-it/conventional-changelog': + specifier: ^8.0.1 + version: 8.0.1(release-it@17.0.0) '@types/eslint': - specifier: ^8.44.2 - version: 8.44.2 + specifier: ^8.44.7 + version: 8.44.7 '@types/markdownlint-rule-helpers': specifier: ^0.21.0 version: 0.21.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.10.0 + version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.6.0 - version: 6.6.0(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.10.0 + version: 6.10.0(eslint@8.53.0)(typescript@5.2.2) '@vitest/coverage-v8': - specifier: ^0.34.3 - version: 0.34.3(vitest@0.34.3) + specifier: ^0.34.6 + version: 0.34.6(vitest@0.34.6) console-fail-test: specifier: ^0.2.3 version: 0.2.3 cspell: - specifier: ^7.3.2 - version: 7.3.2 + specifier: ^8.0.0 + version: 8.0.0 eslint: - specifier: ^8.48.0 - version: 8.48.0 - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.48.0) + specifier: ^8.53.0 + version: 8.53.0 eslint-plugin-deprecation: - specifier: ^1.5.0 - version: 1.5.0(eslint@8.48.0)(typescript@5.2.2) + specifier: ^2.0.0 + version: 2.0.0(eslint@8.53.0)(typescript@5.2.2) eslint-plugin-eslint-comments: specifier: ^3.2.0 - version: 3.2.0(eslint@8.48.0) - eslint-plugin-import: - specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.48.0) + version: 3.2.0(eslint@8.53.0) eslint-plugin-jsdoc: - specifier: ^46.5.1 - version: 46.5.1(eslint@8.48.0) + specifier: ^46.9.0 + version: 46.9.0(eslint@8.53.0) eslint-plugin-jsonc: - specifier: ^2.9.0 - version: 2.9.0(eslint@8.48.0) + specifier: ^2.10.0 + version: 2.10.0(eslint@8.53.0) eslint-plugin-markdown: specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0) + version: 3.0.1(eslint@8.53.0) eslint-plugin-n: - specifier: ^16.0.2 - version: 16.0.2(eslint@8.48.0) + specifier: ^16.3.1 + version: 16.3.1(eslint@8.53.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-perfectionist: - specifier: ^1.5.1 - version: 1.5.1(eslint@8.48.0)(typescript@5.2.2) + specifier: ^2.3.0 + version: 2.3.0(eslint@8.53.0)(typescript@5.2.2) eslint-plugin-regexp: - specifier: ^1.15.0 - version: 1.15.0(eslint@8.48.0) + specifier: ^2.1.1 + version: 2.1.1(eslint@8.53.0) eslint-plugin-vitest: - specifier: ^0.3.1 - version: 0.3.1(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(vitest@0.34.3) + specifier: ^0.3.9 + version: 0.3.9(@typescript-eslint/eslint-plugin@6.10.0)(eslint@8.53.0)(typescript@5.2.2)(vitest@0.34.6) eslint-plugin-yml: - specifier: ^1.8.0 - version: 1.8.0(eslint@8.48.0) + specifier: ^1.10.0 + version: 1.10.0(eslint@8.53.0) husky: specifier: ^8.0.3 version: 8.0.3 jsonc-eslint-parser: - specifier: ^2.3.0 - version: 2.3.0 + specifier: ^2.4.0 + version: 2.4.0 knip: - specifier: 2.21.2 - version: 2.21.2 + specifier: 2.41.0 + version: 2.41.0 lint-staged: - specifier: ^14.0.1 - version: 14.0.1 + specifier: ^15.1.0 + version: 15.1.0 markdownlint: - specifier: ^0.30.0 - version: 0.30.0 + specifier: ^0.31.1 + version: 0.31.1 markdownlint-cli: - specifier: ^0.36.0 - version: 0.36.0 + specifier: ^0.37.0 + version: 0.37.0 npm-package-json-lint: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^7.1.0 + version: 7.1.0(typescript@5.2.2) npm-package-json-lint-config-default: specifier: ^6.0.0 - version: 6.0.0(npm-package-json-lint@7.0.0) + version: 6.0.0(npm-package-json-lint@7.1.0) prettier: specifier: ^3.0.3 version: 3.0.3 @@ -104,17 +101,17 @@ devDependencies: specifier: ^0.1.3 version: 0.1.3(prettier@3.0.3) prettier-plugin-packagejson: - specifier: ^2.4.5 - version: 2.4.5(prettier@3.0.3) + specifier: ^2.4.6 + version: 2.4.6(prettier@3.0.3) release-it: - specifier: ^16.1.5 - version: 16.1.5 + specifier: ^17.0.0 + version: 17.0.0(typescript@5.2.2) sentences-per-line: specifier: ^0.2.1 version: 0.2.1 should-semantic-release: - specifier: ^0.1.1 - version: 0.1.1 + specifier: ^0.2.1 + version: 0.2.1 tsup: specifier: ^7.2.0 version: 7.2.0(typescript@5.2.2) @@ -122,8 +119,8 @@ devDependencies: specifier: ^5.2.2 version: 5.2.2 vitest: - specifier: ^0.34.3 - version: 0.34.3 + specifier: ^0.34.6 + version: 0.34.6 yaml-eslint-parser: specifier: ^1.2.2 version: 1.2.2 @@ -254,18 +251,18 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@cspell/cspell-bundled-dicts@7.3.2: - resolution: {integrity: sha512-mmb9gi2/jTj983ijgVsdsQ4FM5Bv/lKslgJt4jDUm6SOtQYW4geCJNl5/MbMzcMQUWSJouS0w4C55AyrJmq0iw==} - engines: {node: '>=16'} + /@cspell/cspell-bundled-dicts@8.0.0: + resolution: {integrity: sha512-Phbb1ij1TQQuqxuuvxf5P6fvV9U+EVoATNLmDqFHvRZfUyuhgbJuCMzIPeBx4GfTTDWlPs51FYRvZ/Q8xBHsyA==} + engines: {node: '>=18'} dependencies: '@cspell/dict-ada': 4.0.2 '@cspell/dict-aws': 4.0.0 - '@cspell/dict-bash': 4.1.1 - '@cspell/dict-companies': 3.0.21 - '@cspell/dict-cpp': 5.0.4 + '@cspell/dict-bash': 4.1.2 + '@cspell/dict-companies': 3.0.27 + '@cspell/dict-cpp': 5.0.9 '@cspell/dict-cryptocurrencies': 4.0.0 '@cspell/dict-csharp': 4.0.2 - '@cspell/dict-css': 4.0.7 + '@cspell/dict-css': 4.0.12 '@cspell/dict-dart': 2.0.3 '@cspell/dict-django': 4.1.0 '@cspell/dict-docker': 1.1.7 @@ -273,67 +270,68 @@ packages: '@cspell/dict-elixir': 4.0.3 '@cspell/dict-en-common-misspellings': 1.0.2 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.7 - '@cspell/dict-filetypes': 3.0.1 + '@cspell/dict-en_us': 4.3.11 + '@cspell/dict-filetypes': 3.0.2 '@cspell/dict-fonts': 4.0.0 - '@cspell/dict-fsharp': 1.0.0 + '@cspell/dict-fsharp': 1.0.1 '@cspell/dict-fullstack': 3.1.5 '@cspell/dict-gaming-terms': 1.0.4 '@cspell/dict-git': 2.0.0 - '@cspell/dict-golang': 6.0.2 + '@cspell/dict-golang': 6.0.4 '@cspell/dict-haskell': 4.0.1 - '@cspell/dict-html': 4.0.3 + '@cspell/dict-html': 4.0.5 '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.5 - '@cspell/dict-k8s': 1.0.1 + '@cspell/dict-java': 5.0.6 + '@cspell/dict-k8s': 1.0.2 '@cspell/dict-latex': 4.0.0 '@cspell/dict-lorem-ipsum': 4.0.0 - '@cspell/dict-lua': 4.0.1 - '@cspell/dict-node': 4.0.2 - '@cspell/dict-npm': 5.0.8 - '@cspell/dict-php': 4.0.2 + '@cspell/dict-lua': 4.0.2 + '@cspell/dict-makefile': 1.0.0 + '@cspell/dict-node': 4.0.3 + '@cspell/dict-npm': 5.0.12 + '@cspell/dict-php': 4.0.4 '@cspell/dict-powershell': 5.0.2 - '@cspell/dict-public-licenses': 2.0.3 - '@cspell/dict-python': 4.1.7 + '@cspell/dict-public-licenses': 2.0.5 + '@cspell/dict-python': 4.1.10 '@cspell/dict-r': 2.0.1 - '@cspell/dict-ruby': 5.0.0 + '@cspell/dict-ruby': 5.0.1 '@cspell/dict-rust': 4.0.1 '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.2.2 - '@cspell/dict-sql': 2.1.1 + '@cspell/dict-software-terms': 3.3.9 + '@cspell/dict-sql': 2.1.2 '@cspell/dict-svelte': 1.0.2 '@cspell/dict-swift': 2.0.1 - '@cspell/dict-typescript': 3.1.1 + '@cspell/dict-typescript': 3.1.2 '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-json-reporter@7.3.2: - resolution: {integrity: sha512-5j1CX2OXkQGO3ljMBzfHjDzEiixodjfxVGR3VKkQX1vxTUMTIkPgt4BsgOVCQtqTiO21Dd2Bzn+H0/Jf4OL37g==} - engines: {node: '>=16'} + /@cspell/cspell-json-reporter@8.0.0: + resolution: {integrity: sha512-1ltK5N4xMGWjDSIkU+GJd3rXV8buXgO/lAgnpM1RhKWqAmG+u0k6pnhk2vIo/4qZQpgfK0l3J3h/Ky2FcE95vA==} + engines: {node: '>=18'} dependencies: - '@cspell/cspell-types': 7.3.2 + '@cspell/cspell-types': 8.0.0 dev: true - /@cspell/cspell-pipe@7.3.2: - resolution: {integrity: sha512-ZKOkb6IxuEXRXtjVAlZ41+4SXhyiGqrQ3FW16iZlCbM9Mp9WJAw2MOVh6wvpXmfKcM5/3jK1A4rFylB7b0QBHw==} - engines: {node: '>=16'} + /@cspell/cspell-pipe@8.0.0: + resolution: {integrity: sha512-1MH+9q3AmbzwK1BYhSGla8e4MAAYzzPApGvv8eyv0rWDmgmDTkGqJPTTvYj1wFvll5ximQ5OolpPQGv3JoWvtQ==} + engines: {node: '>=18'} dev: true - /@cspell/cspell-resolver@7.3.2: - resolution: {integrity: sha512-3gvZPlYLkjuPezF2VyCVurEJiJnb3sbr32Jp3MfvpO7x026RXMbetkdH87MKoiSAThxSiyG+qi/jvUeDYY/Wtg==} - engines: {node: '>=16'} + /@cspell/cspell-resolver@8.0.0: + resolution: {integrity: sha512-gtALHFLT2vSZ7BZlIg26AY3W9gkiqxPGE75iypWz06JHJs05ngnAR+h6VOu0+rmgx98hNfzPPEh4g+Tjm8Ma0A==} + engines: {node: '>=18'} dependencies: global-dirs: 3.0.1 dev: true - /@cspell/cspell-service-bus@7.3.2: - resolution: {integrity: sha512-i2sPnUSsFJXc5afijbUsUtv1YEXyO8EbJbXV0kdE6KVu7I0CSMV8jprJaG3X1m5HE6lGftNcpLKLHjSlFOFvsA==} - engines: {node: '>=16'} + /@cspell/cspell-service-bus@8.0.0: + resolution: {integrity: sha512-1EYhIHoZnhxpfEp6Bno6yVWYBuYfaQrwIfeDMntnezUcSmi7RyroQEcp5U7sLv69vhRD2c81o7r8iUaAbPSmIg==} + engines: {node: '>=18'} dev: true - /@cspell/cspell-types@7.3.2: - resolution: {integrity: sha512-2lvRUfIgH9TvqGEDpuukuD6J84XPP8KFxR/qphtPZAzwg9SEpiagdN79eFlPe4ZI2xHNvwEsPDJUxuvxXu15wQ==} - engines: {node: '>=16'} + /@cspell/cspell-types@8.0.0: + resolution: {integrity: sha512-dPdxQI8dLJoJEjylaPYfCJNnm2XNMYPuowHE2FMcsnFR9hEchQAhnKVc/aD63IUYnUtUrPxPlUJdoAoj569e+g==} + engines: {node: '>=18'} dev: true /@cspell/dict-ada@4.0.2: @@ -344,16 +342,16 @@ packages: resolution: {integrity: sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==} dev: true - /@cspell/dict-bash@4.1.1: - resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} + /@cspell/dict-bash@4.1.2: + resolution: {integrity: sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==} dev: true - /@cspell/dict-companies@3.0.21: - resolution: {integrity: sha512-u9b7qtCWYS728WqiJeAucJcjRs16Y1yGGwagS/w59SV25R0rXbXbPbQuX8wYDcaeIO8uRHGkbSWngx6O4qFoCQ==} + /@cspell/dict-companies@3.0.27: + resolution: {integrity: sha512-gaPR/luf+4oKGyxvW4GbxGGPdHiC5kj/QefnmQqrLFrLiCSXMZg5/NL+Lr4E5lcHsd35meX61svITQAvsT7lyQ==} dev: true - /@cspell/dict-cpp@5.0.4: - resolution: {integrity: sha512-Vmz/CCb2d91ES5juaO8+CFWeTa2AFsbpR8bkCPJq+P8cRP16+37tY0zNXEBSK/1ur4MakaRf76jeQBijpZxw0Q==} + /@cspell/dict-cpp@5.0.9: + resolution: {integrity: sha512-ql9WPNp8c+fhdpVpjpZEUWmxBHJXs9CJuiVVfW/iwv5AX7VuMHyEwid+9/6nA8qnCxkUQ5pW83Ums1lLjn8ScA==} dev: true /@cspell/dict-cryptocurrencies@4.0.0: @@ -364,8 +362,8 @@ packages: resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} dev: true - /@cspell/dict-css@4.0.7: - resolution: {integrity: sha512-NNlUTx/sYg+74kC0EtRewb7pjkEtPlIsu9JFNWAXa0JMTqqpQXqM3aEO4QJvUZFZF09bObeCAvzzxemAwxej7Q==} + /@cspell/dict-css@4.0.12: + resolution: {integrity: sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==} dev: true /@cspell/dict-dart@2.0.3: @@ -400,20 +398,20 @@ packages: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us@4.3.7: - resolution: {integrity: sha512-83V0XXqiXJvXa1pj5cVpviYKeLTN2Dxvouz8ullrwgcfPtY57pYBy+3ACVAMYK0eGByhRPc/xVXlIgv4o0BNZw==} + /@cspell/dict-en_us@4.3.11: + resolution: {integrity: sha512-GhdavZFlS2YbUNcRtPbgJ9j6aUyq116LmDQ2/Q5SpQxJ5/6vVs8Yj5WxV1JD+Zh/Zim1NJDcneTOuLsUGi+Czw==} dev: true - /@cspell/dict-filetypes@3.0.1: - resolution: {integrity: sha512-8z8mY1IbrTyTRumx2vvD9yzRhNMk9SajM/GtI5hdMM2pPpNSp25bnuauzjRf300eqlqPY2MNb5MmhBFO014DJw==} + /@cspell/dict-filetypes@3.0.2: + resolution: {integrity: sha512-StoC0wPmFNav6F6P8/FYFN1BpZfPgOmktb8gQ9wTauelWofPeBW+A0t5ncZt9hXHtnbGDA98v4ukacV+ucbnUg==} dev: true /@cspell/dict-fonts@4.0.0: resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} dev: true - /@cspell/dict-fsharp@1.0.0: - resolution: {integrity: sha512-dHPkMHwW4dWv3Lv9VWxHuVm4IylqvcfRBSnZ7usJTRThraetSVrOPIJwr6UJh7F5un/lGJx2lxWVApf2WQaB/A==} + /@cspell/dict-fsharp@1.0.1: + resolution: {integrity: sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==} dev: true /@cspell/dict-fullstack@3.1.5: @@ -428,8 +426,8 @@ packages: resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} dev: true - /@cspell/dict-golang@6.0.2: - resolution: {integrity: sha512-5pyZn4AAiYukAW+gVMIMVmUSkIERFrDX2vtPDjg8PLQUhAHWiVeQSDjuOhq9/C5GCCEZU/zWSONkGiwLBBvV9A==} + /@cspell/dict-golang@6.0.4: + resolution: {integrity: sha512-jOfewPEyN6U9Q80okE3b1PTYBfqZgHh7w4o271GSuAX+VKJ1lUDhdR4bPKRxSDdO5jHArw2u5C8nH2CWGuygbQ==} dev: true /@cspell/dict-haskell@4.0.1: @@ -440,16 +438,16 @@ packages: resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} dev: true - /@cspell/dict-html@4.0.3: - resolution: {integrity: sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==} + /@cspell/dict-html@4.0.5: + resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} dev: true - /@cspell/dict-java@5.0.5: - resolution: {integrity: sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==} + /@cspell/dict-java@5.0.6: + resolution: {integrity: sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==} dev: true - /@cspell/dict-k8s@1.0.1: - resolution: {integrity: sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==} + /@cspell/dict-k8s@1.0.2: + resolution: {integrity: sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==} dev: true /@cspell/dict-latex@4.0.0: @@ -460,32 +458,36 @@ packages: resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} dev: true - /@cspell/dict-lua@4.0.1: - resolution: {integrity: sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==} + /@cspell/dict-lua@4.0.2: + resolution: {integrity: sha512-eeC20Q+UnHcTVBK6pgwhSjGIVugO2XqU7hv4ZfXp2F9DxGx1RME0+1sKX4qAGhdFGwOBsEzb2fwUsAEP6Mibpg==} + dev: true + + /@cspell/dict-makefile@1.0.0: + resolution: {integrity: sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==} dev: true - /@cspell/dict-node@4.0.2: - resolution: {integrity: sha512-FEQJ4TnMcXEFslqBQkXa5HposMoCGsiBv2ux4IZuIXgadXeHKHUHk60iarWpjhzNzQLyN2GD7NoRMd12bK3Llw==} + /@cspell/dict-node@4.0.3: + resolution: {integrity: sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==} dev: true - /@cspell/dict-npm@5.0.8: - resolution: {integrity: sha512-KuqH8tEsFD6DPKqKwIfWr9E+admE3yghaC0AKXG8jPaf77N0lkctKaS3dm0oxWUXkYKA/eXj6LCtz3VcTyxFPg==} + /@cspell/dict-npm@5.0.12: + resolution: {integrity: sha512-T/+WeQmtbxo7ad6hrdI8URptYstKJP+kXyWJZfuVJJGWJQ7yubxrI5Z5AfM+Dh/ff4xHmdzapxD9adaEQ727uw==} dev: true - /@cspell/dict-php@4.0.2: - resolution: {integrity: sha512-7yglcmMoFHDPQXHW+9QAl8YjAToMm1qOi+4x/yGY1FSIEjZbCpjeDgyKMGg/NgpooQQceEN38AR59Pn23EDriA==} + /@cspell/dict-php@4.0.4: + resolution: {integrity: sha512-fRlLV730fJbulDsLIouZxXoxHt3KIH6hcLFwxaupHL+iTXDg0lo7neRpbqD5MScr/J3idEr7i9G8XWzIikKFug==} dev: true /@cspell/dict-powershell@5.0.2: resolution: {integrity: sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==} dev: true - /@cspell/dict-public-licenses@2.0.3: - resolution: {integrity: sha512-JSLEdpEYufQ1H+93UHi+axlqQm1fhgK6kpdLHp6uPHu//CsvETcqNVawjB+qOdI/g38JTMw5fBqSd0aGNxa6Dw==} + /@cspell/dict-public-licenses@2.0.5: + resolution: {integrity: sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==} dev: true - /@cspell/dict-python@4.1.7: - resolution: {integrity: sha512-8GkO7/w1QEpu4Y1GTHGYHrwfc/ZdiBRw7D/BGYCIiOoQPLi0YxMke7wzRC3j246yrzLt28ntDBjr4fB3+uFZtQ==} + /@cspell/dict-python@4.1.10: + resolution: {integrity: sha512-ErF/Ohcu6Xk4QVNzFgo8p7CxkxvAKAmFszvso41qOOhu8CVpB35ikBRpGVDw9gsCUtZzi15Yl0izi4do6WcLkA==} dependencies: '@cspell/dict-data-science': 1.0.11 dev: true @@ -494,8 +496,8 @@ packages: resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} dev: true - /@cspell/dict-ruby@5.0.0: - resolution: {integrity: sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==} + /@cspell/dict-ruby@5.0.1: + resolution: {integrity: sha512-rruTm7Emhty/BSYavSm8ZxRuVw0OBqzJkwIFXcV0cX7To8D1qbmS9HFHRuRg8IL11+/nJvtdDz+lMFBSmPUagQ==} dev: true /@cspell/dict-rust@4.0.1: @@ -506,12 +508,12 @@ packages: resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms@3.2.2: - resolution: {integrity: sha512-DmdS/qAyJVmKKku4ab89HVZhsvRIk84HoPUVIZ/zJhmuCO+LF45Ylzy1/7G32MYLjbG/o1Ze3UvbaE9HY4FKKA==} + /@cspell/dict-software-terms@3.3.9: + resolution: {integrity: sha512-/O3EWe0SIznx18S7J3GAXPDe7sexn3uTsf4IlnGYK9WY6ZRuEywkXCB+5/USLTGf4+QC05pkHofphdvVSifDyA==} dev: true - /@cspell/dict-sql@2.1.1: - resolution: {integrity: sha512-v1mswi9NF40+UDUMuI148YQPEQvWjac72P6ZsjlRdLjEiQEEMEsTQ+zlkIdnzC9QCNyJaqD5Liq9Mn78/8Zxtw==} + /@cspell/dict-sql@2.1.2: + resolution: {integrity: sha512-Pi0hAcvsSGtZZeyyAN1VfGtQJbrXos5x2QjJU0niAQKhmITSOrXU/1II1Gogk+FYDjWyV9wP2De0U2f7EWs6oQ==} dev: true /@cspell/dict-svelte@1.0.2: @@ -522,24 +524,24 @@ packages: resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} dev: true - /@cspell/dict-typescript@3.1.1: - resolution: {integrity: sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==} + /@cspell/dict-typescript@3.1.2: + resolution: {integrity: sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==} dev: true /@cspell/dict-vue@3.0.0: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import@7.3.2: - resolution: {integrity: sha512-G2ZBPC08X3lUQmHRobGdFYxb3oTSuSIfpW1P/oTMovqbuVoQh108W2WXv0Va40LVGkQD9OS31ZafHbcLELANeA==} - engines: {node: '>=16'} + /@cspell/dynamic-import@8.0.0: + resolution: {integrity: sha512-HNkCepopgiEGuI1QGA6ob4+ayvoSMxvAqetLxP0u1sZzc50LH2DEWwotcNrpVdzZOtERHvIBcGaQKIBEx8pPRQ==} + engines: {node: '>=18.0'} dependencies: - import-meta-resolve: 3.0.0 + import-meta-resolve: 3.1.1 dev: true - /@cspell/strong-weak-map@7.3.2: - resolution: {integrity: sha512-Y2JL8A/CG37NnreVtU3DhvcOuYWNEAKUmOSU9NfBeOoptWwTMBvbNF5UbOpmZrf2BXc8OmdHIogIWHXYIESiyg==} - engines: {node: '>=16'} + /@cspell/strong-weak-map@8.0.0: + resolution: {integrity: sha512-fRlqPSdpdub52vFtulDgLPzGPGe75I04ScId1zOO9ABP7/ro8VmaG//m1k7hsPkm6h7FG4jWympoA3aXDAcXaA==} + engines: {node: '>=18'} dev: true /@ericcornelissen/bash-parser@0.5.2: @@ -567,11 +569,11 @@ packages: unescape-js: 1.1.4 dev: true - /@es-joy/jsdoccomment@0.40.1: - resolution: {integrity: sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==} + /@es-joy/jsdoccomment@0.41.0: + resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} dependencies: - comment-parser: 1.4.0 + comment-parser: 1.4.1 esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 dev: true @@ -972,23 +974,23 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.53.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -1004,16 +1006,16 @@ packages: - supports-color dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1025,8 +1027,13 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@hutson/parse-repository-url@5.0.0: + resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} + engines: {node: '>=10.13.0'} dev: true /@iarna/toml@2.2.5: @@ -1091,9 +1098,11 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@ljharb/through@2.3.9: - resolution: {integrity: sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==} + /@ljharb/through@2.3.11: + resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 dev: true /@nodelib/fs.scandir@2.1.5: @@ -1132,128 +1141,109 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /@octokit/auth-token@3.0.4: - resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} - engines: {node: '>= 14'} + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} dev: true - /@octokit/core@4.2.4: - resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} - engines: {node: '>= 14'} + /@octokit/core@5.0.1: + resolution: {integrity: sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw==} + engines: {node: '>= 18'} dependencies: - '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6 - '@octokit/request': 6.2.8 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.0.2 + '@octokit/request': 8.1.5 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.3.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding dev: true - /@octokit/endpoint@7.0.6: - resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} - engines: {node: '>= 14'} + /@octokit/endpoint@9.0.2: + resolution: {integrity: sha512-qhKW8YLIi+Kmc92FQUFGr++DYtkx/1fBv+Thua6baqnjnOsgBYJDCvWZR1YcINuHGOEQt416WOfE+A/oG60NBQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/types': 9.3.2 + '@octokit/types': 12.3.0 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: true - /@octokit/graphql@5.0.6: - resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} - engines: {node: '>= 14'} + /@octokit/graphql@7.0.2: + resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} + engines: {node: '>= 18'} dependencies: - '@octokit/request': 6.2.8 - '@octokit/types': 9.3.2 + '@octokit/request': 8.1.5 + '@octokit/types': 12.3.0 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding dev: true - /@octokit/openapi-types@18.0.0: - resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==} + /@octokit/openapi-types@19.0.2: + resolution: {integrity: sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ==} dev: true - /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4): - resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} - engines: {node: '>= 14'} + /@octokit/plugin-paginate-rest@9.1.3(@octokit/core@5.0.1): + resolution: {integrity: sha512-gm4KmW+pdAfCO5cXJyRZnNfnPE9r6OGpRG8JZpI0eSo1XVk7LXoRcdS7aP4L9azdV0ncHazsLAI0knKjr+snPg==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=4' + '@octokit/core': '>=5' dependencies: - '@octokit/core': 4.2.4 - '@octokit/tsconfig': 1.0.2 - '@octokit/types': 9.3.2 + '@octokit/core': 5.0.1 + '@octokit/types': 12.3.0 dev: true - /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4): - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + /@octokit/plugin-request-log@4.0.0(@octokit/core@5.0.1): + resolution: {integrity: sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': '>=5' dependencies: - '@octokit/core': 4.2.4 + '@octokit/core': 5.0.1 dev: true - /@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4): - resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} - engines: {node: '>= 14'} + /@octokit/plugin-rest-endpoint-methods@10.1.3(@octokit/core@5.0.1): + resolution: {integrity: sha512-rB6MPuu/TLkDpn9SONbOeD/Q8u3nX/c39KudIrxAuEclepIIFh61534Un0GVCJRSYoIss1r/yAs6b0xUF2/9ew==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': '>=5' dependencies: - '@octokit/core': 4.2.4 - '@octokit/types': 10.0.0 + '@octokit/core': 5.0.1 + '@octokit/types': 12.3.0 dev: true - /@octokit/request-error@3.0.3: - resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} - engines: {node: '>= 14'} + /@octokit/request-error@5.0.1: + resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/types': 9.3.2 + '@octokit/types': 12.3.0 deprecation: 2.3.1 once: 1.4.0 dev: true - /@octokit/request@6.2.8: - resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} - engines: {node: '>= 14'} + /@octokit/request@8.1.5: + resolution: {integrity: sha512-zVKbNbX1xUluD9ZR4/tPs1yuYrK9xeh5fGZUXA6u04XGsTvomg0YO8/ZUC0FqAd49hAOEMFPAVUTh+2lBhOhLA==} + engines: {node: '>= 18'} dependencies: - '@octokit/endpoint': 7.0.6 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 + '@octokit/endpoint': 9.0.2 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.3.0 is-plain-object: 5.0.0 - node-fetch: 2.7.0 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding dev: true - /@octokit/rest@19.0.13: - resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} - engines: {node: '>= 14'} + /@octokit/rest@20.0.2: + resolution: {integrity: sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/core': 4.2.4 - '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4) - transitivePeerDependencies: - - encoding - dev: true - - /@octokit/tsconfig@1.0.2: - resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} + '@octokit/core': 5.0.1 + '@octokit/plugin-paginate-rest': 9.1.3(@octokit/core@5.0.1) + '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.0.1) + '@octokit/plugin-rest-endpoint-methods': 10.1.3(@octokit/core@5.0.1) dev: true - /@octokit/types@10.0.0: - resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} + /@octokit/types@12.3.0: + resolution: {integrity: sha512-nJ8X2HRr234q3w/FcovDlA+ttUU4m1eJAourvfUUtwAWeqL8AsyRqfnLvVnYn3NFbUnsmzQCzLNdFerPwdmcDQ==} dependencies: - '@octokit/openapi-types': 18.0.0 - dev: true - - /@octokit/types@9.3.2: - resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - dependencies: - '@octokit/openapi-types': 18.0.0 + '@octokit/openapi-types': 19.0.2 dev: true /@pkgjs/parseargs@0.11.0: @@ -1278,6 +1268,53 @@ packages: engines: {node: '>=12.22.0'} dev: true + /@pnpm/constants@7.1.1: + resolution: {integrity: sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw==} + engines: {node: '>=16.14'} + dev: true + + /@pnpm/core-loggers@9.0.4(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-P5IiCwLbYy/vlCDTxEMReB67NVs1Y4ip6iIEM3Y1fbxm0JbPMWTUMKGf2fy7eqGDF3/Vuxk5H7o/A4II6SWzMA==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/logger': 5.0.0 + '@pnpm/types': 9.4.0 + dev: true + + /@pnpm/error@5.0.2: + resolution: {integrity: sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/constants': 7.1.1 + dev: true + + /@pnpm/fetching-types@5.0.0: + resolution: {integrity: sha512-o9gdO1v8Uc5P2fBBuW6GSpfTqIivQmQlqjQJdFiQX0m+tgxlrMRneIg392jZuc6fk7kFqjLheInlslgJfwY+4Q==} + engines: {node: '>=16.14'} + dependencies: + '@zkochan/retry': 0.2.0 + node-fetch: 3.0.0-beta.9 + transitivePeerDependencies: + - domexception + dev: true + + /@pnpm/graceful-fs@3.2.0: + resolution: {integrity: sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA==} + engines: {node: '>=16.14'} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /@pnpm/logger@5.0.0: + resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} + engines: {node: '>=12.17'} + dependencies: + bole: 5.0.9 + ndjson: 2.0.0 + dev: true + /@pnpm/network.ca-file@1.0.2: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} @@ -1294,6 +1331,96 @@ packages: config-chain: 1.1.13 dev: true + /@pnpm/npm-package-arg@1.0.0: + resolution: {integrity: sha512-oQYP08exi6mOPdAZZWcNIGS+KKPsnNwUBzSuAEGWuCcqwMAt3k/WVCqVIXzBxhO5sP2b43og69VHmPj6IroKqw==} + engines: {node: '>=14.6'} + dependencies: + hosted-git-info: 4.1.0 + semver: 7.5.4 + validate-npm-package-name: 4.0.0 + dev: true + + /@pnpm/npm-resolver@17.0.0(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-XCeFga+Am3rsTO+8IIuIPb6VsZ+iCiv5QJW61YDl4XuiqoyCFzNyGgGfv05n45lIfK0Gg1jA2ewlo0LpGelCUw==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/core-loggers': 9.0.4(@pnpm/logger@5.0.0) + '@pnpm/error': 5.0.2 + '@pnpm/fetching-types': 5.0.0 + '@pnpm/graceful-fs': 3.2.0 + '@pnpm/logger': 5.0.0 + '@pnpm/resolve-workspace-range': 5.0.1 + '@pnpm/resolver-base': 11.0.0 + '@pnpm/types': 9.4.0 + '@zkochan/retry': 0.2.0 + encode-registry: 3.0.1 + load-json-file: 6.2.0 + lru-cache: 10.0.2 + normalize-path: 3.0.0 + p-limit: 3.1.0 + p-memoize: 4.0.1 + parse-npm-tarball-url: 3.0.0 + path-temp: 2.1.0 + ramda: /@pnpm/ramda@0.28.1 + rename-overwrite: 4.0.3 + semver: 7.5.4 + ssri: 10.0.5 + version-selector-type: 3.0.0 + transitivePeerDependencies: + - domexception + dev: true + + /@pnpm/ramda@0.28.1: + resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} + dev: true + + /@pnpm/resolve-workspace-range@5.0.1: + resolution: {integrity: sha512-yQ0pMthlw8rTgS/C9hrjne+NEnnSNevCjtdodd7i15I59jMBYciHifZ/vjg0NY+Jl+USTc3dBE+0h/4tdYjMKg==} + engines: {node: '>=16.14'} + dependencies: + semver: 7.5.4 + dev: true + + /@pnpm/resolver-base@11.0.0: + resolution: {integrity: sha512-oxfjO8Ie6aBQPXSqOWGJP9s0xj9Z4cbRI7fK63WKhjwmNH4CTrSfikRL2o4FoXo2APAbJEUp2lCxx+86dq2tUg==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/types': 9.4.0 + dev: true + + /@pnpm/types@9.4.0: + resolution: {integrity: sha512-IRDuIuNobLRQe0UyY2gbrrTzYS46tTNvOEfL6fOf0Qa8NyxUzeXz946v7fQuQE3LSBf8ENBC5SXhRmDl+mBEqA==} + engines: {node: '>=16.14'} + dev: true + + /@pnpm/workspace.pkgs-graph@2.0.10(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-iGZZ23li6Ya68kHx3oaWPCN4JMzJ0njmmmWDRxUcHkc+nxtxTwpEM/FRl7yG1nBo39YwX2XTtou22h2nKipHnw==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/npm-package-arg': 1.0.0 + '@pnpm/npm-resolver': 17.0.0(@pnpm/logger@5.0.0) + '@pnpm/resolve-workspace-range': 5.0.1 + ramda: /@pnpm/ramda@0.28.1 + transitivePeerDependencies: + - '@pnpm/logger' + - domexception + dev: true + + /@release-it/conventional-changelog@8.0.1(release-it@17.0.0): + resolution: {integrity: sha512-pwc9jaBYDaSX5TXw6rEnPfqDkKJN2sFBhYpON1kBi9T3sA9EOBncC4ed0Bv3L1ciNb6eqEJXPfp+tQMqVlv/eg==} + engines: {node: '>=18'} + peerDependencies: + release-it: ^17.0.0 + dependencies: + concat-stream: 2.0.0 + conventional-changelog: 5.1.0 + conventional-recommended-bump: 9.0.0 + release-it: 17.0.0(typescript@5.2.2) + semver: 7.5.4 + dev: true + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -1303,6 +1430,11 @@ packages: engines: {node: '>=14.16'} dev: true + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + /@snyk/github-codeowners@1.1.0: resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} engines: {node: '>=8.10'} @@ -1334,8 +1466,8 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/eslint@8.44.2: - resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} + /@types/eslint@8.44.7: + resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 @@ -1357,10 +1489,6 @@ packages: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - /@types/linkify-it@3.0.3: resolution: {integrity: sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==} dev: true @@ -1410,8 +1538,8 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1421,14 +1549,14 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/type-utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.53.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -1439,8 +1567,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} + /@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1449,35 +1577,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@6.6.0: - resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} + /@typescript-eslint/scope-manager@6.10.0: + resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + /@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1486,49 +1606,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.53.0 ts-api-utils: 1.0.1(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@6.6.0: - resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} + /@typescript-eslint/types@6.10.0: + resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} + /@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): + resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1536,8 +1630,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1548,63 +1642,39 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.48.0 - eslint-scope: 5.1.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + /@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - eslint: 8.48.0 + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + eslint: 8.53.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@6.10.0: + resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 6.10.0 eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.6.0: - resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.6.0 - eslint-visitor-keys: 3.4.3 + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitest/coverage-v8@0.34.3(vitest@0.34.3): - resolution: {integrity: sha512-bNjP0RHe8UxdklCigZlk6FVCNbOiqVjWnpZJ1zKixpvb7YHSaZiN/w+mzpvXIoqyxyePzKC+L+G1oj7SB20PJw==} + /@vitest/coverage-v8@0.34.6(vitest@0.34.6): + resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} peerDependencies: vitest: '>=0.32.0 <1' dependencies: @@ -1619,49 +1689,61 @@ packages: std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.34.3 + vitest: 0.34.6 transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.34.3: - resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 - chai: 4.3.7 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true - /@vitest/runner@0.34.3: - resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: - '@vitest/utils': 0.34.3 + '@vitest/utils': 0.34.6 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.3: - resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: magic-string: 0.30.1 pathe: 1.1.1 pretty-format: 29.6.1 dev: true - /@vitest/spy@0.34.3: - resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.3: - resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 pretty-format: 29.6.1 dev: true + /@zkochan/retry@0.2.0: + resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} + engines: {node: '>=10'} + dev: true + + /@zkochan/rimraf@2.1.3: + resolution: {integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==} + engines: {node: '>=12.10'} + dependencies: + rimraf: 3.0.2 + dev: true + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1689,6 +1771,10 @@ packages: hasBin: true dev: true + /add-stream@1.0.0: + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + dev: true + /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} @@ -1815,15 +1901,8 @@ packages: is-array-buffer: 3.0.2 dev: true - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 - is-string: 1.0.7 + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true /array-last@1.3.0: @@ -1842,37 +1921,6 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.2: - resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 - dev: true - - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - dev: true - - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.map@1.0.5: resolution: {integrity: sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==} engines: {node: '>= 0.4'} @@ -1971,6 +2019,13 @@ packages: readable-stream: 3.6.0 dev: true + /bole@5.0.9: + resolution: {integrity: sha512-35GeBG6T7GW9VmLDF2IoKAtFCqMjmmq1uICbsICI0pID7ZAyUKlf7dg1wpXmn9GcMKHtg0S19CPMU5yfY3tv+g==} + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 + dev: true + /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -2012,6 +2067,10 @@ packages: fill-range: 7.0.1 dev: true + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2108,14 +2167,14 @@ packages: engines: {node: '>=14.16'} dev: true - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 - get-func-name: 2.0.0 + get-func-name: 2.0.2 loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 @@ -2166,8 +2225,10 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 dev: true /chokidar@3.5.3: @@ -2276,6 +2337,11 @@ packages: engines: {node: '>=16'} dev: true + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -2292,11 +2358,18 @@ packages: repeat-string: 1.6.1 dev: true - /comment-parser@1.4.0: - resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} dev: true + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + /compose-function@3.0.3: resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} dependencies: @@ -2307,6 +2380,16 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + typedarray: 0.0.6 + dev: true + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: @@ -2319,7 +2402,7 @@ packages: engines: {node: '>=12'} dependencies: dot-prop: 6.0.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 unique-string: 3.0.0 write-file-atomic: 3.0.3 xdg-basedir: 5.1.0 @@ -2329,17 +2412,135 @@ packages: resolution: {integrity: sha512-p1xfi9ubVM2X3NpjPH1Gm8Gxc7vXyTwcOIquU8rpUDA+ISSitAOiBDnT/Bti1We5YzZKRxgI0JU+fFvOmOXtvA==} dev: true - /conventional-commits-parser@3.2.4: - resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} - engines: {node: '>=10'} + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-atom@4.0.0: + resolution: {integrity: sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-codemirror@4.0.0: + resolution: {integrity: sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-core@7.0.0: + resolution: {integrity: sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==} + engines: {node: '>=16'} + dependencies: + '@hutson/parse-repository-url': 5.0.0 + add-stream: 1.0.0 + conventional-changelog-writer: 7.0.1 + conventional-commits-parser: 5.0.0 + git-raw-commits: 4.0.0 + git-semver-tags: 7.0.1 + hosted-git-info: 7.0.1 + normalize-package-data: 6.0.0 + read-pkg: 8.1.0 + read-pkg-up: 10.1.0 + dev: true + + /conventional-changelog-ember@4.0.0: + resolution: {integrity: sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-eslint@5.0.0: + resolution: {integrity: sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-express@4.0.0: + resolution: {integrity: sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-jquery@5.0.0: + resolution: {integrity: sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-jshint@4.0.0: + resolution: {integrity: sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-preset-loader@4.1.0: + resolution: {integrity: sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==} + engines: {node: '>=16'} + dev: true + + /conventional-changelog-writer@7.0.1: + resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + conventional-commits-filter: 4.0.0 + handlebars: 4.7.8 + json-stringify-safe: 5.0.1 + meow: 12.1.1 + semver: 7.5.4 + split2: 4.2.0 + dev: true + + /conventional-changelog@5.1.0: + resolution: {integrity: sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==} + engines: {node: '>=16'} + dependencies: + conventional-changelog-angular: 7.0.0 + conventional-changelog-atom: 4.0.0 + conventional-changelog-codemirror: 4.0.0 + conventional-changelog-conventionalcommits: 7.0.2 + conventional-changelog-core: 7.0.0 + conventional-changelog-ember: 4.0.0 + conventional-changelog-eslint: 5.0.0 + conventional-changelog-express: 4.0.0 + conventional-changelog-jquery: 5.0.0 + conventional-changelog-jshint: 4.0.0 + conventional-changelog-preset-loader: 4.1.0 + dev: true + + /conventional-commits-filter@4.0.0: + resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==} + engines: {node: '>=16'} + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} hasBin: true dependencies: JSONStream: 1.3.5 - is-text-path: 1.0.1 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /conventional-recommended-bump@9.0.0: + resolution: {integrity: sha512-HR1yD0G5HgYAu6K0wJjLd7QGRK8MQDqqj6Tn1n/ja1dFwBCE6QmV+iSgQ5F7hkx7OUR/8bHpxJqYtXj2f/opPQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + conventional-changelog-preset-loader: 4.1.0 + conventional-commits-filter: 4.0.0 + conventional-commits-parser: 5.0.0 + git-raw-commits: 4.0.0 + git-semver-tags: 7.0.1 + meow: 12.1.1 dev: true /convert-source-map@1.9.0: @@ -2360,14 +2561,20 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.2.0: - resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + typescript: 5.2.2 dev: true /cross-spawn@7.0.3: @@ -2379,6 +2586,11 @@ packages: which: 2.0.2 dev: true + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: true + /crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} @@ -2386,116 +2598,119 @@ packages: type-fest: 1.4.0 dev: true - /cspell-dictionary@7.3.2: - resolution: {integrity: sha512-hL8fOZ7zTkUuE6jq2CUObxUp0fSLsNQyMo+HAkpg0w6ssHvbgnP6HP8kyEN641L/F0X/Ow2vo3CaRBadvyyzCA==} - engines: {node: '>=16'} + /cspell-dictionary@8.0.0: + resolution: {integrity: sha512-R/AzUj7W7F4O4fAOL8jvIiUqPYGy6jIBlDkxO9SZe/A6D2kOICZZzGSXMZ0M7OKYqxc6cioQUMKOJsLkDXfDXw==} + engines: {node: '>=18'} dependencies: - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 - cspell-trie-lib: 7.3.2 + '@cspell/cspell-pipe': 8.0.0 + '@cspell/cspell-types': 8.0.0 + cspell-trie-lib: 8.0.0 fast-equals: 4.0.3 - gensequence: 5.0.2 + gensequence: 6.0.0 dev: true - /cspell-gitignore@7.3.2: - resolution: {integrity: sha512-NWxxFcf4wwKbRInkZK/p/BrPR2ElCpcB8DLcrBxRkiI4uX7yCX8v5QjI8ZpTyuaUTl9aFqJFYtj9Q7GqkBnPzA==} - engines: {node: '>=16'} + /cspell-gitignore@8.0.0: + resolution: {integrity: sha512-Uv+ENdUm+EXwQuG9187lKmE1t8b2KW+6VaQHP7r01WiuhkwhfzmWA7C30iXVcwRcsMw07wKiWvMEtG6Zlzi6lQ==} + engines: {node: '>=18'} hasBin: true dependencies: - cspell-glob: 7.3.2 + cspell-glob: 8.0.0 find-up: 5.0.0 dev: true - /cspell-glob@7.3.2: - resolution: {integrity: sha512-R/YwtBN5ApOTONkBoTOSCKDMmnRRA1fF9prkaFMfE0aT5oC2VF0N7hLCSYjpQM+kYsXeqLDc13vxFBOnHRuc3g==} - engines: {node: '>=16'} + /cspell-glob@8.0.0: + resolution: {integrity: sha512-wOkRA1OTIPhyN7a+k9Qq45yFXM+tBFi9DS5ObiLv6t6VTBIeMQpwRK0KLViHmjTgiA6eWx53Dnr+DZfxcAkcZA==} + engines: {node: '>=18'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar@7.3.2: - resolution: {integrity: sha512-ale40T4M0jHmwQsPjIbpZKzaRxMVy5dnpyvplwj7ExX4sp2Grt1wcqxk2ELS4r4bsaIap+iIfeYYhoXqYq1dQg==} - engines: {node: '>=16'} + /cspell-grammar@8.0.0: + resolution: {integrity: sha512-uxpRvbBxOih6SjFQvKTBPTA+YyqYM5UFTNTFuRnA6g6WZeg+NJaTkbQrTgXja4B2r8MJ6XU22YrKTtHNNcP7bQ==} + engines: {node: '>=18'} hasBin: true dependencies: - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 + '@cspell/cspell-pipe': 8.0.0 + '@cspell/cspell-types': 8.0.0 dev: true - /cspell-io@7.3.2: - resolution: {integrity: sha512-nul6K4YUMe1VdxuJDDOMvWUw/hIS2UZkvJLDo5GkAus7YmGSR0knfDueU+hebYszRa0LxjrduuPNcNJE/ZWUFg==} - engines: {node: '>=16'} + /cspell-io@8.0.0: + resolution: {integrity: sha512-NVdVmQd7SU/nxYwWtO/6gzux/kp1Dt36zKds0+QHZhQ18JJjXduF5e+WUttqKi2oj/vvmjiG4HGFKQVDBcBz3w==} + engines: {node: '>=18'} dependencies: - '@cspell/cspell-service-bus': 7.3.2 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + '@cspell/cspell-service-bus': 8.0.0 dev: true - /cspell-lib@7.3.2: - resolution: {integrity: sha512-cbo0TSL2JnM/GdiutH193aynxdxSnxBR1DYJ1/8ycIWDU0p4AHO0EZ+5L5MkBFwpM20OicuXvLrAem9WjYVDBQ==} - engines: {node: '>=16'} + /cspell-lib@8.0.0: + resolution: {integrity: sha512-X/BzUjrzHOx7YlhvSph/OlMu1RmCTnybeZvIE67d1Pd7wT1TmZhFTnmvruUhoHxWEudOEe4HjzuNL9ph6Aw+aA==} + engines: {node: '>=18'} dependencies: - '@cspell/cspell-bundled-dicts': 7.3.2 - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-resolver': 7.3.2 - '@cspell/cspell-types': 7.3.2 - '@cspell/dynamic-import': 7.3.2 - '@cspell/strong-weak-map': 7.3.2 + '@cspell/cspell-bundled-dicts': 8.0.0 + '@cspell/cspell-pipe': 8.0.0 + '@cspell/cspell-resolver': 8.0.0 + '@cspell/cspell-types': 8.0.0 + '@cspell/dynamic-import': 8.0.0 + '@cspell/strong-weak-map': 8.0.0 clear-module: 4.1.2 comment-json: 4.2.3 configstore: 6.0.0 cosmiconfig: 8.0.0 - cspell-dictionary: 7.3.2 - cspell-glob: 7.3.2 - cspell-grammar: 7.3.2 - cspell-io: 7.3.2 - cspell-trie-lib: 7.3.2 + cspell-dictionary: 8.0.0 + cspell-glob: 8.0.0 + cspell-grammar: 8.0.0 + cspell-io: 8.0.0 + cspell-trie-lib: 8.0.0 fast-equals: 5.0.1 find-up: 6.3.0 - gensequence: 5.0.2 + gensequence: 6.0.0 import-fresh: 3.3.0 resolve-from: 5.0.0 - vscode-languageserver-textdocument: 1.0.8 - vscode-uri: 3.0.7 - transitivePeerDependencies: - - encoding + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 dev: true - /cspell-trie-lib@7.3.2: - resolution: {integrity: sha512-IXNCWBw4UDZuY6MB+j7YNdcDpTdcfElsLkwTV8fEmNfUeClJacn2mQicQ/LKZJLvOc1TNbcSPWSCe3kQA+uxNw==} - engines: {node: '>=16'} + /cspell-trie-lib@8.0.0: + resolution: {integrity: sha512-0rC5e1C0uM78uuS+lC1T18EojWZyNvq4bPOPCisnwuhuWrAfCqrFrX/qDNslWk3VTOPbsEMlFj6OnIGQnfwSKg==} + engines: {node: '>=18'} dependencies: - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 - gensequence: 5.0.2 + '@cspell/cspell-pipe': 8.0.0 + '@cspell/cspell-types': 8.0.0 + gensequence: 6.0.0 dev: true - /cspell@7.3.2: - resolution: {integrity: sha512-/YY1C0CYBP+GueFon1BUgcDGc1YXDCyAIjuebvRygjt1cXwCklQVF5bZIGCrimgjzTrY+wx0ePgzuVQ9RyJnOQ==} - engines: {node: '>=16'} + /cspell@8.0.0: + resolution: {integrity: sha512-Nayy25Dh+GAlDFDpVZaQhmidP947rpj1Pn9lmZ3nUFjD9W/yj0h0vrjMLMN4dbonddkmKh4t51C+7NuMP405hg==} + engines: {node: '>=18'} hasBin: true dependencies: - '@cspell/cspell-json-reporter': 7.3.2 - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 - '@cspell/dynamic-import': 7.3.2 + '@cspell/cspell-json-reporter': 8.0.0 + '@cspell/cspell-pipe': 8.0.0 + '@cspell/cspell-types': 8.0.0 + '@cspell/dynamic-import': 8.0.0 chalk: 5.3.0 chalk-template: 1.1.0 - commander: 11.0.0 - cspell-gitignore: 7.3.2 - cspell-glob: 7.3.2 - cspell-io: 7.3.2 - cspell-lib: 7.3.2 - fast-glob: 3.3.1 + commander: 11.1.0 + cspell-gitignore: 8.0.0 + cspell-glob: 8.0.0 + cspell-io: 8.0.0 + cspell-lib: 8.0.0 + fast-glob: 3.3.2 fast-json-stable-stringify: 2.1.0 - file-entry-cache: 6.0.1 + file-entry-cache: 7.0.1 get-stdin: 9.0.0 semver: 7.5.4 strip-ansi: 7.1.0 - vscode-uri: 3.0.7 - transitivePeerDependencies: - - encoding + vscode-uri: 3.0.8 + dev: true + + /dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + dev: true + + /data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} dev: true /data-uri-to-buffer@4.0.1: @@ -2508,17 +2723,6 @@ packages: engines: {node: '>= 14'} dev: true - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2654,13 +2858,6 @@ packages: path-type: 4.0.0 dev: true - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -2668,6 +2865,13 @@ packages: esutils: 2.0.3 dev: true + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + /dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -2699,6 +2903,13 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /encode-registry@3.0.1: + resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} + engines: {node: '>=10'} + dependencies: + mem: 8.1.1 + dev: true + /entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} dev: true @@ -2786,12 +2997,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -2893,62 +3098,23 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.0.0(eslint@8.48.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.48.0 - dev: true - - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.2 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} + /eslint-compat-utils@0.1.2(eslint@8.53.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint: '>=6.0.0' dependencies: - '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - debug: 3.2.7 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color + eslint: 8.53.0 dev: true - /eslint-plugin-deprecation@1.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-mRcssI/tLROueBQ6yf4LnnGTijbMsTCPIpbRbPj5R5wGYVCpk1zDmAS0SEkgcUDXOPc22qMNFR24Qw7vSPrlTA==} + /eslint-plugin-deprecation@2.0.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: ^3.7.5 || ^4.0.0 || ^5.0.0 + eslint: ^7.0.0 || ^8.0.0 + typescript: ^4.2.4 || ^5.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - eslint: 8.48.0 + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 tslib: 2.5.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 @@ -2956,75 +3122,40 @@ packages: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.48.0): + /eslint-plugin-es-x@7.2.0(eslint@8.53.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.6.2 - eslint: 8.48.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.53.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.48.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.53.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.48.0 + eslint: 8.53.0 ignore: 5.2.4 dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.6.0)(eslint@8.48.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - array-includes: 3.1.6 - array.prototype.findlastindex: 1.2.2 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.6.0)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) - has: 1.0.3 - is-core-module: 2.13.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.6 - object.groupby: 1.0.0 - object.values: 1.1.6 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-jsdoc@46.5.1(eslint@8.48.0): - resolution: {integrity: sha512-CPbvKprmEuJYoxMj5g8gXfPqUGgcqMM6jpH06Kp4pn5Uy5MrPkFKzoD7UFp2E4RBzfXbJz1+TeuEivwFVMkXBg==} + /eslint-plugin-jsdoc@46.9.0(eslint@8.53.0): + resolution: {integrity: sha512-UQuEtbqLNkPf5Nr/6PPRCtr9xypXY+g8y/Q7gPa0YK7eDhh0y2lWprXRnaYbW7ACgIUvpDKy9X2bZqxtGzBG9Q==} engines: {node: '>=16'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@es-joy/jsdoccomment': 0.40.1 + '@es-joy/jsdoccomment': 0.41.0 are-docs-informative: 0.0.2 - comment-parser: 1.4.0 + comment-parser: 1.4.1 debug: 4.3.4 escape-string-regexp: 4.0.0 - eslint: 8.48.0 + eslint: 8.53.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.5.4 @@ -3033,41 +3164,44 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.48.0): - resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} + /eslint-plugin-jsonc@2.10.0(eslint@8.53.0): + resolution: {integrity: sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - eslint: 8.48.0 - jsonc-eslint-parser: 2.3.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 + eslint-compat-utils: 0.1.2(eslint@8.53.0) + jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.48.0): + /eslint-plugin-markdown@3.0.1(eslint@8.53.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.53.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.0.2(eslint@8.48.0): - resolution: {integrity: sha512-Y66uDfUNbBzypsr0kELWrIz+5skicECrLUqlWuXawNSLUq3ltGlCwu6phboYYOTSnoTdHgTLrc+5Ydo6KjzZog==} + /eslint-plugin-n@16.3.1(eslint@8.53.0): + resolution: {integrity: sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) builtins: 5.0.1 - eslint: 8.48.0 - eslint-plugin-es-x: 7.2.0(eslint@8.48.0) + eslint: 8.53.0 + eslint-plugin-es-x: 7.2.0(eslint@8.53.0) + get-tsconfig: 4.7.2 ignore: 5.2.4 + is-builtin-module: 3.2.1 is-core-module: 2.13.0 minimatch: 3.1.2 resolve: 1.22.2 @@ -3079,16 +3213,26 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-perfectionist@1.5.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-PiUrAfGDc/l6MKKUP8qt5RXueC7FZC6F/0j8ijXYU8o3x8o2qUi6zEEYBkId/IiKloIXM5KTD4jrH9833kDNzA==} + /eslint-plugin-perfectionist@2.3.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-T/1HOysrsyExPr/N5apy3XFhejYqIturtejlSbTGy0WCw5dt72FDT92NOvRRKJvx8lftZDJ8AEIs5nHk9Pfa9Q==} peerDependencies: + astro-eslint-parser: ^0.16.0 eslint: '>=8.0.0' + svelte: '>=3.0.0' + svelte-eslint-parser: ^0.33.0 + vue-eslint-parser: '>=9.0.0' + peerDependenciesMeta: + astro-eslint-parser: + optional: true + svelte: + optional: true + svelte-eslint-parser: + optional: true + vue-eslint-parser: + optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - eslint: 8.48.0 - is-core-module: 2.13.0 - json5: 2.2.3 + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 minimatch: 9.0.3 natural-compare-lite: 1.4.0 transitivePeerDependencies: @@ -3096,25 +3240,24 @@ packages: - typescript dev: true - /eslint-plugin-regexp@1.15.0(eslint@8.48.0): - resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} - engines: {node: ^12 || >=14} + /eslint-plugin-regexp@2.1.1(eslint@8.53.0): + resolution: {integrity: sha512-FGa/idrL5tzMCnGylyx8DCWTX3vDuEtE/CVqTx+yYwe5qY3JRppbNVkOVGIkQF0klVlrG+LxwAXRXTUr5yU5uA==} + engines: {node: ^18 || >=20} peerDependencies: - eslint: '>=6.0.0' + eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.6.2 - comment-parser: 1.4.0 - eslint: 8.48.0 - grapheme-splitter: 1.0.4 - jsdoctypeparser: 9.0.0 - refa: 0.11.0 - regexp-ast-analysis: 0.6.0 - scslre: 0.2.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.10.0 + comment-parser: 1.4.1 + eslint: 8.53.0 + jsdoc-type-pratt-parser: 4.0.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 dev: true - /eslint-plugin-vitest@0.3.1(@typescript-eslint/eslint-plugin@6.6.0)(eslint@8.48.0)(vitest@0.34.3): - resolution: {integrity: sha512-GeR3zISHmqUGWK2sfW+eyCZivMqiQYzPf9UttHXBiEyMveS/jkKLHCrHUllwr3Hz1+i0zoseANd2xL0cFha8Eg==} + /eslint-plugin-vitest@0.3.9(@typescript-eslint/eslint-plugin@6.10.0)(eslint@8.53.0)(typescript@5.2.2)(vitest@0.34.6): + resolution: {integrity: sha512-ZGrz8dWFlotM5dwrsMLP4VcY5MizwKNV4JTnY0VKdnuCZ+qeEUMHf1qd8kRGQA3tqLvXcV929wt2ANkduq2Pgw==} engines: {node: 14.x || >= 16} peerDependencies: '@typescript-eslint/eslint-plugin': '*' @@ -3123,24 +3266,27 @@ packages: peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true + vitest: + optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - eslint: 8.48.0 - typescript: 5.2.2 - vitest: 0.34.3 + '@typescript-eslint/eslint-plugin': 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + vitest: 0.34.6 transitivePeerDependencies: - supports-color + - typescript dev: true - /eslint-plugin-yml@1.8.0(eslint@8.48.0): - resolution: {integrity: sha512-fgBiJvXD0P2IN7SARDJ2J7mx8t0bLdG6Zcig4ufOqW5hOvSiFxeUyc2g5I1uIm8AExbo26NNYCcTGZT0MXTsyg==} + /eslint-plugin-yml@1.10.0(eslint@8.53.0): + resolution: {integrity: sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.53.0 + eslint-compat-utils: 0.1.2(eslint@8.53.0) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -3148,14 +3294,6 @@ packages: - supports-color dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3169,18 +3307,19 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -3244,11 +3383,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3293,6 +3427,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -3315,8 +3464,8 @@ packages: engines: {node: '>=6.0.0'} dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3334,12 +3483,26 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true + /fetch-blob@2.1.2: + resolution: {integrity: sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==} + engines: {node: ^10.17.0 || >=12.3.0} + peerDependencies: + domexception: '*' + peerDependenciesMeta: + domexception: + optional: true + dev: true + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -3360,7 +3523,14 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.1 + dev: true + + /file-entry-cache@7.0.1: + resolution: {integrity: sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==} + engines: {node: '>=12.0.0'} + dependencies: + flat-cache: 3.1.1 dev: true /fill-range@7.0.1: @@ -3403,16 +3573,17 @@ packages: path-exists: 5.0.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.3 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /for-each@0.3.3: @@ -3441,11 +3612,20 @@ packages: fetch-blob: 3.2.0 dev: true + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 dev: true @@ -3480,13 +3660,13 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensequence@5.0.2: - resolution: {integrity: sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==} - engines: {node: '>=14'} + /gensequence@6.0.0: + resolution: {integrity: sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==} + engines: {node: '>=16'} dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /get-intrinsic@1.2.1: @@ -3508,6 +3688,11 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -3516,6 +3701,12 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /get-uri@6.0.1: resolution: {integrity: sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==} engines: {node: '>= 14'} @@ -3528,8 +3719,27 @@ packages: - supports-color dev: true - /git-hooks-list@3.0.0: - resolution: {integrity: sha512-XDfdemBGJIMAsHHOONHQxEH5dX2kCpE6MGZ1IsNvBuDPBZM3p4EAwAC7ygMjn/1/x+BJX0TK1ara1Zrh7JCFdQ==} + /git-hooks-list@3.0.0: + resolution: {integrity: sha512-XDfdemBGJIMAsHHOONHQxEH5dX2kCpE6MGZ1IsNvBuDPBZM3p4EAwAC7ygMjn/1/x+BJX0TK1ara1Zrh7JCFdQ==} + dev: true + + /git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /git-semver-tags@7.0.1: + resolution: {integrity: sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==} + engines: {node: '>=16'} + hasBin: true + dependencies: + meow: 12.1.1 + semver: 7.5.4 dev: true /git-up@7.0.0: @@ -3539,8 +3749,8 @@ packages: parse-url: 8.1.0 dev: true - /git-url-parse@13.1.0: - resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} + /git-url-parse@13.1.1: + resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} dependencies: git-up: 7.0.0 dev: true @@ -3567,7 +3777,7 @@ packages: foreground-child: 3.1.1 jackspeak: 2.2.0 minimatch: 9.0.3 - minipass: 5.0.0 + minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -3629,7 +3839,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -3640,12 +3850,24 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 dev: true + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.2.4 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true @@ -3694,14 +3916,27 @@ packages: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -3753,11 +3988,6 @@ packages: has-symbols: 1.0.3 dev: true - /has-yarn@3.0.0: - resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -3776,6 +4006,13 @@ packages: lru-cache: 6.0.0 dev: true + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.0.2 + dev: true + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true @@ -3822,6 +4059,11 @@ packages: engines: {node: '>=14.18.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -3861,8 +4103,8 @@ packages: engines: {node: '>=8'} dev: true - /import-meta-resolve@3.0.0: - resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} + /import-meta-resolve@3.1.1: + resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==} dev: true /imurmurhash@0.1.4: @@ -3875,6 +4117,10 @@ packages: engines: {node: '>=8'} dev: true + /individual@3.0.0: + resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} + dev: true + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -3900,11 +4146,11 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /inquirer@9.2.10: - resolution: {integrity: sha512-tVVNFIXU8qNHoULiazz612GFl+yqNfjMTbLuViNJE/d860Qxrd3NMrse8dm40VUQLOQeULvaQF8lpAhvysjeyA==} + /inquirer@9.2.12: + resolution: {integrity: sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==} engines: {node: '>=14.18.0'} dependencies: - '@ljharb/through': 2.3.9 + '@ljharb/through': 2.3.11 ansi-escapes: 4.3.2 chalk: 5.3.0 cli-cursor: 3.1.0 @@ -4074,6 +4320,12 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true + /is-in-ci@0.1.0: + resolution: {integrity: sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==} + engines: {node: '>=18'} + hasBin: true + dev: true + /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -4214,11 +4466,11 @@ packages: has-symbols: 1.0.3 dev: true - /is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} dependencies: - text-extensions: 1.9.0 + text-extensions: 2.4.0 dev: true /is-typed-array@1.1.10: @@ -4259,11 +4511,6 @@ packages: is-docker: 2.2.1 dev: true - /is-yarn-global@0.4.1: - resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} - engines: {node: '>=12'} - dev: true - /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -4341,8 +4588,8 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true dev: true @@ -4367,12 +4614,6 @@ packages: engines: {node: '>=12.0.0'} dev: true - /jsdoctypeparser@9.0.0: - resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} - engines: {node: '>=10'} - hasBin: true - dev: true - /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -4400,21 +4641,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true - /jsonc-eslint-parser@2.3.0: - resolution: {integrity: sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==} + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.10.0 @@ -4430,7 +4662,15 @@ packages: /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 dev: true /jsonparse@1.3.1: @@ -4449,19 +4689,22 @@ packages: engines: {node: '>=0.10.0'} dev: true - /knip@2.21.2: - resolution: {integrity: sha512-/fGWb1OZHtGj5/9nONL2iiSKdK6gbc7Kf9o5zoQJQyKe0nTYt21WnzGoXM4c6LE78V7hadJZF+2eVH56/VwdHw==} + /knip@2.41.0: + resolution: {integrity: sha512-gjEfdRxkL9jRhV/RFc0cDIjTO7dPFU3PxS4KzELJ1tX1zdRVfhATORPcpX0B2rRSowPUFXN9pQ8ce4ux5+C/kw==} engines: {node: '>=16.17.0 <17 || >=18.6.0'} hasBin: true dependencies: '@ericcornelissen/bash-parser': 0.5.2 '@npmcli/map-workspaces': 3.0.4 + '@pkgjs/parseargs': 0.11.0 + '@pnpm/logger': 5.0.0 + '@pnpm/workspace.pkgs-graph': 2.0.10(@pnpm/logger@5.0.0) '@snyk/github-codeowners': 1.1.0 chalk: 5.3.0 easy-table: 1.2.0 - fast-glob: 3.3.1 + fast-glob: 3.3.2 globby: 13.2.2 - jiti: 1.19.3 + jiti: 1.21.0 js-yaml: 4.1.0 micromatch: 4.0.5 minimist: 1.2.8 @@ -4469,8 +4712,10 @@ packages: strip-json-comments: 5.0.0 summary: 2.1.0 typescript: 5.2.2 - zod: 3.22.2 - zod-validation-error: 1.5.0(zod@3.22.2) + zod: 3.22.4 + zod-validation-error: 1.5.0(zod@3.22.4) + transitivePeerDependencies: + - domexception dev: true /latest-version@7.0.0: @@ -4497,6 +4742,11 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /linkify-it@2.2.0: resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} dependencies: @@ -4509,34 +4759,28 @@ packages: uc.micro: 1.0.6 dev: true - /lint-staged@14.0.1: - resolution: {integrity: sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==} - engines: {node: ^16.14.0 || >=18.0.0} + /lint-staged@15.1.0: + resolution: {integrity: sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw==} + engines: {node: '>=18.12.0'} hasBin: true dependencies: chalk: 5.3.0 - commander: 11.0.0 + commander: 11.1.0 debug: 4.3.4 - execa: 7.2.0 + execa: 8.0.1 lilconfig: 2.1.0 - listr2: 6.6.1 + listr2: 7.0.2 micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.3.1 + yaml: 2.3.4 transitivePeerDependencies: - - enquirer - supports-color dev: true - /listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + /listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} engines: {node: '>=16.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -4546,6 +4790,16 @@ packages: wrap-ansi: 8.1.0 dev: true + /load-json-file@6.2.0: + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 + dev: true + /load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4643,7 +4897,7 @@ packages: /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 dev: true /lowercase-keys@3.0.0: @@ -4651,9 +4905,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /lru-cache@10.0.0: - resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + /lru-cache@10.0.2: + resolution: {integrity: sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==} engines: {node: 14 || >=16.14} + dependencies: + semver: 7.5.4 dev: true /lru-cache@6.0.0: @@ -4693,6 +4949,13 @@ packages: semver: 7.5.4 dev: true + /map-age-cleaner@0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + dependencies: + p-defer: 1.0.0 + dev: true + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -4730,8 +4993,8 @@ packages: uc.micro: 1.0.6 dev: true - /markdownlint-cli@0.36.0: - resolution: {integrity: sha512-h4WdqOam3+QOVOcJSOQuG8KvvN8dlS0OiJhbPwYWBk7VMZR40UtSSMIOpSP5B4EHPHg3W3ILSQUvqg1HNpTCxA==} + /markdownlint-cli@0.37.0: + resolution: {integrity: sha512-hNKAc0bWBBuVhJbSWbUhRzavstiB4o1jh3JeSpwC4/dt6eJ54lRfYHRxVdzVp4qGWBKbeE6Pg490PFEfrKjqSg==} engines: {node: '>=16'} hasBin: true dependencies: @@ -4741,7 +5004,7 @@ packages: ignore: 5.2.4 js-yaml: 4.1.0 jsonc-parser: 3.2.0 - markdownlint: 0.30.0 + markdownlint: 0.31.1 minimatch: 9.0.3 run-con: 1.3.2 dev: true @@ -4778,6 +5041,14 @@ packages: markdownlint-micromark: 0.1.7 dev: true + /markdownlint@0.31.1: + resolution: {integrity: sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==} + engines: {node: '>=16'} + dependencies: + markdown-it: 13.0.1 + markdownlint-micromark: 0.1.7 + dev: true + /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: @@ -4798,21 +5069,25 @@ packages: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true - /meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + /mem@6.1.1: + resolution: {integrity: sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==} + engines: {node: '>=8'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + dev: true + + /mem@8.1.1: + resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} engines: {node: '>=10'} dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + dev: true + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} dev: true /meow@9.0.0: @@ -4876,6 +5151,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn@3.1.0: + resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} + engines: {node: '>=8'} + dev: true + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -4922,9 +5202,9 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} dev: true /mlly@1.4.0: @@ -4940,10 +5220,6 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4971,6 +5247,22 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /ndjson@2.0.0: + resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + json-stringify-safe: 5.0.1 + minimist: 1.2.8 + readable-stream: 3.6.0 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + /netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -4988,16 +5280,14 @@ packages: engines: {node: '>=10.5.0'} dev: true - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + /node-fetch@3.0.0-beta.9: + resolution: {integrity: sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==} + engines: {node: ^10.17 || >=12.3} dependencies: - whatwg-url: 5.0.0 + data-uri-to-buffer: 3.0.1 + fetch-blob: 2.1.2 + transitivePeerDependencies: + - domexception dev: true /node-fetch@3.3.2: @@ -5028,6 +5318,16 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -5043,24 +5343,24 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /npm-package-json-lint-config-default@6.0.0(npm-package-json-lint@7.0.0): + /npm-package-json-lint-config-default@6.0.0(npm-package-json-lint@7.1.0): resolution: {integrity: sha512-Ek3EcbMEjvGSxEywxNF2tTHuzvtaUH48Z7sljmeSejANMSpE1ssIN0oOG/Tlpc+U/P7ElfsOySIjijjmEnvMGw==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: npm-package-json-lint: ^7.0.0 dependencies: - npm-package-json-lint: 7.0.0 + npm-package-json-lint: 7.1.0(typescript@5.2.2) dev: true - /npm-package-json-lint@7.0.0: - resolution: {integrity: sha512-Yn8flnPx/7hTxwejWL5urm8sbEahq8ic3R80d7nlBvS6C58JEmJpUqvO7Ksy8izRzpbrHq0Anwlv/nQg5OYf8Q==} + /npm-package-json-lint@7.1.0(typescript@5.2.2): + resolution: {integrity: sha512-ypcMpag32TCP89zzLSS+7vjeR2QY613WzmO2upcJgKNWlcswDz8cdb80urbBNHkhSPI40ex3nsKrRDH/WhMYOg==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} hasBin: true dependencies: ajv: 6.12.6 ajv-errors: 1.0.1(ajv@6.12.6) chalk: 4.1.2 - cosmiconfig: 8.2.0 + cosmiconfig: 8.3.6(typescript@5.2.2) debug: 4.3.4 globby: 11.1.0 ignore: 5.2.4 @@ -5072,10 +5372,11 @@ packages: semver: 7.5.4 slash: 3.0.0 strip-json-comments: 3.1.1 - type-fest: 3.12.0 + type-fest: 4.7.1 validate-npm-package-name: 5.0.0 transitivePeerDependencies: - supports-color + - typescript dev: true /npm-run-path@4.0.1: @@ -5125,33 +5426,6 @@ packages: object-keys: 1.1.1 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - - /object.groupby@1.0.0: - resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - get-intrinsic: 1.2.1 - dev: true - - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -5251,6 +5525,11 @@ packages: engines: {node: '>=12.20'} dev: true + /p-defer@1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + dev: true + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -5300,6 +5579,14 @@ packages: aggregate-error: 3.1.0 dev: true + /p-memoize@4.0.1: + resolution: {integrity: sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog==} + engines: {node: '>=10'} + dependencies: + mem: 6.1.1 + mimic-fn: 3.1.0 + dev: true + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -5375,11 +5662,29 @@ packages: lines-and-columns: 1.2.4 dev: true + /parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + dependencies: + '@babel/code-frame': 7.22.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.0 + lines-and-columns: 2.0.4 + type-fest: 3.12.0 + dev: true + /parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} dev: true + /parse-npm-tarball-url@3.0.0: + resolution: {integrity: sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g==} + engines: {node: '>=8.15'} + dependencies: + semver: 6.3.1 + dev: true + /parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} dependencies: @@ -5425,8 +5730,15 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.0.0 - minipass: 5.0.0 + lru-cache: 10.0.2 + minipass: 7.0.4 + dev: true + + /path-temp@2.1.0: + resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} + engines: {node: '>=8.15'} + dependencies: + unique-string: 2.0.0 dev: true /path-type@4.0.0: @@ -5434,6 +5746,11 @@ packages: engines: {node: '>=8'} dev: true + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true @@ -5490,7 +5807,7 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - yaml: 2.3.1 + yaml: 2.3.4 dev: true /postcss@8.4.23: @@ -5520,8 +5837,8 @@ packages: - supports-color dev: true - /prettier-plugin-packagejson@2.4.5(prettier@3.0.3): - resolution: {integrity: sha512-glG71jE1gO3y5+JNAhC8X+4yrlN28rub6Aj461SKbaPie9RgMiHKcInH2Moi2VGOfkTXaEHBhg4uVMBqa+kBUA==} + /prettier-plugin-packagejson@2.4.6(prettier@3.0.3): + resolution: {integrity: sha512-5JGfzkJRL0DLNyhwmiAV9mV0hZLHDwddFCs2lc9CNxOChpoWUQVe8K4qTMktmevmDlMpok2uT10nvHUyU59sNw==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: @@ -5529,7 +5846,7 @@ packages: optional: true dependencies: prettier: 3.0.3 - sort-package-json: 2.5.1 + sort-package-json: 2.6.0 synckit: 0.8.5 dev: true @@ -5555,8 +5872,8 @@ packages: parse-ms: 3.0.0 dev: true - /promise.allsettled@1.0.6: - resolution: {integrity: sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==} + /promise.allsettled@1.0.7: + resolution: {integrity: sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==} engines: {node: '>= 0.4'} dependencies: array.prototype.map: 1.0.5 @@ -5575,8 +5892,8 @@ packages: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} dev: true - /proxy-agent@6.3.0: - resolution: {integrity: sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==} + /proxy-agent@6.3.1: + resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -5643,6 +5960,15 @@ packages: npm-normalize-package-bin: 3.0.0 dev: true + /read-pkg-up@10.1.0: + resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==} + engines: {node: '>=16'} + dependencies: + find-up: 6.3.0 + read-pkg: 8.1.0 + type-fest: 4.7.1 + dev: true + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -5662,6 +5988,16 @@ packages: type-fest: 0.6.0 dev: true + /read-pkg@8.1.0: + resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} + engines: {node: '>=16'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 6.0.0 + parse-json: 7.1.1 + type-fest: 4.7.1 + dev: true + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -5693,19 +6029,19 @@ packages: strip-indent: 3.0.0 dev: true - /refa@0.11.0: - resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} + /refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/regexpp': 4.10.0 dev: true - /regexp-ast-analysis@0.6.0: - resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} + /regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.6.2 - refa: 0.11.0 + '@eslint-community/regexpp': 4.10.0 + refa: 0.12.1 dev: true /regexp.prototype.flags@1.5.0: @@ -5731,21 +6067,21 @@ packages: rc: 1.2.8 dev: true - /release-it@16.1.5: - resolution: {integrity: sha512-w/zCljPZBSYcCwR9fjDB1zaYwie1CAQganUrwNqjtXacXhrrsS5E6dDUNLcxm2ypu8GWAgZNMJfuBJqIO2E7fA==} - engines: {node: '>=16'} + /release-it@17.0.0(typescript@5.2.2): + resolution: {integrity: sha512-1A1sSQy8VXuAJcslZGhKtOD/LVBuf1sH4XqhKsQuh+2EIksC2STx/MdKmVE86jFd/zorHTXOpl7Lr/isD0dDrg==} + engines: {node: '>=18'} hasBin: true dependencies: '@iarna/toml': 2.2.5 - '@octokit/rest': 19.0.13 + '@octokit/rest': 20.0.2 async-retry: 1.3.3 chalk: 5.3.0 - cosmiconfig: 8.2.0 - execa: 7.2.0 - git-url-parse: 13.1.0 - globby: 13.2.2 + cosmiconfig: 8.3.6(typescript@5.2.2) + execa: 8.0.1 + git-url-parse: 13.1.1 + globby: 14.0.0 got: 13.0.0 - inquirer: 9.2.10 + inquirer: 9.2.12 is-ci: 3.0.1 issue-parser: 6.0.0 lodash: 4.17.21 @@ -5755,17 +6091,25 @@ packages: open: 9.1.0 ora: 7.0.1 os-name: 5.1.0 - promise.allsettled: 1.0.6 - proxy-agent: 6.3.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.3.1 semver: 7.5.4 shelljs: 0.8.5 - update-notifier: 6.0.2 + update-notifier: 7.0.0 url-join: 5.0.0 wildcard-match: 5.1.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - encoding - supports-color + - typescript + dev: true + + /rename-overwrite@4.0.3: + resolution: {integrity: sha512-e1zOWZh4Lauz5DcLMC8j4eoOHPIrZkAVpiocE9SkDE1ZrGMW+W88LR1Y2YjD1DFgOYfJWqSsK6JKsRfuRH+tbQ==} + engines: {node: '>=12.10'} + dependencies: + '@zkochan/rimraf': 2.1.3 + fs-extra: 10.1.0 dev: true /repeat-string@1.6.1: @@ -5787,6 +6131,10 @@ packages: engines: {node: '>=8'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -5912,12 +6260,13 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /scslre@0.2.0: - resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} + /scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.6.2 - refa: 0.11.0 - regexp-ast-analysis: 0.6.0 + '@eslint-community/regexpp': 4.10.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 dev: true /semver-diff@4.0.0: @@ -5977,13 +6326,13 @@ packages: rechoir: 0.6.2 dev: true - /should-semantic-release@0.1.1: - resolution: {integrity: sha512-gqZVaRzwRenYqfLv5ZLfUHvudjDvpHmdO4yGBark3+OnUA4AGgpwwLD1+aPPH8atXjKPJmplzN+FfKmJi6Ujfw==} + /should-semantic-release@0.2.1: + resolution: {integrity: sha512-YZ4woZpk11mIj1Aq4I70w6Rm4oOWqMqROHdZuX08nT2JADuW12vb6S5GFtQd+lUdedYbmI6WInD8dF4zuq1a1Q==} engines: {node: '>=18'} hasBin: true dependencies: '@pkgjs/parseargs': 0.11.0 - conventional-commits-parser: 3.2.4 + conventional-commits-parser: 5.0.0 dev: true /side-channel@1.0.4: @@ -6017,6 +6366,11 @@ packages: engines: {node: '>=12'} dev: true + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -6053,8 +6407,8 @@ packages: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} dev: true - /sort-package-json@2.5.1: - resolution: {integrity: sha512-vx/KoZxm8YNMUqdlw7SGTfqR5pqZ/sUfgOuRtDILiOy/3AvzhAibyUe2cY3OpLs3oRSow9up4yLVtQaM24rbDQ==} + /sort-package-json@2.6.0: + resolution: {integrity: sha512-XSQ+lY9bAYA8ZsoChcEoPlgcSMaheziEp1beox1JVxy1SV4F2jSq9+h2rJ+3mC/Dhu9Ius1DLnInD5AWcsDXZw==} hasBin: true dependencies: detect-indent: 7.0.1 @@ -6111,10 +6465,22 @@ packages: readable-stream: 3.6.0 dev: true + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -6218,9 +6584,9 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} dev: true /strip-final-newline@2.0.0: @@ -6315,9 +6681,9 @@ packages: minimatch: 3.1.2 dev: true - /text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} dev: true /text-table@0.2.0: @@ -6408,10 +6774,6 @@ packages: to-no-case: 1.0.2 dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: @@ -6441,15 +6803,6 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -6556,6 +6909,11 @@ packages: engines: {node: '>=14.16'} dev: true + /type-fest@4.7.1: + resolution: {integrity: sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==} + engines: {node: '>=16'} + dev: true + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -6600,6 +6958,10 @@ packages: is-typedarray: 1.0.0 dev: true + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} @@ -6614,6 +6976,14 @@ packages: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} dev: true + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -6629,6 +6999,18 @@ packages: string.fromcodepoint: 0.2.1 dev: true + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: true + /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -6651,24 +7033,27 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-notifier@6.0.2: - resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} - engines: {node: '>=14.16'} + /update-notifier@7.0.0: + resolution: {integrity: sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ==} + engines: {node: '>=18'} dependencies: boxen: 7.1.1 chalk: 5.3.0 configstore: 6.0.0 - has-yarn: 3.0.0 import-lazy: 4.0.0 - is-ci: 3.0.1 + is-in-ci: 0.1.0 is-installed-globally: 0.4.0 is-npm: 6.0.0 - is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 semver: 7.5.4 @@ -6707,6 +7092,13 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validate-npm-package-name@4.0.0: + resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + builtins: 5.0.1 + dev: true + /validate-npm-package-name@5.0.0: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6714,8 +7106,15 @@ packages: builtins: 5.0.1 dev: true - /vite-node@0.34.3(@types/node@20.5.1): - resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} + /version-selector-type@3.0.0: + resolution: {integrity: sha512-PSvMIZS7C1MuVNBXl/CDG2pZq8EXy/NW2dHIdm3bVP5N0PC8utDK8ttXLXj44Gn3J0lQE3U7Mpm1estAOd+eiA==} + engines: {node: '>=10.13'} + dependencies: + semver: 7.5.4 + dev: true + + /vite-node@0.34.6(@types/node@20.5.1): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -6768,8 +7167,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest@0.34.3: - resolution: {integrity: sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==} + /vitest@0.34.6: + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -6802,15 +7201,15 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.5.1 - '@vitest/expect': 0.34.3 - '@vitest/runner': 0.34.3 - '@vitest/snapshot': 0.34.3 - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.7 + chai: 4.3.10 debug: 4.3.4 local-pkg: 0.4.3 magic-string: 0.30.1 @@ -6821,7 +7220,7 @@ packages: tinybench: 2.5.0 tinypool: 0.7.0 vite: 4.3.3(@types/node@20.5.1) - vite-node: 0.34.3(@types/node@20.5.1) + vite-node: 0.34.6(@types/node@20.5.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6836,12 +7235,12 @@ packages: resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} dev: true - /vscode-languageserver-textdocument@1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} dev: true - /vscode-uri@3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} dev: true /wcwidth@1.0.1: @@ -6856,21 +7255,10 @@ packages: engines: {node: '>= 8'} dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - /whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: @@ -6935,6 +7323,10 @@ packages: execa: 5.1.1 dev: true + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -6990,11 +7382,11 @@ packages: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.3.1 + yaml: 2.3.4 dev: true - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} dev: true @@ -7018,15 +7410,15 @@ packages: engines: {node: '>=12.20'} dev: true - /zod-validation-error@1.5.0(zod@3.22.2): + /zod-validation-error@1.5.0(zod@3.22.4): resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} engines: {node: '>=16.0.0'} peerDependencies: zod: ^3.18.0 dependencies: - zod: 3.22.2 + zod: 3.22.4 dev: true - /zod@3.22.2: - resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: true diff --git a/tsup.config.ts b/tsup.config.ts index b9061687..2656d596 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -4,7 +4,7 @@ export default defineConfig({ clean: true, dts: true, entry: ["src/index.ts"], - format: "cjs", + format: ["cjs", "esm"], outDir: "lib", sourcemap: true, });