mirror of
https://github.com/renovatebot/renovate.git
synced 2025-01-09 13:36:26 +00:00
Compare commits
18 commits
29c2b6f78c
...
973bf85c8c
Author | SHA1 | Date | |
---|---|---|---|
|
973bf85c8c | ||
|
c04c64f5e7 | ||
|
8a9d54e160 | ||
|
c598c6ffa1 | ||
|
8e37c8f100 | ||
|
e50bc2f9b5 | ||
|
ea5c14f003 | ||
|
c9657a0040 | ||
|
8ba3bd6eee | ||
|
9f23483b4f | ||
|
f40a42dd68 | ||
|
4da6b6daf4 | ||
|
794f042068 | ||
|
17efd68390 | ||
|
591b401368 | ||
|
50b0d82fb5 | ||
|
891256f71a | ||
|
0702e3d85b |
12 changed files with 781 additions and 103 deletions
|
@ -17,6 +17,7 @@ import type {
|
||||||
import type { NpmLockFiles, NpmManagerData } from '../types';
|
import type { NpmLockFiles, NpmManagerData } from '../types';
|
||||||
import { getExtractedConstraints } from './common/dependency';
|
import { getExtractedConstraints } from './common/dependency';
|
||||||
import { extractPackageJson } from './common/package-file';
|
import { extractPackageJson } from './common/package-file';
|
||||||
|
import { extractPnpmWorkspaceFile } from './pnpm';
|
||||||
import { postExtract } from './post';
|
import { postExtract } from './post';
|
||||||
import type { NpmPackage } from './types';
|
import type { NpmPackage } from './types';
|
||||||
import { isZeroInstall } from './yarn';
|
import { isZeroInstall } from './yarn';
|
||||||
|
@ -229,12 +230,24 @@ export async function extractAllPackageFiles(
|
||||||
const content = await readLocalFile(packageFile, 'utf8');
|
const content = await readLocalFile(packageFile, 'utf8');
|
||||||
// istanbul ignore else
|
// istanbul ignore else
|
||||||
if (content) {
|
if (content) {
|
||||||
const deps = await extractPackageFile(content, packageFile, config);
|
// TODO(fpapado): for PR dicussion, consider this vs. a post hook, where
|
||||||
if (deps) {
|
// we look for pnpm-workspace.yaml in the siblings
|
||||||
npmFiles.push({
|
if (packageFile === 'pnpm-workspace.yaml') {
|
||||||
...deps,
|
const deps = extractPnpmWorkspaceFile(content, packageFile);
|
||||||
packageFile,
|
if (deps) {
|
||||||
});
|
npmFiles.push({
|
||||||
|
...deps,
|
||||||
|
packageFile,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const deps = await extractPackageFile(content, packageFile, config);
|
||||||
|
if (deps) {
|
||||||
|
npmFiles.push({
|
||||||
|
...deps,
|
||||||
|
packageFile,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.debug({ packageFile }, `No content found`);
|
logger.debug({ packageFile }, `No content found`);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { codeBlock } from 'common-tags';
|
||||||
import { Fixtures } from '../../../../../test/fixtures';
|
import { Fixtures } from '../../../../../test/fixtures';
|
||||||
import { getFixturePath, logger, partial } from '../../../../../test/util';
|
import { getFixturePath, logger, partial } from '../../../../../test/util';
|
||||||
import { GlobalConfig } from '../../../../config/global';
|
import { GlobalConfig } from '../../../../config/global';
|
||||||
|
@ -8,6 +9,7 @@ import type { NpmManagerData } from '../types';
|
||||||
import {
|
import {
|
||||||
detectPnpmWorkspaces,
|
detectPnpmWorkspaces,
|
||||||
extractPnpmFilters,
|
extractPnpmFilters,
|
||||||
|
extractPnpmWorkspaceFile,
|
||||||
findPnpmWorkspace,
|
findPnpmWorkspace,
|
||||||
getPnpmLock,
|
getPnpmLock,
|
||||||
} from './pnpm';
|
} from './pnpm';
|
||||||
|
@ -270,4 +272,62 @@ describe('modules/manager/npm/extract/pnpm', () => {
|
||||||
expect(res.lockedVersionsWithPath).toBeUndefined();
|
expect(res.lockedVersionsWithPath).toBeUndefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('.extractPnpmWorkspaceFile()', () => {
|
||||||
|
it('ignores invalid pnpm-workspace.yaml file', () => {
|
||||||
|
expect(extractPnpmWorkspaceFile('', 'pnpm-workspace.yaml')).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles empty catalog entries', () => {
|
||||||
|
expect(
|
||||||
|
extractPnpmWorkspaceFile(
|
||||||
|
codeBlock`
|
||||||
|
catalog:
|
||||||
|
catalogs:
|
||||||
|
`,
|
||||||
|
'pnpm-workspace.yaml',
|
||||||
|
),
|
||||||
|
).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('parses valid pnpm-workspace.yaml file', () => {
|
||||||
|
expect(
|
||||||
|
extractPnpmWorkspaceFile(
|
||||||
|
codeBlock`
|
||||||
|
catalog:
|
||||||
|
react: 18.3.0
|
||||||
|
|
||||||
|
catalogs:
|
||||||
|
react17:
|
||||||
|
react: 17.0.2
|
||||||
|
`,
|
||||||
|
'pnpm-workspace.yaml',
|
||||||
|
),
|
||||||
|
).toMatchObject({
|
||||||
|
deps: [
|
||||||
|
{
|
||||||
|
currentValue: '18.3.0',
|
||||||
|
datasource: 'npm',
|
||||||
|
depName: 'react',
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
prettyDepType: 'pnpm.catalog',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
currentValue: '17.0.2',
|
||||||
|
datasource: 'npm',
|
||||||
|
depName: 'react',
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
prettyDepType: 'pnpm.catalog',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'react17',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
packageFile: 'pnpm-workspace.yaml',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import is from '@sindresorhus/is';
|
import is from '@sindresorhus/is';
|
||||||
import { findPackages } from 'find-packages';
|
import { findPackages } from 'find-packages';
|
||||||
import upath from 'upath';
|
import upath from 'upath';
|
||||||
|
import { z } from 'zod';
|
||||||
import { GlobalConfig } from '../../../../config/global';
|
import { GlobalConfig } from '../../../../config/global';
|
||||||
import { logger } from '../../../../logger';
|
import { logger } from '../../../../logger';
|
||||||
import {
|
import {
|
||||||
|
@ -10,10 +11,19 @@ import {
|
||||||
readLocalFile,
|
readLocalFile,
|
||||||
} from '../../../../util/fs';
|
} from '../../../../util/fs';
|
||||||
import { parseSingleYaml } from '../../../../util/yaml';
|
import { parseSingleYaml } from '../../../../util/yaml';
|
||||||
import type { PackageFile } from '../../types';
|
import type {
|
||||||
|
PackageDependency,
|
||||||
|
PackageFile,
|
||||||
|
PackageFileContent,
|
||||||
|
} from '../../types';
|
||||||
import type { PnpmDependencySchema, PnpmLockFile } from '../post-update/types';
|
import type { PnpmDependencySchema, PnpmLockFile } from '../post-update/types';
|
||||||
import type { NpmManagerData } from '../types';
|
import type { NpmManagerData } from '../types';
|
||||||
import type { LockFile, PnpmWorkspaceFile } from './types';
|
import { extractDependency, parseDepName } from './common/dependency';
|
||||||
|
import type {
|
||||||
|
LockFile,
|
||||||
|
NpmPackageDependency,
|
||||||
|
PnpmWorkspaceFile,
|
||||||
|
} from './types';
|
||||||
|
|
||||||
function isPnpmLockfile(obj: any): obj is PnpmLockFile {
|
function isPnpmLockfile(obj: any): obj is PnpmLockFile {
|
||||||
return is.plainObject(obj) && 'lockfileVersion' in obj;
|
return is.plainObject(obj) && 'lockfileVersion' in obj;
|
||||||
|
@ -86,8 +96,8 @@ export async function detectPnpmWorkspaces(
|
||||||
const packagePathCache = new Map<string, string[] | null>();
|
const packagePathCache = new Map<string, string[] | null>();
|
||||||
|
|
||||||
for (const p of packageFiles) {
|
for (const p of packageFiles) {
|
||||||
const { packageFile, managerData } = p;
|
const { packageFile, managerData = {} } = p;
|
||||||
const { pnpmShrinkwrap } = managerData as NpmManagerData;
|
const { pnpmShrinkwrap } = managerData as Partial<NpmManagerData>;
|
||||||
|
|
||||||
// check if pnpmShrinkwrap-file has already been provided
|
// check if pnpmShrinkwrap-file has already been provided
|
||||||
if (pnpmShrinkwrap) {
|
if (pnpmShrinkwrap) {
|
||||||
|
@ -222,3 +232,108 @@ function getLockedDependencyVersions(
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A pnpm catalog is either the default catalog (catalog:, catlog:default), or a
|
||||||
|
* named one (under catalogs:)
|
||||||
|
*/
|
||||||
|
type PnpmCatalog = { name: string; dependencies: NpmPackageDependency };
|
||||||
|
|
||||||
|
export function extractPnpmWorkspaceFile(
|
||||||
|
content: string,
|
||||||
|
packageFile: string,
|
||||||
|
): PackageFile | null {
|
||||||
|
logger.trace(`pnpm.extractPnpmWorkspaceFile(${packageFile})`);
|
||||||
|
|
||||||
|
let pnpmCatalogs: Array<PnpmCatalog>;
|
||||||
|
try {
|
||||||
|
pnpmCatalogs = parsePnpmCatalogs(content);
|
||||||
|
} catch {
|
||||||
|
logger.debug({ packageFile }, `Invalid pnpm workspace YAML.`);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const extracted = extractPnpmCatalogDeps(pnpmCatalogs);
|
||||||
|
|
||||||
|
if (!extracted) {
|
||||||
|
logger.debug({ packageFile }, 'No dependencies found');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug(extracted, 'Extracted catalog dependencies.');
|
||||||
|
|
||||||
|
return {
|
||||||
|
...extracted,
|
||||||
|
packageFile,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractPnpmCatalogDeps(
|
||||||
|
catalogs: Array<PnpmCatalog>,
|
||||||
|
): PackageFileContent<NpmManagerData> | null {
|
||||||
|
const CATALOG_DEPENDENCY = 'pnpm.catalog';
|
||||||
|
|
||||||
|
const deps: PackageDependency[] = [];
|
||||||
|
|
||||||
|
for (const catalog of catalogs) {
|
||||||
|
for (const [key, val] of Object.entries(catalog.dependencies)) {
|
||||||
|
const depName = parseDepName(CATALOG_DEPENDENCY, key);
|
||||||
|
let dep: PackageDependency = {
|
||||||
|
depType: CATALOG_DEPENDENCY,
|
||||||
|
// TODO(fpapado): for PR discussion, consider how users might be able to
|
||||||
|
// match on specific catalogs for their config.
|
||||||
|
//
|
||||||
|
// For example, we could change depType to `pnpm.catalog.${string}`, so
|
||||||
|
// that users can match use `{matchDepTypes: ["pnpm.catalog.default"]}`,
|
||||||
|
// `{matchDepTypes: ["pnpm.catalog.react17"]}` and so on.
|
||||||
|
//
|
||||||
|
// Another option would be to mess with depName/packageName.
|
||||||
|
//
|
||||||
|
// Is there precedence for something similar?
|
||||||
|
depName,
|
||||||
|
managerData: {
|
||||||
|
// We assign the name of the catalog, in order to know which fields to
|
||||||
|
// update later on.
|
||||||
|
catalogName: catalog.name,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
if (depName !== key) {
|
||||||
|
dep.managerData!.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: fix type #22198
|
||||||
|
dep = {
|
||||||
|
...dep,
|
||||||
|
...extractDependency(CATALOG_DEPENDENCY, depName, val!),
|
||||||
|
prettyDepType: CATALOG_DEPENDENCY,
|
||||||
|
};
|
||||||
|
dep.prettyDepType = CATALOG_DEPENDENCY;
|
||||||
|
deps.push(dep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
deps,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export const pnpmCatalogsSchema = z.object({
|
||||||
|
catalog: z.optional(z.record(z.string())),
|
||||||
|
catalogs: z.optional(z.record(z.record(z.string()))),
|
||||||
|
});
|
||||||
|
|
||||||
|
function parsePnpmCatalogs(content: string): Array<PnpmCatalog> {
|
||||||
|
const { catalog: defaultCatalogDeps, catalogs: namedCatalogs } =
|
||||||
|
parseSingleYaml(content, { customSchema: pnpmCatalogsSchema });
|
||||||
|
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
name: 'default',
|
||||||
|
dependencies: defaultCatalogDeps ?? {},
|
||||||
|
},
|
||||||
|
...Object.entries(namedCatalogs ?? {}).map(([name, dependencies]) => ({
|
||||||
|
name,
|
||||||
|
dependencies,
|
||||||
|
})),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
|
@ -36,6 +36,8 @@ export interface LockFile {
|
||||||
|
|
||||||
export interface PnpmWorkspaceFile {
|
export interface PnpmWorkspaceFile {
|
||||||
packages: string[];
|
packages: string[];
|
||||||
|
catalog?: Partial<Record<string, string>>;
|
||||||
|
catalogs?: Partial<Record<string, Partial<Record<string, string>>>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type OverrideDependency = Record<string, RecursiveOverride>;
|
export type OverrideDependency = Record<string, RecursiveOverride>;
|
||||||
|
|
|
@ -20,7 +20,8 @@ export const url = 'https://docs.npmjs.com';
|
||||||
export const categories: Category[] = ['js'];
|
export const categories: Category[] = ['js'];
|
||||||
|
|
||||||
export const defaultConfig = {
|
export const defaultConfig = {
|
||||||
fileMatch: ['(^|/)package\\.json$'],
|
// TODO(fpapado): for PR dicussion, consider this vs. a post hook
|
||||||
|
fileMatch: ['(^|/)package\\.json$', '(^|/)pnpm-workspace\\.yaml$'],
|
||||||
digest: {
|
digest: {
|
||||||
prBodyDefinitions: {
|
prBodyDefinitions: {
|
||||||
Change:
|
Change:
|
||||||
|
|
33
lib/modules/manager/npm/update/dependency/common.ts
Normal file
33
lib/modules/manager/npm/update/dependency/common.ts
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import { logger } from '../../../../../logger';
|
||||||
|
import type { Upgrade } from '../../../types';
|
||||||
|
|
||||||
|
export function getNewGitValue(upgrade: Upgrade): string | undefined {
|
||||||
|
if (!upgrade.currentRawValue) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (upgrade.currentDigest) {
|
||||||
|
logger.debug('Updating git digest');
|
||||||
|
return upgrade.currentRawValue.replace(
|
||||||
|
upgrade.currentDigest,
|
||||||
|
// TODO #22198
|
||||||
|
|
||||||
|
upgrade.newDigest!.substring(0, upgrade.currentDigest.length),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
logger.debug('Updating git version tag');
|
||||||
|
return upgrade.currentRawValue.replace(
|
||||||
|
upgrade.currentValue,
|
||||||
|
upgrade.newValue,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getNewNpmAliasValue(
|
||||||
|
value: string | undefined,
|
||||||
|
upgrade: Upgrade,
|
||||||
|
): string | undefined {
|
||||||
|
if (!upgrade.npmPackageAlias) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return `npm:${upgrade.packageName}@${value}`;
|
||||||
|
}
|
|
@ -11,6 +11,8 @@ import type {
|
||||||
RecursiveOverride,
|
RecursiveOverride,
|
||||||
} from '../../extract/types';
|
} from '../../extract/types';
|
||||||
import type { NpmDepType, NpmManagerData } from '../../types';
|
import type { NpmDepType, NpmManagerData } from '../../types';
|
||||||
|
import { getNewGitValue, getNewNpmAliasValue } from './common';
|
||||||
|
import { updatePnpmCatalogDependency } from './pnpm';
|
||||||
|
|
||||||
function renameObjKey(
|
function renameObjKey(
|
||||||
oldObj: DependenciesMeta,
|
oldObj: DependenciesMeta,
|
||||||
|
@ -115,29 +117,16 @@ export function updateDependency({
|
||||||
fileContent,
|
fileContent,
|
||||||
upgrade,
|
upgrade,
|
||||||
}: UpdateDependencyConfig): string | null {
|
}: UpdateDependencyConfig): string | null {
|
||||||
|
if (upgrade.depType === 'pnpm.catalog') {
|
||||||
|
return updatePnpmCatalogDependency({ fileContent, upgrade });
|
||||||
|
}
|
||||||
|
|
||||||
const { depType, managerData } = upgrade;
|
const { depType, managerData } = upgrade;
|
||||||
const depName: string = managerData?.key || upgrade.depName;
|
const depName: string = managerData?.key || upgrade.depName;
|
||||||
let { newValue } = upgrade;
|
let { newValue } = upgrade;
|
||||||
if (upgrade.currentRawValue) {
|
|
||||||
if (upgrade.currentDigest) {
|
|
||||||
logger.debug('Updating package.json git digest');
|
|
||||||
newValue = upgrade.currentRawValue.replace(
|
|
||||||
upgrade.currentDigest,
|
|
||||||
// TODO #22198
|
|
||||||
|
|
||||||
upgrade.newDigest!.substring(0, upgrade.currentDigest.length),
|
newValue = getNewGitValue(upgrade) ?? newValue;
|
||||||
);
|
newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;
|
||||||
} else {
|
|
||||||
logger.debug('Updating package.json git version tag');
|
|
||||||
newValue = upgrade.currentRawValue.replace(
|
|
||||||
upgrade.currentValue,
|
|
||||||
upgrade.newValue,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (upgrade.npmPackageAlias) {
|
|
||||||
newValue = `npm:${upgrade.packageName}@${newValue}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);
|
logger.debug(`npm.updateDependency(): ${depType}.${depName} = ${newValue}`);
|
||||||
try {
|
try {
|
||||||
|
|
336
lib/modules/manager/npm/update/dependency/pnpm.spec.ts
Normal file
336
lib/modules/manager/npm/update/dependency/pnpm.spec.ts
Normal file
|
@ -0,0 +1,336 @@
|
||||||
|
import { codeBlock } from 'common-tags';
|
||||||
|
import * as npmUpdater from '../..';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Per the YAML spec, a document ends with a newline. The 'yaml' library always
|
||||||
|
* uses that when serialising, but `codeBlock` strips the last indentation. This
|
||||||
|
* helper makes assertions simpler.
|
||||||
|
*/
|
||||||
|
function yamlCodeBlock(
|
||||||
|
literals: TemplateStringsArray,
|
||||||
|
...placeholders: any[]
|
||||||
|
): string {
|
||||||
|
return codeBlock(literals, placeholders) + '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('modules/manager/npm/update/dependency/pnpm', () => {
|
||||||
|
it('handles implicit default catalog dependency', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'react',
|
||||||
|
newValue: '19.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
react: 18.3.1
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
react: 19.0.0
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles explicit default catalog dependency', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'react',
|
||||||
|
newValue: '19.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalogs:
|
||||||
|
default:
|
||||||
|
react: 18.3.1
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalogs:
|
||||||
|
default:
|
||||||
|
react: 19.0.0
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles explicit named catalog dependency', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'react',
|
||||||
|
newValue: '19.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'react17',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
|
catalogs:
|
||||||
|
react17:
|
||||||
|
react: 17.0.0
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
|
catalogs:
|
||||||
|
react17:
|
||||||
|
react: 19.0.0
|
||||||
|
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('replaces package', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'config',
|
||||||
|
newName: 'abc',
|
||||||
|
newValue: '2.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
config: 1.21.0
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
abc: 2.0.0
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('replaces a github dependency value', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'gulp',
|
||||||
|
currentValue: 'v4.0.0-alpha.2',
|
||||||
|
currentRawValue: 'gulpjs/gulp#v4.0.0-alpha.2',
|
||||||
|
newValue: 'v4.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
gulp: gulpjs/gulp#v4.0.0-alpha.2
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
gulp: gulpjs/gulp#v4.0.0
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('replaces a npm package alias', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'hapi',
|
||||||
|
npmPackageAlias: true,
|
||||||
|
packageName: '@hapi/hapi',
|
||||||
|
currentValue: '18.3.0',
|
||||||
|
newValue: '18.3.1',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
hapi: npm:@hapi/hapi@18.3.0
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
hapi: npm:@hapi/hapi@18.3.1
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('replaces a github short hash', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'gulp',
|
||||||
|
currentDigest: 'abcdef7',
|
||||||
|
currentRawValue: 'gulpjs/gulp#abcdef7',
|
||||||
|
newDigest: '0000000000111111111122222222223333333333',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
gulp: gulpjs/gulp#abcdef7
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
gulp: gulpjs/gulp#0000000
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('replaces a github fully specified version', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'n',
|
||||||
|
currentValue: 'v1.0.0',
|
||||||
|
currentRawValue: 'git+https://github.com/owner/n#v1.0.0',
|
||||||
|
newValue: 'v1.1.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
n: git+https://github.com/owner/n#v1.0.0
|
||||||
|
`;
|
||||||
|
const expected = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
n: git+https://github.com/owner/n#v1.1.0
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns null if the dependency is not present in the target catalog', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'react-not',
|
||||||
|
newValue: '19.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
|
||||||
|
catalog:
|
||||||
|
react: 18.3.1
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns null if catalogs are missing', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'react',
|
||||||
|
newValue: '19.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const pnpmWorkspaceYaml = yamlCodeBlock`
|
||||||
|
packages:
|
||||||
|
- pkg-a
|
||||||
|
`;
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: pnpmWorkspaceYaml,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns null if empty file', () => {
|
||||||
|
const upgrade = {
|
||||||
|
depType: 'pnpm.catalog',
|
||||||
|
depName: 'react',
|
||||||
|
newValue: '19.0.0',
|
||||||
|
managerData: {
|
||||||
|
catalogName: 'default',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const testContent = npmUpdater.updateDependency({
|
||||||
|
fileContent: null as never,
|
||||||
|
upgrade,
|
||||||
|
});
|
||||||
|
expect(testContent).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
104
lib/modules/manager/npm/update/dependency/pnpm.ts
Normal file
104
lib/modules/manager/npm/update/dependency/pnpm.ts
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
import is from '@sindresorhus/is';
|
||||||
|
import { stringify } from 'yaml';
|
||||||
|
import { logger } from '../../../../../logger';
|
||||||
|
import { parseSingleYamlDocument } from '../../../../../util/yaml';
|
||||||
|
import type { UpdateDependencyConfig } from '../../../types';
|
||||||
|
import { pnpmCatalogsSchema } from '../../extract/pnpm';
|
||||||
|
import { getNewGitValue, getNewNpmAliasValue } from './common';
|
||||||
|
|
||||||
|
export function updatePnpmCatalogDependency({
|
||||||
|
fileContent,
|
||||||
|
upgrade,
|
||||||
|
}: UpdateDependencyConfig): string | null {
|
||||||
|
const { depType, managerData, depName } = upgrade;
|
||||||
|
|
||||||
|
const catalogName = managerData?.catalogName;
|
||||||
|
|
||||||
|
if (!is.string(catalogName)) {
|
||||||
|
logger.error(
|
||||||
|
'No catalogName was found; this is likely an extraction error.',
|
||||||
|
);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
let { newValue } = upgrade;
|
||||||
|
|
||||||
|
newValue = getNewGitValue(upgrade) ?? newValue;
|
||||||
|
newValue = getNewNpmAliasValue(newValue, upgrade) ?? newValue;
|
||||||
|
|
||||||
|
logger.debug(
|
||||||
|
`npm.updatePnpmCatalogDependency(): ${depType}:${managerData?.catalogName}.${depName} = ${newValue}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
let document;
|
||||||
|
let parsedContents;
|
||||||
|
|
||||||
|
try {
|
||||||
|
document = parseSingleYamlDocument(fileContent);
|
||||||
|
parsedContents = pnpmCatalogsSchema.parse(document.toJS());
|
||||||
|
} catch (err) {
|
||||||
|
logger.debug({ err }, 'Could not parse pnpm-workspace YAML file.');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// In pnpm-workspace.yaml, the default catalog can be either `catalog` or
|
||||||
|
// `catalog.default`, but not both (pnpm throws outright with a config error).
|
||||||
|
// Thus, we must check which entry is being used, to reference it from the
|
||||||
|
// right place.
|
||||||
|
const usesImplicitDefaultCatalog = parsedContents.catalog !== undefined;
|
||||||
|
|
||||||
|
// Save the old version
|
||||||
|
const oldVersion =
|
||||||
|
catalogName === 'default' && usesImplicitDefaultCatalog
|
||||||
|
? parsedContents.catalog?.[depName!]
|
||||||
|
: parsedContents.catalogs?.[catalogName]?.[depName!];
|
||||||
|
|
||||||
|
if (oldVersion === newValue) {
|
||||||
|
logger.trace('Version is already updated');
|
||||||
|
return fileContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the value
|
||||||
|
const path = getDepPath({
|
||||||
|
depName: depName!,
|
||||||
|
catalogName,
|
||||||
|
usesImplicitDefaultCatalog,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!document.hasIn(path)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
document.setIn(path, newValue);
|
||||||
|
|
||||||
|
// Update the name, for replacements
|
||||||
|
if (upgrade.newName) {
|
||||||
|
const newPath = getDepPath({
|
||||||
|
depName: upgrade.newName,
|
||||||
|
catalogName,
|
||||||
|
usesImplicitDefaultCatalog,
|
||||||
|
});
|
||||||
|
const oldValue = document.getIn(path);
|
||||||
|
|
||||||
|
document.deleteIn(path);
|
||||||
|
document.setIn(newPath, oldValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return stringify(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDepPath({
|
||||||
|
catalogName,
|
||||||
|
depName,
|
||||||
|
usesImplicitDefaultCatalog,
|
||||||
|
}: {
|
||||||
|
usesImplicitDefaultCatalog: boolean;
|
||||||
|
catalogName: string;
|
||||||
|
depName: string;
|
||||||
|
}): string[] {
|
||||||
|
if (catalogName === 'default' && usesImplicitDefaultCatalog) {
|
||||||
|
return ['catalog', depName];
|
||||||
|
} else {
|
||||||
|
return ['catalogs', catalogName, depName];
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
import type {
|
import type {
|
||||||
CreateNodeOptions,
|
CreateNodeOptions,
|
||||||
|
Document,
|
||||||
DocumentOptions,
|
DocumentOptions,
|
||||||
ParseOptions,
|
ParseOptions,
|
||||||
SchemaOptions,
|
SchemaOptions,
|
||||||
|
@ -20,6 +21,13 @@ interface YamlOptions<
|
||||||
removeTemplates?: boolean;
|
removeTemplates?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface YamlParseDocumentOptions
|
||||||
|
extends ParseOptions,
|
||||||
|
DocumentOptions,
|
||||||
|
SchemaOptions {
|
||||||
|
removeTemplates?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
interface YamlOptionsMultiple<
|
interface YamlOptionsMultiple<
|
||||||
ResT = unknown,
|
ResT = unknown,
|
||||||
Schema extends ZodType<ResT> = ZodType<ResT>,
|
Schema extends ZodType<ResT> = ZodType<ResT>,
|
||||||
|
@ -117,6 +125,29 @@ export function parseSingleYaml<ResT = unknown>(
|
||||||
content: string,
|
content: string,
|
||||||
options?: YamlOptions<ResT>,
|
options?: YamlOptions<ResT>,
|
||||||
): ResT {
|
): ResT {
|
||||||
|
const rawDocument = parseSingleYamlDocument(content, options);
|
||||||
|
|
||||||
|
const document = rawDocument.toJS({ maxAliasCount: 10000 });
|
||||||
|
const schema = options?.customSchema;
|
||||||
|
if (!schema) {
|
||||||
|
return document as ResT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return schema.parse(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a YAML string into a Document representation.
|
||||||
|
*
|
||||||
|
* Only a single document is supported.
|
||||||
|
*
|
||||||
|
* @param content
|
||||||
|
* @param options
|
||||||
|
*/
|
||||||
|
export function parseSingleYamlDocument(
|
||||||
|
content: string,
|
||||||
|
options?: YamlParseDocumentOptions,
|
||||||
|
): Document {
|
||||||
const massagedContent = massageContent(content, options);
|
const massagedContent = massageContent(content, options);
|
||||||
const rawDocument = parseDocument(
|
const rawDocument = parseDocument(
|
||||||
massagedContent,
|
massagedContent,
|
||||||
|
@ -127,13 +158,7 @@ export function parseSingleYaml<ResT = unknown>(
|
||||||
throw new AggregateError(rawDocument.errors, 'Failed to parse YAML file');
|
throw new AggregateError(rawDocument.errors, 'Failed to parse YAML file');
|
||||||
}
|
}
|
||||||
|
|
||||||
const document = rawDocument.toJS({ maxAliasCount: 10000 });
|
return rawDocument;
|
||||||
const schema = options?.customSchema;
|
|
||||||
if (!schema) {
|
|
||||||
return document as ResT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return schema.parse(document);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function dump(obj: any, opts?: DumpOptions): string {
|
export function dump(obj: any, opts?: DumpOptions): string {
|
||||||
|
|
|
@ -299,7 +299,7 @@
|
||||||
"@types/mdast": "3.0.15",
|
"@types/mdast": "3.0.15",
|
||||||
"@types/moo": "0.5.9",
|
"@types/moo": "0.5.9",
|
||||||
"@types/ms": "0.7.34",
|
"@types/ms": "0.7.34",
|
||||||
"@types/node": "20.17.10",
|
"@types/node": "20.17.11",
|
||||||
"@types/parse-link-header": "2.0.3",
|
"@types/parse-link-header": "2.0.3",
|
||||||
"@types/punycode": "2.1.4",
|
"@types/punycode": "2.1.4",
|
||||||
"@types/semver": "7.5.8",
|
"@types/semver": "7.5.8",
|
||||||
|
|
130
pnpm-lock.yaml
130
pnpm-lock.yaml
|
@ -470,8 +470,8 @@ importers:
|
||||||
specifier: 0.7.34
|
specifier: 0.7.34
|
||||||
version: 0.7.34
|
version: 0.7.34
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: 20.17.10
|
specifier: 20.17.11
|
||||||
version: 20.17.10
|
version: 20.17.11
|
||||||
'@types/parse-link-header':
|
'@types/parse-link-header':
|
||||||
specifier: 2.0.3
|
specifier: 2.0.3
|
||||||
version: 2.0.3
|
version: 2.0.3
|
||||||
|
@ -540,7 +540,7 @@ importers:
|
||||||
version: 2.31.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
|
version: 2.31.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
|
||||||
eslint-plugin-jest:
|
eslint-plugin-jest:
|
||||||
specifier: 28.10.0
|
specifier: 28.10.0
|
||||||
version: 28.10.0(@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2)
|
version: 28.10.0(@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))(typescript@5.7.2)
|
||||||
eslint-plugin-jest-formatting:
|
eslint-plugin-jest-formatting:
|
||||||
specifier: 3.1.0
|
specifier: 3.1.0
|
||||||
version: 3.1.0(eslint@8.57.1)
|
version: 3.1.0(eslint@8.57.1)
|
||||||
|
@ -564,16 +564,16 @@ importers:
|
||||||
version: 9.1.7
|
version: 9.1.7
|
||||||
jest:
|
jest:
|
||||||
specifier: 29.7.0
|
specifier: 29.7.0
|
||||||
version: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
version: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
jest-extended:
|
jest-extended:
|
||||||
specifier: 4.0.2
|
specifier: 4.0.2
|
||||||
version: 4.0.2(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))
|
version: 4.0.2(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))
|
||||||
jest-mock:
|
jest-mock:
|
||||||
specifier: 29.7.0
|
specifier: 29.7.0
|
||||||
version: 29.7.0
|
version: 29.7.0
|
||||||
jest-mock-extended:
|
jest-mock-extended:
|
||||||
specifier: 3.0.7
|
specifier: 3.0.7
|
||||||
version: 3.0.7(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2)
|
version: 3.0.7(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))(typescript@5.7.2)
|
||||||
jest-snapshot:
|
jest-snapshot:
|
||||||
specifier: 29.7.0
|
specifier: 29.7.0
|
||||||
version: 29.7.0
|
version: 29.7.0
|
||||||
|
@ -609,10 +609,10 @@ importers:
|
||||||
version: 3.0.3
|
version: 3.0.3
|
||||||
ts-jest:
|
ts-jest:
|
||||||
specifier: 29.2.5
|
specifier: 29.2.5
|
||||||
version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2)
|
version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))(typescript@5.7.2)
|
||||||
ts-node:
|
ts-node:
|
||||||
specifier: 10.9.2
|
specifier: 10.9.2
|
||||||
version: 10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)
|
version: 10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)
|
||||||
type-fest:
|
type-fest:
|
||||||
specifier: 4.31.0
|
specifier: 4.31.0
|
||||||
version: 4.31.0
|
version: 4.31.0
|
||||||
|
@ -2121,8 +2121,8 @@ packages:
|
||||||
'@types/ms@0.7.34':
|
'@types/ms@0.7.34':
|
||||||
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
|
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
|
||||||
|
|
||||||
'@types/node@20.17.10':
|
'@types/node@20.17.11':
|
||||||
resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==}
|
resolution: {integrity: sha512-Ept5glCK35R8yeyIeYlRIZtX6SLRyqMhOFTgj5SOkMpLTdw3SEHI9fHx60xaUZ+V1aJxQJODE+7/j5ocZydYTg==}
|
||||||
|
|
||||||
'@types/normalize-package-data@2.4.4':
|
'@types/normalize-package-data@2.4.4':
|
||||||
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
|
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
|
||||||
|
@ -7496,27 +7496,27 @@ snapshots:
|
||||||
'@jest/console@29.7.0':
|
'@jest/console@29.7.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
jest-message-util: 29.7.0
|
jest-message-util: 29.7.0
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
slash: 3.0.0
|
slash: 3.0.0
|
||||||
|
|
||||||
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))':
|
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/console': 29.7.0
|
'@jest/console': 29.7.0
|
||||||
'@jest/reporters': 29.7.0
|
'@jest/reporters': 29.7.0
|
||||||
'@jest/test-result': 29.7.0
|
'@jest/test-result': 29.7.0
|
||||||
'@jest/transform': 29.7.0
|
'@jest/transform': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
ansi-escapes: 4.3.2
|
ansi-escapes: 4.3.2
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
ci-info: 3.9.0
|
ci-info: 3.9.0
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
jest-changed-files: 29.7.0
|
jest-changed-files: 29.7.0
|
||||||
jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest-config: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
jest-haste-map: 29.7.0
|
jest-haste-map: 29.7.0
|
||||||
jest-message-util: 29.7.0
|
jest-message-util: 29.7.0
|
||||||
jest-regex-util: 29.6.3
|
jest-regex-util: 29.6.3
|
||||||
|
@ -7541,7 +7541,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/fake-timers': 29.7.0
|
'@jest/fake-timers': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
jest-mock: 29.7.0
|
jest-mock: 29.7.0
|
||||||
|
|
||||||
'@jest/expect-utils@29.4.1':
|
'@jest/expect-utils@29.4.1':
|
||||||
|
@ -7563,7 +7563,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@sinonjs/fake-timers': 10.3.0
|
'@sinonjs/fake-timers': 10.3.0
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
jest-message-util: 29.7.0
|
jest-message-util: 29.7.0
|
||||||
jest-mock: 29.7.0
|
jest-mock: 29.7.0
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
|
@ -7585,7 +7585,7 @@ snapshots:
|
||||||
'@jest/transform': 29.7.0
|
'@jest/transform': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
collect-v8-coverage: 1.0.2
|
collect-v8-coverage: 1.0.2
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
|
@ -7655,7 +7655,7 @@ snapshots:
|
||||||
'@jest/schemas': 29.6.3
|
'@jest/schemas': 29.6.3
|
||||||
'@types/istanbul-lib-coverage': 2.0.6
|
'@types/istanbul-lib-coverage': 2.0.6
|
||||||
'@types/istanbul-reports': 3.0.4
|
'@types/istanbul-reports': 3.0.4
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
'@types/yargs': 17.0.33
|
'@types/yargs': 17.0.33
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
|
|
||||||
|
@ -8703,7 +8703,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/aws4@1.11.6':
|
'@types/aws4@1.11.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/babel__core@7.20.5':
|
'@types/babel__core@7.20.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -8728,27 +8728,27 @@ snapshots:
|
||||||
|
|
||||||
'@types/better-sqlite3@7.6.12':
|
'@types/better-sqlite3@7.6.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/breejs__later@4.1.5': {}
|
'@types/breejs__later@4.1.5': {}
|
||||||
|
|
||||||
'@types/bunyan@1.8.11':
|
'@types/bunyan@1.8.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/bunyan@1.8.9':
|
'@types/bunyan@1.8.9':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/cacache@17.0.2':
|
'@types/cacache@17.0.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/cacheable-request@6.0.3':
|
'@types/cacheable-request@6.0.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/http-cache-semantics': 4.0.4
|
'@types/http-cache-semantics': 4.0.4
|
||||||
'@types/keyv': 3.1.4
|
'@types/keyv': 3.1.4
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
'@types/responselike': 1.0.3
|
'@types/responselike': 1.0.3
|
||||||
|
|
||||||
'@types/callsite@1.0.34': {}
|
'@types/callsite@1.0.34': {}
|
||||||
|
@ -8779,7 +8779,7 @@ snapshots:
|
||||||
'@types/fs-extra@11.0.4':
|
'@types/fs-extra@11.0.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/jsonfile': 6.1.4
|
'@types/jsonfile': 6.1.4
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/git-url-parse@9.0.3': {}
|
'@types/git-url-parse@9.0.3': {}
|
||||||
|
|
||||||
|
@ -8789,7 +8789,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/graceful-fs@4.1.9':
|
'@types/graceful-fs@4.1.9':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/http-cache-semantics@4.0.4': {}
|
'@types/http-cache-semantics@4.0.4': {}
|
||||||
|
|
||||||
|
@ -8815,13 +8815,13 @@ snapshots:
|
||||||
|
|
||||||
'@types/jsonfile@6.1.4':
|
'@types/jsonfile@6.1.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/katex@0.16.7': {}
|
'@types/katex@0.16.7': {}
|
||||||
|
|
||||||
'@types/keyv@3.1.4':
|
'@types/keyv@3.1.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/linkify-it@5.0.0': {}
|
'@types/linkify-it@5.0.0': {}
|
||||||
|
|
||||||
|
@ -8840,7 +8840,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/marshal@0.5.3':
|
'@types/marshal@0.5.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/mdast@3.0.15':
|
'@types/mdast@3.0.15':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -8856,7 +8856,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/ms@0.7.34': {}
|
'@types/ms@0.7.34': {}
|
||||||
|
|
||||||
'@types/node@20.17.10':
|
'@types/node@20.17.11':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 6.19.8
|
undici-types: 6.19.8
|
||||||
|
|
||||||
|
@ -8870,7 +8870,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/responselike@1.0.3':
|
'@types/responselike@1.0.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
|
|
||||||
'@types/semver-stable@3.0.2': {}
|
'@types/semver-stable@3.0.2': {}
|
||||||
|
|
||||||
|
@ -8890,7 +8890,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/tar@6.1.13':
|
'@types/tar@6.1.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
minipass: 4.2.8
|
minipass: 4.2.8
|
||||||
|
|
||||||
'@types/tmp@0.2.6': {}
|
'@types/tmp@0.2.6': {}
|
||||||
|
@ -8915,7 +8915,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/yauzl@2.10.3':
|
'@types/yauzl@2.10.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)':
|
'@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)':
|
||||||
|
@ -9680,13 +9680,13 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
|
|
||||||
create-jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)):
|
create-jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest-config: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
prompts: 2.4.2
|
prompts: 2.4.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -10109,13 +10109,13 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 8.57.1
|
eslint: 8.57.1
|
||||||
|
|
||||||
eslint-plugin-jest@28.10.0(@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2):
|
eslint-plugin-jest@28.10.0(@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))(typescript@5.7.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2)
|
'@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2)
|
||||||
eslint: 8.57.1
|
eslint: 8.57.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)
|
'@typescript-eslint/eslint-plugin': 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)
|
||||||
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
@ -11146,7 +11146,7 @@ snapshots:
|
||||||
'@jest/expect': 29.7.0
|
'@jest/expect': 29.7.0
|
||||||
'@jest/test-result': 29.7.0
|
'@jest/test-result': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
co: 4.6.0
|
co: 4.6.0
|
||||||
dedent: 1.5.3
|
dedent: 1.5.3
|
||||||
|
@ -11166,16 +11166,16 @@ snapshots:
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
jest-cli@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)):
|
jest-cli@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
'@jest/test-result': 29.7.0
|
'@jest/test-result': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
create-jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
create-jest: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
exit: 0.1.2
|
exit: 0.1.2
|
||||||
import-local: 3.2.0
|
import-local: 3.2.0
|
||||||
jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest-config: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
jest-validate: 29.7.0
|
jest-validate: 29.7.0
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
|
@ -11185,7 +11185,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- ts-node
|
||||||
|
|
||||||
jest-config@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)):
|
jest-config@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.26.0
|
'@babel/core': 7.26.0
|
||||||
'@jest/test-sequencer': 29.7.0
|
'@jest/test-sequencer': 29.7.0
|
||||||
|
@ -11210,8 +11210,8 @@ snapshots:
|
||||||
slash: 3.0.0
|
slash: 3.0.0
|
||||||
strip-json-comments: 3.1.1
|
strip-json-comments: 3.1.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
ts-node: 10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)
|
ts-node: 10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -11240,16 +11240,16 @@ snapshots:
|
||||||
'@jest/environment': 29.7.0
|
'@jest/environment': 29.7.0
|
||||||
'@jest/fake-timers': 29.7.0
|
'@jest/fake-timers': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
jest-mock: 29.7.0
|
jest-mock: 29.7.0
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
|
|
||||||
jest-extended@4.0.2(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))):
|
jest-extended@4.0.2(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))):
|
||||||
dependencies:
|
dependencies:
|
||||||
jest-diff: 29.7.0
|
jest-diff: 29.7.0
|
||||||
jest-get-type: 29.6.3
|
jest-get-type: 29.6.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
|
|
||||||
jest-get-type@29.6.3: {}
|
jest-get-type@29.6.3: {}
|
||||||
|
|
||||||
|
@ -11257,7 +11257,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/graceful-fs': 4.1.9
|
'@types/graceful-fs': 4.1.9
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
anymatch: 3.1.3
|
anymatch: 3.1.3
|
||||||
fb-watchman: 2.0.2
|
fb-watchman: 2.0.2
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
|
@ -11300,16 +11300,16 @@ snapshots:
|
||||||
slash: 3.0.0
|
slash: 3.0.0
|
||||||
stack-utils: 2.0.6
|
stack-utils: 2.0.6
|
||||||
|
|
||||||
jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2):
|
jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))(typescript@5.7.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
ts-essentials: 10.0.4(typescript@5.7.2)
|
ts-essentials: 10.0.4(typescript@5.7.2)
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
|
|
||||||
jest-mock@29.7.0:
|
jest-mock@29.7.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
|
|
||||||
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
|
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
|
||||||
|
@ -11344,7 +11344,7 @@ snapshots:
|
||||||
'@jest/test-result': 29.7.0
|
'@jest/test-result': 29.7.0
|
||||||
'@jest/transform': 29.7.0
|
'@jest/transform': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
emittery: 0.13.1
|
emittery: 0.13.1
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
|
@ -11372,7 +11372,7 @@ snapshots:
|
||||||
'@jest/test-result': 29.7.0
|
'@jest/test-result': 29.7.0
|
||||||
'@jest/transform': 29.7.0
|
'@jest/transform': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
cjs-module-lexer: 1.4.1
|
cjs-module-lexer: 1.4.1
|
||||||
collect-v8-coverage: 1.0.2
|
collect-v8-coverage: 1.0.2
|
||||||
|
@ -11418,7 +11418,7 @@ snapshots:
|
||||||
jest-util@29.7.0:
|
jest-util@29.7.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
ci-info: 3.9.0
|
ci-info: 3.9.0
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
|
@ -11437,7 +11437,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/test-result': 29.7.0
|
'@jest/test-result': 29.7.0
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
ansi-escapes: 4.3.2
|
ansi-escapes: 4.3.2
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
emittery: 0.13.1
|
emittery: 0.13.1
|
||||||
|
@ -11446,17 +11446,17 @@ snapshots:
|
||||||
|
|
||||||
jest-worker@29.7.0:
|
jest-worker@29.7.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
merge-stream: 2.0.0
|
merge-stream: 2.0.0
|
||||||
supports-color: 8.1.1
|
supports-color: 8.1.1
|
||||||
|
|
||||||
jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)):
|
jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
import-local: 3.2.0
|
import-local: 3.2.0
|
||||||
jest-cli: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest-cli: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
@ -12619,7 +12619,7 @@ snapshots:
|
||||||
'@protobufjs/path': 1.1.2
|
'@protobufjs/path': 1.1.2
|
||||||
'@protobufjs/pool': 1.1.0
|
'@protobufjs/pool': 1.1.0
|
||||||
'@protobufjs/utf8': 1.1.0
|
'@protobufjs/utf8': 1.1.0
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
long: 5.2.3
|
long: 5.2.3
|
||||||
|
|
||||||
protocols@2.0.1: {}
|
protocols@2.0.1: {}
|
||||||
|
@ -13382,12 +13382,12 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
|
|
||||||
ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2):
|
ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2)))(typescript@5.7.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
bs-logger: 0.2.6
|
bs-logger: 0.2.6
|
||||||
ejs: 3.1.10
|
ejs: 3.1.10
|
||||||
fast-json-stable-stringify: 2.1.0
|
fast-json-stable-stringify: 2.1.0
|
||||||
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2))
|
jest: 29.7.0(@types/node@20.17.11)(ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2))
|
||||||
jest-util: 29.7.0
|
jest-util: 29.7.0
|
||||||
json5: 2.2.3
|
json5: 2.2.3
|
||||||
lodash.memoize: 4.1.2
|
lodash.memoize: 4.1.2
|
||||||
|
@ -13401,14 +13401,14 @@ snapshots:
|
||||||
'@jest/types': 29.6.3
|
'@jest/types': 29.6.3
|
||||||
babel-jest: 29.7.0(@babel/core@7.26.0)
|
babel-jest: 29.7.0(@babel/core@7.26.0)
|
||||||
|
|
||||||
ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.10)(typescript@5.7.2):
|
ts-node@10.9.2(@swc/core@1.10.4)(@types/node@20.17.11)(typescript@5.7.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cspotcode/source-map-support': 0.8.1
|
'@cspotcode/source-map-support': 0.8.1
|
||||||
'@tsconfig/node10': 1.0.11
|
'@tsconfig/node10': 1.0.11
|
||||||
'@tsconfig/node12': 1.0.11
|
'@tsconfig/node12': 1.0.11
|
||||||
'@tsconfig/node14': 1.0.3
|
'@tsconfig/node14': 1.0.3
|
||||||
'@tsconfig/node16': 1.0.4
|
'@tsconfig/node16': 1.0.4
|
||||||
'@types/node': 20.17.10
|
'@types/node': 20.17.11
|
||||||
acorn: 8.14.0
|
acorn: 8.14.0
|
||||||
acorn-walk: 8.3.4
|
acorn-walk: 8.3.4
|
||||||
arg: 4.1.3
|
arg: 4.1.3
|
||||||
|
|
Loading…
Reference in a new issue