@modern-js/app-tools 2.54.1 → 2.54.2-alpha.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 (102) hide show
  1. package/dist/cjs/commands/build.js +1 -1
  2. package/dist/cjs/commands/deploy.js +1 -2
  3. package/dist/cjs/commands/dev.js +1 -1
  4. package/dist/cjs/commands/serve.js +1 -1
  5. package/dist/cjs/plugins/deploy/dependencies/index.js +26 -17
  6. package/dist/cjs/plugins/deploy/dependencies/utils.js +14 -20
  7. package/dist/cjs/plugins/deploy/exports.js +28 -0
  8. package/dist/cjs/plugins/deploy/platforms/netlify.js +7 -3
  9. package/dist/cjs/plugins/deploy/platforms/node.js +8 -3
  10. package/dist/cjs/plugins/deploy/platforms/vercel.js +7 -3
  11. package/dist/cjs/utils/loadPlugins.js +5 -6
  12. package/dist/esm/commands/build.js +1 -1
  13. package/dist/esm/commands/deploy.js +2 -3
  14. package/dist/esm/commands/dev.js +1 -1
  15. package/dist/esm/commands/serve.js +1 -1
  16. package/dist/esm/plugins/deploy/dependencies/index.js +94 -69
  17. package/dist/esm/plugins/deploy/dependencies/utils.js +19 -39
  18. package/dist/esm/plugins/deploy/exports.js +4 -0
  19. package/dist/esm/plugins/deploy/platforms/netlify.js +7 -3
  20. package/dist/esm/plugins/deploy/platforms/node.js +8 -3
  21. package/dist/esm/plugins/deploy/platforms/vercel.js +7 -3
  22. package/dist/esm/utils/loadPlugins.js +6 -11
  23. package/dist/esm-node/commands/build.js +1 -1
  24. package/dist/esm-node/commands/deploy.js +1 -2
  25. package/dist/esm-node/commands/dev.js +1 -1
  26. package/dist/esm-node/commands/serve.js +1 -1
  27. package/dist/esm-node/plugins/deploy/dependencies/index.js +27 -18
  28. package/dist/esm-node/plugins/deploy/dependencies/utils.js +15 -21
  29. package/dist/esm-node/plugins/deploy/exports.js +4 -0
  30. package/dist/esm-node/plugins/deploy/platforms/netlify.js +7 -3
  31. package/dist/esm-node/plugins/deploy/platforms/node.js +8 -3
  32. package/dist/esm-node/plugins/deploy/platforms/vercel.js +7 -3
  33. package/dist/esm-node/utils/loadPlugins.js +5 -6
  34. package/dist/js/modern/analyze/constants.js +15 -0
  35. package/dist/js/modern/analyze/generateCode.js +179 -0
  36. package/dist/js/modern/analyze/getBundleEntry.js +75 -0
  37. package/dist/js/modern/analyze/getClientRoutes.js +219 -0
  38. package/dist/js/modern/analyze/getFileSystemEntry.js +74 -0
  39. package/dist/js/modern/analyze/getHtmlTemplate.js +82 -0
  40. package/dist/js/modern/analyze/getServerRoutes.js +192 -0
  41. package/dist/js/modern/analyze/index.js +148 -0
  42. package/dist/js/modern/analyze/isDefaultExportFunction.js +32 -0
  43. package/dist/js/modern/analyze/makeLegalIdentifier.js +16 -0
  44. package/dist/js/modern/analyze/templates.js +88 -0
  45. package/dist/js/modern/analyze/utils.js +92 -0
  46. package/dist/js/modern/commands/build.js +154 -0
  47. package/dist/js/modern/commands/deploy.js +5 -0
  48. package/dist/js/modern/commands/dev.js +95 -0
  49. package/dist/js/modern/commands/index.js +3 -0
  50. package/dist/js/modern/commands/inspect.js +69 -0
  51. package/dist/js/modern/commands/start.js +31 -0
  52. package/dist/js/modern/exports/server.js +1 -0
  53. package/dist/js/modern/hooks.js +21 -0
  54. package/dist/js/modern/index.js +109 -0
  55. package/dist/js/modern/locale/en.js +35 -0
  56. package/dist/js/modern/locale/index.js +9 -0
  57. package/dist/js/modern/locale/zh.js +35 -0
  58. package/dist/js/modern/utils/config.js +78 -0
  59. package/dist/js/modern/utils/createCompiler.js +61 -0
  60. package/dist/js/modern/utils/createServer.js +18 -0
  61. package/dist/js/modern/utils/getSpecifiedEntries.js +36 -0
  62. package/dist/js/modern/utils/language.js +5 -0
  63. package/dist/js/modern/utils/printInstructions.js +11 -0
  64. package/dist/js/modern/utils/routes.js +15 -0
  65. package/dist/js/modern/utils/types.js +0 -0
  66. package/dist/js/node/analyze/constants.js +36 -0
  67. package/dist/js/node/analyze/generateCode.js +208 -0
  68. package/dist/js/node/analyze/getBundleEntry.js +89 -0
  69. package/dist/js/node/analyze/getClientRoutes.js +241 -0
  70. package/dist/js/node/analyze/getFileSystemEntry.js +90 -0
  71. package/dist/js/node/analyze/getHtmlTemplate.js +106 -0
  72. package/dist/js/node/analyze/getServerRoutes.js +208 -0
  73. package/dist/js/node/analyze/index.js +178 -0
  74. package/dist/js/node/analyze/isDefaultExportFunction.js +50 -0
  75. package/dist/js/node/analyze/makeLegalIdentifier.js +24 -0
  76. package/dist/js/node/analyze/templates.js +106 -0
  77. package/dist/js/node/analyze/utils.js +113 -0
  78. package/dist/js/node/commands/build.js +174 -0
  79. package/dist/js/node/commands/deploy.js +14 -0
  80. package/dist/js/node/commands/dev.js +120 -0
  81. package/dist/js/node/commands/index.js +44 -0
  82. package/dist/js/node/commands/inspect.js +98 -0
  83. package/dist/js/node/commands/start.js +47 -0
  84. package/dist/js/node/exports/server.js +13 -0
  85. package/dist/js/node/hooks.js +39 -0
  86. package/dist/js/node/index.js +141 -0
  87. package/dist/js/node/locale/en.js +42 -0
  88. package/dist/js/node/locale/index.js +20 -0
  89. package/dist/js/node/locale/zh.js +42 -0
  90. package/dist/js/node/utils/config.js +103 -0
  91. package/dist/js/node/utils/createCompiler.js +81 -0
  92. package/dist/js/node/utils/createServer.js +35 -0
  93. package/dist/js/node/utils/getSpecifiedEntries.js +46 -0
  94. package/dist/js/node/utils/language.js +13 -0
  95. package/dist/js/node/utils/printInstructions.js +22 -0
  96. package/dist/js/node/utils/routes.js +25 -0
  97. package/dist/js/node/utils/types.js +0 -0
  98. package/dist/types/plugins/deploy/dependencies/index.d.ts +11 -1
  99. package/dist/types/plugins/deploy/dependencies/utils.d.ts +7 -1
  100. package/dist/types/plugins/deploy/exports.d.ts +1 -0
  101. package/dist/types/utils/loadPlugins.d.ts +2 -2
  102. package/package.json +14 -6
@@ -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, resolve } from "@vercel/nft";
8
+ import { nodeFileTrace } 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,11 +14,12 @@ function applyPublicCondition(pkg) {
14
14
  }
15
15
  }
16
16
  var writePackage = function() {
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;
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;
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;
22
23
  pkgPath = _pkgPath || pkg.name;
23
24
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
24
25
  _state.label = 1;
@@ -133,7 +134,7 @@ var writePackage = function() {
133
134
  }
134
135
  });
135
136
  });
136
- return function writePackage2(pkg, version, projectDir, _pkgPath) {
137
+ return function writePackage2(options) {
137
138
  return _ref.apply(this, arguments);
138
139
  };
139
140
  }();
@@ -318,15 +319,20 @@ var findPackageParents = function(pkg, version, tracedFiles) {
318
319
  return tracedFiles[path2];
319
320
  });
320
321
  var parentPkgs = _to_consumable_array(new Set(versionFiles.flatMap(function(file) {
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);
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
+ );
328
332
  })));
329
- return parentPkgs;
333
+ return parentPkgs.filter(function(parentPkg) {
334
+ return parentPkg;
335
+ });
330
336
  };
331
337
  var traceFiles = function() {
332
338
  var _ref = _async_to_generator(function(entryFiles, serverRootDir) {
@@ -341,33 +347,7 @@ var traceFiles = function() {
341
347
  nodeFileTrace(entryFiles, {
342
348
  base,
343
349
  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
+ cache: /* @__PURE__ */ Object.create(null)
371
351
  })
372
352
  ];
373
353
  case 1:
@@ -0,0 +1,4 @@
1
+ import { handleDependencies } from "./dependencies";
2
+ export {
3
+ handleDependencies
4
+ };
@@ -273,9 +273,13 @@ var createNetlifyPreset = function(appContext, modernConfig, needModernServer) {
273
273
  }
274
274
  return [
275
275
  4,
276
- handleDependencies(appDirectory, funcsDirectory, [
277
- "@modern-js/prod-server"
278
- ])
276
+ handleDependencies({
277
+ appDir: appDirectory,
278
+ serverRootDir: funcsDirectory,
279
+ includeEntries: [
280
+ require.resolve("@modern-js/prod-server")
281
+ ]
282
+ })
279
283
  ];
280
284
  case 3:
281
285
  _state.sent();
@@ -106,9 +106,14 @@ var createNodePreset = function(appContext, config) {
106
106
  };
107
107
  return [
108
108
  4,
109
- handleDependencies(appDirectory, outputDirectory, [
110
- "@modern-js/prod-server"
111
- ], filter)
109
+ handleDependencies({
110
+ appDir: appDirectory,
111
+ serverRootDir: outputDirectory,
112
+ includeEntries: [
113
+ require.resolve("@modern-js/prod-server")
114
+ ],
115
+ entryFilter: filter
116
+ })
112
117
  ];
113
118
  case 1:
114
119
  _state.sent();
@@ -207,9 +207,13 @@ var createVercelPreset = function(appContext, modernConfig, needModernServer) {
207
207
  }
208
208
  return [
209
209
  4,
210
- handleDependencies(appDirectory, funcsDirectory, [
211
- "@modern-js/prod-server"
212
- ])
210
+ handleDependencies({
211
+ appDir: appDirectory,
212
+ serverRootDir: funcsDirectory,
213
+ includeEntries: [
214
+ require.resolve("@modern-js/prod-server")
215
+ ]
216
+ })
213
217
  ];
214
218
  case 1:
215
219
  _state.sent();
@@ -8,12 +8,10 @@ function getServerPlugins(api) {
8
8
  }
9
9
  function _getServerPlugins() {
10
10
  _getServerPlugins = _async_to_generator(function(api) {
11
- var metaName, runner, plugins, filtedPlugins;
12
- var _arguments = arguments;
11
+ var runner, plugins;
13
12
  return _ts_generator(this, function(_state) {
14
13
  switch (_state.label) {
15
14
  case 0:
16
- metaName = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : "modern-js";
17
15
  runner = api.useHookRunners();
18
16
  return [
19
17
  4,
@@ -23,33 +21,30 @@ function _getServerPlugins() {
23
21
  ];
24
22
  case 1:
25
23
  plugins = _state.sent().plugins;
26
- filtedPlugins = plugins.filter(function(plugin) {
27
- return plugin.name.includes(metaName);
28
- });
29
24
  api.setAppContext(_object_spread_props(_object_spread({}, api.useAppContext()), {
30
- serverPlugins: filtedPlugins
25
+ serverPlugins: plugins
31
26
  }));
32
27
  return [
33
28
  2,
34
- filtedPlugins
29
+ plugins
35
30
  ];
36
31
  }
37
32
  });
38
33
  });
39
34
  return _getServerPlugins.apply(this, arguments);
40
35
  }
41
- function loadServerPlugins(api, appDirectory, metaName) {
36
+ function loadServerPlugins(api, appDirectory) {
42
37
  return _loadServerPlugins.apply(this, arguments);
43
38
  }
44
39
  function _loadServerPlugins() {
45
- _loadServerPlugins = _async_to_generator(function(api, appDirectory, metaName) {
40
+ _loadServerPlugins = _async_to_generator(function(api, appDirectory) {
46
41
  var plugins, instances;
47
42
  return _ts_generator(this, function(_state) {
48
43
  switch (_state.label) {
49
44
  case 0:
50
45
  return [
51
46
  4,
52
- getServerPlugins(api, metaName)
47
+ getServerPlugins(api)
53
48
  ];
54
49
  case 1:
55
50
  plugins = _state.sent();
@@ -12,7 +12,7 @@ const build = async (api, options) => {
12
12
  let resolvedConfig = api.useResolvedConfigContext();
13
13
  const appContext = api.useAppContext();
14
14
  const hookRunners = api.useHookRunners();
15
- await loadServerPlugins(api, appContext.appDirectory, appContext.metaName);
15
+ await loadServerPlugins(api, appContext.appDirectory);
16
16
  await registerCompiler(appContext.appDirectory, appContext.distDirectory, resolvedConfig === null || resolvedConfig === void 0 ? void 0 : (_resolvedConfig_source = resolvedConfig.source) === null || _resolvedConfig_source === void 0 ? void 0 : _resolvedConfig_source.alias);
17
17
  const { apiOnly } = appContext;
18
18
  if (apiOnly) {
@@ -1,8 +1,7 @@
1
1
  import { getServerPlugins } from "../utils/loadPlugins";
2
2
  const deploy = async (api, options) => {
3
3
  const hookRunners = api.useHookRunners();
4
- const { metaName } = api.useAppContext();
5
- await getServerPlugins(api, metaName);
4
+ await getServerPlugins(api);
6
5
  await hookRunners.beforeDeploy(options);
7
6
  await hookRunners.deploy(options);
8
7
  await hookRunners.afterDeploy(options);
@@ -37,7 +37,7 @@ const dev = async (api, options, devServerOptions = {}) => {
37
37
  throw new Error("Expect the Builder to have been initialized, But the appContext.builder received `undefined`");
38
38
  }
39
39
  await generateRoutes(appContext);
40
- const pluginInstances = await loadServerPlugins(api, appDirectory, metaName);
40
+ const pluginInstances = await loadServerPlugins(api, appDirectory);
41
41
  const serverOptions = {
42
42
  metaName,
43
43
  dev: {
@@ -17,7 +17,7 @@ const start = async (api) => {
17
17
  }
18
18
  const meta = getMeta(metaName);
19
19
  const serverConfigPath = path.resolve(distDirectory, SERVER_DIR, `${meta}.server`);
20
- const pluginInstances = await loadServerPlugins(api, appDirectory, metaName);
20
+ const pluginInstances = await loadServerPlugins(api, appDirectory);
21
21
  const app = await createProdServer({
22
22
  metaName,
23
23
  pwd: distDirectory,
@@ -1,21 +1,11 @@
1
- import path, { isAbsolute } from "node:path";
1
+ import path 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, findPackageParents, resolveTracedPath } from "./utils";
6
- const handleDependencies = async (appDir, serverRootDir, include, entryFilter) => {
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 }) => {
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
- });
19
9
  const fileTrace = await traceFiles(entryFiles.concat(includeEntries), serverRootDir, base);
20
10
  const currentProjectModules = path.join(appDir, "node_modules");
21
11
  const tracedFiles = Object.fromEntries(await Promise.all([
@@ -110,9 +100,17 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
110
100
  }
111
101
  tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
112
102
  }
113
- tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.path === tracedFile.pkgPath && tracedPackageVersion.files.push(tracedFile.path);
114
103
  tracedFile.pkgName = pkgName;
115
104
  tracedFile.pkgVersion = pkgJSON.version;
105
+ const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
106
+ if (tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.path === tracedFile.pkgPath) {
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
+ }
116
114
  }
117
115
  const multiVersionPkgs = {};
118
116
  const singleVersionPackages = [];
@@ -130,7 +128,11 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
130
128
  await Promise.all(singleVersionPackages.map((pkgName) => {
131
129
  const pkg = tracedPackages[pkgName];
132
130
  const version = Object.keys(pkg.versions)[0];
133
- return writePackage(pkg, version, serverRootDir);
131
+ return writePackage({
132
+ pkg,
133
+ version,
134
+ projectDir: serverRootDir
135
+ });
134
136
  }));
135
137
  const projectPkgJson = await readPackageJSON(serverRootDir).catch(() => ({}));
136
138
  for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
@@ -157,7 +159,12 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
157
159
  for (const [version, parentPkgs] of versionEntires) {
158
160
  const pkg = tracedPackages[pkgName];
159
161
  const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
160
- await writePackage(pkg, version, serverRootDir, pkgDestPath);
162
+ await writePackage({
163
+ pkg,
164
+ version,
165
+ projectDir: serverRootDir,
166
+ _pkgPath: pkgDestPath
167
+ });
161
168
  await linkPackage(pkgDestPath, `${pkgName}`, serverRootDir);
162
169
  for (const parentPkg of parentPkgs) {
163
170
  const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
@@ -166,7 +173,7 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
166
173
  }
167
174
  }
168
175
  const outputPkgPath = path.join(serverRootDir, "package.json");
169
- await fse.writeJSON(outputPkgPath, {
176
+ const newPkgJson = {
170
177
  name: `${projectPkgJson.name || "modernjs-project"}-prod`,
171
178
  version: projectPkgJson.version || "0.0.0",
172
179
  private: true,
@@ -176,7 +183,9 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
176
183
  Object.keys(pkg.versions)[0]
177
184
  ])
178
185
  ].sort(([a], [b]) => a.localeCompare(b)))
179
- });
186
+ };
187
+ const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
188
+ await fse.writeJSON(outputPkgPath, finalPkgJson);
180
189
  };
181
190
  export {
182
191
  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, resolve } from "@vercel/nft";
5
+ import { nodeFileTrace } 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,7 +10,8 @@ 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 (pkg, version, projectDir, _pkgPath) => {
13
+ const writePackage = async (options) => {
14
+ const { pkg, version, projectDir, _pkgPath } = options;
14
15
  const pkgPath = _pkgPath || pkg.name;
15
16
  for (const src of pkg.versions[version].files) {
16
17
  if (src.includes("node_modules")) {
@@ -84,31 +85,24 @@ const findEntryFiles = async (rootDir, entryFilter) => {
84
85
  const findPackageParents = (pkg, version, tracedFiles) => {
85
86
  const versionFiles = pkg.versions[version].files.map((path2) => tracedFiles[path2]);
86
87
  const parentPkgs = [
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)))
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
+ )))
94
98
  ];
95
- return parentPkgs;
99
+ return parentPkgs.filter((parentPkg) => parentPkg);
96
100
  };
97
101
  const traceFiles = async (entryFiles, serverRootDir, base = "/") => {
98
102
  return await nodeFileTrace(entryFiles, {
99
103
  base,
100
104
  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
+ cache: /* @__PURE__ */ Object.create(null)
112
106
  });
113
107
  };
114
108
  const resolveTracedPath = async (base, p) => fse.realpath(path.resolve(base, p));
@@ -0,0 +1,4 @@
1
+ import { handleDependencies } from "./dependencies";
2
+ export {
3
+ handleDependencies
4
+ };
@@ -91,9 +91,13 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
91
91
  if (!needModernServer) {
92
92
  return;
93
93
  }
94
- await handleDependencies(appDirectory, funcsDirectory, [
95
- "@modern-js/prod-server"
96
- ]);
94
+ await handleDependencies({
95
+ appDir: appDirectory,
96
+ serverRootDir: funcsDirectory,
97
+ includeEntries: [
98
+ require.resolve("@modern-js/prod-server")
99
+ ]
100
+ });
97
101
  }
98
102
  };
99
103
  };
@@ -45,9 +45,14 @@ const createNodePreset = (appContext, config) => {
45
45
  const filter = (filePath) => {
46
46
  return !filePath.startsWith(staticDirectory);
47
47
  };
48
- await handleDependencies(appDirectory, outputDirectory, [
49
- "@modern-js/prod-server"
50
- ], filter);
48
+ await handleDependencies({
49
+ appDir: appDirectory,
50
+ serverRootDir: outputDirectory,
51
+ includeEntries: [
52
+ require.resolve("@modern-js/prod-server")
53
+ ],
54
+ entryFilter: filter
55
+ });
51
56
  }
52
57
  };
53
58
  };
@@ -103,9 +103,13 @@ const createVercelPreset = (appContext, modernConfig, needModernServer) => {
103
103
  if (!needModernServer) {
104
104
  return;
105
105
  }
106
- await handleDependencies(appDirectory, funcsDirectory, [
107
- "@modern-js/prod-server"
108
- ]);
106
+ await handleDependencies({
107
+ appDir: appDirectory,
108
+ serverRootDir: funcsDirectory,
109
+ includeEntries: [
110
+ require.resolve("@modern-js/prod-server")
111
+ ]
112
+ });
109
113
  }
110
114
  };
111
115
  };
@@ -1,18 +1,17 @@
1
1
  import { loadServerPlugins as loadServerPluginInstances } from "@modern-js/prod-server";
2
- async function getServerPlugins(api, metaName = "modern-js") {
2
+ async function getServerPlugins(api) {
3
3
  const runner = api.useHookRunners();
4
4
  const { plugins } = await runner._internalServerPlugins({
5
5
  plugins: []
6
6
  });
7
- const filtedPlugins = plugins.filter((plugin) => plugin.name.includes(metaName));
8
7
  api.setAppContext({
9
8
  ...api.useAppContext(),
10
- serverPlugins: filtedPlugins
9
+ serverPlugins: plugins
11
10
  });
12
- return filtedPlugins;
11
+ return plugins;
13
12
  }
14
- async function loadServerPlugins(api, appDirectory, metaName) {
15
- const plugins = await getServerPlugins(api, metaName);
13
+ async function loadServerPlugins(api, appDirectory) {
14
+ const plugins = await getServerPlugins(api);
16
15
  const instances = loadServerPluginInstances(plugins, appDirectory);
17
16
  return instances;
18
17
  }
@@ -0,0 +1,15 @@
1
+ export const JS_EXTENSIONS = ['.js', '.ts', '.jsx', '.tsx'];
2
+ export const INDEX_FILE_NAME = 'index';
3
+ export const APP_FILE_NAME = 'App';
4
+ export const PAGES_DIR_NAME = 'pages';
5
+ export const FILE_SYSTEM_ROUTES_FILE_NAME = 'routes.js';
6
+ export const ENTRY_POINT_FILE_NAME = 'index.js';
7
+ export const ENTRY_BOOTSTRAP_FILE_NAME = 'bootstrap.js';
8
+ export const FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = /^\[(\S+)\]([*+?]?)$/;
9
+ export const FILE_SYSTEM_ROUTES_LAYOUT = '_layout';
10
+ export const FILE_SYSTEM_ROUTES_GLOBAL_LAYOUT = '_app';
11
+ export const FILE_SYSTEM_ROUTES_INDEX = 'index';
12
+ export const FILE_SYSTEM_ROUTES_IGNORED_REGEX = /\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/;
13
+ export const HTML_PARTIALS_FOLDER = 'html';
14
+ export const HTML_PARTIALS_EXTENSIONS = ['.htm', '.html', '.ejs'];
15
+ export const FILE_SYSTEM_ROUTES_COMPONENTS_DIR = 'internal_components';