@modern-js/app-tools 2.63.2 → 2.63.3

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.
Files changed (32) hide show
  1. package/dist/cjs/compat/hooks.js +16 -1
  2. package/dist/cjs/compat/index.js +3 -1
  3. package/dist/cjs/compat/utils.js +29 -8
  4. package/dist/cjs/plugins/deploy/platforms/netlify.js +7 -4
  5. package/dist/cjs/plugins/deploy/platforms/node.js +6 -3
  6. package/dist/cjs/plugins/deploy/platforms/vercel.js +7 -4
  7. package/dist/esm/compat/hooks.js +83 -24
  8. package/dist/esm/compat/index.js +4 -2
  9. package/dist/esm/compat/utils.js +29 -8
  10. package/dist/esm/plugins/deploy/platforms/netlify.js +6 -3
  11. package/dist/esm/plugins/deploy/platforms/node.js +5 -2
  12. package/dist/esm/plugins/deploy/platforms/vercel.js +6 -3
  13. package/dist/esm-node/compat/hooks.js +16 -1
  14. package/dist/esm-node/compat/index.js +4 -2
  15. package/dist/esm-node/compat/utils.js +29 -8
  16. package/dist/esm-node/plugins/deploy/platforms/netlify.js +6 -3
  17. package/dist/esm-node/plugins/deploy/platforms/node.js +5 -2
  18. package/dist/esm-node/plugins/deploy/platforms/vercel.js +6 -3
  19. package/dist/types/compat/utils.d.ts +8 -1
  20. package/package.json +19 -23
  21. package/dist/cjs/plugins/deploy/dependencies/index.js +0 -237
  22. package/dist/cjs/plugins/deploy/dependencies/utils.js +0 -179
  23. package/dist/cjs/plugins/deploy/exports.js +0 -28
  24. package/dist/esm/plugins/deploy/dependencies/index.js +0 -615
  25. package/dist/esm/plugins/deploy/dependencies/utils.js +0 -421
  26. package/dist/esm/plugins/deploy/exports.js +0 -4
  27. package/dist/esm-node/plugins/deploy/dependencies/index.js +0 -202
  28. package/dist/esm-node/plugins/deploy/dependencies/utils.js +0 -137
  29. package/dist/esm-node/plugins/deploy/exports.js +0 -4
  30. package/dist/types/plugins/deploy/dependencies/index.d.ts +0 -20
  31. package/dist/types/plugins/deploy/dependencies/utils.d.ts +0 -44
  32. package/dist/types/plugins/deploy/exports.d.ts +0 -1
@@ -1,421 +0,0 @@
1
- import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
- import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
4
- import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
- import os from "node:os";
6
- import path from "path";
7
- import { fs as fse } from "@modern-js/utils";
8
- import { nodeFileTrace, resolve } from "@vercel/nft";
9
- import { parseNodeModulePath } from "mlly";
10
- function applyPublicCondition(pkg) {
11
- var _pkg_publishConfig;
12
- if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
13
- var _pkg_publishConfig1;
14
- pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
15
- }
16
- }
17
- var writePackage = function() {
18
- var _ref = _async_to_generator(function(options) {
19
- var pkg, version, projectDir, _pkgPath, pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
20
- return _ts_generator(this, function(_state) {
21
- switch (_state.label) {
22
- case 0:
23
- pkg = options.pkg, version = options.version, projectDir = options.projectDir, _pkgPath = options._pkgPath;
24
- pkgPath = _pkgPath || pkg.name;
25
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
26
- _state.label = 1;
27
- case 1:
28
- _state.trys.push([
29
- 1,
30
- 10,
31
- 11,
32
- 12
33
- ]);
34
- _iterator = pkg.versions[version].files[Symbol.iterator]();
35
- _state.label = 2;
36
- case 2:
37
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done))
38
- return [
39
- 3,
40
- 9
41
- ];
42
- src = _step.value;
43
- if (!src.includes("node_modules"))
44
- return [
45
- 3,
46
- 5
47
- ];
48
- subpath = parseNodeModulePath(src).subpath;
49
- dest = path.join(projectDir, "node_modules", pkgPath, subpath);
50
- dirname = path.dirname(dest);
51
- return [
52
- 4,
53
- fse.ensureDir(dirname)
54
- ];
55
- case 3:
56
- _state.sent();
57
- return [
58
- 4,
59
- fse.copyFile(src, dest)
60
- ];
61
- case 4:
62
- _state.sent();
63
- return [
64
- 3,
65
- 8
66
- ];
67
- case 5:
68
- subpath1 = path.relative(pkg.versions[version].path, src);
69
- dest1 = path.join(projectDir, "node_modules", pkgPath, subpath1);
70
- dirname1 = path.dirname(dest1);
71
- return [
72
- 4,
73
- fse.ensureDir(dirname1)
74
- ];
75
- case 6:
76
- _state.sent();
77
- return [
78
- 4,
79
- fse.copyFile(src, dest1)
80
- ];
81
- case 7:
82
- _state.sent();
83
- _state.label = 8;
84
- case 8:
85
- _iteratorNormalCompletion = true;
86
- return [
87
- 3,
88
- 2
89
- ];
90
- case 9:
91
- return [
92
- 3,
93
- 12
94
- ];
95
- case 10:
96
- err = _state.sent();
97
- _didIteratorError = true;
98
- _iteratorError = err;
99
- return [
100
- 3,
101
- 12
102
- ];
103
- case 11:
104
- try {
105
- if (!_iteratorNormalCompletion && _iterator.return != null) {
106
- _iterator.return();
107
- }
108
- } finally {
109
- if (_didIteratorError) {
110
- throw _iteratorError;
111
- }
112
- }
113
- return [
114
- 7
115
- ];
116
- case 12:
117
- pkgJSON = pkg.versions[version].pkgJSON;
118
- applyPublicCondition(pkgJSON);
119
- packageJsonPath = path.join(projectDir, "node_modules", pkgPath, "package.json");
120
- return [
121
- 4,
122
- fse.ensureDir(path.dirname(packageJsonPath))
123
- ];
124
- case 13:
125
- _state.sent();
126
- return [
127
- 4,
128
- fse.writeFile(packageJsonPath, JSON.stringify(pkgJSON, null, 2))
129
- ];
130
- case 14:
131
- _state.sent();
132
- return [
133
- 2
134
- ];
135
- }
136
- });
137
- });
138
- return function writePackage2(options) {
139
- return _ref.apply(this, arguments);
140
- };
141
- }();
142
- var isWindows = os.platform() === "win32";
143
- var linkPackage = function() {
144
- var _ref = _async_to_generator(function(from, to, projectRootDir) {
145
- var src, dest, dstStat, exists;
146
- return _ts_generator(this, function(_state) {
147
- switch (_state.label) {
148
- case 0:
149
- src = path.join(projectRootDir, "node_modules", from);
150
- dest = path.join(projectRootDir, "node_modules", to);
151
- return [
152
- 4,
153
- fse.lstat(dest).catch(function() {
154
- return null;
155
- })
156
- ];
157
- case 1:
158
- dstStat = _state.sent();
159
- exists = dstStat === null || dstStat === void 0 ? void 0 : dstStat.isSymbolicLink();
160
- if (exists) {
161
- return [
162
- 2
163
- ];
164
- }
165
- return [
166
- 4,
167
- fse.mkdir(path.dirname(dest), {
168
- recursive: true
169
- })
170
- ];
171
- case 2:
172
- _state.sent();
173
- return [
174
- 4,
175
- fse.symlink(path.relative(path.dirname(dest), src), dest, isWindows ? "junction" : "dir").catch(function(error) {
176
- console.error("Cannot link", from, "to", to, error);
177
- })
178
- ];
179
- case 3:
180
- _state.sent();
181
- return [
182
- 2
183
- ];
184
- }
185
- });
186
- });
187
- return function linkPackage2(from, to, projectRootDir) {
188
- return _ref.apply(this, arguments);
189
- };
190
- }();
191
- var readDirRecursive = function() {
192
- var _ref = _async_to_generator(function(dir) {
193
- var options, filter, files, filesAndDirs;
194
- var _arguments = arguments;
195
- return _ts_generator(this, function(_state) {
196
- switch (_state.label) {
197
- case 0:
198
- options = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
199
- filter = options.filter;
200
- return [
201
- 4,
202
- fse.readdir(dir, {
203
- withFileTypes: true
204
- })
205
- ];
206
- case 1:
207
- files = _state.sent();
208
- return [
209
- 4,
210
- Promise.all(files.map(function() {
211
- var _ref2 = _async_to_generator(function(file) {
212
- var resolvedPath;
213
- return _ts_generator(this, function(_state2) {
214
- resolvedPath = path.resolve(dir, file.name);
215
- if (file.isDirectory()) {
216
- return [
217
- 2,
218
- readDirRecursive(resolvedPath, options)
219
- ];
220
- } else {
221
- return [
222
- 2,
223
- filter && !filter(resolvedPath) ? [] : resolvedPath
224
- ];
225
- }
226
- return [
227
- 2
228
- ];
229
- });
230
- });
231
- return function(file) {
232
- return _ref2.apply(this, arguments);
233
- };
234
- }()))
235
- ];
236
- case 2:
237
- filesAndDirs = _state.sent();
238
- return [
239
- 2,
240
- filesAndDirs.flat()
241
- ];
242
- }
243
- });
244
- });
245
- return function readDirRecursive2(dir) {
246
- return _ref.apply(this, arguments);
247
- };
248
- }();
249
- var isFile = function() {
250
- var _ref = _async_to_generator(function(file) {
251
- var stat, error;
252
- return _ts_generator(this, function(_state) {
253
- switch (_state.label) {
254
- case 0:
255
- _state.trys.push([
256
- 0,
257
- 2,
258
- ,
259
- 3
260
- ]);
261
- return [
262
- 4,
263
- fse.stat(file)
264
- ];
265
- case 1:
266
- stat = _state.sent();
267
- return [
268
- 2,
269
- stat.isFile()
270
- ];
271
- case 2:
272
- error = _state.sent();
273
- if (error.code === "ENOENT") {
274
- return [
275
- 2,
276
- false
277
- ];
278
- }
279
- throw error;
280
- case 3:
281
- return [
282
- 2
283
- ];
284
- }
285
- });
286
- });
287
- return function isFile2(file) {
288
- return _ref.apply(this, arguments);
289
- };
290
- }();
291
- var findEntryFiles = function() {
292
- var _ref = _async_to_generator(function(rootDir, entryFilter) {
293
- var files;
294
- return _ts_generator(this, function(_state) {
295
- switch (_state.label) {
296
- case 0:
297
- return [
298
- 4,
299
- readDirRecursive(rootDir, {
300
- filter: entryFilter
301
- })
302
- ];
303
- case 1:
304
- files = _state.sent();
305
- return [
306
- 2,
307
- files.filter(function(file) {
308
- return file.endsWith(".mjs") || file.endsWith(".cjs") || file.endsWith(".js");
309
- })
310
- ];
311
- }
312
- });
313
- });
314
- return function findEntryFiles2(rootDir, entryFilter) {
315
- return _ref.apply(this, arguments);
316
- };
317
- }();
318
- var findPackageParents = function(pkg, version, tracedFiles) {
319
- var versionFiles = pkg.versions[version].files.map(function(path2) {
320
- return tracedFiles[path2];
321
- });
322
- var parentPkgs = _to_consumable_array(new Set(versionFiles.flatMap(function(file) {
323
- return (
324
- // Because it supports copyWholePackage configuration, not all files exist.
325
- file === null || file === void 0 ? void 0 : file.parents.map(function(parentPath) {
326
- var parentFile = tracedFiles[parentPath];
327
- if (!parentFile || parentFile.pkgName === pkg.name) {
328
- return null;
329
- }
330
- return "".concat(parentFile.pkgName, "@").concat(parentFile.pkgVersion);
331
- }).filter(Boolean)
332
- );
333
- })));
334
- return parentPkgs.filter(function(parentPkg) {
335
- return parentPkg;
336
- });
337
- };
338
- var traceFiles = function() {
339
- var _ref = _async_to_generator(function(param) {
340
- var entryFiles, serverRootDir, _param_base, base, traceOptions;
341
- return _ts_generator(this, function(_state) {
342
- switch (_state.label) {
343
- case 0:
344
- entryFiles = param.entryFiles, serverRootDir = param.serverRootDir, _param_base = param.base, base = _param_base === void 0 ? "/" : _param_base, traceOptions = param.traceOptions;
345
- return [
346
- 4,
347
- nodeFileTrace(entryFiles, _object_spread({
348
- base,
349
- processCwd: serverRootDir,
350
- resolve: function() {
351
- var _ref2 = _async_to_generator(function(id, parent, job, isCjs) {
352
- return _ts_generator(this, function(_state2) {
353
- if (id.startsWith("@modern-js/prod-server")) {
354
- return [
355
- 2,
356
- require.resolve(id, {
357
- paths: [
358
- require.resolve("@modern-js/app-tools")
359
- ]
360
- })
361
- ];
362
- } else {
363
- return [
364
- 2,
365
- resolve(id, parent, job, isCjs)
366
- ];
367
- }
368
- return [
369
- 2
370
- ];
371
- });
372
- });
373
- return function(id, parent, job, isCjs) {
374
- return _ref2.apply(this, arguments);
375
- };
376
- }()
377
- }, traceOptions))
378
- ];
379
- case 1:
380
- return [
381
- 2,
382
- _state.sent()
383
- ];
384
- }
385
- });
386
- });
387
- return function traceFiles2(_) {
388
- return _ref.apply(this, arguments);
389
- };
390
- }();
391
- var resolveTracedPath = function() {
392
- var _ref = _async_to_generator(function(base, p) {
393
- return _ts_generator(this, function(_state) {
394
- return [
395
- 2,
396
- fse.realpath(path.resolve(base, p))
397
- ];
398
- });
399
- });
400
- return function resolveTracedPath2(base, p) {
401
- return _ref.apply(this, arguments);
402
- };
403
- }();
404
- var isSubPath = function(parentPath, childPath) {
405
- if (!parentPath || !childPath) {
406
- return false;
407
- }
408
- var relative = path.relative(parentPath, childPath);
409
- return relative && !relative.startsWith("..");
410
- };
411
- export {
412
- findEntryFiles,
413
- findPackageParents,
414
- isFile,
415
- isSubPath,
416
- linkPackage,
417
- readDirRecursive,
418
- resolveTracedPath,
419
- traceFiles,
420
- writePackage
421
- };
@@ -1,4 +0,0 @@
1
- import { handleDependencies } from "./dependencies";
2
- export {
3
- handleDependencies
4
- };
@@ -1,202 +0,0 @@
1
- import path from "node:path";
2
- import { fs as fse, pkgUp, semver } from "@modern-js/utils";
3
- import { parseNodeModulePath } from "mlly";
4
- import { readPackageJSON } from "pkg-types";
5
- import { traceFiles as defaultTraceFiles, findEntryFiles, findPackageParents, isFile, isSubPath, linkPackage, readDirRecursive, resolveTracedPath, writePackage } from "./utils";
6
- import { nodeFileTrace } from "@vercel/nft";
7
- const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage, traceOptions }) => {
8
- const base = "/";
9
- const entryFiles = await findEntryFiles(serverRootDir, entryFilter);
10
- const fileTrace = await traceFiles({
11
- entryFiles: entryFiles.concat(includeEntries),
12
- serverRootDir,
13
- base,
14
- traceOptions
15
- });
16
- const currentProjectModules = path.join(appDir, "node_modules");
17
- const dependencySearchRoot = path.resolve(appDir, "../../../../../../");
18
- const tracedFiles = Object.fromEntries(await Promise.all([
19
- ...fileTrace.reasons.entries()
20
- ].map(async ([_path, reasons]) => {
21
- if (reasons.ignored) {
22
- return;
23
- }
24
- const filePath = await resolveTracedPath(base, _path);
25
- if (isSubPath(serverRootDir, filePath) || isSubPath(appDir, filePath) && !isSubPath(currentProjectModules, filePath)) {
26
- return;
27
- }
28
- if (!await isFile(filePath)) {
29
- return;
30
- }
31
- let baseDir;
32
- let pkgName;
33
- let subpath;
34
- let pkgPath;
35
- if (filePath.includes("node_modules")) {
36
- const parsed = parseNodeModulePath(filePath);
37
- baseDir = parsed.dir;
38
- pkgName = parsed.name;
39
- subpath = parsed.subpath;
40
- pkgPath = path.join(baseDir, pkgName);
41
- } else {
42
- const MODERN_UTILS_PATH = "packages/toolkit/utils";
43
- const MODERN_UTILS_PATH_REGEX = new RegExp(`(.*${MODERN_UTILS_PATH})`);
44
- const match = filePath.match(MODERN_UTILS_PATH_REGEX);
45
- const packageJsonPath = match ? path.join(match[0], "package.json") : await pkgUp({
46
- cwd: path.dirname(filePath)
47
- });
48
- if (packageJsonPath && isSubPath(dependencySearchRoot, packageJsonPath)) {
49
- const packageJson = await fse.readJSON(packageJsonPath);
50
- pkgPath = baseDir = path.dirname(packageJsonPath);
51
- subpath = path.relative(baseDir, filePath);
52
- pkgName = packageJson.name;
53
- }
54
- }
55
- if (!baseDir) {
56
- return;
57
- }
58
- const parents = await Promise.all([
59
- ...reasons.parents
60
- ].map((p) => resolveTracedPath(base, p)));
61
- const tracedFile = {
62
- path: filePath,
63
- parents,
64
- isDirectDep: parents.some((parent) => {
65
- return isSubPath(appDir, parent) && !isSubPath(currentProjectModules, parent);
66
- }),
67
- subpath,
68
- pkgName,
69
- pkgPath
70
- };
71
- return [
72
- filePath,
73
- tracedFile
74
- ];
75
- })).then((r) => r.filter(Boolean)));
76
- const tracedPackages = {};
77
- for (const tracedFile of Object.values(tracedFiles)) {
78
- const { pkgName } = tracedFile;
79
- let tracedPackage = tracedPackages[pkgName];
80
- let pkgJSON = await readPackageJSON(tracedFile.pkgPath, {
81
- cache: true
82
- }).catch(() => {
83
- });
84
- if (!pkgJSON) {
85
- pkgJSON = {
86
- name: pkgName,
87
- version: "0.0.0"
88
- };
89
- }
90
- if (!tracedPackage) {
91
- tracedPackage = {
92
- name: pkgName,
93
- versions: {}
94
- };
95
- tracedPackages[pkgName] = tracedPackage;
96
- }
97
- let tracedPackageVersion = tracedPackage.versions[pkgJSON.version];
98
- if (!tracedPackageVersion) {
99
- tracedPackageVersion = {
100
- path: tracedFile.pkgPath,
101
- files: [],
102
- isDirectDep: false,
103
- pkgJSON
104
- };
105
- if (tracedFile.isDirectDep) {
106
- tracedPackageVersion.isDirectDep = tracedFile.isDirectDep;
107
- }
108
- tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
109
- }
110
- tracedFile.pkgName = pkgName;
111
- tracedFile.pkgVersion = pkgJSON.version;
112
- const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
113
- if (tracedFile.path.startsWith(tracedFile.pkgPath) && // Merged package files are based on the version, not on paths, to handle some boundary cases
114
- tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion) {
115
- if (shouldCopyWholePackage) {
116
- const allFiles = await readDirRecursive(tracedFile.pkgPath);
117
- tracedPackageVersion.files.push(...allFiles);
118
- } else {
119
- tracedPackageVersion.files.push(tracedFile.path);
120
- }
121
- }
122
- }
123
- const multiVersionPkgs = {};
124
- const singleVersionPackages = [];
125
- for (const tracedPackage of Object.values(tracedPackages)) {
126
- const versions = Object.keys(tracedPackage.versions);
127
- if (versions.length === 1) {
128
- singleVersionPackages.push(tracedPackage.name);
129
- continue;
130
- }
131
- multiVersionPkgs[tracedPackage.name] = {};
132
- for (const version of versions) {
133
- multiVersionPkgs[tracedPackage.name][version] = findPackageParents(tracedPackage, version, tracedFiles);
134
- }
135
- }
136
- await Promise.all(singleVersionPackages.map((pkgName) => {
137
- const pkg = tracedPackages[pkgName];
138
- const version = Object.keys(pkg.versions)[0];
139
- return writePackage({
140
- pkg,
141
- version,
142
- projectDir: serverRootDir
143
- });
144
- }));
145
- const projectPkgJson = await readPackageJSON(serverRootDir).catch(() => ({}));
146
- for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
147
- const versionEntires = Object.entries(pkgVersions).sort(([v1, p1], [v2, p2]) => {
148
- var _tracedPackages_pkgName_versions_v1, _tracedPackages_pkgName_versions, _tracedPackages_pkgName, _tracedPackages_pkgName_versions_v2, _tracedPackages_pkgName_versions1, _tracedPackages_pkgName1;
149
- const shouldHoist1 = (_tracedPackages_pkgName = tracedPackages[pkgName]) === null || _tracedPackages_pkgName === void 0 ? void 0 : (_tracedPackages_pkgName_versions = _tracedPackages_pkgName.versions) === null || _tracedPackages_pkgName_versions === void 0 ? void 0 : (_tracedPackages_pkgName_versions_v1 = _tracedPackages_pkgName_versions[v1]) === null || _tracedPackages_pkgName_versions_v1 === void 0 ? void 0 : _tracedPackages_pkgName_versions_v1.isDirectDep;
150
- const shouldHoist2 = (_tracedPackages_pkgName1 = tracedPackages[pkgName]) === null || _tracedPackages_pkgName1 === void 0 ? void 0 : (_tracedPackages_pkgName_versions1 = _tracedPackages_pkgName1.versions) === null || _tracedPackages_pkgName_versions1 === void 0 ? void 0 : (_tracedPackages_pkgName_versions_v2 = _tracedPackages_pkgName_versions1[v2]) === null || _tracedPackages_pkgName_versions_v2 === void 0 ? void 0 : _tracedPackages_pkgName_versions_v2.isDirectDep;
151
- if (shouldHoist1 && !shouldHoist2) {
152
- return -1;
153
- }
154
- if (!shouldHoist1 && shouldHoist2) {
155
- return 1;
156
- }
157
- if (p1.length === 0) {
158
- return -1;
159
- }
160
- if (p2.length === 0) {
161
- return 1;
162
- }
163
- return semver.lt(v1, v2, {
164
- loose: true
165
- }) ? 1 : -1;
166
- });
167
- for (const [version, parentPkgs] of versionEntires) {
168
- const pkg = tracedPackages[pkgName];
169
- const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
170
- await writePackage({
171
- pkg,
172
- version,
173
- projectDir: serverRootDir,
174
- _pkgPath: pkgDestPath
175
- });
176
- await linkPackage(pkgDestPath, `${pkgName}`, serverRootDir);
177
- for (const parentPkg of parentPkgs) {
178
- const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
179
- await (multiVersionPkgs[parentPkgName] ? linkPackage(pkgDestPath, `.modernjs/${parentPkg}/node_modules/${pkgName}`, serverRootDir) : linkPackage(pkgDestPath, `${parentPkgName}/node_modules/${pkgName}`, serverRootDir));
180
- }
181
- }
182
- }
183
- const outputPkgPath = path.join(serverRootDir, "package.json");
184
- const newPkgJson = {
185
- name: `${projectPkgJson.name || "modernjs-project"}-prod`,
186
- version: projectPkgJson.version || "0.0.0",
187
- private: true,
188
- type: projectPkgJson.type || "commonjs",
189
- dependencies: Object.fromEntries([
190
- ...Object.values(tracedPackages).map((pkg) => [
191
- pkg.name,
192
- Object.keys(pkg.versions)[0]
193
- ])
194
- ].sort(([a], [b]) => a.localeCompare(b)))
195
- };
196
- const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
197
- await fse.writeJSON(outputPkgPath, finalPkgJson);
198
- };
199
- export {
200
- handleDependencies,
201
- nodeFileTrace
202
- };