@modern-js/app-tools 2.49.3-alpha.2 → 2.49.3-alpha.20

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 (58) hide show
  1. package/dist/cjs/analyze/getServerRoutes.js +4 -3
  2. package/dist/cjs/plugins/deploy/dependencies.js +1 -12
  3. package/dist/cjs/plugins/deploy/index.js +25 -147
  4. package/dist/cjs/plugins/deploy/platforms/netlify.js +120 -0
  5. package/dist/cjs/plugins/deploy/platforms/netlifyEntry.js +60 -0
  6. package/dist/cjs/plugins/deploy/platforms/node.js +90 -0
  7. package/dist/cjs/plugins/deploy/platforms/nodeEntry.js +41 -0
  8. package/dist/cjs/plugins/deploy/platforms/platform.js +16 -0
  9. package/dist/cjs/plugins/deploy/platforms/vercel.js +145 -0
  10. package/dist/cjs/plugins/deploy/platforms/vercelEntry.js +60 -0
  11. package/dist/cjs/plugins/deploy/utils.js +22 -8
  12. package/dist/cjs/utils/routes.js +7 -2
  13. package/dist/esm/analyze/getServerRoutes.js +5 -4
  14. package/dist/esm/plugins/deploy/dependencies.js +1 -47
  15. package/dist/esm/plugins/deploy/index.js +66 -245
  16. package/dist/esm/plugins/deploy/platforms/netlify.js +182 -0
  17. package/dist/esm/plugins/deploy/platforms/netlifyEntry.js +202 -0
  18. package/dist/esm/plugins/deploy/platforms/node.js +122 -0
  19. package/dist/esm/plugins/deploy/platforms/nodeEntry.js +104 -0
  20. package/dist/esm/plugins/deploy/platforms/platform.js +0 -0
  21. package/dist/esm/plugins/deploy/platforms/vercel.js +220 -0
  22. package/dist/esm/plugins/deploy/platforms/vercelEntry.js +202 -0
  23. package/dist/esm/plugins/deploy/utils.js +55 -3
  24. package/dist/esm/utils/routes.js +6 -2
  25. package/dist/esm-node/analyze/getServerRoutes.js +5 -4
  26. package/dist/esm-node/plugins/deploy/dependencies.js +1 -12
  27. package/dist/esm-node/plugins/deploy/index.js +24 -136
  28. package/dist/esm-node/plugins/deploy/platforms/netlify.js +86 -0
  29. package/dist/esm-node/plugins/deploy/platforms/netlifyEntry.js +68 -0
  30. package/dist/esm-node/plugins/deploy/platforms/node.js +56 -0
  31. package/dist/esm-node/plugins/deploy/platforms/nodeEntry.js +40 -0
  32. package/dist/esm-node/plugins/deploy/platforms/platform.js +0 -0
  33. package/dist/esm-node/plugins/deploy/platforms/vercel.js +111 -0
  34. package/dist/esm-node/plugins/deploy/platforms/vercelEntry.js +68 -0
  35. package/dist/esm-node/plugins/deploy/utils.js +20 -7
  36. package/dist/esm-node/utils/routes.js +6 -2
  37. package/dist/types/plugins/deploy/platforms/netlify.d.ts +2 -0
  38. package/dist/types/plugins/deploy/platforms/netlifyEntry.d.ts +2 -0
  39. package/dist/types/plugins/deploy/platforms/node.d.ts +2 -0
  40. package/dist/types/plugins/deploy/platforms/nodeEntry.d.ts +1 -0
  41. package/dist/types/plugins/deploy/platforms/platform.d.ts +10 -0
  42. package/dist/types/plugins/deploy/platforms/vercel.d.ts +2 -0
  43. package/dist/types/plugins/deploy/platforms/vercelEntry.d.ts +2 -0
  44. package/dist/types/plugins/deploy/utils.d.ts +8 -1
  45. package/dist/types/utils/routes.d.ts +3 -3
  46. package/package.json +21 -21
  47. package/dist/cjs/plugins/deploy/entrys/netlify.js +0 -95
  48. package/dist/cjs/plugins/deploy/entrys/node.js +0 -88
  49. package/dist/cjs/plugins/deploy/entrys/vercel.js +0 -97
  50. package/dist/esm/plugins/deploy/entrys/netlify.js +0 -41
  51. package/dist/esm/plugins/deploy/entrys/node.js +0 -39
  52. package/dist/esm/plugins/deploy/entrys/vercel.js +0 -43
  53. package/dist/esm-node/plugins/deploy/entrys/netlify.js +0 -71
  54. package/dist/esm-node/plugins/deploy/entrys/node.js +0 -64
  55. package/dist/esm-node/plugins/deploy/entrys/vercel.js +0 -73
  56. package/dist/types/plugins/deploy/entrys/netlify.d.ts +0 -5
  57. package/dist/types/plugins/deploy/entrys/node.d.ts +0 -5
  58. package/dist/types/plugins/deploy/entrys/vercel.d.ts +0 -6
@@ -34,6 +34,7 @@ module.exports = __toCommonJS(getServerRoutes_exports);
34
34
  var import_path = __toESM(require("path"));
35
35
  var import_fs = __toESM(require("fs"));
36
36
  var import_utils = require("@modern-js/utils");
37
+ var import_routes = require("../utils/routes");
37
38
  var import_utils2 = require("./utils");
38
39
  const applyBaseUrl = (baseUrl, routes) => {
39
40
  if (baseUrl) {
@@ -106,14 +107,14 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
106
107
  const { packageName } = appContext;
107
108
  const workerSSR = deploy === null || deploy === void 0 ? void 0 : (_deploy_worker = deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr;
108
109
  let htmlRoutes = entrypoints.reduce((previous, { entryName }) => {
109
- const isMainEntry = entryName === (mainEntryName || import_utils.MAIN_ENTRY_NAME);
110
- const entryOptions = (0, import_utils.getEntryOptions)(entryName, isMainEntry, ssr, ssrByEntries, packageName);
110
+ const isMain = (0, import_routes.isMainEntry)(entryName, mainEntryName);
111
+ const entryOptions = (0, import_utils.getEntryOptions)(entryName, isMain, ssr, ssrByEntries, packageName);
111
112
  const isSSR = Boolean(entryOptions);
112
113
  const isWorker = Boolean(workerSSR);
113
114
  const isStream = typeof entryOptions === "object" && (entryOptions.mode === "stream" || Boolean(entryOptions.preload));
114
115
  const { resHeaders } = (routes === null || routes === void 0 ? void 0 : routes[entryName]) || {};
115
116
  let route = {
116
- urlPath: `/${isMainEntry ? "" : entryName}`,
117
+ urlPath: `/${isMain ? "" : entryName}`,
117
118
  entryName,
118
119
  entryPath: (0, import_utils.removeLeadingSlash)(import_path.default.posix.normalize(`${htmlPath}/${entryName}${disableHtmlFolder ? ".html" : "/index.html"}`)),
119
120
  isSPA: true,
@@ -37,16 +37,6 @@ var import_utils = require("@modern-js/utils");
37
37
  var import_pkg_types = require("pkg-types");
38
38
  var import_mlly = require("mlly");
39
39
  var import_utils2 = require("./utils");
40
- const readDirRecursive = async (dir) => {
41
- const files = await import_utils.fs.readdir(dir, {
42
- withFileTypes: true
43
- });
44
- const filesAndDirs = await Promise.all(files.map(async (file) => {
45
- const resPath = import_node_path.default.resolve(dir, file.name);
46
- return file.isDirectory() ? readDirRecursive(resPath) : resPath;
47
- }));
48
- return filesAndDirs.flat();
49
- };
50
40
  async function isFile(file) {
51
41
  try {
52
42
  const stat = await import_utils.fs.stat(file);
@@ -59,7 +49,7 @@ async function isFile(file) {
59
49
  }
60
50
  }
61
51
  const findEntryFiles = async (rootDir) => {
62
- const files = await readDirRecursive(rootDir);
52
+ const files = await (0, import_utils2.readDirRecursive)(rootDir);
63
53
  return files;
64
54
  };
65
55
  const handleDependencies = async (appDir, serverRootDir, include) => {
@@ -212,7 +202,6 @@ const handleDependencies = async (appDir, serverRootDir, include) => {
212
202
  const version = Object.keys(pkg.versions)[0];
213
203
  return (0, import_utils2.writePackage)(pkg, version, serverRootDir);
214
204
  }));
215
- console.log("multiVersionPkgs111111111", multiVersionPkgs);
216
205
  for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
217
206
  const versionEntires = Object.entries(pkgVersions).sort(([v1, p1], [v2, p2]) => {
218
207
  if (p1.length === 0) {
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,25 +15,32 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var deploy_exports = {};
30
20
  __export(deploy_exports, {
31
21
  default: () => deploy_default
32
22
  });
33
23
  module.exports = __toCommonJS(deploy_exports);
34
- var import_path = __toESM(require("path"));
35
- var import_utils = require("@modern-js/utils");
36
24
  var import_std_env = require("std-env");
37
- var import_utils2 = require("./utils");
38
- var import_dependencies = require("./dependencies");
25
+ var import_utils = require("./utils");
26
+ var import_node = require("./platforms/node");
27
+ var import_vercel = require("./platforms/vercel");
28
+ var import_netlify = require("./platforms/netlify");
29
+ const deployPresets = {
30
+ node: import_node.createNodePreset,
31
+ vercel: import_vercel.createVercelPreset,
32
+ netlify: import_netlify.createNetlifyPreset
33
+ };
34
+ async function getDeployPreset(appContext, modernConfig, deployTarget) {
35
+ const { appDirectory, distDirectory } = appContext;
36
+ const { useSSR, useAPI, useWebServer } = (0, import_utils.getProjectUsage)(appDirectory, distDirectory);
37
+ const needModernServer = useSSR || useAPI || useWebServer;
38
+ const createPreset = deployPresets[deployTarget];
39
+ if (!createPreset) {
40
+ throw new Error(`Unknown deploy target: '${deployTarget}'. MODERNJS_DEPLOY should be 'node', 'vercel', or 'netlify'.`);
41
+ }
42
+ return createPreset(appContext, modernConfig, needModernServer);
43
+ }
39
44
  var deploy_default = () => ({
40
45
  name: "@modern-js/plugin-deploy",
41
46
  pre: [
@@ -47,139 +52,12 @@ var deploy_default = () => ({
47
52
  return {
48
53
  async beforeDeploy() {
49
54
  const appContext = api.useAppContext();
50
- const { appDirectory, distDirectory, serverInternalPlugins, sharedDirectory, apiDirectory, lambdaDirectory, metaName, entrypoints } = appContext;
51
- const { useSSR, useAPI, useWebServer } = (0, import_utils2.getProjectUsage)(appDirectory, distDirectory);
52
- const needModernServer = useSSR || useAPI || useWebServer;
53
- const configContext = api.useResolvedConfigContext();
54
- let outputDirectory = import_path.default.join(appDirectory, ".output");
55
- let funcsDirectory = outputDirectory;
56
- let staticDirectory = import_path.default.join(outputDirectory, "static");
57
- if (deployTarget === "node") {
58
- await import_utils.fs.remove(outputDirectory);
59
- await import_utils.fs.copy(distDirectory, outputDirectory);
60
- }
61
- if (deployTarget === "vercel") {
62
- const vercelOutput = import_path.default.join(appDirectory, ".vercel");
63
- await import_utils.fs.remove(vercelOutput);
64
- outputDirectory = import_path.default.join(vercelOutput, "output");
65
- const config2 = {
66
- version: 3,
67
- routes: [
68
- {
69
- src: "/static/(.*)",
70
- headers: {
71
- "cache-control": "s-maxage=31536000, immutable"
72
- },
73
- continue: true
74
- },
75
- {
76
- handle: "filesystem"
77
- }
78
- ]
79
- };
80
- if (!needModernServer) {
81
- entrypoints.forEach((entry) => {
82
- config2.routes.push({
83
- src: `/${entry.entryName}(?:/.*)?`,
84
- headers: {
85
- "cache-control": "s-maxage=0"
86
- },
87
- dest: `/html/${entry.entryName}/index.html`
88
- });
89
- });
90
- } else {
91
- config2.routes.push({
92
- src: "/(.*)",
93
- dest: `/index`
94
- });
95
- }
96
- await import_utils.fs.ensureDir(outputDirectory);
97
- await import_utils.fs.writeJSON(import_path.default.join(outputDirectory, "config.json"), config2, {
98
- spaces: 2
99
- });
100
- staticDirectory = import_path.default.join(outputDirectory, "static/static");
101
- await import_utils.fs.copy(import_path.default.join(distDirectory, "static"), staticDirectory);
102
- if (!needModernServer) {
103
- const destHtmlDirectory = import_path.default.join(distDirectory, "html");
104
- const outputHtmlDirectory = import_path.default.join(import_path.default.join(outputDirectory, "static"), "html");
105
- await import_utils.fs.copy(destHtmlDirectory, outputHtmlDirectory);
106
- } else {
107
- funcsDirectory = import_path.default.join(outputDirectory, "functions", "index.func");
108
- await import_utils.fs.ensureDir(funcsDirectory);
109
- await import_utils.fs.copy(distDirectory, funcsDirectory, {
110
- filter: (src) => {
111
- const distStaticDirectory = import_path.default.join(distDirectory, "static");
112
- return !src.includes(distStaticDirectory);
113
- }
114
- });
115
- const apiDirectory2 = import_path.default.join(funcsDirectory, "api");
116
- if (await import_utils.fs.pathExists(apiDirectory2)) {
117
- await import_utils.fs.rename(apiDirectory2, import_path.default.join(funcsDirectory, "_api"));
118
- }
119
- await import_utils.fs.writeJSON(import_path.default.join(funcsDirectory, ".vc-config.json"), {
120
- runtime: "nodejs16.x",
121
- handler: "index.js",
122
- launcherType: "Nodejs",
123
- shouldAddHelpers: false,
124
- supportsResponseStreaming: true
125
- });
126
- }
127
- }
128
- const { bff } = configContext;
129
- const config = {
130
- output: {
131
- path: "."
132
- },
133
- bff
134
- };
135
- const plugins = (0, import_utils.getInternalPlugins)(appDirectory, serverInternalPlugins);
136
- const serverAppContext = {
137
- sharedDirectory: `path.join(__dirname, "${import_path.default.relative(appDirectory, sharedDirectory)}")`,
138
- apiDirectory: `path.join(__dirname, "${import_path.default.relative(appDirectory, apiDirectory)}")`,
139
- lambdaDirectory: `path.join(__dirname, "${import_path.default.relative(appDirectory, lambdaDirectory)}")`,
140
- metaName
141
- };
142
- let code = ``;
143
- console.log("deployTarget111111111", deployTarget);
144
- switch (deployTarget) {
145
- case "node": {
146
- const { genNodeEntry } = await Promise.resolve().then(() => __toESM(require("./entrys/node")));
147
- code = genNodeEntry({
148
- plugins,
149
- config,
150
- appContext: serverAppContext
151
- });
152
- break;
153
- }
154
- case "vercel": {
155
- const { genVercelEntry } = await Promise.resolve().then(() => __toESM(require("./entrys/vercel")));
156
- code = genVercelEntry({
157
- plugins,
158
- config,
159
- appContext: serverAppContext
160
- });
161
- break;
162
- }
163
- case "netlify": {
164
- const { genNetlifyEntry } = await Promise.resolve().then(() => __toESM(require("./entrys/netlify")));
165
- code = genNetlifyEntry({
166
- plugins,
167
- config,
168
- appContext: serverAppContext
169
- });
170
- break;
171
- }
172
- default: {
173
- code = `throw new Error("unknown deploy target, MODERNJS_DEPLOY should be set");`;
174
- }
175
- }
176
- const entryFilePath = import_path.default.join(funcsDirectory, "index.js");
177
- if (needModernServer) {
178
- await import_utils.fs.writeFile(entryFilePath, code);
179
- await (0, import_dependencies.handleDependencies)(appDirectory, funcsDirectory, [
180
- "@modern-js/prod-server"
181
- ]);
182
- }
55
+ const modernConfig = api.useResolvedConfigContext();
56
+ const deployPreset = await getDeployPreset(appContext, modernConfig, deployTarget);
57
+ (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.prepare) && await (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.prepare());
58
+ (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.writeOutput) && await (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.writeOutput());
59
+ (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.genEntry) && await (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.genEntry());
60
+ (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.end) && await (deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.end());
183
61
  }
184
62
  };
185
63
  }
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var netlify_exports = {};
30
+ __export(netlify_exports, {
31
+ createNetlifyPreset: () => createNetlifyPreset
32
+ });
33
+ module.exports = __toCommonJS(netlify_exports);
34
+ var import_node_path = __toESM(require("node:path"));
35
+ var import_utils = require("@modern-js/utils");
36
+ var import_routes = require("../../../utils/routes");
37
+ var import_utils2 = require("../utils");
38
+ var import_dependencies = require("../dependencies");
39
+ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
40
+ const { appDirectory, distDirectory, serverInternalPlugins, entrypoints } = appContext;
41
+ const plugins = (0, import_utils.getInternalPlugins)(appDirectory, serverInternalPlugins);
42
+ const netlifyOutput = import_node_path.default.join(appDirectory, ".netlify");
43
+ const funcsDirectory = import_node_path.default.join(netlifyOutput, "functions");
44
+ const entryFilePath = import_node_path.default.join(funcsDirectory, "index.js");
45
+ return {
46
+ async prepare() {
47
+ await import_utils.fs.remove(netlifyOutput);
48
+ },
49
+ async writeOutput() {
50
+ const routes = [];
51
+ const { source: { mainEntryName } } = modernConfig;
52
+ if (!needModernServer) {
53
+ entrypoints.forEach((entry) => {
54
+ const isMain = (0, import_routes.isMainEntry)(entry.entryName, mainEntryName);
55
+ routes.push({
56
+ src: `/${isMain ? "" : `${entry.entryName}/`}*`,
57
+ dest: `/html/${entry.entryName}/index.html`,
58
+ status: 200
59
+ });
60
+ });
61
+ } else {
62
+ routes.push({
63
+ src: "/*",
64
+ dest: `/.netlify/functions/index`,
65
+ status: 200
66
+ });
67
+ }
68
+ const redirectContent = routes.map((route) => {
69
+ return `${route.src} ${route.dest} ${route.status}`;
70
+ }).join("\n");
71
+ if (needModernServer) {
72
+ await import_utils.fs.ensureDir(funcsDirectory);
73
+ await import_utils.fs.copy(distDirectory, funcsDirectory);
74
+ await import_utils.fs.copy(distDirectory, funcsDirectory, {
75
+ filter: (src) => {
76
+ const distStaticDirectory = import_node_path.default.join(distDirectory, `static`);
77
+ return !src.includes(distStaticDirectory);
78
+ }
79
+ });
80
+ }
81
+ const redirectFilePath = import_node_path.default.join(distDirectory, "_redirects");
82
+ await import_utils.fs.writeFile(redirectFilePath, redirectContent);
83
+ },
84
+ async genEntry() {
85
+ var _modernConfig_bff;
86
+ if (!needModernServer) {
87
+ return;
88
+ }
89
+ const serverConfig = {
90
+ bff: {
91
+ prefix: modernConfig === null || modernConfig === void 0 ? void 0 : (_modernConfig_bff = modernConfig.bff) === null || _modernConfig_bff === void 0 ? void 0 : _modernConfig_bff.prefix
92
+ },
93
+ output: {
94
+ path: "."
95
+ }
96
+ };
97
+ const pluginImportCode = (0, import_utils2.genPluginImportsCode)(plugins || []);
98
+ const dynamicProdOptions = {
99
+ config: serverConfig,
100
+ serverConfigFile: import_utils.DEFAULT_SERVER_CONFIG,
101
+ plugins
102
+ };
103
+ let entryCode = (await import_utils.fs.readFile(import_node_path.default.join(__dirname, "./netlifyEntry.js"))).toString();
104
+ const serverAppContext = (0, import_utils2.serverAppContenxtTemplate)(appContext);
105
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${import_utils.ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
106
+ await import_utils.fs.writeFile(entryFilePath, entryCode);
107
+ },
108
+ async end() {
109
+ await (0, import_dependencies.handleDependencies)(appDirectory, funcsDirectory, [
110
+ "@modern-js/prod-server"
111
+ ]);
112
+ const netlifyNodeModules = import_node_path.default.join(netlifyOutput, "node_modules");
113
+ await import_utils.fs.move(import_node_path.default.join(funcsDirectory, "node_modules"), netlifyNodeModules);
114
+ }
115
+ };
116
+ };
117
+ // Annotate the CommonJS export names for ESM import in node:
118
+ 0 && (module.exports = {
119
+ createNetlifyPreset
120
+ });
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ const fs = require("node:fs/promises");
3
+ const path = require("node:path");
4
+ const { createNetlifyFunction } = require("@modern-js/prod-server/netlify");
5
+ p_genPluginImportsCode;
6
+ if (!process.env.NODE_ENV) {
7
+ process.env.NODE_ENV = "production";
8
+ }
9
+ let requestHandler = null;
10
+ let handlerCreationPromise = null;
11
+ async function loadRoutes(routeFilepath) {
12
+ try {
13
+ await fs.access(routeFilepath);
14
+ const content = await fs.readFile(routeFilepath, "utf-8");
15
+ const routeSpec = JSON.parse(content);
16
+ return routeSpec.routes || [];
17
+ } catch (error) {
18
+ console.warn("route.json not found or invalid, continuing with empty routes.");
19
+ return [];
20
+ }
21
+ }
22
+ async function initServer() {
23
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
24
+ const routes = await loadRoutes(routeFilepath);
25
+ const dynamicProdOptions = p_dynamicProdOptions;
26
+ const prodServerOptions = {
27
+ pwd: __dirname,
28
+ routes,
29
+ disableCustomHook: true,
30
+ appContext: {
31
+ sharedDirectory: p_sharedDirectory,
32
+ apiDirectory: p_apiDirectory,
33
+ lambdaDirectory: p_lambdaDirectory
34
+ },
35
+ ...dynamicProdOptions
36
+ };
37
+ const requestHandler2 = await createNetlifyFunction(prodServerOptions);
38
+ return requestHandler2;
39
+ }
40
+ async function createHandler() {
41
+ if (!handlerCreationPromise) {
42
+ 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
+ }
51
+ await handlerCreationPromise;
52
+ return requestHandler;
53
+ }
54
+ createHandler();
55
+ module.exports.default = async (request, context) => {
56
+ if (!requestHandler) {
57
+ await createHandler();
58
+ }
59
+ return requestHandler(request, context);
60
+ };
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var node_exports = {};
30
+ __export(node_exports, {
31
+ createNodePreset: () => createNodePreset
32
+ });
33
+ module.exports = __toCommonJS(node_exports);
34
+ var import_node_path = __toESM(require("node:path"));
35
+ var import_utils = require("@modern-js/utils");
36
+ var import_utils2 = require("../utils");
37
+ var import_dependencies = require("../dependencies");
38
+ const createNodePreset = (appContext, config, needModernServer) => {
39
+ const { appDirectory, distDirectory, serverInternalPlugins } = appContext;
40
+ const plugins = (0, import_utils.getInternalPlugins)(appDirectory, serverInternalPlugins);
41
+ const outputDirectory = import_node_path.default.join(appDirectory, ".output");
42
+ const staticDirectory = import_node_path.default.join(outputDirectory, "static");
43
+ const entryFilePath = import_node_path.default.join(outputDirectory, "index.js");
44
+ return {
45
+ async prepare() {
46
+ await import_utils.fs.remove(outputDirectory);
47
+ },
48
+ async writeOutput() {
49
+ await import_utils.fs.copy(distDirectory, outputDirectory);
50
+ },
51
+ async genEntry() {
52
+ var _config_bff;
53
+ if (!needModernServer) {
54
+ return;
55
+ }
56
+ const serverConfig = {
57
+ server: {
58
+ port: 8080
59
+ },
60
+ bff: {
61
+ prefix: config === null || config === void 0 ? void 0 : (_config_bff = config.bff) === null || _config_bff === void 0 ? void 0 : _config_bff.prefix
62
+ },
63
+ output: {
64
+ path: "."
65
+ }
66
+ };
67
+ const pluginImportCode = (0, import_utils2.genPluginImportsCode)(plugins || []);
68
+ const dynamicProdOptions = {
69
+ config: serverConfig,
70
+ serverConfigFile: import_utils.DEFAULT_SERVER_CONFIG,
71
+ plugins
72
+ };
73
+ let entryCode = (await import_utils.fs.readFile(import_node_path.default.join(__dirname, "./nodeEntry.js"))).toString();
74
+ const serverAppContext = (0, import_utils2.serverAppContenxtTemplate)(appContext);
75
+ entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", `"${import_utils.ROUTE_SPEC_FILE}"`).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions)).replace("p_sharedDirectory", serverAppContext.sharedDirectory).replace("p_apiDirectory", serverAppContext.apiDirectory).replace("p_lambdaDirectory", serverAppContext.lambdaDirectory);
76
+ await import_utils.fs.writeFile(entryFilePath, entryCode);
77
+ await (0, import_dependencies.handleDependencies)(appDirectory, outputDirectory, [
78
+ "@modern-js/prod-server"
79
+ ]);
80
+ },
81
+ async end() {
82
+ console.log("Static directory:", import_utils.chalk.blue(import_node_path.default.relative(appDirectory, staticDirectory)));
83
+ console.log(`You can preview this build by`, import_utils.chalk.blue(`node .output/index`));
84
+ }
85
+ };
86
+ };
87
+ // Annotate the CommonJS export names for ESM import in node:
88
+ 0 && (module.exports = {
89
+ createNodePreset
90
+ });
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ const fs = require("node:fs/promises");
3
+ const path = require("node:path");
4
+ const { createProdServer } = require("@modern-js/prod-server");
5
+ p_genPluginImportsCode;
6
+ if (!process.env.NODE_ENV) {
7
+ process.env.NODE_ENV = "production";
8
+ }
9
+ async function loadRoutes(routeFilepath) {
10
+ try {
11
+ await fs.access(routeFilepath);
12
+ const content = await fs.readFile(routeFilepath, "utf-8");
13
+ const routeSpec = JSON.parse(content);
14
+ return routeSpec.routes || [];
15
+ } catch (error) {
16
+ console.warn("route.json not found or invalid, continuing with empty routes.");
17
+ return [];
18
+ }
19
+ }
20
+ async function main() {
21
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
22
+ const routes = await loadRoutes(routeFilepath);
23
+ const dynamicProdOptions = p_dynamicProdOptions;
24
+ const prodServerOptions = {
25
+ pwd: __dirname,
26
+ routes,
27
+ disableCustomHook: true,
28
+ appContext: {
29
+ sharedDirectory: p_sharedDirectory,
30
+ apiDirectory: p_apiDirectory,
31
+ lambdaDirectory: p_lambdaDirectory
32
+ },
33
+ ...dynamicProdOptions
34
+ };
35
+ const app = await createProdServer(prodServerOptions);
36
+ const port = process.env.PORT || 8080;
37
+ app.listen(port, () => {
38
+ console.log("\x1B[32mServer is listening on port", port, "\x1B[0m");
39
+ });
40
+ }
41
+ main();
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var platform_exports = {};
16
+ module.exports = __toCommonJS(platform_exports);