@modern-js/app-tools 2.49.3-alpha.9 → 2.49.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. package/dist/cjs/analyze/getServerRoutes.js +3 -4
  2. package/dist/cjs/index.js +1 -3
  3. package/dist/cjs/utils/routes.js +2 -7
  4. package/dist/esm/analyze/getServerRoutes.js +4 -5
  5. package/dist/esm/index.js +1 -3
  6. package/dist/esm/utils/routes.js +2 -6
  7. package/dist/esm-node/analyze/getServerRoutes.js +4 -5
  8. package/dist/esm-node/index.js +1 -3
  9. package/dist/esm-node/utils/routes.js +2 -6
  10. package/dist/types/utils/routes.d.ts +3 -3
  11. package/package.json +22 -26
  12. package/dist/cjs/plugins/deploy/dependencies.js +0 -256
  13. package/dist/cjs/plugins/deploy/index.js +0 -215
  14. package/dist/cjs/plugins/deploy/platforms/netlify.js +0 -95
  15. package/dist/cjs/plugins/deploy/platforms/node.js +0 -88
  16. package/dist/cjs/plugins/deploy/platforms/platform.js +0 -16
  17. package/dist/cjs/plugins/deploy/platforms/vercel.js +0 -57
  18. package/dist/cjs/plugins/deploy/platforms/vercelEntry.js +0 -55
  19. package/dist/cjs/plugins/deploy/utils.js +0 -150
  20. package/dist/esm/plugins/deploy/dependencies.js +0 -725
  21. package/dist/esm/plugins/deploy/index.js +0 -356
  22. package/dist/esm/plugins/deploy/platforms/netlify.js +0 -41
  23. package/dist/esm/plugins/deploy/platforms/node.js +0 -39
  24. package/dist/esm/plugins/deploy/platforms/platform.js +0 -0
  25. package/dist/esm/plugins/deploy/platforms/vercel.js +0 -47
  26. package/dist/esm/plugins/deploy/platforms/vercelEntry.js +0 -197
  27. package/dist/esm/plugins/deploy/utils.js +0 -244
  28. package/dist/esm-node/plugins/deploy/dependencies.js +0 -222
  29. package/dist/esm-node/plugins/deploy/index.js +0 -185
  30. package/dist/esm-node/plugins/deploy/platforms/netlify.js +0 -71
  31. package/dist/esm-node/plugins/deploy/platforms/node.js +0 -64
  32. package/dist/esm-node/plugins/deploy/platforms/platform.js +0 -0
  33. package/dist/esm-node/plugins/deploy/platforms/vercel.js +0 -23
  34. package/dist/esm-node/plugins/deploy/platforms/vercelEntry.js +0 -63
  35. package/dist/esm-node/plugins/deploy/utils.js +0 -109
  36. package/dist/types/plugins/deploy/dependencies.d.ts +0 -1
  37. package/dist/types/plugins/deploy/index.d.ts +0 -4
  38. package/dist/types/plugins/deploy/platforms/netlify.d.ts +0 -5
  39. package/dist/types/plugins/deploy/platforms/node.d.ts +0 -5
  40. package/dist/types/plugins/deploy/platforms/platform.d.ts +0 -1
  41. package/dist/types/plugins/deploy/platforms/vercel.d.ts +0 -5
  42. package/dist/types/plugins/deploy/platforms/vercelEntry.d.ts +0 -2
  43. package/dist/types/plugins/deploy/utils.d.ts +0 -27
@@ -1,71 +0,0 @@
1
- import { ROUTE_SPEC_FILE, DEFAULT_SERVER_CONFIG } from "@modern-js/utils";
2
- import { genPluginImportsCode, getPluginsCode, severAppContextTemplate } from "../utils";
3
- function genNetlifyEntry({ config, plugins, appContext } = {}) {
4
- const defaultConfig = {
5
- server: {
6
- port: 8080
7
- },
8
- output: {
9
- path: "."
10
- }
11
- };
12
- return `
13
-
14
- const fs = require('node:fs/promises');
15
- const path = require('node:path');
16
- const { createNetlifyFunction } = require('@modern-js/prod-server/netlify');
17
- ${genPluginImportsCode(plugins || [])}
18
-
19
- let requestHandler = null;
20
-
21
- if(!process.env.NODE_ENV){
22
- process.env.NODE_ENV = 'production';
23
- }
24
-
25
- async function createHandler() {
26
- try {
27
- let routes = [];
28
- const routeFilepath = path.join(__dirname, "${ROUTE_SPEC_FILE}");
29
- try {
30
- await fs.access(routeFilepath);
31
- const content = await fs.readFile(routeFilepath, "utf-8");
32
- const routeSpec = JSON.parse(content);
33
- routes = routeSpec.routes;
34
- } catch (error) {
35
- console.warn('route.json not found, continuing with empty routes.');
36
- }
37
-
38
- const prodServerOptions = {
39
- pwd: __dirname,
40
- routes,
41
- config: ${JSON.stringify(config || defaultConfig)},
42
- serverConfigFile: '${DEFAULT_SERVER_CONFIG}',
43
- plugins: ${getPluginsCode(plugins || [])},
44
- appContext: ${appContext ? severAppContextTemplate(appContext) : "undefined"},
45
- disableCustomHook: true
46
- }
47
-
48
- requestHandler = await createNetlifyFunction(prodServerOptions)
49
-
50
- return requestHandler
51
- } catch(error) {
52
- console.error(error);
53
- process.exit(1);
54
- }
55
- }
56
-
57
- createHandler();
58
-
59
- const handleRequest = async(request, context) => {
60
- if(typeof requestHandler !== 'function'){
61
- await createHandler();
62
- }
63
- return requestHandler(request, context);
64
- }
65
-
66
- export default handleRequest;
67
- `;
68
- }
69
- export {
70
- genNetlifyEntry
71
- };
@@ -1,64 +0,0 @@
1
- import { ROUTE_SPEC_FILE, DEFAULT_SERVER_CONFIG } from "@modern-js/utils";
2
- import { genPluginImportsCode, getPluginsCode, severAppContextTemplate } from "../utils";
3
- function genNodeEntry({ config, plugins, appContext } = {}) {
4
- const defaultConfig = {
5
- server: {
6
- port: 8080
7
- },
8
- output: {
9
- path: "."
10
- }
11
- };
12
- return `
13
-
14
- const fs = require('node:fs/promises');
15
- const path = require('node:path');
16
- const { createProdServer } = require('@modern-js/prod-server');
17
- ${genPluginImportsCode(plugins || [])}
18
-
19
- if(!process.env.NODE_ENV){
20
- process.env.NODE_ENV = 'production';
21
- }
22
-
23
- async function main() {
24
- try {
25
- let routes = [];
26
- const routeFilepath = path.join(__dirname, "${ROUTE_SPEC_FILE}");
27
- try {
28
- await fs.access(routeFilepath);
29
- const content = await fs.readFile(routeFilepath, "utf-8");
30
- const routeSpec = JSON.parse(content);
31
- routes = routeSpec.routes;
32
- } catch (error) {
33
- console.warn('route.json not found, continuing with empty routes.');
34
- }
35
-
36
- const prodServerOptions = {
37
- pwd: __dirname,
38
- routes,
39
- config: ${JSON.stringify(config || defaultConfig)},
40
- serverConfigFile: '${DEFAULT_SERVER_CONFIG}',
41
- plugins: ${getPluginsCode(plugins || [])},
42
- appContext: ${appContext ? severAppContextTemplate(appContext) : "undefined"},
43
- disableCustomHook: true
44
- }
45
-
46
- const app = await createProdServer(prodServerOptions)
47
-
48
- const port = process.env.PORT || 3000;
49
-
50
- app.listen(port, () => {
51
- console.log('\\x1b[32mServer is listening on port', port, '\\x1b[0m');
52
- });
53
- } catch(error) {
54
- console.error(error);
55
- process.exit(1);
56
- }
57
- }
58
-
59
- main();
60
- `;
61
- }
62
- export {
63
- genNodeEntry
64
- };
@@ -1,23 +0,0 @@
1
- import path from "node:path";
2
- import { ROUTE_SPEC_FILE, DEFAULT_SERVER_CONFIG, fs as fse } from "@modern-js/utils";
3
- import { genPluginImportsCode, getPluginsCode, severAppContextTemplate } from "../utils";
4
- async function genVercelEntry({ config, plugins, appContext } = {}) {
5
- const defaultConfig = {
6
- output: {
7
- path: "."
8
- }
9
- };
10
- const pluginImportCode = genPluginImportsCode(plugins || []);
11
- const dynamicProdOptions = {
12
- config: `${JSON.stringify(config || defaultConfig)}`,
13
- serverConfigFile: DEFAULT_SERVER_CONFIG,
14
- plugins: `${getPluginsCode(plugins || [])}`,
15
- appContext: `${appContext ? severAppContextTemplate(appContext) : "undefined"}`
16
- };
17
- let entryCode = (await fse.readFile(path.join(__dirname, "./vercelEntry.js"))).toString();
18
- entryCode = entryCode.replace("p_genPluginImportsCode", pluginImportCode).replace("p_ROUTE_SPEC_FILE", ROUTE_SPEC_FILE).replace("p_dynamicProdOptions", JSON.stringify(dynamicProdOptions));
19
- return entryCode;
20
- }
21
- export {
22
- genVercelEntry
23
- };
@@ -1,63 +0,0 @@
1
- var __getOwnPropNames = Object.getOwnPropertyNames;
2
- var __commonJS = (cb, mod) => function __require() {
3
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
- };
5
- var require_vercelEntry = __commonJS({
6
- "src/plugins/deploy/platforms/vercelEntry.js"(exports, module) {
7
- const fs = require("node:fs/promises");
8
- const path = require("node:path");
9
- const { createProdServer } = require("@modern-js/prod-server");
10
- p_genPluginImportsCode;
11
- if (!process.env.NODE_ENV) {
12
- process.env.NODE_ENV = "production";
13
- }
14
- let requestHandler = null;
15
- let handlerCreationPromise = null;
16
- async function loadRoutes(routeFilepath) {
17
- try {
18
- await fs.access(routeFilepath);
19
- const content = await fs.readFile(routeFilepath, "utf-8");
20
- const routeSpec = JSON.parse(content);
21
- return routeSpec.routes || [];
22
- } catch (error) {
23
- console.warn("route.json not found or invalid, continuing with empty routes.");
24
- return [];
25
- }
26
- }
27
- async function initServer() {
28
- const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
29
- const routes = await loadRoutes(routeFilepath);
30
- const dynamicProdOptions = p_dynamicProdOptions;
31
- const prodServerOptions = {
32
- pwd: __dirname,
33
- routes,
34
- disableCustomHook: true,
35
- ...dynamicProdOptions
36
- };
37
- const app = await createProdServer(prodServerOptions);
38
- return app.getRequestListener();
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 = async (req, res) => {
56
- if (!requestHandler) {
57
- await createHandler();
58
- }
59
- return requestHandler(req, res);
60
- };
61
- }
62
- });
63
- export default require_vercelEntry();
@@ -1,109 +0,0 @@
1
- import path from "path";
2
- import os from "node:os";
3
- import { ROUTE_SPEC_FILE, fs as fse, isDepExists } from "@modern-js/utils";
4
- import { parseNodeModulePath } from "mlly";
5
- const severAppContextTemplate = (serverAppContext) => {
6
- return `{
7
- sharedDirectory: ${serverAppContext.sharedDirectory},
8
- apiDirectory: ${serverAppContext.apiDirectory},
9
- lambdaDirectory: ${serverAppContext.lambdaDirectory},
10
- }`;
11
- };
12
- const getPluginsCode = (plugins) => `[${plugins.map((_, index) => `plugin_${index}()`).join(",")}]`;
13
- const genPluginImportsCode = (plugins) => {
14
- return plugins.map((plugin, index) => `
15
- let plugin_${index} = require('${plugin}')
16
- plugin_${index} = plugin_${index}.default || plugin_${index}
17
- `).join(";\n");
18
- };
19
- const getProjectUsage = (appDirectory, distDirectory) => {
20
- const routeJSON = path.join(distDirectory, ROUTE_SPEC_FILE);
21
- const { routes } = fse.readJSONSync(routeJSON);
22
- let useSSR = false;
23
- let useAPI = false;
24
- routes.forEach((route) => {
25
- if (route.isSSR) {
26
- useSSR = true;
27
- }
28
- if (route.isApi) {
29
- useAPI = true;
30
- }
31
- });
32
- const useWebServer = isDepExists(appDirectory, "@modern-js/plugin-server");
33
- return {
34
- useSSR,
35
- useAPI,
36
- useWebServer
37
- };
38
- };
39
- function applyProductionCondition(exports) {
40
- if (!exports || typeof exports === "string") {
41
- return;
42
- }
43
- if (exports.production) {
44
- if (typeof exports.production === "string") {
45
- exports.default = exports.production;
46
- } else {
47
- Object.assign(exports, exports.production);
48
- }
49
- }
50
- for (const key in exports) {
51
- applyProductionCondition(exports[key]);
52
- }
53
- }
54
- function applyPublicCondition(pkg) {
55
- var _pkg_publishConfig;
56
- if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
57
- var _pkg_publishConfig1;
58
- pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
59
- }
60
- }
61
- const writePackage = async (pkg, version, projectDir, _pkgPath) => {
62
- const pkgPath = _pkgPath || pkg.name;
63
- for (const src of pkg.versions[version].files) {
64
- if (src.includes("node_modules")) {
65
- const { subpath } = parseNodeModulePath(src);
66
- const dest = path.join(projectDir, "node_modules", pkgPath, subpath);
67
- const dirname = path.dirname(dest);
68
- await fse.ensureDir(dirname);
69
- await fse.copyFile(src, dest);
70
- } else {
71
- const subpath = path.relative(pkg.versions[version].path, src);
72
- const dest = path.join(projectDir, "node_modules", pkgPath, subpath);
73
- const dirname = path.dirname(dest);
74
- await fse.ensureDir(dirname);
75
- await fse.copyFile(src, dest);
76
- }
77
- }
78
- const { pkgJSON } = pkg.versions[version];
79
- applyPublicCondition(pkgJSON);
80
- const packageJsonPath = path.join(projectDir, "node_modules", pkgPath, "package.json");
81
- await fse.ensureDir(path.dirname(packageJsonPath));
82
- await fse.writeFile(packageJsonPath, JSON.stringify(pkgJSON, null, 2));
83
- };
84
- const isWindows = os.platform() === "win32";
85
- const linkPackage = async (from, to, projectRootDir) => {
86
- const src = path.join(projectRootDir, "node_modules", from);
87
- const dest = path.join(projectRootDir, "node_modules", to);
88
- const dstStat = await fse.lstat(dest).catch(() => null);
89
- const exists = dstStat === null || dstStat === void 0 ? void 0 : dstStat.isSymbolicLink();
90
- if (exists) {
91
- return;
92
- }
93
- await fse.mkdir(path.dirname(dest), {
94
- recursive: true
95
- });
96
- await fse.symlink(path.relative(path.dirname(dest), src), dest, isWindows ? "junction" : "dir").catch((error) => {
97
- console.error("Cannot link", from, "to", to, error);
98
- });
99
- };
100
- export {
101
- applyProductionCondition,
102
- applyPublicCondition,
103
- genPluginImportsCode,
104
- getPluginsCode,
105
- getProjectUsage,
106
- linkPackage,
107
- severAppContextTemplate,
108
- writePackage
109
- };
@@ -1 +0,0 @@
1
- export declare const handleDependencies: (appDir: string, serverRootDir: string, include: string[]) => Promise<void>;
@@ -1,4 +0,0 @@
1
- import { CliPlugin } from '@modern-js/core';
2
- import { AppTools } from '../../types';
3
- declare const _default: () => CliPlugin<AppTools>;
4
- export default _default;
@@ -1,5 +0,0 @@
1
- export declare function genNetlifyEntry({ config, plugins, appContext, }?: {
2
- config?: Record<string, any>;
3
- plugins?: string[];
4
- appContext?: Record<string, any>;
5
- }): string;
@@ -1,5 +0,0 @@
1
- export declare function genNodeEntry({ config, plugins, appContext, }?: {
2
- config?: Record<string, any>;
3
- plugins?: string[];
4
- appContext?: Record<string, any>;
5
- }): string;
@@ -1 +0,0 @@
1
- export {};
@@ -1,5 +0,0 @@
1
- export declare function genVercelEntry({ config, plugins, appContext, }?: {
2
- config?: Record<string, any>;
3
- plugins?: string[];
4
- appContext?: Record<string, any>;
5
- }): Promise<string>;
@@ -1,2 +0,0 @@
1
- declare function _exports(req: any, res: any): Promise<any>;
2
- export = _exports;
@@ -1,27 +0,0 @@
1
- import type { PackageJson } from 'pkg-types';
2
- export type ServerAppContext = {
3
- sharedDirectory: string;
4
- apiDirectory: string;
5
- lambdaDirectory: string;
6
- metaName: string;
7
- };
8
- export declare const severAppContextTemplate: (serverAppContext: ServerAppContext) => string;
9
- export declare const getPluginsCode: (plugins: string[]) => string;
10
- export declare const genPluginImportsCode: (plugins: string[]) => string;
11
- export declare const getProjectUsage: (appDirectory: string, distDirectory: string) => {
12
- useSSR: boolean;
13
- useAPI: boolean;
14
- useWebServer: boolean;
15
- };
16
- export declare function applyProductionCondition(exports: PackageJson['exports']): void;
17
- export declare function applyPublicCondition(pkg: PackageJson): void;
18
- export type TracedPackage = {
19
- name: string;
20
- versions: Record<string, {
21
- pkgJSON: PackageJson;
22
- path: string;
23
- files: string[];
24
- }>;
25
- };
26
- export declare const writePackage: (pkg: TracedPackage, version: string, projectDir: string, _pkgPath?: string) => Promise<void>;
27
- export declare const linkPackage: (from: string, to: string, projectRootDir: string) => Promise<void>;