@pnpm/worker 1000.6.6 → 1100.0.0

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.
@@ -0,0 +1 @@
1
+ export declare function equalOrSemverEqual(version1: string, version2: string): boolean;
@@ -0,0 +1,12 @@
1
+ import semver from 'semver';
2
+ export function equalOrSemverEqual(version1, version2) {
3
+ if (version1 === version2)
4
+ return true;
5
+ try {
6
+ return semver.eq(version1, version2, { loose: true });
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ //# sourceMappingURL=equalOrSemverEqual.js.map
package/lib/index.d.ts CHANGED
@@ -1,17 +1,20 @@
1
1
  import { PnpmError } from '@pnpm/error';
2
- import { type PackageFilesIndex } from '@pnpm/store.cafs';
3
- import { type DependencyManifest } from '@pnpm/types';
4
- import { type TarballExtractMessage, type AddDirToStoreMessage, type LinkPkgMessage, type SymlinkAllModulesMessage } from './types.js';
2
+ import type { FilesMap, PackageFilesResponse } from '@pnpm/store.cafs-types';
3
+ import type { StoreIndex } from '@pnpm/store.index';
4
+ import type { BundledManifest } from '@pnpm/types';
5
+ import type { AddDirToStoreMessage, LinkPkgMessage, SymlinkAllModulesMessage, TarballExtractMessage } from './types.js';
5
6
  export declare function restartWorkerPool(): Promise<void>;
6
7
  export declare function finishWorkers(): Promise<void>;
7
8
  export declare function calcMaxWorkers(): number;
8
9
  interface AddFilesResult {
9
- filesIndex: Record<string, string>;
10
- manifest: DependencyManifest;
10
+ filesMap: FilesMap;
11
+ manifest?: BundledManifest;
11
12
  requiresBuild: boolean;
12
13
  integrity?: string;
13
14
  }
14
- type AddFilesFromDirOptions = Pick<AddDirToStoreMessage, 'storeDir' | 'dir' | 'filesIndexFile' | 'sideEffectsCacheKey' | 'readManifest' | 'pkg' | 'files' | 'appendManifest'>;
15
+ type AddFilesFromDirOptions = Pick<AddDirToStoreMessage, 'storeDir' | 'dir' | 'filesIndexFile' | 'sideEffectsCacheKey' | 'readManifest' | 'pkg' | 'files' | 'appendManifest' | 'includeNodeModules'> & {
16
+ storeIndex: StoreIndex;
17
+ };
15
18
  export declare function addFilesFromDir(opts: AddFilesFromDirOptions): Promise<AddFilesResult>;
16
19
  export declare class TarballIntegrityError extends PnpmError {
17
20
  readonly found: string;
@@ -29,15 +32,28 @@ export declare class TarballIntegrityError extends PnpmError {
29
32
  });
30
33
  }
31
34
  type AddFilesFromTarballOptions = Pick<TarballExtractMessage, 'buffer' | 'storeDir' | 'filesIndexFile' | 'integrity' | 'readManifest' | 'pkg' | 'appendManifest'> & {
35
+ storeIndex: StoreIndex;
32
36
  url: string;
33
37
  };
34
38
  export declare function addFilesFromTarball(opts: AddFilesFromTarballOptions): Promise<AddFilesResult>;
35
- export declare function readPkgFromCafs(storeDir: string, verifyStoreIntegrity: boolean, filesIndexFile: string, readManifest?: boolean): Promise<{
39
+ export interface ReadPkgFromCafsContext {
40
+ storeDir: string;
41
+ verifyStoreIntegrity: boolean;
42
+ strictStorePkgContentCheck?: boolean;
43
+ }
44
+ export interface ReadPkgFromCafsOptions {
45
+ readManifest?: boolean;
46
+ expectedPkg?: {
47
+ name?: string;
48
+ version?: string;
49
+ };
50
+ }
51
+ export interface ReadPkgFromCafsResult {
36
52
  verified: boolean;
37
- pkgFilesIndex: PackageFilesIndex;
38
- manifest?: DependencyManifest;
39
- requiresBuild: boolean;
40
- }>;
53
+ files: PackageFilesResponse;
54
+ bundledManifest?: BundledManifest;
55
+ }
56
+ export declare function readPkgFromCafs(ctx: ReadPkgFromCafsContext, filesIndexFile: string, opts?: ReadPkgFromCafsOptions): Promise<ReadPkgFromCafsResult>;
41
57
  export declare function importPackage(opts: Omit<LinkPkgMessage, 'type'>): Promise<{
42
58
  isBuilt: boolean;
43
59
  importMethod: string | undefined;
package/lib/index.js CHANGED
@@ -1,42 +1,31 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TarballIntegrityError = void 0;
7
- exports.restartWorkerPool = restartWorkerPool;
8
- exports.finishWorkers = finishWorkers;
9
- exports.calcMaxWorkers = calcMaxWorkers;
10
- exports.addFilesFromDir = addFilesFromDir;
11
- exports.addFilesFromTarball = addFilesFromTarball;
12
- exports.readPkgFromCafs = readPkgFromCafs;
13
- exports.importPackage = importPackage;
14
- exports.symlinkAllModules = symlinkAllModules;
15
- exports.hardLinkDir = hardLinkDir;
16
- exports.initStoreDir = initStoreDir;
17
1
  // cspell:ignore checkin
18
- const path_1 = __importDefault(require("path"));
19
- const os_1 = __importDefault(require("os"));
20
- const WorkerPool_1 = require("@rushstack/worker-pool/lib/WorkerPool");
21
- const error_1 = require("@pnpm/error");
22
- const child_process_1 = require("child_process");
23
- const is_windows_1 = __importDefault(require("is-windows"));
24
- const p_limit_1 = __importDefault(require("p-limit"));
2
+ import { execSync } from 'node:child_process';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { PnpmError } from '@pnpm/error';
6
+ import { globalWarn } from '@pnpm/logger';
7
+ import { WorkerPool } from '@rushstack/worker-pool';
8
+ import isWindows from 'is-windows';
9
+ import pLimit from 'p-limit';
25
10
  let workerPool;
26
- async function restartWorkerPool() {
11
+ export async function restartWorkerPool() {
27
12
  await finishWorkers();
28
13
  workerPool = createTarballWorkerPool();
29
14
  }
30
- async function finishWorkers() {
15
+ export async function finishWorkers() {
31
16
  // @ts-expect-error
32
- await global.finishWorkers?.();
17
+ const finish = global.finishWorkers;
18
+ // @ts-expect-error
19
+ global.finishWorkers = undefined;
20
+ await finish?.();
21
+ workerPool = undefined;
33
22
  }
34
23
  function createTarballWorkerPool() {
35
24
  const maxWorkers = calcMaxWorkers();
36
- const workerPool = new WorkerPool_1.WorkerPool({
25
+ const workerPool = new WorkerPool({
37
26
  id: 'pnpm',
38
27
  maxWorkers,
39
- workerScriptPath: path_1.default.join(__dirname, 'worker.js'),
28
+ workerScriptPath: path.join(import.meta.dirname, 'worker.js'),
40
29
  });
41
30
  // @ts-expect-error
42
31
  if (global.finishWorkers) {
@@ -54,7 +43,7 @@ function createTarballWorkerPool() {
54
43
  }
55
44
  return workerPool;
56
45
  }
57
- function calcMaxWorkers() {
46
+ export function calcMaxWorkers() {
58
47
  if (process.env.PNPM_MAX_WORKERS) {
59
48
  return parseInt(process.env.PNPM_MAX_WORKERS);
60
49
  }
@@ -65,20 +54,25 @@ function calcMaxWorkers() {
65
54
  return Math.max(1, availableParallelism() - 1);
66
55
  }
67
56
  function availableParallelism() {
68
- return os_1.default.availableParallelism?.() ?? os_1.default.cpus().length;
57
+ return os.availableParallelism?.() ?? os.cpus().length;
69
58
  }
70
- async function addFilesFromDir(opts) {
59
+ export async function addFilesFromDir(opts) {
71
60
  if (!workerPool) {
72
61
  workerPool = createTarballWorkerPool();
73
62
  }
74
63
  const localWorker = await workerPool.checkoutWorkerAsync(true);
75
64
  return new Promise((resolve, reject) => {
76
- localWorker.once('message', ({ status, error, value }) => {
65
+ localWorker.once('message', ({ status, error, value, indexWrites }) => {
77
66
  workerPool.checkinWorker(localWorker);
78
67
  if (status === 'error') {
79
- reject(new error_1.PnpmError(error.code ?? 'GIT_FETCH_FAILED', error.message));
68
+ reject(new PnpmError(error.code ?? 'GIT_FETCH_FAILED', error.message));
80
69
  return;
81
70
  }
71
+ if (indexWrites) {
72
+ // Write immediately so that subsequent worker reads (e.g. side effects)
73
+ // see the committed data without waiting for nextTick.
74
+ opts.storeIndex.setRawMany(indexWrites);
75
+ }
82
76
  resolve(value);
83
77
  });
84
78
  localWorker.postMessage({
@@ -91,10 +85,11 @@ async function addFilesFromDir(opts) {
91
85
  pkg: opts.pkg,
92
86
  appendManifest: opts.appendManifest,
93
87
  files: opts.files,
88
+ includeNodeModules: opts.includeNodeModules,
94
89
  });
95
90
  });
96
91
  }
97
- class TarballIntegrityError extends error_1.PnpmError {
92
+ export class TarballIntegrityError extends PnpmError {
98
93
  found;
99
94
  expected;
100
95
  algorithm;
@@ -116,14 +111,13 @@ If you think that this is the case, then run "pnpm store prune" and rerun the co
116
111
  this.url = opts.url;
117
112
  }
118
113
  }
119
- exports.TarballIntegrityError = TarballIntegrityError;
120
- async function addFilesFromTarball(opts) {
114
+ export async function addFilesFromTarball(opts) {
121
115
  if (!workerPool) {
122
116
  workerPool = createTarballWorkerPool();
123
117
  }
124
118
  const localWorker = await workerPool.checkoutWorkerAsync(true);
125
119
  return new Promise((resolve, reject) => {
126
- localWorker.once('message', ({ status, error, value }) => {
120
+ localWorker.once('message', ({ status, error, value, indexWrites }) => {
127
121
  workerPool.checkinWorker(localWorker);
128
122
  if (status === 'error') {
129
123
  if (error.type === 'integrity_validation_failed') {
@@ -133,9 +127,12 @@ async function addFilesFromTarball(opts) {
133
127
  }));
134
128
  return;
135
129
  }
136
- reject(new error_1.PnpmError(error.code ?? 'TARBALL_EXTRACT', `Failed to add tarball from "${opts.url}" to store: ${error.message}`));
130
+ reject(new PnpmError(error.code ?? 'TARBALL_EXTRACT', `Failed to add tarball from "${opts.url}" to store: ${error.message}`));
137
131
  return;
138
132
  }
133
+ if (indexWrites) {
134
+ opts.storeIndex.queueWrites(indexWrites);
135
+ }
139
136
  resolve(value);
140
137
  });
141
138
  localWorker.postMessage({
@@ -150,26 +147,30 @@ async function addFilesFromTarball(opts) {
150
147
  });
151
148
  });
152
149
  }
153
- async function readPkgFromCafs(storeDir, verifyStoreIntegrity, filesIndexFile, readManifest) {
150
+ export async function readPkgFromCafs(ctx, filesIndexFile, opts) {
154
151
  if (!workerPool) {
155
152
  workerPool = createTarballWorkerPool();
156
153
  }
157
154
  const localWorker = await workerPool.checkoutWorkerAsync(true);
158
155
  return new Promise((resolve, reject) => {
159
- localWorker.once('message', ({ status, error, value }) => {
156
+ localWorker.once('message', ({ status, error, value, warnings }) => {
160
157
  workerPool.checkinWorker(localWorker);
161
158
  if (status === 'error') {
162
- reject(new error_1.PnpmError(error.code ?? 'READ_FROM_STORE', error.message));
159
+ reject(new PnpmError(error.code ?? 'READ_FROM_STORE', error.message, { hint: error.hint }));
163
160
  return;
164
161
  }
162
+ if (warnings) {
163
+ for (const warning of warnings) {
164
+ globalWarn(warning);
165
+ }
166
+ }
165
167
  resolve(value);
166
168
  });
167
169
  localWorker.postMessage({
168
170
  type: 'readPkgFromCafs',
169
- storeDir,
170
171
  filesIndexFile,
171
- readManifest,
172
- verifyStoreIntegrity,
172
+ ...ctx,
173
+ ...opts,
173
174
  });
174
175
  });
175
176
  }
@@ -177,8 +178,8 @@ async function readPkgFromCafs(storeDir, verifyStoreIntegrity, filesIndexFile, r
177
178
  // so, running them in parallel helps only to a point.
178
179
  // With local experimenting it was discovered that running 4 workers gives the best results.
179
180
  // Adding more workers actually makes installation slower.
180
- const limitImportingPackage = (0, p_limit_1.default)(4);
181
- async function importPackage(opts) {
181
+ const limitImportingPackage = pLimit(4);
182
+ export async function importPackage(opts) {
182
183
  return limitImportingPackage(async () => {
183
184
  if (!workerPool) {
184
185
  workerPool = createTarballWorkerPool();
@@ -188,7 +189,7 @@ async function importPackage(opts) {
188
189
  localWorker.once('message', ({ status, error, value }) => {
189
190
  workerPool.checkinWorker(localWorker);
190
191
  if (status === 'error') {
191
- reject(new error_1.PnpmError(error.code ?? 'LINKING_FAILED', error.message));
192
+ reject(new PnpmError(error.code ?? 'LINKING_FAILED', `[importPackage ${opts.targetDir}] ${error.message}`));
192
193
  return;
193
194
  }
194
195
  resolve(value);
@@ -200,7 +201,7 @@ async function importPackage(opts) {
200
201
  });
201
202
  });
202
203
  }
203
- async function symlinkAllModules(opts) {
204
+ export async function symlinkAllModules(opts) {
204
205
  if (!workerPool) {
205
206
  workerPool = createTarballWorkerPool();
206
207
  }
@@ -210,7 +211,7 @@ async function symlinkAllModules(opts) {
210
211
  workerPool.checkinWorker(localWorker);
211
212
  if (status === 'error') {
212
213
  const hint = opts.deps?.[0]?.modules != null ? createErrorHint(error, opts.deps[0].modules) : undefined;
213
- reject(new error_1.PnpmError(error.code ?? 'SYMLINK_FAILED', error.message, { hint }));
214
+ reject(new PnpmError(error.code ?? 'SYMLINK_FAILED', `[symlinkAllModules] ${error.message}`, { hint }));
214
215
  return;
215
216
  }
216
217
  resolve(value);
@@ -222,7 +223,7 @@ async function symlinkAllModules(opts) {
222
223
  });
223
224
  }
224
225
  function createErrorHint(err, checkedDir) {
225
- if ('code' in err && err.code === 'EISDIR' && (0, is_windows_1.default)()) {
226
+ if ('code' in err && err.code === 'EISDIR' && isWindows()) {
226
227
  const checkedDrive = `${checkedDir.split(':')[0]}:`;
227
228
  if (isDriveExFat(checkedDrive)) {
228
229
  return `The "${checkedDrive}" drive is exFAT, which does not support symlinks. This will cause installation to fail. You can set the node-linker to "hoisted" to avoid this issue.`;
@@ -237,7 +238,7 @@ function isDriveExFat(drive) {
237
238
  }
238
239
  try {
239
240
  // cspell:disable-next-line
240
- const output = (0, child_process_1.execSync)(`powershell -Command "Get-Volume -DriveLetter ${drive.replace(':', '')} | Select-Object -ExpandProperty FileSystem"`).toString();
241
+ const output = execSync(`powershell -Command "Get-Volume -DriveLetter ${drive.replace(':', '')} | Select-Object -ExpandProperty FileSystem"`).toString();
241
242
  const lines = output.trim().split('\n');
242
243
  const name = lines[0].trim();
243
244
  return name === 'exFAT';
@@ -246,7 +247,7 @@ function isDriveExFat(drive) {
246
247
  return false;
247
248
  }
248
249
  }
249
- async function hardLinkDir(src, destDirs) {
250
+ export async function hardLinkDir(src, destDirs) {
250
251
  if (!workerPool) {
251
252
  workerPool = createTarballWorkerPool();
252
253
  }
@@ -255,7 +256,7 @@ async function hardLinkDir(src, destDirs) {
255
256
  localWorker.once('message', ({ status, error }) => {
256
257
  workerPool.checkinWorker(localWorker);
257
258
  if (status === 'error') {
258
- reject(new error_1.PnpmError(error.code ?? 'HARDLINK_FAILED', error.message));
259
+ reject(new PnpmError(error.code ?? 'HARDLINK_FAILED', error.message));
259
260
  return;
260
261
  }
261
262
  resolve();
@@ -267,7 +268,7 @@ async function hardLinkDir(src, destDirs) {
267
268
  });
268
269
  });
269
270
  }
270
- async function initStoreDir(storeDir) {
271
+ export async function initStoreDir(storeDir) {
271
272
  if (!workerPool) {
272
273
  workerPool = createTarballWorkerPool();
273
274
  }
@@ -276,7 +277,7 @@ async function initStoreDir(storeDir) {
276
277
  localWorker.once('message', ({ status, error }) => {
277
278
  workerPool.checkinWorker(localWorker);
278
279
  if (status === 'error') {
279
- reject(new error_1.PnpmError(error.code ?? 'INIT_CAFS_FAILED', error.message));
280
+ reject(new PnpmError(error.code ?? 'INIT_CAFS_FAILED', error.message));
280
281
  return;
281
282
  }
282
283
  resolve();
package/lib/start.js CHANGED
@@ -1,87 +1,67 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.startWorker = startWorker;
30
- const path_1 = __importDefault(require("path"));
31
- const fs_1 = __importDefault(require("fs"));
32
- const graceful_fs_1 = __importDefault(require("@pnpm/graceful-fs"));
33
- const create_cafs_store_1 = require("@pnpm/create-cafs-store");
34
- const crypto = __importStar(require("@pnpm/crypto.polyfill"));
35
- const exec_pkg_requires_build_1 = require("@pnpm/exec.pkg-requires-build");
36
- const fs_hard_link_dir_1 = require("@pnpm/fs.hard-link-dir");
37
- const store_cafs_1 = require("@pnpm/store.cafs");
38
- const symlink_dependency_1 = require("@pnpm/symlink-dependency");
39
- const load_json_file_1 = require("load-json-file");
40
- const worker_threads_1 = require("worker_threads");
41
- const INTEGRITY_REGEX = /^([^-]+)-([a-z0-9+/=]+)$/i;
42
- function startWorker() {
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { parentPort } from 'node:worker_threads';
5
+ import { pkgRequiresBuild } from '@pnpm/building.pkg-requires-build';
6
+ import { formatIntegrity, parseIntegrity } from '@pnpm/crypto.integrity';
7
+ import { PnpmError } from '@pnpm/error';
8
+ import { hardLinkDir } from '@pnpm/fs.hard-link-dir';
9
+ import { symlinkDependencySync } from '@pnpm/fs.symlink-dependency';
10
+ import { buildFileMapsFromIndex, checkPkgFilesIntegrity, createCafs, HASH_ALGORITHM, normalizeBundledManifest, } from '@pnpm/store.cafs';
11
+ import { createCafsStore } from '@pnpm/store.create-cafs-store';
12
+ import { packForStorage, StoreIndex } from '@pnpm/store.index';
13
+ import { equalOrSemverEqual } from './equalOrSemverEqual.js';
14
+ export function startWorker() {
43
15
  process.on('uncaughtException', (err) => {
44
16
  console.error(err);
45
17
  });
46
- worker_threads_1.parentPort.on('message', handleMessage);
18
+ parentPort.on('message', handleMessage);
47
19
  }
48
20
  const cafsCache = new Map();
49
21
  const cafsStoreCache = new Map();
50
22
  const cafsLocker = new Map();
23
+ const storeIndexCache = new Map();
24
+ function getStoreIndex(storeDir) {
25
+ if (!storeIndexCache.has(storeDir)) {
26
+ storeIndexCache.set(storeDir, new StoreIndex(storeDir));
27
+ }
28
+ return storeIndexCache.get(storeDir);
29
+ }
51
30
  async function handleMessage(message) {
52
31
  if (message === false) {
53
- worker_threads_1.parentPort.off('message', handleMessage);
32
+ parentPort.off('message', handleMessage);
33
+ // Explicitly close cached SQLite connections before exiting.
34
+ // process.exit() in a worker thread may not run C++ destructors,
35
+ // which would leave file descriptors and mmap regions open.
36
+ for (const idx of storeIndexCache.values()) {
37
+ idx.close();
38
+ }
39
+ storeIndexCache.clear();
54
40
  process.exit(0);
55
41
  }
56
42
  try {
57
43
  switch (message.type) {
58
44
  case 'extract': {
59
- worker_threads_1.parentPort.postMessage(addTarballToStore(message));
45
+ parentPort.postMessage(addTarballToStore(message));
60
46
  break;
61
47
  }
62
48
  case 'link': {
63
- worker_threads_1.parentPort.postMessage(importPackage(message));
49
+ parentPort.postMessage(importPackage(message));
64
50
  break;
65
51
  }
66
52
  case 'add-dir': {
67
- worker_threads_1.parentPort.postMessage(addFilesFromDir(message));
53
+ parentPort.postMessage(addFilesFromDir(message));
68
54
  break;
69
55
  }
70
56
  case 'init-store': {
71
- worker_threads_1.parentPort.postMessage(initStore(message));
57
+ parentPort.postMessage(initStore(message));
72
58
  break;
73
59
  }
74
60
  case 'readPkgFromCafs': {
75
- let { storeDir, filesIndexFile, readManifest, verifyStoreIntegrity } = message;
76
- let pkgFilesIndex;
77
- try {
78
- pkgFilesIndex = (0, load_json_file_1.sync)(filesIndexFile);
79
- }
80
- catch {
81
- // ignoring. It is fine if the integrity file is not present. Just refetch the package
82
- }
61
+ const { storeDir, filesIndexFile, verifyStoreIntegrity, expectedPkg, strictStorePkgContentCheck } = message;
62
+ const pkgFilesIndex = getStoreIndex(storeDir).get(filesIndexFile);
83
63
  if (!pkgFilesIndex) {
84
- worker_threads_1.parentPort.postMessage({
64
+ parentPort.postMessage({
85
65
  status: 'success',
86
66
  value: {
87
67
  verified: false,
@@ -90,72 +70,91 @@ async function handleMessage(message) {
90
70
  });
91
71
  return;
92
72
  }
93
- let verifyResult;
94
- if (pkgFilesIndex.requiresBuild == null) {
95
- readManifest = true;
73
+ const warnings = [];
74
+ if (expectedPkg) {
75
+ if ((pkgFilesIndex.manifest?.name != null &&
76
+ expectedPkg.name != null &&
77
+ pkgFilesIndex.manifest.name.toLowerCase() !== expectedPkg.name.toLowerCase()) ||
78
+ (pkgFilesIndex.manifest?.version != null &&
79
+ expectedPkg.version != null &&
80
+ !equalOrSemverEqual(pkgFilesIndex.manifest.version, expectedPkg.version))) {
81
+ const msg = 'Package name or version mismatch found while reading from the store.';
82
+ const hint = `This means that either the lockfile is broken or the package metadata (name and version) inside the package's package.json file doesn't match the metadata in the registry. Expected package: ${expectedPkg.name}@${expectedPkg.version}. Actual package in the store: ${pkgFilesIndex.manifest?.name}@${pkgFilesIndex.manifest?.version}.`;
83
+ if (strictStorePkgContentCheck ?? true) {
84
+ throw new PnpmError('UNEXPECTED_PKG_CONTENT_IN_STORE', msg, {
85
+ hint: `${hint}\n\nIf you want to ignore this issue, set strictStorePkgContentCheck to false in your configuration`,
86
+ });
87
+ }
88
+ else {
89
+ warnings.push(`${msg} ${hint}`);
90
+ }
91
+ }
96
92
  }
93
+ let verifyResult;
97
94
  if (verifyStoreIntegrity) {
98
- verifyResult = (0, store_cafs_1.checkPkgFilesIntegrity)(storeDir, pkgFilesIndex, readManifest);
95
+ verifyResult = checkPkgFilesIntegrity(storeDir, pkgFilesIndex);
99
96
  }
100
97
  else {
101
- verifyResult = {
102
- passed: true,
103
- manifest: readManifest ? (0, store_cafs_1.readManifestFromStore)(storeDir, pkgFilesIndex) : undefined,
104
- };
98
+ verifyResult = buildFileMapsFromIndex(storeDir, pkgFilesIndex);
105
99
  }
106
- const requiresBuild = pkgFilesIndex.requiresBuild ?? (0, exec_pkg_requires_build_1.pkgRequiresBuild)(verifyResult.manifest, pkgFilesIndex.files);
107
- worker_threads_1.parentPort.postMessage({
100
+ const bundledManifest = pkgFilesIndex.manifest;
101
+ const requiresBuild = pkgFilesIndex.requiresBuild ?? pkgRequiresBuild(bundledManifest, verifyResult.filesMap);
102
+ parentPort.postMessage({
108
103
  status: 'success',
104
+ warnings,
109
105
  value: {
110
106
  verified: verifyResult.passed,
111
- manifest: verifyResult.manifest,
112
- pkgFilesIndex,
113
- requiresBuild,
107
+ bundledManifest,
108
+ files: {
109
+ filesMap: verifyResult.filesMap,
110
+ sideEffectsMaps: verifyResult.sideEffectsMaps,
111
+ resolvedFrom: 'store',
112
+ requiresBuild,
113
+ },
114
114
  },
115
115
  });
116
116
  break;
117
117
  }
118
118
  case 'symlinkAllModules': {
119
- worker_threads_1.parentPort.postMessage(symlinkAllModules(message));
119
+ parentPort.postMessage(symlinkAllModules(message));
120
120
  break;
121
121
  }
122
122
  case 'hardLinkDir': {
123
- (0, fs_hard_link_dir_1.hardLinkDir)(message.src, message.destDirs);
124
- worker_threads_1.parentPort.postMessage({ status: 'success' });
123
+ hardLinkDir(message.src, message.destDirs);
124
+ parentPort.postMessage({ status: 'success' });
125
125
  break;
126
126
  }
127
127
  }
128
128
  }
129
129
  catch (e) { // eslint-disable-line
130
- worker_threads_1.parentPort.postMessage({
130
+ parentPort.postMessage({
131
131
  status: 'error',
132
132
  error: {
133
133
  code: e.code,
134
134
  message: e.message ?? e.toString(),
135
+ hint: e.hint,
135
136
  },
136
137
  });
137
138
  }
138
139
  }
139
140
  function addTarballToStore({ buffer, storeDir, integrity, filesIndexFile, appendManifest }) {
140
141
  if (integrity) {
141
- const [, algo, integrityHash] = integrity.match(INTEGRITY_REGEX);
142
- // Compensate for the possibility of non-uniform Base64 padding
143
- const normalizedRemoteHash = Buffer.from(integrityHash, 'base64').toString('hex');
144
- const calculatedHash = crypto.hash(algo, buffer, 'hex');
145
- if (calculatedHash !== normalizedRemoteHash) {
142
+ const { algorithm, hexDigest } = parseIntegrity(integrity);
143
+ const calculatedHash = crypto.hash(algorithm, buffer, 'hex');
144
+ if (calculatedHash !== hexDigest) {
146
145
  return {
147
146
  status: 'error',
148
147
  error: {
149
148
  type: 'integrity_validation_failed',
150
- algorithm: algo,
149
+ algorithm,
151
150
  expected: integrity,
152
- found: `${algo}-${Buffer.from(calculatedHash, 'hex').toString('base64')}`,
151
+ found: formatIntegrity(algorithm, calculatedHash),
153
152
  },
154
153
  };
155
154
  }
156
155
  }
157
156
  if (!cafsCache.has(storeDir)) {
158
- cafsCache.set(storeDir, (0, store_cafs_1.createCafs)(storeDir));
157
+ cafsCache.set(storeDir, createCafs(storeDir));
159
158
  }
160
159
  const cafs = cafsCache.get(storeDir);
161
160
  let { filesIndex, manifest } = cafs.addFilesFromTarball(buffer, true);
@@ -163,143 +162,195 @@ function addTarballToStore({ buffer, storeDir, integrity, filesIndexFile, append
163
162
  manifest = appendManifest;
164
163
  addManifestToCafs(cafs, filesIndex, appendManifest);
165
164
  }
165
+ else if (!filesIndex.has('package.json')) {
166
+ addPlaceholderPackageJsonToCafs(cafs, filesIndex);
167
+ }
166
168
  const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);
167
- const requiresBuild = writeFilesIndexFile(filesIndexFile, { manifest: manifest ?? {}, files: filesIntegrity });
169
+ const bundledManifest = manifest != null ? normalizeBundledManifest(manifest) : undefined;
170
+ const requiresBuild = pkgRequiresBuild(bundledManifest, filesIntegrity);
171
+ const pkgFilesIndex = {
172
+ requiresBuild,
173
+ manifest: bundledManifest,
174
+ algo: HASH_ALGORITHM,
175
+ files: filesIntegrity,
176
+ };
168
177
  return {
169
178
  status: 'success',
170
179
  value: {
171
- filesIndex: filesMap,
172
- manifest,
180
+ filesMap,
181
+ manifest: bundledManifest,
173
182
  requiresBuild,
174
183
  integrity: integrity ?? calcIntegrity(buffer),
175
184
  },
185
+ indexWrites: [{ key: filesIndexFile, buffer: packToShared(pkgFilesIndex) }],
176
186
  };
177
187
  }
178
188
  function calcIntegrity(buffer) {
179
189
  const calculatedHash = crypto.hash('sha512', buffer, 'hex');
180
- return `sha512-${Buffer.from(calculatedHash, 'hex').toString('base64')}`;
190
+ return formatIntegrity('sha512', calculatedHash);
191
+ }
192
+ function packToShared(data) {
193
+ const packed = packForStorage(data);
194
+ const shared = new SharedArrayBuffer(packed.byteLength);
195
+ const view = new Uint8Array(shared);
196
+ view.set(packed);
197
+ return view;
181
198
  }
182
199
  function initStore({ storeDir }) {
183
- fs_1.default.mkdirSync(storeDir, { recursive: true });
200
+ fs.mkdirSync(storeDir, { recursive: true });
184
201
  const hexChars = '0123456789abcdef'.split('');
185
- for (const subDir of ['files', 'index']) {
186
- const subDirPath = path_1.default.join(storeDir, subDir);
187
- try {
188
- fs_1.default.mkdirSync(subDirPath);
189
- }
190
- catch {
191
- // If a parallel process has already started creating the directories in the store,
192
- // ignore if it already exists.
193
- }
194
- for (const hex1 of hexChars) {
195
- for (const hex2 of hexChars) {
196
- try {
197
- fs_1.default.mkdirSync(path_1.default.join(subDirPath, `${hex1}${hex2}`));
198
- }
199
- catch {
200
- // If a parallel process has already started creating the directories in the store,
201
- // ignore if it already exists.
202
- }
202
+ // Only create subdirectories for files/ index/ is now managed by SQLite
203
+ const filesDirPath = path.join(storeDir, 'files');
204
+ try {
205
+ fs.mkdirSync(filesDirPath);
206
+ }
207
+ catch {
208
+ // If a parallel process has already started creating the directories in the store,
209
+ // ignore if it already exists.
210
+ }
211
+ for (const hex1 of hexChars) {
212
+ for (const hex2 of hexChars) {
213
+ try {
214
+ fs.mkdirSync(path.join(filesDirPath, `${hex1}${hex2}`));
215
+ }
216
+ catch {
217
+ // If a parallel process has already started creating the directories in the store,
218
+ // ignore if it already exists.
203
219
  }
204
220
  }
205
221
  }
222
+ // The SQLite index database will be initialized lazily by getStoreIndex()
223
+ // on the first operation that needs it (e.g., readPkgFromCafs, addFilesFromDir).
224
+ // Eagerly opening it here races with the main thread's StoreIndex constructor,
225
+ // which can cause SQLITE_CANTOPEN on Windows due to mandatory file locking.
206
226
  return { status: 'success' };
207
227
  }
208
- function addFilesFromDir({ appendManifest, dir, files, filesIndexFile, sideEffectsCacheKey, storeDir, }) {
228
+ function addFilesFromDir({ appendManifest, dir, files, filesIndexFile, includeNodeModules, sideEffectsCacheKey, storeDir, }) {
209
229
  if (!cafsCache.has(storeDir)) {
210
- cafsCache.set(storeDir, (0, store_cafs_1.createCafs)(storeDir));
230
+ cafsCache.set(storeDir, createCafs(storeDir));
211
231
  }
212
232
  const cafs = cafsCache.get(storeDir);
213
233
  let { filesIndex, manifest } = cafs.addFilesFromDir(dir, {
214
234
  files,
235
+ includeNodeModules,
215
236
  readManifest: true,
216
237
  });
217
238
  if (appendManifest && manifest == null) {
218
239
  manifest = appendManifest;
219
240
  addManifestToCafs(cafs, filesIndex, appendManifest);
220
241
  }
242
+ else if (!filesIndex.has('package.json')) {
243
+ addPlaceholderPackageJsonToCafs(cafs, filesIndex);
244
+ }
221
245
  const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);
246
+ const bundledManifest = manifest != null ? normalizeBundledManifest(manifest) : undefined;
222
247
  let requiresBuild;
248
+ let indexWrites;
223
249
  if (sideEffectsCacheKey) {
224
- let filesIndex;
225
- try {
226
- filesIndex = (0, load_json_file_1.sync)(filesIndexFile);
227
- }
228
- catch {
250
+ const existingFilesIndex = getStoreIndex(storeDir).get(filesIndexFile);
251
+ if (!existingFilesIndex) {
229
252
  // If there is no existing index file, then we cannot store the side effects.
230
253
  return {
231
254
  status: 'success',
232
255
  value: {
233
- filesIndex: filesMap,
234
- manifest,
235
- requiresBuild: (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, filesIntegrity),
256
+ filesMap,
257
+ manifest: bundledManifest,
258
+ requiresBuild: pkgRequiresBuild(manifest, filesMap),
236
259
  },
237
260
  };
238
261
  }
239
- filesIndex.sideEffects = filesIndex.sideEffects ?? {};
240
- filesIndex.sideEffects[sideEffectsCacheKey] = calculateDiff(filesIndex.files, filesIntegrity);
241
- if (filesIndex.requiresBuild == null) {
242
- requiresBuild = (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, filesIntegrity);
262
+ if (!existingFilesIndex.sideEffects) {
263
+ existingFilesIndex.sideEffects = new Map();
264
+ }
265
+ // Ensure side effects use the same algorithm as the original package
266
+ if (existingFilesIndex.algo !== HASH_ALGORITHM) {
267
+ throw new PnpmError('ALGO_MISMATCH', `Algorithm mismatch: package index uses "${existingFilesIndex.algo}" but side effects were computed with "${HASH_ALGORITHM}"`);
268
+ }
269
+ existingFilesIndex.sideEffects.set(sideEffectsCacheKey, calculateDiff(existingFilesIndex.files, filesIntegrity));
270
+ if (existingFilesIndex.requiresBuild == null) {
271
+ requiresBuild = pkgRequiresBuild(manifest, filesMap);
243
272
  }
244
273
  else {
245
- requiresBuild = filesIndex.requiresBuild;
274
+ requiresBuild = existingFilesIndex.requiresBuild;
246
275
  }
247
- writeJsonFile(filesIndexFile, filesIndex);
276
+ indexWrites = [{ key: filesIndexFile, buffer: packToShared(existingFilesIndex) }];
248
277
  }
249
278
  else {
250
- requiresBuild = writeFilesIndexFile(filesIndexFile, { manifest: manifest ?? {}, files: filesIntegrity });
279
+ requiresBuild = pkgRequiresBuild(bundledManifest, filesIntegrity);
280
+ const pkgFilesIndex = {
281
+ requiresBuild,
282
+ manifest: bundledManifest,
283
+ algo: HASH_ALGORITHM,
284
+ files: filesIntegrity,
285
+ };
286
+ indexWrites = [{ key: filesIndexFile, buffer: packToShared(pkgFilesIndex) }];
251
287
  }
252
- return { status: 'success', value: { filesIndex: filesMap, manifest, requiresBuild } };
288
+ return { status: 'success', value: { filesMap, manifest: bundledManifest, requiresBuild }, indexWrites };
253
289
  }
254
290
  function addManifestToCafs(cafs, filesIndex, manifest) {
255
291
  const fileBuffer = Buffer.from(JSON.stringify(manifest, null, 2), 'utf8');
256
292
  const mode = 0o644;
257
- filesIndex['package.json'] = {
293
+ filesIndex.set('package.json', {
258
294
  mode,
259
295
  size: fileBuffer.length,
260
296
  ...cafs.addFile(fileBuffer, mode),
261
- };
297
+ });
298
+ }
299
+ const PLACEHOLDER_PACKAGE_JSON = Buffer.from(JSON.stringify({ _pnpmPlaceholder: 'This file was generated by pnpm. The original package did not contain a package.json.' }), 'utf8');
300
+ // Packages that lack a package.json (e.g. injected packages in a Bit
301
+ // workspace) get a synthetic one so that package.json can serve as a
302
+ // universal completion marker for the indexed package importer.
303
+ // The _pnpmPlaceholder field tells the package requester to ignore it
304
+ // when reading the manifest.
305
+ function addPlaceholderPackageJsonToCafs(cafs, filesIndex) {
306
+ const mode = 0o644;
307
+ filesIndex.set('package.json', {
308
+ mode,
309
+ size: PLACEHOLDER_PACKAGE_JSON.length,
310
+ ...cafs.addFile(PLACEHOLDER_PACKAGE_JSON, mode),
311
+ });
262
312
  }
263
313
  function calculateDiff(baseFiles, sideEffectsFiles) {
264
314
  const deleted = [];
265
- const added = {};
266
- for (const file of new Set([...Object.keys(baseFiles), ...Object.keys(sideEffectsFiles)])) {
267
- if (!sideEffectsFiles[file]) {
315
+ const added = new Map();
316
+ const allFiles = new Set([...baseFiles.keys(), ...sideEffectsFiles.keys()]);
317
+ for (const file of allFiles) {
318
+ if (!sideEffectsFiles.has(file)) {
268
319
  deleted.push(file);
269
320
  }
270
- else if (!baseFiles[file] ||
271
- baseFiles[file].integrity !== sideEffectsFiles[file].integrity ||
272
- baseFiles[file].mode !== sideEffectsFiles[file].mode) {
273
- added[file] = sideEffectsFiles[file];
321
+ else if (!baseFiles.has(file) ||
322
+ baseFiles.get(file).digest !== sideEffectsFiles.get(file).digest ||
323
+ baseFiles.get(file).mode !== sideEffectsFiles.get(file).mode) {
324
+ added.set(file, sideEffectsFiles.get(file));
274
325
  }
275
326
  }
276
327
  const diff = {};
277
328
  if (deleted.length > 0) {
278
329
  diff.deleted = deleted;
279
330
  }
280
- if (Object.keys(added).length > 0) {
331
+ if (added.size > 0) {
281
332
  diff.added = added;
282
333
  }
283
334
  return diff;
284
335
  }
285
336
  function processFilesIndex(filesIndex) {
286
- const filesIntegrity = {};
287
- const filesMap = {};
288
- for (const [k, { checkedAt, filePath, integrity, mode, size }] of Object.entries(filesIndex)) {
289
- filesIntegrity[k] = {
337
+ const filesIntegrity = new Map();
338
+ const filesMap = new Map();
339
+ for (const [k, { checkedAt, filePath, digest, mode, size }] of filesIndex) {
340
+ filesIntegrity.set(k, {
290
341
  checkedAt,
291
- integrity: integrity.toString(), // TODO: use the raw Integrity object
342
+ digest,
292
343
  mode,
293
344
  size,
294
- };
295
- filesMap[k] = filePath;
345
+ });
346
+ filesMap.set(k, filePath);
296
347
  }
297
348
  return { filesIntegrity, filesMap };
298
349
  }
299
- function importPackage({ storeDir, packageImportMethod, filesResponse, sideEffectsCacheKey, targetDir, requiresBuild, force, keepModulesDir, disableRelinkLocalDirDeps, }) {
350
+ function importPackage({ storeDir, packageImportMethod, filesResponse, sideEffectsCacheKey, targetDir, requiresBuild, force, keepModulesDir, disableRelinkLocalDirDeps, safeToSkip, }) {
300
351
  const cacheKey = JSON.stringify({ storeDir, packageImportMethod });
301
352
  if (!cafsStoreCache.has(cacheKey)) {
302
- cafsStoreCache.set(cacheKey, (0, create_cafs_store_1.createCafsStore)(storeDir, { packageImportMethod, cafsLocker }));
353
+ cafsStoreCache.set(cacheKey, createCafsStore(storeDir, { packageImportMethod, cafsLocker }));
303
354
  }
304
355
  const cafsStore = cafsStoreCache.get(cacheKey);
305
356
  const { importMethod, isBuilt } = cafsStore.importPackage(targetDir, {
@@ -309,6 +360,7 @@ function importPackage({ storeDir, packageImportMethod, filesResponse, sideEffec
309
360
  requiresBuild,
310
361
  sideEffectsCacheKey,
311
362
  keepModulesDir,
363
+ safeToSkip,
312
364
  });
313
365
  return { status: 'success', value: { isBuilt, importMethod } };
314
366
  }
@@ -316,34 +368,10 @@ function symlinkAllModules(opts) {
316
368
  for (const dep of opts.deps) {
317
369
  for (const [alias, pkgDir] of Object.entries(dep.children)) {
318
370
  if (alias !== dep.name) {
319
- (0, symlink_dependency_1.symlinkDependencySync)(pkgDir, dep.modules, alias);
371
+ symlinkDependencySync(pkgDir, dep.modules, alias);
320
372
  }
321
373
  }
322
374
  }
323
375
  return { status: 'success' };
324
376
  }
325
- function writeFilesIndexFile(filesIndexFile, { manifest, files, sideEffects }) {
326
- const requiresBuild = (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, files);
327
- const filesIndex = {
328
- name: manifest.name,
329
- version: manifest.version,
330
- requiresBuild,
331
- files,
332
- sideEffects,
333
- };
334
- writeJsonFile(filesIndexFile, filesIndex);
335
- return requiresBuild;
336
- }
337
- function writeJsonFile(filePath, data) {
338
- const targetDir = path_1.default.dirname(filePath);
339
- // TODO: use the API of @pnpm/cafs to write this file
340
- // There is actually no need to create the directory in 99% of cases.
341
- // So by using cafs API, we'll improve performance.
342
- fs_1.default.mkdirSync(targetDir, { recursive: true });
343
- // We remove the "-index.json" from the end of the temp file name
344
- // in order to avoid ENAMETOOLONG errors
345
- const temp = `${filePath.slice(0, -11)}${process.pid}`;
346
- graceful_fs_1.default.writeFileSync(temp, JSON.stringify(data));
347
- (0, store_cafs_1.optimisticRenameOverwrite)(temp, filePath);
348
- }
349
377
  //# sourceMappingURL=start.js.map
package/lib/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type PackageFilesResponse } from '@pnpm/cafs-types';
2
- import { type DependencyManifest } from '@pnpm/types';
1
+ import type { PackageFilesResponse } from '@pnpm/store.cafs-types';
2
+ import type { DependencyManifest } from '@pnpm/types';
3
3
  export interface PkgNameVersion {
4
4
  name?: string;
5
5
  version?: string;
@@ -29,6 +29,7 @@ export interface LinkPkgMessage {
29
29
  force: boolean;
30
30
  keepModulesDir?: boolean;
31
31
  disableRelinkLocalDirDeps?: boolean;
32
+ safeToSkip?: boolean;
32
33
  }
33
34
  export interface SymlinkAllModulesMessage {
34
35
  type: 'symlinkAllModules';
@@ -48,6 +49,7 @@ export interface AddDirToStoreMessage {
48
49
  pkg?: PkgNameVersion;
49
50
  appendManifest?: DependencyManifest;
50
51
  files?: string[];
52
+ includeNodeModules?: boolean;
51
53
  }
52
54
  export interface ReadPkgFromCafsMessage {
53
55
  type: 'readPkgFromCafs';
@@ -55,6 +57,8 @@ export interface ReadPkgFromCafsMessage {
55
57
  filesIndexFile: string;
56
58
  readManifest: boolean;
57
59
  verifyStoreIntegrity: boolean;
60
+ expectedPkg?: PkgNameVersion;
61
+ strictStorePkgContentCheck?: boolean;
58
62
  }
59
63
  export interface HardLinkDirMessage {
60
64
  type: 'hardLinkDir';
package/lib/types.js CHANGED
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
package/lib/worker.js CHANGED
@@ -1,5 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const start_js_1 = require("./start.js");
4
- (0, start_js_1.startWorker)();
1
+ import { startWorker } from './start.js';
2
+ startWorker();
5
3
  //# sourceMappingURL=worker.js.map
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@pnpm/worker",
3
- "version": "1000.6.6",
3
+ "version": "1100.0.0",
4
4
  "description": "A worker for extracting package taralls to the store",
5
5
  "keywords": [
6
6
  "pnpm",
7
- "pnpm10",
7
+ "pnpm11",
8
8
  "tarball"
9
9
  ],
10
10
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "bugs": {
15
15
  "url": "https://github.com/pnpm/pnpm/issues"
16
16
  },
17
- "type": "commonjs",
17
+ "type": "module",
18
18
  "main": "lib/index.js",
19
19
  "types": "lib/index.d.ts",
20
20
  "exports": {
@@ -26,38 +26,41 @@
26
26
  "!*.map"
27
27
  ],
28
28
  "dependencies": {
29
- "@rushstack/worker-pool": "0.4.9",
29
+ "@rushstack/worker-pool": "0.7.7",
30
30
  "is-windows": "^1.0.2",
31
- "load-json-file": "^6.2.0",
32
- "p-limit": "^3.1.0",
33
- "@pnpm/cafs-types": "1000.1.0",
34
- "@pnpm/create-cafs-store": "1000.0.32",
35
- "@pnpm/crypto.polyfill": "1000.1.0",
36
- "@pnpm/error": "1000.0.5",
37
- "@pnpm/fs.hard-link-dir": "1000.0.6",
38
- "@pnpm/graceful-fs": "1000.1.0",
39
- "@pnpm/exec.pkg-requires-build": "1000.0.16",
40
- "@pnpm/store.cafs": "1000.1.4",
41
- "@pnpm/symlink-dependency": "1000.0.17"
31
+ "p-limit": "^7.1.0",
32
+ "semver": "^7.7.2",
33
+ "@pnpm/crypto.integrity": "1100.0.0",
34
+ "@pnpm/error": "1100.0.0",
35
+ "@pnpm/fs.graceful-fs": "1100.0.0",
36
+ "@pnpm/fs.hard-link-dir": "1100.0.0",
37
+ "@pnpm/fs.symlink-dependency": "1100.0.0",
38
+ "@pnpm/building.pkg-requires-build": "1100.0.0",
39
+ "@pnpm/store.create-cafs-store": "1100.0.0",
40
+ "@pnpm/store.index": "1100.0.0",
41
+ "@pnpm/store.cafs-types": "1100.0.0",
42
+ "@pnpm/store.cafs": "1100.0.0"
42
43
  },
43
44
  "peerDependencies": {
44
45
  "@pnpm/logger": ">=1001.0.0 <1002.0.0"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@types/is-windows": "^1.0.2",
48
- "@pnpm/logger": "1001.0.1",
49
- "@pnpm/types": "1001.3.0",
50
- "@pnpm/worker": "1000.6.6"
49
+ "@types/semver": "7.7.1",
50
+ "@pnpm/logger": "1100.0.0",
51
+ "@pnpm/types": "1100.0.0",
52
+ "@pnpm/worker": "1100.0.0"
51
53
  },
52
54
  "engines": {
53
- "node": ">=18.12"
55
+ "node": ">=22.13"
54
56
  },
55
57
  "jest": {
56
58
  "preset": "@pnpm/jest-config"
57
59
  },
58
60
  "scripts": {
59
- "lint": "eslint \"src/**/*.ts\"",
60
- "test": "pnpm run compile",
61
- "compile": "tsc --build && pnpm run lint --fix"
61
+ "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"",
62
+ "test": "pn compile && pn .test",
63
+ "compile": "tsgo --build && pn lint --fix",
64
+ ".test": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules --disable-warning=ExperimentalWarning --disable-warning=DEP0169\" jest"
62
65
  }
63
66
  }
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/start.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/lib/worker.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":";;AAAA,yCAAwC;AAExC,IAAA,sBAAW,GAAE,CAAA"}