From dbf10bed123da132f75c142b3ac926e0fc984e86 Mon Sep 17 00:00:00 2001 From: Christophe Hurpeau <302891+christophehurpeau@users.noreply.github.com> Date: Thu, 25 Apr 2024 23:39:38 +0200 Subject: [PATCH] refactor: build with rollup + esbuild and migrate to vitest --- .github/workflows/gh-pages.yml | 3 - .husky/pre-push | 2 +- .yo-rc.json | 2 +- babel.config.cjs | 12 - .../utils/__mocks__/createReportError.d.ts | 5 +- .../__mocks__/createReportError.d.ts.map | 2 +- dist/index-node18.mjs | 1283 ++++--- dist/index-node18.mjs.map | 2 +- jest.config.json | 16 - package.json | 24 +- rollup.config.mjs | 2 +- scripts/check-package.js | 1 - src/.eslintrc.json | 2 +- .../checkDirectPeerDependencies.test.ts | 33 +- src/checks/checkDuplicateDependencies.test.ts | 5 +- src/checks/checkExactVersions.test.ts | 19 +- src/checks/checkIdenticalVersions.test.ts | 7 +- src/checks/checkMinRangeSatisfies.test.ts | 7 +- src/checks/checkNoDependencies.test.ts | 7 +- .../checkResolutionsVersionsMatch.test.ts | 7 +- src/checks/checkSatisfiesVersions.test.ts | 7 +- ...eckSatisfiesVersionsFromDependency.test.ts | 7 +- ...checkSatisfiesVersionsInDependency.test.ts | 7 +- src/utils/__mocks__/createReportError.ts | 6 +- .../createGetDependencyPackageJson.test.ts | 20 +- src/utils/createReportError.test.ts | 23 +- src/utils/warnForUtils.test.ts | 1 + tsconfig.json | 2 +- yarn.lock | 3152 +++++------------ 29 files changed, 1818 insertions(+), 2848 deletions(-) delete mode 100644 babel.config.cjs delete mode 100644 jest.config.json diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 73131776..cb5a972e 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -26,9 +26,6 @@ jobs: - name: Generate Typedoc run: yarn typedoc --tsconfig tsconfig.doc.json - - name: Generate Coverage - run: yarn test:coverage:lcov --coverageDirectory=docs/coverage/ - - name: Create nojekyll run: touch docs/.nojekyll diff --git a/.husky/pre-push b/.husky/pre-push index 71ea86a0..d8c95ba7 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -9,7 +9,7 @@ do # Skip if branch deletion if [ "$local_sha" != "$z40" ]; then if [ "$local_ref" = "$branch_ref" ]; then - yarn run checks && yarn run lint && yarn test --watchAll=false --changedSince=origin/main + yarn run checks && yarn run lint && yarn test --run --changed origin/main fi fi done diff --git a/.yo-rc.json b/.yo-rc.json index 13e13076..2353bb9b 100644 --- a/.yo-rc.json +++ b/.yo-rc.json @@ -8,7 +8,7 @@ "testing": { "ci": true, "codecov": true, - "runner": "jest" + "runner": "vitest" } }, "project": { diff --git a/babel.config.cjs b/babel.config.cjs deleted file mode 100644 index 45e99e7f..00000000 --- a/babel.config.cjs +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -module.exports = function babelConfig(api) { - const isTest = api.env('test'); - - if (!isTest) return {}; - - return { - only: ['src'], - presets: [['pob-babel/preset.js', { modules: false }]], - }; -}; diff --git a/dist/definitions/utils/__mocks__/createReportError.d.ts b/dist/definitions/utils/__mocks__/createReportError.d.ts index 2abc5265..1694d4c9 100644 --- a/dist/definitions/utils/__mocks__/createReportError.d.ts +++ b/dist/definitions/utils/__mocks__/createReportError.d.ts @@ -1,4 +1,3 @@ -/// -export declare const mockReportError: jest.Mock; -export declare const createReportError: jest.Mock; +export declare const mockReportError: import("vitest").Mock; +export declare const createReportError: import("vitest").Mock; //# sourceMappingURL=createReportError.d.ts.map \ No newline at end of file diff --git a/dist/definitions/utils/__mocks__/createReportError.d.ts.map b/dist/definitions/utils/__mocks__/createReportError.d.ts.map index 4b34388e..33aec3f4 100644 --- a/dist/definitions/utils/__mocks__/createReportError.d.ts.map +++ b/dist/definitions/utils/__mocks__/createReportError.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"createReportError.d.ts","sourceRoot":"","sources":["../../../../src/utils/__mocks__/createReportError.ts"],"names":[],"mappings":";AAAA,eAAO,MAAM,eAAe,0BAAY,CAAC;AACzC,eAAO,MAAM,iBAAiB,0BAA6C,CAAC"} \ No newline at end of file +{"version":3,"file":"createReportError.d.ts","sourceRoot":"","sources":["../../../../src/utils/__mocks__/createReportError.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,iCAAU,CAAC;AACvC,eAAO,MAAM,iBAAiB,iCAA2C,CAAC"} \ No newline at end of file diff --git a/dist/index-node18.mjs b/dist/index-node18.mjs index 349a110f..4c2f1b14 100644 --- a/dist/index-node18.mjs +++ b/dist/index-node18.mjs @@ -8,10 +8,8 @@ import { fileURLToPath } from 'node:url'; import { resolve } from 'import-meta-resolve'; import { globSync } from 'glob'; -const getKeys = o => Object.keys(o); -const getEntries = o => Object.entries(o); - -/* eslint-disable no-console */ +const getKeys = (o) => Object.keys(o); +const getEntries = (o) => Object.entries(o); let titleDisplayed = null; let pkgPathDisplayed = null; @@ -20,34 +18,52 @@ let totalErrors = 0; let totalFixable = 0; function displayConclusion() { if (!totalWarnings && !totalErrors) { - console.log(`\n${chalk.green('✅ No errors or warnings found')}.`); + console.log(` +${chalk.green("\u2705 No errors or warnings found")}.`); } else if (!totalErrors) { - console.log(`\nFound ${chalk.yellow(`${totalWarnings} warnings`)}.`); + console.log(` +Found ${chalk.yellow(`${totalWarnings} warnings`)}.`); } else if (!totalWarnings) { - console.log(`\nFound ${chalk.red(`${totalErrors} errors`)}.`); + console.log(` +Found ${chalk.red(`${totalErrors} errors`)}.`); } else { - console.log(`\nFound ${chalk.red(`${totalErrors} errors`)} and ${chalk.yellow(`${totalWarnings} warnings`)}.`); + console.log( + ` +Found ${chalk.red(`${totalErrors} errors`)} and ${chalk.yellow( + `${totalWarnings} warnings` + )}.` + ); } if (totalFixable) { - console.log(`Found ${chalk.green(`${totalFixable} auto-fixable`)} errors or warnings, run the command with "--fix" to fix them.`); + console.log( + `Found ${chalk.green( + `${totalFixable} auto-fixable` + )} errors or warnings, run the command with "--fix" to fix them.` + ); } } function logMessage(msgTitle, msgInfo, onlyWarns, autoFixable) { - if (onlyWarns) totalWarnings++;else totalErrors++; - if (autoFixable) totalFixable++; - console.error(`${onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)}${msgInfo ? `: ${msgInfo}` : ''}${autoFixable ? ` ${chalk.bgGreenBright(chalk.black('auto-fixable'))}` : ''}`); + if (onlyWarns) + totalWarnings++; + else + totalErrors++; + if (autoFixable) + totalFixable++; + console.error( + `${onlyWarns ? chalk.yellow(`\u26A0 ${msgTitle}`) : chalk.red(`\u274C ${msgTitle}`)}${msgInfo ? `: ${msgInfo}` : ""}${autoFixable ? ` ${chalk.bgGreenBright(chalk.black("auto-fixable"))}` : ""}` + ); } function createReportError(title, pkgPathName) { return function reportError(msgTitle, msgInfo, onlyWarns, autoFixable = false) { if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) { - if (titleDisplayed) console.error(); + if (titleDisplayed) + console.error(); console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`)); titleDisplayed = title; pkgPathDisplayed = pkgPathName; } logMessage(msgTitle, msgInfo, onlyWarns, autoFixable); if (!onlyWarns) { - // console.trace(); process.exitCode = 1; } }; @@ -55,40 +71,54 @@ function createReportError(title, pkgPathName) { function reportNotWarnedFor(reportError, onlyWarnsForCheck) { const notWarnedFor = onlyWarnsForCheck.getNotWarnedFor(); if (notWarnedFor.length > 0) { - reportError(`Invalid config in "${onlyWarnsForCheck.configName}"`, `no warning was raised for ${notWarnedFor.map(depName => `"${depName}"`).join(', ')}`, false); + reportError( + `Invalid config in "${onlyWarnsForCheck.configName}"`, + `no warning was raised for ${notWarnedFor.map((depName) => `"${depName}"`).join(", ")}`, + false + ); } } function reportNotWarnedForMapping(reportError, onlyWarnsForMappingCheck) { const notWarnedForMapping = onlyWarnsForMappingCheck.getNotWarnedFor(); getEntries(notWarnedForMapping).forEach(([depNameOrStar, notWarnedFor]) => { - reportError(`Invalid config in "${onlyWarnsForMappingCheck.configName}" for "${depNameOrStar}"`, `no warning was raised for ${notWarnedFor.map(depName => `"${depName}"`).join(', ')}`); + reportError( + `Invalid config in "${onlyWarnsForMappingCheck.configName}" for "${depNameOrStar}"`, + `no warning was raised for ${notWarnedFor.map((depName) => `"${depName}"`).join(", ")}` + ); }); } function checkDuplicateDependencies(reportError, pkg, isPkgLibrary, depType, searchIn, depPkg, onlyWarnsForCheck) { const dependencies = depPkg[depType]; - if (!dependencies) return; - const searchInExisting = searchIn.filter(type => pkg[type]); + if (!dependencies) + return; + const searchInExisting = searchIn.filter((type) => pkg[type]); for (const [depKey, range] of Object.entries(dependencies)) { - const versionsIn = searchInExisting.filter(type => pkg[type][depKey]); + const versionsIn = searchInExisting.filter((type) => pkg[type][depKey]); let allowDuplicated = false; - if (versionsIn.length === 2 && isPkgLibrary && versionsIn.includes('dependencies') && versionsIn.includes('devDependencies')) { + if (versionsIn.length === 2 && isPkgLibrary && versionsIn.includes("dependencies") && versionsIn.includes("devDependencies")) { const depVersion = pkg.dependencies[depKey]; const devDepVersion = pkg.devDependencies[depKey]; if (depVersion && depVersion === devDepVersion) { - reportError(`Invalid "${depKey}" has same version in dependencies and devDependencies`, 'please place it only in dependencies or use range in dependencies'); + reportError( + `Invalid "${depKey}" has same version in dependencies and devDependencies`, + "please place it only in dependencies or use range in dependencies" + ); continue; } allowDuplicated = true; } if (versionsIn.length > 2 || versionsIn.length === 2 && !allowDuplicated) { - reportError(`Invalid "${depKey}" present in ${versionsIn.join(' and ')}`, 'please place it only in dependencies'); + reportError( + `Invalid "${depKey}" present in ${versionsIn.join(" and ")}`, + "please place it only in dependencies" + ); } else { - const versions = versionsIn.map(type => pkg[type][depKey]); + const versions = versionsIn.map((type) => pkg[type][depKey]); versions.forEach((version, index) => { - if (version.startsWith('file:') || range.startsWith('file:')) return; - // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace - if (version.startsWith('workspace:') || range.startsWith('workspace:')) { + if (version.startsWith("file:") || range.startsWith("file:")) + return; + if (version.startsWith("workspace:") || range.startsWith("workspace:")) { return; } if (semver.satisfies(version, range, { @@ -98,128 +128,168 @@ function checkDuplicateDependencies(reportError, pkg, isPkgLibrary, depType, sea })) { return; } - - // Ignore reporting duplicate when there's a resolution for it if (pkg.resolutions?.[depKey]) { return; } const versionInType = versionsIn[index]; - reportError(`Invalid duplicate dependency "${depKey}"`, `"${versions[0]}" (in ${versionInType}) should satisfies "${range}" from "${depPkg.name}" ${depType}.`, onlyWarnsForCheck.shouldWarnsFor(depKey)); + reportError( + `Invalid duplicate dependency "${depKey}"`, + `"${versions[0]}" (in ${versionInType}) should satisfies "${range}" from "${depPkg.name}" ${depType}.`, + onlyWarnsForCheck.shouldWarnsFor(depKey) + ); }); } } } -async function checkDirectDuplicateDependencies(pkg, pkgPathName, isPackageALibrary, depType, getDependencyPackageJson, onlyWarnsForCheck, reportErrorNamePrefix = '', customCreateReportError = createReportError) { - const reportError = customCreateReportError(`${reportErrorNamePrefix}Direct Duplicate Dependencies`, pkgPathName); - [{ - type: 'devDependencies', - searchIn: ['devDependencies', 'dependencies'] - }, { - type: 'dependencies', - searchIn: ['devDependencies', 'dependencies'] - }].forEach(({ - type, - searchIn - }) => { +async function checkDirectDuplicateDependencies(pkg, pkgPathName, isPackageALibrary, depType, getDependencyPackageJson, onlyWarnsForCheck, reportErrorNamePrefix = "", customCreateReportError = createReportError) { + const reportError = customCreateReportError( + `${reportErrorNamePrefix}Direct Duplicate Dependencies`, + pkgPathName + ); + const checks = [ + { + type: "devDependencies", + searchIn: ["devDependencies", "dependencies"] + }, + { type: "dependencies", searchIn: ["devDependencies", "dependencies"] } + ]; + checks.forEach(({ type, searchIn }) => { const dependencies = pkg[type]; - if (!dependencies) return; + if (!dependencies) + return; for (const depName of getKeys(dependencies)) { const depPkg = getDependencyPackageJson(depName); - checkDuplicateDependencies(reportError, pkg, isPackageALibrary, depType, searchIn, depPkg, onlyWarnsForCheck.createFor(depName)); + checkDuplicateDependencies( + reportError, + pkg, + isPackageALibrary, + depType, + searchIn, + depPkg, + onlyWarnsForCheck.createFor(depName) + ); } }); reportNotWarnedForMapping(reportError, onlyWarnsForCheck); } function checkPeerDependencies(pkg, reportError, type, allowedPeerIn, providedDependencies, depPkg, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck) { - const { - peerDependencies, - peerDependenciesMeta - } = depPkg; - if (!peerDependencies) return; - const allowedPeerInExisting = allowedPeerIn.filter(allowedPeerInType => pkg[allowedPeerInType]); + const { peerDependencies, peerDependenciesMeta } = depPkg; + if (!peerDependencies) + return; + const allowedPeerInExisting = allowedPeerIn.filter( + (allowedPeerInType) => pkg[allowedPeerInType] + ); for (const [peerDepName, range] of Object.entries(peerDependencies)) { - const versionsIn = allowedPeerInExisting.filter(allowedPeerInExistingType => pkg[allowedPeerInExistingType]?.[peerDepName]); + const versionsIn = allowedPeerInExisting.filter( + (allowedPeerInExistingType) => pkg[allowedPeerInExistingType]?.[peerDepName] + ); if (versionsIn.length === 0) { const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName]; if (peerDependenciesMetaPeerDep?.optional) { continue; } - let additionalDetails = ''; - // satisfied by another direct dependency - const providedDependenciesForDepName = providedDependencies.filter(([depName]) => depName === peerDepName); + let additionalDetails = ""; + const providedDependenciesForDepName = providedDependencies.filter( + ([depName]) => depName === peerDepName + ); if (providedDependenciesForDepName.length > 0) { - if (providedDependenciesForDepName.every(([, depRange]) => semver.intersects(range, depRange))) { + if (providedDependenciesForDepName.every( + ([, depRange]) => semver.intersects(range, depRange) + )) { continue; } - additionalDetails += ' (required as some dependencies have non-satisfying range too)'; + additionalDetails += " (required as some dependencies have non-satisfying range too)"; } - reportError(`Missing "${peerDepName}" peer dependency from "${depPkg.name}" in ${type}`, `it should satisfies "${range}" and be in ${allowedPeerIn.join(' or ')}${additionalDetails}`, missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName)); + reportError( + `Missing "${peerDepName}" peer dependency from "${depPkg.name}" in ${type}`, + `it should satisfies "${range}" and be in ${allowedPeerIn.join( + " or " + )}${additionalDetails}`, + missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName) + ); } else { - const versions = versionsIn.map(versionsInType => pkg[versionsInType][peerDepName]); + const versions = versionsIn.map( + (versionsInType) => pkg[versionsInType][peerDepName] + ); versions.forEach((version, index) => { - if (version.startsWith('npm:')) { + if (version.startsWith("npm:")) { return; } - if (version === '*') { + if (version === "*") { return; } const minVersionOfVersion = semver.minVersion(version); if (!minVersionOfVersion || !semver.satisfies(minVersionOfVersion, range, { includePrerelease: true })) { - reportError(`Invalid "${peerDepName}" peer dependency`, `"${version}" (in ${allowedPeerInExisting[index]}) should satisfies "${range}" from "${depPkg.name}" ${type}`, invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName)); + reportError( + `Invalid "${peerDepName}" peer dependency`, + `"${version}" (in ${allowedPeerInExisting[index]}) should satisfies "${range}" from "${depPkg.name}" ${type}`, + invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName) + ); } }); } } } -const regularDependencyTypes = ['devDependencies', 'dependencies', 'optionalDependencies']; +const regularDependencyTypes = [ + "devDependencies", + "dependencies", + "optionalDependencies" +]; const getAllowedPeerInFromType = (depPkgType, isLibrary) => { switch (depPkgType) { - case 'devDependencies': - return ['devDependencies', 'dependencies']; - case 'dependencies': - return isLibrary ? ['dependencies', 'peerDependencies'] : ['devDependencies', 'dependencies']; - case 'optionalDependencies': - return isLibrary ? ['dependencies', 'optionalDependencies', 'peerDependencies'] : ['devDependencies', 'dependencies']; - - // no default + case "devDependencies": + return ["devDependencies", "dependencies"]; + case "dependencies": + return isLibrary ? ["dependencies", "peerDependencies"] : ["devDependencies", "dependencies"]; + case "optionalDependencies": + return isLibrary ? ["dependencies", "optionalDependencies", "peerDependencies"] : ["devDependencies", "dependencies"]; } }; async function checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDependencyPackageJson, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck, customCreateReportError = createReportError) { - const reportError = customCreateReportError('Peer Dependencies', pkgPathName); + const reportError = customCreateReportError("Peer Dependencies", pkgPathName); const allDepPkgs = []; const allDirectDependenciesDependencies = []; - await Promise.all(regularDependencyTypes.map(async depType => { - const dependencies = pkg[depType]; - if (!dependencies) return; - for (const depName of getKeys(dependencies)) { - if (pkg.peerDependencies?.[depName]) { - if (semver.intersects(dependencies[depName], pkg.peerDependencies[depName])) { - continue; + await Promise.all( + regularDependencyTypes.map(async (depType) => { + const dependencies = pkg[depType]; + if (!dependencies) + return; + for (const depName of getKeys(dependencies)) { + if (pkg.peerDependencies?.[depName]) { + if (semver.intersects( + dependencies[depName], + pkg.peerDependencies[depName] + )) { + continue; + } + } + const depPkg = getDependencyPackageJson(depName); + allDepPkgs.push({ name: depName, type: depType, pkg: depPkg }); + if (depPkg.dependencies && !isLibrary) { + allDirectDependenciesDependencies.push( + ...Object.entries(depPkg.dependencies) + ); } } - const depPkg = getDependencyPackageJson(depName); - allDepPkgs.push({ - name: depName, - type: depType, - pkg: depPkg - }); - if (depPkg.dependencies && !isLibrary) { - allDirectDependenciesDependencies.push(...Object.entries(depPkg.dependencies)); - } - } - })); - for (const { - name: depName, - type: depType, - pkg: depPkg - } of allDepPkgs) { + }) + ); + for (const { name: depName, type: depType, pkg: depPkg } of allDepPkgs) { if (depPkg.peerDependencies) { - checkPeerDependencies(pkg, reportError, depType, getAllowedPeerInFromType(depType, isLibrary), allDirectDependenciesDependencies, depPkg, missingOnlyWarnsForCheck.createFor(depName), invalidOnlyWarnsForCheck.createFor(depName)); + checkPeerDependencies( + pkg, + reportError, + depType, + getAllowedPeerInFromType(depType, isLibrary), + allDirectDependenciesDependencies, + depPkg, + missingOnlyWarnsForCheck.createFor(depName), + invalidOnlyWarnsForCheck.createFor(depName) + ); } } reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck); @@ -228,9 +298,7 @@ async function checkDirectPeerDependencies(isLibrary, pkg, pkgPathName, getDepen } } -const isVersionRange = version => version.startsWith('^') || version.startsWith('~') || version.startsWith('>') || version.startsWith('<'); - -// eslint-disable-next-line @typescript-eslint/require-await +const isVersionRange = (version) => version.startsWith("^") || version.startsWith("~") || version.startsWith(">") || version.startsWith("<"); async function checkExactVersions(pkg, pkgPathName, types, { getDependencyPackageJson, onlyWarnsForCheck, @@ -238,15 +306,19 @@ async function checkExactVersions(pkg, pkgPathName, types, { tryToAutoFix = false, customCreateReportError = createReportError }) { - const reportError = customCreateReportError('Exact versions', pkgPathName); + const reportError = customCreateReportError("Exact versions", pkgPathName); for (const type of types) { const pkgDependencies = pkg[type]; - if (!pkgDependencies) continue; - for (const [dependencyName, versionConst] of Object.entries(pkgDependencies)) { + if (!pkgDependencies) + continue; + for (const [dependencyName, versionConst] of Object.entries( + pkgDependencies + )) { let version = versionConst; - if (version.startsWith('npm:')) { + if (version.startsWith("npm:")) { const match = /^npm:.*@(.*)$/.exec(version); - if (!match) throw new Error(`Invalid version match: ${version}`); + if (!match) + throw new Error(`Invalid version match: ${version}`); const [, realVersion] = match; version = realVersion; } @@ -263,26 +335,46 @@ async function checkExactVersions(pkg, pkgPathName, types, { resolvedDep = null; } if (!resolvedDep?.version) { - reportError(`Unexpected range dependency in "${type}" for "${dependencyName}"`, `expecting "${version}" to be exact${tryToAutoFix ? `, autofix failed to resolve "${dependencyName}".` : ''}`, shouldOnlyWarn, false); + reportError( + `Unexpected range dependency in "${type}" for "${dependencyName}"`, + `expecting "${version}" to be exact${tryToAutoFix ? `, autofix failed to resolve "${dependencyName}".` : ""}`, + shouldOnlyWarn, + false + ); } else if (!semver.satisfies(resolvedDep.version, version, { includePrerelease: true })) { - reportError(`Unexpected range dependency in "${type}" for "${dependencyName}"`, `expecting "${version}" to be exact${tryToAutoFix ? `, autofix failed as "${dependencyName}"'s resolved version is "${resolvedDep.version}" and doesn't satisfies "${version}".` : ''}`, shouldOnlyWarn, false); + reportError( + `Unexpected range dependency in "${type}" for "${dependencyName}"`, + `expecting "${version}" to be exact${tryToAutoFix ? `, autofix failed as "${dependencyName}"'s resolved version is "${resolvedDep.version}" and doesn't satisfies "${version}".` : ""}`, + shouldOnlyWarn, + false + ); } else if (tryToAutoFix) { pkgDependencies[dependencyName] = resolvedDep.version; } else { - reportError(`Unexpected range dependency in "${type}" for "${dependencyName}"`, `expecting "${version}" to be exact "${resolvedDep.version}".`, shouldOnlyWarn, true); + reportError( + `Unexpected range dependency in "${type}" for "${dependencyName}"`, + `expecting "${version}" to be exact "${resolvedDep.version}".`, + shouldOnlyWarn, + true + ); } } else { - let exactVersion = version.slice(version[1] === '=' ? 2 : 1); - if (exactVersion.split('.').length < 3) { - if (exactVersion.split('.').length === 1) { + let exactVersion = version.slice(version[1] === "=" ? 2 : 1); + if (exactVersion.split(".").length < 3) { + if (exactVersion.split(".").length === 1) { exactVersion = `${exactVersion}.0.0`; } else { exactVersion = `${exactVersion}.0`; } } - reportError(`Unexpected range dependency in "${type}" for "${dependencyName}"`, `expecting "${version}" to be exact "${exactVersion}".`, shouldOnlyWarn, false); + reportError( + `Unexpected range dependency in "${type}" for "${dependencyName}"`, + `expecting "${version}" to be exact "${exactVersion}".`, + shouldOnlyWarn, + false + ); } } } @@ -292,26 +384,35 @@ async function checkExactVersions(pkg, pkgPathName, types, { function checkIdenticalVersions(pkg, pkgPathName, type, deps, onlyWarnsForCheck, customCreateReportError = createReportError) { const pkgDependencies = pkg[type] || {}; - const reportError = customCreateReportError('Identical Versions', pkgPathName); - getKeys(deps).forEach(depKey => { + const reportError = customCreateReportError( + "Identical Versions", + pkgPathName + ); + getKeys(deps).forEach((depKey) => { const version = pkgDependencies[depKey]; if (!version) { reportError(`Unexpected missing ${type} for "${depKey}".`); return; } const depConfigArrayOrObject = deps[depKey]; - const depConfig = Array.isArray(depConfigArrayOrObject) ? { - [type]: depConfigArrayOrObject - } : depConfigArrayOrObject; - getKeys(depConfig).forEach(depKeyType => { + const depConfig = Array.isArray(depConfigArrayOrObject) ? { [type]: depConfigArrayOrObject } : depConfigArrayOrObject; + getKeys(depConfig).forEach((depKeyType) => { const pkgDependenciesType = pkg[depKeyType] || {}; - depConfig[depKeyType]?.forEach(depKeyIdentical => { + depConfig[depKeyType]?.forEach((depKeyIdentical) => { const value = pkgDependenciesType[depKeyIdentical]; if (!value) { - reportError(`Missing "${depKeyIdentical}" in ${depKeyType}`, `it should be "${version}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); + reportError( + `Missing "${depKeyIdentical}" in ${depKeyType}`, + `it should be "${version}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey) + ); } if (value !== version) { - reportError(`Invalid "${depKeyIdentical}" in ${depKeyType}`, `expecting "${value}" be "${version}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); + reportError( + `Invalid "${depKeyIdentical}" in ${depKeyType}`, + `expecting "${value}" be "${version}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey) + ); } }); }); @@ -320,28 +421,44 @@ function checkIdenticalVersions(pkg, pkgPathName, type, deps, onlyWarnsForCheck, function checkIdenticalVersionsThanDependency(pkg, pkgPathName, type, depKeys, depPkg, dependencies = {}, onlyWarnsForCheck, customCreateReportError = createReportError) { const pkgDependencies = pkg[type] || {}; - const reportError = customCreateReportError(`Same Versions than ${depPkg.name}`, pkgPathName); - depKeys.forEach(depKey => { + const reportError = customCreateReportError( + `Same Versions than ${depPkg.name}`, + pkgPathName + ); + depKeys.forEach((depKey) => { const version = dependencies[depKey]; if (!version) { - reportError(`Unexpected missing dependency "${depKey}" in "${depPkg.name}".`); + reportError( + `Unexpected missing dependency "${depKey}" in "${depPkg.name}".` + ); return; } - if (version.startsWith('^') || version.startsWith('~')) { - reportError(`Unexpected range dependency in "${depPkg.name}" for "${depKey}"`, 'perhaps use checkSatisfiesVersionsFromDependency() instead.'); + if (version.startsWith("^") || version.startsWith("~")) { + reportError( + `Unexpected range dependency in "${depPkg.name}" for "${depKey}"`, + "perhaps use checkSatisfiesVersionsFromDependency() instead." + ); return; } const value = pkgDependencies[depKey]; if (!value) { - reportError(`Missing "${depKey}" in ${type}`, `expecting to be "${version}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); + reportError( + `Missing "${depKey}" in ${type}`, + `expecting to be "${version}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey) + ); } if (value !== version) { - reportError(`Invalid "${depKey}" in ${type}`, `expecting "${value}" to be "${version}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); + reportError( + `Invalid "${depKey}" in ${type}`, + `expecting "${value}" to be "${version}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey) + ); } }); } -function checkMinRangeSatisfies(pkgPathName, pkg, type1 = 'dependencies', type2 = 'devDependencies', { +function checkMinRangeSatisfies(pkgPathName, pkg, type1 = "dependencies", type2 = "devDependencies", { tryToAutoFix = false, customCreateReportError = createReportError } = {}) { @@ -350,50 +467,72 @@ function checkMinRangeSatisfies(pkgPathName, pkg, type1 = 'dependencies', type2 if (!dependencies1 || !dependencies2) { return; } - const reportError = customCreateReportError(`"${type1}" minimum range satisfies "${type2}"`, pkgPathName); + const reportError = customCreateReportError( + `"${type1}" minimum range satisfies "${type2}"`, + pkgPathName + ); for (const [depName, depRange1] of getEntries(dependencies1)) { - if (depRange1 === '*') continue; + if (depRange1 === "*") + continue; const depRange2 = dependencies2[depName]; - if (!depRange2 || !depRange1) continue; + if (!depRange2 || !depRange1) + continue; const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1; if (!semver.satisfies(minDepRange1, depRange2, { includePrerelease: true })) { if (tryToAutoFix) { const depRange1Parsed = semverUtils.parseRange(depRange1); - dependencies1[depName] = (depRange1Parsed[0]?.operator || '') + (semver.minVersion(depRange2)?.version || depRange2); + dependencies1[depName] = (depRange1Parsed[0]?.operator || "") + (semver.minVersion(depRange2)?.version || depRange2); } else { - reportError(`Invalid "${depName}" in ${type1}`, `"${depRange1}" should satisfies "${depRange2}" from "${type2}".`, false, true); + reportError( + `Invalid "${depName}" in ${type1}`, + `"${depRange1}" should satisfies "${depRange2}" from "${type2}".`, + false, + true + ); } } } } -function checkNoDependencies(pkg, pkgPath, type = 'dependencies', moveToSuggestion = 'devDependencies', customCreateReportError = createReportError) { +function checkNoDependencies(pkg, pkgPath, type = "dependencies", moveToSuggestion = "devDependencies", customCreateReportError = createReportError) { const pkgDependencies = pkg[type]; - if (!pkgDependencies) return; - const reportError = customCreateReportError('No dependencies', pkgPath); - reportError(`Unexpected ${type}`, `you should move them in ${moveToSuggestion}`); + if (!pkgDependencies) + return; + const reportError = customCreateReportError("No dependencies", pkgPath); + reportError( + `Unexpected ${type}`, + `you should move them in ${moveToSuggestion}` + ); } function checkResolutionsHasExplanation(pkg, pkgPathName, checkMessage, getDependencyPackageJson, customCreateReportError = createReportError) { const pkgResolutions = pkg.resolutions || {}; const pkgResolutionsExplained = pkg.resolutionsExplained || {}; - const reportError = customCreateReportError('Resolutions has explanation', pkgPathName); - Object.keys(pkgResolutions).forEach(depKey => { + const reportError = customCreateReportError( + "Resolutions has explanation", + pkgPathName + ); + Object.keys(pkgResolutions).forEach((depKey) => { if (!pkgResolutionsExplained[depKey]) { reportError(`Missing "${depKey}" in resolutionsExplained.`); } }); - Object.keys(pkgResolutionsExplained).forEach(depKey => { + Object.keys(pkgResolutionsExplained).forEach((depKey) => { if (!pkgResolutions[depKey]) { - reportError(`Found "${depKey}" in resolutionsExplained but not in resolutions.`); + reportError( + `Found "${depKey}" in resolutionsExplained but not in resolutions.` + ); } else { const error = checkMessage(depKey, pkgResolutionsExplained[depKey], { getDependencyPackageJson }); if (error) { - reportError(`Invalid message for "${depKey}" in resolutionsExplained`, `${error}.`); + reportError( + `Invalid message for "${depKey}" in resolutionsExplained`, + `${error}.` + ); } } }); @@ -404,26 +543,35 @@ function checkResolutionsVersionsMatch(pkg, pkgPathName, { customCreateReportError = createReportError } = {}) { const pkgResolutions = pkg.resolutions || {}; - const reportError = customCreateReportError('Resolutions match other dependencies', pkgPathName); + const reportError = customCreateReportError( + "Resolutions match other dependencies", + pkgPathName + ); Object.entries(pkgResolutions).forEach(([resolutionKey, resolutionValue]) => { let depName = resolutionKey; let resolutionDepVersion = resolutionValue; - if (resolutionValue.startsWith('patch:')) { + if (resolutionValue.startsWith("patch:")) { const matchResolutionInKey = /^(.+)@npm:(.+)$/.exec(resolutionKey); if (matchResolutionInKey) { [, depName, resolutionDepVersion] = matchResolutionInKey; } } - ['dependencies', 'devDependencies'].forEach(depType => { + ["dependencies", "devDependencies"].forEach((depType) => { const range = pkg?.[depType]?.[depName]; - if (!range) return; + if (!range) + return; if (!semver.satisfies(resolutionDepVersion, range, { includePrerelease: true })) { if (tryToAutoFix) { pkg[depType][depName] = resolutionDepVersion; } else { - reportError(`Invalid "${depName}" in ${depType}`, `expecting "${range}" be "${resolutionDepVersion}" from resolutions.`, false, true); + reportError( + `Invalid "${depName}" in ${depType}`, + `expecting "${range}" be "${resolutionDepVersion}" from resolutions.`, + false, + true + ); } } }); @@ -434,17 +582,28 @@ function checkSatisfiesVersions(pkg, pkgPathName, type, dependenciesRanges, only customCreateReportError = createReportError } = {}) { const pkgDependencies = pkg[type] || {}; - const reportError = customCreateReportError('Satisfies Versions', pkgPathName); + const reportError = customCreateReportError( + "Satisfies Versions", + pkgPathName + ); Object.entries(dependenciesRanges).forEach(([depKey, range]) => { const version = pkgDependencies[depKey]; if (!version) { - reportError(`Missing "${depKey}" in ${type}`, `should satisfies "${range}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); + reportError( + `Missing "${depKey}" in ${type}`, + `should satisfies "${range}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey) + ); } else { const minVersionOfVersion = semver.minVersion(version); if (!minVersionOfVersion || !semver.satisfies(minVersionOfVersion, range, { includePrerelease: true })) { - reportError(`Invalid "${depKey}" in ${type}`, `"${version}" (in "${depKey}") should satisfies "${range}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey)); + reportError( + `Invalid "${depKey}" in ${type}`, + `"${version}" (in "${depKey}") should satisfies "${range}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey) + ); } } }); @@ -452,18 +611,16 @@ function checkSatisfiesVersions(pkg, pkgPathName, type, dependenciesRanges, only semverUtils.parse; const parseRange = semverUtils.parseRange; - -// semverUtils.stringify does not support the operator function stringify(semver) { - let str = ''; + let str = ""; if (semver.operator) { str += semver.operator; } - str += semver.major || '0'; - str += '.'; - str += semver.minor || '0'; - str += '.'; - str += semver.patch || '0'; + str += semver.major || "0"; + str += "."; + str += semver.minor || "0"; + str += "."; + str += semver.patch || "0"; if (semver.release) { str += `-${semver.release}`; } @@ -474,15 +631,18 @@ function stringify(semver) { } function getOperator(range) { const parsedRange = parseRange(range); - if (parsedRange.length !== 1) return null; - return parsedRange[0].operator || ''; + if (parsedRange.length !== 1) + return null; + return parsedRange[0].operator || ""; } function changeOperator(range, operator) { - if (operator === null) return range; + if (operator === null) + return range; const parsedRange = parseRange(range); - if (parsedRange.length !== 1) return null; + if (parsedRange.length !== 1) + return null; const parsed = parsedRange[0]; - parsed.operator = operator === '' ? undefined : operator; + parsed.operator = operator === "" ? void 0 : operator; return stringify(parsed); } @@ -494,11 +654,19 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d }) { const pkgDependencies = pkg[type] || {}; const dependencies = depPkg[depType] || {}; - const reportError = customCreateReportError(`Satisfies Versions from "${depPkg.name}"`, pkgPathName); - depKeys.forEach(depKey => { + const reportError = customCreateReportError( + `Satisfies Versions from "${depPkg.name}"`, + pkgPathName + ); + depKeys.forEach((depKey) => { const range = dependencies[depKey]; if (!range) { - reportError(`Unexpected missing dependency "${depKey}" in "${depPkg.name}"`, `config expects "${depKey}" in "${depType}" of "${depPkg.name}".`, undefined, false); + reportError( + `Unexpected missing dependency "${depKey}" in "${depPkg.name}"`, + `config expects "${depKey}" in "${depType}" of "${depPkg.name}".`, + void 0, + false + ); return; } const version = pkgDependencies[depKey]; @@ -508,11 +676,11 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d if (existingOperator !== null) { return existingOperator; } - return shouldHaveExactVersions(type) ? '' : null; + return shouldHaveExactVersions(type) ? "" : null; })(); - return expectedOperator === '' ? semver.minVersion(range)?.version : changeOperator(range, expectedOperator); + return expectedOperator === "" ? semver.minVersion(range)?.version : changeOperator(range, expectedOperator); }; - const autoFix = versionToApply => { + const autoFix = (versionToApply) => { pkg[type] = { ...pkg[type], [depKey]: versionToApply @@ -521,7 +689,12 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d if (!version) { const fix = getAutoFixIfExists(); if (!fix || !tryToAutoFix) { - reportError(`Missing "${depKey}" in "${type}" of "${pkg.name}"`, `should satisfies "${range}" from "${depPkg.name}" in "${depType}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey), !!fix); + reportError( + `Missing "${depKey}" in "${type}" of "${pkg.name}"`, + `should satisfies "${range}" from "${depPkg.name}" in "${depType}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey), + !!fix + ); } else { autoFix(fix); } @@ -532,7 +705,12 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d })) { const fix = getAutoFixIfExists(); if (!fix || !tryToAutoFix) { - reportError(`Invalid "${depKey}" in "${type}" of "${pkg.name}"`, `"${version}" should satisfies "${range}" from "${depPkg.name}"'s "${depType}".`, onlyWarnsForCheck?.shouldWarnsFor(depKey), !!fix); + reportError( + `Invalid "${depKey}" in "${type}" of "${pkg.name}"`, + `"${version}" should satisfies "${range}" from "${depPkg.name}"'s "${depType}".`, + onlyWarnsForCheck?.shouldWarnsFor(depKey), + !!fix + ); } else { autoFix(fix); } @@ -544,64 +722,94 @@ function checkSatisfiesVersionsFromDependency(pkg, pkgPathName, type, depKeys, d function checkSatisfiesVersionsInDependency(pkgPathName, depPkg, dependenciesRanges, { customCreateReportError = createReportError } = {}) { - const reportError = customCreateReportError(`Satisfies Versions In Dependency "${depPkg.name}"`, pkgPathName); - for (const [dependenciesType, dependenciesTypeRanges] of getEntries(dependenciesRanges)) { - if (!dependenciesTypeRanges) return; + const reportError = customCreateReportError( + `Satisfies Versions In Dependency "${depPkg.name}"`, + pkgPathName + ); + for (const [dependenciesType, dependenciesTypeRanges] of getEntries( + dependenciesRanges + )) { + if (!dependenciesTypeRanges) + return; const dependencies = depPkg[dependenciesType]; - for (const [dependencyName, dependencyRange] of getEntries(dependenciesTypeRanges)) { + for (const [dependencyName, dependencyRange] of getEntries( + dependenciesTypeRanges + )) { if (dependencyRange == null) { if (dependencies?.[dependencyName]) { - reportError(`Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, 'it should not be present'); + reportError( + `Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + "it should not be present" + ); } } else if (!dependencies) { - reportError(`Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, `"${dependenciesType}" is missing in "${depPkg.name}"`); + reportError( + `Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + `"${dependenciesType}" is missing in "${depPkg.name}"` + ); } else if (!dependencies[dependencyName]) { - reportError(`Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, `"${dependencyName}" is missing in ${dependenciesType}`); + reportError( + `Missing "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + `"${dependencyName}" is missing in ${dependenciesType}` + ); } else if (!semver.satisfies(dependencies[dependencyName], dependencyRange, { includePrerelease: true }) && !semver.intersects(dependencies[dependencyName], dependencyRange, { includePrerelease: true })) { - reportError(`Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, `"${dependencies[dependencyName]}" does not satisfies "${dependencyRange}"`); + reportError( + `Invalid "${dependencyName}" in ${dependenciesType} of "${depPkg.name}"`, + `"${dependencies[dependencyName]}" does not satisfies "${dependencyRange}"` + ); } } } } function readPkgJson(packagePath) { - return JSON.parse(readFileSync(packagePath, 'utf8')); + return JSON.parse(readFileSync(packagePath, "utf8")); } function writePkgJson(packagePath, pkg) { - writeFileSync(packagePath, `${JSON.stringify(pkg, null, 2)}\n`); + writeFileSync(packagePath, `${JSON.stringify(pkg, null, 2)} +`); } - -/** @internal */ function internalLoadPackageJsonFromNodeModules(pkgDepName, pkgDirname) { - const packageUrl = resolve(`${pkgDepName}/package.json`, `file://${pkgDirname}/package.json`); + const packageUrl = resolve( + `${pkgDepName}/package.json`, + `file://${pkgDirname}/package.json` + ); return readPkgJson(fileURLToPath(packageUrl)); } function createGetDependencyPackageJson({ pkgDirname, - nodeModulesPackagePathCache = new Map(), + nodeModulesPackagePathCache = /* @__PURE__ */ new Map(), internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules, internalReadPkgJson = readPkgJson }) { - return pkgDepName => { + return (pkgDepName) => { const existing = nodeModulesPackagePathCache.get(pkgDepName); - if (existing) return existing; + if (existing) + return existing; let pkg; - if (pkgDepName.startsWith('.')) { - pkg = internalReadPkgJson(`${pkgDirname}/${pkgDepName}/package.json`); + if (pkgDepName.startsWith(".")) { + const packagePath = `${pkgDirname}/${pkgDepName}/package.json`; + pkg = internalReadPkgJson(packagePath); } else { try { - pkg = internalCustomLoadPackageJsonFromNodeModules(pkgDepName, pkgDirname); + pkg = internalCustomLoadPackageJsonFromNodeModules( + pkgDepName, + pkgDirname + ); } catch (error) { - if (!(error instanceof Error)) throw error; - if (error.code !== 'ERR_PACKAGE_PATH_NOT_EXPORTED') { + if (!(error instanceof Error)) + throw error; + if (error.code !== "ERR_PACKAGE_PATH_NOT_EXPORTED") { throw error; } - const match = / in (.*[/\\]package\.json)\s+imported from/.exec(error.message); + const match = / in (.*[/\\]package\.json)\s+imported from/.exec( + error.message + ); if (match) { const [, matchPackageJson] = match; pkg = internalReadPkgJson(matchPackageJson); @@ -615,8 +823,6 @@ function createGetDependencyPackageJson({ }; } -// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents - const createOnlyWarnsForArrayCheck = (configName, onlyWarnsFor = []) => { const notWarnedFor = new Set(onlyWarnsFor); return { @@ -631,24 +837,31 @@ const createOnlyWarnsForArrayCheck = (configName, onlyWarnsFor = []) => { } }; }; -const isMapping = onlyWarnsFor => { - return typeof onlyWarnsFor === 'object' && !Array.isArray(onlyWarnsFor); +const isMapping = (onlyWarnsFor) => { + return typeof onlyWarnsFor === "object" && !Array.isArray(onlyWarnsFor); }; const createOnlyWarnsForMappingCheck = (configName, onlyWarnsFor) => { if (isMapping(onlyWarnsFor)) { - const notWarnedFor = Object.fromEntries(getEntries(onlyWarnsFor).map(([entryKey, entryValue]) => [entryKey, new Set(entryValue)])); + const notWarnedFor = Object.fromEntries( + getEntries(onlyWarnsFor).map(([entryKey, entryValue]) => [ + entryKey, + new Set(entryValue) + ]) + ); return { configName, - getNotWarnedFor: () => Object.fromEntries(getEntries(notWarnedFor).filter(([key, set]) => set.size > 0).map(([key, set]) => [key, [...set]])), + getNotWarnedFor: () => Object.fromEntries( + getEntries(notWarnedFor).filter(([key, set]) => set.size > 0).map(([key, set]) => [key, [...set]]) + ), createFor(dependencyNameLevel1) { return { configName, getNotWarnedFor() { - throw new Error('Invalid call to getNotWarnedFor()'); + throw new Error("Invalid call to getNotWarnedFor()"); }, shouldWarnsFor(dependencyName) { - if (onlyWarnsFor['*']?.includes(dependencyName)) { - notWarnedFor['*'].delete(dependencyName); + if (onlyWarnsFor["*"]?.includes(dependencyName)) { + notWarnedFor["*"].delete(dependencyName); return true; } if (onlyWarnsFor[dependencyNameLevel1]?.includes(dependencyName)) { @@ -661,15 +874,16 @@ const createOnlyWarnsForMappingCheck = (configName, onlyWarnsFor) => { } }; } - const arrayOnlyWarnsForCheck = createOnlyWarnsForArrayCheck(configName, onlyWarnsFor); + const arrayOnlyWarnsForCheck = createOnlyWarnsForArrayCheck( + configName, + onlyWarnsFor + ); return { configName, getNotWarnedFor: () => { const notWarnedFor = arrayOnlyWarnsForCheck.getNotWarnedFor(); if (notWarnedFor.length > 0) { - return { - '*': notWarnedFor - }; + return { "*": notWarnedFor }; } return {}; }, @@ -677,7 +891,7 @@ const createOnlyWarnsForMappingCheck = (configName, onlyWarnsFor) => { return { configName, getNotWarnedFor() { - throw new Error('Invalid call to getNotWarnedFor()'); + throw new Error("Invalid call to getNotWarnedFor()"); }, shouldWarnsFor(dependencyName) { return arrayOnlyWarnsForCheck.shouldWarnsFor(dependencyName); @@ -688,7 +902,7 @@ const createOnlyWarnsForMappingCheck = (configName, onlyWarnsFor) => { }; function createCheckPackage({ - packageDirectoryPath = '.', + packageDirectoryPath = ".", internalWorkspacePkgDirectoryPath, isLibrary = false } = {}) { @@ -697,15 +911,17 @@ function createCheckPackage({ const pkgPathName = `${packageDirectoryPath}/package.json`; const pkg = readPkgJson(pkgPath); const copyPkg = JSON.parse(JSON.stringify(pkg)); - const isPkgLibrary = typeof isLibrary === 'function' ? isLibrary(pkg) : isLibrary; - const shouldHaveExactVersions = depType => !isPkgLibrary ? true : depType === 'devDependencies'; + const isPkgLibrary = typeof isLibrary === "function" ? isLibrary(pkg) : isLibrary; + const shouldHaveExactVersions = (depType) => !isPkgLibrary ? true : depType === "devDependencies"; let tryToAutoFix = false; - if (process.argv.slice(2).includes('--fix')) { + if (process.argv.slice(2).includes("--fix")) { tryToAutoFix = true; } const writePackageIfChanged = () => { - if (!tryToAutoFix) return; - if (util.isDeepStrictEqual(pkg, copyPkg)) return; + if (!tryToAutoFix) + return; + if (util.isDeepStrictEqual(pkg, copyPkg)) + return; writePkgJson(pkgPath, pkg); }; const getDependencyPackageJson = createGetDependencyPackageJson({ @@ -713,13 +929,15 @@ function createCheckPackage({ }); let runCalled = false; if (!internalWorkspacePkgDirectoryPath) { - process.on('beforeExit', () => { + process.on("beforeExit", () => { if (!runCalled) { - throw new Error('Call .run() and await the result.'); + throw new Error("Call .run() and await the result."); } }); } class Job { + name; + fn; constructor(name, fn) { this.name = name; this.fn = fn; @@ -738,7 +956,6 @@ function createCheckPackage({ skipDisplayConclusion = false } = {}) { runCalled = true; - // TODO parallel for (const job of jobs) { await job.run(); } @@ -757,15 +974,25 @@ function createCheckPackage({ internalExactVersionsIgnore, allowRangeVersionsInDependencies = true } = {}) { - jobs.push(new Job(this.checkExactVersions.name, async () => { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactVersions.onlyWarnsFor', onlyWarnsFor); - await checkExactVersions(pkg, pkgPathName, !allowRangeVersionsInDependencies ? ['dependencies', 'devDependencies', 'resolutions'] : ['devDependencies', 'resolutions'], { - onlyWarnsForCheck, - internalExactVersionsIgnore, - getDependencyPackageJson, - tryToAutoFix - }); - })); + jobs.push( + new Job(this.checkExactVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( + "checkExactVersions.onlyWarnsFor", + onlyWarnsFor + ); + await checkExactVersions( + pkg, + pkgPathName, + !allowRangeVersionsInDependencies ? ["dependencies", "devDependencies", "resolutions"] : ["devDependencies", "resolutions"], + { + onlyWarnsForCheck, + internalExactVersionsIgnore, + getDependencyPackageJson, + tryToAutoFix + } + ); + }) + ); return this; }, checkResolutionsVersionsMatch() { @@ -774,47 +1001,79 @@ function createCheckPackage({ }); return this; }, - checkExactDevVersions({ - onlyWarnsFor - } = {}) { - jobs.push(new Job(this.checkExactDevVersions.name, async () => { - const onlyWarnsForCheck = createOnlyWarnsForArrayCheck('checkExactDevVersions.onlyWarnsFor', onlyWarnsFor); - await checkExactVersions(pkg, pkgPathName, ['devDependencies'], { - onlyWarnsForCheck, - tryToAutoFix, - getDependencyPackageJson - }); - })); + checkExactDevVersions({ onlyWarnsFor } = {}) { + jobs.push( + new Job(this.checkExactDevVersions.name, async () => { + const onlyWarnsForCheck = createOnlyWarnsForArrayCheck( + "checkExactDevVersions.onlyWarnsFor", + onlyWarnsFor + ); + await checkExactVersions(pkg, pkgPathName, ["devDependencies"], { + onlyWarnsForCheck, + tryToAutoFix, + getDependencyPackageJson + }); + }) + ); return this; }, - checkNoDependencies(type = 'dependencies', moveToSuggestion = 'devDependencies') { + checkNoDependencies(type = "dependencies", moveToSuggestion = "devDependencies") { checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion); return this; }, checkDirectPeerDependencies({ missingOnlyWarnsFor, invalidOnlyWarnsFor, - internalMissingConfigName = 'missingOnlyWarnsFor', - internalInvalidConfigName = 'invalidOnlyWarnsFor' + internalMissingConfigName = "missingOnlyWarnsFor", + internalInvalidConfigName = "invalidOnlyWarnsFor" } = {}) { - jobs.push(new Job(this.checkDirectPeerDependencies.name, async () => { - const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(internalMissingConfigName, missingOnlyWarnsFor); - const invalidOnlyWarnsForCheck = internalInvalidConfigName === internalMissingConfigName ? missingOnlyWarnsForCheck : createOnlyWarnsForMappingCheck(internalInvalidConfigName, invalidOnlyWarnsFor); - await checkDirectPeerDependencies(isPkgLibrary, pkg, pkgPathName, getDependencyPackageJson, missingOnlyWarnsForCheck, invalidOnlyWarnsForCheck); - })); + jobs.push( + new Job(this.checkDirectPeerDependencies.name, async () => { + const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck( + internalMissingConfigName, + missingOnlyWarnsFor + ); + const invalidOnlyWarnsForCheck = internalInvalidConfigName === internalMissingConfigName ? missingOnlyWarnsForCheck : createOnlyWarnsForMappingCheck( + internalInvalidConfigName, + invalidOnlyWarnsFor + ); + await checkDirectPeerDependencies( + isPkgLibrary, + pkg, + pkgPathName, + getDependencyPackageJson, + missingOnlyWarnsForCheck, + invalidOnlyWarnsForCheck + ); + }) + ); return this; }, checkDirectDuplicateDependencies({ onlyWarnsFor, - internalConfigName = 'onlyWarnsFor' + internalConfigName = "onlyWarnsFor" } = {}) { - jobs.push(new Job(this.checkDirectDuplicateDependencies.name, async () => { - await checkDirectDuplicateDependencies(pkg, pkgPathName, isPkgLibrary, 'dependencies', getDependencyPackageJson, createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor)); - })); + jobs.push( + new Job(this.checkDirectDuplicateDependencies.name, async () => { + await checkDirectDuplicateDependencies( + pkg, + pkgPathName, + isPkgLibrary, + "dependencies", + getDependencyPackageJson, + createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor) + ); + }) + ); return this; }, - checkResolutionsHasExplanation(checkMessage = (depKey, message) => undefined) { - checkResolutionsHasExplanation(pkg, pkgPathName, checkMessage, getDependencyPackageJson); + checkResolutionsHasExplanation(checkMessage = (depKey, message) => void 0) { + checkResolutionsHasExplanation( + pkg, + pkgPathName, + checkMessage, + getDependencyPackageJson + ); return this; }, checkRecommended({ @@ -832,17 +1091,19 @@ function createCheckPackage({ internalDirectDuplicateDependenciesOnlyWarnsFor = {}; internalMissingPeerDependenciesOnlyWarnsFor = {}; internalInvalidPeerDependenciesOnlyWarnsFor = {}; - getEntries(onlyWarnsForInDependencies).forEach(([dependencyNameOrSpecialKey, onlyWarnsForValue]) => { - if (onlyWarnsForValue.duplicateDirectDependency) { - internalDirectDuplicateDependenciesOnlyWarnsFor[dependencyNameOrSpecialKey] = onlyWarnsForValue.duplicateDirectDependency; - } - if (onlyWarnsForValue.missingPeerDependency) { - internalMissingPeerDependenciesOnlyWarnsFor[dependencyNameOrSpecialKey] = onlyWarnsForValue.missingPeerDependency; - } - if (onlyWarnsForValue.invalidPeerDependencyVersion) { - internalInvalidPeerDependenciesOnlyWarnsFor[dependencyNameOrSpecialKey] = onlyWarnsForValue.invalidPeerDependencyVersion; + getEntries(onlyWarnsForInDependencies).forEach( + ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => { + if (onlyWarnsForValue.duplicateDirectDependency) { + internalDirectDuplicateDependenciesOnlyWarnsFor[dependencyNameOrSpecialKey] = onlyWarnsForValue.duplicateDirectDependency; + } + if (onlyWarnsForValue.missingPeerDependency) { + internalMissingPeerDependenciesOnlyWarnsFor[dependencyNameOrSpecialKey] = onlyWarnsForValue.missingPeerDependency; + } + if (onlyWarnsForValue.invalidPeerDependencyVersion) { + internalInvalidPeerDependenciesOnlyWarnsFor[dependencyNameOrSpecialKey] = onlyWarnsForValue.invalidPeerDependencyVersion; + } } - }); + ); } this.checkExactVersions({ allowRangeVersionsInDependencies, @@ -854,12 +1115,12 @@ function createCheckPackage({ this.checkDirectPeerDependencies({ missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor, invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor, - internalMissingConfigName: 'onlyWarnsForInDependencies.missingPeerDependency', - internalInvalidConfigName: 'onlyWarnsForInDependencies.invalidPeerDependencyVersion' + internalMissingConfigName: "onlyWarnsForInDependencies.missingPeerDependency", + internalInvalidConfigName: "onlyWarnsForInDependencies.invalidPeerDependencyVersion" }); this.checkDirectDuplicateDependencies({ onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor, - internalConfigName: 'onlyWarnsForInDependencies.duplicateDirectDependency' + internalConfigName: "onlyWarnsForInDependencies.duplicateDirectDependency" }); if (isPkgLibrary) { this.checkMinRangeDependenciesSatisfiesDevDependencies(); @@ -867,164 +1128,272 @@ function createCheckPackage({ } return this; }, - checkIdenticalVersionsThanDependency(depName, { - resolutions, - dependencies, - devDependencies - }) { - jobs.push(new Job(this.checkIdenticalVersionsThanDependency.name, async () => { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.dependencies); - } - if (dependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.dependencies); - } - if (devDependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.dependencies); - } - })); + checkIdenticalVersionsThanDependency(depName, { resolutions, dependencies, devDependencies }) { + jobs.push( + new Job(this.checkIdenticalVersionsThanDependency.name, async () => { + const depPkg = getDependencyPackageJson(depName); + if (resolutions) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + "resolutions", + resolutions, + depPkg, + depPkg.dependencies + ); + } + if (dependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + "dependencies", + dependencies, + depPkg, + depPkg.dependencies + ); + } + if (devDependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + "devDependencies", + devDependencies, + depPkg, + depPkg.dependencies + ); + } + }) + ); return this; }, - checkIdenticalVersionsThanDevDependencyOfDependency(depName, { - resolutions, - dependencies, - devDependencies - }) { - jobs.push(new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, depPkg.devDependencies); - } - if (dependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, depPkg.devDependencies); - } - if (devDependencies) { - checkIdenticalVersionsThanDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, depPkg.devDependencies); - } - })); + checkIdenticalVersionsThanDevDependencyOfDependency(depName, { resolutions, dependencies, devDependencies }) { + jobs.push( + new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { + const depPkg = getDependencyPackageJson(depName); + if (resolutions) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + "resolutions", + resolutions, + depPkg, + depPkg.devDependencies + ); + } + if (dependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + "dependencies", + dependencies, + depPkg, + depPkg.devDependencies + ); + } + if (devDependencies) { + checkIdenticalVersionsThanDependency( + pkg, + pkgPathName, + "devDependencies", + devDependencies, + depPkg, + depPkg.devDependencies + ); + } + }) + ); return this; }, checkSatisfiesVersions(dependencies) { - Object.entries(dependencies).forEach(([dependencyType, dependenciesRanges]) => { - checkSatisfiesVersions(pkg, pkgPathName, dependencyType, dependenciesRanges); - }); + Object.entries(dependencies).forEach( + ([dependencyType, dependenciesRanges]) => { + checkSatisfiesVersions( + pkg, + pkgPathName, + dependencyType, + dependenciesRanges + ); + } + ); return this; }, - checkSatisfiesVersionsFromDependency(depName, { - resolutions, - dependencies, - devDependencies - }) { - jobs.push(new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, 'dependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - if (dependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, 'dependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - if (devDependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, 'dependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - })); + checkSatisfiesVersionsFromDependency(depName, { resolutions, dependencies, devDependencies }) { + jobs.push( + new Job(this.checkSatisfiesVersionsFromDependency.name, async () => { + const depPkg = getDependencyPackageJson(depName); + if (resolutions) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + "resolutions", + resolutions, + depPkg, + "dependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + if (dependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + "dependencies", + dependencies, + depPkg, + "dependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + "devDependencies", + devDependencies, + depPkg, + "dependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + }) + ); return this; }, - checkSatisfiesVersionsInDevDependenciesOfDependency(depName, { - resolutions, - dependencies, - devDependencies - }) { - jobs.push(new Job(this.checkSatisfiesVersionsInDevDependenciesOfDependency.name, async () => { - const depPkg = getDependencyPackageJson(depName); - if (resolutions) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'resolutions', resolutions, depPkg, 'devDependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - if (dependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'dependencies', dependencies, depPkg, 'devDependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - if (devDependencies) { - checkSatisfiesVersionsFromDependency(pkg, pkgPathName, 'devDependencies', devDependencies, depPkg, 'devDependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - })); + checkSatisfiesVersionsInDevDependenciesOfDependency(depName, { resolutions, dependencies, devDependencies }) { + jobs.push( + new Job( + this.checkSatisfiesVersionsInDevDependenciesOfDependency.name, + async () => { + const depPkg = getDependencyPackageJson(depName); + if (resolutions) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + "resolutions", + resolutions, + depPkg, + "devDependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + if (dependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + "dependencies", + dependencies, + depPkg, + "devDependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency( + pkg, + pkgPathName, + "devDependencies", + devDependencies, + depPkg, + "devDependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + } + ) + ); return this; }, - checkIdenticalVersions({ - resolutions, - dependencies, - devDependencies - }) { + checkIdenticalVersions({ resolutions, dependencies, devDependencies }) { if (resolutions) { - checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions); + checkIdenticalVersions(pkg, pkgPathName, "resolutions", resolutions); } if (dependencies) { - checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies); + checkIdenticalVersions(pkg, pkgPathName, "dependencies", dependencies); } if (devDependencies) { - checkIdenticalVersions(pkg, pkgPathName, 'devDependencies', devDependencies); + checkIdenticalVersions( + pkg, + pkgPathName, + "devDependencies", + devDependencies + ); } return this; }, - checkSatisfiesVersionsBetweenDependencies(depName1, depName2, { - dependencies, - devDependencies - }) { - jobs.push(new Job(this.checkSatisfiesVersionsBetweenDependencies.name, async () => { - const [depPkg1, depPkg2] = await Promise.all([getDependencyPackageJson(depName1), getDependencyPackageJson(depName2)]); - if (dependencies) { - checkSatisfiesVersionsFromDependency(depPkg2, pkgPathName, 'dependencies', dependencies, depPkg1, 'dependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - if (devDependencies) { - checkSatisfiesVersionsFromDependency(depPkg2, pkgPathName, 'devDependencies', devDependencies, depPkg1, 'dependencies', { - tryToAutoFix, - shouldHaveExactVersions - }); - } - })); + checkSatisfiesVersionsBetweenDependencies(depName1, depName2, { dependencies, devDependencies }) { + jobs.push( + new Job( + this.checkSatisfiesVersionsBetweenDependencies.name, + async () => { + const [depPkg1, depPkg2] = await Promise.all([ + getDependencyPackageJson(depName1), + getDependencyPackageJson(depName2) + ]); + if (dependencies) { + checkSatisfiesVersionsFromDependency( + depPkg2, + pkgPathName, + "dependencies", + dependencies, + depPkg1, + "dependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + if (devDependencies) { + checkSatisfiesVersionsFromDependency( + depPkg2, + pkgPathName, + "devDependencies", + devDependencies, + depPkg1, + "dependencies", + { tryToAutoFix, shouldHaveExactVersions } + ); + } + } + ) + ); return this; }, checkSatisfiesVersionsInDependency(depName, dependenciesRanges) { - jobs.push(new Job(this.checkSatisfiesVersionsInDependency.name, async () => { - const depPkg = getDependencyPackageJson(depName); - checkSatisfiesVersionsInDependency(pkgPathName, depPkg, dependenciesRanges); - })); + jobs.push( + new Job(this.checkSatisfiesVersionsInDependency.name, async () => { + const depPkg = getDependencyPackageJson(depName); + checkSatisfiesVersionsInDependency( + pkgPathName, + depPkg, + dependenciesRanges + ); + }) + ); return this; }, checkMinRangeDependenciesSatisfiesDevDependencies() { - jobs.push(new Job(this.checkSatisfiesVersionsInDependency.name, async () => { - checkMinRangeSatisfies(pkgPathName, pkg, 'dependencies', 'devDependencies', { - tryToAutoFix - }); - })); + jobs.push( + new Job(this.checkSatisfiesVersionsInDependency.name, async () => { + checkMinRangeSatisfies( + pkgPathName, + pkg, + "dependencies", + "devDependencies", + { tryToAutoFix } + ); + }) + ); return this; }, checkMinRangePeerDependenciesSatisfiesDependencies() { - jobs.push(new Job(this.checkSatisfiesVersionsInDependency.name, async () => { - checkMinRangeSatisfies(pkgPathName, pkg, 'peerDependencies', 'dependencies', { - tryToAutoFix - }); - })); + jobs.push( + new Job(this.checkSatisfiesVersionsInDependency.name, async () => { + checkMinRangeSatisfies( + pkgPathName, + pkg, + "peerDependencies", + "dependencies", + { tryToAutoFix } + ); + }) + ); return this; } }; @@ -1035,23 +1404,20 @@ function createCheckPackageWithWorkspaces(createCheckPackageOptions = {}) { ...createCheckPackageOptions, isLibrary: false }); - const { - pkg, - pkgDirname - } = checkPackage; + const { pkg, pkgDirname } = checkPackage; const pkgWorkspaces = pkg.workspaces && !Array.isArray(pkg.workspaces) ? pkg.workspaces.packages : pkg.workspaces; if (!pkgWorkspaces) { throw new Error('Package is missing "workspaces"'); } const workspacePackagesPaths = []; if (pkgWorkspaces) { - pkgWorkspaces.forEach(pattern => { - const match = globSync(pattern, { - cwd: pkgDirname - }); - match.forEach(pathMatch => { - if (!fs.existsSync(path.join(pathMatch, 'package.json'))) { - console.log(`Ignored potential directory, no package.json found: ${pathMatch}`); + pkgWorkspaces.forEach((pattern) => { + const match = globSync(pattern, { cwd: pkgDirname }); + match.forEach((pathMatch) => { + if (!fs.existsSync(path.join(pathMatch, "package.json"))) { + console.log( + `Ignored potential directory, no package.json found: ${pathMatch}` + ); return; } const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch); @@ -1059,20 +1425,23 @@ function createCheckPackageWithWorkspaces(createCheckPackageOptions = {}) { }); }); } - const checksWorkspaces = new Map(workspacePackagesPaths.map(subPkgDirectoryPath => { - const checkPkg = createCheckPackage({ - ...createCheckPackageOptions, - packageDirectoryPath: subPkgDirectoryPath, - internalWorkspacePkgDirectoryPath: createCheckPackageOptions.packageDirectoryPath || '.' - }); - return [checkPkg.pkg.name, checkPkg]; - })); + const checksWorkspaces = new Map( + workspacePackagesPaths.map((subPkgDirectoryPath) => { + const checkPkg = createCheckPackage({ + ...createCheckPackageOptions, + packageDirectoryPath: subPkgDirectoryPath, + internalWorkspacePkgDirectoryPath: createCheckPackageOptions.packageDirectoryPath || "." + }); + return [checkPkg.pkg.name, checkPkg]; + }) + ); return { async run() { - for (const checksWorkspace of [checkPackage, ...checksWorkspaces.values()]) { - await checksWorkspace.run({ - skipDisplayConclusion: true - }); + for (const checksWorkspace of [ + checkPackage, + ...checksWorkspaces.values() + ]) { + await checksWorkspace.run({ skipDisplayConclusion: true }); } displayConclusion(); }, @@ -1091,34 +1460,84 @@ function createCheckPackageWithWorkspaces(createCheckPackageOptions = {}) { onlyWarnsForInDependencies: onlyWarnsForInRootDependencies, checkResolutionMessage }); - const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck = createOnlyWarnsForMappingCheck('monorepoDirectDuplicateDependenciesOnlyWarnsFor', monorepoDirectDuplicateDependenciesOnlyWarnsFor); - const previousCheckedWorkspaces = new Map(); + const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck = createOnlyWarnsForMappingCheck( + "monorepoDirectDuplicateDependenciesOnlyWarnsFor", + monorepoDirectDuplicateDependenciesOnlyWarnsFor + ); + const previousCheckedWorkspaces = /* @__PURE__ */ new Map(); checksWorkspaces.forEach((checkSubPackage, id) => { checkSubPackage.checkRecommended({ allowRangeVersionsInDependencies: checkSubPackage.isPkgLibrary ? allowRangeVersionsInLibraries : false, onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages ? { - ...onlyWarnsForInMonorepoPackages['*'], + ...onlyWarnsForInMonorepoPackages["*"], ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name] - } : undefined, + } : void 0, onlyWarnsForInDependencies: { - ...onlyWarnsForInMonorepoPackagesDependencies['*'], + ...onlyWarnsForInMonorepoPackagesDependencies["*"], ...onlyWarnsForInMonorepoPackagesDependencies[checkSubPackage.pkg.name] }, internalExactVersionsIgnore: [...checksWorkspaces.keys()], checkResolutionMessage }); - const reportMonorepoDDDError = createReportError('Monorepo Direct Duplicate Dependencies', checkSubPackage.pkgPathName); - // Root - checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, checkSubPackage.isPkgLibrary, 'devDependencies', ['dependencies', 'devDependencies'], pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); - // previous packages - previousCheckedWorkspaces.forEach(previousCheckSubPackage => { - checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, checkSubPackage.isPkgLibrary, 'devDependencies', ['dependencies', 'devDependencies'], previousCheckSubPackage.pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); - checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, checkSubPackage.isPkgLibrary, 'dependencies', ['dependencies', 'devDependencies'], previousCheckSubPackage.pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); - checkDuplicateDependencies(reportMonorepoDDDError, checkSubPackage.pkg, checkSubPackage.isPkgLibrary, 'peerDependencies', ['peerDependencies'], previousCheckSubPackage.pkg, monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(checkSubPackage.pkg.name)); + const reportMonorepoDDDError = createReportError( + "Monorepo Direct Duplicate Dependencies", + checkSubPackage.pkgPathName + ); + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + checkSubPackage.isPkgLibrary, + "devDependencies", + ["dependencies", "devDependencies"], + pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name + ) + ); + previousCheckedWorkspaces.forEach((previousCheckSubPackage) => { + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + checkSubPackage.isPkgLibrary, + "devDependencies", + ["dependencies", "devDependencies"], + previousCheckSubPackage.pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name + ) + ); + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + checkSubPackage.isPkgLibrary, + "dependencies", + ["dependencies", "devDependencies"], + previousCheckSubPackage.pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name + ) + ); + checkDuplicateDependencies( + reportMonorepoDDDError, + checkSubPackage.pkg, + checkSubPackage.isPkgLibrary, + "peerDependencies", + ["peerDependencies"], + previousCheckSubPackage.pkg, + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor( + checkSubPackage.pkg.name + ) + ); }); previousCheckedWorkspaces.set(id, checkSubPackage); }); - reportNotWarnedForMapping(createReportError('Monorepo Direct Duplicate Dependencies', checkPackage.pkgPathName), monorepoDirectDuplicateDependenciesOnlyWarnsForCheck); + reportNotWarnedForMapping( + createReportError( + "Monorepo Direct Duplicate Dependencies", + checkPackage.pkgPathName + ), + monorepoDirectDuplicateDependenciesOnlyWarnsForCheck + ); return this; }, forRoot(callback) { @@ -1126,7 +1545,7 @@ function createCheckPackageWithWorkspaces(createCheckPackageOptions = {}) { return this; }, forEach(callback) { - checksWorkspaces.forEach(checkSubPackage => { + checksWorkspaces.forEach((checkSubPackage) => { callback(checkSubPackage); }); return this; @@ -1134,7 +1553,11 @@ function createCheckPackageWithWorkspaces(createCheckPackageOptions = {}) { for(id, callback) { const packageCheck = checksWorkspaces.get(id); if (!packageCheck) { - throw new Error(`Invalid package name: ${id}. Known package names: "${[...checksWorkspaces.keys()].join('","')}"`); + throw new Error( + `Invalid package name: ${id}. Known package names: "${[ + ...checksWorkspaces.keys() + ].join('","')}"` + ); } callback(packageCheck); return this; diff --git a/dist/index-node18.mjs.map b/dist/index-node18.mjs.map index 1435dea7..bdd80a0b 100644 --- a/dist/index-node18.mjs.map +++ b/dist/index-node18.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index-node18.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkMinRangeSatisfies.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/utils/semverUtils.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/checks/checkSatisfiesVersionsInDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n autoFixable?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\nlet totalWarnings = 0;\nlet totalErrors = 0;\nlet totalFixable = 0;\n\nexport function displayConclusion(): void {\n if (!totalWarnings && !totalErrors) {\n console.log(`\\n${chalk.green('✅ No errors or warnings found')}.`);\n } else if (!totalErrors) {\n console.log(`\\nFound ${chalk.yellow(`${totalWarnings} warnings`)}.`);\n } else if (!totalWarnings) {\n console.log(`\\nFound ${chalk.red(`${totalErrors} errors`)}.`);\n } else {\n console.log(\n `\\nFound ${chalk.red(`${totalErrors} errors`)} and ${chalk.yellow(\n `${totalWarnings} warnings`,\n )}.`,\n );\n }\n\n if (totalFixable) {\n console.log(\n `Found ${chalk.green(\n `${totalFixable} auto-fixable`,\n )} errors or warnings, run the command with \"--fix\" to fix them.`,\n );\n }\n}\n\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n autoFixable?: boolean,\n): void {\n if (onlyWarns) totalWarnings++;\n else totalErrors++;\n if (autoFixable) totalFixable++;\n console.error(\n `${\n onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)\n }${msgInfo ? `: ${msgInfo}` : ''}${\n autoFixable ? ` ${chalk.bgGreenBright(chalk.black('auto-fixable'))}` : ''\n }`,\n );\n}\n\nexport function createReportError(\n title: string,\n pkgPathName: string,\n): ReportError {\n return function reportError(\n msgTitle,\n msgInfo,\n onlyWarns,\n autoFixable = false,\n ): void {\n if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) {\n if (titleDisplayed) console.error();\n console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`));\n titleDisplayed = title;\n pkgPathDisplayed = pkgPathName;\n }\n logMessage(msgTitle, msgInfo, onlyWarns, autoFixable);\n\n if (!onlyWarns) {\n // console.trace();\n process.exitCode = 1;\n }\n };\n}\n\nexport function reportNotWarnedFor(\n reportError: ReportError,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const notWarnedFor = onlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n reportError(\n `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n false,\n );\n }\n}\n\nexport function reportNotWarnedForMapping(\n reportError: ReportError,\n onlyWarnsForMappingCheck: OnlyWarnsForMappingCheck,\n): void {\n const notWarnedForMapping = onlyWarnsForMappingCheck.getNotWarnedFor();\n getEntries(notWarnedForMapping).forEach(([depNameOrStar, notWarnedFor]) => {\n reportError(\n `Invalid config in \"${onlyWarnsForMappingCheck.configName}\" for \"${depNameOrStar}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n );\n });\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkDuplicateDependencies(\n reportError: ReportError,\n pkg: PackageJson,\n isPkgLibrary: boolean,\n depType: DependencyTypes,\n searchIn: DependencyTypes[],\n depPkg: PackageJson,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const dependencies = depPkg[depType];\n if (!dependencies) return;\n\n const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n for (const [depKey, range] of Object.entries(dependencies)) {\n const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n let allowDuplicated = false;\n if (\n versionsIn.length === 2 &&\n isPkgLibrary &&\n versionsIn.includes('dependencies') &&\n versionsIn.includes('devDependencies')\n ) {\n const depVersion = pkg.dependencies![depKey];\n const devDepVersion = pkg.devDependencies![depKey];\n\n if (depVersion && depVersion === devDepVersion) {\n reportError(\n `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n 'please place it only in dependencies or use range in dependencies',\n );\n continue;\n }\n allowDuplicated = true;\n }\n\n if (\n versionsIn.length > 2 ||\n (versionsIn.length === 2 && !allowDuplicated)\n ) {\n reportError(\n `Invalid \"${depKey}\" present in ${versionsIn.join(' and ')}`,\n 'please place it only in dependencies',\n );\n } else {\n const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n versions.forEach((version, index) => {\n if (version.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\n includePrerelease: true,\n })\n ) {\n return;\n }\n\n // Ignore reporting duplicate when there's a resolution for it\n if (pkg.resolutions?.[depKey]) {\n return;\n }\n\n const versionInType = versionsIn[index];\n\n reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n isPackageALibrary: boolean,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n checks.forEach(({ type, searchIn }) => {\n const dependencies = pkg[type];\n\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\n isPackageALibrary,\n depType,\n searchIn,\n depPkg,\n onlyWarnsForCheck.createFor(depName),\n );\n }\n });\n\n reportNotWarnedForMapping(reportError, onlyWarnsForCheck);\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkPeerDependencies(\n pkg: PackageJson,\n reportError: ReportError,\n type: DependencyTypes,\n allowedPeerIn: DependencyTypes[],\n providedDependencies: [string, string][],\n depPkg: PackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const { peerDependencies, peerDependenciesMeta } = depPkg;\n if (!peerDependencies) return;\n\n const allowedPeerInExisting = allowedPeerIn.filter(\n (allowedPeerInType) => pkg[allowedPeerInType],\n );\n\n for (const [peerDepName, range] of Object.entries(peerDependencies)) {\n const versionsIn = allowedPeerInExisting.filter(\n (allowedPeerInExistingType) =>\n pkg[allowedPeerInExistingType]?.[peerDepName],\n );\n if (versionsIn.length === 0) {\n const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName];\n if (peerDependenciesMetaPeerDep?.optional) {\n continue;\n }\n\n let additionalDetails = '';\n // satisfied by another direct dependency\n const providedDependenciesForDepName = providedDependencies.filter(\n ([depName]) => depName === peerDepName,\n );\n if (providedDependenciesForDepName.length > 0) {\n if (\n providedDependenciesForDepName.every(([, depRange]) =>\n semver.intersects(range, depRange),\n )\n ) {\n continue;\n }\n\n additionalDetails +=\n ' (required as some dependencies have non-satisfying range too)';\n }\n\n reportError(\n `Missing \"${peerDepName}\" peer dependency from \"${depPkg.name}\" in ${type}`,\n `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\n ' or ',\n )}${additionalDetails}`,\n missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n } else {\n const versions = versionsIn.map(\n (versionsInType) => pkg[versionsInType]![peerDepName],\n );\n\n versions.forEach((version, index) => {\n if (version.startsWith('npm:')) {\n return;\n }\n\n if (version === '*') {\n return;\n }\n\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${peerDepName}\" peer dependency`,\n `\"${version}\" (in ${allowedPeerInExisting[index]}) should satisfies \"${range}\" from \"${depPkg.name}\" ${type}`,\n invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n }\n });\n }\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type {\n DependencyTypes,\n PackageJson,\n RegularDependencyTypes,\n} from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkPeerDependencies } from './checkPeerDependencies';\n\nconst regularDependencyTypes: RegularDependencyTypes[] = [\n 'devDependencies',\n 'dependencies',\n 'optionalDependencies',\n];\n\nconst getAllowedPeerInFromType = (\n depPkgType: RegularDependencyTypes,\n isLibrary: boolean,\n): DependencyTypes[] => {\n switch (depPkgType) {\n case 'devDependencies':\n return ['devDependencies', 'dependencies'];\n case 'dependencies':\n return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'optionalDependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n\n // no default\n }\n};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n const allDepPkgs: {\n name: string;\n type: RegularDependencyTypes;\n pkg: PackageJson;\n }[] = [];\n const allDirectDependenciesDependencies: [string, string][] = [];\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n if (pkg.peerDependencies?.[depName]) {\n if (\n semver.intersects(\n dependencies[depName],\n pkg.peerDependencies[depName],\n )\n ) {\n continue;\n }\n }\n\n const depPkg = getDependencyPackageJson(depName);\n allDepPkgs.push({ name: depName, type: depType, pkg: depPkg });\n\n if (depPkg.dependencies && !isLibrary) {\n allDirectDependenciesDependencies.push(\n ...Object.entries(depPkg.dependencies),\n );\n }\n }\n }),\n );\n\n for (const { name: depName, type: depType, pkg: depPkg } of allDepPkgs) {\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n allDirectDependenciesDependencies,\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n }\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') ||\n version.startsWith('~') ||\n version.startsWith('>') ||\n version.startsWith('<');\n\n// eslint-disable-next-line @typescript-eslint/require-await\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = getDependencyPackageJson(dependencyName);\n } catch {\n resolvedDep = null;\n }\n if (!resolvedDep?.version) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact${\n tryToAutoFix\n ? `, autofix failed to resolve \"${dependencyName}\".`\n : ''\n }`,\n shouldOnlyWarn,\n false,\n );\n } else if (\n !semver.satisfies(resolvedDep.version, version, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact${\n tryToAutoFix\n ? `, autofix failed as \"${dependencyName}\"'s resolved version is \"${resolvedDep.version}\" and doesn't satisfies \"${version}\".`\n : ''\n }`,\n shouldOnlyWarn,\n false,\n );\n } else if (tryToAutoFix) {\n pkgDependencies[dependencyName] = resolvedDep.version;\n } else {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${resolvedDep.version}\".`,\n shouldOnlyWarn,\n true,\n );\n }\n } else {\n let exactVersion = version.slice(version[1] === '=' ? 2 : 1);\n if (exactVersion.split('.').length < 3) {\n if (exactVersion.split('.').length === 1) {\n exactVersion = `${exactVersion}.0.0`;\n } else {\n exactVersion = `${exactVersion}.0`;\n }\n }\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${exactVersion}\".`,\n shouldOnlyWarn,\n false,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record> | string[]>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import semver from 'semver';\nimport semverUtils from 'semver-utils';\nimport type { PackageJson } from 'type-fest';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependencyTypes } from '../utils/packageTypes';\n\nexport interface CheckMinRangeSatisfiesOptions {\n customCreateReportError?: typeof createReportError;\n tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n pkgPathName: string,\n pkg: PackageJson,\n type1: DependencyTypes = 'dependencies',\n type2: DependencyTypes = 'devDependencies',\n {\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckMinRangeSatisfiesOptions = {},\n): void {\n const dependencies1 = pkg[type1];\n const dependencies2 = pkg[type2];\n\n if (!dependencies1 || !dependencies2) {\n return;\n }\n\n const reportError = customCreateReportError(\n `\"${type1}\" minimum range satisfies \"${type2}\"`,\n pkgPathName,\n );\n\n for (const [depName, depRange1] of getEntries(dependencies1)) {\n if (depRange1 === '*') continue;\n\n const depRange2 = dependencies2[depName];\n if (!depRange2 || !depRange1) continue;\n\n const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1;\n\n if (\n !semver.satisfies(minDepRange1, depRange2, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n const depRange1Parsed = semverUtils.parseRange(depRange1);\n dependencies1[depName] =\n (depRange1Parsed[0]?.operator || '') +\n (semver.minVersion(depRange2)?.version || depRange2);\n } else {\n reportError(\n `Invalid \"${depName}\" in ${type1}`,\n `\"${depRange1}\" should satisfies \"${depRange2}\" from \"${type2}\".`,\n false,\n true,\n );\n }\n }\n }\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([resolutionKey, resolutionValue]) => {\n let depName = resolutionKey;\n let resolutionDepVersion = resolutionValue;\n if (resolutionValue.startsWith('patch:')) {\n const matchResolutionInKey = /^(.+)@npm:(.+)$/.exec(resolutionKey);\n if (matchResolutionInKey) {\n [, depName, resolutionDepVersion] = matchResolutionInKey;\n }\n }\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n false,\n true,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import type { SemVer } from 'semver-utils';\nimport semverUtils from 'semver-utils';\n\nexport const parse = semverUtils.parse;\nexport const parseRange = semverUtils.parseRange;\n\n// semverUtils.stringify does not support the operator\nfunction stringify(semver: SemVer): string {\n let str = '';\n if (semver.operator) {\n str += semver.operator;\n }\n str += semver.major || '0';\n str += '.';\n str += semver.minor || '0';\n str += '.';\n str += semver.patch || '0';\n if (semver.release) {\n str += `-${semver.release}`;\n }\n if (semver.build) {\n str += `+${semver.build}`;\n }\n return str;\n}\n\nexport function getOperator(range: string): string | null {\n const parsedRange = parseRange(range);\n if (parsedRange.length !== 1) return null;\n return parsedRange[0].operator || '';\n}\n\nexport function changeOperator(\n range: string,\n operator: string | null,\n): string | null {\n if (operator === null) return range;\n const parsedRange = parseRange(range);\n if (parsedRange.length !== 1) return null;\n const parsed = parsedRange[0];\n parsed.operator = operator === '' ? undefined : operator;\n return stringify(parsed);\n}\n\nexport function isExactParsedRange(\n parsedRange: ReturnType,\n): boolean {\n return parsedRange.length === 1 && parsedRange[0].operator === undefined;\n}\n\nexport function isExactRange(range: string): boolean {\n return isExactParsedRange(parseRange(range));\n}\n","import semver from 'semver';\nimport type { ShouldHaveExactVersions } from '../check-package';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport { changeOperator, getOperator } from '../utils/semverUtils';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsFromDependencyOptions {\n tryToAutoFix?: boolean;\n shouldHaveExactVersions: ShouldHaveExactVersions;\n onlyWarnsForCheck?: OnlyWarnsForCheck;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n depType: DependencyTypes,\n {\n tryToAutoFix,\n shouldHaveExactVersions,\n onlyWarnsForCheck,\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsFromDependencyOptions,\n): void {\n const pkgDependencies = pkg[type] || {};\n const dependencies = depPkg[depType] || {};\n\n const reportError = customCreateReportError(\n `Satisfies Versions from \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\"`,\n `config expects \"${depKey}\" in \"${depType}\" of \"${depPkg.name}\".`,\n undefined,\n false,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n const getAutoFixIfExists = (): string | null | undefined => {\n const existingOperator = version ? getOperator(version) : null;\n const expectedOperator = (() => {\n if (existingOperator !== null) {\n return existingOperator;\n }\n return shouldHaveExactVersions(type) ? '' : null;\n })();\n\n return expectedOperator === ''\n ? semver.minVersion(range)?.version\n : changeOperator(range, expectedOperator);\n };\n\n const autoFix = (versionToApply: string): void => {\n pkg[type] = {\n ...pkg[type],\n [depKey]: versionToApply,\n };\n };\n\n if (!version) {\n const fix = getAutoFixIfExists();\n if (!fix || !tryToAutoFix) {\n reportError(\n `Missing \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" in \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n !!fix,\n );\n } else {\n autoFix(fix);\n }\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n const fix = getAutoFixIfExists();\n if (!fix || !tryToAutoFix) {\n reportError(\n `Invalid \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `\"${version}\" should satisfies \"${range}\" from \"${depPkg.name}\"'s \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n !!fix,\n );\n } else {\n autoFix(fix);\n }\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependenciesRanges, PackageJson } from '../utils/packageTypes';\n\ninterface CheckSatisfiesVersionsInDependencyOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsInDependency(\n pkgPathName: string,\n depPkg: PackageJson,\n dependenciesRanges: DependenciesRanges,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsInDependencyOptions = {},\n): void {\n const reportError = customCreateReportError(\n `Satisfies Versions In Dependency \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n for (const [dependenciesType, dependenciesTypeRanges] of getEntries(\n dependenciesRanges,\n )) {\n if (!dependenciesTypeRanges) return;\n const dependencies = depPkg[dependenciesType];\n\n for (const [dependencyName, dependencyRange] of getEntries(\n dependenciesTypeRanges,\n )) {\n if (dependencyRange == null) {\n if (dependencies?.[dependencyName]) {\n reportError(\n `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n 'it should not be present',\n );\n }\n } else if (!dependencies) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependenciesType}\" is missing in \"${depPkg.name}\"`,\n );\n } else if (!dependencies[dependencyName]) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencyName}\" is missing in ${dependenciesType}`,\n );\n } else if (\n !semver.satisfies(dependencies[dependencyName], dependencyRange, {\n includePrerelease: true,\n }) &&\n !semver.intersects(dependencies[dependencyName], dependencyRange, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencies[dependencyName]}\" does not satisfies \"${dependencyRange}\"`,\n );\n }\n }\n }\n}\n","import { readFileSync, writeFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, `${JSON.stringify(pkg, null, 2)}\\n`);\n}\n\n/** @internal */\nexport function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): PackageJson {\n const packageUrl = importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(fileURLToPath(packageUrl));\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\n\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n /** @internal */\n internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n /** @internal */\n internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\n internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n return (pkgDepName) => {\n const existing = nodeModulesPackagePathCache.get(pkgDepName);\n if (existing) return existing;\n let pkg: PackageJson;\n if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (error: unknown) {\n if (!(error instanceof Error)) throw error;\n\n if (\n (error as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw error;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n error.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw error;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\nexport type OnlyWarnsForOptionalDependencyMapping =\n | OnlyWarnsFor\n | OnlyWarnsForDependencyMapping\n | undefined;\n\nexport interface OnlyWarnsForCheck {\n configName: string;\n getNotWarnedFor: () => string[];\n shouldWarnsFor: (dependencyName: string) => boolean;\n}\n\nexport interface OnlyWarnsForMappingCheck {\n configName: string;\n getNotWarnedFor: () => Record;\n createFor: (dependencyName: string) => OnlyWarnsForCheck;\n}\n\nexport const createOnlyWarnsForArrayCheck = (\n configName: string,\n onlyWarnsFor: OnlyWarnsFor = [],\n): OnlyWarnsForCheck => {\n const notWarnedFor = new Set(onlyWarnsFor);\n return {\n configName,\n getNotWarnedFor: () => [...notWarnedFor],\n shouldWarnsFor(dependencyName) {\n if (onlyWarnsFor.includes(dependencyName)) {\n notWarnedFor.delete(dependencyName);\n return true;\n }\n return false;\n },\n };\n};\n\nconst isMapping = (\n onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): onlyWarnsFor is OnlyWarnsForDependencyMapping => {\n return typeof onlyWarnsFor === 'object' && !Array.isArray(onlyWarnsFor);\n};\n\nexport const createOnlyWarnsForMappingCheck = (\n configName: string,\n onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): OnlyWarnsForMappingCheck => {\n if (isMapping(onlyWarnsFor)) {\n const notWarnedFor = Object.fromEntries(\n getEntries(onlyWarnsFor).map(([entryKey, entryValue]) => [\n entryKey,\n new Set(entryValue),\n ]),\n );\n return {\n configName,\n getNotWarnedFor: () =>\n Object.fromEntries(\n getEntries(notWarnedFor)\n .filter(([key, set]) => set.size > 0)\n .map(([key, set]) => [key, [...set]]),\n ),\n createFor(dependencyNameLevel1) {\n return {\n configName,\n getNotWarnedFor() {\n throw new Error('Invalid call to getNotWarnedFor()');\n },\n shouldWarnsFor(dependencyName) {\n if (onlyWarnsFor['*']?.includes(dependencyName)) {\n notWarnedFor['*'].delete(dependencyName);\n return true;\n }\n if (onlyWarnsFor[dependencyNameLevel1]?.includes(dependencyName)) {\n notWarnedFor[dependencyNameLevel1].delete(dependencyName);\n return true;\n }\n return false;\n },\n };\n },\n };\n }\n\n const arrayOnlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n configName,\n onlyWarnsFor,\n );\n return {\n configName,\n getNotWarnedFor: (): Record => {\n const notWarnedFor = arrayOnlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n return { '*': notWarnedFor };\n }\n return {};\n },\n createFor() {\n return {\n configName,\n getNotWarnedFor() {\n throw new Error('Invalid call to getNotWarnedFor()');\n },\n shouldWarnsFor(dependencyName) {\n return arrayOnlyWarnsForCheck.shouldWarnsFor(dependencyName);\n },\n };\n },\n };\n};\n","import path from 'node:path';\nimport util from 'node:util';\nimport { checkDirectDuplicateDependencies } from './checks/checkDirectDuplicateDependencies';\nimport { checkDirectPeerDependencies } from './checks/checkDirectPeerDependencies';\nimport { checkExactVersions } from './checks/checkExactVersions';\nimport { checkIdenticalVersions } from './checks/checkIdenticalVersions';\nimport { checkIdenticalVersionsThanDependency } from './checks/checkIdenticalVersionsThanDependency';\nimport { checkMinRangeSatisfies } from './checks/checkMinRangeSatisfies';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { displayConclusion } from './utils/createReportError';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n packageDirectoryPath?: string;\n isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalMissingConfigName?: string;\n internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n exactVersions: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsFor;\n missingPeerDependency: OnlyWarnsFor;\n invalidPeerDependencyVersion: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/sort-type-constituents\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n /** function to check the value in the \"resolutionExplained\" key in package.json */\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApiRunOptions {\n /** @internal */\n skipDisplayConclusion?: boolean;\n}\n\nexport interface CheckPackageApi {\n run: (options?: CheckPackageApiRunOptions) => Promise;\n\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n isPkgLibrary: boolean;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check versions in a dependency\n * Also useable to check if a dependency is not present\n *\n * @example\n * Checking if `@lerna/version` has no dependency `@nrwl/devkit`\n * ```\n * .checkSatisfiesVersionsInDependency('@lerna/version', {\n * dependencies: {\n * '@nrwl/devkit': null,\n * },\n * })\n * ```\n */\n checkSatisfiesVersionsInDependency: (\n depName: string,\n dependenciesRanges: DependenciesRanges,\n ) => CheckPackageApi;\n\n checkMinRangeDependenciesSatisfiesDevDependencies: () => CheckPackageApi;\n checkMinRangePeerDependenciesSatisfiesDependencies: () => CheckPackageApi;\n}\n\nexport type ShouldHaveExactVersions = (depType: DependencyTypes) => boolean;\n\nexport function createCheckPackage({\n packageDirectoryPath = '.',\n internalWorkspacePkgDirectoryPath,\n isLibrary = false,\n}: CreateCheckPackageOptions = {}): CheckPackageApi {\n const pkgDirname = path.resolve(packageDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${packageDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n const isPkgLibrary =\n typeof isLibrary === 'function' ? isLibrary(pkg) : isLibrary;\n const shouldHaveExactVersions: ShouldHaveExactVersions = (depType) =>\n !isPkgLibrary ? true : depType === 'devDependencies';\n\n let tryToAutoFix = false;\n\n if (process.argv.slice(2).includes('--fix')) {\n tryToAutoFix = true;\n }\n\n const writePackageIfChanged = (): void => {\n if (!tryToAutoFix) return;\n if (util.isDeepStrictEqual(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\n };\n\n const getDependencyPackageJson = createGetDependencyPackageJson({\n pkgDirname,\n });\n\n let runCalled = false;\n\n if (!internalWorkspacePkgDirectoryPath) {\n process.on('beforeExit', () => {\n if (!runCalled) {\n throw new Error('Call .run() and await the result.');\n }\n });\n }\n\n class Job {\n name: string;\n\n fn: () => Promise;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (error) {\n throw new Error(`${this.name} failed: ${(error as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run({\n skipDisplayConclusion = false,\n }: CheckPackageApiRunOptions = {}) {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n if (!skipDisplayConclusion) {\n displayConclusion();\n }\n },\n\n pkg,\n pkgDirname,\n pkgPathName,\n isPkgLibrary,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n missingOnlyWarnsFor,\n invalidOnlyWarnsFor,\n internalMissingConfigName = 'missingOnlyWarnsFor',\n internalInvalidConfigName = 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isPkgLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n isPkgLibrary,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isPkgLibrary,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n\n const exactVersionsOnlyWarnsFor =\n onlyWarnsForInPackage?.exactVersions || [];\n\n if (onlyWarnsForInDependencies) {\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName:\n 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName:\n 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName:\n 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n if (isPkgLibrary) {\n this.checkMinRangeDependenciesSatisfiesDevDependencies();\n this.checkMinRangePeerDependenciesSatisfiesDependencies();\n }\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkIdenticalVersionsThanDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\n dependencyType as DependencyTypes,\n dependenciesRanges,\n );\n },\n );\n return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsInDevDependenciesOfDependency.name,\n async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDependency(depName, dependenciesRanges) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n checkSatisfiesVersionsInDependency(\n pkgPathName,\n depPkg,\n dependenciesRanges,\n );\n }),\n );\n return this;\n },\n\n checkMinRangeDependenciesSatisfiesDevDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'dependencies',\n 'devDependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n\n checkMinRangePeerDependenciesSatisfiesDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'peerDependencies',\n 'dependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n };\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { globSync } from 'glob';\nimport type { Except } from 'type-fest';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n displayConclusion,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type { PackageJson } from './utils/packageTypes';\nimport type { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/sort-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\ninterface CreateCheckPackageWithWorkspacesOptions\n extends Except {\n isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces(\n createCheckPackageOptions: CreateCheckPackageWithWorkspacesOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage({\n ...createCheckPackageOptions,\n isLibrary: false,\n });\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = globSync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n if (!fs.existsSync(path.join(pathMatch, 'package.json'))) {\n console.log(\n `Ignored potential directory, no package.json found: ${pathMatch}`,\n );\n return;\n }\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage({\n ...createCheckPackageOptions,\n packageDirectoryPath: subPkgDirectoryPath,\n internalWorkspacePkgDirectoryPath:\n createCheckPackageOptions.packageDirectoryPath || '.',\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run({ skipDisplayConclusion: true });\n }\n\n displayConclusion();\n },\n\n checkRecommended({\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n checkSubPackage.checkRecommended({\n allowRangeVersionsInDependencies: checkSubPackage.isPkgLibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies: {\n ...onlyWarnsForInMonorepoPackagesDependencies['*'],\n ...onlyWarnsForInMonorepoPackagesDependencies[\n checkSubPackage.pkg.name\n ],\n },\n internalExactVersionsIgnore: [...checksWorkspaces.keys()],\n checkResolutionMessage,\n });\n\n const reportMonorepoDDDError = createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkSubPackage.pkgPathName,\n );\n // Root\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n // previous packages\n previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'dependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n });\n\n previousCheckedWorkspaces.set(id, checkSubPackage);\n });\n reportNotWarnedForMapping(\n createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkPackage.pkgPathName,\n ),\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n );\n\n return this;\n },\n\n forRoot(callback) {\n callback(checkPackage);\n return this;\n },\n\n forEach(callback) {\n checksWorkspaces.forEach((checkSubPackage) => {\n callback(checkSubPackage);\n });\n return this;\n },\n\n for(id, callback) {\n const packageCheck = checksWorkspaces.get(id);\n if (!packageCheck) {\n throw new Error(\n `Invalid package name: ${id}. Known package names: \"${[\n ...checksWorkspaces.keys(),\n ].join('\",\"')}\"`,\n );\n }\n callback(packageCheck);\n return this;\n },\n };\n}\n"],"names":["getKeys","o","Object","keys","getEntries","entries","titleDisplayed","pkgPathDisplayed","totalWarnings","totalErrors","totalFixable","displayConclusion","console","log","chalk","green","yellow","red","logMessage","msgTitle","msgInfo","onlyWarns","autoFixable","error","bgGreenBright","black","createReportError","title","pkgPathName","reportError","cyan","process","exitCode","reportNotWarnedFor","onlyWarnsForCheck","notWarnedFor","getNotWarnedFor","length","configName","map","depName","join","reportNotWarnedForMapping","onlyWarnsForMappingCheck","notWarnedForMapping","forEach","depNameOrStar","checkDuplicateDependencies","pkg","isPkgLibrary","depType","searchIn","depPkg","dependencies","searchInExisting","filter","type","depKey","range","versionsIn","allowDuplicated","includes","depVersion","devDepVersion","devDependencies","versions","version","index","startsWith","semver","satisfies","includePrerelease","intersects","resolutions","versionInType","name","shouldWarnsFor","checkDirectDuplicateDependencies","isPackageALibrary","getDependencyPackageJson","reportErrorNamePrefix","customCreateReportError","createFor","checkPeerDependencies","allowedPeerIn","providedDependencies","missingOnlyWarnsForCheck","invalidOnlyWarnsForCheck","peerDependencies","peerDependenciesMeta","allowedPeerInExisting","allowedPeerInType","peerDepName","allowedPeerInExistingType","peerDependenciesMetaPeerDep","optional","additionalDetails","providedDependenciesForDepName","every","depRange","versionsInType","minVersionOfVersion","minVersion","regularDependencyTypes","getAllowedPeerInFromType","depPkgType","isLibrary","checkDirectPeerDependencies","allDepPkgs","allDirectDependenciesDependencies","Promise","all","push","isVersionRange","checkExactVersions","types","internalExactVersionsIgnore","tryToAutoFix","pkgDependencies","dependencyName","versionConst","match","exec","Error","realVersion","shouldOnlyWarn","resolvedDep","exactVersion","slice","split","checkIdenticalVersions","deps","depConfigArrayOrObject","depConfig","Array","isArray","depKeyType","pkgDependenciesType","depKeyIdentical","value","checkIdenticalVersionsThanDependency","depKeys","checkMinRangeSatisfies","type1","type2","dependencies1","dependencies2","depRange1","depRange2","minDepRange1","depRange1Parsed","semverUtils","parseRange","operator","checkNoDependencies","pkgPath","moveToSuggestion","checkResolutionsHasExplanation","checkMessage","pkgResolutions","pkgResolutionsExplained","resolutionsExplained","checkResolutionsVersionsMatch","resolutionKey","resolutionValue","resolutionDepVersion","matchResolutionInKey","checkSatisfiesVersions","dependenciesRanges","parse","stringify","str","major","minor","patch","release","build","getOperator","parsedRange","changeOperator","parsed","undefined","checkSatisfiesVersionsFromDependency","shouldHaveExactVersions","getAutoFixIfExists","existingOperator","expectedOperator","autoFix","versionToApply","fix","checkSatisfiesVersionsInDependency","dependenciesType","dependenciesTypeRanges","dependencyRange","readPkgJson","packagePath","JSON","readFileSync","writePkgJson","writeFileSync","internalLoadPackageJsonFromNodeModules","pkgDepName","pkgDirname","packageUrl","importResolve","fileURLToPath","createGetDependencyPackageJson","nodeModulesPackagePathCache","Map","internalCustomLoadPackageJsonFromNodeModules","internalReadPkgJson","existing","get","code","message","matchPackageJson","set","createOnlyWarnsForArrayCheck","onlyWarnsFor","Set","delete","isMapping","createOnlyWarnsForMappingCheck","fromEntries","entryKey","entryValue","key","size","dependencyNameLevel1","arrayOnlyWarnsForCheck","createCheckPackage","packageDirectoryPath","internalWorkspacePkgDirectoryPath","path","resolve","copyPkg","argv","writePackageIfChanged","util","isDeepStrictEqual","runCalled","on","Job","constructor","fn","run","jobs","skipDisplayConclusion","job","allowRangeVersionsInDependencies","checkExactDevVersions","missingOnlyWarnsFor","invalidOnlyWarnsFor","internalMissingConfigName","internalInvalidConfigName","internalConfigName","checkRecommended","onlyWarnsForInPackage","onlyWarnsForInDependencies","checkResolutionMessage","internalMissingPeerDependenciesOnlyWarnsFor","internalInvalidPeerDependenciesOnlyWarnsFor","internalDirectDuplicateDependenciesOnlyWarnsFor","exactVersionsOnlyWarnsFor","exactVersions","dependencyNameOrSpecialKey","onlyWarnsForValue","duplicateDirectDependency","missingPeerDependency","invalidPeerDependencyVersion","checkMinRangeDependenciesSatisfiesDevDependencies","checkMinRangePeerDependenciesSatisfiesDependencies","checkIdenticalVersionsThanDevDependencyOfDependency","dependencyType","checkSatisfiesVersionsInDevDependenciesOfDependency","checkSatisfiesVersionsBetweenDependencies","depName1","depName2","depPkg1","depPkg2","createCheckPackageWithWorkspaces","createCheckPackageOptions","checkPackage","pkgWorkspaces","workspaces","packages","workspacePackagesPaths","pattern","globSync","cwd","pathMatch","fs","existsSync","subPkgDirectoryPath","relative","checksWorkspaces","checkPkg","checksWorkspace","values","allowRangeVersionsInLibraries","onlyWarnsForInRootPackage","onlyWarnsForInMonorepoPackages","onlyWarnsForInRootDependencies","onlyWarnsForInMonorepoPackagesDependencies","monorepoDirectDuplicateDependenciesOnlyWarnsFor","monorepoDirectDuplicateDependenciesOnlyWarnsForCheck","previousCheckedWorkspaces","checkSubPackage","id","reportMonorepoDDDError","previousCheckSubPackage","forRoot","callback","for","packageCheck"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index-node18.mjs","sources":["../src/utils/object.ts","../src/utils/createReportError.ts","../src/checks/checkDuplicateDependencies.ts","../src/checks/checkDirectDuplicateDependencies.ts","../src/checks/checkPeerDependencies.ts","../src/checks/checkDirectPeerDependencies.ts","../src/checks/checkExactVersions.ts","../src/checks/checkIdenticalVersions.ts","../src/checks/checkIdenticalVersionsThanDependency.ts","../src/checks/checkMinRangeSatisfies.ts","../src/checks/checkNoDependencies.ts","../src/checks/checkResolutionsHasExplanation.ts","../src/checks/checkResolutionsVersionsMatch.ts","../src/checks/checkSatisfiesVersions.ts","../src/utils/semverUtils.ts","../src/checks/checkSatisfiesVersionsFromDependency.ts","../src/checks/checkSatisfiesVersionsInDependency.ts","../src/utils/pkgJsonUtils.ts","../src/utils/createGetDependencyPackageJson.ts","../src/utils/warnForUtils.ts","../src/check-package.ts","../src/check-package-with-workspaces.ts"],"sourcesContent":["export const getKeys = (o: T): (keyof T)[] =>\n Object.keys(o) as (keyof T)[];\n\nexport const getEntries = (o: T): [keyof T, T[keyof T]][] =>\n Object.entries(o) as unknown as [keyof T, T[keyof T]][];\n","/* eslint-disable no-console */\n\nimport chalk from 'chalk';\nimport { getEntries } from './object';\nimport type {\n OnlyWarnsForCheck,\n OnlyWarnsForMappingCheck,\n} from './warnForUtils';\n\nexport type ReportError = (\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n autoFixable?: boolean,\n) => void;\n\nlet titleDisplayed: string | null = null;\nlet pkgPathDisplayed: string | null = null;\n\nlet totalWarnings = 0;\nlet totalErrors = 0;\nlet totalFixable = 0;\n\nexport function displayConclusion(): void {\n if (!totalWarnings && !totalErrors) {\n console.log(`\\n${chalk.green('✅ No errors or warnings found')}.`);\n } else if (!totalErrors) {\n console.log(`\\nFound ${chalk.yellow(`${totalWarnings} warnings`)}.`);\n } else if (!totalWarnings) {\n console.log(`\\nFound ${chalk.red(`${totalErrors} errors`)}.`);\n } else {\n console.log(\n `\\nFound ${chalk.red(`${totalErrors} errors`)} and ${chalk.yellow(\n `${totalWarnings} warnings`,\n )}.`,\n );\n }\n\n if (totalFixable) {\n console.log(\n `Found ${chalk.green(\n `${totalFixable} auto-fixable`,\n )} errors or warnings, run the command with \"--fix\" to fix them.`,\n );\n }\n}\n\nexport function logMessage(\n msgTitle: string,\n msgInfo?: string,\n onlyWarns?: boolean,\n autoFixable?: boolean,\n): void {\n if (onlyWarns) totalWarnings++;\n else totalErrors++;\n if (autoFixable) totalFixable++;\n console.error(\n `${\n onlyWarns ? chalk.yellow(`⚠ ${msgTitle}`) : chalk.red(`❌ ${msgTitle}`)\n }${msgInfo ? `: ${msgInfo}` : ''}${\n autoFixable ? ` ${chalk.bgGreenBright(chalk.black('auto-fixable'))}` : ''\n }`,\n );\n}\n\nexport function createReportError(\n title: string,\n pkgPathName: string,\n): ReportError {\n return function reportError(\n msgTitle,\n msgInfo,\n onlyWarns,\n autoFixable = false,\n ): void {\n if (titleDisplayed !== title || pkgPathName !== pkgPathDisplayed) {\n if (titleDisplayed) console.error();\n console.error(chalk.cyan(`== ${title} in ${pkgPathName} ==`));\n titleDisplayed = title;\n pkgPathDisplayed = pkgPathName;\n }\n logMessage(msgTitle, msgInfo, onlyWarns, autoFixable);\n\n if (!onlyWarns) {\n // console.trace();\n process.exitCode = 1;\n }\n };\n}\n\nexport function reportNotWarnedFor(\n reportError: ReportError,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const notWarnedFor = onlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n reportError(\n `Invalid config in \"${onlyWarnsForCheck.configName}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n false,\n );\n }\n}\n\nexport function reportNotWarnedForMapping(\n reportError: ReportError,\n onlyWarnsForMappingCheck: OnlyWarnsForMappingCheck,\n): void {\n const notWarnedForMapping = onlyWarnsForMappingCheck.getNotWarnedFor();\n getEntries(notWarnedForMapping).forEach(([depNameOrStar, notWarnedFor]) => {\n reportError(\n `Invalid config in \"${onlyWarnsForMappingCheck.configName}\" for \"${depNameOrStar}\"`,\n `no warning was raised for ${notWarnedFor\n .map((depName) => `\"${depName}\"`)\n .join(', ')}`,\n );\n });\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkDuplicateDependencies(\n reportError: ReportError,\n pkg: PackageJson,\n isPkgLibrary: boolean,\n depType: DependencyTypes,\n searchIn: DependencyTypes[],\n depPkg: PackageJson,\n onlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const dependencies = depPkg[depType];\n if (!dependencies) return;\n\n const searchInExisting = searchIn.filter((type) => pkg[type]);\n\n for (const [depKey, range] of Object.entries(dependencies)) {\n const versionsIn = searchInExisting.filter((type) => pkg[type]![depKey]);\n\n let allowDuplicated = false;\n if (\n versionsIn.length === 2 &&\n isPkgLibrary &&\n versionsIn.includes('dependencies') &&\n versionsIn.includes('devDependencies')\n ) {\n const depVersion = pkg.dependencies![depKey];\n const devDepVersion = pkg.devDependencies![depKey];\n\n if (depVersion && depVersion === devDepVersion) {\n reportError(\n `Invalid \"${depKey}\" has same version in dependencies and devDependencies`,\n 'please place it only in dependencies or use range in dependencies',\n );\n continue;\n }\n allowDuplicated = true;\n }\n\n if (\n versionsIn.length > 2 ||\n (versionsIn.length === 2 && !allowDuplicated)\n ) {\n reportError(\n `Invalid \"${depKey}\" present in ${versionsIn.join(' and ')}`,\n 'please place it only in dependencies',\n );\n } else {\n const versions = versionsIn.map((type) => pkg[type]![depKey]);\n\n versions.forEach((version, index) => {\n if (version.startsWith('file:') || range.startsWith('file:')) return;\n // https://yarnpkg.com/features/workspaces#workspace-ranges-workspace\n if (\n version.startsWith('workspace:') ||\n range.startsWith('workspace:')\n ) {\n return;\n }\n\n if (\n semver.satisfies(version, range, {\n includePrerelease: true,\n }) ||\n semver.intersects(version, range, {\n includePrerelease: true,\n })\n ) {\n return;\n }\n\n // Ignore reporting duplicate when there's a resolution for it\n if (pkg.resolutions?.[depKey]) {\n return;\n }\n\n const versionInType = versionsIn[index];\n\n reportError(\n `Invalid duplicate dependency \"${depKey}\"`,\n `\"${versions[0]}\" (in ${versionInType}) should satisfies \"${range}\" from \"${depPkg.name}\" ${depType}.`,\n onlyWarnsForCheck.shouldWarnsFor(depKey),\n );\n });\n }\n }\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n reportNotWarnedForMapping,\n createReportError,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkDuplicateDependencies } from './checkDuplicateDependencies';\n\nexport async function checkDirectDuplicateDependencies(\n pkg: PackageJson,\n pkgPathName: string,\n isPackageALibrary: boolean,\n depType: DependencyTypes,\n getDependencyPackageJson: GetDependencyPackageJson,\n onlyWarnsForCheck: OnlyWarnsForMappingCheck,\n reportErrorNamePrefix = '',\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError(\n `${reportErrorNamePrefix}Direct Duplicate Dependencies`,\n pkgPathName,\n );\n\n const checks: {\n type: DependencyTypes;\n searchIn: DependencyTypes[];\n }[] = [\n {\n type: 'devDependencies',\n searchIn: ['devDependencies', 'dependencies'],\n },\n { type: 'dependencies', searchIn: ['devDependencies', 'dependencies'] },\n ];\n\n checks.forEach(({ type, searchIn }) => {\n const dependencies = pkg[type];\n\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n const depPkg = getDependencyPackageJson(depName);\n checkDuplicateDependencies(\n reportError,\n pkg,\n isPackageALibrary,\n depType,\n searchIn,\n depPkg,\n onlyWarnsForCheck.createFor(depName),\n );\n }\n });\n\n reportNotWarnedForMapping(reportError, onlyWarnsForCheck);\n}\n","import semver from 'semver';\nimport type { ReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkPeerDependencies(\n pkg: PackageJson,\n reportError: ReportError,\n type: DependencyTypes,\n allowedPeerIn: DependencyTypes[],\n providedDependencies: [string, string][],\n depPkg: PackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForCheck,\n): void {\n const { peerDependencies, peerDependenciesMeta } = depPkg;\n if (!peerDependencies) return;\n\n const allowedPeerInExisting = allowedPeerIn.filter(\n (allowedPeerInType) => pkg[allowedPeerInType],\n );\n\n for (const [peerDepName, range] of Object.entries(peerDependencies)) {\n const versionsIn = allowedPeerInExisting.filter(\n (allowedPeerInExistingType) =>\n pkg[allowedPeerInExistingType]?.[peerDepName],\n );\n if (versionsIn.length === 0) {\n const peerDependenciesMetaPeerDep = peerDependenciesMeta?.[peerDepName];\n if (peerDependenciesMetaPeerDep?.optional) {\n continue;\n }\n\n let additionalDetails = '';\n // satisfied by another direct dependency\n const providedDependenciesForDepName = providedDependencies.filter(\n ([depName]) => depName === peerDepName,\n );\n if (providedDependenciesForDepName.length > 0) {\n if (\n providedDependenciesForDepName.every(([, depRange]) =>\n semver.intersects(range, depRange),\n )\n ) {\n continue;\n }\n\n additionalDetails +=\n ' (required as some dependencies have non-satisfying range too)';\n }\n\n reportError(\n `Missing \"${peerDepName}\" peer dependency from \"${depPkg.name}\" in ${type}`,\n `it should satisfies \"${range}\" and be in ${allowedPeerIn.join(\n ' or ',\n )}${additionalDetails}`,\n missingOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n } else {\n const versions = versionsIn.map(\n (versionsInType) => pkg[versionsInType]![peerDepName],\n );\n\n versions.forEach((version, index) => {\n if (version.startsWith('npm:')) {\n return;\n }\n\n if (version === '*') {\n return;\n }\n\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${peerDepName}\" peer dependency`,\n `\"${version}\" (in ${allowedPeerInExisting[index]}) should satisfies \"${range}\" from \"${depPkg.name}\" ${type}`,\n invalidOnlyWarnsForCheck.shouldWarnsFor(peerDepName),\n );\n }\n });\n }\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedForMapping,\n} from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type {\n DependencyTypes,\n PackageJson,\n RegularDependencyTypes,\n} from '../utils/packageTypes';\nimport type { OnlyWarnsForMappingCheck } from '../utils/warnForUtils';\nimport { checkPeerDependencies } from './checkPeerDependencies';\n\nconst regularDependencyTypes: RegularDependencyTypes[] = [\n 'devDependencies',\n 'dependencies',\n 'optionalDependencies',\n];\n\nconst getAllowedPeerInFromType = (\n depPkgType: RegularDependencyTypes,\n isLibrary: boolean,\n): DependencyTypes[] => {\n switch (depPkgType) {\n case 'devDependencies':\n return ['devDependencies', 'dependencies'];\n case 'dependencies':\n return isLibrary\n ? ['dependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n case 'optionalDependencies':\n return isLibrary\n ? ['dependencies', 'optionalDependencies', 'peerDependencies']\n : ['devDependencies', 'dependencies'];\n\n // no default\n }\n};\n\nexport async function checkDirectPeerDependencies(\n isLibrary: boolean,\n pkg: PackageJson,\n pkgPathName: string,\n getDependencyPackageJson: GetDependencyPackageJson,\n missingOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n invalidOnlyWarnsForCheck: OnlyWarnsForMappingCheck,\n customCreateReportError = createReportError,\n): Promise {\n const reportError = customCreateReportError('Peer Dependencies', pkgPathName);\n\n const allDepPkgs: {\n name: string;\n type: RegularDependencyTypes;\n pkg: PackageJson;\n }[] = [];\n const allDirectDependenciesDependencies: [string, string][] = [];\n\n await Promise.all(\n regularDependencyTypes.map(async (depType) => {\n const dependencies = pkg[depType];\n if (!dependencies) return;\n for (const depName of getKeys(dependencies)) {\n if (pkg.peerDependencies?.[depName]) {\n if (\n semver.intersects(\n dependencies[depName],\n pkg.peerDependencies[depName],\n )\n ) {\n continue;\n }\n }\n\n const depPkg = getDependencyPackageJson(depName);\n allDepPkgs.push({ name: depName, type: depType, pkg: depPkg });\n\n if (depPkg.dependencies && !isLibrary) {\n allDirectDependenciesDependencies.push(\n ...Object.entries(depPkg.dependencies),\n );\n }\n }\n }),\n );\n\n for (const { name: depName, type: depType, pkg: depPkg } of allDepPkgs) {\n if (depPkg.peerDependencies) {\n checkPeerDependencies(\n pkg,\n reportError,\n depType,\n getAllowedPeerInFromType(depType, isLibrary),\n allDirectDependenciesDependencies,\n depPkg,\n missingOnlyWarnsForCheck.createFor(depName),\n invalidOnlyWarnsForCheck.createFor(depName),\n );\n }\n }\n\n reportNotWarnedForMapping(reportError, missingOnlyWarnsForCheck);\n if (missingOnlyWarnsForCheck !== invalidOnlyWarnsForCheck) {\n reportNotWarnedForMapping(reportError, invalidOnlyWarnsForCheck);\n }\n}\n","import semver from 'semver';\nimport type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport {\n createReportError,\n reportNotWarnedFor,\n} from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsFor, OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckExactVersionsOptions {\n getDependencyPackageJson?: GetDependencyPackageJson;\n onlyWarnsForCheck: OnlyWarnsForCheck;\n internalExactVersionsIgnore?: OnlyWarnsFor;\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nconst isVersionRange = (version: string): boolean =>\n version.startsWith('^') ||\n version.startsWith('~') ||\n version.startsWith('>') ||\n version.startsWith('<');\n\n// eslint-disable-next-line @typescript-eslint/require-await\nexport async function checkExactVersions(\n pkg: PackageJson,\n pkgPathName: string,\n types: DependencyTypes[],\n {\n getDependencyPackageJson,\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckExactVersionsOptions,\n): Promise {\n const reportError = customCreateReportError('Exact versions', pkgPathName);\n\n for (const type of types) {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) continue;\n\n for (const [dependencyName, versionConst] of Object.entries(\n pkgDependencies,\n )) {\n let version = versionConst;\n if (version.startsWith('npm:')) {\n const match = /^npm:.*@(.*)$/.exec(version);\n if (!match) throw new Error(`Invalid version match: ${version}`);\n const [, realVersion] = match;\n version = realVersion;\n }\n\n if (isVersionRange(version)) {\n if (internalExactVersionsIgnore?.includes(dependencyName)) {\n continue;\n }\n const shouldOnlyWarn = onlyWarnsForCheck.shouldWarnsFor(dependencyName);\n if (!shouldOnlyWarn && getDependencyPackageJson) {\n let resolvedDep;\n try {\n resolvedDep = getDependencyPackageJson(dependencyName);\n } catch {\n resolvedDep = null;\n }\n if (!resolvedDep?.version) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact${\n tryToAutoFix\n ? `, autofix failed to resolve \"${dependencyName}\".`\n : ''\n }`,\n shouldOnlyWarn,\n false,\n );\n } else if (\n !semver.satisfies(resolvedDep.version, version, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact${\n tryToAutoFix\n ? `, autofix failed as \"${dependencyName}\"'s resolved version is \"${resolvedDep.version}\" and doesn't satisfies \"${version}\".`\n : ''\n }`,\n shouldOnlyWarn,\n false,\n );\n } else if (tryToAutoFix) {\n pkgDependencies[dependencyName] = resolvedDep.version;\n } else {\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${resolvedDep.version}\".`,\n shouldOnlyWarn,\n true,\n );\n }\n } else {\n let exactVersion = version.slice(version[1] === '=' ? 2 : 1);\n if (exactVersion.split('.').length < 3) {\n if (exactVersion.split('.').length === 1) {\n exactVersion = `${exactVersion}.0.0`;\n } else {\n exactVersion = `${exactVersion}.0`;\n }\n }\n reportError(\n `Unexpected range dependency in \"${type}\" for \"${dependencyName}\"`,\n `expecting \"${version}\" to be exact \"${exactVersion}\".`,\n shouldOnlyWarn,\n false,\n );\n }\n }\n }\n }\n\n reportNotWarnedFor(reportError, onlyWarnsForCheck);\n}\n","import { createReportError } from '../utils/createReportError';\nimport { getKeys } from '../utils/object';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n deps: Record> | string[]>,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Identical Versions',\n pkgPathName,\n );\n\n getKeys(deps).forEach((depKey) => {\n const version = pkgDependencies[depKey];\n if (!version) {\n reportError(`Unexpected missing ${type} for \"${depKey}\".`);\n return;\n }\n\n const depConfigArrayOrObject = deps[depKey];\n const depConfig = Array.isArray(depConfigArrayOrObject)\n ? { [type]: depConfigArrayOrObject }\n : depConfigArrayOrObject;\n\n getKeys(depConfig).forEach((depKeyType) => {\n const pkgDependenciesType = pkg[depKeyType] || {};\n depConfig[depKeyType]?.forEach((depKeyIdentical) => {\n const value = pkgDependenciesType[depKeyIdentical];\n if (!value) {\n reportError(\n `Missing \"${depKeyIdentical}\" in ${depKeyType}`,\n `it should be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKeyIdentical}\" in ${depKeyType}`,\n `expecting \"${value}\" be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n });\n });\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport function checkIdenticalVersionsThanDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n dependencies: PackageJson[DependencyTypes] = {},\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n `Same Versions than ${depPkg.name}`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const version = dependencies[depKey];\n if (!version) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\".`,\n );\n return;\n }\n\n if (version.startsWith('^') || version.startsWith('~')) {\n reportError(\n `Unexpected range dependency in \"${depPkg.name}\" for \"${depKey}\"`,\n 'perhaps use checkSatisfiesVersionsFromDependency() instead.',\n );\n return;\n }\n\n const value = pkgDependencies[depKey];\n\n if (!value) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `expecting to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n\n if (value !== version) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `expecting \"${value}\" to be \"${version}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n });\n}\n","import semver from 'semver';\nimport semverUtils from 'semver-utils';\nimport type { PackageJson } from 'type-fest';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependencyTypes } from '../utils/packageTypes';\n\nexport interface CheckMinRangeSatisfiesOptions {\n customCreateReportError?: typeof createReportError;\n tryToAutoFix?: boolean;\n}\n\nexport function checkMinRangeSatisfies(\n pkgPathName: string,\n pkg: PackageJson,\n type1: DependencyTypes = 'dependencies',\n type2: DependencyTypes = 'devDependencies',\n {\n tryToAutoFix = false,\n customCreateReportError = createReportError,\n }: CheckMinRangeSatisfiesOptions = {},\n): void {\n const dependencies1 = pkg[type1];\n const dependencies2 = pkg[type2];\n\n if (!dependencies1 || !dependencies2) {\n return;\n }\n\n const reportError = customCreateReportError(\n `\"${type1}\" minimum range satisfies \"${type2}\"`,\n pkgPathName,\n );\n\n for (const [depName, depRange1] of getEntries(dependencies1)) {\n if (depRange1 === '*') continue;\n\n const depRange2 = dependencies2[depName];\n if (!depRange2 || !depRange1) continue;\n\n const minDepRange1 = semver.minVersion(depRange1)?.version || depRange1;\n\n if (\n !semver.satisfies(minDepRange1, depRange2, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n const depRange1Parsed = semverUtils.parseRange(depRange1);\n dependencies1[depName] =\n (depRange1Parsed[0]?.operator || '') +\n (semver.minVersion(depRange2)?.version || depRange2);\n } else {\n reportError(\n `Invalid \"${depName}\" in ${type1}`,\n `\"${depRange1}\" should satisfies \"${depRange2}\" from \"${type2}\".`,\n false,\n true,\n );\n }\n }\n }\n}\n","import { createReportError } from '../utils/createReportError';\nimport type { PackageJson, DependencyTypes } from '../utils/packageTypes';\n\nexport function checkNoDependencies(\n pkg: PackageJson,\n pkgPath: string,\n type: DependencyTypes = 'dependencies',\n moveToSuggestion: DependencyTypes = 'devDependencies',\n customCreateReportError = createReportError,\n): void {\n const pkgDependencies = pkg[type];\n if (!pkgDependencies) return;\n\n const reportError = customCreateReportError('No dependencies', pkgPath);\n reportError(\n `Unexpected ${type}`,\n `you should move them in ${moveToSuggestion}`,\n );\n}\n","import type { GetDependencyPackageJson } from '../utils/createGetDependencyPackageJson';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport type CheckResolutionMessage = (\n depKey: string,\n resolutionExplainedMessage: string,\n checkMessageHelpers: {\n getDependencyPackageJson: GetDependencyPackageJson;\n },\n) => string | undefined;\n\nexport function checkResolutionsHasExplanation(\n pkg: PackageJson,\n pkgPathName: string,\n checkMessage: CheckResolutionMessage,\n getDependencyPackageJson: GetDependencyPackageJson,\n customCreateReportError = createReportError,\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const pkgResolutionsExplained = pkg.resolutionsExplained || {};\n const reportError = customCreateReportError(\n 'Resolutions has explanation',\n pkgPathName,\n );\n\n Object.keys(pkgResolutions).forEach((depKey) => {\n if (!pkgResolutionsExplained[depKey]) {\n reportError(`Missing \"${depKey}\" in resolutionsExplained.`);\n }\n });\n\n Object.keys(pkgResolutionsExplained).forEach((depKey) => {\n if (!pkgResolutions[depKey]) {\n reportError(\n `Found \"${depKey}\" in resolutionsExplained but not in resolutions.`,\n );\n } else {\n const error = checkMessage(depKey, pkgResolutionsExplained[depKey], {\n getDependencyPackageJson,\n });\n if (error) {\n reportError(\n `Invalid message for \"${depKey}\" in resolutionsExplained`,\n `${error}.`,\n );\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { PackageJson } from '../utils/packageTypes';\n\nexport interface CheckResolutionsVersionsMatchOptions {\n tryToAutoFix?: boolean;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkResolutionsVersionsMatch(\n pkg: PackageJson,\n pkgPathName: string,\n {\n tryToAutoFix,\n customCreateReportError = createReportError,\n }: CheckResolutionsVersionsMatchOptions = {},\n): void {\n const pkgResolutions = pkg.resolutions || {};\n const reportError = customCreateReportError(\n 'Resolutions match other dependencies',\n pkgPathName,\n );\n\n Object.entries(pkgResolutions).forEach(([resolutionKey, resolutionValue]) => {\n let depName = resolutionKey;\n let resolutionDepVersion = resolutionValue;\n if (resolutionValue.startsWith('patch:')) {\n const matchResolutionInKey = /^(.+)@npm:(.+)$/.exec(resolutionKey);\n if (matchResolutionInKey) {\n [, depName, resolutionDepVersion] = matchResolutionInKey;\n }\n }\n (['dependencies', 'devDependencies'] as const).forEach((depType) => {\n const range = pkg?.[depType]?.[depName];\n\n if (!range) return;\n\n if (\n !semver.satisfies(resolutionDepVersion, range, {\n includePrerelease: true,\n })\n ) {\n if (tryToAutoFix) {\n pkg[depType]![depName] = resolutionDepVersion;\n } else {\n reportError(\n `Invalid \"${depName}\" in ${depType}`,\n `expecting \"${range}\" be \"${resolutionDepVersion}\" from resolutions.`,\n false,\n true,\n );\n }\n }\n });\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersions(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n dependenciesRanges: Record,\n onlyWarnsForCheck?: OnlyWarnsForCheck,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsOptions = {},\n): void {\n const pkgDependencies = pkg[type] || {};\n const reportError = customCreateReportError(\n 'Satisfies Versions',\n pkgPathName,\n );\n\n Object.entries(dependenciesRanges).forEach(([depKey, range]) => {\n const version = pkgDependencies[depKey];\n\n if (!version) {\n reportError(\n `Missing \"${depKey}\" in ${type}`,\n `should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${depKey}\" in ${type}`,\n `\"${version}\" (in \"${depKey}\") should satisfies \"${range}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n );\n }\n }\n });\n}\n","import type { SemVer } from 'semver-utils';\nimport semverUtils from 'semver-utils';\n\nexport const parse = semverUtils.parse;\nexport const parseRange = semverUtils.parseRange;\n\n// semverUtils.stringify does not support the operator\nfunction stringify(semver: SemVer): string {\n let str = '';\n if (semver.operator) {\n str += semver.operator;\n }\n str += semver.major || '0';\n str += '.';\n str += semver.minor || '0';\n str += '.';\n str += semver.patch || '0';\n if (semver.release) {\n str += `-${semver.release}`;\n }\n if (semver.build) {\n str += `+${semver.build}`;\n }\n return str;\n}\n\nexport function getOperator(range: string): string | null {\n const parsedRange = parseRange(range);\n if (parsedRange.length !== 1) return null;\n return parsedRange[0].operator || '';\n}\n\nexport function changeOperator(\n range: string,\n operator: string | null,\n): string | null {\n if (operator === null) return range;\n const parsedRange = parseRange(range);\n if (parsedRange.length !== 1) return null;\n const parsed = parsedRange[0];\n parsed.operator = operator === '' ? undefined : operator;\n return stringify(parsed);\n}\n\nexport function isExactParsedRange(\n parsedRange: ReturnType,\n): boolean {\n return parsedRange.length === 1 && parsedRange[0].operator === undefined;\n}\n\nexport function isExactRange(range: string): boolean {\n return isExactParsedRange(parseRange(range));\n}\n","import semver from 'semver';\nimport type { ShouldHaveExactVersions } from '../check-package';\nimport { createReportError } from '../utils/createReportError';\nimport type { DependencyTypes, PackageJson } from '../utils/packageTypes';\nimport { changeOperator, getOperator } from '../utils/semverUtils';\nimport type { OnlyWarnsForCheck } from '../utils/warnForUtils';\n\nexport interface CheckSatisfiesVersionsFromDependencyOptions {\n tryToAutoFix?: boolean;\n shouldHaveExactVersions: ShouldHaveExactVersions;\n onlyWarnsForCheck?: OnlyWarnsForCheck;\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsFromDependency(\n pkg: PackageJson,\n pkgPathName: string,\n type: DependencyTypes,\n depKeys: string[],\n depPkg: PackageJson,\n depType: DependencyTypes,\n {\n tryToAutoFix,\n shouldHaveExactVersions,\n onlyWarnsForCheck,\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsFromDependencyOptions,\n): void {\n const pkgDependencies = pkg[type] || {};\n const dependencies = depPkg[depType] || {};\n\n const reportError = customCreateReportError(\n `Satisfies Versions from \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n depKeys.forEach((depKey) => {\n const range = dependencies[depKey];\n\n if (!range) {\n reportError(\n `Unexpected missing dependency \"${depKey}\" in \"${depPkg.name}\"`,\n `config expects \"${depKey}\" in \"${depType}\" of \"${depPkg.name}\".`,\n undefined,\n false,\n );\n return;\n }\n\n const version = pkgDependencies[depKey];\n\n const getAutoFixIfExists = (): string | null | undefined => {\n const existingOperator = version ? getOperator(version) : null;\n const expectedOperator = (() => {\n if (existingOperator !== null) {\n return existingOperator;\n }\n return shouldHaveExactVersions(type) ? '' : null;\n })();\n\n return expectedOperator === ''\n ? semver.minVersion(range)?.version\n : changeOperator(range, expectedOperator);\n };\n\n const autoFix = (versionToApply: string): void => {\n pkg[type] = {\n ...pkg[type],\n [depKey]: versionToApply,\n };\n };\n\n if (!version) {\n const fix = getAutoFixIfExists();\n if (!fix || !tryToAutoFix) {\n reportError(\n `Missing \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `should satisfies \"${range}\" from \"${depPkg.name}\" in \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n !!fix,\n );\n } else {\n autoFix(fix);\n }\n } else {\n const minVersionOfVersion = semver.minVersion(version);\n if (\n !minVersionOfVersion ||\n !semver.satisfies(minVersionOfVersion, range, {\n includePrerelease: true,\n })\n ) {\n const fix = getAutoFixIfExists();\n if (!fix || !tryToAutoFix) {\n reportError(\n `Invalid \"${depKey}\" in \"${type}\" of \"${pkg.name}\"`,\n `\"${version}\" should satisfies \"${range}\" from \"${depPkg.name}\"'s \"${depType}\".`,\n onlyWarnsForCheck?.shouldWarnsFor(depKey),\n !!fix,\n );\n } else {\n autoFix(fix);\n }\n }\n }\n });\n}\n","import semver from 'semver';\nimport { createReportError } from '../utils/createReportError';\nimport { getEntries } from '../utils/object';\nimport type { DependenciesRanges, PackageJson } from '../utils/packageTypes';\n\ninterface CheckSatisfiesVersionsInDependencyOptions {\n customCreateReportError?: typeof createReportError;\n}\n\nexport function checkSatisfiesVersionsInDependency(\n pkgPathName: string,\n depPkg: PackageJson,\n dependenciesRanges: DependenciesRanges,\n {\n customCreateReportError = createReportError,\n }: CheckSatisfiesVersionsInDependencyOptions = {},\n): void {\n const reportError = customCreateReportError(\n `Satisfies Versions In Dependency \"${depPkg.name}\"`,\n pkgPathName,\n );\n\n for (const [dependenciesType, dependenciesTypeRanges] of getEntries(\n dependenciesRanges,\n )) {\n if (!dependenciesTypeRanges) return;\n const dependencies = depPkg[dependenciesType];\n\n for (const [dependencyName, dependencyRange] of getEntries(\n dependenciesTypeRanges,\n )) {\n if (dependencyRange == null) {\n if (dependencies?.[dependencyName]) {\n reportError(\n `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n 'it should not be present',\n );\n }\n } else if (!dependencies) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependenciesType}\" is missing in \"${depPkg.name}\"`,\n );\n } else if (!dependencies[dependencyName]) {\n reportError(\n `Missing \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencyName}\" is missing in ${dependenciesType}`,\n );\n } else if (\n !semver.satisfies(dependencies[dependencyName], dependencyRange, {\n includePrerelease: true,\n }) &&\n !semver.intersects(dependencies[dependencyName], dependencyRange, {\n includePrerelease: true,\n })\n ) {\n reportError(\n `Invalid \"${dependencyName}\" in ${dependenciesType} of \"${depPkg.name}\"`,\n `\"${dependencies[dependencyName]}\" does not satisfies \"${dependencyRange}\"`,\n );\n }\n }\n }\n}\n","import { readFileSync, writeFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { resolve as importResolve } from 'import-meta-resolve';\nimport type { PackageJson } from './packageTypes';\n\nexport function readPkgJson(packagePath: string): PackageJson {\n return JSON.parse(readFileSync(packagePath, 'utf8')) as PackageJson;\n}\n\nexport function writePkgJson(packagePath: string, pkg: PackageJson): void {\n writeFileSync(packagePath, `${JSON.stringify(pkg, null, 2)}\\n`);\n}\n\n/** @internal */\nexport function internalLoadPackageJsonFromNodeModules(\n pkgDepName: string,\n pkgDirname: string,\n): PackageJson {\n const packageUrl = importResolve(\n `${pkgDepName}/package.json`,\n `file://${pkgDirname}/package.json`,\n );\n return readPkgJson(fileURLToPath(packageUrl));\n}\n","import type { PackageJson } from './packageTypes';\nimport {\n internalLoadPackageJsonFromNodeModules,\n readPkgJson,\n} from './pkgJsonUtils';\n\nexport type GetDependencyPackageJson = (pkgDepName: string) => PackageJson;\n\ntype NodeModulesPackagePathCache = Map;\n\ninterface CreateGetDependencyPackageJsonOptions {\n pkgDirname: string;\n nodeModulesPackagePathCache?: NodeModulesPackagePathCache;\n /** @internal */\n internalCustomLoadPackageJsonFromNodeModules?: typeof internalLoadPackageJsonFromNodeModules;\n /** @internal */\n internalReadPkgJson?: typeof readPkgJson;\n}\n\nexport function createGetDependencyPackageJson({\n pkgDirname,\n nodeModulesPackagePathCache = new Map(),\n internalCustomLoadPackageJsonFromNodeModules = internalLoadPackageJsonFromNodeModules,\n internalReadPkgJson = readPkgJson,\n}: CreateGetDependencyPackageJsonOptions): GetDependencyPackageJson {\n return (pkgDepName) => {\n const existing = nodeModulesPackagePathCache.get(pkgDepName);\n if (existing) return existing;\n let pkg: PackageJson;\n if (pkgDepName.startsWith('.')) {\n const packagePath = `${pkgDirname}/${pkgDepName}/package.json`;\n pkg = internalReadPkgJson(packagePath);\n } else {\n try {\n pkg = internalCustomLoadPackageJsonFromNodeModules(\n pkgDepName,\n pkgDirname,\n );\n } catch (error: unknown) {\n if (!(error instanceof Error)) throw error;\n\n if (\n (error as NodeJS.ErrnoException).code !==\n 'ERR_PACKAGE_PATH_NOT_EXPORTED'\n ) {\n throw error;\n }\n\n const match = / in (.*[/\\\\]package\\.json)\\s+imported from/.exec(\n error.message,\n );\n\n if (match) {\n const [, matchPackageJson] = match;\n pkg = internalReadPkgJson(matchPackageJson);\n } else {\n throw error;\n }\n }\n }\n nodeModulesPackagePathCache.set(pkgDepName, pkg);\n return pkg;\n };\n}\n","import { getEntries } from './object';\n\nexport type OnlyWarnsFor = string[];\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type OnlyWarnsForDependencyMapping = Record;\nexport type OnlyWarnsForOptionalDependencyMapping =\n | OnlyWarnsFor\n | OnlyWarnsForDependencyMapping\n | undefined;\n\nexport interface OnlyWarnsForCheck {\n configName: string;\n getNotWarnedFor: () => string[];\n shouldWarnsFor: (dependencyName: string) => boolean;\n}\n\nexport interface OnlyWarnsForMappingCheck {\n configName: string;\n getNotWarnedFor: () => Record;\n createFor: (dependencyName: string) => OnlyWarnsForCheck;\n}\n\nexport const createOnlyWarnsForArrayCheck = (\n configName: string,\n onlyWarnsFor: OnlyWarnsFor = [],\n): OnlyWarnsForCheck => {\n const notWarnedFor = new Set(onlyWarnsFor);\n return {\n configName,\n getNotWarnedFor: () => [...notWarnedFor],\n shouldWarnsFor(dependencyName) {\n if (onlyWarnsFor.includes(dependencyName)) {\n notWarnedFor.delete(dependencyName);\n return true;\n }\n return false;\n },\n };\n};\n\nconst isMapping = (\n onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): onlyWarnsFor is OnlyWarnsForDependencyMapping => {\n return typeof onlyWarnsFor === 'object' && !Array.isArray(onlyWarnsFor);\n};\n\nexport const createOnlyWarnsForMappingCheck = (\n configName: string,\n onlyWarnsFor: OnlyWarnsForOptionalDependencyMapping,\n): OnlyWarnsForMappingCheck => {\n if (isMapping(onlyWarnsFor)) {\n const notWarnedFor = Object.fromEntries(\n getEntries(onlyWarnsFor).map(([entryKey, entryValue]) => [\n entryKey,\n new Set(entryValue),\n ]),\n );\n return {\n configName,\n getNotWarnedFor: () =>\n Object.fromEntries(\n getEntries(notWarnedFor)\n .filter(([key, set]) => set.size > 0)\n .map(([key, set]) => [key, [...set]]),\n ),\n createFor(dependencyNameLevel1) {\n return {\n configName,\n getNotWarnedFor() {\n throw new Error('Invalid call to getNotWarnedFor()');\n },\n shouldWarnsFor(dependencyName) {\n if (onlyWarnsFor['*']?.includes(dependencyName)) {\n notWarnedFor['*'].delete(dependencyName);\n return true;\n }\n if (onlyWarnsFor[dependencyNameLevel1]?.includes(dependencyName)) {\n notWarnedFor[dependencyNameLevel1].delete(dependencyName);\n return true;\n }\n return false;\n },\n };\n },\n };\n }\n\n const arrayOnlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n configName,\n onlyWarnsFor,\n );\n return {\n configName,\n getNotWarnedFor: (): Record => {\n const notWarnedFor = arrayOnlyWarnsForCheck.getNotWarnedFor();\n if (notWarnedFor.length > 0) {\n return { '*': notWarnedFor };\n }\n return {};\n },\n createFor() {\n return {\n configName,\n getNotWarnedFor() {\n throw new Error('Invalid call to getNotWarnedFor()');\n },\n shouldWarnsFor(dependencyName) {\n return arrayOnlyWarnsForCheck.shouldWarnsFor(dependencyName);\n },\n };\n },\n };\n};\n","import path from 'node:path';\nimport util from 'node:util';\nimport { checkDirectDuplicateDependencies } from './checks/checkDirectDuplicateDependencies';\nimport { checkDirectPeerDependencies } from './checks/checkDirectPeerDependencies';\nimport { checkExactVersions } from './checks/checkExactVersions';\nimport { checkIdenticalVersions } from './checks/checkIdenticalVersions';\nimport { checkIdenticalVersionsThanDependency } from './checks/checkIdenticalVersionsThanDependency';\nimport { checkMinRangeSatisfies } from './checks/checkMinRangeSatisfies';\nimport { checkNoDependencies } from './checks/checkNoDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsHasExplanation } from './checks/checkResolutionsHasExplanation';\nimport { checkResolutionsVersionsMatch } from './checks/checkResolutionsVersionsMatch';\nimport { checkSatisfiesVersions } from './checks/checkSatisfiesVersions';\nimport { checkSatisfiesVersionsFromDependency } from './checks/checkSatisfiesVersionsFromDependency';\nimport { checkSatisfiesVersionsInDependency } from './checks/checkSatisfiesVersionsInDependency';\nimport type { GetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { createGetDependencyPackageJson } from './utils/createGetDependencyPackageJson';\nimport { displayConclusion } from './utils/createReportError';\nimport { getEntries } from './utils/object';\nimport type {\n DependenciesRanges,\n DependencyName,\n DependencyTypes,\n PackageJson,\n} from './utils/packageTypes';\nimport { readPkgJson, writePkgJson } from './utils/pkgJsonUtils';\nimport type {\n OnlyWarnsForOptionalDependencyMapping,\n OnlyWarnsFor,\n OnlyWarnsForDependencyMapping,\n} from './utils/warnForUtils';\nimport {\n createOnlyWarnsForArrayCheck,\n createOnlyWarnsForMappingCheck,\n} from './utils/warnForUtils';\n\nexport interface CreateCheckPackageOptions {\n packageDirectoryPath?: string;\n isLibrary?: boolean | ((pkg: PackageJson) => boolean);\n /** @internal */\n internalWorkspacePkgDirectoryPath?: string;\n}\n\nexport interface CheckDirectPeerDependenciesOptions {\n missingOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n invalidOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalMissingConfigName?: string;\n internalInvalidConfigName?: string;\n}\n\nexport interface CheckDirectDuplicateDependenciesOptions {\n onlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n internalConfigName?: string;\n}\n\nexport interface OnlyWarnsForInPackageCheckPackageRecommendedOption {\n exactVersions: OnlyWarnsFor;\n}\n\nexport interface OnlyWarnsForInDependencyCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsFor;\n missingPeerDependency: OnlyWarnsFor;\n invalidPeerDependencyVersion: OnlyWarnsFor;\n}\n\nexport type OnlyWarnsForInDependenciesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/sort-type-constituents\n '*' | string,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption\n>;\n\nexport interface CheckRecommendedOptions {\n /** default is true for libraries, false otherwise */\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsForInPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n /** function to check the value in the \"resolutionExplained\" key in package.json */\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckExactVersionsOptions {\n allowRangeVersionsInDependencies?: boolean;\n onlyWarnsFor?: OnlyWarnsFor;\n /** @internal */\n internalExactVersionsIgnore?: OnlyWarnsFor;\n}\n\nexport interface CheckPackageApiRunOptions {\n /** @internal */\n skipDisplayConclusion?: boolean;\n}\n\nexport interface CheckPackageApi {\n run: (options?: CheckPackageApiRunOptions) => Promise;\n\n /** @internal */\n pkg: PackageJson;\n /** @internal */\n pkgDirname: string;\n /** @internal */\n pkgPathName: string;\n /** @internal */\n isPkgLibrary: boolean;\n /** @internal */\n getDependencyPackageJson: GetDependencyPackageJson;\n\n checkExactVersions: (options?: CheckExactVersionsOptions) => CheckPackageApi;\n\n checkResolutionsVersionsMatch: () => CheckPackageApi;\n\n checkExactDevVersions: (\n options?: CheckExactVersionsOptions,\n ) => CheckPackageApi;\n\n checkNoDependencies: (\n type?: DependencyTypes,\n moveToSuggestion?: DependencyTypes,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectPeerDependencies({\n * invalidOnlyWarnsFor: ['semver'],\n * })\n * ```\n */\n checkDirectPeerDependencies: (\n options?: CheckDirectPeerDependenciesOptions,\n ) => CheckPackageApi;\n\n /**\n * @example\n * ```\n * .checkDirectDuplicateDependencies({\n * invalidOnlyWarnsFor: { '*': 'type-fest' },\n * })\n * ```\n */\n checkDirectDuplicateDependencies: (\n options?: CheckDirectDuplicateDependenciesOptions,\n ) => CheckPackageApi;\n\n checkResolutionsHasExplanation: (\n checkMessage?: CheckResolutionMessage,\n ) => CheckPackageApi;\n\n checkRecommended: (options?: CheckRecommendedOptions) => CheckPackageApi;\n\n /**\n * @example\n * Check that your package.json contains the same version of @babel/core than react-scripts, both in resolutions and devDependencies\n * ```\n * .checkIdenticalVersionsThanDependency('react-scripts', {\n * resolutions: ['@babel/core'],\n * devDependencies: ['@babel/core'],\n * })\n * ```\n */\n checkIdenticalVersionsThanDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkIdenticalVersionsThanDevDependencyOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range passed in config\n *\n * @example\n * ```\n * .checkSatisfiesVersions({\n * devDependencies: {\n * eslint: '^8.0.0'\n * },\n * })\n * ```\n */\n checkSatisfiesVersions: (\n dependencies: Partial<\n Record>\n >,\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies specifically satisfies the range set in another dependencies\n * @example\n * ```\n * .checkSatisfiesVersionsFromDependency('@pob/eslint-config-typescript', {\n * devDependencies: [\n * '@typescript-eslint/eslint-plugin',\n * '@typescript-eslint/parser',\n * ],\n * })\n * ```\n */\n checkSatisfiesVersionsFromDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n checkSatisfiesVersionsInDevDependenciesOfDependency: (\n depName: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check that your package.json dependencies have the exact same version that another dependency also present in your package.json\n * @example\n * The react-dom version should match react, so this check will ensure it does\n * ```\n * .checkIdenticalVersions({\n * dependencies: {\n * react: {\n * dependencies: ['react-dom'],\n * devDependencies: ['react-test-renderer'],\n * },\n * },\n * })\n * ```\n */\n checkIdenticalVersions: (dependencies: {\n resolutions?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }) => CheckPackageApi;\n\n checkSatisfiesVersionsBetweenDependencies: (\n depName1: string,\n depName2: string,\n dependencies: {\n resolutions?: string[];\n dependencies?: string[];\n devDependencies?: string[];\n },\n ) => CheckPackageApi;\n\n /**\n * Check versions in a dependency\n * Also useable to check if a dependency is not present\n *\n * @example\n * Checking if `@lerna/version` has no dependency `@nrwl/devkit`\n * ```\n * .checkSatisfiesVersionsInDependency('@lerna/version', {\n * dependencies: {\n * '@nrwl/devkit': null,\n * },\n * })\n * ```\n */\n checkSatisfiesVersionsInDependency: (\n depName: string,\n dependenciesRanges: DependenciesRanges,\n ) => CheckPackageApi;\n\n checkMinRangeDependenciesSatisfiesDevDependencies: () => CheckPackageApi;\n checkMinRangePeerDependenciesSatisfiesDependencies: () => CheckPackageApi;\n}\n\nexport type ShouldHaveExactVersions = (depType: DependencyTypes) => boolean;\n\nexport function createCheckPackage({\n packageDirectoryPath = '.',\n internalWorkspacePkgDirectoryPath,\n isLibrary = false,\n}: CreateCheckPackageOptions = {}): CheckPackageApi {\n const pkgDirname = path.resolve(packageDirectoryPath);\n const pkgPath = `${pkgDirname}/package.json`;\n const pkgPathName = `${packageDirectoryPath}/package.json`;\n const pkg = readPkgJson(pkgPath);\n const copyPkg: PackageJson = JSON.parse(JSON.stringify(pkg)) as PackageJson;\n const isPkgLibrary =\n typeof isLibrary === 'function' ? isLibrary(pkg) : isLibrary;\n const shouldHaveExactVersions: ShouldHaveExactVersions = (depType) =>\n !isPkgLibrary ? true : depType === 'devDependencies';\n\n let tryToAutoFix = false;\n\n if (process.argv.slice(2).includes('--fix')) {\n tryToAutoFix = true;\n }\n\n const writePackageIfChanged = (): void => {\n if (!tryToAutoFix) return;\n if (util.isDeepStrictEqual(pkg, copyPkg)) return;\n writePkgJson(pkgPath, pkg);\n };\n\n const getDependencyPackageJson = createGetDependencyPackageJson({\n pkgDirname,\n });\n\n let runCalled = false;\n\n if (!internalWorkspacePkgDirectoryPath) {\n process.on('beforeExit', () => {\n if (!runCalled) {\n throw new Error('Call .run() and await the result.');\n }\n });\n }\n\n class Job {\n name: string;\n\n fn: () => Promise;\n\n constructor(name: string, fn: () => Promise) {\n this.name = name;\n this.fn = fn;\n }\n\n async run(): Promise {\n try {\n await this.fn();\n } catch (error) {\n throw new Error(`${this.name} failed: ${(error as Error).message}`);\n }\n }\n }\n\n const jobs: Job[] = [];\n\n return {\n async run({\n skipDisplayConclusion = false,\n }: CheckPackageApiRunOptions = {}) {\n runCalled = true;\n // TODO parallel\n for (const job of jobs) {\n await job.run();\n }\n writePackageIfChanged();\n if (!skipDisplayConclusion) {\n displayConclusion();\n }\n },\n\n pkg,\n pkgDirname,\n pkgPathName,\n isPkgLibrary,\n getDependencyPackageJson,\n checkExactVersions({\n onlyWarnsFor,\n internalExactVersionsIgnore,\n allowRangeVersionsInDependencies = true,\n } = {}) {\n jobs.push(\n new Job(this.checkExactVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(\n pkg,\n pkgPathName,\n !allowRangeVersionsInDependencies\n ? ['dependencies', 'devDependencies', 'resolutions']\n : ['devDependencies', 'resolutions'],\n {\n onlyWarnsForCheck,\n internalExactVersionsIgnore,\n getDependencyPackageJson,\n tryToAutoFix,\n },\n );\n }),\n );\n return this;\n },\n\n checkResolutionsVersionsMatch() {\n checkResolutionsVersionsMatch(pkg, pkgPathName, {\n tryToAutoFix,\n });\n return this;\n },\n\n checkExactDevVersions({ onlyWarnsFor } = {}) {\n jobs.push(\n new Job(this.checkExactDevVersions.name, async () => {\n const onlyWarnsForCheck = createOnlyWarnsForArrayCheck(\n 'checkExactDevVersions.onlyWarnsFor',\n onlyWarnsFor,\n );\n await checkExactVersions(pkg, pkgPathName, ['devDependencies'], {\n onlyWarnsForCheck,\n tryToAutoFix,\n getDependencyPackageJson,\n });\n }),\n );\n return this;\n },\n\n checkNoDependencies(\n type = 'dependencies',\n moveToSuggestion = 'devDependencies',\n ) {\n checkNoDependencies(pkg, pkgPathName, type, moveToSuggestion);\n return this;\n },\n\n checkDirectPeerDependencies({\n missingOnlyWarnsFor,\n invalidOnlyWarnsFor,\n internalMissingConfigName = 'missingOnlyWarnsFor',\n internalInvalidConfigName = 'invalidOnlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectPeerDependencies.name, async () => {\n const missingOnlyWarnsForCheck = createOnlyWarnsForMappingCheck(\n internalMissingConfigName,\n missingOnlyWarnsFor,\n );\n const invalidOnlyWarnsForCheck =\n internalInvalidConfigName === internalMissingConfigName\n ? missingOnlyWarnsForCheck\n : createOnlyWarnsForMappingCheck(\n internalInvalidConfigName,\n invalidOnlyWarnsFor,\n );\n await checkDirectPeerDependencies(\n isPkgLibrary,\n pkg,\n pkgPathName,\n getDependencyPackageJson,\n missingOnlyWarnsForCheck,\n invalidOnlyWarnsForCheck,\n );\n }),\n );\n return this;\n },\n\n checkDirectDuplicateDependencies({\n onlyWarnsFor,\n internalConfigName = 'onlyWarnsFor',\n } = {}) {\n jobs.push(\n new Job(this.checkDirectDuplicateDependencies.name, async () => {\n await checkDirectDuplicateDependencies(\n pkg,\n pkgPathName,\n isPkgLibrary,\n 'dependencies',\n getDependencyPackageJson,\n createOnlyWarnsForMappingCheck(internalConfigName, onlyWarnsFor),\n );\n }),\n );\n return this;\n },\n\n checkResolutionsHasExplanation(\n checkMessage: CheckResolutionMessage = (depKey, message) => undefined,\n ) {\n checkResolutionsHasExplanation(\n pkg,\n pkgPathName,\n checkMessage,\n getDependencyPackageJson,\n );\n return this;\n },\n\n checkRecommended({\n onlyWarnsForInPackage,\n onlyWarnsForInDependencies,\n allowRangeVersionsInDependencies = isPkgLibrary,\n internalExactVersionsIgnore,\n checkResolutionMessage,\n } = {}) {\n let internalMissingPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalInvalidPeerDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n let internalDirectDuplicateDependenciesOnlyWarnsFor: OnlyWarnsForOptionalDependencyMapping =\n {};\n\n const exactVersionsOnlyWarnsFor =\n onlyWarnsForInPackage?.exactVersions || [];\n\n if (onlyWarnsForInDependencies) {\n internalDirectDuplicateDependenciesOnlyWarnsFor = {};\n internalMissingPeerDependenciesOnlyWarnsFor = {};\n internalInvalidPeerDependenciesOnlyWarnsFor = {};\n\n getEntries(onlyWarnsForInDependencies).forEach(\n ([dependencyNameOrSpecialKey, onlyWarnsForValue]) => {\n if (onlyWarnsForValue.duplicateDirectDependency) {\n (\n internalDirectDuplicateDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.duplicateDirectDependency;\n }\n if (onlyWarnsForValue.missingPeerDependency) {\n (\n internalMissingPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.missingPeerDependency;\n }\n if (onlyWarnsForValue.invalidPeerDependencyVersion) {\n (\n internalInvalidPeerDependenciesOnlyWarnsFor as OnlyWarnsForDependencyMapping\n )[dependencyNameOrSpecialKey] =\n onlyWarnsForValue.invalidPeerDependencyVersion;\n }\n },\n );\n }\n\n this.checkExactVersions({\n allowRangeVersionsInDependencies,\n onlyWarnsFor: exactVersionsOnlyWarnsFor,\n internalExactVersionsIgnore,\n });\n\n this.checkResolutionsVersionsMatch();\n this.checkResolutionsHasExplanation(checkResolutionMessage);\n\n this.checkDirectPeerDependencies({\n missingOnlyWarnsFor: internalMissingPeerDependenciesOnlyWarnsFor,\n invalidOnlyWarnsFor: internalInvalidPeerDependenciesOnlyWarnsFor,\n internalMissingConfigName:\n 'onlyWarnsForInDependencies.missingPeerDependency',\n internalInvalidConfigName:\n 'onlyWarnsForInDependencies.invalidPeerDependencyVersion',\n });\n\n this.checkDirectDuplicateDependencies({\n onlyWarnsFor: internalDirectDuplicateDependenciesOnlyWarnsFor,\n internalConfigName:\n 'onlyWarnsForInDependencies.duplicateDirectDependency',\n });\n\n if (isPkgLibrary) {\n this.checkMinRangeDependenciesSatisfiesDevDependencies();\n this.checkMinRangePeerDependenciesSatisfiesDependencies();\n }\n\n return this;\n },\n\n checkIdenticalVersionsThanDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkIdenticalVersionsThanDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.dependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkIdenticalVersionsThanDevDependencyOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (dependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n if (devDependencies) {\n checkIdenticalVersionsThanDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n depPkg.devDependencies,\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersions(dependencies) {\n Object.entries(dependencies).forEach(\n ([dependencyType, dependenciesRanges]) => {\n checkSatisfiesVersions(\n pkg,\n pkgPathName,\n dependencyType as DependencyTypes,\n dependenciesRanges,\n );\n },\n );\n return this;\n },\n\n checkSatisfiesVersionsFromDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsFromDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n }),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDevDependenciesOfDependency(\n depName,\n { resolutions, dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsInDevDependenciesOfDependency.name,\n async () => {\n const depPkg = getDependencyPackageJson(depName);\n if (resolutions) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'resolutions',\n resolutions,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg,\n 'devDependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkIdenticalVersions({ resolutions, dependencies, devDependencies }) {\n if (resolutions) {\n checkIdenticalVersions(pkg, pkgPathName, 'resolutions', resolutions);\n }\n if (dependencies) {\n checkIdenticalVersions(pkg, pkgPathName, 'dependencies', dependencies);\n }\n if (devDependencies) {\n checkIdenticalVersions(\n pkg,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n );\n }\n return this;\n },\n\n checkSatisfiesVersionsBetweenDependencies(\n depName1,\n depName2,\n { dependencies, devDependencies },\n ) {\n jobs.push(\n new Job(\n this.checkSatisfiesVersionsBetweenDependencies.name,\n async () => {\n const [depPkg1, depPkg2] = await Promise.all([\n getDependencyPackageJson(depName1),\n getDependencyPackageJson(depName2),\n ]);\n\n if (dependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'dependencies',\n dependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n if (devDependencies) {\n checkSatisfiesVersionsFromDependency(\n depPkg2,\n pkgPathName,\n 'devDependencies',\n devDependencies,\n depPkg1,\n 'dependencies',\n { tryToAutoFix, shouldHaveExactVersions },\n );\n }\n },\n ),\n );\n return this;\n },\n\n checkSatisfiesVersionsInDependency(depName, dependenciesRanges) {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n const depPkg = getDependencyPackageJson(depName);\n checkSatisfiesVersionsInDependency(\n pkgPathName,\n depPkg,\n dependenciesRanges,\n );\n }),\n );\n return this;\n },\n\n checkMinRangeDependenciesSatisfiesDevDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'dependencies',\n 'devDependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n\n checkMinRangePeerDependenciesSatisfiesDependencies() {\n jobs.push(\n new Job(this.checkSatisfiesVersionsInDependency.name, async () => {\n checkMinRangeSatisfies(\n pkgPathName,\n pkg,\n 'peerDependencies',\n 'dependencies',\n { tryToAutoFix },\n );\n }),\n );\n return this;\n },\n };\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { globSync } from 'glob';\nimport type { Except } from 'type-fest';\nimport type {\n CreateCheckPackageOptions,\n CheckPackageApi,\n OnlyWarnsForInDependenciesCheckPackageRecommendedOption,\n OnlyWarnsForInDependencyCheckPackageRecommendedOption,\n OnlyWarnsForInPackageCheckPackageRecommendedOption,\n} from './check-package';\nimport { createCheckPackage } from './check-package';\nimport { checkDuplicateDependencies } from './checks/checkDuplicateDependencies';\nimport type { CheckResolutionMessage } from './checks/checkResolutionsHasExplanation';\nimport {\n createReportError,\n displayConclusion,\n reportNotWarnedForMapping,\n} from './utils/createReportError';\nimport type { PackageJson } from './utils/packageTypes';\nimport type { OnlyWarnsForOptionalDependencyMapping } from './utils/warnForUtils';\nimport { createOnlyWarnsForMappingCheck } from './utils/warnForUtils';\n\ninterface OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n extends OnlyWarnsForInPackageCheckPackageRecommendedOption {\n duplicateDirectDependency: OnlyWarnsForInDependencyCheckPackageRecommendedOption['duplicateDirectDependency'];\n}\n\ntype OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption = Record<\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/sort-type-constituents\n '*' | string,\n OnlyWarnsForInMonorepoPackageCheckPackageRecommendedOption\n>;\n\ntype OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption =\n Record;\n\nexport interface CheckPackageWithWorkspacesRecommendedOptions {\n allowRangeVersionsInLibraries?: boolean;\n monorepoDirectDuplicateDependenciesOnlyWarnsFor?: OnlyWarnsForOptionalDependencyMapping;\n onlyWarnsForInRootPackage?: OnlyWarnsForInPackageCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackages?: OnlyWarnsForInMonorepoPackagesCheckPackageRecommendedOption;\n onlyWarnsForInRootDependencies?: OnlyWarnsForInDependenciesCheckPackageRecommendedOption;\n onlyWarnsForInMonorepoPackagesDependencies?: OnlyWarnsForInMonorepoPackagesDependenciesCheckPackageRecommendedOption;\n checkResolutionMessage?: CheckResolutionMessage;\n}\n\nexport interface CheckPackageWithWorkspacesApi {\n run: () => Promise;\n\n checkRecommended: (\n options?: CheckPackageWithWorkspacesRecommendedOptions,\n ) => CheckPackageWithWorkspacesApi;\n\n forRoot: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n forEach: (\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n for: (\n id: string,\n callback: (checkPackage: CheckPackageApi) => void,\n ) => CheckPackageWithWorkspacesApi;\n}\n\ninterface CreateCheckPackageWithWorkspacesOptions\n extends Except {\n isLibrary?: (pkg: PackageJson) => boolean;\n}\n\nexport function createCheckPackageWithWorkspaces(\n createCheckPackageOptions: CreateCheckPackageWithWorkspacesOptions = {},\n): CheckPackageWithWorkspacesApi {\n const checkPackage = createCheckPackage({\n ...createCheckPackageOptions,\n isLibrary: false,\n });\n const { pkg, pkgDirname } = checkPackage;\n\n const pkgWorkspaces: string[] | undefined =\n pkg.workspaces && !Array.isArray(pkg.workspaces)\n ? pkg.workspaces.packages\n : pkg.workspaces;\n\n if (!pkgWorkspaces) {\n throw new Error('Package is missing \"workspaces\"');\n }\n\n const workspacePackagesPaths: string[] = [];\n\n if (pkgWorkspaces) {\n pkgWorkspaces.forEach((pattern) => {\n const match = globSync(pattern, { cwd: pkgDirname });\n match.forEach((pathMatch) => {\n if (!fs.existsSync(path.join(pathMatch, 'package.json'))) {\n console.log(\n `Ignored potential directory, no package.json found: ${pathMatch}`,\n );\n return;\n }\n const subPkgDirectoryPath = path.relative(process.cwd(), pathMatch);\n workspacePackagesPaths.push(subPkgDirectoryPath);\n });\n });\n }\n\n const checksWorkspaces = new Map(\n workspacePackagesPaths.map((subPkgDirectoryPath) => {\n const checkPkg = createCheckPackage({\n ...createCheckPackageOptions,\n packageDirectoryPath: subPkgDirectoryPath,\n internalWorkspacePkgDirectoryPath:\n createCheckPackageOptions.packageDirectoryPath || '.',\n });\n return [checkPkg.pkg.name, checkPkg];\n }),\n );\n\n return {\n async run() {\n for (const checksWorkspace of [\n checkPackage,\n ...checksWorkspaces.values(),\n ]) {\n await checksWorkspace.run({ skipDisplayConclusion: true });\n }\n\n displayConclusion();\n },\n\n checkRecommended({\n allowRangeVersionsInLibraries = true,\n onlyWarnsForInRootPackage,\n onlyWarnsForInMonorepoPackages,\n onlyWarnsForInRootDependencies,\n onlyWarnsForInMonorepoPackagesDependencies = {},\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n checkResolutionMessage,\n } = {}) {\n checkPackage.checkNoDependencies();\n checkPackage.checkRecommended({\n onlyWarnsForInPackage: onlyWarnsForInRootPackage,\n onlyWarnsForInDependencies: onlyWarnsForInRootDependencies,\n checkResolutionMessage,\n });\n\n const monorepoDirectDuplicateDependenciesOnlyWarnsForCheck =\n createOnlyWarnsForMappingCheck(\n 'monorepoDirectDuplicateDependenciesOnlyWarnsFor',\n monorepoDirectDuplicateDependenciesOnlyWarnsFor,\n );\n\n const previousCheckedWorkspaces = new Map();\n checksWorkspaces.forEach((checkSubPackage, id) => {\n checkSubPackage.checkRecommended({\n allowRangeVersionsInDependencies: checkSubPackage.isPkgLibrary\n ? allowRangeVersionsInLibraries\n : false,\n onlyWarnsForInPackage: onlyWarnsForInMonorepoPackages\n ? {\n ...onlyWarnsForInMonorepoPackages['*'],\n ...onlyWarnsForInMonorepoPackages[checkSubPackage.pkg.name],\n }\n : undefined,\n onlyWarnsForInDependencies: {\n ...onlyWarnsForInMonorepoPackagesDependencies['*'],\n ...onlyWarnsForInMonorepoPackagesDependencies[\n checkSubPackage.pkg.name\n ],\n },\n internalExactVersionsIgnore: [...checksWorkspaces.keys()],\n checkResolutionMessage,\n });\n\n const reportMonorepoDDDError = createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkSubPackage.pkgPathName,\n );\n // Root\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n // previous packages\n previousCheckedWorkspaces.forEach((previousCheckSubPackage) => {\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'devDependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'dependencies',\n ['dependencies', 'devDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n checkDuplicateDependencies(\n reportMonorepoDDDError,\n checkSubPackage.pkg,\n checkSubPackage.isPkgLibrary,\n 'peerDependencies',\n ['peerDependencies'],\n previousCheckSubPackage.pkg,\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck.createFor(\n checkSubPackage.pkg.name,\n ),\n );\n });\n\n previousCheckedWorkspaces.set(id, checkSubPackage);\n });\n reportNotWarnedForMapping(\n createReportError(\n 'Monorepo Direct Duplicate Dependencies',\n checkPackage.pkgPathName,\n ),\n monorepoDirectDuplicateDependenciesOnlyWarnsForCheck,\n );\n\n return this;\n },\n\n forRoot(callback) {\n callback(checkPackage);\n return this;\n },\n\n forEach(callback) {\n checksWorkspaces.forEach((checkSubPackage) => {\n callback(checkSubPackage);\n });\n return this;\n },\n\n for(id, callback) {\n const packageCheck = checksWorkspaces.get(id);\n if (!packageCheck) {\n throw new Error(\n `Invalid package name: ${id}. Known package names: \"${[\n ...checksWorkspaces.keys(),\n ].join('\",\"')}\"`,\n );\n }\n callback(packageCheck);\n return this;\n },\n };\n}\n"],"names":["importResolve"],"mappings":"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"} \ No newline at end of file diff --git a/jest.config.json b/jest.config.json deleted file mode 100644 index c2396f5d..00000000 --- a/jest.config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "cacheDirectory": "./node_modules/.cache/jest", - "testMatch": [ - "/src/**/__tests__/**/*.ts", - "/src/**/*.test.ts" - ], - "collectCoverageFrom": ["src/**/*.ts"], - "moduleFileExtensions": ["ts", "js", "json"], - "automock": false, - "clearMocks": true, - "setupFiles": ["/src/test-setup.ts"], - "extensionsToTreatAsEsm": [".ts"], - "moduleNameMapper": { - "#(.*)": "/node_modules/$1" - } -} diff --git a/package.json b/package.json index a54c39ec..ed48779a 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "build:definitions": "tsc -p tsconfig.json", "checks": "node scripts/check-package.js", "clean": "yarn clean:build", - "clean:build": "pob-babel-clean-out dist", + "clean:build": "pob-esbuild-clean-out dist", "generate:api": "typedoc --tsconfig tsconfig.doc.json", "generate:test-coverage": "rm -Rf docs/coverage/ ; NODE_ENV=production BABEL_ENV=test jest --coverage --coverageReporters=pob-lcov-reporter --coverageDirectory=docs/coverage/", "lint": "yarn run lint:prettier && tsc && yarn run lint:eslint", @@ -45,11 +45,11 @@ "lint:prettier": "pob-root-prettier --check .", "lint:prettier:fix": "pob-root-prettier --write .", "postinstallDev": "pob-root-postinstall", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage --coverageReporters=json --coverageReporters=text", - "test:coverage:json": "NODE_OPTIONS=--experimental-vm-modules jest --coverage --coverageReporters=json", - "test:coverage:lcov": "NODE_OPTIONS=--experimental-vm-modules jest --coverage --coverageReporters=lcov", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", + "test": "vitest", + "test:coverage": "POB_VITEST_COVERAGE=json,text vitest", + "test:coverage:json": "POB_VITEST_COVERAGE=json vitest", + "test:coverage:lcov": "POB_VITEST_COVERAGE=lcovvitest", + "test:watch": "vitest --watch", "watch": "yarn clean:build && rollup --config rollup.config.mjs --watch" }, "commitlint": { @@ -58,7 +58,9 @@ ] }, "pob": { - "babelEnvs": [ + "bundler": "rollup-esbuild", + "typescript": true, + "envs": [ { "target": "node", "version": "18" @@ -78,19 +80,17 @@ "type-fest": "^4.0.0" }, "devDependencies": { - "@babel/core": "7.24.4", "@pob/commitlint-config": "6.3.1", "@pob/eslint-config": "55.2.1", "@pob/eslint-config-typescript": "55.2.1", + "@pob/rollup-esbuild": "1.0.1", "@pob/root": "9.3.2", - "@types/jest": "29.5.12", "@types/semver": "7.5.6", "@types/semver-utils": "1.1.3", "eslint": "8.57.0", - "jest": "29.7.0", - "pob-babel": "38.1.0", "semver": "7.5.4", "typedoc": "0.25.13", - "typescript": "5.4.5" + "typescript": "5.4.5", + "vitest": "1.5.2" } } diff --git a/rollup.config.mjs b/rollup.config.mjs index bd9f8055..cefeda7c 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,6 +1,6 @@ import { dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; -import createRollupConfig from 'pob-babel/createRollupConfig.js'; +import createRollupConfig from '@pob/rollup-esbuild/createRollupConfig.js'; export default createRollupConfig({ cwd: dirname(fileURLToPath(import.meta.url)), diff --git a/scripts/check-package.js b/scripts/check-package.js index b70223d7..80a8b3ac 100644 --- a/scripts/check-package.js +++ b/scripts/check-package.js @@ -5,7 +5,6 @@ await createCheckPackage({ }) .checkRecommended({ onlyWarnsForInDependencies: { - '@babel/core': { duplicateDirectDependency: ['semver'] }, eslint: { duplicateDirectDependency: ['chalk'] }, }, }) diff --git a/src/.eslintrc.json b/src/.eslintrc.json index be5e3a84..b3dee2de 100644 --- a/src/.eslintrc.json +++ b/src/.eslintrc.json @@ -18,7 +18,7 @@ }, "overrides": [ { - "files": ["**/*.test.ts", "__tests__/**/*.ts"], + "files": ["**/*.test.ts", "__tests__/**/*.ts", "**/__mocks__/**/*.ts"], "extends": ["@pob/eslint-config-typescript/test"], "env": { "jest": true diff --git a/src/checks/checkDirectPeerDependencies.test.ts b/src/checks/checkDirectPeerDependencies.test.ts index f9b8e010..6a077e18 100644 --- a/src/checks/checkDirectPeerDependencies.test.ts +++ b/src/checks/checkDirectPeerDependencies.test.ts @@ -1,11 +1,10 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { createOnlyWarnsForMappingCheck } from '../utils/warnForUtils'; import { checkDirectPeerDependencies } from './checkDirectPeerDependencies'; -const jest = import.meta.jest; - describe('checkDirectPeerDependencies', () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); }); @@ -18,7 +17,7 @@ describe('checkDirectPeerDependencies', () => { devDependencies: { 'some-lib-using-rollup': '1.0.0' }, }, 'path', - jest.fn().mockImplementationOnce(() => ({ + vi.fn().mockImplementationOnce(() => ({ name: 'some-lib-using-rollup', peerDependencies: { rollup: '^1.0.0' }, })), @@ -41,7 +40,7 @@ describe('checkDirectPeerDependencies', () => { devDependencies: { rollup: '^1.0.0', 'some-lib-using-rollup': '1.0.0' }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'rollup', @@ -65,7 +64,7 @@ describe('checkDirectPeerDependencies', () => { devDependencies: { rollup: '^1.0.0', 'some-lib-using-rollup': '1.0.0' }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'rollup', @@ -92,7 +91,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'rollup', @@ -119,7 +118,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'rollup', @@ -145,7 +144,7 @@ describe('checkDirectPeerDependencies', () => { devDependencies: { 'some-lib-using-rollup': '1.0.0' }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'rollup', @@ -169,7 +168,7 @@ describe('checkDirectPeerDependencies', () => { devDependencies: { 'some-lib-using-rollup': '1.0.0' }, }, 'path', - jest.fn().mockImplementationOnce(() => ({ + vi.fn().mockImplementationOnce(() => ({ name: 'some-lib-using-rollup', peerDependencies: { rollup: '^1.0.0' }, peerDependenciesMeta: { @@ -196,7 +195,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: '@types/a', @@ -225,7 +224,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: '@types/a', @@ -256,7 +255,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'some-lib-providing-rollup', @@ -288,7 +287,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'some-lib-providing-rollup', @@ -317,7 +316,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest + vi .fn() .mockImplementationOnce(() => ({ name: 'some-lib-using-rollup', @@ -355,7 +354,7 @@ describe('checkDirectPeerDependencies', () => { }, }, 'path', - jest.fn().mockImplementationOnce(() => ({ + vi.fn().mockImplementationOnce(() => ({ name: 'some-lib-using-rollup', peerDependencies: { rollup: '^1.0.0' }, })), diff --git a/src/checks/checkDuplicateDependencies.test.ts b/src/checks/checkDuplicateDependencies.test.ts index b8ee2ed9..c6a120c0 100644 --- a/src/checks/checkDuplicateDependencies.test.ts +++ b/src/checks/checkDuplicateDependencies.test.ts @@ -1,10 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { createOnlyWarnsForArrayCheck } from '../utils/warnForUtils'; import { checkDuplicateDependencies } from './checkDuplicateDependencies'; -const jest = import.meta.jest; - describe('checkDuplicateDependencies', () => { - const mockReportError = jest.fn(); + const mockReportError = vi.fn(); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkExactVersions.test.ts b/src/checks/checkExactVersions.test.ts index 2d746283..b2fc8b80 100644 --- a/src/checks/checkExactVersions.test.ts +++ b/src/checks/checkExactVersions.test.ts @@ -1,8 +1,7 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { createOnlyWarnsForArrayCheck } from '../utils/warnForUtils'; import { checkExactVersions } from './checkExactVersions'; -const jest = import.meta.jest; - const onlyWarnsForConfigName = 'checkExactVersions.test.onlyWarnsFor'; const emptyOnlyWarnsForCheck = createOnlyWarnsForArrayCheck( onlyWarnsForConfigName, @@ -10,8 +9,8 @@ const emptyOnlyWarnsForCheck = createOnlyWarnsForArrayCheck( ); describe('checkExactVersions', () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); @@ -164,7 +163,7 @@ describe('checkExactVersions', () => { }); it('should fix and remove range', async () => { - const getDependencyPackageJsonMock = jest + const getDependencyPackageJsonMock = vi .fn() .mockReturnValueOnce({ name: 'test1', version: '1.0.1' }); const pkg = { name: 'test', devDependencies: { test1: '~1.0.0' } }; @@ -184,11 +183,9 @@ describe('checkExactVersions', () => { }); it('should error if autofix failed as package does not exists', async () => { - const getDependencyPackageJsonMock = jest - .fn() - .mockImplementationOnce(() => { - throw new Error('Module not found'); - }); + const getDependencyPackageJsonMock = vi.fn().mockImplementationOnce(() => { + throw new Error('Module not found'); + }); const pkg = { name: 'test', devDependencies: { test1: '~1.0.0' } }; await checkExactVersions(pkg, 'path', ['devDependencies'], { onlyWarnsForCheck: emptyOnlyWarnsForCheck, @@ -209,7 +206,7 @@ describe('checkExactVersions', () => { }); it("should error if autofix failed because version doesn't match range", async () => { - const getDependencyPackageJsonMock = jest + const getDependencyPackageJsonMock = vi .fn() .mockReturnValueOnce({ name: 'test1', version: '2.0.0' }); const pkg = { name: 'test', devDependencies: { test1: '~1.0.0' } }; diff --git a/src/checks/checkIdenticalVersions.test.ts b/src/checks/checkIdenticalVersions.test.ts index 246578eb..c5305e9f 100644 --- a/src/checks/checkIdenticalVersions.test.ts +++ b/src/checks/checkIdenticalVersions.test.ts @@ -1,10 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { checkIdenticalVersions } from './checkIdenticalVersions'; -const jest = import.meta.jest; - describe('checkIdenticalVersions', () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkMinRangeSatisfies.test.ts b/src/checks/checkMinRangeSatisfies.test.ts index efbfe0ff..969b154f 100644 --- a/src/checks/checkMinRangeSatisfies.test.ts +++ b/src/checks/checkMinRangeSatisfies.test.ts @@ -1,11 +1,10 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import type { PackageJson } from '../utils/packageTypes'; import { checkMinRangeSatisfies } from './checkMinRangeSatisfies'; -const jest = import.meta.jest; - describe(checkMinRangeSatisfies.name, () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkNoDependencies.test.ts b/src/checks/checkNoDependencies.test.ts index c7668f5e..55b6c1d8 100644 --- a/src/checks/checkNoDependencies.test.ts +++ b/src/checks/checkNoDependencies.test.ts @@ -1,10 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { checkNoDependencies } from './checkNoDependencies'; -const jest = import.meta.jest; - describe('checkNoDependencies', () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkResolutionsVersionsMatch.test.ts b/src/checks/checkResolutionsVersionsMatch.test.ts index 212ace01..1010acc3 100644 --- a/src/checks/checkResolutionsVersionsMatch.test.ts +++ b/src/checks/checkResolutionsVersionsMatch.test.ts @@ -1,10 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { checkResolutionsVersionsMatch } from './checkResolutionsVersionsMatch'; -const jest = import.meta.jest; - describe('checkResolutionsVersionsMatch', () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkSatisfiesVersions.test.ts b/src/checks/checkSatisfiesVersions.test.ts index e53177c9..e3975fa1 100644 --- a/src/checks/checkSatisfiesVersions.test.ts +++ b/src/checks/checkSatisfiesVersions.test.ts @@ -1,10 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { checkSatisfiesVersions } from './checkSatisfiesVersions'; -const jest = import.meta.jest; - describe('checkSatisfiesVersions', () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkSatisfiesVersionsFromDependency.test.ts b/src/checks/checkSatisfiesVersionsFromDependency.test.ts index 46a0bdc9..d3edffe4 100644 --- a/src/checks/checkSatisfiesVersionsFromDependency.test.ts +++ b/src/checks/checkSatisfiesVersionsFromDependency.test.ts @@ -1,11 +1,10 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import type { DependencyTypes, PackageJson } from '../utils/packageTypes'; import { checkSatisfiesVersionsFromDependency } from './checkSatisfiesVersionsFromDependency'; -const jest = import.meta.jest; - describe(checkSatisfiesVersionsFromDependency.name, () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/checks/checkSatisfiesVersionsInDependency.test.ts b/src/checks/checkSatisfiesVersionsInDependency.test.ts index 9c8b3cb4..8c4d8ec8 100644 --- a/src/checks/checkSatisfiesVersionsInDependency.test.ts +++ b/src/checks/checkSatisfiesVersionsInDependency.test.ts @@ -1,10 +1,9 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { checkSatisfiesVersionsInDependency } from './checkSatisfiesVersionsInDependency'; -const jest = import.meta.jest; - describe(checkSatisfiesVersionsInDependency.name, () => { - const mockReportError = jest.fn(); - const createReportError = jest.fn().mockReturnValue(mockReportError); + const mockReportError = vi.fn(); + const createReportError = vi.fn().mockReturnValue(mockReportError); beforeEach(() => { mockReportError.mockReset(); diff --git a/src/utils/__mocks__/createReportError.ts b/src/utils/__mocks__/createReportError.ts index ad3fa080..1d56b8b9 100644 --- a/src/utils/__mocks__/createReportError.ts +++ b/src/utils/__mocks__/createReportError.ts @@ -1,2 +1,4 @@ -export const mockReportError = jest.fn(); -export const createReportError = jest.fn().mockReturnValue(mockReportError); +import { vi } from 'vitest'; + +export const mockReportError = vi.fn(); +export const createReportError = vi.fn().mockReturnValue(mockReportError); diff --git a/src/utils/createGetDependencyPackageJson.test.ts b/src/utils/createGetDependencyPackageJson.test.ts index 306cb659..410cfff4 100644 --- a/src/utils/createGetDependencyPackageJson.test.ts +++ b/src/utils/createGetDependencyPackageJson.test.ts @@ -1,20 +1,16 @@ import type { PackageJson } from 'type-fest'; +import { describe, expect, test, vi } from 'vitest'; import { createGetDependencyPackageJson } from './createGetDependencyPackageJson'; -const jest = import.meta.jest; - -((jest as any).unstable_mockModule as typeof jest.mock)( - './pkgJsonUtils', - () => ({ - readPkgJson: jest.fn(), - writePkgJson: jest.fn(), - internalLoadPackageJsonFromNodeModules: jest.fn(), - }), -); +vi.mock('./pkgJsonUtils', () => ({ + readPkgJson: vi.fn(), + writePkgJson: vi.fn(), + internalLoadPackageJsonFromNodeModules: vi.fn(), +})); describe('createGetDependencyPackageJson', () => { test('on windows with error', () => { - const internalLoadPackageJsonFromNodeModulesMock = jest + const internalLoadPackageJsonFromNodeModulesMock = vi .fn() .mockImplementationOnce(() => { const err: NodeJS.ErrnoException = new Error( @@ -26,7 +22,7 @@ describe('createGetDependencyPackageJson', () => { }); const mockPkg: PackageJson = {}; - const readPkgJsonMock = jest.fn((pkgPath: string) => mockPkg); + const readPkgJsonMock = vi.fn((pkgPath: string) => mockPkg); const getDependencyPackageJson = createGetDependencyPackageJson({ pkgDirname: 'test', diff --git a/src/utils/createReportError.test.ts b/src/utils/createReportError.test.ts index 9f362275..742fedd8 100644 --- a/src/utils/createReportError.test.ts +++ b/src/utils/createReportError.test.ts @@ -1,18 +1,17 @@ +import { beforeEach, describe, expect, test, vi } from 'vitest'; import { logMessage, reportNotWarnedForMapping } from './createReportError'; import { createOnlyWarnsForMappingCheck } from './warnForUtils'; -const jest = import.meta.jest; - describe('logMessage', () => { beforeEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); test('it should display error with no info', () => { - const errorFn = jest.spyOn(console, 'error').mockImplementation(); + const errorFn = vi.spyOn(console, 'error'); logMessage('test'); expect(errorFn).toMatchInlineSnapshot(` - [MockFunction] { + [MockFunction error] { "calls": [ [ "❌ test", @@ -28,10 +27,10 @@ describe('logMessage', () => { `); }); test('it should display error with info', () => { - const errorFn = jest.spyOn(console, 'error').mockImplementation(); + const errorFn = vi.spyOn(console, 'error'); logMessage('test', 'info'); expect(errorFn).toMatchInlineSnapshot(` - [MockFunction] { + [MockFunction error] { "calls": [ [ "❌ test: info", @@ -48,10 +47,10 @@ describe('logMessage', () => { }); test('it should display warning with no info', () => { - const errorFn = jest.spyOn(console, 'error').mockImplementation(); + const errorFn = vi.spyOn(console, 'error'); logMessage('test', undefined, true); expect(errorFn).toMatchInlineSnapshot(` - [MockFunction] { + [MockFunction error] { "calls": [ [ "⚠ test", @@ -68,10 +67,10 @@ describe('logMessage', () => { }); test('it should display warning with info', () => { - const errorFn = jest.spyOn(console, 'error').mockImplementation(); + const errorFn = vi.spyOn(console, 'error'); logMessage('test', 'info', true); expect(errorFn).toMatchInlineSnapshot(` - [MockFunction] { + [MockFunction error] { "calls": [ [ "⚠ test: info", @@ -89,7 +88,7 @@ describe('logMessage', () => { }); describe('reportNotWarnedForMapping', () => { - const reportError = jest.fn(); + const reportError = vi.fn(); beforeEach(() => { reportError.mockReset(); }); diff --git a/src/utils/warnForUtils.test.ts b/src/utils/warnForUtils.test.ts index b8781051..7ff4eb5c 100644 --- a/src/utils/warnForUtils.test.ts +++ b/src/utils/warnForUtils.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, test } from 'vitest'; import { createOnlyWarnsForArrayCheck, createOnlyWarnsForMappingCheck, diff --git a/tsconfig.json b/tsconfig.json index 2e6c3f2a..4dc58f27 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "extends": [ "@pob/root/tsconfigs/strict.json", - "@pob/root/tsconfigs/targets/rollup-babel.json" + "@pob/root/tsconfigs/targets/rollup-node-18.json" ], "include": ["src/**/*.ts"], "compilerOptions": { diff --git a/yarn.lock b/yarn.lock index 18179775..47793997 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,17 +12,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.1.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10/503a58d6e9d645a20debd34fa8df79fb435a79a34b1d487b9ff0be9f20712b1594ce21da16b63af7db8a6b34472212572e53a55613a5a6b3134b23fc74843d04 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.1, @babel/code-frame@npm:^7.24.2": +"@babel/code-frame@npm:^7.0.0": version: 7.24.2 resolution: "@babel/code-frame@npm:7.24.2" dependencies: @@ -32,226 +22,6 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/compat-data@npm:7.23.5" - checksum: 10/088f14f646ecbddd5ef89f120a60a1b3389a50a9705d44603dca77662707d0175a5e0e0da3943c3298f1907a4ab871468656fbbf74bb7842cd8b0686b2c19736 - languageName: node - linkType: hard - -"@babel/core@npm:7.24.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.2": - version: 7.24.4 - resolution: "@babel/core@npm:7.24.4" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.2" - "@babel/generator": "npm:^7.24.4" - "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.24.4" - "@babel/parser": "npm:^7.24.4" - "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.1" - "@babel/types": "npm:^7.24.0" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/1e049f8df26be0fe5be36173fd7c33dfb004eeeec28152fea83c90e71784f9a6f2237296f43a2ee7d9041e2a33a05f43da48ce2d4e0cd473a682328ca07ce7e0 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.24.1, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.7.2": - version: 7.24.4 - resolution: "@babel/generator@npm:7.24.4" - dependencies: - "@babel/types": "npm:^7.24.0" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/69e1772dcf8f95baec951f422cca091d59a3f29b5eedc989ad87f7262289b94625983f6fe654302ca17aae0a32f9232332b83fcc85533311d6267b09c58b1061 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/53da330f1835c46f26b7bf4da31f7a496dee9fd8696cca12366b94ba19d97421ce519a74a837f687749318f94d1a37f8d1abcbf35e8ed22c32d16373b2f6198d - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helper-compilation-targets@npm:7.23.6" - dependencies: - "@babel/compat-data": "npm:^7.23.5" - "@babel/helper-validator-option": "npm:^7.23.5" - browserslist: "npm:^4.22.2" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10/05595cd73087ddcd81b82d2f3297aac0c0422858dfdded43d304786cf680ec33e846e2317e6992d2c964ee61d93945cbf1fa8ec80b55aee5bfb159227fb02cb9 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" - "@babel/helper-member-expression-to-functions": "npm:^7.22.15" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/000d29f1df397b7fdcb97ad0e9a442781787e5cb0456a9b8da690d13e03549a716bf74348029d3bd3fa4837b35d143a535cad1006f9d552063799ecdd96df672 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.6.1": - version: 0.6.1 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.1" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - debug: "npm:^4.1.1" - lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/316e7c0f05d2ae233d5fbb622c6339436da8d2b2047be866b64a16e6996c078a23b4adfebbdb33bc6a9882326a6cc20b95daa79a5e0edc92e9730e36d45fa523 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: 10/d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.22.5, @babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/types": "npm:^7.23.0" - checksum: 10/7b2ae024cd7a09f19817daf99e0153b3bf2bc4ab344e197e8d13623d5e36117ed0b110914bc248faa64e8ccd3e97971ec7b41cc6fd6163a2b980220c58dcdf6d - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.15": - version: 7.23.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" - dependencies: - "@babel/types": "npm:^7.23.0" - checksum: 10/325feb6e200478c8cd6e10433fabe993a7d3315cc1a2a457e45514a5f95a73dff4c69bea04cc2daea0ffe72d8ed85d504b3f00b2e0767b7d4f5ae25fec9b35b2 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3": - version: 7.24.3 - resolution: "@babel/helper-module-imports@npm:7.24.3" - dependencies: - "@babel/types": "npm:^7.24.0" - checksum: 10/42fe124130b78eeb4bb6af8c094aa749712be0f4606f46716ce74bc18a5ea91c918c547c8bb2307a2e4b33f163e4ad2cb6a7b45f80448e624eae45b597ea3499 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.23.0, @babel/helper-module-transforms@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/helper-module-transforms@npm:7.23.3" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-simple-access": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/583fa580f8e50e6f45c4f46aa76a8e49c2528deb84e25f634d66461b9a0e2420e13979b0a607b67aef67eaf8db8668eb9edc038b4514b16e3879fe09e8fd294b - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/c70ef6cc6b6ed32eeeec4482127e8be5451d0e5282d5495d5d569d39eb04d7f1d66ec99b327f45d1d5842a9ad8c22d48567e93fc502003a47de78d122e355f7c - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.24.0 - resolution: "@babel/helper-plugin-utils@npm:7.24.0" - checksum: 10/dc8c7af321baf7653d93315beffee1790eb2c464b4f529273a24c8743a3f3095bf3f2d11828cb2c52d56282ef43a4bdc67a79c9ab8dd845e35d01871f3f28a0e - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.22.9": - version: 7.22.20 - resolution: "@babel/helper-replace-supers@npm:7.22.20" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-member-expression-to-functions": "npm:^7.22.15" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/617666f57b0f94a2f430ee66b67c8f6fa94d4c22400f622947580d8f3638ea34b71280af59599ed4afbb54ae6e2bdd4f9083fe0e341184a4bb0bd26ef58d3017 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/7d5430eecf880937c27d1aed14245003bd1c7383ae07d652b3932f450f60bfcf8f2c1270c593ab063add185108d26198c69d1aca0e6fb7c6fdada4bcf72ab5b7 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: 10/c352082474a2ee1d2b812bd116a56b2e8b38065df9678a32a535f151ec6f58e54633cc778778374f10544b930703cca6ddf998803888a636afa27e2658068a9c - languageName: node - linkType: hard - "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" @@ -259,24 +29,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/helper-validator-option@npm:7.23.5" - checksum: 10/537cde2330a8aede223552510e8a13e9c1c8798afee3757995a7d4acae564124fe2bf7e7c3d90d62d3657434a74340a274b3b3b1c6f17e9a2be1f48af29cb09e - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.24.4": - version: 7.24.4 - resolution: "@babel/helpers@npm:7.24.4" - dependencies: - "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.1" - "@babel/types": "npm:^7.24.0" - checksum: 10/54a9d0f86f2803fcc216cfa23b66b871ea0fa0a892af1c9a79075872c2437de71afbb150ed8216f30e00b19a0b9c5c9d5845173d170e1ebfbbf8887839b89dde - languageName: node - linkType: hard - "@babel/highlight@npm:^7.24.2": version: 7.24.2 resolution: "@babel/highlight@npm:7.24.2" @@ -289,299 +41,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.1, @babel/parser@npm:^7.24.4": - version: 7.24.4 - resolution: "@babel/parser@npm:7.24.4" - bin: - parser: ./bin/babel-parser.js - checksum: 10/3742cc5068036287e6395269dce5a2735e6349cdc8d4b53297c75f98c580d7e1c8cb43235623999d151f2ef975d677dbc2c2357573a1855caa71c271bf3046c9 - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/522cd133aff5c94c0ef36ff83c64f03deee183815da68b65b6950e81972ace3b514e032df07ea76d0f9ec8cc7a49578092907adfa17fccb4612117557c04a882 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.23.3 - resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/89037694314a74e7f0e7a9c8d3793af5bf6b23d80950c29b360db1c66859d67f60711ea437e70ad6b5b4b29affe17eababda841b6c01107c2b638e0493bafb4e - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.23.3 - resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/abfad3a19290d258b028e285a1f34c9b8a0cbe46ef79eafed4ed7ffce11b5d0720b5e536c82f91cbd8442cde35a3dd8e861fa70366d87ff06fdc0d4756e30876 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" - dependencies: - "@babel/helper-module-transforms": "npm:^7.23.0" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-simple-access": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/65085c8f2578b0c272b3969b78e54430ea3217fca8de7a21ded845a74ddf2d97aee284559da102d826fcb8aed5a79d09536a6e4610d868f539d7bc382eb319ff - languageName: node - linkType: hard - -"@babel/plugin-transform-runtime@npm:7.24.3": - version: 7.24.3 - resolution: "@babel/plugin-transform-runtime@npm:7.24.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.24.3" - "@babel/helper-plugin-utils": "npm:^7.24.0" - babel-plugin-polyfill-corejs2: "npm:^0.4.10" - babel-plugin-polyfill-corejs3: "npm:^0.10.1" - babel-plugin-polyfill-regenerator: "npm:^0.6.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/7f545c628993b527ae1cb028106168ec29873160a5d98aed947509b61e826fa52b6e2bd2c56504b4a5084555becc9841fa7842e61f822a050dd6ff5baff726ce - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-typescript@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-typescript": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/95c35fbc823773058e9f077635fbe579d00b8f1762756b14a6fcae0c2db1aefddb93093fda4ca462e9e7d49edd49d71afe0a17422698d7418a6d156fc2dfba19 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/preset-typescript@npm:7.23.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-option": "npm:^7.22.15" - "@babel/plugin-syntax-jsx": "npm:^7.22.5" - "@babel/plugin-transform-modules-commonjs": "npm:^7.23.0" - "@babel/plugin-transform-typescript": "npm:^7.22.15" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/fab17c24f737928e6e399425463808b4c4d850ea2cbe751c98cc2da86314e48d2f910da0f10d72525dad72a68aced5bd74edacf76b0f06db25abab07bec64b32 - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0, @babel/template@npm:^7.3.3": - version: 7.24.0 - resolution: "@babel/template@npm:7.24.0" - dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/parser": "npm:^7.24.0" - "@babel/types": "npm:^7.24.0" - checksum: 10/8c538338c7de8fac8ada691a5a812bdcbd60bd4a4eb5adae2cc9ee19773e8fb1a724312a00af9e1ce49056ffd3c3475e7287b5668cf6360bfb3f8ac827a06ffe - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/traverse@npm:7.24.1" - dependencies: - "@babel/code-frame": "npm:^7.24.1" - "@babel/generator": "npm:^7.24.1" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.24.1" - "@babel/types": "npm:^7.24.0" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/b9b0173c286ef549e179f3725df3c4958069ad79fe5b9840adeb99692eb4a5a08db4e735c0f086aab52e7e08ec711cee9e7c06cb908d8035641d1382172308d3 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.24.0 - resolution: "@babel/types@npm:7.24.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 10/a0b4875ce2e132f9daff0d5b27c7f4c4fcc97f2b084bdc5834e92c9d32592778489029e65d99d00c406da612d87b72d7a236c0afccaa1435c028d0c94c9b6da4 - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 10/1a1f0e356a3bb30b5f1ced6f79c413e6ebacf130421f15fac5fcd8be5ddf98aedb4404d7f5624e3285b700e041f9ef938321f3ca4d359d5b716f96afa120d88d - languageName: node - linkType: hard - "@commitlint/cli@npm:18.6.1": version: 18.6.1 resolution: "@commitlint/cli@npm:18.6.1" @@ -757,21 +216,182 @@ __metadata: languageName: node linkType: hard -"@commitlint/top-level@npm:^18.6.1": - version: 18.6.1 - resolution: "@commitlint/top-level@npm:18.6.1" - dependencies: - find-up: "npm:^5.0.0" - checksum: 10/059ff78ac71ae009c2d69480076e5980e9ab297136653cc28260591e52b28bdd3cfd995f1a844dec7c511fd2c6c3a52fcbcb55025d7f71dec9192a8792f36a62 +"@commitlint/top-level@npm:^18.6.1": + version: 18.6.1 + resolution: "@commitlint/top-level@npm:18.6.1" + dependencies: + find-up: "npm:^5.0.0" + checksum: 10/059ff78ac71ae009c2d69480076e5980e9ab297136653cc28260591e52b28bdd3cfd995f1a844dec7c511fd2c6c3a52fcbcb55025d7f71dec9192a8792f36a62 + languageName: node + linkType: hard + +"@commitlint/types@npm:^18.6.1": + version: 18.6.1 + resolution: "@commitlint/types@npm:18.6.1" + dependencies: + chalk: "npm:^4.1.0" + checksum: 10/fb37bdefd25e05e353eb568b26a7dd5aff488f1e3fbfc42080bde49ae6834ffde996acac4b7767df650b38e03692889b636b8290465823cd27276662d3b471cf + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/aix-ppc64@npm:0.20.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-arm64@npm:0.20.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-arm@npm:0.20.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-x64@npm:0.20.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/darwin-arm64@npm:0.20.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/darwin-x64@npm:0.20.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/freebsd-arm64@npm:0.20.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/freebsd-x64@npm:0.20.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-arm64@npm:0.20.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-arm@npm:0.20.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-ia32@npm:0.20.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-loong64@npm:0.20.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-mips64el@npm:0.20.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-ppc64@npm:0.20.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-riscv64@npm:0.20.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-s390x@npm:0.20.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-x64@npm:0.20.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/netbsd-x64@npm:0.20.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/openbsd-x64@npm:0.20.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/sunos-x64@npm:0.20.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-arm64@npm:0.20.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-ia32@npm:0.20.2" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@commitlint/types@npm:^18.6.1": - version: 18.6.1 - resolution: "@commitlint/types@npm:18.6.1" - dependencies: - chalk: "npm:^4.1.0" - checksum: 10/fb37bdefd25e05e353eb568b26a7dd5aff488f1e3fbfc42080bde49ae6834ffde996acac4b7767df650b38e03692889b636b8290465823cd27276662d3b471cf +"@esbuild/win32-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-x64@npm:0.20.2" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -849,175 +469,6 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: 10/b000a5acd8d4fe6e34e25c399c8bdbb5d3a202b4e10416e17bfc25e12bab90bb56d33db6089ae30569b52686f4b35ff28ef26e88e21e69821d2b85884bd055b8 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 10/a9b1e49acdf5efc2f5b2359f2df7f90c5c725f2656f16099e8b2cd3a000619ecca9fc48cf693ba789cf0fd989f6e0df6a22bc05574be4223ecdbb7997d04384b - languageName: node - linkType: hard - -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e - languageName: node - linkType: hard - -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/reporters": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^29.7.0" - jest-config: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-resolve-dependencies: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/ab6ac2e562d083faac7d8152ec1cc4eccc80f62e9579b69ed40aedf7211a6b2d57024a6cd53c4e35fd051c39a236e86257d1d99ebdb122291969a0a04563b51e - languageName: node - linkType: hard - -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - checksum: 10/90b5844a9a9d8097f2cf107b1b5e57007c552f64315da8c1f51217eeb0a9664889d3f145cdf8acf23a84f4d8309a6675e27d5b059659a004db0ea9546d1c81a8 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - checksum: 10/ef8d379778ef574a17bde2801a6f4469f8022a46a5f9e385191dc73bb1fc318996beaed4513fbd7055c2847227a1bed2469977821866534593a6e52a281499ee - languageName: node - linkType: hard - -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - checksum: 10/fea6c3317a8da5c840429d90bfe49d928e89c9e89fceee2149b93a11b7e9c73d2f6e4d7cdf647163da938fc4e2169e4490be6bae64952902bc7a701033fd4880 - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@sinonjs/fake-timers": "npm:^10.0.2" - "@types/node": "npm:*" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/9b394e04ffc46f91725ecfdff34c4e043eb7a16e1d78964094c9db3fde0b1c8803e45943a980e8c740d0a3d45661906de1416ca5891a538b0660481a3a828c27 - languageName: node - linkType: hard - -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - jest-mock: "npm:^29.7.0" - checksum: 10/97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.1" - strip-ansi: "npm:^6.0.0" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/a17d1644b26dea14445cedd45567f4ba7834f980be2ef74447204e14238f121b50d8b858fde648083d2cd8f305f81ba434ba49e37a5f4237a6f2a61180cc73dc - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -1027,130 +478,13 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.18" - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.9" - checksum: 10/bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4420c26a0baa7035c5419b0892ff8ffe9a41b1583ec54a10db3037cd46a7e29dd3d7202f8aa9d376e9e53be5f8b1bc0d16e1de6880a6d319b033b01dc4c8f639 - languageName: node - linkType: hard - -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - babel-plugin-istanbul: "npm:^6.1.1" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.4" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^4.0.2" - checksum: 10/30f42293545ab037d5799c81d3e12515790bb58513d37f788ce32d53326d0d72ebf5b40f989e6896739aa50a5f77be44686e510966370d58511d5ad2637c68c1 - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 10/f74bf512fd09bbe2433a2ad460b04668b7075235eea9a0c77d6a42222c10a79b9747dc2b2a623f140ed40d6865a2ed8f538f3cbb75169120ea863f29a7ed76cd - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": "npm:^1.0.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10/ba76fae1d8ea52b181474518c705a8eac36405dfc836fb07e9c25730a84d29e05fd6d954f121057742639f3128a24ea45d205c9c989efd464d1114671c19fa6c - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" - dependencies: - "@jridgewell/set-array": "npm:^1.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/81587b3c4dd8e6c60252122937cea0c637486311f4ed208b52b62aae2e7a87598f63ec330e6cd0984af494bfb16d3f0d60d3b21d7e5b4aedd2602ff3fe9d32e2 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 10/64d59df8ae1a4e74315eb1b61e012f1c7bc8aac47a3a1e683f6fe7008eab07bc512a742b7aa7c0405685d1421206de58c9c2e6adbfe23832f8bd69408ffc183e - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 10/832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": +"@jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -1291,6 +625,30 @@ __metadata: languageName: node linkType: hard +"@pob/rollup-esbuild@npm:1.0.1": + version: 1.0.1 + resolution: "@pob/rollup-esbuild@npm:1.0.1" + dependencies: + "@pob/rollup": "npm:1.1.0" + "@rollup/plugin-node-resolve": "npm:15.2.3" + "@rollup/plugin-run": "npm:3.0.2" + esbuild: "npm:0.20.2" + rollup: "npm:3.29.4" + rollup-config-external-dependencies: "npm:^3.0.0" + rollup-plugin-esbuild: "npm:6.1.1" + peerDependencies: + rollup: 3.29.4 + typescript: ^4.0.3 || ^5.0.0 + peerDependenciesMeta: + rollup: + optional: true + bin: + pob-esbuild-clean-out: ./bin/pob-esbuild-clean-out.js + rollup: ./bin/rollup.cjs + checksum: 10/a7b10a5b85e240d12dbb11d46c0e01801cbe39f6968f753ca5fe50c867261c4ca52033045d651f1d9f8f9c89cd4b2996299fea7839d83955be04fb0f620e18c9 + languageName: node + linkType: hard + "@pob/rollup@npm:1.1.0": version: 1.1.0 resolution: "@pob/rollup@npm:1.1.0" @@ -1358,39 +716,6 @@ __metadata: languageName: node linkType: hard -"@rollup/plugin-babel@npm:6.0.4": - version: 6.0.4 - resolution: "@rollup/plugin-babel@npm:6.0.4" - dependencies: - "@babel/helper-module-imports": "npm:^7.18.6" - "@rollup/pluginutils": "npm:^5.0.1" - peerDependencies: - "@babel/core": ^7.0.0 - "@types/babel__core": ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - "@types/babel__core": - optional: true - rollup: - optional: true - checksum: 10/89210c8c597b41fd4c561749505c85827697d8d0918c492270f522bd85fac8db3af701cf05480a9e594fcc0df9be42fb7ab025b02a272bde74bb2f63c8c39de2 - languageName: node - linkType: hard - -"@rollup/plugin-json@npm:6.1.0": - version: 6.1.0 - resolution: "@rollup/plugin-json@npm:6.1.0" - dependencies: - "@rollup/pluginutils": "npm:^5.1.0" - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 10/cc018d20c80242a2b8b44fae61a968049cf31bb8406218187cc7cda35747616594e79452dd65722e7da6dd825b392e90d4599d43cd4461a02fefa2865945164e - languageName: node - linkType: hard - "@rollup/plugin-node-resolve@npm:15.2.3": version: 15.2.3 resolution: "@rollup/plugin-node-resolve@npm:15.2.3" @@ -1424,7 +749,7 @@ __metadata: languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.0": +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.5": version: 5.1.0 resolution: "@rollup/pluginutils@npm:5.1.0" dependencies: @@ -1440,127 +765,136 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d +"@rollup/rollup-android-arm-eabi@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.16.4" + conditions: os=android & cpu=arm languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.0 - resolution: "@sinonjs/commons@npm:3.0.0" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10/086720ae0bc370829322df32612205141cdd44e592a8a9ca97197571f8f970352ea39d3bda75b347c43789013ddab36b34b59e40380a49bdae1c2df3aa85fe4f +"@rollup/rollup-android-arm64@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-android-arm64@npm:4.16.4" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" - dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e +"@rollup/rollup-darwin-arm64@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-darwin-arm64@npm:4.16.4" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 +"@rollup/rollup-darwin-x64@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-darwin-x64@npm:4.16.4" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@types/babel__core@npm:^7.1.14": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10/c32838d280b5ab59d62557f9e331d3831f8e547ee10b4f85cb78753d97d521270cebfc73ce501e9fb27fe71884d1ba75e18658692c2f4117543f0fc4e3e118b3 +"@rollup/rollup-linux-arm-gnueabihf@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.16.4" + conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 10/b53c215e9074c69d212402990b0ca8fa57595d09e10d94bda3130aa22b55d796e50449199867879e4ea0ee968f3a2099e009cfb21a726a53324483abbf25cd30 +"@rollup/rollup-linux-arm-musleabihf@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.16.4" + conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 10/d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 +"@rollup/rollup-linux-arm64-gnu@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.16.4" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.4 - resolution: "@types/babel__traverse@npm:7.20.4" - dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 10/927073e3a2ca4d24b95acf96d9c91d6fd1c44826d440e5f9b486de421857945b679045710ebf886be2af30d13877d86f9fbd15a383f72a2b07da322af1c1a321 +"@rollup/rollup-linux-arm64-musl@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.16.4" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 10/9ec366ea3b94db26a45262d7161456c9ee25fd04f3a0da482f6e97dbf90c0c8603053c311391a877027cc4ee648340f988cd04f11287886cdf8bc23366291ef9 +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.16.4" + conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" - dependencies: - "@types/node": "npm:*" - checksum: 10/79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 +"@rollup/rollup-linux-riscv64-gnu@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.16.4" + conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 10/3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 +"@rollup/rollup-linux-s390x-gnu@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.16.4" + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: 10/b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 +"@rollup/rollup-linux-x64-gnu@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.16.4" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 10/93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 +"@rollup/rollup-linux-x64-musl@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.16.4" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@types/jest@npm:29.5.12": - version: 29.5.12 - resolution: "@types/jest@npm:29.5.12" - dependencies: - expect: "npm:^29.0.0" - pretty-format: "npm:^29.0.0" - checksum: 10/312e8dcf92cdd5a5847d6426f0940829bca6fe6b5a917248f3d7f7ef5d85c9ce78ef05e47d2bbabc40d41a930e0e36db2d443d2610a9e3db9062da2d5c904211 +"@rollup/rollup-win32-arm64-msvc@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.16.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.16.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.16.4": + version: 4.16.4 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.16.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 languageName: node linkType: hard @@ -1585,15 +919,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 18.18.8 - resolution: "@types/node@npm:18.18.8" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 10/25346cda374c3bb630a9055cf8b7dd49729d53502b81ba647336f459c751f66c73ae9ba755a63d7bd05b07afa2c90b5627af985998ef5cdb0bafb2db5ec7b520 - languageName: node - linkType: hard - "@types/node@npm:14.18.30": version: 14.18.30 resolution: "@types/node@npm:14.18.30" @@ -1636,29 +961,6 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 10/72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: 10/a794eb750e8ebc6273a51b12a0002de41343ffe46befef460bdbb57262d187fdf608bc6615b7b11c462c63c3ceb70abe2564c8dd8ee0f7628f38a314f74a9b9b - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10/1e2b2673847011ce43607df690d392f137d95a2d6ea85aa319403eadda2ef4277365efd4982354d8843f2611ef3846c88599660aaeb537fa9ccddae83c2a89de - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:^7.7.0": version: 7.7.1 resolution: "@typescript-eslint/eslint-plugin@npm:7.7.1" @@ -1789,6 +1091,60 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/expect@npm:1.5.2" + dependencies: + "@vitest/spy": "npm:1.5.2" + "@vitest/utils": "npm:1.5.2" + chai: "npm:^4.3.10" + checksum: 10/47ea9f1e7482de32100b243e599587979664bae569def43371d5c2a19514709cc3019c7f3ac6f4179d2183a0221642277a44029ac44cef04e54fbbbb52785e17 + languageName: node + linkType: hard + +"@vitest/runner@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/runner@npm:1.5.2" + dependencies: + "@vitest/utils": "npm:1.5.2" + p-limit: "npm:^5.0.0" + pathe: "npm:^1.1.1" + checksum: 10/9bb002c6de3da6011642bd09c5d1cf3ea0a6595e4cb88b9cd3314e99e5583ec398d35c57bebc91b197631ac9dea61d4adb53f9e3217b4d55c3b52fa930e8edab + languageName: node + linkType: hard + +"@vitest/snapshot@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/snapshot@npm:1.5.2" + dependencies: + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + checksum: 10/80d6ca478aee3caf6ce5afecd4f37d2677a619bdc63c4209281b047d39657045f4db1bac5ba9a1c38480df0d3f141da86013579c14b8104c7e8c43ed5134ca96 + languageName: node + linkType: hard + +"@vitest/spy@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/spy@npm:1.5.2" + dependencies: + tinyspy: "npm:^2.2.0" + checksum: 10/e4424f9e0d1e4f11ec242aeb5f98fa6420ecf7d8bb456a8b31795e02f933d7b529946a6442c886b27cf324925ac105536f4a8fcbf672d775c1b6d0897a36b061 + languageName: node + linkType: hard + +"@vitest/utils@npm:1.5.2": + version: 1.5.2 + resolution: "@vitest/utils@npm:1.5.2" + dependencies: + diff-sequences: "npm:^29.6.3" + estree-walker: "npm:^3.0.3" + loupe: "npm:^2.3.7" + pretty-format: "npm:^29.7.0" + checksum: 10/74fb0a32973038b00b6ca427cf387c07ff879342e6ea980420b3a9b6d74b0332cdcc9db184ad842584099ac956987bddcdc49001ed648deb49b8f54416570ff0 + languageName: node + linkType: hard + "JSONStream@npm:^1.3.5": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" @@ -1817,7 +1173,14 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.9.0": +"acorn-walk@npm:^8.3.2": + version: 8.3.2 + resolution: "acorn-walk@npm:8.3.2" + checksum: 10/57dbe2fd8cf744f562431775741c5c087196cd7a65ce4ccb3f3981cdfad25cd24ad2bad404997b88464ac01e789a0a61e5e355b2a84876f13deef39fb39686ca + languageName: node + linkType: hard + +"acorn@npm:^8.11.3, acorn@npm:^8.9.0": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -1880,15 +1243,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 - languageName: node - linkType: hard - "ansi-escapes@npm:^6.2.0": version: 6.2.0 resolution: "ansi-escapes@npm:6.2.0" @@ -1951,16 +1305,6 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10/3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 - languageName: node - linkType: hard - "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -1978,15 +1322,6 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: "npm:~1.0.2" - checksum: 10/c6a621343a553ff3779390bb5ee9c2263d6643ebcd7843227bdde6cc7adbed796eb5540ca98db19e3fd7b4714e1faa51551f8849b268bb62df27ddb15cbcd91e - languageName: node - linkType: hard - "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -2090,6 +1425,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10/fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -2097,262 +1439,6 @@ __metadata: languageName: node linkType: hard -"babel-helper-evaluate-path@npm:^0.5.0": - version: 0.5.0 - resolution: "babel-helper-evaluate-path@npm:0.5.0" - checksum: 10/b5d103af0ee6f0d3a7306e53b54c2518b16420a08e5b8cd96f1e3f4c31c1c645e4671b01b721a2c3e9a7ca619c5dbba0edec5e5231f4891d576450b1dca9d52f - languageName: node - linkType: hard - -"babel-helper-flip-expressions@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-helper-flip-expressions@npm:0.4.3" - checksum: 10/52174b03edfca1c722b115fae7046d3ddfd726d2e240cb018c6877b1b9baef7a07f9853ed33a37ee7eeebb5769b1748a0cffbd303f9b5a454e18420e0f0a859b - languageName: node - linkType: hard - -"babel-helper-is-nodes-equiv@npm:^0.0.1": - version: 0.0.1 - resolution: "babel-helper-is-nodes-equiv@npm:0.0.1" - checksum: 10/8621bf12fe5e8238c2de125be278e57f02233fa0e0cf59e0f6b8218b9699eac7a3f71087c8fac5981a80d0941382b34794c642cbbffe363286ac49601b4584ef - languageName: node - linkType: hard - -"babel-helper-mark-eval-scopes@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-helper-mark-eval-scopes@npm:0.4.3" - checksum: 10/b78a47e505fb48cf9966da8b5b237b3e4bdf4ca5659a6453db00500f5cf0dc6ee5a7bf038da74dfbdf2524aef802a68870220f5b94fd17f9545d2ec30b32bac2 - languageName: node - linkType: hard - -"babel-helper-remove-or-void@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-helper-remove-or-void@npm:0.4.3" - checksum: 10/6a2c305c31cb0974a2fd6c860a6685612b4a7ad2cd6b056807f183d9ef5c86f669c002f454fe6729bfd594e5f7349b1f7f06b2107acd7e353e1ccfb2e4d8f32e - languageName: node - linkType: hard - -"babel-helper-to-multiple-sequence-expressions@npm:^0.5.0": - version: 0.5.0 - resolution: "babel-helper-to-multiple-sequence-expressions@npm:0.5.0" - checksum: 10/f8f07139eefc87b3e3f7733250b638cb61e03567060bded12934f48800ec07e86a304815e49a4b83610b549234aeb9db9ff1dc71a7bde1442d37e9ebed658ba0 - languageName: node - linkType: hard - -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" - dependencies: - "@jest/transform": "npm:^29.7.0" - "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^29.6.3" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 10/8a0953bd813b3a8926008f7351611055548869e9a53dd36d6e7e96679001f71e65fd7dbfe253265c3ba6a4e630dc7c845cf3e78b17d758ef1880313ce8fba258 - languageName: node - linkType: hard - -"babel-plugin-discard-module-references@npm:^1.1.2": - version: 1.1.2 - resolution: "babel-plugin-discard-module-references@npm:1.1.2" - checksum: 10/601c32ee5f620abd6cd371b521652d004114d5d174d21893dd27b62dad771fbc86d32c0a5c2e2a718ecc88d50310a1debe349c77dff9eddc9e8ec28b70f73c6b - languageName: node - linkType: hard - -"babel-plugin-fix-class-properties-uninitialized@npm:7.2.1": - version: 7.2.1 - resolution: "babel-plugin-fix-class-properties-uninitialized@npm:7.2.1" - checksum: 10/d4d6d2f9e5fa470b4f812740f216262e725e13a81698402410ea9b679da6c82bfca13257aad3274086b68ffef2ffcc37603969fa5514c1013d92e2c3c2c2053d - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^5.0.4" - test-exclude: "npm:^6.0.0" - checksum: 10/ffd436bb2a77bbe1942a33245d770506ab2262d9c1b3c1f1da7f0592f78ee7445a95bc2efafe619dd9c1b6ee52c10033d6c7d29ddefe6f5383568e60f31dfe8d - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" - dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.1.14" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 10/9bfa86ec4170bd805ab8ca5001ae50d8afcb30554d236ba4a7ffc156c1a92452e220e4acbd98daefc12bf0216fccd092d0a2efed49e7e384ec59e0597a926d65 - languageName: node - linkType: hard - -"babel-plugin-minify-constant-folding@npm:^0.5.0": - version: 0.5.0 - resolution: "babel-plugin-minify-constant-folding@npm:0.5.0" - dependencies: - babel-helper-evaluate-path: "npm:^0.5.0" - checksum: 10/e6f495cc93e59e65b154f6be32cea90b1bf5e15d95e4f0311e39600339098cc0695e7b8947d4014f588fac228d0e1082bcede76bd908cae2e3929c40ae63fc30 - languageName: node - linkType: hard - -"babel-plugin-minify-dead-code-elimination@npm:^0.5.1": - version: 0.5.2 - resolution: "babel-plugin-minify-dead-code-elimination@npm:0.5.2" - dependencies: - babel-helper-evaluate-path: "npm:^0.5.0" - babel-helper-mark-eval-scopes: "npm:^0.4.3" - babel-helper-remove-or-void: "npm:^0.4.3" - lodash: "npm:^4.17.11" - checksum: 10/6f7e7c86ffea4d85d3ad277a8679921e1acdd9ef48439d4e15c19675a63715b560c4e8f4fb77a42df808ceec666f5b06a4375ef005d6583b6b972e6cb1b2d8e4 - languageName: node - linkType: hard - -"babel-plugin-minify-guarded-expressions@npm:^0.4.4": - version: 0.4.4 - resolution: "babel-plugin-minify-guarded-expressions@npm:0.4.4" - dependencies: - babel-helper-evaluate-path: "npm:^0.5.0" - babel-helper-flip-expressions: "npm:^0.4.3" - checksum: 10/6071558a5bdc64ed811809d66ad9982ea3ead16ac32f09d4f17e41b07b2106d9b0d12641758f89cfa1dff94fdfb3df8afed908ff1c0e50972b0312cc66d09a75 - languageName: node - linkType: hard - -"babel-plugin-minify-simplify@npm:^0.5.1": - version: 0.5.1 - resolution: "babel-plugin-minify-simplify@npm:0.5.1" - dependencies: - babel-helper-evaluate-path: "npm:^0.5.0" - babel-helper-flip-expressions: "npm:^0.4.3" - babel-helper-is-nodes-equiv: "npm:^0.0.1" - babel-helper-to-multiple-sequence-expressions: "npm:^0.5.0" - checksum: 10/ad857a7de659f054ecd8185a19f369b1fa6887fbd8a94d4205a5c2b66fe53a56aca002fbb26ac2d84a334df031948004eebe375abbe6c21a0568737cbdfc3cbb - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.10 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.10" - dependencies: - "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.6.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/9fb5e59a3235eba66fb05060b2a3ecd6923084f100df7526ab74b6272347d7adcf99e17366b82df36e592cde4e82fdb7ae24346a990eced76c7d504cac243400 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.10.1": - version: 0.10.4 - resolution: "babel-plugin-polyfill-corejs3@npm:0.10.4" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.1" - core-js-compat: "npm:^3.36.1" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/a69ed5a95bb55e9b7ea37307d56113f7e24054d479c15de6d50fa61388b5334bed1f9b6414cde6c575fa910a4de4d1ab4f2d22720967d57c4fec9d1b8f61b355 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.1" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.1" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/9df4a8e9939dd419fed3d9ea26594b4479f2968f37c225e1b2aa463001d7721f5537740e6622909d2a570b61cec23256924a1701404fc9d6fd4474d3e845cedb - languageName: node - linkType: hard - -"babel-plugin-transform-inline-consecutive-adds@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-plugin-transform-inline-consecutive-adds@npm:0.4.3" - checksum: 10/403735ea07d75e7e12ed1b1dcb3af7530b7639d06c5ab9a2d3699affcd9258fb783b634beb30ac3a5460f7bddf575964ae8c86b2235ef801cdf68cf3491f6664 - languageName: node - linkType: hard - -"babel-plugin-transform-undefined-to-void@npm:^6.9.4": - version: 6.9.4 - resolution: "babel-plugin-transform-undefined-to-void@npm:6.9.4" - checksum: 10/dd4d89b3e884ed0a35c0a0690fdfa4cf9d5a1678b796a20bc05467f68fc5e186c5f77bc127870811337deb989afed6f6775fb8eab94646fcc7ed1a454c455a95 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.8.3" - "@babel/plugin-syntax-import-meta": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/94561959cb12bfa80867c9eeeace7c3d48d61707d33e55b4c3fdbe82fc745913eb2dbfafca62aef297421b38aadcb58550e5943f50fbcebbeefd70ce2bed4b74 - languageName: node - linkType: hard - -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" - dependencies: - babel-plugin-jest-hoist: "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb - languageName: node - linkType: hard - -"babel-preset-optimizations@npm:^2.0.0": - version: 2.0.0 - resolution: "babel-preset-optimizations@npm:2.0.0" - dependencies: - babel-plugin-minify-constant-folding: "npm:^0.5.0" - babel-plugin-minify-dead-code-elimination: "npm:^0.5.1" - babel-plugin-minify-guarded-expressions: "npm:^0.4.4" - babel-plugin-minify-simplify: "npm:^0.5.1" - babel-plugin-transform-inline-consecutive-adds: "npm:^0.4.3" - babel-plugin-transform-undefined-to-void: "npm:^6.9.4" - checksum: 10/5ed98f1e88070656a567da387427a0e70c7b7dd7883f675986348bdbe9bcdbac31a65a6d42b8b5eeb0050f833e45c07549789f7b6a27575f6845fe552a2214cd - languageName: node - linkType: hard - -"babel-preset-pob-env@npm:11.1.0": - version: 11.1.0 - resolution: "babel-preset-pob-env@npm:11.1.0" - dependencies: - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.18.6" - "@babel/plugin-proposal-optional-chaining": "npm:^7.21.0" - "@babel/plugin-transform-modules-commonjs": "npm:^7.23.0" - "@babel/preset-typescript": "npm:^7.23.2" - babel-plugin-discard-module-references: "npm:^1.1.2" - babel-plugin-fix-class-properties-uninitialized: "npm:7.2.1" - babel-preset-optimizations: "npm:^2.0.0" - peerDependencies: - "@babel/core": ^7.23.2 - checksum: 10/f45507a8702633e79db4e01cbf6aeda5594c9c0459559f70003f36809b6e0fccb6cb5bbe65325a2ff34b9aa8bcc5a320230250610a940cf7d81664682e4675f2 - languageName: node - linkType: hard - "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2388,7 +1474,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.22.2, browserslist@npm:^4.23.0": +"browserslist@npm:^4.23.0": version: 4.23.0 resolution: "browserslist@npm:4.23.0" dependencies: @@ -2402,22 +1488,6 @@ __metadata: languageName: node linkType: hard -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 10/edba1b65bae682450be4117b695997972bd9a3c4dfee029cab5bcb72ae5393a79a8f909b8bc77957eb0deec1c7168670f18f4d5c556f46cdd3bca5f3b3a8d020 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 10/0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - "builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" @@ -2425,6 +1495,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 10/002769a0fbfc51c062acd2a59df465a2a947916b02ac50b56c69ec6c018ee99ac3e7f4dd7366334ea847f1ecacf4defaa61bcd2ac283db50156ce1f1d8c8ad42 + languageName: node + linkType: hard + "cacache@npm:^16.0.2": version: 16.0.7 resolution: "cacache@npm:16.0.7" @@ -2487,13 +1564,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001587": version: 1.0.30001587 resolution: "caniuse-lite@npm:1.0.30001587" @@ -2501,6 +1571,21 @@ __metadata: languageName: node linkType: hard +"chai@npm:^4.3.10": + version: 4.4.1 + resolution: "chai@npm:4.4.1" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.0.8" + checksum: 10/c6d7aba913a67529c68dbec3673f94eb9c586c5474cc5142bd0b587c9c9ec9e5fbaa937e038ecaa6475aea31433752d5fabdd033b9248bde6ae53befcde774ae + languageName: node + linkType: hard + "chalk@npm:5.3.0, chalk@npm:^5.2.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" @@ -2529,10 +1614,12 @@ __metadata: languageName: node linkType: hard -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: 10/1ec5c2906adb9f84e7f6732a40baef05d7c85401b82ffcbc44b85fbd0f7a2b0c2a96f2eb9cf55cae3235dc12d4023003b88f09bcae8be9ae894f52ed746f4d48 +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10/e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399 languageName: node linkType: hard @@ -2540,25 +1627,23 @@ __metadata: version: 0.0.0-use.local resolution: "check-package-dependencies@workspace:." dependencies: - "@babel/core": "npm:7.24.4" "@pob/commitlint-config": "npm:6.3.1" "@pob/eslint-config": "npm:55.2.1" "@pob/eslint-config-typescript": "npm:55.2.1" + "@pob/rollup-esbuild": "npm:1.0.1" "@pob/root": "npm:9.3.2" - "@types/jest": "npm:29.5.12" "@types/semver": "npm:7.5.6" "@types/semver-utils": "npm:1.1.3" chalk: "npm:^5.2.0" eslint: "npm:8.57.0" glob: "npm:^10.0.0" import-meta-resolve: "npm:^4.0.0" - jest: "npm:29.7.0" - pob-babel: "npm:38.1.0" semver: "npm:7.5.4" semver-utils: "npm:^1.1.4" type-fest: "npm:^4.0.0" typedoc: "npm:0.25.13" typescript: "npm:5.4.5" + vitest: "npm:1.5.2" bin: check-package-dependencies: ./bin/check-package-dependencies.mjs languageName: unknown @@ -2571,13 +1656,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 10/75bc67902b4d1c7b435497adeb91598f6d52a3389398e44294f6601b20cfef32cf2176f7be0eb961d9e085bb333a8a5cae121cb22f81cf238ae7f58eb80e9397 - languageName: node - linkType: hard - "ci-info@npm:^4.0.0": version: 4.0.0 resolution: "ci-info@npm:4.0.0" @@ -2585,13 +1663,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.3 - resolution: "cjs-module-lexer@npm:1.2.3" - checksum: 10/f96a5118b0a012627a2b1c13bd2fcb92509778422aaa825c5da72300d6dcadfb47134dd2e9d97dfa31acd674891dd91642742772d19a09a8adc3e56bd2f5928c - languageName: node - linkType: hard - "clean-regexp@npm:^1.0.0": version: 1.0.0 resolution: "clean-regexp@npm:1.0.0" @@ -2649,20 +1720,6 @@ __metadata: languageName: node linkType: hard -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: 10/30ea7d5c9ee51f2fdba4901d4186c5b7114a088ef98fd53eda3979da77eed96758a2cae81cc6d97e239aaea6065868cf908b24980663f7b7e96aa291b3e12fa4 - languageName: node - linkType: hard - "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -2735,6 +1792,13 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.1.7": + version: 0.1.7 + resolution: "confbox@npm:0.1.7" + checksum: 10/3086687b9a2a70d44d4b40a2d376536fe7e1baec4a2a34261b21b8a836026b419cbf89ded6054216631823e7d63c415dad4b4d53591d6edbb202bb9820dfa6fa + languageName: node + linkType: hard + "confusing-browser-globals@npm:^1.0.11": version: 1.0.11 resolution: "confusing-browser-globals@npm:1.0.11" @@ -2781,14 +1845,7 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.34.0, core-js-compat@npm:^3.36.1": +"core-js-compat@npm:^3.34.0": version: 3.37.0 resolution: "core-js-compat@npm:3.37.0" dependencies: @@ -2827,23 +1884,6 @@ __metadata: languageName: node linkType: hard -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - prompts: "npm:^2.0.1" - bin: - create-jest: bin/create-jest.js - checksum: 10/847b4764451672b4174be4d5c6d7d63442ec3aa5f3de52af924e4d996d87d7801c18e125504f25232fc75840f6625b3ac85860fac6ce799b5efae7bdcaf4a2b7 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -2862,7 +1902,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -2900,15 +1940,12 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.1 - resolution: "dedent@npm:1.5.1" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 10/fc00a8bc3dfb7c413a778dc40ee8151b6c6ff35159d641f36ecd839c1df5c6e0ec5f4992e658c82624a1a62aaecaffc23b9c965ceb0bbf4d698bfc16469ac27d +"deep-eql@npm:^4.1.3": + version: 4.1.3 + resolution: "deep-eql@npm:4.1.3" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10/12ce93ae63de187e77b076d3d51bfc28b11f98910a22c18714cce112791195e86a94f97788180994614b14562a86c9763f67c69f785e4586f806b5df39bf9301 languageName: node linkType: hard @@ -2961,13 +1998,6 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 10/ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -3018,13 +2048,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 10/fbe214171d878b924eedf1757badf58a5dce071cd1fa7f620fa841a0901a80d6da47ff05929d53163105e621ce11a71b9d8acb1148ffe1745e045145f6e69521 - languageName: node - linkType: hard - "emoji-regex@npm:^10.3.0": version: 10.3.0 resolution: "emoji-regex@npm:10.3.0" @@ -3128,6 +2151,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.3.1": + version: 1.5.0 + resolution: "es-module-lexer@npm:1.5.0" + checksum: 10/d0e198d8642cb42aa82d86f2c6830cb6786916171a3e693046c11500c0cb62e77703940e58757db8aafa8a86fa2a9cc1c493dcd22c0b03c4a72dede3ce5c7dd1 + languageName: node + linkType: hard + "es-set-tostringtag@npm:^2.0.1": version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" @@ -3159,6 +2189,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:0.20.2, esbuild@npm:^0.20.1": + version: 0.20.2 + resolution: "esbuild@npm:0.20.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.20.2" + "@esbuild/android-arm": "npm:0.20.2" + "@esbuild/android-arm64": "npm:0.20.2" + "@esbuild/android-x64": "npm:0.20.2" + "@esbuild/darwin-arm64": "npm:0.20.2" + "@esbuild/darwin-x64": "npm:0.20.2" + "@esbuild/freebsd-arm64": "npm:0.20.2" + "@esbuild/freebsd-x64": "npm:0.20.2" + "@esbuild/linux-arm": "npm:0.20.2" + "@esbuild/linux-arm64": "npm:0.20.2" + "@esbuild/linux-ia32": "npm:0.20.2" + "@esbuild/linux-loong64": "npm:0.20.2" + "@esbuild/linux-mips64el": "npm:0.20.2" + "@esbuild/linux-ppc64": "npm:0.20.2" + "@esbuild/linux-riscv64": "npm:0.20.2" + "@esbuild/linux-s390x": "npm:0.20.2" + "@esbuild/linux-x64": "npm:0.20.2" + "@esbuild/netbsd-x64": "npm:0.20.2" + "@esbuild/openbsd-x64": "npm:0.20.2" + "@esbuild/sunos-x64": "npm:0.20.2" + "@esbuild/win32-arm64": "npm:0.20.2" + "@esbuild/win32-ia32": "npm:0.20.2" + "@esbuild/win32-x64": "npm:0.20.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10/663215ab7e599651e00d61b528a63136e1f1d397db8b9c3712540af928c9476d61da95aefa81b7a8dfc7a9fdd7616fcf08395c27be68be8c99953fb461863ce4 + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -3173,13 +2283,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 10/9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -3379,16 +2482,6 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10/f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb - languageName: node - linkType: hard - "esquery@npm:^1.4.2, esquery@npm:^1.5.0": version: 1.5.0 resolution: "esquery@npm:1.5.0" @@ -3421,6 +2514,15 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10/a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -3435,7 +2537,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:8.0.1": +"execa@npm:8.0.1, execa@npm:^8.0.1": version: 8.0.1 resolution: "execa@npm:8.0.1" dependencies: @@ -3469,26 +2571,6 @@ __metadata: languageName: node linkType: hard -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: 10/387555050c5b3c10e7a9e8df5f43194e95d7737c74532c409910e585d5554eaff34960c166643f5e23d042196529daad059c292dcf1fb61b8ca878d3677f4b87 - languageName: node - linkType: hard - -"expect@npm:^29.0.0, expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/63f97bc51f56a491950fb525f9ad94f1916e8a014947f8d8445d3847a665b5471b768522d659f5e865db20b6c2033d2ac10f35fcbd881a4d26407a4f6f18451a - languageName: node - linkType: hard - "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -3509,7 +2591,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e @@ -3532,15 +2614,6 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: "npm:2.1.1" - checksum: 10/4f95d336fb805786759e383fd7fff342ceb7680f53efcc0ef82f502eb479ce35b98e8b207b6dfdfeea0eba845862107dc73813775fc6b56b3098c6e90a2dad77 - languageName: node - linkType: hard - "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -3559,7 +2632,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": +"find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -3631,7 +2704,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -3641,7 +2714,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -3692,13 +2765,6 @@ __metadata: languageName: node linkType: hard -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd - languageName: node - linkType: hard - "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -3713,6 +2779,13 @@ __metadata: languageName: node linkType: hard +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10/3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + languageName: node + linkType: hard + "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": version: 1.2.2 resolution: "get-intrinsic@npm:1.2.2" @@ -3725,13 +2798,6 @@ __metadata: languageName: node linkType: hard -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: 10/bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -3756,12 +2822,12 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0": - version: 4.7.2 - resolution: "get-tsconfig@npm:4.7.2" +"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.2": + version: 4.7.3 + resolution: "get-tsconfig@npm:4.7.3" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 10/f21135848fb5d16012269b7b34b186af7a41824830f8616aba17a15eb4d9e54fdc876833f1e21768395215a826c8145582f5acd594ae2b4de3284d10b38d20f8 + checksum: 10/7397bb4f8aef936df4d9016555b662dcf5279f3c46428b7c7c1ff5e94ab2b87d018b3dda0f4bc1a28b154d5affd0eac5d014511172c085fd8a9cdff9ea7fe043 languageName: node linkType: hard @@ -3850,13 +2916,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2 - languageName: node - linkType: hard - "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -3905,7 +2964,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -4020,13 +3079,6 @@ __metadata: languageName: node linkType: hard -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 - languageName: node - linkType: hard - "http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" @@ -4113,18 +3165,6 @@ __metadata: languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 10/bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd - languageName: node - linkType: hard - "import-meta-resolve@npm:^4.0.0": version: 4.0.0 resolution: "import-meta-resolve@npm:4.0.0" @@ -4296,13 +3336,6 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: 10/a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -4462,71 +3495,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 10/40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^6.3.0" - checksum: 10/bbc4496c2f304d799f8ec22202ab38c010ac265c441947f075c0f7d46bd440b45c00e46017cf9053453d42182d768b1d6ed0e70a142c95ab00df9843aa5ab80e - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.1 - resolution: "istanbul-lib-instrument@npm:6.0.1" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10/95fd8c66e586840989cb3c7819c6da66c4742a6fedbf16b51a5c7f1898941ad07b79ddff020f479d3a1d76743ecdbf255d93c35221875687477d4b118026e7e7 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^4.0.0" - supports-color: "npm:^7.1.0" - checksum: 10/86a83421ca1cf2109a9f6d193c06c31ef04a45e72a74579b11060b1e7bb9b6337a4e6f04abfb8857e2d569c271273c65e855ee429376a0d7c91ad91db42accd1 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - source-map: "npm:^0.6.1" - checksum: 10/5526983462799aced011d776af166e350191b816821ea7bcf71cab3e5272657b062c47dc30697a22a43656e3ced78893a42de677f9ccf276a28c913190953b82 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.1.6 - resolution: "istanbul-reports@npm:3.1.6" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 10/135c178e509b21af5c446a6951fc01c331331bb0fdb1ed1dd7f68a8c875603c2e2ee5c82801db5feb868e5cc35e9babe2d972d322afc50f6de6cce6431b9b2ff - languageName: node - linkType: hard - "jackspeak@npm:^2.0.3": version: 2.0.3 resolution: "jackspeak@npm:2.0.3" @@ -4540,445 +3508,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" - dependencies: - execa: "npm:^5.0.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - checksum: 10/3d93742e56b1a73a145d55b66e96711fbf87ef89b96c2fab7cfdfba8ec06612591a982111ca2b712bb853dbc16831ec8b43585a2a96b83862d6767de59cbf83d - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - dedent: "npm:^1.0.0" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^29.7.0" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - pure-rand: "npm:^6.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/716a8e3f40572fd0213bcfc1da90274bf30d856e5133af58089a6ce45089b63f4d679bd44e6be9d320e8390483ebc3ae9921981993986d21639d9019b523123d - languageName: node - linkType: hard - -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - create-jest: "npm:^29.7.0" - exit: "npm:^0.1.2" - import-local: "npm:^3.0.2" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - yargs: "npm:^17.3.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/6cc62b34d002c034203065a31e5e9a19e7c76d9e8ef447a6f70f759c0714cb212c6245f75e270ba458620f9c7b26063cd8cf6cd1f7e3afd659a7cc08add17307 - languageName: node - linkType: hard - -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/test-sequencer": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-jest: "npm:^29.7.0" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - parse-json: "npm:^5.2.0" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 10/6bdf570e9592e7d7dd5124fc0e21f5fe92bd15033513632431b211797e3ab57eaa312f83cc6481b3094b72324e369e876f163579d60016677c117ec4853cf02b - languageName: node - linkType: hard - -"jest-diff@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.6.3" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/6f3a7eb9cd9de5ea9e5aa94aed535631fa6f80221832952839b3cb59dd419b91c20b73887deb0b62230d06d02d6b6cf34ebb810b88d904bb4fe1e2e4f0905c98 - languageName: node - linkType: hard - -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: 10/8d48818055bc96c9e4ec2e217a5a375623c0d0bfae8d22c26e011074940c202aa2534a3362294c81d981046885c05d304376afba9f2874143025981148f3e96d - languageName: node - linkType: hard - -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - pretty-format: "npm:^29.7.0" - checksum: 10/bd1a077654bdaa013b590deb5f7e7ade68f2e3289180a8c8f53bc8a49f3b40740c0ec2d3a3c1aee906f682775be2bebbac37491d80b634d15276b0aa0f2e3fda - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-node@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 10/88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/graceful-fs": "npm:^4.1.3" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 10/8531b42003581cb18a69a2774e68c456fb5a5c3280b1b9b77475af9e346b6a457250f9d756bfeeae2fe6cbc9ef28434c205edab9390ee970a919baddfa08bb85 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/981904a494299cf1e3baed352f8a3bd8b50a8c13a662c509b6a53c31461f94ea3bfeffa9d5efcfeb248e384e318c87de7e3baa6af0f79674e987482aa189af40 - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.6.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9 - languageName: node - linkType: hard - -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 10/db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 10/0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" - dependencies: - jest-regex-util: "npm:^29.6.3" - jest-snapshot: "npm:^29.7.0" - checksum: 10/1e206f94a660d81e977bcfb1baae6450cb4a81c92e06fad376cc5ea16b8e8c6ea78c383f39e95591a9eb7f925b6a1021086c38941aa7c1b8a6a813c2f6e93675 - languageName: node - linkType: hard - -"jest-resolve@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - resolve: "npm:^1.20.0" - resolve.exports: "npm:^2.0.0" - slash: "npm:^3.0.0" - checksum: 10/faa466fd9bc69ea6c37a545a7c6e808e073c66f46ab7d3d8a6ef084f8708f201b85d5fe1799789578b8b47fa1de47b9ee47b414d1863bc117a49e032ba77b7c7 - languageName: node - linkType: hard - -"jest-runner@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/environment": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-leak-detector: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-resolve: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10/9d8748a494bd90f5c82acea99be9e99f21358263ce6feae44d3f1b0cd90991b5df5d18d607e73c07be95861ee86d1cbab2a3fc6ca4b21805f07ac29d47c1da1e - languageName: node - linkType: hard - -"jest-runtime@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/globals": "npm:^29.7.0" - "@jest/source-map": "npm:^29.6.3" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^1.0.0" - collect-v8-coverage: "npm:^1.0.0" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10/59eb58eb7e150e0834a2d0c0d94f2a0b963ae7182cfa6c63f2b49b9c6ef794e5193ef1634e01db41420c36a94cefc512cdd67a055cd3e6fa2f41eaf0f82f5a20 - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@babel/generator": "npm:^7.7.2" - "@babel/plugin-syntax-jsx": "npm:^7.7.2" - "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/types": "npm:^7.3.3" - "@jest/expect-utils": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^29.7.0" - semver: "npm:^7.5.3" - checksum: 10/cb19a3948256de5f922d52f251821f99657339969bf86843bd26cf3332eae94883e8260e3d2fba46129a27c3971c1aa522490e460e16c7fad516e82d10bbf9f8 - languageName: node - linkType: hard - -"jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 10/30d58af6967e7d42bd903ccc098f3b4d3859ed46238fbc88d4add6a3f10bea00c226b93660285f058bc7a65f6f9529cf4eb80f8d4707f79f9e3a23686b4ab8f3 - languageName: node - linkType: hard - -"jest-validate@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-validate@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - leven: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - checksum: 10/8ee1163666d8eaa16d90a989edba2b4a3c8ab0ffaa95ad91b08ca42b015bfb70e164b247a5b17f9de32d096987cada63ed8491ab82761bfb9a28bc34b27ae161 - languageName: node - linkType: hard - -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - jest-util: "npm:^29.7.0" - string-length: "npm:^4.0.1" - checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55 - languageName: node - linkType: hard - -"jest-worker@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-worker@npm:29.7.0" - dependencies: - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 10/364cbaef00d8a2729fc760227ad34b5e60829e0869bd84976bdfbd8c0d0f9c2f22677b3e6dd8afa76ed174765351cd12bae3d4530c62eefb3791055127ca9745 - languageName: node - linkType: hard - -"jest@npm:29.7.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - import-local: "npm:^3.0.2" - jest-cli: "npm:^29.7.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/97023d78446098c586faaa467fbf2c6b07ff06e2c85a19e3926adb5b0effe9ac60c4913ae03e2719f9c01ae8ffd8d92f6b262cedb9555ceeb5d19263d8c6362a - languageName: node - linkType: hard - "jiti@npm:^1.19.1": version: 1.21.0 resolution: "jiti@npm:1.21.0" @@ -4995,15 +3524,10 @@ __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 +"js-tokens@npm:^9.0.0": + version: 9.0.0 + resolution: "js-tokens@npm:9.0.0" + checksum: 10/65e7a55a1a18d61f1cf94bfd7704da870b74337fa08d4c58118e69a8b10225b5ad887ff3ae595d720301b0924811a9b0594c679621a85ecbac6e3aac8533c53b languageName: node linkType: hard @@ -5018,15 +3542,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13 - languageName: node - linkType: hard - "jsesc@npm:^3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" @@ -5084,7 +3599,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.2.2": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -5114,20 +3629,6 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: 10/0c0ecaf00a5c6173d25059c7db2113850b5457016dfa1d0e3ef26da4704fbb186b4938d7611246d86f0ddf1bccf26828daa5877b1f232a65e7373d0122a83e7f - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 10/638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -5186,6 +3687,16 @@ __metadata: languageName: node linkType: hard +"local-pkg@npm:^0.5.0": + version: 0.5.0 + resolution: "local-pkg@npm:0.5.0" + dependencies: + mlly: "npm:^1.4.2" + pkg-types: "npm:^1.0.3" + checksum: 10/20f4caba50dc6fb00ffcc1a78bc94b5acb33995e0aadf4d4edcdeab257e891aa08f50afddf02f3240b2c3d02432bc2078f2a916a280ed716b64753a3d250db70 + languageName: node + linkType: hard + "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -5211,13 +3722,6 @@ __metadata: languageName: node linkType: hard -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: 10/cd0b2819786e6e80cb9f5cda26b1a8fc073daaf04e48d4cb462fa4663ec9adb3a5387aa22d7129e48eed1afa05b482e2a6b79bfc99b86886364449500cbb00fd - languageName: node - linkType: hard - "lodash.isfunction@npm:^3.0.9": version: 3.0.9 resolution: "lodash.isfunction@npm:3.0.9" @@ -5281,7 +3785,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.11, lodash@npm:^4.17.15": +"lodash@npm:^4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -5301,12 +3805,12 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" +"loupe@npm:^2.3.6, loupe@npm:^2.3.7": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" dependencies: - yallist: "npm:^3.0.2" - checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 + get-func-name: "npm:^2.0.1" + checksum: 10/635c8f0914c2ce7ecfe4e239fbaf0ce1d2c00e4246fafcc4ed000bfdb1b8f89d05db1a220054175cca631ebf3894872a26fffba0124477fcb562f78762848fb1 languageName: node linkType: hard @@ -5340,12 +3844,12 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" +"magic-string@npm:^0.30.5": + version: 0.30.10 + resolution: "magic-string@npm:0.30.10" dependencies: - semver: "npm:^7.5.3" - checksum: 10/bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + checksum: 10/9f8bf6363a14c98a9d9f32ef833b194702a5c98fb931b05ac511b76f0b06fd30ed92beda6ca3261d2d52d21e39e891ef1136fbd032023f6cbb02d0b7d5767201 languageName: node linkType: hard @@ -5373,15 +3877,6 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: "npm:1.0.5" - checksum: 10/4c66ddfc654537333da952c084f507fa4c30c707b1635344eb35be894d797ba44c901a9cebe914aa29a7f61357543ba09b09dddbd7f65b4aee756b450f169f40 - languageName: node - linkType: hard - "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" @@ -5607,6 +4102,18 @@ __metadata: languageName: node linkType: hard +"mlly@npm:^1.4.2, mlly@npm:^1.6.1": + version: 1.6.1 + resolution: "mlly@npm:1.6.1" + dependencies: + acorn: "npm:^8.11.3" + pathe: "npm:^1.1.2" + pkg-types: "npm:^1.0.3" + ufo: "npm:^1.3.2" + checksum: 10/00b4c355236eb3d0294106f208718db486f6e34e28bbb7f6965bd9d6237db338e566f2e13489fbf8bfa9b1337c0f2568d4aeac1840f9963054c91881acc974a9 + languageName: node + linkType: hard + "ms@npm:2.1.2, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -5614,6 +4121,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -5648,13 +4164,6 @@ __metadata: languageName: node linkType: hard -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: 10/b7afc2b65e56f7035b1a2eec57ae0fbdee7d742b1cdcd0f4387562b6527a011ab1cbe9f64cc8b3cca61e3297c9637c8bf61cec2e6b8d3a711d4b5267dfafbe02 - languageName: node - linkType: hard - "node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" @@ -5697,13 +4206,6 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -5844,7 +4346,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -5853,6 +4355,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^5.0.0": + version: 5.0.0 + resolution: "p-limit@npm:5.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10/87bf5837dee6942f0dbeff318436179931d9a97848d1b07dbd86140a477a5d2e6b90d9701b210b4e21fe7beaea2979dfde366e4f576fa644a59bd4d6a6371da7 + languageName: node + linkType: hard + "p-locate@npm:^4.1.0": version: 4.1.0 resolution: "p-locate@npm:4.1.0" @@ -5960,6 +4471,20 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10/f201d796351bf7433d147b92c20eb154a4e0ea83512017bf4ec4e492a5d6e738fb45798be4259a61aa81270179fce11026f6ff0d3fa04173041de044defe9d80 + languageName: node + linkType: hard + +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10/b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6 + languageName: node + linkType: hard + "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -5967,7 +4492,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc @@ -5983,19 +4508,14 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f - languageName: node - linkType: hard - -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" +"pkg-types@npm:^1.0.3": + version: 1.1.0 + resolution: "pkg-types@npm:1.1.0" dependencies: - find-up: "npm:^4.0.0" - checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + confbox: "npm:^0.1.7" + mlly: "npm:^1.6.1" + pathe: "npm:^1.1.2" + checksum: 10/c1e32a54a1ae00205eb769f6cdae1f0ed4389c785963875b2d53ce7445ac8f762d0e837a84b1ab802375f1f8f7fd0639ceaf81fc9bb9be84c360a3a9ddbddbae languageName: node linkType: hard @@ -6006,35 +4526,6 @@ __metadata: languageName: node linkType: hard -"pob-babel@npm:38.1.0": - version: 38.1.0 - resolution: "pob-babel@npm:38.1.0" - dependencies: - "@babel/core": "npm:^7.23.2" - "@babel/plugin-transform-runtime": "npm:7.24.3" - "@pob/rollup": "npm:1.1.0" - "@rollup/plugin-babel": "npm:6.0.4" - "@rollup/plugin-json": "npm:6.1.0" - "@rollup/plugin-node-resolve": "npm:15.2.3" - "@rollup/plugin-run": "npm:3.0.2" - babel-preset-pob-env: "npm:11.1.0" - rollup: "npm:3.29.4" - rollup-config-external-dependencies: "npm:^3.0.0" - semver: "npm:^7.3.7" - peerDependencies: - "@babel/core": ^7.23.2 - rollup: 3.29.4 - typescript: ^4.0.3 || ^5.0.0 - peerDependenciesMeta: - rollup: - optional: true - bin: - pob-babel-clean-out: ./bin/pob-babel-clean-out.js - rollup: ./bin/rollup.cjs - checksum: 10/de52ea0cf6560d0d3f959a0d4e6a08f17ecf122b224a878cb2c5b320dd19a7923d8b2c456ebfd426d586cdeb0347b888e929886c3e295f40657727b63a1346f0 - languageName: node - linkType: hard - "pob-dependencies@npm:11.2.2": version: 11.2.2 resolution: "pob-dependencies@npm:11.2.2" @@ -6042,6 +4533,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.38": + version: 8.4.38 + resolution: "postcss@npm:8.4.38" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.2.0" + checksum: 10/6e44a7ed835ffa9a2b096e8d3e5dfc6bcf331a25c48aeb862dd54e3aaecadf814fa22be224fd308f87d08adf2299164f88c5fd5ab1c4ef6cbd693ceb295377f4 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -6058,7 +4560,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -6086,16 +4588,6 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 10/c52536521a4d21eff4f2f2aa4572446cad227464066365a7167e52ccf8d9839c099f9afec1aba0eed3d5a2514b3e79e0b3e7a1dc326b9acde6b75d27ed74b1a9 - languageName: node - linkType: hard - "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -6103,13 +4595,6 @@ __metadata: languageName: node linkType: hard -"pure-rand@npm:^6.0.0": - version: 6.0.4 - resolution: "pure-rand@npm:6.0.4" - checksum: 10/34fed0abe99d3db7ddc459c12e1eda6bff05db6a17f2017a1ae12202271ccf276fb223b442653518c719671c1b339bbf97f27ba9276dba0997c89e45c4e6a3bf - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -6125,9 +4610,9 @@ __metadata: linkType: hard "react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: 10/200cd65bf2e0be7ba6055f647091b725a45dd2a6abef03bf2380ce701fd5edccee40b49b9d15edab7ac08a762bf83cb4081e31ec2673a5bfb549a36ba21570df + version: 18.3.0 + resolution: "react-is@npm:18.3.0" + checksum: 10/1593796b4bde2ce1196f151d926de01054f4345a14a38a8eeb154aed075c2f78658570352cffc71a0a8602cd135b369e604dfa1300ccc85a622ce2073578d160 languageName: node linkType: hard @@ -6229,15 +4714,6 @@ __metadata: languageName: node linkType: hard -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - "resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -6268,14 +4744,7 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.0": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893 - languageName: node - linkType: hard - -"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": +"resolve@npm:^1.10.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -6288,7 +4757,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -6350,6 +4819,21 @@ __metadata: languageName: node linkType: hard +"rollup-plugin-esbuild@npm:6.1.1": + version: 6.1.1 + resolution: "rollup-plugin-esbuild@npm:6.1.1" + dependencies: + "@rollup/pluginutils": "npm:^5.0.5" + debug: "npm:^4.3.4" + es-module-lexer: "npm:^1.3.1" + get-tsconfig: "npm:^4.7.2" + peerDependencies: + esbuild: ">=0.18.0" + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + checksum: 10/bba2d1dfb92a193823ac9dd1cdd44a8fd8cd9f25868e9a22ca077e1b7445feb4eaaf6df051148e367fc902d7d59c9f50efab49086c24c367972f05c86f3a656d + languageName: node + linkType: hard + "rollup@npm:3.29.4": version: 3.29.4 resolution: "rollup@npm:3.29.4" @@ -6364,6 +4848,69 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.13.0": + version: 4.16.4 + resolution: "rollup@npm:4.16.4" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.16.4" + "@rollup/rollup-android-arm64": "npm:4.16.4" + "@rollup/rollup-darwin-arm64": "npm:4.16.4" + "@rollup/rollup-darwin-x64": "npm:4.16.4" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.16.4" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.16.4" + "@rollup/rollup-linux-arm64-gnu": "npm:4.16.4" + "@rollup/rollup-linux-arm64-musl": "npm:4.16.4" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.16.4" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.16.4" + "@rollup/rollup-linux-s390x-gnu": "npm:4.16.4" + "@rollup/rollup-linux-x64-gnu": "npm:4.16.4" + "@rollup/rollup-linux-x64-musl": "npm:4.16.4" + "@rollup/rollup-win32-arm64-msvc": "npm:4.16.4" + "@rollup/rollup-win32-ia32-msvc": "npm:4.16.4" + "@rollup/rollup-win32-x64-msvc": "npm:4.16.4" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10/a5c96c264c7dbea0910dd09ef46a2c2b5f8dd7d431d41ca50c941e8fd6991f5f0645746e5dc1bf332063ca0873b5344d04bc165e276f298acb35143def534485 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -6448,7 +4995,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -6526,6 +5073,13 @@ __metadata: languageName: node linkType: hard +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 10/e93ff66c6531a079af8fb217240df01f980155b5dc408d2d7bebc398dd284e383eb318153bf8acd4db3c4fe799aa5b9a641e38b0ba3b1975700b1c89547ea4e7 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -6540,13 +5094,6 @@ __metadata: languageName: node linkType: hard -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: 10/aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -6602,20 +5149,10 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10/d1514a922ac9c7e4786037eeff6c3322f461cd25da34bb9fefb15387b3490531774e6e31d95ab6d5b84a3e139af9c3a570ccaee6b47bd7ea262691ed3a8bc34e - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 10/74f331cfd2d121c50790c8dd6d3c9de6be21926de80583b23b37029b0f37aefc3e019fa91f9a10a5e120c08135297e1ecf312d561459c45908cb1e0e365f49e5 languageName: node linkType: hard @@ -6669,13 +5206,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 10/c34828732ab8509c2741e5fd1af6b767c3daf2c642f267788f933a65b1614943c282e74c4284f4fa749c264b18ee016a0d37a3e5b73aee446da46277d3a85daa - languageName: node - linkType: hard - "ssri@npm:^9.0.0": version: 9.0.0 resolution: "ssri@npm:9.0.0" @@ -6685,12 +5215,17 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 10/cdc988acbc99075b4b036ac6014e5f1e9afa7e564482b687da6384eee6a1909d7eaffde85b0a17ffbe186c5247faf6c2b7544e802109f63b72c7be69b13151bb +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 10/2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + languageName: node + linkType: hard + +"std-env@npm:^3.5.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10/6ee0cca1add3fd84656b0002cfbc5bfa20340389d9ba4720569840f1caa34bce74322aef4c93f046391583e50649d0cf81a5f8fe1d411e50b659571690a45f12 languageName: node linkType: hard @@ -6701,16 +5236,6 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 10/ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 - languageName: node - linkType: hard - "string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -6800,13 +5325,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 10/9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -6837,6 +5355,15 @@ __metadata: languageName: node linkType: hard +"strip-literal@npm:^2.0.0": + version: 2.1.0 + resolution: "strip-literal@npm:2.1.0" + dependencies: + js-tokens: "npm:^9.0.0" + checksum: 10/21c813aa1e669944e7e2318c8c927939fb90b0c52f53f57282bfc3dd6e19d53f70004f1f1693e33e5e790ad5ef102b0fce2b243808229d1ce07ae71f326c0e82 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -6855,15 +5382,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -6892,17 +5410,6 @@ __metadata: languageName: node linkType: hard -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 10/8fccb2cb6c8fcb6bb4115394feb833f8b6cf4b9503ec2485c2c90febf435cac62abe882a0c5c51a37b9bbe70640cdd05acf5f45e486ac4583389f4b0855f69e5 - languageName: node - linkType: hard - "text-extensions@npm:^2.0.0": version: 2.4.0 resolution: "text-extensions@npm:2.4.0" @@ -6933,17 +5440,24 @@ __metadata: languageName: node linkType: hard -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: 10/cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 +"tinybench@npm:^2.5.1": + version: 2.8.0 + resolution: "tinybench@npm:2.8.0" + checksum: 10/9731d070bedee6d44f3bb565862c284776e6adfd70d81a051a5c79b77479408509b448ad8d467d538d18bc0ae857b3ead8168d7e98d7f1355f8a0b01aa2f163b languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 +"tinypool@npm:^0.8.3": + version: 0.8.4 + resolution: "tinypool@npm:0.8.4" + checksum: 10/7365944c2532f240111443e7012be31a634faf1a02db08a91db3aa07361c26a374d0be00a0f2ea052c4bee39c107ba67f1f814c108d9d51dfc725c559c1a9c03 + languageName: node + linkType: hard + +"tinyspy@npm:^2.2.0": + version: 2.2.1 + resolution: "tinyspy@npm:2.2.1" + checksum: 10/170d6232e87f9044f537b50b406a38fbfd6f79a261cd12b92879947bd340939a833a678632ce4f5c4a6feab4477e9c21cd43faac3b90b68b77dd0536c4149736 languageName: node linkType: hard @@ -6993,7 +5507,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8": +"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d @@ -7014,13 +5528,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f - languageName: node - linkType: hard - "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" @@ -7132,6 +5639,13 @@ __metadata: languageName: node linkType: hard +"ufo@npm:^1.3.2": + version: 1.5.3 + resolution: "ufo@npm:1.5.3" + checksum: 10/2b30dddd873c643efecdb58cfe457183cd4d95937ccdacca6942c697b87a2c578232c25a5149fda85436696bf0fdbc213bf2b220874712bc3e58c0fb00a2c950 + languageName: node + linkType: hard + "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -7144,13 +5658,6 @@ __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 - "unique-filename@npm:^1.1.1": version: 1.1.1 resolution: "unique-filename@npm:1.1.1" @@ -7199,17 +5706,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.2.0 - resolution: "v8-to-istanbul@npm:9.2.0" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^2.0.0" - checksum: 10/18dd8cebfb6790f27f4e41e7cff77c7ab1c8904085f354dd7875e2eb65f4261c4cf40939132502875779d92304bfea46b8336346ecb40b6f33c3a3979e6f5729 - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -7220,6 +5716,111 @@ __metadata: languageName: node linkType: hard +"vite-node@npm:1.5.2": + version: 1.5.2 + resolution: "vite-node@npm:1.5.2" + dependencies: + cac: "npm:^6.7.14" + debug: "npm:^4.3.4" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + vite: "npm:^5.0.0" + bin: + vite-node: vite-node.mjs + checksum: 10/7182d44fc65c63ccbc49e2a87a0bb3193c2aa75d6dcc5c3e5cea259445d958825260a26337fba1116836611b77ef2353fe5acf176965f1492c42790b9c2d964f + languageName: node + linkType: hard + +"vite@npm:^5.0.0": + version: 5.2.10 + resolution: "vite@npm:5.2.10" + dependencies: + esbuild: "npm:^0.20.1" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.38" + rollup: "npm:^4.13.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10/a0c4ac7b95e9a2a59f4e73e5b42a63f33569f5ec505af9dd019f19ff419fd20d66ad9aad6708987d4da173d485358f0024f410af78ac97cf5c92a38f8c96c451 + languageName: node + linkType: hard + +"vitest@npm:1.5.2": + version: 1.5.2 + resolution: "vitest@npm:1.5.2" + dependencies: + "@vitest/expect": "npm:1.5.2" + "@vitest/runner": "npm:1.5.2" + "@vitest/snapshot": "npm:1.5.2" + "@vitest/spy": "npm:1.5.2" + "@vitest/utils": "npm:1.5.2" + acorn-walk: "npm:^8.3.2" + chai: "npm:^4.3.10" + debug: "npm:^4.3.4" + execa: "npm:^8.0.1" + local-pkg: "npm:^0.5.0" + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + std-env: "npm:^3.5.0" + strip-literal: "npm:^2.0.0" + tinybench: "npm:^2.5.1" + tinypool: "npm:^0.8.3" + vite: "npm:^5.0.0" + vite-node: "npm:1.5.2" + why-is-node-running: "npm:^2.2.2" + peerDependencies: + "@edge-runtime/vm": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 1.5.2 + "@vitest/ui": 1.5.2 + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@types/node": + optional: true + "@vitest/browser": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: 10/49d5715315f205640978afeb8597b9bc389ba889c6cb285e49a5bde7f5eb59b0748f2386879e87821f99478643fecc0c98fe83503a0fcd60cb14bba9b4398b9c + languageName: node + linkType: hard + "vscode-oniguruma@npm:^1.7.0": version: 1.7.0 resolution: "vscode-oniguruma@npm:1.7.0" @@ -7234,15 +5835,6 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: "npm:1.0.12" - checksum: 10/ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -7287,6 +5879,18 @@ __metadata: languageName: node linkType: hard +"why-is-node-running@npm:^2.2.2": + version: 2.2.2 + resolution: "why-is-node-running@npm:2.2.2" + dependencies: + siginfo: "npm:^2.0.0" + stackback: "npm:0.0.2" + bin: + why-is-node-running: cli.js + checksum: 10/f3582e0337f4b25537d492b1d40f00b978ce04b1d1eeea8f310bfa8aae8a7d11d118d672e2f0760c164ce3753a620a70aa29ff3620e340197624940cf9c08615 + languageName: node + linkType: hard + "wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -7325,16 +5929,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^3.0.7" - checksum: 10/3be1f5508a46c190619d5386b1ac8f3af3dbe951ed0f7b0b4a0961eed6fc626bd84b50cf4be768dabc0a05b672f5d0c5ee7f42daa557b14415d18c3a13c7d246 - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -7342,13 +5936,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb - languageName: node - linkType: hard - "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" @@ -7377,7 +5964,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0, yargs@npm:^17.3.1": +"yargs@npm:^17.0.0": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -7398,3 +5985,10 @@ __metadata: checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 languageName: node linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 10/2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801 + languageName: node + linkType: hard