@modern-js/app-tools 3.0.5 → 3.1.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.
Files changed (101) hide show
  1. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +1 -1
  2. package/dist/cjs/config/default.js +1 -1
  3. package/dist/cjs/plugins/analyze/utils.js +6 -6
  4. package/dist/cjs/plugins/deploy/index.js +10 -5
  5. package/dist/cjs/plugins/deploy/platforms/gh-pages.js +1 -1
  6. package/dist/cjs/plugins/deploy/platforms/netlify.js +17 -33
  7. package/dist/cjs/plugins/deploy/platforms/node.js +17 -38
  8. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.cjs +57 -0
  9. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.mjs +59 -0
  10. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.cjs +44 -0
  11. package/dist/{esm/plugins/deploy/platforms → cjs/plugins/deploy/platforms/templates}/node-entry.mjs +5 -27
  12. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.cjs +56 -0
  13. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.mjs +58 -0
  14. package/dist/cjs/plugins/deploy/platforms/vercel.js +15 -32
  15. package/dist/cjs/plugins/deploy/types.js +18 -0
  16. package/dist/cjs/plugins/deploy/utils/generator.js +103 -0
  17. package/dist/cjs/plugins/deploy/{utils.js → utils/index.js} +28 -24
  18. package/dist/cjs/utils/register.js +1 -9
  19. package/dist/esm/builder/shared/builderPlugins/adapterBasic.mjs +2 -2
  20. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +2 -2
  21. package/dist/esm/commands/build.mjs +3 -3
  22. package/dist/esm/commands/dev.mjs +5 -5
  23. package/dist/esm/commands/serve.mjs +2 -2
  24. package/dist/esm/config/default.mjs +1 -1
  25. package/dist/esm/esm/register-esm.mjs +3 -3
  26. package/dist/esm/plugins/analyze/utils.mjs +2 -2
  27. package/dist/esm/plugins/deploy/index.mjs +9 -4
  28. package/dist/esm/plugins/deploy/platforms/gh-pages.mjs +1 -1
  29. package/dist/esm/plugins/deploy/platforms/netlify.mjs +25 -41
  30. package/dist/esm/plugins/deploy/platforms/node.mjs +22 -43
  31. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.cjs +57 -0
  32. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.mjs +59 -0
  33. package/dist/esm/plugins/deploy/platforms/templates/node-entry.cjs +44 -0
  34. package/dist/esm/plugins/deploy/platforms/templates/node-entry.mjs +46 -0
  35. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.cjs +56 -0
  36. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.mjs +58 -0
  37. package/dist/esm/plugins/deploy/platforms/vercel.mjs +28 -45
  38. package/dist/esm/plugins/deploy/types.mjs +0 -0
  39. package/dist/esm/plugins/deploy/utils/generator.mjs +47 -0
  40. package/dist/esm/plugins/deploy/utils/index.mjs +40 -0
  41. package/dist/esm/utils/loadPlugins.mjs +4 -4
  42. package/dist/esm/utils/register.mjs +6 -14
  43. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.mjs +2 -2
  44. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +2 -2
  45. package/dist/esm-node/commands/build.mjs +3 -3
  46. package/dist/esm-node/commands/dev.mjs +5 -5
  47. package/dist/esm-node/commands/serve.mjs +2 -2
  48. package/dist/esm-node/config/default.mjs +1 -1
  49. package/dist/esm-node/esm/register-esm.mjs +3 -3
  50. package/dist/esm-node/plugins/analyze/utils.mjs +2 -2
  51. package/dist/esm-node/plugins/deploy/index.mjs +9 -4
  52. package/dist/esm-node/plugins/deploy/platforms/gh-pages.mjs +1 -1
  53. package/dist/esm-node/plugins/deploy/platforms/netlify.mjs +25 -44
  54. package/dist/esm-node/plugins/deploy/platforms/node.mjs +22 -46
  55. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.cjs +57 -0
  56. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.mjs +59 -0
  57. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.cjs +44 -0
  58. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.mjs +46 -0
  59. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.cjs +56 -0
  60. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.mjs +58 -0
  61. package/dist/esm-node/plugins/deploy/platforms/vercel.mjs +28 -48
  62. package/dist/esm-node/plugins/deploy/types.mjs +1 -0
  63. package/dist/esm-node/plugins/deploy/utils/generator.mjs +48 -0
  64. package/dist/esm-node/plugins/deploy/utils/index.mjs +44 -0
  65. package/dist/esm-node/utils/loadPlugins.mjs +4 -4
  66. package/dist/esm-node/utils/register.mjs +6 -14
  67. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  68. package/dist/types/plugins/deploy/platforms/platform.d.ts +8 -1
  69. package/dist/types/plugins/deploy/platforms/templates/netlify-entry.d.mts +2 -0
  70. package/dist/types/plugins/deploy/platforms/templates/node-entry.d.mts +1 -0
  71. package/dist/types/plugins/deploy/platforms/templates/vercel-entry.d.cts +2 -0
  72. package/dist/types/plugins/deploy/platforms/templates/vercel-entry.d.mts +2 -0
  73. package/dist/types/plugins/deploy/types.d.ts +3 -0
  74. package/dist/types/plugins/deploy/utils/generator.d.ts +24 -0
  75. package/dist/types/plugins/deploy/utils/index.d.ts +16 -0
  76. package/package.json +12 -11
  77. package/rslib.config.mts +19 -0
  78. package/dist/cjs/plugins/deploy/platforms/netlify-entry.js +0 -36
  79. package/dist/cjs/plugins/deploy/platforms/netlify-handler.js +0 -89
  80. package/dist/cjs/plugins/deploy/platforms/node-entry.js +0 -75
  81. package/dist/cjs/plugins/deploy/platforms/vercel-entry.js +0 -37
  82. package/dist/cjs/plugins/deploy/platforms/vercel-handler.js +0 -89
  83. package/dist/esm/plugins/deploy/platforms/netlify-entry.mjs +0 -2
  84. package/dist/esm/plugins/deploy/platforms/netlify-handler.mjs +0 -85
  85. package/dist/esm/plugins/deploy/platforms/vercel-entry.mjs +0 -3
  86. package/dist/esm/plugins/deploy/platforms/vercel-handler.mjs +0 -85
  87. package/dist/esm/plugins/deploy/utils.mjs +0 -39
  88. package/dist/esm-node/plugins/deploy/platforms/netlify-entry.mjs +0 -3
  89. package/dist/esm-node/plugins/deploy/platforms/netlify-handler.mjs +0 -89
  90. package/dist/esm-node/plugins/deploy/platforms/node-entry.mjs +0 -72
  91. package/dist/esm-node/plugins/deploy/platforms/vercel-entry.mjs +0 -4
  92. package/dist/esm-node/plugins/deploy/platforms/vercel-handler.mjs +0 -89
  93. package/dist/esm-node/plugins/deploy/utils.mjs +0 -40
  94. package/dist/types/plugins/deploy/platforms/netlify-entry.d.cts +0 -2
  95. package/dist/types/plugins/deploy/platforms/netlify-entry.d.mts +0 -1
  96. package/dist/types/plugins/deploy/platforms/vercel-entry.d.mts +0 -2
  97. package/dist/types/plugins/deploy/platforms/vercel-entry.d.ts +0 -2
  98. package/dist/types/plugins/deploy/platforms/vercel-handler.d.cts +0 -1
  99. package/dist/types/plugins/deploy/utils.d.ts +0 -23
  100. /package/dist/types/plugins/deploy/platforms/{netlify-handler.d.cts → templates/netlify-entry.d.cts} +0 -0
  101. /package/dist/types/plugins/deploy/platforms/{node-entry.d.ts → templates/node-entry.d.cts} +0 -0
@@ -127,7 +127,7 @@ async function applySSRLoaderEntry(chain, optinos, isServer) {
127
127
  const { entrypoints } = appContext;
128
128
  await Promise.all(entrypoints.map(async (entrypoint)=>{
129
129
  const { entryName } = entrypoint;
130
- const serverLoadersFile = (0, utils_js_namespaceObject.getServerCombinedModueFile)(internalDirectory, entryName);
130
+ const serverLoadersFile = (0, utils_js_namespaceObject.getServerCombinedModuleFile)(internalDirectory, entryName);
131
131
  if (isServer) try {
132
132
  await utils_namespaceObject.fs.access(serverLoadersFile, utils_namespaceObject.fs.constants.F_OK);
133
133
  chain.entry(`${entryName}-server-loaders`).add(serverLoadersFile);
@@ -32,7 +32,7 @@ function createDefaultConfig(appContext) {
32
32
  const dev = {
33
33
  cliShortcuts: {
34
34
  help: false,
35
- custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key)
35
+ custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key && 'o' !== key)
36
36
  }
37
37
  };
38
38
  const output = {
@@ -33,13 +33,13 @@ var __webpack_require__ = {};
33
33
  var __webpack_exports__ = {};
34
34
  __webpack_require__.r(__webpack_exports__);
35
35
  __webpack_require__.d(__webpack_exports__, {
36
- checkIsBuildCommands: ()=>checkIsBuildCommands,
37
- checkIsServeCommand: ()=>checkIsServeCommand,
38
36
  parseModule: ()=>parseModule,
37
+ checkIsServeCommand: ()=>checkIsServeCommand,
39
38
  replaceWithAlias: ()=>replaceWithAlias,
39
+ getServerCombinedModuleFile: ()=>getServerCombinedModuleFile,
40
40
  walkDirectory: ()=>walkDirectory,
41
41
  isSubDirOrEqual: ()=>isSubDirOrEqual,
42
- getServerCombinedModueFile: ()=>getServerCombinedModueFile
42
+ checkIsBuildCommands: ()=>checkIsBuildCommands
43
43
  });
44
44
  const external_fs_namespaceObject = require("fs");
45
45
  var external_fs_default = /*#__PURE__*/ __webpack_require__.n(external_fs_namespaceObject);
@@ -74,7 +74,7 @@ const parseModule = async ({ source, filename })=>{
74
74
  }
75
75
  return await (0, external_es_module_lexer_namespaceObject.parse)(content);
76
76
  };
77
- const getServerCombinedModueFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'server-loader-combined.js');
77
+ const getServerCombinedModuleFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'server-loader-combined.js');
78
78
  const checkIsBuildCommands = ()=>{
79
79
  const buildCommands = [
80
80
  'dev',
@@ -99,7 +99,7 @@ const isSubDirOrEqual = (parent, child)=>{
99
99
  };
100
100
  exports.checkIsBuildCommands = __webpack_exports__.checkIsBuildCommands;
101
101
  exports.checkIsServeCommand = __webpack_exports__.checkIsServeCommand;
102
- exports.getServerCombinedModueFile = __webpack_exports__.getServerCombinedModueFile;
102
+ exports.getServerCombinedModuleFile = __webpack_exports__.getServerCombinedModuleFile;
103
103
  exports.isSubDirOrEqual = __webpack_exports__.isSubDirOrEqual;
104
104
  exports.parseModule = __webpack_exports__.parseModule;
105
105
  exports.replaceWithAlias = __webpack_exports__.replaceWithAlias;
@@ -107,7 +107,7 @@ exports.walkDirectory = __webpack_exports__.walkDirectory;
107
107
  for(var __rspack_i in __webpack_exports__)if (-1 === [
108
108
  "checkIsBuildCommands",
109
109
  "checkIsServeCommand",
110
- "getServerCombinedModueFile",
110
+ "getServerCombinedModuleFile",
111
111
  "isSubDirOrEqual",
112
112
  "parseModule",
113
113
  "replaceWithAlias",
@@ -31,20 +31,25 @@ const gh_pages_js_namespaceObject = require("./platforms/gh-pages.js");
31
31
  const netlify_js_namespaceObject = require("./platforms/netlify.js");
32
32
  const node_js_namespaceObject = require("./platforms/node.js");
33
33
  const vercel_js_namespaceObject = require("./platforms/vercel.js");
34
- const external_utils_js_namespaceObject = require("./utils.js");
34
+ const index_js_namespaceObject = require("./utils/index.js");
35
35
  const deployPresets = {
36
36
  node: node_js_namespaceObject.createNodePreset,
37
37
  vercel: vercel_js_namespaceObject.createVercelPreset,
38
38
  netlify: netlify_js_namespaceObject.createNetlifyPreset,
39
39
  ghPages: gh_pages_js_namespaceObject.createGhPagesPreset
40
40
  };
41
- async function getDeployPreset(appContext, modernConfig, deployTarget) {
41
+ async function getDeployPreset(appContext, modernConfig, deployTarget, api) {
42
42
  const { appDirectory, distDirectory, metaName } = appContext;
43
- const { useSSR, useAPI, useWebServer } = (0, external_utils_js_namespaceObject.getProjectUsage)(appDirectory, distDirectory, metaName);
43
+ const { useSSR, useAPI, useWebServer } = (0, index_js_namespaceObject.getProjectUsage)(appDirectory, distDirectory, metaName);
44
44
  const needModernServer = useSSR || useAPI || useWebServer;
45
45
  const createPreset = deployPresets[deployTarget];
46
46
  if (!createPreset) throw new Error(`Unknown deploy target: '${deployTarget}'. MODERNJS_DEPLOY should be 'node', 'vercel', or 'netlify'.`);
47
- return createPreset(appContext, modernConfig, needModernServer);
47
+ return createPreset({
48
+ appContext,
49
+ modernConfig,
50
+ needModernServer,
51
+ api
52
+ });
48
53
  }
49
54
  const deploy = ()=>({
50
55
  name: '@modern-js/plugin-deploy',
@@ -55,7 +60,7 @@ const deploy = ()=>({
55
60
  const { metaName } = appContext;
56
61
  if ('modern-js' !== metaName && !process.env.MODERNJS_DEPLOY) return;
57
62
  const modernConfig = api.getNormalizedConfig();
58
- const deployPreset = await getDeployPreset(appContext, modernConfig, deployTarget);
63
+ const deployPreset = await getDeployPreset(appContext, modernConfig, deployTarget, api);
59
64
  deployPreset?.prepare && await deployPreset?.prepare();
60
65
  deployPreset?.writeOutput && await deployPreset?.writeOutput();
61
66
  deployPreset?.genEntry && await deployPreset?.genEntry();
@@ -61,7 +61,7 @@ async function reorganizeHtmlFiles(routes, baseDir, baseUrl = '/') {
61
61
  });
62
62
  await Promise.all(copyPromises);
63
63
  }
64
- const createGhPagesPreset = (appContext, modernConfig)=>{
64
+ const createGhPagesPreset = ({ appContext, modernConfig })=>{
65
65
  const { serverRoutes, appDirectory, distDirectory } = appContext;
66
66
  const { server: { baseUrl } } = modernConfig;
67
67
  const outputDirectory = external_path_default().join(appDirectory, '.output');
@@ -40,7 +40,8 @@ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_no
40
40
  const utils_namespaceObject = require("@modern-js/utils");
41
41
  const external_ndepe_namespaceObject = require("ndepe");
42
42
  const routes_js_namespaceObject = require("../../../utils/routes.js");
43
- const external_utils_js_namespaceObject = require("../utils.js");
43
+ const index_js_namespaceObject = require("../utils/index.js");
44
+ const generator_js_namespaceObject = require("../utils/generator.js");
44
45
  async function cleanDistDirectory(dir) {
45
46
  try {
46
47
  const items = await utils_namespaceObject.fs.readdir(dir);
@@ -52,17 +53,12 @@ async function cleanDistDirectory(dir) {
52
53
  console.error('Error cleaning directory:', error);
53
54
  }
54
55
  }
55
- const createNetlifyPreset = (appContext, modernConfig, needModernServer)=>{
56
- const { appDirectory, distDirectory, entrypoints, serverPlugins, moduleType, metaName } = appContext;
56
+ const createNetlifyPreset = ({ appContext, modernConfig, needModernServer })=>{
57
+ const { appDirectory, distDirectory, entrypoints, moduleType } = appContext;
57
58
  const isEsmProject = 'module' === moduleType;
58
- const plugins = serverPlugins.map((plugin)=>[
59
- plugin.name,
60
- plugin.options
61
- ]);
62
59
  const netlifyOutput = external_node_path_default().join(appDirectory, '.netlify');
63
60
  const funcsDirectory = external_node_path_default().join(netlifyOutput, 'functions');
64
61
  const entryFilePath = external_node_path_default().join(funcsDirectory, 'index.js');
65
- const handlerFilePath = external_node_path_default().join(funcsDirectory, 'netlify-handler.cjs');
66
62
  return {
67
63
  async prepare () {
68
64
  await utils_namespaceObject.fs.remove(netlifyOutput);
@@ -99,39 +95,27 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer)=>{
99
95
  },
100
96
  async genEntry () {
101
97
  if (!needModernServer) return;
102
- const serverConfig = {
103
- bff: {
104
- prefix: modernConfig?.bff?.prefix
105
- },
106
- output: {
107
- distPath: {
108
- root: '.'
109
- }
110
- }
111
- };
112
- const meta = (0, utils_namespaceObject.getMeta)(metaName);
113
- const pluginImportCode = (0, external_utils_js_namespaceObject.genPluginImportsCode)(plugins || []);
114
- const dynamicProdOptions = {
115
- config: serverConfig
116
- };
117
- const serverConfigPath = `path.join(__dirname, "${utils_namespaceObject.SERVER_DIR}", "${meta}.server")`;
118
- const pluginsCode = (0, external_utils_js_namespaceObject.getPluginsCode)(plugins);
119
- let handlerCode = (await utils_namespaceObject.fs.readFile(external_node_path_default().join(__dirname, './netlify-handler.js'))).toString();
120
- const serverAppContext = (0, external_utils_js_namespaceObject.serverAppContenxtTemplate)(appContext);
121
- handlerCode = handlerCode.replace('p_genPluginImportsCode', pluginImportCode).replace('p_ROUTE_SPEC_FILE', `"${utils_namespaceObject.ROUTE_SPEC_FILE}"`).replace('p_dynamicProdOptions', JSON.stringify(dynamicProdOptions)).replace('p_plugins', pluginsCode).replace('p_bffRuntimeFramework', `"${serverAppContext.bffRuntimeFramework}"`).replace('p_serverDirectory', serverConfigPath).replace('p_sharedDirectory', serverAppContext.sharedDirectory).replace('p_apiDirectory', serverAppContext.apiDirectory).replace('p_lambdaDirectory', serverAppContext.lambdaDirectory);
122
- await utils_namespaceObject.fs.writeFile(handlerFilePath, handlerCode);
123
- if (isEsmProject) await utils_namespaceObject.fs.writeFile(entryFilePath, "export { handler as default } from './netlify-handler.cjs';\n");
124
- else await utils_namespaceObject.fs.writeFile(entryFilePath, "const { handler } = require('./netlify-handler.cjs');\nexports.handler = handler;\n");
98
+ const template = await (0, index_js_namespaceObject.readTemplate)(`netlify-entry.${isEsmProject ? 'mjs' : 'cjs'}`);
99
+ const code = await (0, generator_js_namespaceObject.generateHandler)({
100
+ template,
101
+ appContext,
102
+ config: modernConfig,
103
+ isESM: isEsmProject
104
+ });
105
+ await utils_namespaceObject.fs.writeFile(entryFilePath, code);
125
106
  },
126
107
  async end () {
127
108
  if ('development' !== process.env.NODE_ENV) await cleanDistDirectory(distDirectory);
128
109
  if (!needModernServer) return;
110
+ const entry = isEsmProject ? await (0, index_js_namespaceObject.resolveESMDependency)('@modern-js/prod-server') : require.resolve('@modern-js/prod-server');
111
+ const netlifyEntry = isEsmProject ? await (0, index_js_namespaceObject.resolveESMDependency)('@modern-js/prod-server/netlify') : require.resolve('@modern-js/prod-server/netlify');
112
+ if (!entry || !netlifyEntry) throw new Error('Cannot find @modern-js/prod-server');
129
113
  await (0, external_ndepe_namespaceObject.nodeDepEmit)({
130
114
  appDir: appDirectory,
131
115
  sourceDir: funcsDirectory,
132
116
  includeEntries: [
133
- require.resolve('@modern-js/prod-server'),
134
- require.resolve('@modern-js/prod-server/netlify')
117
+ entry,
118
+ netlifyEntry
135
119
  ],
136
120
  copyWholePackage (pkgName) {
137
121
  return '@modern-js/utils' === pkgName;
@@ -39,14 +39,11 @@ const external_node_path_namespaceObject = require("node:path");
39
39
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
40
40
  const utils_namespaceObject = require("@modern-js/utils");
41
41
  const external_ndepe_namespaceObject = require("ndepe");
42
- const external_utils_js_namespaceObject = require("../utils.js");
43
- const createNodePreset = (appContext, config)=>{
44
- const { appDirectory, distDirectory, serverPlugins, moduleType, metaName } = appContext;
42
+ const index_js_namespaceObject = require("../utils/index.js");
43
+ const generator_js_namespaceObject = require("../utils/generator.js");
44
+ const createNodePreset = ({ appContext, modernConfig, api })=>{
45
+ const { appDirectory, distDirectory, moduleType } = appContext;
45
46
  const isEsmProject = 'module' === moduleType;
46
- const plugins = serverPlugins.map((plugin)=>[
47
- plugin.name,
48
- plugin.options
49
- ]);
50
47
  const outputDirectory = external_node_path_default().join(appDirectory, '.output');
51
48
  const staticDirectory = external_node_path_default().join(outputDirectory, 'static');
52
49
  const entryFilePath = external_node_path_default().join(outputDirectory, 'index.js');
@@ -58,44 +55,24 @@ const createNodePreset = (appContext, config)=>{
58
55
  await utils_namespaceObject.fs.copy(distDirectory, outputDirectory);
59
56
  },
60
57
  async genEntry () {
61
- const serverConfig = {
62
- server: {
63
- port: 8080
64
- },
65
- bff: {
66
- prefix: config?.bff?.prefix
67
- },
68
- output: {
69
- distPath: {
70
- root: '.'
71
- }
72
- }
73
- };
74
- const pluginImportCode = (0, external_utils_js_namespaceObject.genPluginImportsCode)(plugins || []);
75
- const dynamicProdOptions = {
76
- config: serverConfig
77
- };
78
- const meta = (0, utils_namespaceObject.getMeta)(metaName);
79
- const serverConfigPath = `path.join(__dirname, "${utils_namespaceObject.SERVER_DIR}", "${meta}.server")`;
80
- const pluginsCode = (0, external_utils_js_namespaceObject.getPluginsCode)(plugins);
81
- let entryCode = (await utils_namespaceObject.fs.readFile(external_node_path_default().join(__dirname, './node-entry.js'))).toString();
82
- const serverAppContext = (0, external_utils_js_namespaceObject.serverAppContenxtTemplate)(appContext);
83
- entryCode = entryCode.replace('p_genPluginImportsCode', pluginImportCode).replace('p_ROUTE_SPEC_FILE', `"${utils_namespaceObject.ROUTE_SPEC_FILE}"`).replace('p_dynamicProdOptions', JSON.stringify(dynamicProdOptions)).replace('p_plugins', pluginsCode).replace('p_serverDirectory', serverConfigPath).replace('p_sharedDirectory', serverAppContext.sharedDirectory).replace('p_apiDirectory', serverAppContext.apiDirectory).replace('p_bffRuntimeFramework', `"${serverAppContext.bffRuntimeFramework}"`).replace('p_lambdaDirectory', serverAppContext.lambdaDirectory);
84
- if (isEsmProject) {
85
- const cjsEntryFilePath = external_node_path_default().join(outputDirectory, 'index.cjs');
86
- await utils_namespaceObject.fs.writeFile(cjsEntryFilePath, entryCode);
87
- await utils_namespaceObject.fs.writeFile(entryFilePath, "import('./index.cjs');");
88
- } else await utils_namespaceObject.fs.writeFile(entryFilePath, entryCode);
58
+ const template = await (0, index_js_namespaceObject.readTemplate)(`node-entry.${isEsmProject ? 'mjs' : 'cjs'}`);
59
+ const code = await (0, generator_js_namespaceObject.generateHandler)({
60
+ template,
61
+ appContext,
62
+ config: modernConfig,
63
+ isESM: isEsmProject
64
+ });
65
+ await utils_namespaceObject.fs.writeFile(entryFilePath, code);
89
66
  },
90
67
  async end () {
91
- console.log('Static directory:', utils_namespaceObject.chalk.blue(external_node_path_default().relative(appDirectory, staticDirectory)));
92
- console.log("You can preview this build by", utils_namespaceObject.chalk.blue("node .output/index"));
93
68
  const filter = (filePath)=>!filePath.startsWith(staticDirectory) && !filePath.endsWith('.map');
69
+ const entry = isEsmProject ? await (0, index_js_namespaceObject.resolveESMDependency)('@modern-js/prod-server') : require.resolve('@modern-js/prod-server');
70
+ if (!entry) throw new Error('Cannot find @modern-js/prod-server');
94
71
  await (0, external_ndepe_namespaceObject.nodeDepEmit)({
95
72
  appDir: appDirectory,
96
73
  sourceDir: outputDirectory,
97
74
  includeEntries: [
98
- require.resolve('@modern-js/prod-server')
75
+ entry
99
76
  ],
100
77
  copyWholePackage (pkgName) {
101
78
  return '@modern-js/utils' === pkgName;
@@ -109,6 +86,8 @@ const createNodePreset = (appContext, config)=>{
109
86
  };
110
87
  }
111
88
  });
89
+ console.log('Static directory:', utils_namespaceObject.chalk.blue(external_node_path_default().relative(appDirectory, staticDirectory).replace(/\\/g, '/')));
90
+ console.log("You can preview this build by", utils_namespaceObject.chalk.blue('node .output/index'));
112
91
  }
113
92
  };
114
93
  };
@@ -0,0 +1,57 @@
1
+ const fs = require('node:fs/promises');
2
+ const path = require('node:path');
3
+ const { createNetlifyFunction } = require('@modern-js/prod-server/netlify');
4
+ p_genPluginImportsCode;
5
+ if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
6
+ let requestHandler = null;
7
+ let handlerCreationPromise = null;
8
+ async function loadRoutes(routeFilepath) {
9
+ try {
10
+ await fs.access(routeFilepath);
11
+ const content = await fs.readFile(routeFilepath, 'utf-8');
12
+ const routeSpec = JSON.parse(content);
13
+ return routeSpec.routes || [];
14
+ } catch (error) {
15
+ console.warn('route.json not found or invalid, continuing with empty routes.');
16
+ return [];
17
+ }
18
+ }
19
+ async function initServer() {
20
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
21
+ const routes = await loadRoutes(routeFilepath);
22
+ const dynamicProdOptions = p_dynamicProdOptions;
23
+ const prodServerOptions = {
24
+ pwd: __dirname,
25
+ routes,
26
+ disableCustomHook: true,
27
+ appContext: {
28
+ sharedDirectory: p_sharedDirectory,
29
+ apiDirectory: p_apiDirectory,
30
+ lambdaDirectory: p_lambdaDirectory,
31
+ bffRuntimeFramework: p_bffRuntimeFramework
32
+ },
33
+ plugins: p_plugins,
34
+ serverConfigPath: p_serverDirectory,
35
+ ...dynamicProdOptions
36
+ };
37
+ const requestHandler = await createNetlifyFunction(prodServerOptions);
38
+ return requestHandler;
39
+ }
40
+ async function createHandler() {
41
+ if (!handlerCreationPromise) handlerCreationPromise = (async ()=>{
42
+ try {
43
+ requestHandler = await initServer();
44
+ } catch (error) {
45
+ console.error('Error creating server:', error);
46
+ process.exit(1);
47
+ }
48
+ })();
49
+ await handlerCreationPromise;
50
+ return requestHandler;
51
+ }
52
+ createHandler();
53
+ const handler = async (request, context)=>{
54
+ if (!requestHandler) await createHandler();
55
+ return requestHandler(request, context);
56
+ };
57
+ exports.handler = handler;
@@ -0,0 +1,59 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { createNetlifyFunction } from '@modern-js/prod-server/netlify';
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
6
+ p_genPluginImportsCode;
7
+ if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
8
+ let requestHandler = null;
9
+ let handlerCreationPromise = null;
10
+ async function loadRoutes(routeFilepath) {
11
+ try {
12
+ await fs.access(routeFilepath);
13
+ const content = await fs.readFile(routeFilepath, 'utf-8');
14
+ const routeSpec = JSON.parse(content);
15
+ return routeSpec.routes || [];
16
+ } catch (error) {
17
+ console.warn('route.json not found or invalid, continuing with empty routes.');
18
+ return [];
19
+ }
20
+ }
21
+ async function initServer() {
22
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
23
+ const routes = await loadRoutes(routeFilepath);
24
+ const dynamicProdOptions = p_dynamicProdOptions;
25
+ const prodServerOptions = {
26
+ pwd: __dirname,
27
+ routes,
28
+ disableCustomHook: true,
29
+ appContext: {
30
+ sharedDirectory: p_sharedDirectory,
31
+ apiDirectory: p_apiDirectory,
32
+ lambdaDirectory: p_lambdaDirectory,
33
+ bffRuntimeFramework: p_bffRuntimeFramework
34
+ },
35
+ plugins: p_plugins,
36
+ serverConfigPath: p_serverDirectory,
37
+ ...dynamicProdOptions
38
+ };
39
+ const requestHandler = await createNetlifyFunction(prodServerOptions);
40
+ return requestHandler;
41
+ }
42
+ async function createHandler() {
43
+ if (!handlerCreationPromise) handlerCreationPromise = (async ()=>{
44
+ try {
45
+ requestHandler = await initServer();
46
+ } catch (error) {
47
+ console.error('Error creating server:', error);
48
+ process.exit(1);
49
+ }
50
+ })();
51
+ await handlerCreationPromise;
52
+ return requestHandler;
53
+ }
54
+ createHandler();
55
+ const handler = async (request, context)=>{
56
+ if (!requestHandler) await createHandler();
57
+ return requestHandler(request, context);
58
+ };
59
+ export default handler;
@@ -0,0 +1,44 @@
1
+ const fs = require('node:fs/promises');
2
+ const path = require('node:path');
3
+ const { createProdServer } = require('@modern-js/prod-server');
4
+ p_genPluginImportsCode;
5
+ if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
6
+ async function loadRoutes(routeFilepath) {
7
+ try {
8
+ await fs.access(routeFilepath);
9
+ const content = await fs.readFile(routeFilepath, 'utf-8');
10
+ const routeSpec = JSON.parse(content);
11
+ return routeSpec.routes || [];
12
+ } catch (error) {
13
+ console.warn('route.json not found or invalid, continuing with empty routes.');
14
+ return [];
15
+ }
16
+ }
17
+ async function main() {
18
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
19
+ const routes = await loadRoutes(routeFilepath);
20
+ const dynamicProdOptions = p_dynamicProdOptions;
21
+ const prodServerOptions = {
22
+ pwd: __dirname,
23
+ routes,
24
+ disableCustomHook: true,
25
+ appContext: {
26
+ sharedDirectory: p_sharedDirectory,
27
+ apiDirectory: p_apiDirectory,
28
+ lambdaDirectory: p_lambdaDirectory,
29
+ bffRuntimeFramework: p_bffRuntimeFramework
30
+ },
31
+ plugins: p_plugins,
32
+ serverConfigPath: p_serverDirectory,
33
+ ...dynamicProdOptions
34
+ };
35
+ const app = await createProdServer(prodServerOptions);
36
+ const port = process.env.PORT || 8080;
37
+ app.listen({
38
+ host: '::',
39
+ port
40
+ }, ()=>{
41
+ console.log(`\x1b[32mServer is listening on http://[::]:${port}`, '\x1b[0m');
42
+ });
43
+ }
44
+ main();
@@ -1,30 +1,8 @@
1
- import * as __rspack_external__modern_js_prod_server_057184e2 from "@modern-js/prod-server";
2
- import * as __rspack_external_node_fs_promises_153e37e0 from "node:fs/promises";
3
- import * as __rspack_external_node_path_c5b9b54f from "node:path";
4
- var __webpack_modules__ = {
5
- "@modern-js/prod-server" (module) {
6
- module.exports = __rspack_external__modern_js_prod_server_057184e2;
7
- },
8
- "node:fs/promises" (module) {
9
- module.exports = __rspack_external_node_fs_promises_153e37e0;
10
- },
11
- "node:path" (module) {
12
- module.exports = __rspack_external_node_path_c5b9b54f;
13
- }
14
- };
15
- var __webpack_module_cache__ = {};
16
- function __webpack_require__(moduleId) {
17
- var cachedModule = __webpack_module_cache__[moduleId];
18
- if (void 0 !== cachedModule) return cachedModule.exports;
19
- var module = __webpack_module_cache__[moduleId] = {
20
- exports: {}
21
- };
22
- __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
23
- return module.exports;
24
- }
25
- const fs = __webpack_require__("node:fs/promises");
26
- const path = __webpack_require__("node:path");
27
- const { createProdServer } = __webpack_require__("@modern-js/prod-server");
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { createProdServer } from '@modern-js/prod-server';
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
28
6
  p_genPluginImportsCode;
29
7
  if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
30
8
  async function loadRoutes(routeFilepath) {
@@ -0,0 +1,56 @@
1
+ const fs = require('node:fs/promises');
2
+ const path = require('node:path');
3
+ const { createProdServer } = require('@modern-js/prod-server');
4
+ p_genPluginImportsCode;
5
+ if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
6
+ let requestHandler = null;
7
+ let handlerCreationPromise = null;
8
+ async function loadRoutes(routeFilepath) {
9
+ try {
10
+ await fs.access(routeFilepath);
11
+ const content = await fs.readFile(routeFilepath, 'utf-8');
12
+ const routeSpec = JSON.parse(content);
13
+ return routeSpec.routes || [];
14
+ } catch (error) {
15
+ console.warn('route.json not found or invalid, continuing with empty routes.');
16
+ return [];
17
+ }
18
+ }
19
+ async function initServer() {
20
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
21
+ const routes = await loadRoutes(routeFilepath);
22
+ const dynamicProdOptions = p_dynamicProdOptions;
23
+ const prodServerOptions = {
24
+ pwd: __dirname,
25
+ routes,
26
+ disableCustomHook: true,
27
+ appContext: {
28
+ sharedDirectory: p_sharedDirectory,
29
+ apiDirectory: p_apiDirectory,
30
+ lambdaDirectory: p_lambdaDirectory
31
+ },
32
+ plugins: p_plugins,
33
+ serverConfigPath: p_serverDirectory,
34
+ ...dynamicProdOptions
35
+ };
36
+ const app = await createProdServer(prodServerOptions);
37
+ return app.getRequestListener();
38
+ }
39
+ async function createHandler() {
40
+ if (!handlerCreationPromise) handlerCreationPromise = (async ()=>{
41
+ try {
42
+ requestHandler = await initServer();
43
+ } catch (error) {
44
+ console.error('Error creating server:', error);
45
+ process.exit(1);
46
+ }
47
+ })();
48
+ await handlerCreationPromise;
49
+ return requestHandler;
50
+ }
51
+ createHandler();
52
+ const handler = async (req, res)=>{
53
+ if (!requestHandler) await createHandler();
54
+ return requestHandler(req, res);
55
+ };
56
+ module.exports = handler;
@@ -0,0 +1,58 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { createProdServer } from '@modern-js/prod-server';
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
6
+ p_genPluginImportsCode;
7
+ if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
8
+ let requestHandler = null;
9
+ let handlerCreationPromise = null;
10
+ async function loadRoutes(routeFilepath) {
11
+ try {
12
+ await fs.access(routeFilepath);
13
+ const content = await fs.readFile(routeFilepath, 'utf-8');
14
+ const routeSpec = JSON.parse(content);
15
+ return routeSpec.routes || [];
16
+ } catch (error) {
17
+ console.warn('route.json not found or invalid, continuing with empty routes.');
18
+ return [];
19
+ }
20
+ }
21
+ async function initServer() {
22
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
23
+ const routes = await loadRoutes(routeFilepath);
24
+ const dynamicProdOptions = p_dynamicProdOptions;
25
+ const prodServerOptions = {
26
+ pwd: __dirname,
27
+ routes,
28
+ disableCustomHook: true,
29
+ appContext: {
30
+ sharedDirectory: p_sharedDirectory,
31
+ apiDirectory: p_apiDirectory,
32
+ lambdaDirectory: p_lambdaDirectory
33
+ },
34
+ plugins: p_plugins,
35
+ serverConfigPath: p_serverDirectory,
36
+ ...dynamicProdOptions
37
+ };
38
+ const app = await createProdServer(prodServerOptions);
39
+ return app.getRequestListener();
40
+ }
41
+ async function createHandler() {
42
+ if (!handlerCreationPromise) handlerCreationPromise = (async ()=>{
43
+ try {
44
+ requestHandler = await initServer();
45
+ } catch (error) {
46
+ console.error('Error creating server:', error);
47
+ process.exit(1);
48
+ }
49
+ })();
50
+ await handlerCreationPromise;
51
+ return requestHandler;
52
+ }
53
+ createHandler();
54
+ const handler = async (req, res)=>{
55
+ if (!requestHandler) await createHandler();
56
+ return requestHandler(req, res);
57
+ };
58
+ export default handler;