@modern-js/app-tools 2.54.3-alpha.4 → 2.54.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 (95) hide show
  1. package/dist/cjs/plugins/deploy/dependencies/index.js +17 -26
  2. package/dist/cjs/plugins/deploy/dependencies/utils.js +21 -14
  3. package/dist/cjs/plugins/deploy/platforms/netlify.js +8 -10
  4. package/dist/cjs/plugins/deploy/platforms/netlifyEntry.js +1 -0
  5. package/dist/cjs/plugins/deploy/platforms/node.js +8 -11
  6. package/dist/cjs/plugins/deploy/platforms/nodeEntry.js +1 -0
  7. package/dist/cjs/plugins/deploy/platforms/vercel.js +8 -10
  8. package/dist/cjs/plugins/deploy/platforms/vercelEntry.js +1 -0
  9. package/dist/esm/plugins/deploy/dependencies/index.js +69 -94
  10. package/dist/esm/plugins/deploy/dependencies/utils.js +40 -19
  11. package/dist/esm/plugins/deploy/platforms/netlify.js +9 -11
  12. package/dist/esm/plugins/deploy/platforms/netlifyEntry.js +2 -1
  13. package/dist/esm/plugins/deploy/platforms/node.js +9 -12
  14. package/dist/esm/plugins/deploy/platforms/nodeEntry.js +2 -1
  15. package/dist/esm/plugins/deploy/platforms/vercel.js +9 -11
  16. package/dist/esm/plugins/deploy/platforms/vercelEntry.js +2 -1
  17. package/dist/esm-node/plugins/deploy/dependencies/index.js +18 -27
  18. package/dist/esm-node/plugins/deploy/dependencies/utils.js +22 -15
  19. package/dist/esm-node/plugins/deploy/platforms/netlify.js +8 -10
  20. package/dist/esm-node/plugins/deploy/platforms/netlifyEntry.js +1 -0
  21. package/dist/esm-node/plugins/deploy/platforms/node.js +8 -11
  22. package/dist/esm-node/plugins/deploy/platforms/nodeEntry.js +1 -0
  23. package/dist/esm-node/plugins/deploy/platforms/vercel.js +8 -10
  24. package/dist/esm-node/plugins/deploy/platforms/vercelEntry.js +1 -0
  25. package/dist/types/plugins/deploy/dependencies/index.d.ts +1 -11
  26. package/dist/types/plugins/deploy/dependencies/utils.d.ts +1 -7
  27. package/package.json +17 -25
  28. package/dist/cjs/plugins/deploy/exports.js +0 -28
  29. package/dist/esm/plugins/deploy/exports.js +0 -4
  30. package/dist/esm-node/plugins/deploy/exports.js +0 -4
  31. package/dist/js/modern/analyze/constants.js +0 -15
  32. package/dist/js/modern/analyze/generateCode.js +0 -179
  33. package/dist/js/modern/analyze/getBundleEntry.js +0 -75
  34. package/dist/js/modern/analyze/getClientRoutes.js +0 -219
  35. package/dist/js/modern/analyze/getFileSystemEntry.js +0 -74
  36. package/dist/js/modern/analyze/getHtmlTemplate.js +0 -82
  37. package/dist/js/modern/analyze/getServerRoutes.js +0 -192
  38. package/dist/js/modern/analyze/index.js +0 -148
  39. package/dist/js/modern/analyze/isDefaultExportFunction.js +0 -32
  40. package/dist/js/modern/analyze/makeLegalIdentifier.js +0 -16
  41. package/dist/js/modern/analyze/templates.js +0 -88
  42. package/dist/js/modern/analyze/utils.js +0 -92
  43. package/dist/js/modern/commands/build.js +0 -154
  44. package/dist/js/modern/commands/deploy.js +0 -5
  45. package/dist/js/modern/commands/dev.js +0 -95
  46. package/dist/js/modern/commands/index.js +0 -3
  47. package/dist/js/modern/commands/inspect.js +0 -69
  48. package/dist/js/modern/commands/start.js +0 -31
  49. package/dist/js/modern/exports/server.js +0 -1
  50. package/dist/js/modern/hooks.js +0 -21
  51. package/dist/js/modern/index.js +0 -109
  52. package/dist/js/modern/locale/en.js +0 -35
  53. package/dist/js/modern/locale/index.js +0 -9
  54. package/dist/js/modern/locale/zh.js +0 -35
  55. package/dist/js/modern/utils/config.js +0 -78
  56. package/dist/js/modern/utils/createCompiler.js +0 -61
  57. package/dist/js/modern/utils/createServer.js +0 -18
  58. package/dist/js/modern/utils/getSpecifiedEntries.js +0 -36
  59. package/dist/js/modern/utils/language.js +0 -5
  60. package/dist/js/modern/utils/printInstructions.js +0 -11
  61. package/dist/js/modern/utils/routes.js +0 -15
  62. package/dist/js/modern/utils/types.js +0 -0
  63. package/dist/js/node/analyze/constants.js +0 -36
  64. package/dist/js/node/analyze/generateCode.js +0 -208
  65. package/dist/js/node/analyze/getBundleEntry.js +0 -89
  66. package/dist/js/node/analyze/getClientRoutes.js +0 -241
  67. package/dist/js/node/analyze/getFileSystemEntry.js +0 -90
  68. package/dist/js/node/analyze/getHtmlTemplate.js +0 -106
  69. package/dist/js/node/analyze/getServerRoutes.js +0 -208
  70. package/dist/js/node/analyze/index.js +0 -178
  71. package/dist/js/node/analyze/isDefaultExportFunction.js +0 -50
  72. package/dist/js/node/analyze/makeLegalIdentifier.js +0 -24
  73. package/dist/js/node/analyze/templates.js +0 -106
  74. package/dist/js/node/analyze/utils.js +0 -113
  75. package/dist/js/node/commands/build.js +0 -174
  76. package/dist/js/node/commands/deploy.js +0 -14
  77. package/dist/js/node/commands/dev.js +0 -120
  78. package/dist/js/node/commands/index.js +0 -44
  79. package/dist/js/node/commands/inspect.js +0 -98
  80. package/dist/js/node/commands/start.js +0 -47
  81. package/dist/js/node/exports/server.js +0 -13
  82. package/dist/js/node/hooks.js +0 -39
  83. package/dist/js/node/index.js +0 -141
  84. package/dist/js/node/locale/en.js +0 -42
  85. package/dist/js/node/locale/index.js +0 -20
  86. package/dist/js/node/locale/zh.js +0 -42
  87. package/dist/js/node/utils/config.js +0 -103
  88. package/dist/js/node/utils/createCompiler.js +0 -81
  89. package/dist/js/node/utils/createServer.js +0 -35
  90. package/dist/js/node/utils/getSpecifiedEntries.js +0 -46
  91. package/dist/js/node/utils/language.js +0 -13
  92. package/dist/js/node/utils/printInstructions.js +0 -22
  93. package/dist/js/node/utils/routes.js +0 -25
  94. package/dist/js/node/utils/types.js +0 -0
  95. package/dist/types/plugins/deploy/exports.d.ts +0 -1
@@ -5,7 +5,7 @@ import path from "path";
5
5
  import os from "node:os";
6
6
  import { fs as fse } from "@modern-js/utils";
7
7
  import { parseNodeModulePath } from "mlly";
8
- import { nodeFileTrace } from "@vercel/nft";
8
+ import { nodeFileTrace, resolve } from "@vercel/nft";
9
9
  function applyPublicCondition(pkg) {
10
10
  var _pkg_publishConfig;
11
11
  if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
@@ -14,12 +14,11 @@ function applyPublicCondition(pkg) {
14
14
  }
15
15
  }
16
16
  var writePackage = function() {
17
- var _ref = _async_to_generator(function(options) {
18
- var pkg, version, projectDir, _pkgPath, pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
17
+ var _ref = _async_to_generator(function(pkg, version, projectDir, _pkgPath) {
18
+ var pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
19
19
  return _ts_generator(this, function(_state) {
20
20
  switch (_state.label) {
21
21
  case 0:
22
- pkg = options.pkg, version = options.version, projectDir = options.projectDir, _pkgPath = options._pkgPath;
23
22
  pkgPath = _pkgPath || pkg.name;
24
23
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
25
24
  _state.label = 1;
@@ -134,7 +133,7 @@ var writePackage = function() {
134
133
  }
135
134
  });
136
135
  });
137
- return function writePackage2(options) {
136
+ return function writePackage2(pkg, version, projectDir, _pkgPath) {
138
137
  return _ref.apply(this, arguments);
139
138
  };
140
139
  }();
@@ -319,20 +318,15 @@ var findPackageParents = function(pkg, version, tracedFiles) {
319
318
  return tracedFiles[path2];
320
319
  });
321
320
  var parentPkgs = _to_consumable_array(new Set(versionFiles.flatMap(function(file) {
322
- return (
323
- // Because it supports copyWholePackage configuration, not all files exist.
324
- file === null || file === void 0 ? void 0 : file.parents.map(function(parentPath) {
325
- var parentFile = tracedFiles[parentPath];
326
- if (!parentFile || parentFile.pkgName === pkg.name) {
327
- return null;
328
- }
329
- return "".concat(parentFile.pkgName, "@").concat(parentFile.pkgVersion);
330
- }).filter(Boolean)
331
- );
321
+ return file.parents.map(function(parentPath) {
322
+ var parentFile = tracedFiles[parentPath];
323
+ if (!parentFile || parentFile.pkgName === pkg.name) {
324
+ return null;
325
+ }
326
+ return "".concat(parentFile.pkgName, "@").concat(parentFile.pkgVersion);
327
+ }).filter(Boolean);
332
328
  })));
333
- return parentPkgs.filter(function(parentPkg) {
334
- return parentPkg;
335
- });
329
+ return parentPkgs;
336
330
  };
337
331
  var traceFiles = function() {
338
332
  var _ref = _async_to_generator(function(entryFiles, serverRootDir) {
@@ -346,7 +340,34 @@ var traceFiles = function() {
346
340
  4,
347
341
  nodeFileTrace(entryFiles, {
348
342
  base,
349
- processCwd: serverRootDir
343
+ processCwd: serverRootDir,
344
+ resolve: function() {
345
+ var _ref2 = _async_to_generator(function(id, parent, job, isCjs) {
346
+ return _ts_generator(this, function(_state2) {
347
+ if (id.startsWith("@modern-js/prod-server")) {
348
+ return [
349
+ 2,
350
+ require.resolve(id, {
351
+ paths: [
352
+ require.resolve("@modern-js/app-tools")
353
+ ]
354
+ })
355
+ ];
356
+ } else {
357
+ return [
358
+ 2,
359
+ resolve(id, parent, job, isCjs)
360
+ ];
361
+ }
362
+ return [
363
+ 2
364
+ ];
365
+ });
366
+ });
367
+ return function(id, parent, job, isCjs) {
368
+ return _ref2.apply(this, arguments);
369
+ };
370
+ }()
350
371
  })
351
372
  ];
352
373
  case 1:
@@ -204,7 +204,7 @@ var createNetlifyPreset = function(appContext, modernConfig, needModernServer) {
204
204
  },
205
205
  genEntry: function genEntry() {
206
206
  return _async_to_generator(function() {
207
- var _modernConfig_bff, serverConfig, pluginImportCode, dynamicProdOptions, entryCode, serverAppContext;
207
+ var _modernConfig_bff, serverConfig, pluginImportCode, dynamicProdOptions, pluginsCode, entryCode, serverAppContext;
208
208
  return _ts_generator(this, function(_state) {
209
209
  switch (_state.label) {
210
210
  case 0:
@@ -224,9 +224,11 @@ var createNetlifyPreset = function(appContext, modernConfig, needModernServer) {
224
224
  pluginImportCode = genPluginImportsCode(plugins || []);
225
225
  dynamicProdOptions = {
226
226
  config: serverConfig,
227
- serverConfigFile: DEFAULT_SERVER_CONFIG,
228
- plugins
227
+ serverConfigFile: DEFAULT_SERVER_CONFIG
229
228
  };
229
+ pluginsCode = "[".concat(plugins.map(function(plugin, index) {
230
+ return "plugin_".concat(index, "()");
231
+ }).join(","), "]");
230
232
  return [
231
233
  4,
232
234
  fse.readFile(path.join(__dirname, "./netlifyEntry.js"))
@@ -234,7 +236,7 @@ var createNetlifyPreset = function(appContext, modernConfig, needModernServer) {
234
236
  case 1:
235
237
  entryCode = _state.sent().toString();
236
238
  serverAppContext = serverAppContenxtTemplate(appContext);
237
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", '"'.concat(ROUTE_SPEC_FILE, '"')).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
239
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", '"'.concat(ROUTE_SPEC_FILE, '"')).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
238
240
  return [
239
241
  4,
240
242
  fse.writeFile(entryFilePath, entryCode)
@@ -273,13 +275,9 @@ var createNetlifyPreset = function(appContext, modernConfig, needModernServer) {
273
275
  }
274
276
  return [
275
277
  4,
276
- handleDependencies({
277
- appDir: appDirectory,
278
- serverRootDir: funcsDirectory,
279
- includeEntries: [
280
- require.resolve("@modern-js/prod-server")
281
- ]
282
- })
278
+ handleDependencies(appDirectory, funcsDirectory, [
279
+ "@modern-js/prod-server"
280
+ ])
283
281
  ];
284
282
  case 3:
285
283
  _state.sent();
@@ -89,7 +89,8 @@ var require_netlifyEntry = __commonJS({
89
89
  sharedDirectory: p_sharedDirectory,
90
90
  apiDirectory: p_apiDirectory,
91
91
  lambdaDirectory: p_lambdaDirectory
92
- }
92
+ },
93
+ plugins: p_plugins
93
94
  }, dynamicProdOptions);
94
95
  return [
95
96
  4,
@@ -51,7 +51,7 @@ var createNodePreset = function(appContext, config) {
51
51
  },
52
52
  genEntry: function genEntry() {
53
53
  return _async_to_generator(function() {
54
- var _config_bff, serverConfig, pluginImportCode, dynamicProdOptions, entryCode, serverAppContext;
54
+ var _config_bff, serverConfig, pluginImportCode, dynamicProdOptions, pluginsCode, entryCode, serverAppContext;
55
55
  return _ts_generator(this, function(_state) {
56
56
  switch (_state.label) {
57
57
  case 0:
@@ -69,9 +69,11 @@ var createNodePreset = function(appContext, config) {
69
69
  pluginImportCode = genPluginImportsCode(plugins || []);
70
70
  dynamicProdOptions = {
71
71
  config: serverConfig,
72
- serverConfigFile: DEFAULT_SERVER_CONFIG,
73
- plugins
72
+ serverConfigFile: DEFAULT_SERVER_CONFIG
74
73
  };
74
+ pluginsCode = "[".concat(plugins.map(function(plugin, index) {
75
+ return "plugin_".concat(index, "()");
76
+ }).join(","), "]");
75
77
  return [
76
78
  4,
77
79
  fse.readFile(path.join(__dirname, "./nodeEntry.js"))
@@ -79,7 +81,7 @@ var createNodePreset = function(appContext, config) {
79
81
  case 1:
80
82
  entryCode = _state.sent().toString();
81
83
  serverAppContext = serverAppContenxtTemplate(appContext);
82
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", '"'.concat(ROUTE_SPEC_FILE, '"')).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
84
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", '"'.concat(ROUTE_SPEC_FILE, '"')).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
83
85
  return [
84
86
  4,
85
87
  fse.writeFile(entryFilePath, entryCode)
@@ -106,14 +108,9 @@ var createNodePreset = function(appContext, config) {
106
108
  };
107
109
  return [
108
110
  4,
109
- handleDependencies({
110
- appDir: appDirectory,
111
- serverRootDir: outputDirectory,
112
- includeEntries: [
113
- require.resolve("@modern-js/prod-server")
114
- ],
115
- entryFilter: filter
116
- })
111
+ handleDependencies(appDirectory, outputDirectory, [
112
+ "@modern-js/prod-server"
113
+ ], filter)
117
114
  ];
118
115
  case 1:
119
116
  _state.sent();
@@ -81,7 +81,8 @@ function _main() {
81
81
  sharedDirectory: p_sharedDirectory,
82
82
  apiDirectory: p_apiDirectory,
83
83
  lambdaDirectory: p_lambdaDirectory
84
- }
84
+ },
85
+ plugins: p_plugins
85
86
  }, dynamicProdOptions);
86
87
  return [
87
88
  4,
@@ -151,7 +151,7 @@ var createVercelPreset = function(appContext, modernConfig, needModernServer) {
151
151
  },
152
152
  genEntry: function genEntry() {
153
153
  return _async_to_generator(function() {
154
- var _modernConfig_bff, serverConfig, pluginImportCode, dynamicProdOptions, serverAppContext, entryCode;
154
+ var _modernConfig_bff, serverConfig, pluginImportCode, dynamicProdOptions, pluginsCode, serverAppContext, entryCode;
155
155
  return _ts_generator(this, function(_state) {
156
156
  switch (_state.label) {
157
157
  case 0:
@@ -171,9 +171,11 @@ var createVercelPreset = function(appContext, modernConfig, needModernServer) {
171
171
  pluginImportCode = genPluginImportsCode(plugins || []);
172
172
  dynamicProdOptions = {
173
173
  config: serverConfig,
174
- serverConfigFile: DEFAULT_SERVER_CONFIG,
175
- plugins
174
+ serverConfigFile: DEFAULT_SERVER_CONFIG
176
175
  };
176
+ pluginsCode = "[".concat(plugins.map(function(plugin, index) {
177
+ return "plugin_".concat(index, "()");
178
+ }).join(","), "]");
177
179
  serverAppContext = serverAppContenxtTemplate(appContext);
178
180
  return [
179
181
  4,
@@ -181,7 +183,7 @@ var createVercelPreset = function(appContext, modernConfig, needModernServer) {
181
183
  ];
182
184
  case 1:
183
185
  entryCode = _state.sent().toString();
184
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", '"'.concat(ROUTE_SPEC_FILE, '"')).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
186
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", '"'.concat(ROUTE_SPEC_FILE, '"')).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
185
187
  return [
186
188
  4,
187
189
  fse.writeFile(entryFilePath, entryCode)
@@ -207,13 +209,9 @@ var createVercelPreset = function(appContext, modernConfig, needModernServer) {
207
209
  }
208
210
  return [
209
211
  4,
210
- handleDependencies({
211
- appDir: appDirectory,
212
- serverRootDir: funcsDirectory,
213
- includeEntries: [
214
- require.resolve("@modern-js/prod-server")
215
- ]
216
- })
212
+ handleDependencies(appDirectory, funcsDirectory, [
213
+ "@modern-js/prod-server"
214
+ ])
217
215
  ];
218
216
  case 1:
219
217
  _state.sent();
@@ -89,7 +89,8 @@ var require_vercelEntry = __commonJS({
89
89
  sharedDirectory: p_sharedDirectory,
90
90
  apiDirectory: p_apiDirectory,
91
91
  lambdaDirectory: p_lambdaDirectory
92
- }
92
+ },
93
+ plugins: p_plugins
93
94
  }, dynamicProdOptions);
94
95
  return [
95
96
  4,
@@ -1,11 +1,21 @@
1
- import path from "node:path";
1
+ import path, { isAbsolute } from "node:path";
2
2
  import { fs as fse, pkgUp, semver } from "@modern-js/utils";
3
3
  import { readPackageJSON } from "pkg-types";
4
4
  import { parseNodeModulePath } from "mlly";
5
- import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles as defaultTraceFiles, findPackageParents, resolveTracedPath, readDirRecursive } from "./utils";
6
- const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage }) => {
5
+ import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles, findPackageParents, resolveTracedPath } from "./utils";
6
+ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) => {
7
7
  const base = "/";
8
8
  const entryFiles = await findEntryFiles(serverRootDir, entryFilter);
9
+ const includeEntries = include.map((item) => {
10
+ if (isAbsolute(item)) {
11
+ return item;
12
+ }
13
+ try {
14
+ return require.resolve(item);
15
+ } catch (error) {
16
+ }
17
+ return item;
18
+ });
9
19
  const fileTrace = await traceFiles(entryFiles.concat(includeEntries), serverRootDir, base);
10
20
  const currentProjectModules = path.join(appDir, "node_modules");
11
21
  const tracedFiles = Object.fromEntries(await Promise.all([
@@ -100,17 +110,9 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
100
110
  }
101
111
  tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
102
112
  }
113
+ tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.path === tracedFile.pkgPath && tracedPackageVersion.files.push(tracedFile.path);
103
114
  tracedFile.pkgName = pkgName;
104
115
  tracedFile.pkgVersion = pkgJSON.version;
105
- const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
106
- if (tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion) {
107
- if (shouldCopyWholePackage) {
108
- const allFiles = await readDirRecursive(tracedFile.pkgPath);
109
- tracedPackageVersion.files.push(...allFiles);
110
- } else {
111
- tracedPackageVersion.files.push(tracedFile.path);
112
- }
113
- }
114
116
  }
115
117
  const multiVersionPkgs = {};
116
118
  const singleVersionPackages = [];
@@ -128,11 +130,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
128
130
  await Promise.all(singleVersionPackages.map((pkgName) => {
129
131
  const pkg = tracedPackages[pkgName];
130
132
  const version = Object.keys(pkg.versions)[0];
131
- return writePackage({
132
- pkg,
133
- version,
134
- projectDir: serverRootDir
135
- });
133
+ return writePackage(pkg, version, serverRootDir);
136
134
  }));
137
135
  const projectPkgJson = await readPackageJSON(serverRootDir).catch(() => ({}));
138
136
  for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
@@ -159,12 +157,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
159
157
  for (const [version, parentPkgs] of versionEntires) {
160
158
  const pkg = tracedPackages[pkgName];
161
159
  const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
162
- await writePackage({
163
- pkg,
164
- version,
165
- projectDir: serverRootDir,
166
- _pkgPath: pkgDestPath
167
- });
160
+ await writePackage(pkg, version, serverRootDir, pkgDestPath);
168
161
  await linkPackage(pkgDestPath, `${pkgName}`, serverRootDir);
169
162
  for (const parentPkg of parentPkgs) {
170
163
  const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
@@ -173,7 +166,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
173
166
  }
174
167
  }
175
168
  const outputPkgPath = path.join(serverRootDir, "package.json");
176
- const newPkgJson = {
169
+ await fse.writeJSON(outputPkgPath, {
177
170
  name: `${projectPkgJson.name || "modernjs-project"}-prod`,
178
171
  version: projectPkgJson.version || "0.0.0",
179
172
  private: true,
@@ -183,9 +176,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
183
176
  Object.keys(pkg.versions)[0]
184
177
  ])
185
178
  ].sort(([a], [b]) => a.localeCompare(b)))
186
- };
187
- const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
188
- await fse.writeJSON(outputPkgPath, finalPkgJson);
179
+ });
189
180
  };
190
181
  export {
191
182
  handleDependencies
@@ -2,7 +2,7 @@ import path from "path";
2
2
  import os from "node:os";
3
3
  import { fs as fse } from "@modern-js/utils";
4
4
  import { parseNodeModulePath } from "mlly";
5
- import { nodeFileTrace } from "@vercel/nft";
5
+ import { nodeFileTrace, resolve } from "@vercel/nft";
6
6
  function applyPublicCondition(pkg) {
7
7
  var _pkg_publishConfig;
8
8
  if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
@@ -10,8 +10,7 @@ function applyPublicCondition(pkg) {
10
10
  pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
11
11
  }
12
12
  }
13
- const writePackage = async (options) => {
14
- const { pkg, version, projectDir, _pkgPath } = options;
13
+ const writePackage = async (pkg, version, projectDir, _pkgPath) => {
15
14
  const pkgPath = _pkgPath || pkg.name;
16
15
  for (const src of pkg.versions[version].files) {
17
16
  if (src.includes("node_modules")) {
@@ -85,23 +84,31 @@ const findEntryFiles = async (rootDir, entryFilter) => {
85
84
  const findPackageParents = (pkg, version, tracedFiles) => {
86
85
  const versionFiles = pkg.versions[version].files.map((path2) => tracedFiles[path2]);
87
86
  const parentPkgs = [
88
- ...new Set(versionFiles.flatMap((file) => (
89
- // Because it supports copyWholePackage configuration, not all files exist.
90
- file === null || file === void 0 ? void 0 : file.parents.map((parentPath) => {
91
- const parentFile = tracedFiles[parentPath];
92
- if (!parentFile || parentFile.pkgName === pkg.name) {
93
- return null;
94
- }
95
- return `${parentFile.pkgName}@${parentFile.pkgVersion}`;
96
- }).filter(Boolean)
97
- )))
87
+ ...new Set(versionFiles.flatMap((file) => file.parents.map((parentPath) => {
88
+ const parentFile = tracedFiles[parentPath];
89
+ if (!parentFile || parentFile.pkgName === pkg.name) {
90
+ return null;
91
+ }
92
+ return `${parentFile.pkgName}@${parentFile.pkgVersion}`;
93
+ }).filter(Boolean)))
98
94
  ];
99
- return parentPkgs.filter((parentPkg) => parentPkg);
95
+ return parentPkgs;
100
96
  };
101
97
  const traceFiles = async (entryFiles, serverRootDir, base = "/") => {
102
98
  return await nodeFileTrace(entryFiles, {
103
99
  base,
104
- processCwd: serverRootDir
100
+ processCwd: serverRootDir,
101
+ resolve: async (id, parent, job, isCjs) => {
102
+ if (id.startsWith("@modern-js/prod-server")) {
103
+ return require.resolve(id, {
104
+ paths: [
105
+ require.resolve("@modern-js/app-tools")
106
+ ]
107
+ });
108
+ } else {
109
+ return resolve(id, parent, job, isCjs);
110
+ }
111
+ }
105
112
  });
106
113
  };
107
114
  const resolveTracedPath = async (base, p) => fse.realpath(path.resolve(base, p));
@@ -76,12 +76,14 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
76
76
  const pluginImportCode = genPluginImportsCode(plugins || []);
77
77
  const dynamicProdOptions = {
78
78
  config: serverConfig,
79
- serverConfigFile: DEFAULT_SERVER_CONFIG,
80
- plugins
79
+ serverConfigFile: DEFAULT_SERVER_CONFIG
81
80
  };
81
+ const pluginsCode = `[${plugins.map((plugin, index) => {
82
+ return `plugin_${index}()`;
83
+ }).join(",")}]`;
82
84
  let entryCode = (await fse.readFile(path.join(__dirname, "./netlifyEntry.js"))).toString();
83
85
  const serverAppContext = serverAppContenxtTemplate(appContext);
84
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
86
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
85
87
  await fse.writeFile(entryFilePath, entryCode);
86
88
  },
87
89
  async end() {
@@ -91,13 +93,9 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
91
93
  if (!needModernServer) {
92
94
  return;
93
95
  }
94
- await handleDependencies({
95
- appDir: appDirectory,
96
- serverRootDir: funcsDirectory,
97
- includeEntries: [
98
- require.resolve("@modern-js/prod-server")
99
- ]
100
- });
96
+ await handleDependencies(appDirectory, funcsDirectory, [
97
+ "@modern-js/prod-server"
98
+ ]);
101
99
  }
102
100
  };
103
101
  };
@@ -37,6 +37,7 @@ var require_netlifyEntry = __commonJS({
37
37
  apiDirectory: p_apiDirectory,
38
38
  lambdaDirectory: p_lambdaDirectory
39
39
  },
40
+ plugins: p_plugins,
40
41
  ...dynamicProdOptions
41
42
  };
42
43
  const requestHandler2 = await createNetlifyFunction(prodServerOptions);
@@ -31,12 +31,14 @@ const createNodePreset = (appContext, config) => {
31
31
  const pluginImportCode = genPluginImportsCode(plugins || []);
32
32
  const dynamicProdOptions = {
33
33
  config: serverConfig,
34
- serverConfigFile: DEFAULT_SERVER_CONFIG,
35
- plugins
34
+ serverConfigFile: DEFAULT_SERVER_CONFIG
36
35
  };
36
+ const pluginsCode = `[${plugins.map((plugin, index) => {
37
+ return `plugin_${index}()`;
38
+ }).join(",")}]`;
37
39
  let entryCode = (await fse.readFile(path.join(__dirname, "./nodeEntry.js"))).toString();
38
40
  const serverAppContext = serverAppContenxtTemplate(appContext);
39
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
41
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
40
42
  await fse.writeFile(entryFilePath, entryCode);
41
43
  },
42
44
  async end() {
@@ -45,14 +47,9 @@ const createNodePreset = (appContext, config) => {
45
47
  const filter = (filePath) => {
46
48
  return !filePath.startsWith(staticDirectory);
47
49
  };
48
- await handleDependencies({
49
- appDir: appDirectory,
50
- serverRootDir: outputDirectory,
51
- includeEntries: [
52
- require.resolve("@modern-js/prod-server")
53
- ],
54
- entryFilter: filter
55
- });
50
+ await handleDependencies(appDirectory, outputDirectory, [
51
+ "@modern-js/prod-server"
52
+ ], filter);
56
53
  }
57
54
  };
58
55
  };
@@ -29,6 +29,7 @@ async function main() {
29
29
  apiDirectory: p_apiDirectory,
30
30
  lambdaDirectory: p_lambdaDirectory
31
31
  },
32
+ plugins: p_plugins,
32
33
  ...dynamicProdOptions
33
34
  };
34
35
  const app = await createProdServer(prodServerOptions);
@@ -91,25 +91,23 @@ const createVercelPreset = (appContext, modernConfig, needModernServer) => {
91
91
  const pluginImportCode = genPluginImportsCode(plugins || []);
92
92
  const dynamicProdOptions = {
93
93
  config: serverConfig,
94
- serverConfigFile: DEFAULT_SERVER_CONFIG,
95
- plugins
94
+ serverConfigFile: DEFAULT_SERVER_CONFIG
96
95
  };
96
+ const pluginsCode = `[${plugins.map((plugin, index) => {
97
+ return `plugin_${index}()`;
98
+ }).join(",")}]`;
97
99
  const serverAppContext = serverAppContenxtTemplate(appContext);
98
100
  let entryCode = (await fse.readFile(path.join(__dirname, "./vercelEntry.js"))).toString();
99
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
101
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_plugins", pluginsCode).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
100
102
  await fse.writeFile(entryFilePath, entryCode);
101
103
  },
102
104
  async end() {
103
105
  if (!needModernServer) {
104
106
  return;
105
107
  }
106
- await handleDependencies({
107
- appDir: appDirectory,
108
- serverRootDir: funcsDirectory,
109
- includeEntries: [
110
- require.resolve("@modern-js/prod-server")
111
- ]
112
- });
108
+ await handleDependencies(appDirectory, funcsDirectory, [
109
+ "@modern-js/prod-server"
110
+ ]);
113
111
  }
114
112
  };
115
113
  };
@@ -37,6 +37,7 @@ var require_vercelEntry = __commonJS({
37
37
  apiDirectory: p_apiDirectory,
38
38
  lambdaDirectory: p_lambdaDirectory
39
39
  },
40
+ plugins: p_plugins,
40
41
  ...dynamicProdOptions
41
42
  };
42
43
  const app = await createProdServer(prodServerOptions);
@@ -1,11 +1 @@
1
- import type { PackageJson } from 'pkg-types';
2
- import { traceFiles as defaultTraceFiles } from './utils';
3
- export declare const handleDependencies: ({ appDir, serverRootDir, includeEntries, traceFiles, entryFilter, modifyPackageJson, copyWholePackage, }: {
4
- appDir: string;
5
- serverRootDir: string;
6
- includeEntries: string[];
7
- traceFiles?: ((entryFiles: string[], serverRootDir: string, base?: string) => Promise<import("@vercel/nft").NodeFileTraceResult>) | undefined;
8
- entryFilter?: ((filePath: string) => boolean) | undefined;
9
- modifyPackageJson?: ((pkgJson: PackageJson) => PackageJson) | undefined;
10
- copyWholePackage?: ((pkgName: string) => boolean) | undefined;
11
- }) => Promise<void>;
1
+ export declare const handleDependencies: (appDir: string, serverRootDir: string, include: string[], entryFilter?: ((filePath: string) => boolean) | undefined) => Promise<void>;
@@ -17,13 +17,7 @@ export type TracedFile = {
17
17
  pkgName: string;
18
18
  pkgVersion?: string;
19
19
  };
20
- interface WritePackageOptions {
21
- pkg: TracedPackage;
22
- version: string;
23
- projectDir: string;
24
- _pkgPath?: string;
25
- }
26
- export declare const writePackage: (options: WritePackageOptions) => Promise<void>;
20
+ export declare const writePackage: (pkg: TracedPackage, version: string, projectDir: string, _pkgPath?: string) => Promise<void>;
27
21
  export declare const linkPackage: (from: string, to: string, projectRootDir: string) => Promise<void>;
28
22
  interface ReadDirOptions {
29
23
  filter?: (filePath: string) => boolean;