From 4a55953d714b39b695926bb091c9adf2b0a91b20 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 00:44:32 +0200 Subject: [PATCH 01/11] Diff yarn.lock to find affected workspaces for incremental CI Instead of triggering a full rebuild when yarn.lock changes, diff it against the merge base using @yarnpkg/parsers and @yarnpkg/core to find only the workspaces whose transitive dependencies were actually affected. Compares entry checksums so any change to installed package content is caught, including re-releases under the same version. --- package.json | 4 + scripts/generate-partial-build-tsconfig.mts | 10 +- scripts/get-changed-workspaces.mts | 5 +- scripts/lib/workspaces.mts | 220 ++- yarn.lock | 1851 ++++++++++++++++++- 5 files changed, 1987 insertions(+), 103 deletions(-) diff --git a/package.json b/package.json index 0ce1658b60b..6bc728d5031 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,10 @@ "@types/semver": "^7", "@typescript-eslint/eslint-plugin": "^8.48.0", "@typescript-eslint/parser": "^8.48.0", + "@yarnpkg/cli": "^4.17.1", + "@yarnpkg/core": "^4.9.0", + "@yarnpkg/fslib": "^3.1.5", + "@yarnpkg/parsers": "^3.0.3", "@yarnpkg/types": "^4.0.0", "bats": "^1.13.0", "comment-json": "^4.5.1", diff --git a/scripts/generate-partial-build-tsconfig.mts b/scripts/generate-partial-build-tsconfig.mts index 3867b72b562..30a2b4e5689 100644 --- a/scripts/generate-partial-build-tsconfig.mts +++ b/scripts/generate-partial-build-tsconfig.mts @@ -33,11 +33,13 @@ async function main(): Promise { const allWorkspaces = await getAllWorkspaces(); const typeScriptWorkspaces = await getTypeScriptWorkspaces(); const changedFiles = await getChangedFiles(mergeBase, headRef); - const packagesToBuild = await computeChangedWorkspaces( - allWorkspaces, + + const packagesToBuild = await computeChangedWorkspaces({ + workspaces: allWorkspaces, changedFiles, - true, - ); + includeDependencies: true, + mergeBase, + }); const references = typeScriptWorkspaces .filter(({ name }) => packagesToBuild.has(name)) diff --git a/scripts/get-changed-workspaces.mts b/scripts/get-changed-workspaces.mts index 35bdb42a61a..5a82610c2a0 100644 --- a/scripts/get-changed-workspaces.mts +++ b/scripts/get-changed-workspaces.mts @@ -44,11 +44,12 @@ const workspaces = await getAllWorkspaces(); const changedFiles = await getChangedFiles(mergeBase, headRef); const hasRootChange = checkRootChange(workspaces, changedFiles); -const changed = await computeChangedWorkspaces( +const changed = await computeChangedWorkspaces({ workspaces, changedFiles, includeDependencies, -); + mergeBase, +}); const changedWorkspaces = workspaces.filter(({ name }) => changed.has(name)); diff --git a/scripts/lib/workspaces.mts b/scripts/lib/workspaces.mts index 83e3db44db1..9e61203b3e6 100644 --- a/scripts/lib/workspaces.mts +++ b/scripts/lib/workspaces.mts @@ -1,4 +1,14 @@ import { fileExists } from '@metamask/utils/node'; +import { getPluginConfiguration } from '@yarnpkg/cli'; +import { + Configuration, + LocatorHash, + Project, + structUtils, + ThrowReport, +} from '@yarnpkg/core'; +import { ppath } from '@yarnpkg/fslib'; +import { parseSyml } from '@yarnpkg/parsers'; import execa from 'execa'; import { readFile } from 'node:fs/promises'; import { join } from 'node:path'; @@ -12,6 +22,11 @@ const IGNORED_ROOT_FILES = new Set([ 'CLAUDE.md', 'README.md', 'teams.json', + + // The lockfile has special logic for determining whether a package + // build/test/lint run is required, so it should not trigger a full run on its + // own. + 'yarn.lock', ]); export type Workspace = { @@ -130,6 +145,169 @@ export async function getChangedFiles( return stdout.trim().split('\n').filter(Boolean); } +/** + * Get the set of package names whose entries changed in yarn.lock between + * `mergeBase` and the current working tree. + * + * @param mergeBase - The merge base SHA to compare the lockfile against. + * @returns The set of changed package names. + */ +async function getChangedLockfilePackages( + mergeBase: string, +): Promise> { + const [{ stdout: baseLockContent }, currentLockContent] = await Promise.all([ + execa('git', ['show', `${mergeBase}:yarn.lock`], { + cwd: ROOT_WORKSPACE, + encoding: 'utf8', + }), + readFile(join(ROOT_WORKSPACE, 'yarn.lock'), 'utf-8'), + ]); + + const baseLock = parseSyml(baseLockContent); + const currentLock = parseSyml(currentLockContent); + + const changedPackageNames = new Set(); + const allKeys = new Set([ + ...Object.keys(baseLock), + ...Object.keys(currentLock), + ]); + + for (const key of allKeys) { + // Ignore metadata. + if (key.startsWith('__')) { + continue; + } + + if (baseLock[key]?.checksum === currentLock[key]?.checksum) { + continue; + } + + // A key may be a comma-separated list of descriptors resolving to the same + // version (e.g. "lodash@npm:^4.0.0, lodash@npm:^4.17.0"). + const descriptorKeys = key + .split(',') + .map((descriptorKey) => descriptorKey.trim()); + + for (const descriptorKey of descriptorKeys) { + const descriptor = structUtils.parseDescriptor(descriptorKey); + changedPackageNames.add(structUtils.stringifyIdent(descriptor)); + } + } + + return changedPackageNames; +} + +/** + * Build a map from each workspace name to the full set of its transitive + * dependencies, by walking the resolved lockfile graph via `@yarnpkg/core`. + * + * @returns A map from workspace name to the set of all transitive dependency + * names. + */ +async function buildWorkspaceTransitiveDependencies(): Promise< + Map> +> { + const workingDirectory = ppath.cwd(); + const configuration = await Configuration.find( + workingDirectory, + getPluginConfiguration(), + { + // `@yarnpkg/core` is outdated and with `strict: true` fails with + // "Unrecognized or legacy configuration settings found: + // approvedGitRepositories". + strict: false, + }, + ); + + const { project } = await Project.find(configuration, workingDirectory); + await project.resolveEverything({ + lockfileOnly: true, + report: new ThrowReport(), + }); + + const graph = new Map>(); + + for (const workspace of project.workspaces) { + const name = workspace.manifest.name + ? structUtils.stringifyIdent(workspace.manifest.name) + : 'root'; + + const allTransitiveDependencies = new Set(); + const visitedLocatorHashes = new Set(); + + function walkDependencies(locatorHash: LocatorHash): void { + if (visitedLocatorHashes.has(locatorHash)) { + return; + } + + visitedLocatorHashes.add(locatorHash); + + const packageConfig = project.storedPackages.get(locatorHash); + if (!packageConfig) { + return; + } + + for (const descriptor of packageConfig.dependencies.values()) { + const depName = structUtils.stringifyIdent(descriptor); + allTransitiveDependencies.add(depName); + + const resolvedLocatorHash = project.storedResolutions.get( + descriptor.descriptorHash, + ); + + if (resolvedLocatorHash) { + walkDependencies(resolvedLocatorHash); + } + } + } + + walkDependencies(workspace.anchoredLocator.locatorHash); + graph.set(name, allTransitiveDependencies); + } + + return graph; +} + +/** + * Given a merge base SHA, determine which workspaces are affected by changes + * to `yarn.lock` between that commit and the current working tree. + * + * A workspace is considered affected if any package that changed in the + * lockfile appears in its transitive dependency closure. + * + * @param mergeBase - The merge base SHA to compare the lockfile against. + * @param workspaces - The workspace set to check against. + * @returns The set of workspace names whose transitive dependencies include + * any package that changed in the lockfile. + */ +async function getLockfileAffectedWorkspaces( + mergeBase: string, + workspaces: Workspace[], +): Promise> { + const [changedPackages, workspaceGraph] = await Promise.all([ + getChangedLockfilePackages(mergeBase), + buildWorkspaceTransitiveDependencies(), + ]); + + const result = new Set(); + + for (const { name } of workspaces) { + const transitiveDeps = workspaceGraph.get(name); + if (!transitiveDeps) { + continue; + } + + for (const pkg of changedPackages) { + if (transitiveDeps.has(pkg)) { + result.add(name); + break; + } + } + } + + return result; +} + /** * Check whether any changed file lives outside all package directories and * is not in the ignored root files list. When true, a full @@ -158,16 +336,30 @@ export function checkRootChange( * This is needed for TypeScript project reference builds, where every * referenced project's dist output must already exist on disk. * - * @param workspaces - The workspace set to compute against. - * @param changedFiles - List of changed files relative to the repo root. - * @param includeDependencies - Whether to also expand to transitive dependencies. + * When `yarn.lock` appears in `changedFiles`, the lockfile is diffed against + * `mergeBase` to identify which workspaces have an affected transitive + * dependency, and those are seeded into the result before dependant expansion. + * + * @param options - Options. + * @param options.workspaces - The workspace set to compute against. + * @param options.changedFiles - List of changed files relative to the repo root. + * @param options.includeDependencies - Whether to also expand to transitive + * dependencies. + * @param options.mergeBase - The merge base SHA, used to diff `yarn.lock` when + * it changed. * @returns The set of workspace names to check. */ -export async function computeChangedWorkspaces( - workspaces: Workspace[], - changedFiles: string[], - includeDependencies: boolean, -): Promise> { +export async function computeChangedWorkspaces({ + workspaces, + changedFiles, + includeDependencies, + mergeBase, +}: { + workspaces: Workspace[]; + changedFiles: string[]; + includeDependencies: boolean; + mergeBase: string; +}): Promise> { const { dependants, dependencies } = await getWorkspaceDependencies(workspaces); @@ -186,6 +378,18 @@ export async function computeChangedWorkspaces( }), ); + // When the lockfile changed, diff it to find which workspaces have an + // affected transitive dependency, and seed them into the result before + // the dependant expansion below. + if (changedFiles.includes('yarn.lock')) { + for (const pkg of await getLockfileAffectedWorkspaces( + mergeBase, + workspaces, + )) { + result.add(pkg); + } + } + // Expand to transitive dependants (packages that depend on what changed). for (const pkg of result) { for (const dependant of dependants[pkg] ?? []) { diff --git a/yarn.lock b/yarn.lock index ccc1a5e3a61..20e181db3f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -93,6 +93,31 @@ __metadata: languageName: node linkType: hard +"@algolia/cache-browser-local-storage@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/cache-browser-local-storage@npm:4.27.0" + dependencies: + "@algolia/cache-common": "npm:4.27.0" + checksum: 10/f495cc5130caea73effcee371164fd6322deda3c2b78c26f688542e6c44e706925c148cf48675173b2e3ab7eafa8889bc5cccae07c300f2fd5e990d10cbc0b68 + languageName: node + linkType: hard + +"@algolia/cache-common@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/cache-common@npm:4.27.0" + checksum: 10/0e3629d291ccd4b40919826450bc538a16ec0f1aa77a8f104639dee1de9263a1fa6ff982d1afabae7a14ac91807820d716ed4b8019c0d54dce2b7e9fa361887b + languageName: node + linkType: hard + +"@algolia/cache-in-memory@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/cache-in-memory@npm:4.27.0" + dependencies: + "@algolia/cache-common": "npm:4.27.0" + checksum: 10/055f6220a7ab4db328102d473bb0e4a40afcc1ad8ec215c401361d063865fde2cfab24c947b66080c2214f6168dbc7a289897513556e6bb74856e32c6a22a438 + languageName: node + linkType: hard + "@algolia/client-abtesting@npm:5.52.1": version: 5.52.1 resolution: "@algolia/client-abtesting@npm:5.52.1" @@ -105,6 +130,29 @@ __metadata: languageName: node linkType: hard +"@algolia/client-account@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/client-account@npm:4.27.0" + dependencies: + "@algolia/client-common": "npm:4.27.0" + "@algolia/client-search": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/c9afa59d111eb9fa17dc4ba235d17190845dbfb640a39e4e54e3d3146fb64072367d0b8d9d40694c143d99883c9c0ca226eea1b42b967c14e230d64d4ec72c34 + languageName: node + linkType: hard + +"@algolia/client-analytics@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/client-analytics@npm:4.27.0" + dependencies: + "@algolia/client-common": "npm:4.27.0" + "@algolia/client-search": "npm:4.27.0" + "@algolia/requester-common": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/641ff017787fd941d411a1dfcd66cc5035ca5183d0fbbf96dae9034205228ca4ded7ac02e639aaee20e1d96a9c43fd7fdcb1ab775f4f8a8fc341b1cce9c89c53 + languageName: node + linkType: hard + "@algolia/client-analytics@npm:5.52.1": version: 5.52.1 resolution: "@algolia/client-analytics@npm:5.52.1" @@ -117,6 +165,16 @@ __metadata: languageName: node linkType: hard +"@algolia/client-common@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/client-common@npm:4.27.0" + dependencies: + "@algolia/requester-common": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/860aaf97666e0faae3212b761b3a35f4adbd5b8d1630c0b60659b5cac0bbd37c3afbd900021ae2c24f6e0b22cabcad8f4db0a80c23df0a30faa1f71f4260a913 + languageName: node + linkType: hard + "@algolia/client-common@npm:5.52.1": version: 5.52.1 resolution: "@algolia/client-common@npm:5.52.1" @@ -136,6 +194,17 @@ __metadata: languageName: node linkType: hard +"@algolia/client-personalization@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/client-personalization@npm:4.27.0" + dependencies: + "@algolia/client-common": "npm:4.27.0" + "@algolia/requester-common": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/aba1b4b255e201f1d764ef6a55f258d5cd14004d42de982eee360493dc2688bda4a3e89788448977fdee7358837d2eb42fe3724dc817389555d7f3df6581b673 + languageName: node + linkType: hard + "@algolia/client-personalization@npm:5.52.1": version: 5.52.1 resolution: "@algolia/client-personalization@npm:5.52.1" @@ -160,6 +229,17 @@ __metadata: languageName: node linkType: hard +"@algolia/client-search@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/client-search@npm:4.27.0" + dependencies: + "@algolia/client-common": "npm:4.27.0" + "@algolia/requester-common": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/c7bdce43de232b4e80910f7f7dfca3156c9d21fcc92aff1934f2b5fc255686a14a0db32a02a272be9f79c67534f06105b8cb1b781da6c91f29dc8819e97df100 + languageName: node + linkType: hard + "@algolia/client-search@npm:5.52.1": version: 5.52.1 resolution: "@algolia/client-search@npm:5.52.1" @@ -191,6 +271,22 @@ __metadata: languageName: node linkType: hard +"@algolia/logger-common@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/logger-common@npm:4.27.0" + checksum: 10/1d3c7b445bda72a2696123fcc9bc4e2702908e258ee0596b738e92c169d2524c26b29c7a5eb1c979f1823f5fbb9537113fe3aa56e57c6240c2f51f1ed80f2ec2 + languageName: node + linkType: hard + +"@algolia/logger-console@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/logger-console@npm:4.27.0" + dependencies: + "@algolia/logger-common": "npm:4.27.0" + checksum: 10/ec187e61c07dd528ae059684dcb99bab1e6b530a8c717b5e5e124da1d998b85a8cd376d55540ea490c2aee2b3bdf24b5d4b41e3f72c4974a15b1bcb309de6189 + languageName: node + linkType: hard + "@algolia/monitoring@npm:1.52.1": version: 1.52.1 resolution: "@algolia/monitoring@npm:1.52.1" @@ -203,6 +299,25 @@ __metadata: languageName: node linkType: hard +"@algolia/recommend@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/recommend@npm:4.27.0" + dependencies: + "@algolia/cache-browser-local-storage": "npm:4.27.0" + "@algolia/cache-common": "npm:4.27.0" + "@algolia/cache-in-memory": "npm:4.27.0" + "@algolia/client-common": "npm:4.27.0" + "@algolia/client-search": "npm:4.27.0" + "@algolia/logger-common": "npm:4.27.0" + "@algolia/logger-console": "npm:4.27.0" + "@algolia/requester-browser-xhr": "npm:4.27.0" + "@algolia/requester-common": "npm:4.27.0" + "@algolia/requester-node-http": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/d927e4b2ef8d615e7067903ecca33d8247af050e18005fc6ebbea1799d3122068293258b6db66a88c13a0a6c573e74d5cc1e18ca4004f4e75b46af3aa74e0ef4 + languageName: node + linkType: hard + "@algolia/recommend@npm:5.52.1": version: 5.52.1 resolution: "@algolia/recommend@npm:5.52.1" @@ -215,6 +330,15 @@ __metadata: languageName: node linkType: hard +"@algolia/requester-browser-xhr@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/requester-browser-xhr@npm:4.27.0" + dependencies: + "@algolia/requester-common": "npm:4.27.0" + checksum: 10/8ca2bc006b68cf703cd659f99db04abcf3ff3e89c0633ecab7eb0d26acad030121fcd3f7e2990efb7fa16f389d0109ee4d4aefc4f95d4d57dacd8ff16289eee9 + languageName: node + linkType: hard + "@algolia/requester-browser-xhr@npm:5.52.1": version: 5.52.1 resolution: "@algolia/requester-browser-xhr@npm:5.52.1" @@ -224,6 +348,13 @@ __metadata: languageName: node linkType: hard +"@algolia/requester-common@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/requester-common@npm:4.27.0" + checksum: 10/000c125faa1e69f273c7ce0445284babed6ea519997eaeef06b010be3abdd1e77dc454d4cf712693ebc37f68a564052e2cf3e623ab0916c5f7d7c036a6c2e3f1 + languageName: node + linkType: hard + "@algolia/requester-fetch@npm:5.52.1": version: 5.52.1 resolution: "@algolia/requester-fetch@npm:5.52.1" @@ -233,6 +364,15 @@ __metadata: languageName: node linkType: hard +"@algolia/requester-node-http@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/requester-node-http@npm:4.27.0" + dependencies: + "@algolia/requester-common": "npm:4.27.0" + checksum: 10/eb8c47aed7d3245393f6d6b76e8c3cd144fbbe990ca93f45e9d2f08d9ec2fb46a379db7796c2bbca1e0179a86812ecd42eb3ad3613ab44065e95b655855740ed + languageName: node + linkType: hard + "@algolia/requester-node-http@npm:5.52.1": version: 5.52.1 resolution: "@algolia/requester-node-http@npm:5.52.1" @@ -242,6 +382,26 @@ __metadata: languageName: node linkType: hard +"@algolia/transporter@npm:4.27.0": + version: 4.27.0 + resolution: "@algolia/transporter@npm:4.27.0" + dependencies: + "@algolia/cache-common": "npm:4.27.0" + "@algolia/logger-common": "npm:4.27.0" + "@algolia/requester-common": "npm:4.27.0" + checksum: 10/5efaa7651605ceaca1935b553afdf2c44b4a501fc51ab3852967c632dd86d6084408a5cdcb8202cee001a15863335a290d3d997d2e0666f25f9b4a4175c8cbf5 + languageName: node + linkType: hard + +"@arcanis/slice-ansi@npm:^1.1.1": + version: 1.1.1 + resolution: "@arcanis/slice-ansi@npm:1.1.1" + dependencies: + grapheme-splitter: "npm:^1.0.4" + checksum: 10/14ed60cb45750d386c64229ac7bab20e10eedc193503fa4decff764162d329d6d3363ed2cd3debec833186ee54affe4f824f6e8eff531295117fd1ebda200270 + languageName: node + linkType: hard + "@asamuzakjp/css-color@npm:^3.2.0": version: 3.2.0 resolution: "@asamuzakjp/css-color@npm:3.2.0" @@ -6459,6 +6619,10 @@ __metadata: "@types/semver": "npm:^7" "@typescript-eslint/eslint-plugin": "npm:^8.48.0" "@typescript-eslint/parser": "npm:^8.48.0" + "@yarnpkg/cli": "npm:^4.17.1" + "@yarnpkg/core": "npm:^4.9.0" + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/parsers": "npm:^3.0.3" "@yarnpkg/types": "npm:^4.0.0" bats: "npm:^1.13.0" comment-json: "npm:^4.5.1" @@ -9639,6 +9803,19 @@ __metadata: languageName: node linkType: hard +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10/775c9a7eb1f88c195dfb3bce70c31d0fe2a12b28b754e25c08a3edb4bc4816bfedb7ac64ef1e730579d078ca19dacf11630e99f8f3c3e0fd7b23caa5fd6d30a6 + languageName: node + linkType: hard + "@npmcli/fs@npm:^3.1.0": version: 3.1.1 resolution: "@npmcli/fs@npm:3.1.1" @@ -9648,6 +9825,15 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10/405c4490e1ff11cf299775449a3c254a366a4b1ffc79d87159b0ee7d5558ac9f6a2f8c0735fd6ff3873cef014cb1a44a5f9127cb6a1b2dbc408718cca9365b5a + languageName: node + linkType: hard + "@npmcli/git@npm:^5.0.0": version: 5.0.8 resolution: "@npmcli/git@npm:5.0.8" @@ -10675,6 +10861,64 @@ __metadata: languageName: node linkType: hard +"@sigstore/bundle@npm:^3.1.0": + version: 3.1.0 + resolution: "@sigstore/bundle@npm:3.1.0" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.4.0" + checksum: 10/21b246ec63462e8508a8d001ca5d7937f63b6e15d5f2947ee2726d1e4674fb3f7640faa47b165bfea1d5b09df93fbdf10d1556427bba7e005e7f3a65b87f89b2 + languageName: node + linkType: hard + +"@sigstore/core@npm:^2.0.0": + version: 2.0.0 + resolution: "@sigstore/core@npm:2.0.0" + checksum: 10/ec1deae9430eeff580ad0f4ef2328b4eb7252db04587474fe9423d97736134ad79ee83aa2dfbc1fccfb18420c249e26e6e72e7176b592d7013eae5379dcb124d + languageName: node + linkType: hard + +"@sigstore/protobuf-specs@npm:^0.4.0, @sigstore/protobuf-specs@npm:^0.4.1": + version: 0.4.3 + resolution: "@sigstore/protobuf-specs@npm:0.4.3" + checksum: 10/05bcb534b6096c095185c74b1718af89666299444490d84d35610f590bc4e2bf1a6a29c2c4f18598ddbd3a8a43c95f0a89faa98c05b44ff0be1dcd8b39f7e323 + languageName: node + linkType: hard + +"@sigstore/sign@npm:^3.1.0": + version: 3.1.0 + resolution: "@sigstore/sign@npm:3.1.0" + dependencies: + "@sigstore/bundle": "npm:^3.1.0" + "@sigstore/core": "npm:^2.0.0" + "@sigstore/protobuf-specs": "npm:^0.4.0" + make-fetch-happen: "npm:^14.0.2" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + checksum: 10/e0ce0aa52b572eefa06a8260a7329f349c56217f2bbb6f167259c6e02e148987073e0dddc5e3c40ea4aafc89b8b0176e2617fb16f9c8c50cf0c1437b6c90fca4 + languageName: node + linkType: hard + +"@sigstore/tuf@npm:^3.1.0": + version: 3.1.1 + resolution: "@sigstore/tuf@npm:3.1.1" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.4.1" + tuf-js: "npm:^3.0.1" + checksum: 10/f6eeba3fa72fa22b119af84b4a3d5ce2ad50c2e1600241f493ed4d8ec1d128a437d649c9e5cdf0135edf0db82468f8c7c25458ab97978aa5780ab7aece1ade48 + languageName: node + linkType: hard + +"@sigstore/verify@npm:^2.1.0": + version: 2.1.1 + resolution: "@sigstore/verify@npm:2.1.1" + dependencies: + "@sigstore/bundle": "npm:^3.1.0" + "@sigstore/core": "npm:^2.0.0" + "@sigstore/protobuf-specs": "npm:^0.4.1" + checksum: 10/ff2aa8c441fd45b20a048b8746fa1d6096e3385a7098352b24703bca790d0555383d21f29b0ce8223c36dd98e14ed7dae82d044ff005c76e0e68c240f0a0458d + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -10689,7 +10933,7 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/is@npm:^4.6.0": +"@sindresorhus/is@npm:^4.0.0, @sindresorhus/is@npm:^4.6.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" checksum: 10/e7f36ed72abfcd5e0355f7423a72918b9748bb1ef370a59f3e5ad8d40b728b85d63b272f65f63eec1faf417cda89dcb0aeebe94015647b6054659c1442fe5ce0 @@ -11021,6 +11265,15 @@ __metadata: languageName: node linkType: hard +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: "npm:^2.0.0" + checksum: 10/c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^5.0.1": version: 5.0.1 resolution: "@szmarczak/http-timer@npm:5.0.1" @@ -11158,6 +11411,23 @@ __metadata: languageName: node linkType: hard +"@tufjs/canonical-json@npm:2.0.0": + version: 2.0.0 + resolution: "@tufjs/canonical-json@npm:2.0.0" + checksum: 10/cc719a1d0d0ae1aa1ba551a82c87dcbefac088e433c03a3d8a1d547ea721350e47dab4ab5b0fca40d5c7ab1f4882e72edc39c9eae15bf47c45c43bcb6ee39f4f + languageName: node + linkType: hard + +"@tufjs/models@npm:3.0.1": + version: 3.0.1 + resolution: "@tufjs/models@npm:3.0.1" + dependencies: + "@tufjs/canonical-json": "npm:2.0.0" + minimatch: "npm:^9.0.5" + checksum: 10/00636238b2e3ce557e7b5f6884594ee2379fd5a9588401fd6c8be2e2867fcaf836e226c6be81d87006701746037847e13bbc263c0ed0f38b4f28b1108a4b1d81 + languageName: node + linkType: hard + "@tybys/wasm-util@npm:^0.10.0, @tybys/wasm-util@npm:^0.10.3": version: 0.10.3 resolution: "@tybys/wasm-util@npm:0.10.3" @@ -11245,6 +11515,18 @@ __metadata: languageName: node linkType: hard +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" + dependencies: + "@types/http-cache-semantics": "npm:*" + "@types/keyv": "npm:^3.1.4" + "@types/node": "npm:*" + "@types/responselike": "npm:^1.0.0" + checksum: 10/159f9fdb2a1b7175eef453ae2ced5ea04c0d2b9610cc9ccd9f9abb066d36dacb1f37acd879ace10ad7cbb649490723feb396fb7307004c9670be29636304b988 + languageName: node + linkType: hard + "@types/connect-history-api-fallback@npm:^1.5.4": version: 1.5.4 resolution: "@types/connect-history-api-fallback@npm:1.5.4" @@ -11296,6 +11578,13 @@ __metadata: languageName: node linkType: hard +"@types/emscripten@npm:^1.39.6": + version: 1.41.5 + resolution: "@types/emscripten@npm:1.41.5" + checksum: 10/60dfcced39b2d0c94f31907c5cf5d97fe06ed35ed6cb134650a1a96bae861302722d4a6f459b484ea09588cde70cbcc034974454a746be3ce9688b52398d2953 + languageName: node + linkType: hard + "@types/eslint@npm:^8.44.7": version: 8.56.12 resolution: "@types/eslint@npm:8.56.12" @@ -11399,7 +11688,7 @@ __metadata: languageName: node linkType: hard -"@types/http-cache-semantics@npm:^4.0.2": +"@types/http-cache-semantics@npm:*, @types/http-cache-semantics@npm:^4.0.2": version: 4.2.0 resolution: "@types/http-cache-semantics@npm:4.2.0" checksum: 10/01ea0dc9c1852267f5f9a0190846ac158707994b8e325bca190385ec97aa773d4a99cd333e22e838bde3c9aba59e2b5a6ac399b494c203587c6d8f28d21d6326 @@ -11498,6 +11787,15 @@ __metadata: languageName: node linkType: hard +"@types/keyv@npm:^3.1.4": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "npm:*" + checksum: 10/e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d + languageName: node + linkType: hard + "@types/lodash@npm:^4.14.191, @types/lodash@npm:^4.17.20": version: 4.17.20 resolution: "@types/lodash@npm:4.17.20" @@ -11568,6 +11866,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^18.19.124": + version: 18.19.130 + resolution: "@types/node@npm:18.19.130" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10/ebb85c6edcec78df926de27d828ecbeb1b3d77c165ceef95bfc26e171edbc1924245db4eb2d7d6230206fe6b1a1f7665714fe1c70739e9f5980d8ce31af6ef82 + languageName: node + linkType: hard + "@types/npm-which@npm:^3": version: 3.0.4 resolution: "@types/npm-which@npm:3.0.4" @@ -11665,6 +11972,15 @@ __metadata: languageName: node linkType: hard +"@types/responselike@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/responselike@npm:1.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10/6ac4b35723429b11b117e813c7acc42c3af8b5554caaf1fc750404c1ae59f9b7376bc69b9e9e194a5a97357a597c2228b7173d317320f0360d617b6425212f58 + languageName: node + linkType: hard + "@types/retry@npm:0.12.2": version: 0.12.2 resolution: "@types/retry@npm:0.12.2" @@ -11697,6 +12013,13 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^7.1.0": + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10/8f09e7e6ca3ded67d78ba7a8f7535c8d9cf8ced83c52e7f3ac3c281fe8c689c3fe475d199d94390dc04fc681d51f2358b430bb7b2e21c62de24f2bee2c719068 + languageName: node + linkType: hard + "@types/send@npm:*": version: 1.2.1 resolution: "@types/send@npm:1.2.1" @@ -11769,6 +12092,13 @@ __metadata: languageName: node linkType: hard +"@types/treeify@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/treeify@npm:1.0.3" + checksum: 10/777e579b30a916a781e7cbad2b7a76bc5473ff7bfe7167dd6de47f80f4386df5bf3d0dc34170afb75d52e75f6ed61cc109abf2324e093c1f9ecd4e79fec58d0c + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.3 resolution: "@types/unist@npm:3.0.3" @@ -11840,6 +12170,13 @@ __metadata: languageName: node linkType: hard +"@types/yoga-layout@npm:1.9.2": + version: 1.9.2 + resolution: "@types/yoga-layout@npm:1.9.2" + checksum: 10/3cbcab36d9e19d077cc2bc956d3182dc26f35f13f8fcf01648717bcba412be7ed3c4b6f43c4f8f201ea815160d0cb2b96e82698c4b43d4a179c5603a7725f34e + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:8.54.0, @typescript-eslint/eslint-plugin@npm:^8.48.0": version: 8.54.0 resolution: "@typescript-eslint/eslint-plugin@npm:8.54.0" @@ -12296,108 +12633,688 @@ __metadata: languageName: node linkType: hard -"@yarnpkg/types@npm:^4.0.0": - version: 4.0.0 - resolution: "@yarnpkg/types@npm:4.0.0" - dependencies: +"@yarnpkg/cli@npm:^4.17.1": + version: 4.17.1 + resolution: "@yarnpkg/cli@npm:4.17.1" + dependencies: + "@yarnpkg/core": "npm:^4.9.0" + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/libzip": "npm:^3.2.2" + "@yarnpkg/parsers": "npm:^3.0.3" + "@yarnpkg/plugin-catalog": "npm:^1.0.2" + "@yarnpkg/plugin-compat": "npm:^4.0.13" + "@yarnpkg/plugin-constraints": "npm:^4.0.5" + "@yarnpkg/plugin-dlx": "npm:^4.0.2" + "@yarnpkg/plugin-essentials": "npm:^4.6.1" + "@yarnpkg/plugin-exec": "npm:^3.1.0" + "@yarnpkg/plugin-file": "npm:^3.0.2" + "@yarnpkg/plugin-git": "npm:^3.2.0" + "@yarnpkg/plugin-github": "npm:^3.0.2" + "@yarnpkg/plugin-http": "npm:^3.0.3" + "@yarnpkg/plugin-init": "npm:^4.1.2" + "@yarnpkg/plugin-interactive-tools": "npm:^4.1.0" + "@yarnpkg/plugin-jsr": "npm:^1.1.1" + "@yarnpkg/plugin-link": "npm:^3.0.2" + "@yarnpkg/plugin-nm": "npm:^4.1.0" + "@yarnpkg/plugin-npm": "npm:^3.7.0" + "@yarnpkg/plugin-npm-cli": "npm:^4.5.0" + "@yarnpkg/plugin-pack": "npm:^4.0.4" + "@yarnpkg/plugin-patch": "npm:^4.0.5" + "@yarnpkg/plugin-pnp": "npm:^4.2.0" + "@yarnpkg/plugin-pnpm": "npm:^2.3.0" + "@yarnpkg/plugin-stage": "npm:^4.0.2" + "@yarnpkg/plugin-typescript": "npm:^4.1.3" + "@yarnpkg/plugin-version": "npm:^4.2.0" + "@yarnpkg/plugin-workspace-tools": "npm:^4.1.7" + "@yarnpkg/shell": "npm:^4.1.3" + ci-info: "npm:^4.0.0" + clipanion: "npm:^4.0.0-rc.2" + semver: "npm:^7.1.2" tslib: "npm:^2.4.0" - checksum: 10/f9670e120761a4d17461df2f01aa4b92213fbdd063501a36145d11ea01bd87ba01d44615cba3d6bc8f9bfc39a03a9a6452bf0436c7fb0c9c5311352b975349e6 + typanion: "npm:^3.14.0" + peerDependencies: + "@yarnpkg/core": ^4.9.0 + checksum: 10/e91a2eea7f6dd5f33980302016cf10faee3272830b9c2136ace7738d73c0ea3c0459f81ac7a3c68c11df1fda7a6c4540f6a0a5921150b495efeee25dff0d09f0 languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10/ca0a54e35bea4ece0ecb68a47b312e1a9a6f772408d5bcb9051230aaa94b0460671c5b5c9cb3240eb5b7bc94c52476550eb221f65a0bbd0145bdc9f3113a6707 +"@yarnpkg/core@npm:^4.9.0": + version: 4.9.0 + resolution: "@yarnpkg/core@npm:4.9.0" + dependencies: + "@arcanis/slice-ansi": "npm:^1.1.1" + "@types/semver": "npm:^7.1.0" + "@types/treeify": "npm:^1.0.0" + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/libzip": "npm:^3.2.2" + "@yarnpkg/parsers": "npm:^3.0.3" + "@yarnpkg/shell": "npm:^4.1.3" + camelcase: "npm:^5.3.1" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.0.0" + clipanion: "npm:^4.0.0-rc.2" + cross-spawn: "npm:^7.0.3" + diff: "npm:^5.1.0" + dotenv: "npm:^16.3.1" + es-toolkit: "npm:^1.39.7" + fast-glob: "npm:^3.2.2" + got: "npm:^11.7.0" + hpagent: "npm:^1.2.0" + micromatch: "npm:^4.0.2" + p-limit: "npm:^2.2.0" + semver: "npm:^7.1.2" + strip-ansi: "npm:^6.0.0" + tar: "npm:^7.5.3" + tinylogic: "npm:^2.0.0" + treeify: "npm:^1.1.0" + tslib: "npm:^2.4.0" + checksum: 10/5f7364855889641c258353c8e06b130bbe09b4d567d4dbfbdf88859b98175714a8b61a223499c92a28eef1bdc1638f12f16938ec116c44363c068f6100faeb92 languageName: node linkType: hard -"abitype@npm:1.2.3": - version: 1.2.3 - resolution: "abitype@npm:1.2.3" +"@yarnpkg/extensions@npm:^2.0.6": + version: 2.0.6 + resolution: "@yarnpkg/extensions@npm:2.0.6" peerDependencies: - typescript: ">=5.0.4" - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - checksum: 10/94e744c2fc301b1cff59163a21b499aae0ddecdf4d3bef1579ff16b705e6f5738fd314125d791ed142487db2473d4fadcdbabb1e05e4b5d35715bc4ef35e400a + "@yarnpkg/core": ^4.4.2 + checksum: 10/25c64f8f3db5c7cbabbc3a86f6d018961486b50df1065e64d8acacd6c048d33d18c07d8717f52fd8ecb5eb3429b1f42f8692d82db18fe981f3e85f4ee8d04d09 languageName: node linkType: hard -"abitype@npm:^1.2.3": - version: 1.2.4 - resolution: "abitype@npm:1.2.4" +"@yarnpkg/fslib@npm:^3.1.2, @yarnpkg/fslib@npm:^3.1.3, @yarnpkg/fslib@npm:^3.1.4, @yarnpkg/fslib@npm:^3.1.5": + version: 3.1.5 + resolution: "@yarnpkg/fslib@npm:3.1.5" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/67b4850cdfbf0c11460302d997c0eacab46246cc8c7718a045beca346c494163e15768e2d20ab719ff6a98adbe7eaa9efcecdfd5cb0b8539f84a96449ac7ceaa + languageName: node + linkType: hard + +"@yarnpkg/libui@npm:^3.0.2, @yarnpkg/libui@npm:^3.1.0": + version: 3.1.0 + resolution: "@yarnpkg/libui@npm:3.1.0" + dependencies: + tslib: "npm:^2.4.0" peerDependencies: - typescript: ">=5.0.4" - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - checksum: 10/500b317a53b34cb6ffe3e4f090e135972b43cd2fbdfebe64fc497dfd8515d9117919e5f88f0aaede332d29a21c1826be64a3ffa620b0b91c16e8b560b6635714 + ink: ^3.0.8 + react: ^17.0.2 + checksum: 10/7433bea5b909960e9a19356c615a487bead35e146b66a47835bc51ca41031f909cfa5c21c2a0ba2b62c6d1b8bc9a832cba24ce9159e84ea17eb703fb888dfba7 languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" +"@yarnpkg/libzip@npm:^3.2.1, @yarnpkg/libzip@npm:^3.2.2": + version: 3.2.2 + resolution: "@yarnpkg/libzip@npm:3.2.2" dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 10/ed84af329f1828327798229578b4fe03a4dd2596ba304083ebd2252666bdc1d7647d66d0b18704477e1f8aa315f055944aa6e859afebd341f12d0a53c37b4b40 + "@types/emscripten": "npm:^1.39.6" + "@yarnpkg/fslib": "npm:^3.1.3" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/fslib": ^3.1.3 + checksum: 10/b6548be0a421e2390b74fd767d5f90e6da34a84af3ca28389b86d7f9e7602663f01347b5081cb93f8821877cae3ed48d2cb1cb8c35a4a4f7fc3d00109c85af0f languageName: node linkType: hard -"accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" +"@yarnpkg/nm@npm:^4.1.0": + version: 4.1.0 + resolution: "@yarnpkg/nm@npm:4.1.0" dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10/67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6 + "@yarnpkg/core": "npm:^4.9.0" + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/pnp": "npm:^4.1.7" + checksum: 10/f3876684dbb84a6482e186ce492dd114be46adbc760e8b23b26dd3321e2911003b6a08547ad247a438c8ffc2b7b1a1adc7b73ac187c3f4e17755ffb8e0389159 languageName: node linkType: hard -"acorn-import-phases@npm:^1.0.3": - version: 1.0.4 - resolution: "acorn-import-phases@npm:1.0.4" - peerDependencies: - acorn: ^8.14.0 - checksum: 10/471050ac7d9b61909c837b426de9eeef2958997f6277ad7dea88d5894fd9b3245d8ed4a225c2ca44f814dbb20688009db7a80e525e8196fc9e98c5285b66161d +"@yarnpkg/parsers@npm:^3.0.3": + version: 3.0.3 + resolution: "@yarnpkg/parsers@npm:3.0.3" + dependencies: + js-yaml: "npm:^3.10.0" + tslib: "npm:^2.4.0" + checksum: 10/379f7ff8fc1b37d3818dfeba4e18a72f8e9817bb41aab9332b50bbc843e45c9bf135563a7a06882ffb50e4cdd29c8da33c8e4f3739201de2fbcd38ecb59e3a8e languageName: node linkType: hard -"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" +"@yarnpkg/plugin-catalog@npm:^1.0.2": + version: 1.0.2 + resolution: "@yarnpkg/plugin-catalog@npm:1.0.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.4" + tslib: "npm:^2.4.0" peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10/d4371eaef7995530b5b5ca4183ff6f062ca17901a6d3f673c9ac011b01ede37e7a1f7f61f8f5cfe709e88054757bb8f3277dc4061087cdf4f2a1f90ccbcdb977 + "@yarnpkg/core": ^4.5.0 + "@yarnpkg/plugin-pack": ^4.0.4 + checksum: 10/75199f87bbbae189445b619aaf009ad2df0ca05217a8a0bddce6a8f5a2f176594981be5cb438749a0fb8ecd27909a4e1befea65c449699439601d099cddb56c4 languageName: node linkType: hard -"acorn-walk@npm:^8.0.0": - version: 8.3.5 - resolution: "acorn-walk@npm:8.3.5" +"@yarnpkg/plugin-compat@npm:^4.0.13": + version: 4.0.13 + resolution: "@yarnpkg/plugin-compat@npm:4.0.13" dependencies: - acorn: "npm:^8.11.0" - checksum: 10/f52a158a1c1f00c82702c7eb9b8ae8aad79748a7689241dcc2d797dce680f1dcb15c78f312f687eeacdfb3a4cac4b87d04af470f0201bd56c6661fca6f94b195 + "@yarnpkg/extensions": "npm:^2.0.6" + peerDependencies: + "@yarnpkg/core": ^4.9.0 + "@yarnpkg/plugin-patch": ^4.0.5 + checksum: 10/64d2d802a40538e95cf07ca6a77562e4ee1bca7e9babf20f20869fe479272b20715d941e4f6e46993fcb6a88cbbe3f9b54a6b46aa84915f6976c780765d50de8 languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.16.0": - version: 8.16.0 - resolution: "acorn@npm:8.16.0" - bin: - acorn: bin/acorn - checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b +"@yarnpkg/plugin-constraints@npm:^4.0.5": + version: 4.0.5 + resolution: "@yarnpkg/plugin-constraints@npm:4.0.5" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + clipanion: "npm:^4.0.0-rc.2" + es-toolkit: "npm:^1.39.7" + tau-prolog: "npm:^0.2.66" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.9.3 + "@yarnpkg/core": ^4.4.3 + checksum: 10/e6ab9ffa6ac617ae7ead85767a0fb93ccdf8767369d865d02a5e4ba1d328b75c1a6249ee59fa19f33c30c9d1789bf47c991f1b6c9495338ffad461f083bd55d0 languageName: node linkType: hard -"address@npm:^1.0.1": +"@yarnpkg/plugin-dlx@npm:^4.0.2": + version: 4.0.2 + resolution: "@yarnpkg/plugin-dlx@npm:4.0.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + clipanion: "npm:^4.0.0-rc.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.9.2 + "@yarnpkg/core": ^4.4.2 + checksum: 10/46bfde91420a20fc04a377c6dbfb5c7e205a9963b78e96e7d6d31a7b2ff3d587d4dd4d54d1fe2786ebe7140df99374620b881ecac0cc30b03a91ff117ffe070b + languageName: node + linkType: hard + +"@yarnpkg/plugin-essentials@npm:^4.6.1": + version: 4.6.1 + resolution: "@yarnpkg/plugin-essentials@npm:4.6.1" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/parsers": "npm:^3.0.3" + ci-info: "npm:^4.0.0" + clipanion: "npm:^4.0.0-rc.2" + enquirer: "npm:^2.3.6" + es-toolkit: "npm:^1.39.7" + micromatch: "npm:^4.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + typanion: "npm:^3.14.0" + peerDependencies: + "@yarnpkg/cli": ^4.17.0 + "@yarnpkg/core": ^4.9.0 + "@yarnpkg/plugin-git": ^3.2.0 + checksum: 10/6a113484d737f204b39481dd52e2e63584373eccd821855d2b3704b3dd7b2beb0a75ccdaa0c11d0672f502c79f542bcddde3fea751013432cf234cf4e26e8e1c + languageName: node + linkType: hard + +"@yarnpkg/plugin-exec@npm:^3.1.0": + version: 3.1.0 + resolution: "@yarnpkg/plugin-exec@npm:3.1.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.7.0 + checksum: 10/8833036da1f2fc5d73bf230a55b263ce20e7e18f67750e56cb5f5cb9370a6077cc33399370327af683eb25c3196538a539e806c24bacd467b3b8d25c498198d1 + languageName: node + linkType: hard + +"@yarnpkg/plugin-file@npm:^3.0.2": + version: 3.0.2 + resolution: "@yarnpkg/plugin-file@npm:3.0.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + "@yarnpkg/libzip": "npm:^3.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.4.2 + checksum: 10/5503733c110edf04ccdf4cbc0027bd4348f8d898903db608ae39995e15dd2c6ddae3841168307877213728f2ec99d706ea7829184ae1e1747f199a3900e98c0a + languageName: node + linkType: hard + +"@yarnpkg/plugin-git@npm:^3.2.0": + version: 3.2.0 + resolution: "@yarnpkg/plugin-git@npm:3.2.0" + dependencies: + "@types/semver": "npm:^7.1.0" + "@yarnpkg/fslib": "npm:^3.1.5" + clipanion: "npm:^4.0.0-rc.2" + es-toolkit: "npm:^1.39.7" + git-url-parse: "npm:^13.1.0" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.7.0 + checksum: 10/123a130e7d595795867a6ead3e21dc2d424d273fa9cd06f8900bb7beca302e410e22a1a4b4de369746da0bc539856814fa513ab1d3d19e316a0a23e3d425d06f + languageName: node + linkType: hard + +"@yarnpkg/plugin-github@npm:^3.0.2": + version: 3.0.2 + resolution: "@yarnpkg/plugin-github@npm:3.0.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.4.2 + "@yarnpkg/plugin-git": ^3.1.2 + checksum: 10/7c060a43f228e8e830f5d133bbf4128f98995c4bd39f295dc872e9e1024d0977ffde8b94b10c75f638531eeb2c98345d9267ac4d07cf050c8380ae610b37bf4b + languageName: node + linkType: hard + +"@yarnpkg/plugin-http@npm:^3.0.3": + version: 3.0.3 + resolution: "@yarnpkg/plugin-http@npm:3.0.3" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.4.2 + checksum: 10/d67a1680f445edfed1e86d97bbfac3b8efd3732764afacb8d81aa564f20eb1407482978cc331a24be315617e8d41bfbe4e06ebefe1883cb9f446918ec94672d8 + languageName: node + linkType: hard + +"@yarnpkg/plugin-init@npm:^4.1.2": + version: 4.1.2 + resolution: "@yarnpkg/plugin-init@npm:4.1.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + clipanion: "npm:^4.0.0-rc.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.9.2 + "@yarnpkg/core": ^4.4.2 + checksum: 10/34b014c8f70700743e565a9e2d6ee9d676027c9e7e15dfd7fb51c7f1c7bc633123a72a0bafc114ac664475a1e2432bb4e6527a254818d3986869f758aaa6669d + languageName: node + linkType: hard + +"@yarnpkg/plugin-interactive-tools@npm:^4.1.0": + version: 4.1.0 + resolution: "@yarnpkg/plugin-interactive-tools@npm:4.1.0" + dependencies: + "@yarnpkg/libui": "npm:^3.1.0" + algoliasearch: "npm:^4.2.0" + clipanion: "npm:^4.0.0-rc.2" + diff: "npm:^5.1.0" + ink: "npm:^3.2.0" + ink-text-input: "npm:^4.0.3" + react: "npm:^17.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + typanion: "npm:^3.14.0" + peerDependencies: + "@yarnpkg/cli": ^4.13.0 + "@yarnpkg/core": ^4.6.0 + "@yarnpkg/plugin-essentials": ^4.4.5 + checksum: 10/0e4620fdef2044115fe015197f714e7a8ff1a07f69e31c1a256c1a077a66fc3dbde022e533ee116d0a0ca036b50fc25fbd63c3ec3a7b7de2b4e86069625461b2 + languageName: node + linkType: hard + +"@yarnpkg/plugin-jsr@npm:^1.1.1": + version: 1.1.1 + resolution: "@yarnpkg/plugin-jsr@npm:1.1.1" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.4.2 + checksum: 10/f207f24c9284f0aad27a3e99df855f13bc9fae1a1ecc14880559a5507a1fde15714cdb6998e38d198aac4edae16f8a4ec5e8f4324f5d1adf3dcca14cf604c47e + languageName: node + linkType: hard + +"@yarnpkg/plugin-link@npm:^3.0.2": + version: 3.0.2 + resolution: "@yarnpkg/plugin-link@npm:3.0.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.4.2 + checksum: 10/48f7c8e3e652b9a6fc78d6027571cadd6bbe290df57deefc05a6a864b021d8894c22e94b74d5587bd6cdf511e4eb5a30a6ca022123e06d81a5833a3849b1d1d0 + languageName: node + linkType: hard + +"@yarnpkg/plugin-nm@npm:^4.1.0": + version: 4.1.0 + resolution: "@yarnpkg/plugin-nm@npm:4.1.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/libzip": "npm:^3.2.2" + "@yarnpkg/nm": "npm:^4.1.0" + "@yarnpkg/parsers": "npm:^3.0.3" + "@yarnpkg/plugin-pnp": "npm:^4.2.0" + "@yarnpkg/pnp": "npm:^4.1.7" + "@zkochan/cmd-shim": "npm:^5.1.0" + clipanion: "npm:^4.0.0-rc.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.17.0 + "@yarnpkg/core": ^4.9.0 + checksum: 10/04cf066ca6995bc94b7b7b53c8fd48ecc826271d10e524c8f8df190fb8cce045537d3f34b9a1164bf3361b8380ecb6c0baeb0f0c08277dbf3e2b26e55d4fdef8 + languageName: node + linkType: hard + +"@yarnpkg/plugin-npm-cli@npm:^4.5.0": + version: 4.5.0 + resolution: "@yarnpkg/plugin-npm-cli@npm:4.5.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + clipanion: "npm:^4.0.0-rc.2" + enquirer: "npm:^2.3.6" + micromatch: "npm:^4.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + typanion: "npm:^3.14.0" + peerDependencies: + "@yarnpkg/cli": ^4.16.0 + "@yarnpkg/core": ^4.8.0 + "@yarnpkg/plugin-npm": ^3.6.0 + "@yarnpkg/plugin-pack": ^4.0.4 + checksum: 10/f1214e5453f24711ace7a7a345fc57336002c24703060be5d710daa9340473502439d9927ee9158b78374b3f98c56ea9b45707d21ebe8a716d92b85bc32aca60 + languageName: node + linkType: hard + +"@yarnpkg/plugin-npm@npm:^3.7.0": + version: 3.7.0 + resolution: "@yarnpkg/plugin-npm@npm:3.7.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + enquirer: "npm:^2.3.6" + es-toolkit: "npm:^1.39.7" + micromatch: "npm:^4.0.2" + semver: "npm:^7.1.2" + sigstore: "npm:^3.1.0" + ssri: "npm:^12.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.9.0 + "@yarnpkg/plugin-pack": ^4.0.4 + checksum: 10/3dd4f058600d41ef25f70791efd0b837b355ac3eb2664124856e6ce56224a5f80b894224e38ec31c7fb55a3829a09b7eaabe887cd5ae57b917c2991125fff1cc + languageName: node + linkType: hard + +"@yarnpkg/plugin-pack@npm:^4.0.2, @yarnpkg/plugin-pack@npm:^4.0.4": + version: 4.0.4 + resolution: "@yarnpkg/plugin-pack@npm:4.0.4" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.3" + clipanion: "npm:^4.0.0-rc.2" + micromatch: "npm:^4.0.2" + tar-stream: "npm:^2.0.1" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.10.1 + "@yarnpkg/core": ^4.4.4 + checksum: 10/f6c5c2c5ac5497341f8f3248b85a7134af1afbd57a30a5dda1e8d01d3151afa10a3585cca9fd12840ffd63cb6ccaaa6c8d8b56f224c9f1769c2b6f22fe3c8372 + languageName: node + linkType: hard + +"@yarnpkg/plugin-patch@npm:^4.0.5": + version: 4.0.5 + resolution: "@yarnpkg/plugin-patch@npm:4.0.5" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/libzip": "npm:^3.2.2" + clipanion: "npm:^4.0.0-rc.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.17.1 + "@yarnpkg/core": ^4.9.0 + checksum: 10/9257b945ffa3f562bc0dcd2154adbb6c83043a7e977636e0d6f48f29a87f1f93646bebdb6e59b5acc35807b2cc7585497a22debe18128867a4bd5e798329c84c + languageName: node + linkType: hard + +"@yarnpkg/plugin-pnp@npm:^4.2.0": + version: 4.2.0 + resolution: "@yarnpkg/plugin-pnp@npm:4.2.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/plugin-stage": "npm:^4.0.2" + "@yarnpkg/pnp": "npm:^4.1.7" + clipanion: "npm:^4.0.0-rc.2" + micromatch: "npm:^4.0.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.17.0 + "@yarnpkg/core": ^4.9.0 + checksum: 10/217c5f5dd1a9379208c51d0e55f398412d6f85f30a71e894e37893e42f45bc0c15b12fb3b507788d6007a84cbd48125cc00db4c0000e81db57bd7ab4a57e2bac + languageName: node + linkType: hard + +"@yarnpkg/plugin-pnpm@npm:^2.3.0": + version: 2.3.0 + resolution: "@yarnpkg/plugin-pnpm@npm:2.3.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + "@yarnpkg/plugin-pnp": "npm:^4.2.0" + "@yarnpkg/plugin-stage": "npm:^4.0.2" + clipanion: "npm:^4.0.0-rc.2" + p-limit: "npm:^2.2.0" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.17.0 + "@yarnpkg/core": ^4.9.0 + checksum: 10/85173afc8e31ff4c58394fec0e5abb93f89353ef1e616e103f26882dbcd720839109a1e4abc0444b0953cbf6138725f99bedacf1ea1863cc82cd0f239a827ada + languageName: node + linkType: hard + +"@yarnpkg/plugin-stage@npm:^4.0.2": + version: 4.0.2 + resolution: "@yarnpkg/plugin-stage@npm:4.0.2" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + clipanion: "npm:^4.0.0-rc.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.9.2 + "@yarnpkg/core": ^4.4.2 + checksum: 10/0bd469d5e7062e3dc998f7a4c0a6f905bad49ec8b222e927557ddcb83402b169860e5cc9a4a34cfa6d32084abfa6abefbe75a3f701f72bf487b5ebb098b3eac5 + languageName: node + linkType: hard + +"@yarnpkg/plugin-typescript@npm:^4.1.3": + version: 4.1.3 + resolution: "@yarnpkg/plugin-typescript@npm:4.1.3" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + "@yarnpkg/plugin-pack": "npm:^4.0.2" + algoliasearch: "npm:^4.2.0" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.9.2 + "@yarnpkg/core": ^4.4.2 + "@yarnpkg/plugin-essentials": ^4.4.1 + checksum: 10/1ad778ee22401c8b7447a9cf9e20dc7af5c0b5a64124375f15c6d551c604c4e82f9954bd85cac4f2f1108aaff00cc9204ae50985d19927b8092e2554460bbd12 + languageName: node + linkType: hard + +"@yarnpkg/plugin-version@npm:^4.2.0": + version: 4.2.0 + resolution: "@yarnpkg/plugin-version@npm:4.2.0" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + "@yarnpkg/libui": "npm:^3.0.2" + "@yarnpkg/parsers": "npm:^3.0.3" + clipanion: "npm:^4.0.0-rc.2" + es-toolkit: "npm:^1.39.7" + ink: "npm:^3.2.0" + react: "npm:^17.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.9.4 + "@yarnpkg/core": ^4.4.3 + "@yarnpkg/plugin-git": ^3.1.3 + checksum: 10/948b7d7f434b403967ba311080dfe358e292dfa4c98674053d82faec88565abbd00543228f3c8720c1448f30614608121d6c28d957c4bb5a1c5478f334c5d274 + languageName: node + linkType: hard + +"@yarnpkg/plugin-workspace-tools@npm:^4.1.7": + version: 4.1.7 + resolution: "@yarnpkg/plugin-workspace-tools@npm:4.1.7" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.5" + clipanion: "npm:^4.0.0-rc.2" + es-toolkit: "npm:^1.39.7" + micromatch: "npm:^4.0.2" + p-limit: "npm:^2.2.0" + tslib: "npm:^2.4.0" + typanion: "npm:^3.14.0" + peerDependencies: + "@yarnpkg/cli": ^4.13.0 + "@yarnpkg/core": ^4.6.0 + "@yarnpkg/plugin-git": ^3.1.4 + checksum: 10/7e94cc7d8de86aa05bda558d19ab8a61536718a5d55494736fc82d409f853fe86b73cdb261aa91c3c81d0910c12950a010a0e48c8826e605c87882b617fa4e65 + languageName: node + linkType: hard + +"@yarnpkg/pnp@npm:^4.1.7": + version: 4.1.7 + resolution: "@yarnpkg/pnp@npm:4.1.7" + dependencies: + "@types/node": "npm:^18.19.124" + "@yarnpkg/fslib": "npm:^3.1.5" + checksum: 10/7e37f25086daf3226e79572fd871f503fb5e751a55f3a182fb73f111b5a99d70f991e32f561c9a62067312dea4f3f1aacc1ead4fd2869ffd2ffe018c795262cc + languageName: node + linkType: hard + +"@yarnpkg/shell@npm:^4.1.3": + version: 4.1.3 + resolution: "@yarnpkg/shell@npm:4.1.3" + dependencies: + "@yarnpkg/fslib": "npm:^3.1.2" + "@yarnpkg/parsers": "npm:^3.0.3" + chalk: "npm:^4.1.2" + clipanion: "npm:^4.0.0-rc.2" + cross-spawn: "npm:^7.0.3" + fast-glob: "npm:^3.2.2" + micromatch: "npm:^4.0.2" + tslib: "npm:^2.4.0" + bin: + shell: ./lib/cli.js + checksum: 10/5994f92adf960071ac938653c5ad09746285d3fdc452fc6fdd30c3a832b612cc208e8d2274731e35957b457b168d6be524f5ce30ceb18542532d9326b422421b + languageName: node + linkType: hard + +"@yarnpkg/types@npm:^4.0.0": + version: 4.0.0 + resolution: "@yarnpkg/types@npm:4.0.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/f9670e120761a4d17461df2f01aa4b92213fbdd063501a36145d11ea01bd87ba01d44615cba3d6bc8f9bfc39a03a9a6452bf0436c7fb0c9c5311352b975349e6 + languageName: node + linkType: hard + +"@zkochan/cmd-shim@npm:^5.1.0": + version: 5.4.1 + resolution: "@zkochan/cmd-shim@npm:5.4.1" + dependencies: + cmd-extension: "npm:^1.0.2" + graceful-fs: "npm:^4.2.10" + is-windows: "npm:^1.0.2" + checksum: 10/b58962bbe021660b86dad817e6909b628ccc62eb67759aae952cf662486e35fcf0894caf0c700c294cb55e4a50fb81192aecae1f3d6eb24bd4495f4660b1b086 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10/ca0a54e35bea4ece0ecb68a47b312e1a9a6f772408d5bcb9051230aaa94b0460671c5b5c9cb3240eb5b7bc94c52476550eb221f65a0bbd0145bdc9f3113a6707 + languageName: node + linkType: hard + +"abitype@npm:1.2.3": + version: 1.2.3 + resolution: "abitype@npm:1.2.3" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10/94e744c2fc301b1cff59163a21b499aae0ddecdf4d3bef1579ff16b705e6f5738fd314125d791ed142487db2473d4fadcdbabb1e05e4b5d35715bc4ef35e400a + languageName: node + linkType: hard + +"abitype@npm:^1.2.3": + version: 1.2.4 + resolution: "abitype@npm:1.2.4" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10/500b317a53b34cb6ffe3e4f090e135972b43cd2fbdfebe64fc497dfd8515d9117919e5f88f0aaede332d29a21c1826be64a3ffa620b0b91c16e8b560b6635714 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10/ed84af329f1828327798229578b4fe03a4dd2596ba304083ebd2252666bdc1d7647d66d0b18704477e1f8aa315f055944aa6e859afebd341f12d0a53c37b4b40 + languageName: node + linkType: hard + +"accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10/67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6 + languageName: node + linkType: hard + +"acorn-import-phases@npm:^1.0.3": + version: 1.0.4 + resolution: "acorn-import-phases@npm:1.0.4" + peerDependencies: + acorn: ^8.14.0 + checksum: 10/471050ac7d9b61909c837b426de9eeef2958997f6277ad7dea88d5894fd9b3245d8ed4a225c2ca44f814dbb20688009db7a80e525e8196fc9e98c5285b66161d + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10/d4371eaef7995530b5b5ca4183ff6f062ca17901a6d3f673c9ac011b01ede37e7a1f7f61f8f5cfe709e88054757bb8f3277dc4061087cdf4f2a1f90ccbcdb977 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.0": + version: 8.3.5 + resolution: "acorn-walk@npm:8.3.5" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10/f52a158a1c1f00c82702c7eb9b8ae8aad79748a7689241dcc2d797dce680f1dcb15c78f312f687eeacdfb3a4cac4b87d04af470f0201bd56c6661fca6f94b195 + languageName: node + linkType: hard + +"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.16.0": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" + bin: + acorn: bin/acorn + checksum: 10/690c673bb4d61b38ef82795fab58526471ad7f7e67c0e40c4ff1e10ecd80ce5312554ef633c9995bfc4e6d170cef165711f9ca9e49040b62c0c66fbf2dd3df2b + languageName: node + linkType: hard + +"address@npm:^1.0.1": version: 1.2.2 resolution: "address@npm:1.2.2" checksum: 10/57d80a0c6ccadc8769ad3aeb130c1599e8aee86a8d25f671216c40df9b8489d6c3ef879bc2752b40d1458aa768f947c2d91e5b2fedfe63cf702c40afdfda9ba9 @@ -12511,6 +13428,29 @@ __metadata: languageName: node linkType: hard +"algoliasearch@npm:^4.2.0": + version: 4.27.0 + resolution: "algoliasearch@npm:4.27.0" + dependencies: + "@algolia/cache-browser-local-storage": "npm:4.27.0" + "@algolia/cache-common": "npm:4.27.0" + "@algolia/cache-in-memory": "npm:4.27.0" + "@algolia/client-account": "npm:4.27.0" + "@algolia/client-analytics": "npm:4.27.0" + "@algolia/client-common": "npm:4.27.0" + "@algolia/client-personalization": "npm:4.27.0" + "@algolia/client-search": "npm:4.27.0" + "@algolia/logger-common": "npm:4.27.0" + "@algolia/logger-console": "npm:4.27.0" + "@algolia/recommend": "npm:4.27.0" + "@algolia/requester-browser-xhr": "npm:4.27.0" + "@algolia/requester-common": "npm:4.27.0" + "@algolia/requester-node-http": "npm:4.27.0" + "@algolia/transporter": "npm:4.27.0" + checksum: 10/8c791f62dc646f25e0381aec18e3df4464b4f2ff7baa0bb9a63dac34799a267572db6d6f9247242b02e2c05a76f3194d2fcbd4a27c9513f2d1bf34b458282c04 + languageName: node + linkType: hard + "algoliasearch@npm:^5.37.0": version: 5.52.1 resolution: "algoliasearch@npm:5.52.1" @@ -12542,7 +13482,14 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.3.2": +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -12690,6 +13637,13 @@ __metadata: languageName: node linkType: hard +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + languageName: node + linkType: hard + "astring@npm:^1.8.0": version: 1.9.0 resolution: "astring@npm:1.9.0" @@ -12745,6 +13699,13 @@ __metadata: languageName: node linkType: hard +"auto-bind@npm:4.0.0": + version: 4.0.0 + resolution: "auto-bind@npm:4.0.0" + checksum: 10/00cad71cce5742faccb7dd65c1b55ebc4f45add4b0c9a1547b10b05bab22813230133b0c892c67ba3eb969a4524710c5e43cc45c72898ec84e56f3a596e7a04f + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.19, autoprefixer@npm:^10.4.23": version: 10.5.0 resolution: "autoprefixer@npm:10.5.0" @@ -13414,6 +14375,33 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10/ea026b27b13656330c2bbaa462a88181dcaa0435c1c2e705db89b31d9bdf7126049d6d0445ba746dca21454a0cfdf1d6f47fd39d34c8c8435296b30bc5738a13 + languageName: node + linkType: hard + +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: 10/618a8b3eea314060e74cb3285a6154e8343c244a34235acf91cfe626ee0705c24e3cd11e4b1a7b3900bd749ee203ae65afe13adf610c8ab173e99d4a208faf75 + languageName: node + linkType: hard + "cacheable-lookup@npm:^7.0.0": version: 7.0.0 resolution: "cacheable-lookup@npm:7.0.0" @@ -13436,6 +14424,21 @@ __metadata: languageName: node linkType: hard +"cacheable-request@npm:^7.0.2": + version: 7.0.4 + resolution: "cacheable-request@npm:7.0.4" + dependencies: + clone-response: "npm:^1.0.2" + get-stream: "npm:^5.1.0" + http-cache-semantics: "npm:^4.0.0" + keyv: "npm:^4.0.0" + lowercase-keys: "npm:^2.0.0" + normalize-url: "npm:^6.0.1" + responselike: "npm:^2.0.0" + checksum: 10/0f4f2001260ecca78b9f64fc8245e6b5a5dcde24ea53006daab71f5e0e1338095aa1512ec099c4f9895a9e5acfac9da423cb7c079e131485891e9214aca46c41 + languageName: node + linkType: hard + "call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 resolution: "call-bind-apply-helpers@npm:1.0.2" @@ -13532,7 +14535,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.2": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -13700,7 +14703,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.2.0": +"ci-info@npm:^4.0.0, ci-info@npm:^4.2.0": version: 4.4.0 resolution: "ci-info@npm:4.4.0" checksum: 10/dfded0c630267d89660c8abb988ac8395a382bdfefedcc03e3e2858523312c5207db777c239c34774e3fcff11f015477c19d2ac8a58ea58aa476614a2e64f434 @@ -13756,6 +14759,13 @@ __metadata: languageName: node linkType: hard +"cli-boxes@npm:^2.2.0": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: 10/be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 + languageName: node + linkType: hard + "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" @@ -13763,6 +14773,15 @@ __metadata: languageName: node linkType: hard +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10/2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + "cli-spinners@npm:^2.9.2": version: 2.9.2 resolution: "cli-spinners@npm:2.9.2" @@ -13783,6 +14802,16 @@ __metadata: languageName: node linkType: hard +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10/976f1887de067a8cd6ec830a7a8508336aebe6cec79b521d98ed13f67ef073b637f7305675b6247dd22f9e9cf045ec55fe746c7bdb288fbe8db0dfdc9fd52e55 + languageName: node + linkType: hard + "cli-width@npm:^4.1.0": version: 4.1.0 resolution: "cli-width@npm:4.1.0" @@ -13790,6 +14819,17 @@ __metadata: languageName: node linkType: hard +"clipanion@npm:^4.0.0-rc.2": + version: 4.0.0-rc.4 + resolution: "clipanion@npm:4.0.0-rc.4" + dependencies: + typanion: "npm:^3.8.0" + peerDependencies: + typanion: "*" + checksum: 10/c3a94783318d91e6b35380a8aa4a6f166964082a51ff2df21a339266223aaab98f5986dd2c37ca7fd640ad1d233b3cd5b24aad64c51537b54ccc9c66ec070eeb + languageName: node + linkType: hard + "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -13812,6 +14852,15 @@ __metadata: languageName: node linkType: hard +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10/4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e + languageName: node + linkType: hard + "clsx@npm:^2.0.0, clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" @@ -13819,6 +14868,13 @@ __metadata: languageName: node linkType: hard +"cmd-extension@npm:^1.0.2": + version: 1.0.2 + resolution: "cmd-extension@npm:1.0.2" + checksum: 10/4cbcdd53196a3c1db3484f67aa49ed83c0e6069713f60193a94d747cb84050e8e64d688673aa5159cf0184e054cb806ceb6119e45744f721cbd3a09a3e7038cb + languageName: node + linkType: hard + "cmd-shim@npm:^6.0.0": version: 6.0.3 resolution: "cmd-shim@npm:6.0.3" @@ -13847,6 +14903,15 @@ __metadata: languageName: node linkType: hard +"code-excerpt@npm:^3.0.0": + version: 3.0.0 + resolution: "code-excerpt@npm:3.0.0" + dependencies: + convert-to-spaces: "npm:^1.0.1" + checksum: 10/fa3a8ed15967076a43a4093b0c824cf0ada15d9aab12ea3c028851b72a69b56495aac1eadf18c3b6ae4baf0a95bb1e1faa9dbeeb0a2b2b5ae058da23328e9dd8 + languageName: node + linkType: hard + "collapse-white-space@npm:^2.0.0": version: 2.1.0 resolution: "collapse-white-space@npm:2.1.0" @@ -13921,6 +14986,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:7.2.0, commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d + languageName: node + linkType: hard + "commander@npm:^10.0.0": version: 10.0.1 resolution: "commander@npm:10.0.1" @@ -13949,13 +15021,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d - languageName: node - linkType: hard - "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -14135,6 +15200,13 @@ __metadata: languageName: node linkType: hard +"convert-to-spaces@npm:^1.0.1": + version: 1.0.2 + resolution: "convert-to-spaces@npm:1.0.2" + checksum: 10/e73f2ae39eb2b184f0796138eaab9c088b03b94937377d31be5b2282aef6a6ccce6b46f51bd99b3b7dfc70f516e2a6b16c0dd911883bfadf8d1073f462480224 + languageName: node + linkType: hard + "cookie-signature@npm:~1.0.6": version: 1.0.7 resolution: "cookie-signature@npm:1.0.7" @@ -14592,7 +15664,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:^4.4.3": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:^4.4.1, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -14695,7 +15767,7 @@ __metadata: languageName: node linkType: hard -"defer-to-connect@npm:^2.0.1": +"defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" checksum: 10/8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b @@ -14837,6 +15909,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^5.1.0": + version: 5.2.2 + resolution: "diff@npm:5.2.2" + checksum: 10/8a885b38113d96138d87f6cb474ee959b7e9ab33c0c4cb1b07dcf019ec544945a2309d53d721532af020de4b3a58fb89f1026f64f42f9421aa9c3ae48a36998b + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -14961,6 +16040,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.3.1": + version: 16.6.1 + resolution: "dotenv@npm:16.6.1" + checksum: 10/1d1897144344447ffe62aa1a6d664f4cd2e0784e0aff787eeeec1940ded32f8e4b5b506d665134fc87157baa086fce07ec6383970a2b6d2e7985beaed6a4cc14 + languageName: node + linkType: hard + "dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1" @@ -15122,6 +16208,16 @@ __metadata: languageName: node linkType: hard +"enquirer@npm:^2.3.6": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10/b3726486cd98f0d458a851a03326a2a5dd4d84f37ff94ff2a2960c915e0fc865865da3b78f0877dc36ac5c1189069eca603e82ec63d5bc6b0dd9985bf6426d7a + languageName: node + linkType: hard + "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -15210,6 +16306,20 @@ __metadata: languageName: node linkType: hard +"es-toolkit@npm:^1.39.7": + version: 1.49.0 + resolution: "es-toolkit@npm:1.49.0" + dependenciesMeta: + "@trivago/prettier-plugin-sort-imports@4.3.0": + unplugged: true + prettier-plugin-sort-re-exports@0.0.1: + unplugged: true + vitepress-plugin-sandpack@1.1.4: + unplugged: true + checksum: 10/ff0377f1fa681e6b58c06ec46cd3683c02df499f5101effb70bfbf4d69fce2e6a13889b182f68c495e25cdee31829f21dfd6094f722d4de82c546c2a32d0c670 + languageName: node + linkType: hard + "esast-util-from-estree@npm:^2.0.0": version: 2.0.0 resolution: "esast-util-from-estree@npm:2.0.0" @@ -16131,7 +17241,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -16699,6 +17809,15 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10/13a73148dca795e41421013da6e3ebff8ccb7fba4d2f023fd0c6da2c166ec4e789bec9774a73a7b49c08daf2cae552f8a3e914042ac23b5f59dd278cc8f9cbfb + languageName: node + linkType: hard + "get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -16722,6 +17841,25 @@ __metadata: languageName: node linkType: hard +"git-up@npm:^7.0.0": + version: 7.0.0 + resolution: "git-up@npm:7.0.0" + dependencies: + is-ssh: "npm:^1.4.0" + parse-url: "npm:^8.1.0" + checksum: 10/003ef38424702ac4cbe6d2817ccfb5811251244c955a8011ca40298d12cf1fb6529529f074d5832b5221e193ec05f4742ecf7806e6c4f41a81a2f2cff65d6bf4 + languageName: node + linkType: hard + +"git-url-parse@npm:^13.1.0": + version: 13.1.1 + resolution: "git-url-parse@npm:13.1.1" + dependencies: + git-up: "npm:^7.0.0" + checksum: 10/407f6579f3aa5e4040e215b45c1cfa7f08bd52a298a50310fc3debdd99e9d049d9f05e582b5475218116f312526691e1c3cc368e0d23f97c49735f210e381475 + languageName: node + linkType: hard + "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -16834,6 +17972,13 @@ __metadata: languageName: node linkType: hard +"globalyzer@npm:0.1.0": + version: 0.1.0 + resolution: "globalyzer@npm:0.1.0" + checksum: 10/419a0f95ba542534fac0842964d31b3dc2936a479b2b1a8a62bad7e8b61054faa9b0a06ad9f2e12593396b9b2621cac93358d9b3071d33723fb1778608d358a1 + languageName: node + linkType: hard + "globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -16861,6 +18006,13 @@ __metadata: languageName: node linkType: hard +"globrex@npm:^0.1.2": + version: 0.1.2 + resolution: "globrex@npm:0.1.2" + checksum: 10/81ce62ee6f800d823d6b7da7687f841676d60ee8f51f934ddd862e4057316d26665c4edc0358d4340a923ac00a514f8b67c787e28fe693aae16350f4e60d55e9 + languageName: node + linkType: hard + "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" @@ -16868,6 +18020,25 @@ __metadata: languageName: node linkType: hard +"got@npm:^11.7.0": + version: 11.8.6 + resolution: "got@npm:11.8.6" + dependencies: + "@sindresorhus/is": "npm:^4.0.0" + "@szmarczak/http-timer": "npm:^4.0.5" + "@types/cacheable-request": "npm:^6.0.1" + "@types/responselike": "npm:^1.0.0" + cacheable-lookup: "npm:^5.0.3" + cacheable-request: "npm:^7.0.2" + decompress-response: "npm:^6.0.0" + http2-wrapper: "npm:^1.0.0-beta.5.2" + lowercase-keys: "npm:^2.0.0" + p-cancelable: "npm:^2.0.0" + responselike: "npm:^2.0.0" + checksum: 10/a30c74029d81bd5fe50dea1a0c970595d792c568e188ff8be254b5bc11e6158d1b014570772d4a30d0a97723e7dd34e7c8cc1a2f23018f60aece3070a7a5c2a5 + languageName: node + linkType: hard + "got@npm:^12.1.0": version: 12.6.1 resolution: "got@npm:12.6.1" @@ -16894,13 +18065,20 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 languageName: node linkType: hard +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: 10/fdb2f51fd430ce881e18e44c4934ad30e59736e46213f7ad35ea5970a9ebdf7d0fe56150d15cc98230d55d2fd48c73dc6781494c38d8cf2405718366c36adb88 + languageName: node + linkType: hard + "gray-matter@npm:^4.0.3": version: 4.0.3 resolution: "gray-matter@npm:4.0.3" @@ -17201,6 +18379,13 @@ __metadata: languageName: node linkType: hard +"hpagent@npm:^1.2.0": + version: 1.2.0 + resolution: "hpagent@npm:1.2.0" + checksum: 10/bad186449da7e3456788a8cbae459fc6c0a855d5872a7f460c48ce4a613020d8d914839dad10047297099299c4f9e6c65a0eec3f5886af196c0a516e4ad8a845 + languageName: node + linkType: hard + "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 resolution: "html-encoding-sniffer@npm:4.0.0" @@ -17322,6 +18507,13 @@ __metadata: languageName: node linkType: hard +"http-cache-semantics@npm:^4.0.0": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10/4efd2dfcfeea9d5e88c84af450b9980be8a43c2c8179508b1c57c7b4421c855f3e8efe92fa53e0b3f4a43c85824ada930eabbc306d1b3beab750b6dcc5187693 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -17408,6 +18600,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.0.0" + checksum: 10/8097ee2699440c2e64bda52124990cc5b0fb347401c7797b1a0c1efd5a0f79a4ebaa68e8a6ac3e2dde5f09460c1602764da6da2412bad628ed0a3b0ae35e72d4 + languageName: node + linkType: hard + "http2-wrapper@npm:^2.1.10": version: 2.2.1 resolution: "http2-wrapper@npm:2.2.1" @@ -17633,6 +18835,56 @@ __metadata: languageName: node linkType: hard +"ink-text-input@npm:^4.0.3": + version: 4.0.3 + resolution: "ink-text-input@npm:4.0.3" + dependencies: + chalk: "npm:^4.1.0" + type-fest: "npm:^0.15.1" + peerDependencies: + ink: ^3.0.0-3 + react: ^16.5.2 || ^17.0.0 + checksum: 10/214db7e7d0b1fb27b1a03ce21e373f71098e6fb87055782e4484fd0318c663b6d80c29a2d878622340e39dce99d66069ff3d6f9ad360cf3794511204089ea0d5 + languageName: node + linkType: hard + +"ink@npm:^3.2.0": + version: 3.2.0 + resolution: "ink@npm:3.2.0" + dependencies: + ansi-escapes: "npm:^4.2.1" + auto-bind: "npm:4.0.0" + chalk: "npm:^4.1.0" + cli-boxes: "npm:^2.2.0" + cli-cursor: "npm:^3.1.0" + cli-truncate: "npm:^2.1.0" + code-excerpt: "npm:^3.0.0" + indent-string: "npm:^4.0.0" + is-ci: "npm:^2.0.0" + lodash: "npm:^4.17.20" + patch-console: "npm:^1.0.0" + react-devtools-core: "npm:^4.19.1" + react-reconciler: "npm:^0.26.2" + scheduler: "npm:^0.20.2" + signal-exit: "npm:^3.0.2" + slice-ansi: "npm:^3.0.0" + stack-utils: "npm:^2.0.2" + string-width: "npm:^4.2.2" + type-fest: "npm:^0.12.0" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^6.2.0" + ws: "npm:^7.5.5" + yoga-layout-prebuilt: "npm:^1.9.6" + peerDependencies: + "@types/react": ">=16.8.0" + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/cfbd8808cd1ee995440aac7a89af1156e587fec271bc3bc7460788b8b0c844eaf6364ac3d19dd4caa9f8f19bfb97d3fa0a51a5f7d89b6c6b990686ac68f083f6 + languageName: node + linkType: hard + "inline-style-parser@npm:0.2.7": version: 0.2.7 resolution: "inline-style-parser@npm:0.2.7" @@ -17956,6 +19208,15 @@ __metadata: languageName: node linkType: hard +"is-ssh@npm:^1.4.0": + version: 1.4.1 + resolution: "is-ssh@npm:1.4.1" + dependencies: + protocols: "npm:^2.0.1" + checksum: 10/f60910cd83fa94e9874655a672c3849312c12af83c0fe3dbff9945755fe838a73985d8f94e32ebf5626ba4148ee10eef51b7240b0218dbb6e9a43a06899b0529 + languageName: node + linkType: hard + "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -17984,6 +19245,13 @@ __metadata: languageName: node linkType: hard +"is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10/438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 + languageName: node + linkType: hard + "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -18731,6 +19999,18 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^3.10.0": + version: 3.15.0 + resolution: "js-yaml@npm:3.15.0" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10/2fdf3a1453ed93a8e06d6ca8054c0bec145cf40ab51f305d1071736a03668b95e40f47cfd0239d7d50019b4780a18cdaca3c935def935594c9876964c49f1185 + languageName: node + linkType: hard + "js-yaml@npm:^3.13.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" @@ -18923,7 +20203,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3, keyv@npm:^4.5.4": +"keyv@npm:^4.0.0, keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -19165,7 +20445,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -19185,6 +20465,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: 10/1c233d2da35056e8c49fae8097ee061b8c799b2f02e33c2bf32f9913c7de8fb481ab04dab7df35e94156c800f5f34e99acbf32b21781d87c3aa43ef7b748b79e + languageName: node + linkType: hard + "lowercase-keys@npm:^3.0.0": version: 3.0.0 resolution: "lowercase-keys@npm:3.0.0" @@ -19272,6 +20559,25 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^14.0.2, make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" + dependencies: + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^4.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^12.0.0" + checksum: 10/fce0385840b6d86b735053dfe941edc2dd6468fda80fe74da1eeff10cbd82a75760f406194f2bc2fa85b99545b2bc1f84c08ddf994b21830775ba2d1a87e8bdf + languageName: node + linkType: hard + "makeerror@npm:1.0.12": version: 1.0.12 resolution: "makeerror@npm:1.0.12" @@ -20251,6 +21557,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 10/034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 + languageName: node + linkType: hard + "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -20358,6 +21671,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10/7ddfebdbb87d9866e7b5f7eead5a9e3d9d507992af932a11d275551f60006cf7d9178e66d586dbb910894f3e3458d27c0ddf93c76e94d49d0a54a541ddc1263d + languageName: node + linkType: hard + "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -20427,6 +21755,15 @@ __metadata: languageName: node linkType: hard +"minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10/f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99 + languageName: node + linkType: hard + "mitt@npm:^3.0.1": version: 3.0.1 resolution: "mitt@npm:3.0.1" @@ -20552,6 +21889,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10/b5734e87295324fabf868e36fb97c84b7d7f3156ec5f4ee5bf6e488079c11054f818290fc33804cef7b1ee21f55eeb14caea83e7dafae6492a409b3e573153e5 + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -20678,6 +22022,13 @@ __metadata: languageName: node linkType: hard +"node-watch@npm:0.7.3": + version: 0.7.3 + resolution: "node-watch@npm:0.7.3" + checksum: 10/40165fe737d928d06b4957f5d7924cea4c4b58d2e696986f48b6d6c26d33fda474b6f5a0cd554a31985c2184524d70c280db61c933739ff6dc5a71e990fe2dff + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" @@ -20707,6 +22058,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 10/5ae699402c9d5ffa330adc348fcd6fc6e6a155ab7c811b96e30b7ecab60ceef821d8f86443869671dda71bbc47f4b9625739c82ad247e883e9aefe875bfb8659 + languageName: node + linkType: hard + "normalize-url@npm:^8.0.0": version: 8.1.1 resolution: "normalize-url@npm:8.1.1" @@ -20908,7 +22266,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.2": +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -21198,6 +22556,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 10/7f1b64db17fc54acf359167d62898115dcf2a64bf6b3b038e4faf36fc059e5ed762fb9624df8ed04b25bee8de3ab8d72dea9879a2a960cd12e23c420a4aca6ed + languageName: node + linkType: hard + "p-cancelable@npm:^3.0.0": version: 3.0.0 resolution: "p-cancelable@npm:3.0.0" @@ -21275,6 +22640,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.6 + resolution: "p-map@npm:7.0.6" + checksum: 10/207bcdd33eb927d8490384bd48221e55b62097eb2d606ae75882b90e7f66b8eb9f0283c373d73139fccbdfbfc869fc47862a74e63eb54de42f440a2fe0840e74 + languageName: node + linkType: hard + "p-queue@npm:^6.6.2": version: 6.6.2 resolution: "p-queue@npm:6.6.2" @@ -21401,6 +22773,24 @@ __metadata: languageName: node linkType: hard +"parse-path@npm:^7.0.0": + version: 7.1.0 + resolution: "parse-path@npm:7.1.0" + dependencies: + protocols: "npm:^2.0.0" + checksum: 10/6da6c6803fa73bacfee98e694c6c95fa55caae632c765369e4fd917f1043ef71f35ecaae420ef0e39e933bd1f939c4bc1e01522b62145191cdbe72e58d37a8ab + languageName: node + linkType: hard + +"parse-url@npm:^8.1.0": + version: 8.1.0 + resolution: "parse-url@npm:8.1.0" + dependencies: + parse-path: "npm:^7.0.0" + checksum: 10/ceb51dc474568092a50d6d936036dfe438a87aa45bcf20947c8fcdf1544ee9c50255608abae604644e718e91e0b83cfbea4675e8b2fd90bc197432f6d9be263c + languageName: node + linkType: hard + "parse5-htmlparser2-tree-adapter@npm:^7.0.0, parse5-htmlparser2-tree-adapter@npm:^7.1.0": version: 7.1.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" @@ -21446,6 +22836,13 @@ __metadata: languageName: node linkType: hard +"patch-console@npm:^1.0.0": + version: 1.0.0 + resolution: "patch-console@npm:1.0.0" + checksum: 10/8cd738aa470f2e9463fca35da6a19403384ac555004f698ddd3dfdb69135ab60fe9bd2edd1dbdd8c09d92c0a2190fd0f7337fe48123013baf8ffec8532885a3a + languageName: node + linkType: hard + "path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" @@ -22573,6 +23970,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10/35610bdb0177d3ab5d35f8827a429fb1dc2518d9e639f2151ac9007f01a061c30e0c635a970c9b00c39102216160f6ec54b62377c92fac3b7bfc2ad4b98d195c + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -22676,6 +24080,13 @@ __metadata: languageName: node linkType: hard +"protocols@npm:^2.0.0, protocols@npm:^2.0.1": + version: 2.0.2 + resolution: "protocols@npm:2.0.2" + checksum: 10/031cc068eb800468a50eb7c1e1c528bf142fb8314f5df9b9ea3c3f9df1697a19f97b9915b1229cef694d156812393172d9c3051ef7878d26eaa8c6faa5cccec4 + languageName: node + linkType: hard + "proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -22779,6 +24190,19 @@ __metadata: languageName: node linkType: hard +"qunit@npm:^2.8.0": + version: 2.26.0 + resolution: "qunit@npm:2.26.0" + dependencies: + commander: "npm:7.2.0" + node-watch: "npm:0.7.3" + tiny-glob: "npm:0.2.9" + bin: + qunit: bin/qunit.js + checksum: 10/319386420334127c3bf84b82fd75c6b4ae19f3afab86f40a4529f42cb0dbaa3a3d8bc099f0e8d2aea38806295a25395654d5bf6050471f7d4938781ac8c44e09 + languageName: node + linkType: hard + "randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -22840,6 +24264,16 @@ __metadata: languageName: node linkType: hard +"react-devtools-core@npm:^4.19.1": + version: 4.28.5 + resolution: "react-devtools-core@npm:4.28.5" + dependencies: + shell-quote: "npm:^1.6.1" + ws: "npm:^7" + checksum: 10/7c951a6a9b773e4fd56b2f1894c83aaec417373cf01aa261bd2dd286e6c6f1d8c67a3749ecb1d106dbf9e8cda0e6ed1bfd6ce1b61c81e035f2527be3dd9eebc2 + languageName: node + linkType: hard + "react-dom@npm:^19.0.0": version: 19.2.6 resolution: "react-dom@npm:19.2.6" @@ -22927,6 +24361,19 @@ __metadata: languageName: node linkType: hard +"react-reconciler@npm:^0.26.2": + version: 0.26.2 + resolution: "react-reconciler@npm:0.26.2" + dependencies: + loose-envify: "npm:^1.1.0" + object-assign: "npm:^4.1.1" + scheduler: "npm:^0.20.2" + peerDependencies: + react: ^17.0.2 + checksum: 10/7b9369a12e57859088aaef052abe03138ad8eefe67308bf8be6ef8f529be06276dc4977a4d665dc9b9e08188bd308b2a0d58dc181253c0205c98e03d7c0901b7 + languageName: node + linkType: hard + "react-router-config@npm:^5.1.1": version: 5.1.1 resolution: "react-router-config@npm:5.1.1" @@ -22975,6 +24422,16 @@ __metadata: languageName: node linkType: hard +"react@npm:^17.0.2": + version: 17.0.2 + resolution: "react@npm:17.0.2" + dependencies: + loose-envify: "npm:^1.1.0" + object-assign: "npm:^4.1.1" + checksum: 10/ece60c31c1d266d132783aaaffa185d2e4c9b4db144f853933ec690cee1e0600c8929a1dd0a9e79323eea8e2df636c9a06d40f6cfdc9f797f65225433e67f707 + languageName: node + linkType: hard + "react@npm:^19.0.0": version: 19.2.6 resolution: "react@npm:19.2.6" @@ -23046,6 +24503,13 @@ __metadata: languageName: node linkType: hard +"readline-sync@npm:1.4.9": + version: 1.4.9 + resolution: "readline-sync@npm:1.4.9" + checksum: 10/4eb3e21ec9f48256cdb21a72166d8acfcdf4c5904c913b0715978280c6cd226e9c51df39aa9d119aaaf926063755aa440e7d0bab4994de5bb5db38e3ac08cabf + languageName: node + linkType: hard + "recma-build-jsx@npm:^1.0.0": version: 1.0.0 resolution: "recma-build-jsx@npm:1.0.0" @@ -23357,7 +24821,7 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.2.0": +"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" checksum: 10/744e87888f0b6fa0b256ab454ca0b9c0b80808715e2ef1f3672773665c92a941f6181194e30ccae4a8cd0adbe0d955d3f133102636d2ee0cca0119fec0bc9aec @@ -23455,6 +24919,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: "npm:^2.0.0" + checksum: 10/b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + languageName: node + linkType: hard + "responselike@npm:^3.0.0": version: 3.0.0 resolution: "responselike@npm:3.0.0" @@ -23464,6 +24937,16 @@ __metadata: languageName: node linkType: hard +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10/f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -23621,6 +25104,16 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.20.2": + version: 0.20.2 + resolution: "scheduler@npm:0.20.2" + dependencies: + loose-envify: "npm:^1.1.0" + object-assign: "npm:^4.1.1" + checksum: 10/898917fa475386953d998add9107c04bf2c335eee86172833995dee126d12a68bee3c29edbd61fa0bcbcb8ee511c422eaab23b86b02f95aab26ecfaed8df5e64 + languageName: node + linkType: hard + "scheduler@npm:^0.27.0": version: 0.27.0 resolution: "scheduler@npm:0.27.0" @@ -23722,7 +25215,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.8.0, semver@npm:^7.8.1": +"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3, semver@npm:^7.7.2, semver@npm:^7.7.3, semver@npm:^7.8.0, semver@npm:^7.8.1": version: 7.8.5 resolution: "semver@npm:7.8.5" bin: @@ -23900,6 +25393,13 @@ __metadata: languageName: node linkType: hard +"shell-quote@npm:^1.6.1": + version: 1.10.0 + resolution: "shell-quote@npm:1.10.0" + checksum: 10/d4a22aeefe64919290af753ac6098239d7ffee52a5db62c20edef69794bd10b5f86e298f68be26af9606ac435e890dd391994a5405a90bb8aebef1ff1dde839b + languageName: node + linkType: hard + "shell-quote@npm:^1.8.3": version: 1.8.4 resolution: "shell-quote@npm:1.8.4" @@ -23981,6 +25481,20 @@ __metadata: languageName: node linkType: hard +"sigstore@npm:^3.1.0": + version: 3.1.0 + resolution: "sigstore@npm:3.1.0" + dependencies: + "@sigstore/bundle": "npm:^3.1.0" + "@sigstore/core": "npm:^2.0.0" + "@sigstore/protobuf-specs": "npm:^0.4.0" + "@sigstore/sign": "npm:^3.1.0" + "@sigstore/tuf": "npm:^3.1.0" + "@sigstore/verify": "npm:^2.1.0" + checksum: 10/fc2a38d11bd0e02b5dc8271e906ba7ea1aaa3dc19010dc6d29602b900532fa16b132cd6c80ec1c294f201f81f1277fb351020d0c65b6a62968f229db0b6c5a4f + languageName: node + linkType: hard + "simple-concat@npm:^1.0.0": version: 1.0.1 resolution: "simple-concat@npm:1.0.1" @@ -24091,6 +25605,17 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10/5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -24303,6 +25828,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/7024c1a6e39b3f18aa8f1c8290e884fe91b0f9ca5a6c6d410544daad54de0ba664db879afe16412e187c6c292fd60b937f047ee44292e5c2af2dcc6d8e1a9b48 + languageName: node + linkType: hard + "stable-hash@npm:^0.0.4": version: 0.0.4 resolution: "stable-hash@npm:0.0.4" @@ -24310,7 +25844,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.6": +"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.6": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -24365,7 +25899,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -24633,7 +26167,7 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^2.1.4": +"tar-stream@npm:^2.0.1, tar-stream@npm:^2.1.4": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" dependencies: @@ -24685,6 +26219,29 @@ __metadata: languageName: node linkType: hard +"tar@npm:^7.5.3": + version: 7.5.20 + resolution: "tar@npm:7.5.20" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10/90a0fe423ac921197ad5eefc5e5f7ad7f42b06e80444c8c347c1e4112384cbe9cb53ade3ef71748eed3684888756869c2aeef6b6303c766101f3217e254d4be9 + languageName: node + linkType: hard + +"tau-prolog@npm:^0.2.66": + version: 0.2.81 + resolution: "tau-prolog@npm:0.2.81" + dependencies: + qunit: "npm:^2.8.0" + readline-sync: "npm:1.4.9" + checksum: 10/b28f9064e454deb2fcb5b58953e14675a57508056ea62a21477775de4b742cd50841adae5ad2ddf19c37747f5e0c55b39c7befdab27aa8e13d3b933f2216bfac + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^5.3.9, terser-webpack-plugin@npm:^5.5.0": version: 5.6.0 resolution: "terser-webpack-plugin@npm:5.6.0" @@ -24774,6 +26331,16 @@ __metadata: languageName: node linkType: hard +"tiny-glob@npm:0.2.9": + version: 0.2.9 + resolution: "tiny-glob@npm:0.2.9" + dependencies: + globalyzer: "npm:0.1.0" + globrex: "npm:^0.1.2" + checksum: 10/5fb773747f6a8fcae4b8884642901fa7b884879695186c422eb24b2213dfe90645f34225ced586329b3080d850472ea938646ab1c8b3a2989f9fa038fef8eee3 + languageName: node + linkType: hard + "tiny-invariant@npm:^1.0.2": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" @@ -24798,6 +26365,13 @@ __metadata: languageName: node linkType: hard +"tinylogic@npm:^2.0.0": + version: 2.0.0 + resolution: "tinylogic@npm:2.0.0" + checksum: 10/6467b1ed9b602dae035726ee3faf2682bddffb5389b42fdb4daf13878037420ed9981a572ca7db467bd26c4ab00fb4eefe654f24e35984ec017fb5e83081db97 + languageName: node + linkType: hard + "tinypool@npm:2.1.0": version: 2.1.0 resolution: "tinypool@npm:2.1.0" @@ -24894,6 +26468,13 @@ __metadata: languageName: node linkType: hard +"treeify@npm:^1.1.0": + version: 1.1.0 + resolution: "treeify@npm:1.1.0" + checksum: 10/5241976a751168fb9894a12d031299f1f6337b7f2cbd3eff22ee86e6777620352a69a1cab0d4709251317ff307eeda0dc45918850974fc44f4c7fc50e623b990 + languageName: node + linkType: hard + "trim-lines@npm:^3.0.0": version: 3.0.1 resolution: "trim-lines@npm:3.0.1" @@ -25013,6 +26594,17 @@ __metadata: languageName: node linkType: hard +"tuf-js@npm:^3.0.1": + version: 3.1.0 + resolution: "tuf-js@npm:3.1.0" + dependencies: + "@tufjs/models": "npm:3.0.1" + debug: "npm:^4.4.1" + make-fetch-happen: "npm:^14.0.3" + checksum: 10/b0344853c0408312ecf6e6d6e02695f4b1043c28f110a2160d90c8b6716f156ef6d5aeea85b5dd01ee0da0dfee42567b7889a5b89881a116edee37d77c42044a + languageName: node + linkType: hard + "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -25029,6 +26621,13 @@ __metadata: languageName: node linkType: hard +"typanion@npm:^3.14.0, typanion@npm:^3.8.0": + version: 3.14.0 + resolution: "typanion@npm:3.14.0" + checksum: 10/5e88d9e6121ff0ec543f572152fdd1b70e9cca35406d79013ec8e08defa8ef96de5fec9e98da3afbd1eb4426b9e8e8fe423163d0b482e34a40103cab1ef29abd + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -25045,6 +26644,20 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.12.0": + version: 0.12.0 + resolution: "type-fest@npm:0.12.0" + checksum: 10/828dd234a0497721622de2907147aff3290a42f86ca01b3d1c1273b4f50bcd00eadcb71c7fad9b34125c7796b8d3a554415f9dda4875993ed51636431488f712 + languageName: node + linkType: hard + +"type-fest@npm:^0.15.1": + version: 0.15.1 + resolution: "type-fest@npm:0.15.1" + checksum: 10/0468c369e3cb6054c59db7eb5846ee9a81d46185d0ddbbb3f6a6122e88508dee4e3a3fd3d74b062d7be6b6ed1f49084f94b605cea395f2fa16dfc4649aec20a6 + languageName: node + linkType: hard + "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -25184,6 +26797,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10/0097779d94bc0fd26f0418b3a05472410408877279141ded2bd449167be1aed7ea5b76f756562cb3586a07f251b90799bab22d9019ceba49c037c76445f7cddd + languageName: node + linkType: hard + "undici-types@npm:~6.19.2": version: 6.19.8 resolution: "undici-types@npm:6.19.8" @@ -25260,6 +26880,15 @@ __metadata: languageName: node linkType: hard +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: "npm:^5.0.0" + checksum: 10/6a62094fcac286b9ec39edbd1f8f64ff92383baa430af303dfed1ffda5e47a08a6b316408554abfddd9730c78b6106bef4ca4d02c1231a735ddd56ced77573df + languageName: node + linkType: hard + "unique-slug@npm:^4.0.0": version: 4.0.0 resolution: "unique-slug@npm:4.0.0" @@ -25269,6 +26898,15 @@ __metadata: languageName: node linkType: hard +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10/beafdf3d6f44990e0a5ce560f8f881b4ee811be70b6ba0db25298c31c8cf525ed963572b48cd03be1c1349084f9e339be4241666d7cf1ebdad20598d3c652b27 + languageName: node + linkType: hard + "unique-string@npm:^3.0.0": version: 3.0.0 resolution: "unique-string@npm:3.0.0" @@ -26091,6 +27729,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10/0d64f2d438e0b555e693b95aee7b2689a12c3be5ac458192a1ce28f542a6e9e59ddfecc37520910c2c88eb1f82a5411260566dba5064e8f9895e76e169e76187 + languageName: node + linkType: hard + "wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -26183,6 +27832,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7, ws@npm:^7.5.5": + version: 7.5.13 + resolution: "ws@npm:7.5.13" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/0873c813ce75c466b026ce0a4ce9a8b5b5f1dc9ef0dd7ae9690fa4025c66afb165d3a45550357080b29d66a0e3028cd13c72ccefc83ce10723b4822a574ebc99 + languageName: node + linkType: hard + "ws@npm:^7.3.1": version: 7.5.11 resolution: "ws@npm:7.5.11" @@ -26341,6 +28005,15 @@ __metadata: languageName: node linkType: hard +"yoga-layout-prebuilt@npm:^1.9.6": + version: 1.10.0 + resolution: "yoga-layout-prebuilt@npm:1.10.0" + dependencies: + "@types/yoga-layout": "npm:1.9.2" + checksum: 10/fe36fadae9b30710083f76c73e87479c2eb291ff7c560c35a9e2b8eb78f43882ace63cc80cdaecae98ee2e4168e1bf84dc65b2f5ae1bfa31df37603c46683bd6 + languageName: node + linkType: hard + "zod@npm:^4.1.11": version: 4.4.3 resolution: "zod@npm:4.4.3" From c2a51d28443a2c7a05e613bd96076d4482ab8eee Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 00:51:47 +0200 Subject: [PATCH 02/11] Deduplicate lockfile --- yarn.lock | 103 +++++------------------------------------------------- 1 file changed, 8 insertions(+), 95 deletions(-) diff --git a/yarn.lock b/yarn.lock index 20e181db3f8..0769618cfea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12006,14 +12006,7 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7, @types/semver@npm:^7.3.6": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 - languageName: node - linkType: hard - -"@types/semver@npm:^7.1.0": +"@types/semver@npm:^7, @types/semver@npm:^7.1.0, @types/semver@npm:^7.3.6": version: 7.7.1 resolution: "@types/semver@npm:7.7.1" checksum: 10/8f09e7e6ca3ded67d78ba7a8f7535c8d9cf8ced83c52e7f3ac3c281fe8c689c3fe475d199d94390dc04fc681d51f2358b430bb7b2e21c62de24f2bee2c719068 @@ -15902,14 +15895,7 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 10/01b7b440f83a997350a988e9d2f558366c0f90f15be19f4aa7f1bb3109a4e153dfc3b9fbf78e14ea725717017407eeaa2271e3896374a0181e8f52445740846d - languageName: node - linkType: hard - -"diff@npm:^5.1.0": +"diff@npm:^5.0.0, diff@npm:^5.1.0": version: 5.2.2 resolution: "diff@npm:5.2.2" checksum: 10/8a885b38113d96138d87f6cb474ee959b7e9ab33c0c4cb1b07dcf019ec544945a2309d53d721532af020de4b3a58fb89f1026f64f42f9421aa9c3ae48a36998b @@ -18507,20 +18493,13 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" checksum: 10/4efd2dfcfeea9d5e88c84af450b9980be8a43c2c8179508b1c57c7b4421c855f3e8efe92fa53e0b3f4a43c85824ada930eabbc306d1b3beab750b6dcc5187693 languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10/362d5ed66b12ceb9c0a328fb31200b590ab1b02f4a254a697dc796850cc4385603e75f53ec59f768b2dad3bfa1464bd229f7de278d2899a0e3beffc634b6683f - languageName: node - linkType: hard - "http-deceiver@npm:^1.2.7": version: 1.2.7 resolution: "http-deceiver@npm:1.2.7" @@ -19999,7 +19978,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.10.0": +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1": version: 3.15.0 resolution: "js-yaml@npm:3.15.0" dependencies: @@ -20011,18 +19990,6 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" - bin: - js-yaml: bin/js-yaml.js - checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 - languageName: node - linkType: hard - "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -21746,16 +21713,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10/c075bed1594f68dcc8c35122333520112daefd4d070e5d0a228bd4cf5580e9eed3981b96c0ae1d62488e204e80fd27b2b9d0068ca9a5ef3993e9565faf63ca41 - languageName: node - linkType: hard - -"minizlib@npm:^3.1.0": +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": version: 3.1.0 resolution: "minizlib@npm:3.1.0" dependencies: @@ -21787,15 +21745,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba - languageName: node - linkType: hard - "mrmime@npm:^2.0.0": version: 2.0.1 resolution: "mrmime@npm:2.0.1" @@ -25393,20 +25342,13 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1": +"shell-quote@npm:^1.6.1, shell-quote@npm:^1.8.3": version: 1.10.0 resolution: "shell-quote@npm:1.10.0" checksum: 10/d4a22aeefe64919290af753ac6098239d7ffee52a5db62c20edef69794bd10b5f86e298f68be26af9606ac435e890dd391994a5405a90bb8aebef1ff1dde839b languageName: node linkType: hard -"shell-quote@npm:^1.8.3": - version: 1.8.4 - resolution: "shell-quote@npm:1.8.4" - checksum: 10/a3e3796385f2cd5cf0b78207a4439f0c7395c0833fc75b2473084b5d298c109c5c0fa687fcd1c04e4b4484866e5bb8eaae7efae443b80fff71ea7e29baf11f0c - languageName: node - linkType: hard - "shiki@npm:^0.14.7": version: 0.14.7 resolution: "shiki@npm:0.14.7" @@ -26205,21 +26147,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" - yallist: "npm:^5.0.0" - checksum: 10/12a2a4fc6dee23e07cc47f1aeb3a14a1afd3f16397e1350036a8f4cdfee8dcac7ef5978337a4e7b2ac2c27a9a6d46388fc2088ea7c80cb6878c814b1425f8ecf - languageName: node - linkType: hard - -"tar@npm:^7.5.3": +"tar@npm:^7.4.3, tar@npm:^7.5.3": version: 7.5.20 resolution: "tar@npm:7.5.20" dependencies: @@ -27832,7 +27760,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7, ws@npm:^7.5.5": +"ws@npm:^7, ws@npm:^7.3.1, ws@npm:^7.5.5": version: 7.5.13 resolution: "ws@npm:7.5.13" peerDependencies: @@ -27847,21 +27775,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7.3.1": - version: 7.5.11 - resolution: "ws@npm:7.5.11" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/486141e4a01bb75883f9ba39317309c2427e24db1cb75e340fad6e5886b65c03d994a34209f0e4ba06dd6cb9ec95dd1b6a09c52c05eed9a34d6376f4fbbf617c - languageName: node - linkType: hard - "ws@npm:^8.18.0, ws@npm:^8.18.3": version: 8.21.0 resolution: "ws@npm:8.21.0" From d95a2a45acf1bfe77f3c0c61d040b28cb1912a22 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 11:04:15 +0200 Subject: [PATCH 03/11] Fix tar transform type error in foundryup after tar upgrade Adding @yarnpkg/parsers caused tar to be upgraded to a version that tightened the transform callback's return type from NodeJS.ReadableStream | undefined to ReadEntry. Minipass is not a ReadEntry, and undefined is no longer allowed. Fix by listening to the entry's data events to compute the hash instead of piping through a separate Minipass stream, then returning entry itself (which is already a ReadEntry) in both branches. --- packages/foundryup/src/extract.ts | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/packages/foundryup/src/extract.ts b/packages/foundryup/src/extract.ts index 82248a4aac8..392cde92ccf 100644 --- a/packages/foundryup/src/extract.ts +++ b/packages/foundryup/src/extract.ts @@ -1,4 +1,3 @@ -import { Minipass } from 'minipass'; import { ok } from 'node:assert/strict'; import { createHash } from 'node:crypto'; import { createWriteStream } from 'node:fs'; @@ -151,25 +150,22 @@ async function extractFromTar( if (checksumAlgorithm) { const hash = createHash(checksumAlgorithm); - const passThrough = new Minipass({ async: true }); - passThrough.pipe(hash); - passThrough.on('end', () => { + entry.on('data', (chunk: Buffer) => hash.update(chunk)); + entry.on('end', () => { downloads.push({ path: absolutePath, binary: entry.path as Binary, checksum: hash.digest('hex'), }); }); - return passThrough; + } else { + downloads.push({ + path: absolutePath, + binary: entry.path as Binary, + }); } - // When no checksum is needed, record the entry and return undefined - // to use the original stream without transformation - downloads.push({ - path: absolutePath, - binary: entry.path as Binary, - }); - return undefined; + return entry; }, }, binaries, From b92da773f015ba4f541d2672da7d5db661de867a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 11:15:55 +0200 Subject: [PATCH 04/11] Remove minipass dependency from foundryup No longer needed after the transform refactor: the hash is now computed via entry data events rather than piping through a Minipass stream. Also adjusts the coverage threshold to reflect the reduced branch count. --- packages/foundryup/jest.config.js | 2 +- packages/foundryup/package.json | 1 - yarn.lock | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/foundryup/jest.config.js b/packages/foundryup/jest.config.js index 3e2689f3405..fce57c8cb35 100644 --- a/packages/foundryup/jest.config.js +++ b/packages/foundryup/jest.config.js @@ -18,7 +18,7 @@ module.exports = merge(baseConfig, { coverageThreshold: { global: { branches: 50, - functions: 63.15, + functions: 61.53, lines: 55.08, statements: 55.02, }, diff --git a/packages/foundryup/package.json b/packages/foundryup/package.json index 4ab1f0c17f3..036327bb3b9 100644 --- a/packages/foundryup/package.json +++ b/packages/foundryup/package.json @@ -47,7 +47,6 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "minipass": "^7.1.2", "tar": "^7.4.3", "unzipper": "^0.12.3", "yargs": "^17.7.2", diff --git a/yarn.lock b/yarn.lock index 0769618cfea..174f3351cdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7278,7 +7278,6 @@ __metadata: "@types/yargs-parser": "npm:^21.0.3" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" - minipass: "npm:^7.1.2" nock: "npm:^13.3.1" tar: "npm:^7.4.3" ts-jest: "npm:^29.4.11" From 98cc7440dba88a5bd7bf165a7b7fb2fdcdcdde2f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 11:59:59 +0200 Subject: [PATCH 05/11] Use headRef for lockfile diffing to fix revision mismatch getChangedLockfilePackages was reading the current yarn.lock from the working tree, while getChangedFiles uses mergeBase...headRef. When headRef differs from HEAD, the lockfile could be treated as changed for one revision but diffed against another, seeding the wrong workspaces or skipping affected ones. Fix by passing headRef through to getChangedLockfilePackages and using `git show ${headRef}:yarn.lock` for both sides of the diff. --- scripts/generate-partial-build-tsconfig.mts | 1 + scripts/get-changed-workspaces.mts | 1 + scripts/lib/workspaces.mts | 39 ++++++++++++++------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/scripts/generate-partial-build-tsconfig.mts b/scripts/generate-partial-build-tsconfig.mts index 30a2b4e5689..1239a4f31fd 100644 --- a/scripts/generate-partial-build-tsconfig.mts +++ b/scripts/generate-partial-build-tsconfig.mts @@ -39,6 +39,7 @@ async function main(): Promise { changedFiles, includeDependencies: true, mergeBase, + headRef, }); const references = typeScriptWorkspaces diff --git a/scripts/get-changed-workspaces.mts b/scripts/get-changed-workspaces.mts index 5a82610c2a0..bc95a2ff96b 100644 --- a/scripts/get-changed-workspaces.mts +++ b/scripts/get-changed-workspaces.mts @@ -49,6 +49,7 @@ const changed = await computeChangedWorkspaces({ changedFiles, includeDependencies, mergeBase, + headRef, }); const changedWorkspaces = workspaces.filter(({ name }) => changed.has(name)); diff --git a/scripts/lib/workspaces.mts b/scripts/lib/workspaces.mts index 9e61203b3e6..fca55a5f6bb 100644 --- a/scripts/lib/workspaces.mts +++ b/scripts/lib/workspaces.mts @@ -147,21 +147,27 @@ export async function getChangedFiles( /** * Get the set of package names whose entries changed in yarn.lock between - * `mergeBase` and the current working tree. + * `mergeBase` and `headRef`. * - * @param mergeBase - The merge base SHA to compare the lockfile against. + * @param mergeBase - The merge base SHA. + * @param headRef - The PR branch tip SHA (or "HEAD"). * @returns The set of changed package names. */ async function getChangedLockfilePackages( mergeBase: string, + headRef: string, ): Promise> { - const [{ stdout: baseLockContent }, currentLockContent] = await Promise.all([ - execa('git', ['show', `${mergeBase}:yarn.lock`], { - cwd: ROOT_WORKSPACE, - encoding: 'utf8', - }), - readFile(join(ROOT_WORKSPACE, 'yarn.lock'), 'utf-8'), - ]); + const [{ stdout: baseLockContent }, { stdout: currentLockContent }] = + await Promise.all([ + execa('git', ['show', `${mergeBase}:yarn.lock`], { + cwd: ROOT_WORKSPACE, + encoding: 'utf8', + }), + execa('git', ['show', `${headRef}:yarn.lock`], { + cwd: ROOT_WORKSPACE, + encoding: 'utf8', + }), + ]); const baseLock = parseSyml(baseLockContent); const currentLock = parseSyml(currentLockContent); @@ -269,23 +275,25 @@ async function buildWorkspaceTransitiveDependencies(): Promise< } /** - * Given a merge base SHA, determine which workspaces are affected by changes - * to `yarn.lock` between that commit and the current working tree. + * Given a merge base SHA and head ref, determine which workspaces are affected + * by changes to `yarn.lock` between those two commits. * * A workspace is considered affected if any package that changed in the * lockfile appears in its transitive dependency closure. * - * @param mergeBase - The merge base SHA to compare the lockfile against. + * @param mergeBase - The merge base SHA. + * @param headRef - The PR branch tip SHA (or "HEAD"). * @param workspaces - The workspace set to check against. * @returns The set of workspace names whose transitive dependencies include * any package that changed in the lockfile. */ async function getLockfileAffectedWorkspaces( mergeBase: string, + headRef: string, workspaces: Workspace[], ): Promise> { const [changedPackages, workspaceGraph] = await Promise.all([ - getChangedLockfilePackages(mergeBase), + getChangedLockfilePackages(mergeBase, headRef), buildWorkspaceTransitiveDependencies(), ]); @@ -347,6 +355,8 @@ export function checkRootChange( * dependencies. * @param options.mergeBase - The merge base SHA, used to diff `yarn.lock` when * it changed. + * @param options.headRef - The PR branch tip SHA (or "HEAD"), used to read the + * current side of `yarn.lock` when diffing. * @returns The set of workspace names to check. */ export async function computeChangedWorkspaces({ @@ -354,11 +364,13 @@ export async function computeChangedWorkspaces({ changedFiles, includeDependencies, mergeBase, + headRef, }: { workspaces: Workspace[]; changedFiles: string[]; includeDependencies: boolean; mergeBase: string; + headRef: string; }): Promise> { const { dependants, dependencies } = await getWorkspaceDependencies(workspaces); @@ -384,6 +396,7 @@ export async function computeChangedWorkspaces({ if (changedFiles.includes('yarn.lock')) { for (const pkg of await getLockfileAffectedWorkspaces( mergeBase, + headRef, workspaces, )) { result.add(pkg); From 192761b6c644d2ebabeb48d23eaedfd6be3032bb Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 12:57:18 +0200 Subject: [PATCH 06/11] Skip full rebuild for version-only root package.json changes Release PRs bump only the `version` field in the root package.json. Previously this triggered a full rebuild of every workspace. Now the root package.json is added to IGNORED_ROOT_FILES, and a version-only check diffs both sides with `git show`. Only non-version changes (e.g., scripts, dependencies) still trigger a full rebuild. --- scripts/lib/workspaces.mts | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/scripts/lib/workspaces.mts b/scripts/lib/workspaces.mts index fca55a5f6bb..0ec946dd79d 100644 --- a/scripts/lib/workspaces.mts +++ b/scripts/lib/workspaces.mts @@ -27,6 +27,10 @@ const IGNORED_ROOT_FILES = new Set([ // build/test/lint run is required, so it should not trigger a full run on its // own. 'yarn.lock', + + // The root package.json has special logic: only a version-only change (e.g., + // from a release PR) is safe to ignore. Any other change triggers a full run. + 'package.json', ]); export type Workspace = { @@ -203,6 +207,42 @@ async function getChangedLockfilePackages( return changedPackageNames; } +/** + * Check whether the root `package.json` changed only in its `version` field + * between `mergeBase` and `headRef`. + * + * Release PRs bump only `version`; any other change (scripts, dependencies, + * etc.) requires a full rebuild. + * + * @param mergeBase - The merge base SHA. + * @param headRef - The PR branch tip SHA (or "HEAD"). + * @returns `true` if only the `version` field differs. + */ +async function isRootPackageVersionOnlyChange( + mergeBase: string, + headRef: string, +): Promise { + const [{ stdout: baseContent }, { stdout: currentContent }] = + await Promise.all([ + execa('git', ['show', `${mergeBase}:package.json`], { + cwd: ROOT_WORKSPACE, + encoding: 'utf8', + }), + execa('git', ['show', `${headRef}:package.json`], { + cwd: ROOT_WORKSPACE, + encoding: 'utf8', + }), + ]); + + const base = JSON.parse(baseContent); + const current = JSON.parse(currentContent); + + delete base.version; + delete current.version; + + return JSON.stringify(base) === JSON.stringify(current); +} + /** * Build a map from each workspace name to the full set of its transitive * dependencies, by walking the resolved lockfile graph via `@yarnpkg/core`. @@ -381,6 +421,16 @@ export async function computeChangedWorkspaces({ return new Set(workspaces.map(({ name }) => name)); } + // The root package.json is ignored by checkRootChange (release PRs bump only + // version), but any non-version change (scripts, dependencies, etc.) still + // requires a full rebuild. + if ( + changedFiles.includes('package.json') && + !(await isRootPackageVersionOnlyChange(mergeBase, headRef)) + ) { + return new Set(workspaces.map(({ name }) => name)); + } + const result = new Set( changedFiles.flatMap((file) => { const workspace = workspaces.find(({ location }) => From f8452e8a39c8ebc04bf711ca426250f59d217ae1 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 13:19:45 +0200 Subject: [PATCH 07/11] Refactor computeChangedWorkspaces to own its inputs and return `Workspace[]` Move getAllWorkspaces and getChangedFiles calls inside computeChangedWorkspaces so callers don't need to fetch and thread those separately. Return { workspaces: Workspace[], hasRootChange } instead of Set, eliminating the post-call filter step in both callers. Switch DependencyGraph and getLockfileAffectedWorkspaces to use Set so the expansion loops add objects directly without name-to-object lookups. --- scripts/generate-partial-build-tsconfig.mts | 12 +-- scripts/get-changed-workspaces.mts | 21 +---- scripts/lib/workspaces.mts | 94 ++++++++++++--------- 3 files changed, 62 insertions(+), 65 deletions(-) diff --git a/scripts/generate-partial-build-tsconfig.mts b/scripts/generate-partial-build-tsconfig.mts index 1239a4f31fd..84032ccd35c 100644 --- a/scripts/generate-partial-build-tsconfig.mts +++ b/scripts/generate-partial-build-tsconfig.mts @@ -1,8 +1,6 @@ import { - getAllWorkspaces, getTypeScriptWorkspaces, computeChangedWorkspaces, - getChangedFiles, } from './lib/workspaces.mjs'; /** @@ -30,20 +28,16 @@ async function main(): Promise { const headRef = process.argv[3] ?? 'HEAD'; - const allWorkspaces = await getAllWorkspaces(); const typeScriptWorkspaces = await getTypeScriptWorkspaces(); - const changedFiles = await getChangedFiles(mergeBase, headRef); - - const packagesToBuild = await computeChangedWorkspaces({ - workspaces: allWorkspaces, - changedFiles, + const { workspaces: packagesToBuild } = await computeChangedWorkspaces({ includeDependencies: true, mergeBase, headRef, }); + const packagesToBuildNames = new Set(packagesToBuild.map(({ name }) => name)); const references = typeScriptWorkspaces - .filter(({ name }) => packagesToBuild.has(name)) + .filter(({ name }) => packagesToBuildNames.has(name)) .map(({ location }) => ({ path: `./${location}/tsconfig.build.json` })); if (references.length === 0) { diff --git a/scripts/get-changed-workspaces.mts b/scripts/get-changed-workspaces.mts index bc95a2ff96b..9ea75db4fc9 100644 --- a/scripts/get-changed-workspaces.mts +++ b/scripts/get-changed-workspaces.mts @@ -1,12 +1,7 @@ import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; -import { - getAllWorkspaces, - checkRootChange, - computeChangedWorkspaces, - getChangedFiles, -} from './lib/workspaces.mjs'; +import { computeChangedWorkspaces } from './lib/workspaces.mjs'; /** * List workspaces that need to be checked given a merge base. @@ -39,25 +34,17 @@ const argv = await yargs(hideBin(process.argv)) .parseAsync(); const { mergeBase, headRef = 'HEAD', includeDependencies } = argv; -const workspaces = await getAllWorkspaces(); -const changedFiles = await getChangedFiles(mergeBase, headRef); -const hasRootChange = checkRootChange(workspaces, changedFiles); - -const changed = await computeChangedWorkspaces({ - workspaces, - changedFiles, +const { workspaces, hasRootChange } = await computeChangedWorkspaces({ includeDependencies, mergeBase, headRef, }); -const changedWorkspaces = workspaces.filter(({ name }) => changed.has(name)); - console.log( JSON.stringify({ - names: changedWorkspaces.map(({ name }) => name), - locations: changedWorkspaces.map(({ location }) => location), + names: workspaces.map(({ name }) => name), + locations: workspaces.map(({ location }) => location), hasRootChange, }), ); diff --git a/scripts/lib/workspaces.mts b/scripts/lib/workspaces.mts index 0ec946dd79d..ef4e5a2ab12 100644 --- a/scripts/lib/workspaces.mts +++ b/scripts/lib/workspaces.mts @@ -39,8 +39,8 @@ export type Workspace = { }; export type DependencyGraph = { - dependants: Record>; - dependencies: Record>; + dependants: Record>; + dependencies: Record>; }; /** @@ -95,11 +95,11 @@ export async function getTypeScriptWorkspaces(): Promise { export async function getWorkspaceDependencies( workspaces: Workspace[], ): Promise { - const dependants: Record> = Object.fromEntries( - workspaces.map(({ name }) => [name, new Set()]), + const dependants: Record> = Object.fromEntries( + workspaces.map(({ name }) => [name, new Set()]), ); - const dependencies: Record> = Object.fromEntries( - workspaces.map(({ name }) => [name, new Set()]), + const dependencies: Record> = Object.fromEntries( + workspaces.map(({ name }) => [name, new Set()]), ); const packages = await Promise.all( @@ -110,15 +110,21 @@ export async function getWorkspaceDependencies( ), ); - for (const [index, { name }] of workspaces.entries()) { + for (const [index, workspace] of workspaces.entries()) { const pkg = packages[index]; for (const dependency of Object.keys({ ...pkg.dependencies, ...pkg.devDependencies, })) { if (dependants[dependency] !== undefined) { - dependants[dependency].add(name); - dependencies[name].add(dependency); + const dependencyWorkspace = workspaces.find( + (item) => item.name === pkg.name, + ); + + if (dependencyWorkspace) { + dependants[dependency].add(workspace); + dependencies[workspace.name].add(dependencyWorkspace); + } } } } @@ -331,23 +337,23 @@ async function getLockfileAffectedWorkspaces( mergeBase: string, headRef: string, workspaces: Workspace[], -): Promise> { +): Promise> { const [changedPackages, workspaceGraph] = await Promise.all([ getChangedLockfilePackages(mergeBase, headRef), buildWorkspaceTransitiveDependencies(), ]); - const result = new Set(); + const result = new Set(); - for (const { name } of workspaces) { - const transitiveDeps = workspaceGraph.get(name); + for (const workspace of workspaces) { + const transitiveDeps = workspaceGraph.get(workspace.name); if (!transitiveDeps) { continue; } for (const pkg of changedPackages) { if (transitiveDeps.has(pkg)) { - result.add(name); + result.add(workspace); break; } } @@ -389,46 +395,49 @@ export function checkRootChange( * dependency, and those are seeded into the result before dependant expansion. * * @param options - Options. - * @param options.workspaces - The workspace set to compute against. - * @param options.changedFiles - List of changed files relative to the repo root. - * @param options.includeDependencies - Whether to also expand to transitive - * dependencies. * @param options.mergeBase - The merge base SHA, used to diff `yarn.lock` when * it changed. * @param options.headRef - The PR branch tip SHA (or "HEAD"), used to read the * current side of `yarn.lock` when diffing. + * @param options.includeDependencies - Whether to also expand to transitive + * dependencies. * @returns The set of workspace names to check. */ export async function computeChangedWorkspaces({ - workspaces, - changedFiles, - includeDependencies, mergeBase, headRef, + includeDependencies, }: { - workspaces: Workspace[]; - changedFiles: string[]; - includeDependencies: boolean; mergeBase: string; headRef: string; -}): Promise> { - const { dependants, dependencies } = - await getWorkspaceDependencies(workspaces); + includeDependencies: boolean; +}): Promise<{ + workspaces: Workspace[]; + hasRootChange: boolean; +}> { + const changedFiles = await getChangedFiles(mergeBase, headRef); + const workspaces = await getAllWorkspaces(); - // If any changed file lives outside all package directories (e.g. root + // If any changed file lives outside all package directories (e.g., root // configs, workflow files, scripts), rebuild and test everything. if (checkRootChange(workspaces, changedFiles)) { - return new Set(workspaces.map(({ name }) => name)); + return { + workspaces, + hasRootChange: true, + }; } - // The root package.json is ignored by checkRootChange (release PRs bump only - // version), but any non-version change (scripts, dependencies, etc.) still - // requires a full rebuild. + // The root package.json is ignored by `checkRootChange` (release PRs bump + // only version), but any non-version changes (scripts, dependencies, etc.) + // still require a full rebuild. if ( changedFiles.includes('package.json') && !(await isRootPackageVersionOnlyChange(mergeBase, headRef)) ) { - return new Set(workspaces.map(({ name }) => name)); + return { + workspaces, + hasRootChange: true, + }; } const result = new Set( @@ -436,7 +445,8 @@ export async function computeChangedWorkspaces({ const workspace = workspaces.find(({ location }) => file.startsWith(`${location}/`), ); - return workspace ? [workspace.name] : []; + + return workspace ? [workspace] : []; }), ); @@ -453,21 +463,27 @@ export async function computeChangedWorkspaces({ } } + const { dependants, dependencies } = + await getWorkspaceDependencies(workspaces); + // Expand to transitive dependants (packages that depend on what changed). - for (const pkg of result) { - for (const dependant of dependants[pkg] ?? []) { + for (const workspace of result) { + for (const dependant of dependants[workspace.name] ?? []) { result.add(dependant); } } if (includeDependencies) { // Expand to transitive dependencies (dist files must exist to build dependants). - for (const pkg of result) { - for (const dependency of dependencies[pkg] ?? []) { + for (const workspace of result) { + for (const dependency of dependencies[workspace.name] ?? []) { result.add(dependency); } } } - return result; + return { + workspaces: Array.from(result), + hasRootChange: false, + }; } From e003ee5faac78f946720f7fbbb64e19555ddeafd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 13:22:34 +0200 Subject: [PATCH 08/11] Fix dependency workspace lookup in getWorkspaceDependencies The find predicate used pkg.name (the current workspace's own name) instead of dependency (the package being depended upon), so it would resolve to the workspace itself rather than the actual dependency. --- scripts/lib/workspaces.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lib/workspaces.mts b/scripts/lib/workspaces.mts index ef4e5a2ab12..a6e26c8e597 100644 --- a/scripts/lib/workspaces.mts +++ b/scripts/lib/workspaces.mts @@ -118,7 +118,7 @@ export async function getWorkspaceDependencies( })) { if (dependants[dependency] !== undefined) { const dependencyWorkspace = workspaces.find( - (item) => item.name === pkg.name, + (item) => item.name === dependency, ); if (dependencyWorkspace) { From a33ab2daf4730548b95c7c5bd35c2b5536cfb565 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 17:06:45 +0200 Subject: [PATCH 09/11] Revert foundryup changes and add `@ts-expect-error` --- packages/foundryup/src/extract.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/foundryup/src/extract.ts b/packages/foundryup/src/extract.ts index 392cde92ccf..bc809bd7b58 100644 --- a/packages/foundryup/src/extract.ts +++ b/packages/foundryup/src/extract.ts @@ -1,3 +1,4 @@ +import { Minipass } from 'minipass'; import { ok } from 'node:assert/strict'; import { createHash } from 'node:crypto'; import { createWriteStream } from 'node:fs'; @@ -142,6 +143,9 @@ async function extractFromTar( extractTar( { cwd: dir, + // @ts-expect-error: Types here broke in `tar@7.5.12`, but it appears to + // work fine as-is. + // See: https://github.com/isaacs/node-tar/issues/459 transform: (entry) => { const absolutePath = entry.absolute; if (!absolutePath) { @@ -150,22 +154,25 @@ async function extractFromTar( if (checksumAlgorithm) { const hash = createHash(checksumAlgorithm); - entry.on('data', (chunk: Buffer) => hash.update(chunk)); - entry.on('end', () => { + const passThrough = new Minipass({ async: true }); + passThrough.pipe(hash); + passThrough.on('end', () => { downloads.push({ path: absolutePath, binary: entry.path as Binary, checksum: hash.digest('hex'), }); }); - } else { - downloads.push({ - path: absolutePath, - binary: entry.path as Binary, - }); + return passThrough; } - return entry; + // When no checksum is needed, record the entry and return undefined + // to use the original stream without transformation + downloads.push({ + path: absolutePath, + binary: entry.path as Binary, + }); + return undefined; }, }, binaries, From 80e3602bfd3f6a4fcfef6daa59ed27664b2153da Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 17:12:18 +0200 Subject: [PATCH 10/11] Add `minipass` back to foundryup package --- packages/foundryup/package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/foundryup/package.json b/packages/foundryup/package.json index 036327bb3b9..4ab1f0c17f3 100644 --- a/packages/foundryup/package.json +++ b/packages/foundryup/package.json @@ -47,6 +47,7 @@ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { + "minipass": "^7.1.2", "tar": "^7.4.3", "unzipper": "^0.12.3", "yargs": "^17.7.2", diff --git a/yarn.lock b/yarn.lock index 174f3351cdc..0769618cfea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7278,6 +7278,7 @@ __metadata: "@types/yargs-parser": "npm:^21.0.3" deepmerge: "npm:^4.2.2" jest: "npm:^30.4.2" + minipass: "npm:^7.1.2" nock: "npm:^13.3.1" tar: "npm:^7.4.3" ts-jest: "npm:^29.4.11" From 4bf933e12ddfbec50acecf0b6c175b9bd6bfce68 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 24 Jul 2026 17:12:54 +0200 Subject: [PATCH 11/11] Revert coverage in foundryup package --- packages/foundryup/jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/foundryup/jest.config.js b/packages/foundryup/jest.config.js index fce57c8cb35..3e2689f3405 100644 --- a/packages/foundryup/jest.config.js +++ b/packages/foundryup/jest.config.js @@ -18,7 +18,7 @@ module.exports = merge(baseConfig, { coverageThreshold: { global: { branches: 50, - functions: 61.53, + functions: 63.15, lines: 55.08, statements: 55.02, },