@pnpm/worker 1000.1.14 → 1000.3.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.
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/start.d.ts +1 -0
- package/lib/start.js +314 -0
- package/lib/start.js.map +1 -0
- package/lib/worker.js +2 -308
- package/lib/worker.js.map +1 -1
- package/package.json +11 -10
package/lib/index.js
CHANGED
|
@@ -55,6 +55,9 @@ function createTarballWorkerPool() {
|
|
|
55
55
|
return workerPool;
|
|
56
56
|
}
|
|
57
57
|
function calcMaxWorkers() {
|
|
58
|
+
if (process.env.PNPM_MAX_WORKERS) {
|
|
59
|
+
return parseInt(process.env.PNPM_MAX_WORKERS);
|
|
60
|
+
}
|
|
58
61
|
if (process.env.PNPM_WORKERS) {
|
|
59
62
|
const idleCPUs = Math.abs(parseInt(process.env.PNPM_WORKERS));
|
|
60
63
|
return Math.max(2, availableParallelism() - idleCPUs) - 1;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAqBA,8CAGC;AAED,sCAGC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/start.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function startWorker(): void;
|
package/lib/start.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
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() {
|
|
43
|
+
process.on('uncaughtException', (err) => {
|
|
44
|
+
console.error(err);
|
|
45
|
+
});
|
|
46
|
+
worker_threads_1.parentPort.on('message', handleMessage);
|
|
47
|
+
}
|
|
48
|
+
const cafsCache = new Map();
|
|
49
|
+
const cafsStoreCache = new Map();
|
|
50
|
+
const cafsLocker = new Map();
|
|
51
|
+
async function handleMessage(message) {
|
|
52
|
+
if (message === false) {
|
|
53
|
+
worker_threads_1.parentPort.off('message', handleMessage);
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
switch (message.type) {
|
|
58
|
+
case 'extract': {
|
|
59
|
+
worker_threads_1.parentPort.postMessage(addTarballToStore(message));
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
case 'link': {
|
|
63
|
+
worker_threads_1.parentPort.postMessage(importPackage(message));
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'add-dir': {
|
|
67
|
+
worker_threads_1.parentPort.postMessage(addFilesFromDir(message));
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case 'init-store': {
|
|
71
|
+
worker_threads_1.parentPort.postMessage(initStore(message));
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
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
|
+
}
|
|
83
|
+
if (!pkgFilesIndex) {
|
|
84
|
+
worker_threads_1.parentPort.postMessage({
|
|
85
|
+
status: 'success',
|
|
86
|
+
value: {
|
|
87
|
+
verified: false,
|
|
88
|
+
pkgFilesIndex: null,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
let verifyResult;
|
|
94
|
+
if (pkgFilesIndex.requiresBuild == null) {
|
|
95
|
+
readManifest = true;
|
|
96
|
+
}
|
|
97
|
+
if (verifyStoreIntegrity) {
|
|
98
|
+
verifyResult = (0, store_cafs_1.checkPkgFilesIntegrity)(storeDir, pkgFilesIndex, readManifest);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
verifyResult = {
|
|
102
|
+
passed: true,
|
|
103
|
+
manifest: readManifest ? (0, store_cafs_1.readManifestFromStore)(storeDir, pkgFilesIndex) : undefined,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const requiresBuild = pkgFilesIndex.requiresBuild ?? (0, exec_pkg_requires_build_1.pkgRequiresBuild)(verifyResult.manifest, pkgFilesIndex.files);
|
|
107
|
+
worker_threads_1.parentPort.postMessage({
|
|
108
|
+
status: 'success',
|
|
109
|
+
value: {
|
|
110
|
+
verified: verifyResult.passed,
|
|
111
|
+
manifest: verifyResult.manifest,
|
|
112
|
+
pkgFilesIndex,
|
|
113
|
+
requiresBuild,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case 'symlinkAllModules': {
|
|
119
|
+
worker_threads_1.parentPort.postMessage(symlinkAllModules(message));
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case 'hardLinkDir': {
|
|
123
|
+
(0, fs_hard_link_dir_1.hardLinkDir)(message.src, message.destDirs);
|
|
124
|
+
worker_threads_1.parentPort.postMessage({ status: 'success' });
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (e) { // eslint-disable-line
|
|
130
|
+
worker_threads_1.parentPort.postMessage({
|
|
131
|
+
status: 'error',
|
|
132
|
+
error: {
|
|
133
|
+
code: e.code,
|
|
134
|
+
message: e.message ?? e.toString(),
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function addTarballToStore({ buffer, storeDir, integrity, filesIndexFile }) {
|
|
140
|
+
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) {
|
|
146
|
+
return {
|
|
147
|
+
status: 'error',
|
|
148
|
+
error: {
|
|
149
|
+
type: 'integrity_validation_failed',
|
|
150
|
+
algorithm: algo,
|
|
151
|
+
expected: integrity,
|
|
152
|
+
found: `${algo}-${Buffer.from(calculatedHash, 'hex').toString('base64')}`,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (!cafsCache.has(storeDir)) {
|
|
158
|
+
cafsCache.set(storeDir, (0, store_cafs_1.createCafs)(storeDir));
|
|
159
|
+
}
|
|
160
|
+
const cafs = cafsCache.get(storeDir);
|
|
161
|
+
const { filesIndex, manifest } = cafs.addFilesFromTarball(buffer, true);
|
|
162
|
+
const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);
|
|
163
|
+
const requiresBuild = writeFilesIndexFile(filesIndexFile, { manifest: manifest ?? {}, files: filesIntegrity });
|
|
164
|
+
return { status: 'success', value: { filesIndex: filesMap, manifest, requiresBuild } };
|
|
165
|
+
}
|
|
166
|
+
function initStore({ storeDir }) {
|
|
167
|
+
fs_1.default.mkdirSync(storeDir, { recursive: true });
|
|
168
|
+
try {
|
|
169
|
+
const hexChars = '0123456789abcdef'.split('');
|
|
170
|
+
for (const subDir of ['files', 'index']) {
|
|
171
|
+
const subDirPath = path_1.default.join(storeDir, subDir);
|
|
172
|
+
fs_1.default.mkdirSync(subDirPath);
|
|
173
|
+
for (const hex1 of hexChars) {
|
|
174
|
+
for (const hex2 of hexChars) {
|
|
175
|
+
fs_1.default.mkdirSync(path_1.default.join(subDirPath, `${hex1}${hex2}`));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// If a parallel process has already started creating the directories in the store,
|
|
182
|
+
// then we just stop.
|
|
183
|
+
}
|
|
184
|
+
return { status: 'success' };
|
|
185
|
+
}
|
|
186
|
+
function addFilesFromDir({ dir, storeDir, filesIndexFile, sideEffectsCacheKey, files }) {
|
|
187
|
+
if (!cafsCache.has(storeDir)) {
|
|
188
|
+
cafsCache.set(storeDir, (0, store_cafs_1.createCafs)(storeDir));
|
|
189
|
+
}
|
|
190
|
+
const cafs = cafsCache.get(storeDir);
|
|
191
|
+
const { filesIndex, manifest } = cafs.addFilesFromDir(dir, {
|
|
192
|
+
files,
|
|
193
|
+
readManifest: true,
|
|
194
|
+
});
|
|
195
|
+
const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);
|
|
196
|
+
let requiresBuild;
|
|
197
|
+
if (sideEffectsCacheKey) {
|
|
198
|
+
let filesIndex;
|
|
199
|
+
try {
|
|
200
|
+
filesIndex = (0, load_json_file_1.sync)(filesIndexFile);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// If there is no existing index file, then we cannot store the side effects.
|
|
204
|
+
return {
|
|
205
|
+
status: 'success',
|
|
206
|
+
value: {
|
|
207
|
+
filesIndex: filesMap,
|
|
208
|
+
manifest,
|
|
209
|
+
requiresBuild: (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, filesIntegrity),
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
filesIndex.sideEffects = filesIndex.sideEffects ?? {};
|
|
214
|
+
filesIndex.sideEffects[sideEffectsCacheKey] = calculateDiff(filesIndex.files, filesIntegrity);
|
|
215
|
+
if (filesIndex.requiresBuild == null) {
|
|
216
|
+
requiresBuild = (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, filesIntegrity);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
requiresBuild = filesIndex.requiresBuild;
|
|
220
|
+
}
|
|
221
|
+
writeJsonFile(filesIndexFile, filesIndex);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
requiresBuild = writeFilesIndexFile(filesIndexFile, { manifest: manifest ?? {}, files: filesIntegrity });
|
|
225
|
+
}
|
|
226
|
+
return { status: 'success', value: { filesIndex: filesMap, manifest, requiresBuild } };
|
|
227
|
+
}
|
|
228
|
+
function calculateDiff(baseFiles, sideEffectsFiles) {
|
|
229
|
+
const deleted = [];
|
|
230
|
+
const added = {};
|
|
231
|
+
for (const file of new Set([...Object.keys(baseFiles), ...Object.keys(sideEffectsFiles)])) {
|
|
232
|
+
if (!sideEffectsFiles[file]) {
|
|
233
|
+
deleted.push(file);
|
|
234
|
+
}
|
|
235
|
+
else if (!baseFiles[file] ||
|
|
236
|
+
baseFiles[file].integrity !== sideEffectsFiles[file].integrity ||
|
|
237
|
+
baseFiles[file].mode !== sideEffectsFiles[file].mode) {
|
|
238
|
+
added[file] = sideEffectsFiles[file];
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
const diff = {};
|
|
242
|
+
if (deleted.length > 0) {
|
|
243
|
+
diff.deleted = deleted;
|
|
244
|
+
}
|
|
245
|
+
if (Object.keys(added).length > 0) {
|
|
246
|
+
diff.added = added;
|
|
247
|
+
}
|
|
248
|
+
return diff;
|
|
249
|
+
}
|
|
250
|
+
function processFilesIndex(filesIndex) {
|
|
251
|
+
const filesIntegrity = {};
|
|
252
|
+
const filesMap = {};
|
|
253
|
+
for (const [k, { checkedAt, filePath, integrity, mode, size }] of Object.entries(filesIndex)) {
|
|
254
|
+
filesIntegrity[k] = {
|
|
255
|
+
checkedAt,
|
|
256
|
+
integrity: integrity.toString(), // TODO: use the raw Integrity object
|
|
257
|
+
mode,
|
|
258
|
+
size,
|
|
259
|
+
};
|
|
260
|
+
filesMap[k] = filePath;
|
|
261
|
+
}
|
|
262
|
+
return { filesIntegrity, filesMap };
|
|
263
|
+
}
|
|
264
|
+
function importPackage({ storeDir, packageImportMethod, filesResponse, sideEffectsCacheKey, targetDir, requiresBuild, force, keepModulesDir, disableRelinkLocalDirDeps, }) {
|
|
265
|
+
const cacheKey = JSON.stringify({ storeDir, packageImportMethod });
|
|
266
|
+
if (!cafsStoreCache.has(cacheKey)) {
|
|
267
|
+
cafsStoreCache.set(cacheKey, (0, create_cafs_store_1.createCafsStore)(storeDir, { packageImportMethod, cafsLocker }));
|
|
268
|
+
}
|
|
269
|
+
const cafsStore = cafsStoreCache.get(cacheKey);
|
|
270
|
+
const { importMethod, isBuilt } = cafsStore.importPackage(targetDir, {
|
|
271
|
+
filesResponse,
|
|
272
|
+
force,
|
|
273
|
+
disableRelinkLocalDirDeps,
|
|
274
|
+
requiresBuild,
|
|
275
|
+
sideEffectsCacheKey,
|
|
276
|
+
keepModulesDir,
|
|
277
|
+
});
|
|
278
|
+
return { status: 'success', value: { isBuilt, importMethod } };
|
|
279
|
+
}
|
|
280
|
+
function symlinkAllModules(opts) {
|
|
281
|
+
for (const dep of opts.deps) {
|
|
282
|
+
for (const [alias, pkgDir] of Object.entries(dep.children)) {
|
|
283
|
+
if (alias !== dep.name) {
|
|
284
|
+
(0, symlink_dependency_1.symlinkDependencySync)(pkgDir, dep.modules, alias);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return { status: 'success' };
|
|
289
|
+
}
|
|
290
|
+
function writeFilesIndexFile(filesIndexFile, { manifest, files, sideEffects }) {
|
|
291
|
+
const requiresBuild = (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, files);
|
|
292
|
+
const filesIndex = {
|
|
293
|
+
name: manifest.name,
|
|
294
|
+
version: manifest.version,
|
|
295
|
+
requiresBuild,
|
|
296
|
+
files,
|
|
297
|
+
sideEffects,
|
|
298
|
+
};
|
|
299
|
+
writeJsonFile(filesIndexFile, filesIndex);
|
|
300
|
+
return requiresBuild;
|
|
301
|
+
}
|
|
302
|
+
function writeJsonFile(filePath, data) {
|
|
303
|
+
const targetDir = path_1.default.dirname(filePath);
|
|
304
|
+
// TODO: use the API of @pnpm/cafs to write this file
|
|
305
|
+
// There is actually no need to create the directory in 99% of cases.
|
|
306
|
+
// So by using cafs API, we'll improve performance.
|
|
307
|
+
fs_1.default.mkdirSync(targetDir, { recursive: true });
|
|
308
|
+
// We remove the "-index.json" from the end of the temp file name
|
|
309
|
+
// in order to avoid ENAMETOOLONG errors
|
|
310
|
+
const temp = `${filePath.slice(0, -11)}${process.pid}`;
|
|
311
|
+
graceful_fs_1.default.writeFileSync(temp, JSON.stringify(data));
|
|
312
|
+
(0, store_cafs_1.optimisticRenameOverwrite)(temp, filePath);
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=start.js.map
|
package/lib/start.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
|
package/lib/worker.js
CHANGED
|
@@ -1,311 +1,5 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const graceful_fs_1 = __importDefault(require("@pnpm/graceful-fs"));
|
|
32
|
-
const create_cafs_store_1 = require("@pnpm/create-cafs-store");
|
|
33
|
-
const crypto = __importStar(require("@pnpm/crypto.polyfill"));
|
|
34
|
-
const exec_pkg_requires_build_1 = require("@pnpm/exec.pkg-requires-build");
|
|
35
|
-
const fs_hard_link_dir_1 = require("@pnpm/fs.hard-link-dir");
|
|
36
|
-
const store_cafs_1 = require("@pnpm/store.cafs");
|
|
37
|
-
const symlink_dependency_1 = require("@pnpm/symlink-dependency");
|
|
38
|
-
const load_json_file_1 = require("load-json-file");
|
|
39
|
-
const worker_threads_1 = require("worker_threads");
|
|
40
|
-
const INTEGRITY_REGEX = /^([^-]+)-([a-z0-9+/=]+)$/i;
|
|
41
|
-
worker_threads_1.parentPort.on('message', handleMessage);
|
|
42
|
-
const cafsCache = new Map();
|
|
43
|
-
const cafsStoreCache = new Map();
|
|
44
|
-
const cafsLocker = new Map();
|
|
45
|
-
async function handleMessage(message) {
|
|
46
|
-
if (message === false) {
|
|
47
|
-
worker_threads_1.parentPort.off('message', handleMessage);
|
|
48
|
-
process.exit(0);
|
|
49
|
-
}
|
|
50
|
-
try {
|
|
51
|
-
switch (message.type) {
|
|
52
|
-
case 'extract': {
|
|
53
|
-
worker_threads_1.parentPort.postMessage(addTarballToStore(message));
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
case 'link': {
|
|
57
|
-
worker_threads_1.parentPort.postMessage(importPackage(message));
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case 'add-dir': {
|
|
61
|
-
worker_threads_1.parentPort.postMessage(addFilesFromDir(message));
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
case 'init-store': {
|
|
65
|
-
worker_threads_1.parentPort.postMessage(initStore(message));
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
case 'readPkgFromCafs': {
|
|
69
|
-
let { storeDir, filesIndexFile, readManifest, verifyStoreIntegrity } = message;
|
|
70
|
-
let pkgFilesIndex;
|
|
71
|
-
try {
|
|
72
|
-
pkgFilesIndex = (0, load_json_file_1.sync)(filesIndexFile);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// ignoring. It is fine if the integrity file is not present. Just refetch the package
|
|
76
|
-
}
|
|
77
|
-
if (!pkgFilesIndex) {
|
|
78
|
-
worker_threads_1.parentPort.postMessage({
|
|
79
|
-
status: 'success',
|
|
80
|
-
value: {
|
|
81
|
-
verified: false,
|
|
82
|
-
pkgFilesIndex: null,
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
let verifyResult;
|
|
88
|
-
if (pkgFilesIndex.requiresBuild == null) {
|
|
89
|
-
readManifest = true;
|
|
90
|
-
}
|
|
91
|
-
if (verifyStoreIntegrity) {
|
|
92
|
-
verifyResult = (0, store_cafs_1.checkPkgFilesIntegrity)(storeDir, pkgFilesIndex, readManifest);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
verifyResult = {
|
|
96
|
-
passed: true,
|
|
97
|
-
manifest: readManifest ? (0, store_cafs_1.readManifestFromStore)(storeDir, pkgFilesIndex) : undefined,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
const requiresBuild = pkgFilesIndex.requiresBuild ?? (0, exec_pkg_requires_build_1.pkgRequiresBuild)(verifyResult.manifest, pkgFilesIndex.files);
|
|
101
|
-
worker_threads_1.parentPort.postMessage({
|
|
102
|
-
status: 'success',
|
|
103
|
-
value: {
|
|
104
|
-
verified: verifyResult.passed,
|
|
105
|
-
manifest: verifyResult.manifest,
|
|
106
|
-
pkgFilesIndex,
|
|
107
|
-
requiresBuild,
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
case 'symlinkAllModules': {
|
|
113
|
-
worker_threads_1.parentPort.postMessage(symlinkAllModules(message));
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
case 'hardLinkDir': {
|
|
117
|
-
(0, fs_hard_link_dir_1.hardLinkDir)(message.src, message.destDirs);
|
|
118
|
-
worker_threads_1.parentPort.postMessage({ status: 'success' });
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (e) { // eslint-disable-line
|
|
124
|
-
worker_threads_1.parentPort.postMessage({
|
|
125
|
-
status: 'error',
|
|
126
|
-
error: {
|
|
127
|
-
code: e.code,
|
|
128
|
-
message: e.message ?? e.toString(),
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
function addTarballToStore({ buffer, storeDir, integrity, filesIndexFile }) {
|
|
134
|
-
if (integrity) {
|
|
135
|
-
const [, algo, integrityHash] = integrity.match(INTEGRITY_REGEX);
|
|
136
|
-
// Compensate for the possibility of non-uniform Base64 padding
|
|
137
|
-
const normalizedRemoteHash = Buffer.from(integrityHash, 'base64').toString('hex');
|
|
138
|
-
const calculatedHash = crypto.hash(algo, buffer, 'hex');
|
|
139
|
-
if (calculatedHash !== normalizedRemoteHash) {
|
|
140
|
-
return {
|
|
141
|
-
status: 'error',
|
|
142
|
-
error: {
|
|
143
|
-
type: 'integrity_validation_failed',
|
|
144
|
-
algorithm: algo,
|
|
145
|
-
expected: integrity,
|
|
146
|
-
found: `${algo}-${Buffer.from(calculatedHash, 'hex').toString('base64')}`,
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
if (!cafsCache.has(storeDir)) {
|
|
152
|
-
cafsCache.set(storeDir, (0, store_cafs_1.createCafs)(storeDir));
|
|
153
|
-
}
|
|
154
|
-
const cafs = cafsCache.get(storeDir);
|
|
155
|
-
const { filesIndex, manifest } = cafs.addFilesFromTarball(buffer, true);
|
|
156
|
-
const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);
|
|
157
|
-
const requiresBuild = writeFilesIndexFile(filesIndexFile, { manifest: manifest ?? {}, files: filesIntegrity });
|
|
158
|
-
return { status: 'success', value: { filesIndex: filesMap, manifest, requiresBuild } };
|
|
159
|
-
}
|
|
160
|
-
function initStore({ storeDir }) {
|
|
161
|
-
fs_1.default.mkdirSync(storeDir, { recursive: true });
|
|
162
|
-
try {
|
|
163
|
-
const hexChars = '0123456789abcdef'.split('');
|
|
164
|
-
for (const subDir of ['files', 'index']) {
|
|
165
|
-
const subDirPath = path_1.default.join(storeDir, subDir);
|
|
166
|
-
fs_1.default.mkdirSync(subDirPath);
|
|
167
|
-
for (const hex1 of hexChars) {
|
|
168
|
-
for (const hex2 of hexChars) {
|
|
169
|
-
fs_1.default.mkdirSync(path_1.default.join(subDirPath, `${hex1}${hex2}`));
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
catch {
|
|
175
|
-
// If a parallel process has already started creating the directories in the store,
|
|
176
|
-
// then we just stop.
|
|
177
|
-
}
|
|
178
|
-
return { status: 'success' };
|
|
179
|
-
}
|
|
180
|
-
function addFilesFromDir({ dir, storeDir, filesIndexFile, sideEffectsCacheKey, files }) {
|
|
181
|
-
if (!cafsCache.has(storeDir)) {
|
|
182
|
-
cafsCache.set(storeDir, (0, store_cafs_1.createCafs)(storeDir));
|
|
183
|
-
}
|
|
184
|
-
const cafs = cafsCache.get(storeDir);
|
|
185
|
-
const { filesIndex, manifest } = cafs.addFilesFromDir(dir, {
|
|
186
|
-
files,
|
|
187
|
-
readManifest: true,
|
|
188
|
-
});
|
|
189
|
-
const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);
|
|
190
|
-
let requiresBuild;
|
|
191
|
-
if (sideEffectsCacheKey) {
|
|
192
|
-
let filesIndex;
|
|
193
|
-
try {
|
|
194
|
-
filesIndex = (0, load_json_file_1.sync)(filesIndexFile);
|
|
195
|
-
}
|
|
196
|
-
catch {
|
|
197
|
-
// If there is no existing index file, then we cannot store the side effects.
|
|
198
|
-
return {
|
|
199
|
-
status: 'success',
|
|
200
|
-
value: {
|
|
201
|
-
filesIndex: filesMap,
|
|
202
|
-
manifest,
|
|
203
|
-
requiresBuild: (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, filesIntegrity),
|
|
204
|
-
},
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
filesIndex.sideEffects = filesIndex.sideEffects ?? {};
|
|
208
|
-
filesIndex.sideEffects[sideEffectsCacheKey] = calculateDiff(filesIndex.files, filesIntegrity);
|
|
209
|
-
if (filesIndex.requiresBuild == null) {
|
|
210
|
-
requiresBuild = (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, filesIntegrity);
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
requiresBuild = filesIndex.requiresBuild;
|
|
214
|
-
}
|
|
215
|
-
writeJsonFile(filesIndexFile, filesIndex);
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
requiresBuild = writeFilesIndexFile(filesIndexFile, { manifest: manifest ?? {}, files: filesIntegrity });
|
|
219
|
-
}
|
|
220
|
-
return { status: 'success', value: { filesIndex: filesMap, manifest, requiresBuild } };
|
|
221
|
-
}
|
|
222
|
-
function calculateDiff(baseFiles, sideEffectsFiles) {
|
|
223
|
-
const deleted = [];
|
|
224
|
-
const added = {};
|
|
225
|
-
for (const file of new Set([...Object.keys(baseFiles), ...Object.keys(sideEffectsFiles)])) {
|
|
226
|
-
if (!sideEffectsFiles[file]) {
|
|
227
|
-
deleted.push(file);
|
|
228
|
-
}
|
|
229
|
-
else if (!baseFiles[file] ||
|
|
230
|
-
baseFiles[file].integrity !== sideEffectsFiles[file].integrity ||
|
|
231
|
-
baseFiles[file].mode !== sideEffectsFiles[file].mode) {
|
|
232
|
-
added[file] = sideEffectsFiles[file];
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
const diff = {};
|
|
236
|
-
if (deleted.length > 0) {
|
|
237
|
-
diff.deleted = deleted;
|
|
238
|
-
}
|
|
239
|
-
if (Object.keys(added).length > 0) {
|
|
240
|
-
diff.added = added;
|
|
241
|
-
}
|
|
242
|
-
return diff;
|
|
243
|
-
}
|
|
244
|
-
function processFilesIndex(filesIndex) {
|
|
245
|
-
const filesIntegrity = {};
|
|
246
|
-
const filesMap = {};
|
|
247
|
-
for (const [k, { checkedAt, filePath, integrity, mode, size }] of Object.entries(filesIndex)) {
|
|
248
|
-
filesIntegrity[k] = {
|
|
249
|
-
checkedAt,
|
|
250
|
-
integrity: integrity.toString(), // TODO: use the raw Integrity object
|
|
251
|
-
mode,
|
|
252
|
-
size,
|
|
253
|
-
};
|
|
254
|
-
filesMap[k] = filePath;
|
|
255
|
-
}
|
|
256
|
-
return { filesIntegrity, filesMap };
|
|
257
|
-
}
|
|
258
|
-
function importPackage({ storeDir, packageImportMethod, filesResponse, sideEffectsCacheKey, targetDir, requiresBuild, force, keepModulesDir, disableRelinkLocalDirDeps, }) {
|
|
259
|
-
const cacheKey = JSON.stringify({ storeDir, packageImportMethod });
|
|
260
|
-
if (!cafsStoreCache.has(cacheKey)) {
|
|
261
|
-
cafsStoreCache.set(cacheKey, (0, create_cafs_store_1.createCafsStore)(storeDir, { packageImportMethod, cafsLocker }));
|
|
262
|
-
}
|
|
263
|
-
const cafsStore = cafsStoreCache.get(cacheKey);
|
|
264
|
-
const { importMethod, isBuilt } = cafsStore.importPackage(targetDir, {
|
|
265
|
-
filesResponse,
|
|
266
|
-
force,
|
|
267
|
-
disableRelinkLocalDirDeps,
|
|
268
|
-
requiresBuild,
|
|
269
|
-
sideEffectsCacheKey,
|
|
270
|
-
keepModulesDir,
|
|
271
|
-
});
|
|
272
|
-
return { status: 'success', value: { isBuilt, importMethod } };
|
|
273
|
-
}
|
|
274
|
-
function symlinkAllModules(opts) {
|
|
275
|
-
for (const dep of opts.deps) {
|
|
276
|
-
for (const [alias, pkgDir] of Object.entries(dep.children)) {
|
|
277
|
-
if (alias !== dep.name) {
|
|
278
|
-
(0, symlink_dependency_1.symlinkDependencySync)(pkgDir, dep.modules, alias);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return { status: 'success' };
|
|
283
|
-
}
|
|
284
|
-
function writeFilesIndexFile(filesIndexFile, { manifest, files, sideEffects }) {
|
|
285
|
-
const requiresBuild = (0, exec_pkg_requires_build_1.pkgRequiresBuild)(manifest, files);
|
|
286
|
-
const filesIndex = {
|
|
287
|
-
name: manifest.name,
|
|
288
|
-
version: manifest.version,
|
|
289
|
-
requiresBuild,
|
|
290
|
-
files,
|
|
291
|
-
sideEffects,
|
|
292
|
-
};
|
|
293
|
-
writeJsonFile(filesIndexFile, filesIndex);
|
|
294
|
-
return requiresBuild;
|
|
295
|
-
}
|
|
296
|
-
function writeJsonFile(filePath, data) {
|
|
297
|
-
const targetDir = path_1.default.dirname(filePath);
|
|
298
|
-
// TODO: use the API of @pnpm/cafs to write this file
|
|
299
|
-
// There is actually no need to create the directory in 99% of cases.
|
|
300
|
-
// So by using cafs API, we'll improve performance.
|
|
301
|
-
fs_1.default.mkdirSync(targetDir, { recursive: true });
|
|
302
|
-
// We remove the "-index.json" from the end of the temp file name
|
|
303
|
-
// in order to avoid ENAMETOOLONG errors
|
|
304
|
-
const temp = `${filePath.slice(0, -11)}${process.pid}`;
|
|
305
|
-
graceful_fs_1.default.writeFileSync(temp, JSON.stringify(data));
|
|
306
|
-
(0, store_cafs_1.optimisticRenameOverwrite)(temp, filePath);
|
|
307
|
-
}
|
|
308
|
-
process.on('uncaughtException', (err) => {
|
|
309
|
-
console.error(err);
|
|
310
|
-
});
|
|
3
|
+
const start_js_1 = require("./start.js");
|
|
4
|
+
(0, start_js_1.startWorker)();
|
|
311
5
|
//# sourceMappingURL=worker.js.map
|
package/lib/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":";;AAAA,yCAAwC;AAExC,IAAA,sBAAW,GAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/worker",
|
|
3
|
-
"version": "1000.
|
|
3
|
+
"version": "1000.3.0",
|
|
4
4
|
"description": "A worker for extracting package taralls to the store",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"main": "lib/index.js",
|
|
19
19
|
"types": "lib/index.d.ts",
|
|
20
20
|
"exports": {
|
|
21
|
-
".": "./lib/index.js"
|
|
21
|
+
".": "./lib/index.js",
|
|
22
|
+
"./start": "./lib/start.js"
|
|
22
23
|
},
|
|
23
24
|
"files": [
|
|
24
25
|
"lib",
|
|
@@ -31,23 +32,23 @@
|
|
|
31
32
|
"p-limit": "^3.1.0",
|
|
32
33
|
"shlex": "^2.1.2",
|
|
33
34
|
"@pnpm/cafs-types": "1000.0.0",
|
|
35
|
+
"@pnpm/create-cafs-store": "1000.0.20",
|
|
36
|
+
"@pnpm/crypto.polyfill": "1000.1.0",
|
|
34
37
|
"@pnpm/error": "1000.0.5",
|
|
38
|
+
"@pnpm/exec.pkg-requires-build": "1000.0.11",
|
|
35
39
|
"@pnpm/graceful-fs": "1000.0.1",
|
|
36
|
-
"@pnpm/create-cafs-store": "1000.0.19",
|
|
37
40
|
"@pnpm/fs.hard-link-dir": "1000.0.2",
|
|
38
|
-
"@pnpm/store.cafs": "1000.0.
|
|
39
|
-
"@pnpm/symlink-dependency": "1000.0.
|
|
40
|
-
"@pnpm/exec.pkg-requires-build": "1000.0.10",
|
|
41
|
-
"@pnpm/crypto.polyfill": "1000.1.0"
|
|
41
|
+
"@pnpm/store.cafs": "1000.0.19",
|
|
42
|
+
"@pnpm/symlink-dependency": "1000.0.12"
|
|
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/worker": "1000.
|
|
49
|
-
"@pnpm/
|
|
50
|
-
"@pnpm/
|
|
49
|
+
"@pnpm/worker": "1000.3.0",
|
|
50
|
+
"@pnpm/logger": "1001.0.1",
|
|
51
|
+
"@pnpm/types": "1000.9.0"
|
|
51
52
|
},
|
|
52
53
|
"engines": {
|
|
53
54
|
"node": ">=18.12"
|