@pnpm/installing.deps-installer 1012.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +259 -0
- package/lib/api.d.ts +3 -0
- package/lib/api.js +4 -0
- package/lib/getPeerDependencyIssues.d.ts +5 -0
- package/lib/getPeerDependencyIssues.js +70 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +5 -0
- package/lib/install/checkCompatibility/BreakingChangeError.d.ts +12 -0
- package/lib/install/checkCompatibility/BreakingChangeError.js +13 -0
- package/lib/install/checkCompatibility/CatalogVersionMismatchError.d.ts +9 -0
- package/lib/install/checkCompatibility/CatalogVersionMismatchError.js +11 -0
- package/lib/install/checkCompatibility/ErrorRelatedSources.d.ts +5 -0
- package/lib/install/checkCompatibility/ErrorRelatedSources.js +2 -0
- package/lib/install/checkCompatibility/ModulesBreakingChangeError.d.ts +9 -0
- package/lib/install/checkCompatibility/ModulesBreakingChangeError.js +15 -0
- package/lib/install/checkCompatibility/UnexpectedStoreError.d.ts +11 -0
- package/lib/install/checkCompatibility/UnexpectedStoreError.js +13 -0
- package/lib/install/checkCompatibility/UnexpectedVirtualStoreDirError.d.ts +11 -0
- package/lib/install/checkCompatibility/UnexpectedVirtualStoreDirError.js +13 -0
- package/lib/install/checkCompatibility/index.d.ts +6 -0
- package/lib/install/checkCompatibility/index.js +32 -0
- package/lib/install/checkCustomResolverForceResolve.d.ts +10 -0
- package/lib/install/checkCustomResolverForceResolve.js +47 -0
- package/lib/install/extendInstallOptions.d.ts +163 -0
- package/lib/install/extendInstallOptions.js +156 -0
- package/lib/install/index.d.ts +110 -0
- package/lib/install/index.js +1346 -0
- package/lib/install/link.d.ts +51 -0
- package/lib/install/link.js +382 -0
- package/lib/install/reportPeerDependencyIssues.d.ts +12 -0
- package/lib/install/reportPeerDependencyIssues.js +116 -0
- package/lib/install/validateModules.d.ts +26 -0
- package/lib/install/validateModules.js +135 -0
- package/lib/parseWantedDependencies.d.ts +17 -0
- package/lib/parseWantedDependencies.js +51 -0
- package/lib/pnpmPkgJson.d.ts +3 -0
- package/lib/pnpmPkgJson.js +14 -0
- package/lib/types.d.ts +2 -0
- package/lib/types.js +2 -0
- package/lib/uninstall/removeDeps.d.ts +5 -0
- package/lib/uninstall/removeDeps.js +36 -0
- package/package.json +168 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { PnpmError } from '@pnpm/error';
|
|
4
|
+
import { logger } from '@pnpm/logger';
|
|
5
|
+
import { DEPENDENCIES_FIELDS, } from '@pnpm/types';
|
|
6
|
+
import { rimraf } from '@zkochan/rimraf';
|
|
7
|
+
import enquirer from 'enquirer';
|
|
8
|
+
import { equals } from 'ramda';
|
|
9
|
+
import { checkCompatibility } from './checkCompatibility/index.js';
|
|
10
|
+
export async function validateModules(modules, projects, opts) {
|
|
11
|
+
const rootProject = projects.find(({ id }) => id === '.');
|
|
12
|
+
if (opts.virtualStoreDirMaxLength !== modules.virtualStoreDirMaxLength) {
|
|
13
|
+
if (opts.forceNewModules && (rootProject != null)) {
|
|
14
|
+
await purgeModulesDirsOfImporter(opts, rootProject);
|
|
15
|
+
return { purged: true };
|
|
16
|
+
}
|
|
17
|
+
throw new PnpmError('VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF', 'This modules directory was created using a different virtual-store-dir-max-length value.' +
|
|
18
|
+
' Run "pnpm install" to recreate the modules directory.');
|
|
19
|
+
}
|
|
20
|
+
if (opts.forcePublicHoistPattern &&
|
|
21
|
+
!equals(modules.publicHoistPattern ?? [], opts.publicHoistPattern ?? [])) {
|
|
22
|
+
if (opts.forceNewModules && (rootProject != null)) {
|
|
23
|
+
await purgeModulesDirsOfImporter(opts, rootProject);
|
|
24
|
+
return { purged: true };
|
|
25
|
+
}
|
|
26
|
+
throw new PnpmError('PUBLIC_HOIST_PATTERN_DIFF', 'This modules directory was created using a different public-hoist-pattern value.' +
|
|
27
|
+
' Run "pnpm install" to recreate the modules directory.');
|
|
28
|
+
}
|
|
29
|
+
const importersToPurge = [];
|
|
30
|
+
if (opts.forceHoistPattern && (rootProject != null)) {
|
|
31
|
+
try {
|
|
32
|
+
if (!equals(opts.currentHoistPattern ?? [], opts.hoistPattern ?? [])) {
|
|
33
|
+
throw new PnpmError('HOIST_PATTERN_DIFF', 'This modules directory was created using a different hoist-pattern value.' +
|
|
34
|
+
' Run "pnpm install" to recreate the modules directory.');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) { // eslint-disable-line
|
|
38
|
+
if (!opts.forceNewModules)
|
|
39
|
+
throw err;
|
|
40
|
+
importersToPurge.push(rootProject);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const project of projects) {
|
|
44
|
+
try {
|
|
45
|
+
checkCompatibility(modules, {
|
|
46
|
+
modulesDir: project.modulesDir,
|
|
47
|
+
storeDir: opts.storeDir,
|
|
48
|
+
virtualStoreDir: opts.virtualStoreDir,
|
|
49
|
+
});
|
|
50
|
+
if (opts.lockfileDir !== project.rootDir && (opts.include != null) && modules.included) {
|
|
51
|
+
for (const depsField of DEPENDENCIES_FIELDS) {
|
|
52
|
+
if (opts.include[depsField] !== modules.included[depsField]) {
|
|
53
|
+
throw new PnpmError('INCLUDED_DEPS_CONFLICT', `modules directory (at "${opts.lockfileDir}") was installed with ${stringifyIncludedDeps(modules.included)}. ` +
|
|
54
|
+
`Current install wants ${stringifyIncludedDeps(opts.include)}.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (err) { // eslint-disable-line
|
|
60
|
+
if (!opts.forceNewModules)
|
|
61
|
+
throw err;
|
|
62
|
+
importersToPurge.push(project);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (importersToPurge.length > 0 && (rootProject == null)) {
|
|
66
|
+
importersToPurge.push({
|
|
67
|
+
modulesDir: path.join(opts.lockfileDir, opts.modulesDir),
|
|
68
|
+
rootDir: opts.lockfileDir,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const purged = importersToPurge.length > 0;
|
|
72
|
+
if (purged) {
|
|
73
|
+
await purgeModulesDirsOfImporters(opts, importersToPurge);
|
|
74
|
+
}
|
|
75
|
+
return { purged };
|
|
76
|
+
}
|
|
77
|
+
async function purgeModulesDirsOfImporter(opts, importer) {
|
|
78
|
+
return purgeModulesDirsOfImporters(opts, [importer]);
|
|
79
|
+
}
|
|
80
|
+
async function purgeModulesDirsOfImporters(opts, importers) {
|
|
81
|
+
if (opts.confirmModulesPurge ?? true) {
|
|
82
|
+
if (!process.stdin.isTTY) {
|
|
83
|
+
throw new PnpmError('ABORTED_REMOVE_MODULES_DIR_NO_TTY', 'Aborted removal of modules directory due to no TTY', {
|
|
84
|
+
hint: 'If you are running pnpm in CI, set the CI environment variable to "true", or set "confirmModulesPurge" to "false".',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const confirmed = await enquirer.prompt({
|
|
88
|
+
type: 'confirm',
|
|
89
|
+
name: 'question',
|
|
90
|
+
message: importers.length === 1
|
|
91
|
+
? `The modules directory at "${importers[0].modulesDir}" will be removed and reinstalled from scratch. Proceed?`
|
|
92
|
+
: 'The modules directories will be removed and reinstalled from scratch. Proceed?',
|
|
93
|
+
initial: true,
|
|
94
|
+
});
|
|
95
|
+
if (!confirmed.question) {
|
|
96
|
+
throw new PnpmError('ABORTED_REMOVE_MODULES_DIR', 'Aborted removal of modules directory');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
await Promise.all(importers.map(async (importer) => {
|
|
100
|
+
logger.info({
|
|
101
|
+
message: `Recreating ${importer.modulesDir}`,
|
|
102
|
+
prefix: importer.rootDir,
|
|
103
|
+
});
|
|
104
|
+
try {
|
|
105
|
+
// We don't remove the actual modules directory, just the contents of it.
|
|
106
|
+
// 1. we will need the directory anyway.
|
|
107
|
+
// 2. in some setups, pnpm won't even have permission to remove the modules directory.
|
|
108
|
+
await removeContentsOfDir(importer.modulesDir, opts.virtualStoreDir);
|
|
109
|
+
}
|
|
110
|
+
catch (err) { // eslint-disable-line
|
|
111
|
+
if (err.code !== 'ENOENT')
|
|
112
|
+
throw err;
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
async function removeContentsOfDir(dir, virtualStoreDir) {
|
|
117
|
+
const items = await fs.readdir(dir);
|
|
118
|
+
await Promise.all(items.map(async (item) => {
|
|
119
|
+
// The non-pnpm related hidden files are kept
|
|
120
|
+
if (item[0] === '.' &&
|
|
121
|
+
item !== '.bin' &&
|
|
122
|
+
item !== '.modules.yaml' &&
|
|
123
|
+
!dirsAreEqual(path.join(dir, item), virtualStoreDir)) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
await rimraf(path.join(dir, item));
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
function dirsAreEqual(dir1, dir2) {
|
|
130
|
+
return path.relative(dir1, dir2) === '';
|
|
131
|
+
}
|
|
132
|
+
function stringifyIncludedDeps(included) {
|
|
133
|
+
return DEPENDENCIES_FIELDS.filter((depsField) => included[depsField]).join(', ');
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=validateModules.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Catalog } from '@pnpm/catalogs.types';
|
|
2
|
+
import type { WantedDependency } from '@pnpm/installing.deps-resolver';
|
|
3
|
+
import type { Dependencies } from '@pnpm/types';
|
|
4
|
+
export declare function parseWantedDependencies(rawWantedDependencies: string[], opts: {
|
|
5
|
+
allowNew: boolean;
|
|
6
|
+
currentBareSpecifiers: Dependencies;
|
|
7
|
+
defaultTag: string;
|
|
8
|
+
dev: boolean;
|
|
9
|
+
devDependencies: Dependencies;
|
|
10
|
+
optional: boolean;
|
|
11
|
+
optionalDependencies: Dependencies;
|
|
12
|
+
overrides?: Record<string, string>;
|
|
13
|
+
updateWorkspaceDependencies?: boolean;
|
|
14
|
+
preferredSpecs?: Record<string, string>;
|
|
15
|
+
saveCatalogName?: string;
|
|
16
|
+
defaultCatalog?: Catalog;
|
|
17
|
+
}): WantedDependency[];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { parseWantedDependency } from '@pnpm/resolving.parse-wanted-dependency';
|
|
2
|
+
export function parseWantedDependencies(rawWantedDependencies, opts) {
|
|
3
|
+
return rawWantedDependencies
|
|
4
|
+
.map((rawWantedDependency) => {
|
|
5
|
+
const parsed = parseWantedDependency(rawWantedDependency);
|
|
6
|
+
const alias = parsed['alias'];
|
|
7
|
+
let bareSpecifier = parsed['bareSpecifier'];
|
|
8
|
+
if (!opts.allowNew && (!alias || !opts.currentBareSpecifiers[alias])) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
if (alias && opts.defaultCatalog?.[alias] && ((!opts.currentBareSpecifiers[alias] && bareSpecifier === undefined) ||
|
|
12
|
+
opts.defaultCatalog[alias] === bareSpecifier ||
|
|
13
|
+
opts.defaultCatalog[alias] === opts.currentBareSpecifiers[alias])) {
|
|
14
|
+
bareSpecifier = 'catalog:';
|
|
15
|
+
}
|
|
16
|
+
if (alias && opts.currentBareSpecifiers[alias]) {
|
|
17
|
+
bareSpecifier ??= opts.currentBareSpecifiers[alias];
|
|
18
|
+
}
|
|
19
|
+
const result = {
|
|
20
|
+
alias,
|
|
21
|
+
dev: Boolean(opts.dev || alias && !!opts.devDependencies[alias]),
|
|
22
|
+
optional: Boolean(opts.optional || alias && !!opts.optionalDependencies[alias]),
|
|
23
|
+
prevSpecifier: alias && opts.currentBareSpecifiers[alias],
|
|
24
|
+
saveCatalogName: opts.saveCatalogName,
|
|
25
|
+
};
|
|
26
|
+
if (bareSpecifier) {
|
|
27
|
+
return {
|
|
28
|
+
...result,
|
|
29
|
+
bareSpecifier,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (alias && opts.preferredSpecs?.[alias]) {
|
|
33
|
+
return {
|
|
34
|
+
...result,
|
|
35
|
+
bareSpecifier: opts.preferredSpecs[alias],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (alias && opts.overrides?.[alias]) {
|
|
39
|
+
return {
|
|
40
|
+
...result,
|
|
41
|
+
bareSpecifier: opts.overrides[alias],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
...result,
|
|
46
|
+
bareSpecifier: opts.defaultTag,
|
|
47
|
+
};
|
|
48
|
+
})
|
|
49
|
+
.filter((wd) => wd !== null);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=parseWantedDependencies.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { loadJsonFileSync } from 'load-json-file';
|
|
3
|
+
let pnpmPkgJson;
|
|
4
|
+
try {
|
|
5
|
+
pnpmPkgJson = loadJsonFileSync(path.resolve(import.meta.dirname, '../package.json'));
|
|
6
|
+
}
|
|
7
|
+
catch (err) { // eslint-disable-line
|
|
8
|
+
pnpmPkgJson = {
|
|
9
|
+
name: 'pnpm',
|
|
10
|
+
version: '0.0.0',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export { pnpmPkgJson };
|
|
14
|
+
//# sourceMappingURL=pnpmPkgJson.js.map
|
package/lib/types.d.ts
ADDED
package/lib/types.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { packageManifestLogger } from '@pnpm/core-loggers';
|
|
2
|
+
import { DEPENDENCIES_FIELDS, } from '@pnpm/types';
|
|
3
|
+
export async function removeDeps(packageManifest, removedPackages, opts) {
|
|
4
|
+
if (opts.saveType) {
|
|
5
|
+
if (packageManifest[opts.saveType] == null)
|
|
6
|
+
return packageManifest;
|
|
7
|
+
for (const dependency of removedPackages) {
|
|
8
|
+
delete packageManifest[opts.saveType][dependency];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
for (const depField of DEPENDENCIES_FIELDS) {
|
|
13
|
+
if (!packageManifest[depField])
|
|
14
|
+
continue;
|
|
15
|
+
for (const dependency of removedPackages) {
|
|
16
|
+
delete packageManifest[depField][dependency];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (packageManifest.peerDependencies != null) {
|
|
21
|
+
for (const removedDependency of removedPackages) {
|
|
22
|
+
delete packageManifest.peerDependencies[removedDependency];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (packageManifest.dependenciesMeta != null) {
|
|
26
|
+
for (const removedDependency of removedPackages) {
|
|
27
|
+
delete packageManifest.dependenciesMeta[removedDependency];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
packageManifestLogger.debug({
|
|
31
|
+
prefix: opts.prefix,
|
|
32
|
+
updated: packageManifest,
|
|
33
|
+
});
|
|
34
|
+
return packageManifest;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=removeDeps.js.map
|
package/package.json
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pnpm/installing.deps-installer",
|
|
3
|
+
"version": "1012.0.1",
|
|
4
|
+
"description": "Fast, disk space efficient installation engine",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pnpm",
|
|
7
|
+
"pnpm11",
|
|
8
|
+
"dependencies",
|
|
9
|
+
"dependency manager",
|
|
10
|
+
"efficient",
|
|
11
|
+
"fast",
|
|
12
|
+
"hardlinks",
|
|
13
|
+
"install",
|
|
14
|
+
"installer",
|
|
15
|
+
"link",
|
|
16
|
+
"lockfile",
|
|
17
|
+
"modules",
|
|
18
|
+
"npm",
|
|
19
|
+
"package manager",
|
|
20
|
+
"package.json",
|
|
21
|
+
"packages",
|
|
22
|
+
"prune",
|
|
23
|
+
"rapid",
|
|
24
|
+
"remove",
|
|
25
|
+
"shrinkwrap",
|
|
26
|
+
"symlinks",
|
|
27
|
+
"uninstall"
|
|
28
|
+
],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"funding": "https://opencollective.com/pnpm",
|
|
31
|
+
"repository": "https://github.com/pnpm/pnpm/tree/main/installing/deps-installer",
|
|
32
|
+
"homepage": "https://github.com/pnpm/pnpm/tree/main/installing/deps-installer#readme",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/pnpm/pnpm/issues"
|
|
35
|
+
},
|
|
36
|
+
"type": "module",
|
|
37
|
+
"main": "lib/index.js",
|
|
38
|
+
"types": "lib/index.d.ts",
|
|
39
|
+
"exports": {
|
|
40
|
+
".": "./lib/index.js"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"lib",
|
|
44
|
+
"!*.map"
|
|
45
|
+
],
|
|
46
|
+
"directories": {
|
|
47
|
+
"test": "test"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@pnpm/npm-package-arg": "^2.0.0",
|
|
51
|
+
"@pnpm/util.lex-comparator": "^3.0.2",
|
|
52
|
+
"@zkochan/rimraf": "^4.0.0",
|
|
53
|
+
"enquirer": "^2.4.1",
|
|
54
|
+
"is-inner-link": "^5.0.0",
|
|
55
|
+
"is-subdir": "^2.0.0",
|
|
56
|
+
"load-json-file": "^7.0.1",
|
|
57
|
+
"normalize-path": "^3.0.0",
|
|
58
|
+
"p-filter": "^4.1.0",
|
|
59
|
+
"p-limit": "^7.1.0",
|
|
60
|
+
"path-exists": "^5.0.0",
|
|
61
|
+
"ramda": "npm:@pnpm/ramda@0.28.1",
|
|
62
|
+
"run-groups": "^5.0.0",
|
|
63
|
+
"semver": "^7.7.2",
|
|
64
|
+
"@pnpm/bins.remover": "1000.0.15",
|
|
65
|
+
"@pnpm/building.after-install": "1000.0.0-0",
|
|
66
|
+
"@pnpm/building.policy": "1000.0.0-0",
|
|
67
|
+
"@pnpm/catalogs.protocol-parser": "1001.0.0",
|
|
68
|
+
"@pnpm/bins.linker": "1000.2.6",
|
|
69
|
+
"@pnpm/config.matcher": "1000.1.0",
|
|
70
|
+
"@pnpm/catalogs.resolver": "1000.0.5",
|
|
71
|
+
"@pnpm/building.during-install": "1000.0.0-0",
|
|
72
|
+
"@pnpm/config.normalize-registries": "1000.1.4",
|
|
73
|
+
"@pnpm/catalogs.types": "1000.0.0",
|
|
74
|
+
"@pnpm/config.parse-overrides": "1001.0.3",
|
|
75
|
+
"@pnpm/constants": "1001.3.1",
|
|
76
|
+
"@pnpm/core-loggers": "1001.0.4",
|
|
77
|
+
"@pnpm/crypto.hash": "1000.2.1",
|
|
78
|
+
"@pnpm/deps.graph-sequencer": "1000.0.0",
|
|
79
|
+
"@pnpm/deps.path": "1001.1.3",
|
|
80
|
+
"@pnpm/deps.graph-hasher": "1002.0.8",
|
|
81
|
+
"@pnpm/crypto.object-hasher": "1000.1.0",
|
|
82
|
+
"@pnpm/error": "1000.0.5",
|
|
83
|
+
"@pnpm/exec.lifecycle": "1001.0.25",
|
|
84
|
+
"@pnpm/fs.read-modules-dir": "1000.0.0",
|
|
85
|
+
"@pnpm/fs.symlink-dependency": "1000.0.12",
|
|
86
|
+
"@pnpm/hooks.read-package-hook": "1000.0.15",
|
|
87
|
+
"@pnpm/installing.deps-resolver": "1008.3.1",
|
|
88
|
+
"@pnpm/installing.context": "1001.1.8",
|
|
89
|
+
"@pnpm/hooks.types": "1001.0.12",
|
|
90
|
+
"@pnpm/installing.linking.direct-dep-linker": "1000.0.12",
|
|
91
|
+
"@pnpm/installing.deps-restorer": "1006.0.0",
|
|
92
|
+
"@pnpm/installing.linking.hoist": "1002.0.8",
|
|
93
|
+
"@pnpm/installing.linking.modules-cleaner": "1001.0.23",
|
|
94
|
+
"@pnpm/installing.modules-yaml": "1000.3.6",
|
|
95
|
+
"@pnpm/installing.package-requester": "1008.0.0",
|
|
96
|
+
"@pnpm/lockfile.filtering": "1001.0.21",
|
|
97
|
+
"@pnpm/lockfile.preferred-versions": "1000.0.22",
|
|
98
|
+
"@pnpm/lockfile.pruner": "1001.0.17",
|
|
99
|
+
"@pnpm/lockfile.fs": "1001.1.21",
|
|
100
|
+
"@pnpm/lockfile.settings-checker": "1001.0.16",
|
|
101
|
+
"@pnpm/lockfile.utils": "1003.0.3",
|
|
102
|
+
"@pnpm/lockfile.to-pnp": "1001.0.23",
|
|
103
|
+
"@pnpm/lockfile.walker": "1001.0.16",
|
|
104
|
+
"@pnpm/lockfile.verification": "1001.2.9",
|
|
105
|
+
"@pnpm/patching.config": "1001.0.11",
|
|
106
|
+
"@pnpm/resolving.parse-wanted-dependency": "1001.0.0",
|
|
107
|
+
"@pnpm/pkg-manifest.utils": "1001.0.6",
|
|
108
|
+
"@pnpm/resolving.resolver-base": "1005.1.0",
|
|
109
|
+
"@pnpm/types": "1000.9.0",
|
|
110
|
+
"@pnpm/workspace.project-manifest-reader": "1001.1.4",
|
|
111
|
+
"@pnpm/store.controller-types": "1004.1.0"
|
|
112
|
+
},
|
|
113
|
+
"peerDependencies": {
|
|
114
|
+
"@pnpm/logger": ">=1001.0.0 <1002.0.0",
|
|
115
|
+
"@pnpm/worker": "^1000.3.0"
|
|
116
|
+
},
|
|
117
|
+
"devDependencies": {
|
|
118
|
+
"@jest/globals": "30.0.5",
|
|
119
|
+
"@pnpm/registry-mock": "5.2.4",
|
|
120
|
+
"@types/fs-extra": "^9.0.13",
|
|
121
|
+
"@types/is-windows": "^1.0.2",
|
|
122
|
+
"@types/normalize-path": "^3.0.2",
|
|
123
|
+
"@types/ramda": "0.29.12",
|
|
124
|
+
"@types/semver": "7.7.1",
|
|
125
|
+
"@yarnpkg/core": "4.2.0",
|
|
126
|
+
"ci-info": "^4.3.0",
|
|
127
|
+
"deep-require-cwd": "1.0.0",
|
|
128
|
+
"execa": "npm:safe-execa@0.3.0",
|
|
129
|
+
"exists-link": "2.0.0",
|
|
130
|
+
"is-windows": "^1.0.2",
|
|
131
|
+
"nock": "13.3.4",
|
|
132
|
+
"path-name": "^1.0.0",
|
|
133
|
+
"read-yaml-file": "^3.0.0",
|
|
134
|
+
"resolve-link-target": "^3.0.0",
|
|
135
|
+
"symlink-dir": "^7.0.0",
|
|
136
|
+
"write-json-file": "^7.0.0",
|
|
137
|
+
"write-yaml-file": "^6.0.0",
|
|
138
|
+
"@pnpm/assert-project": "1000.0.4",
|
|
139
|
+
"@pnpm/assert-store": "1000.0.3",
|
|
140
|
+
"@pnpm/fs.msgpack-file": "1100.0.0-0",
|
|
141
|
+
"@pnpm/installing.deps-installer": "1012.0.1",
|
|
142
|
+
"@pnpm/lockfile.types": "1002.0.2",
|
|
143
|
+
"@pnpm/network.git-utils": "1000.0.0",
|
|
144
|
+
"@pnpm/logger": "1001.0.1",
|
|
145
|
+
"@pnpm/prepare": "1000.0.4",
|
|
146
|
+
"@pnpm/pkg-manifest.reader": "1000.1.2",
|
|
147
|
+
"@pnpm/store.cafs": "1000.0.19",
|
|
148
|
+
"@pnpm/store.path": "1000.0.5",
|
|
149
|
+
"@pnpm/store.index": "1000.0.0-0",
|
|
150
|
+
"@pnpm/test-fixtures": "1000.0.0",
|
|
151
|
+
"@pnpm/test-ipc-server": "1000.0.0",
|
|
152
|
+
"@pnpm/testing.temp-store": "1000.0.23"
|
|
153
|
+
},
|
|
154
|
+
"engines": {
|
|
155
|
+
"node": ">=22.13"
|
|
156
|
+
},
|
|
157
|
+
"jest": {
|
|
158
|
+
"preset": "@pnpm/jest-config/with-registry"
|
|
159
|
+
},
|
|
160
|
+
"scripts": {
|
|
161
|
+
"start": "tsgo --watch",
|
|
162
|
+
"lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
163
|
+
"test-with-preview": "preview && pnpm run test:e2e",
|
|
164
|
+
"_test": "cross-env PNPM_REGISTRY_MOCK_PORT=7769 NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules --disable-warning=ExperimentalWarning --disable-warning=DEP0169\" jest",
|
|
165
|
+
"test": "pnpm run compile && pnpm run _test",
|
|
166
|
+
"compile": "tsgo --build && pnpm run lint --fix"
|
|
167
|
+
}
|
|
168
|
+
}
|