@modern-js/app-tools 2.57.2-alpha.0 → 2.58.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. package/dist/cjs/builder/builder-webpack/index.js +1 -1
  2. package/dist/cjs/builder/generator/index.js +2 -2
  3. package/dist/cjs/builder/index.js +2 -2
  4. package/dist/cjs/commands/build.js +0 -19
  5. package/dist/cjs/commands/dev.js +0 -9
  6. package/dist/cjs/commands/index.js +8 -8
  7. package/dist/cjs/index.js +1 -1
  8. package/dist/cjs/plugins/analyze/index.js +3 -3
  9. package/dist/cjs/plugins/deploy/dependencies/index.js +0 -1
  10. package/dist/cjs/plugins/deploy/dependencies/utils.js +0 -11
  11. package/dist/cjs/plugins/deploy/platforms/netlify.js +5 -14
  12. package/dist/cjs/plugins/deploy/platforms/{netlify-handler.js → netlifyEntry.js} +4 -6
  13. package/dist/cjs/plugins/deploy/platforms/node.js +4 -13
  14. package/dist/cjs/plugins/deploy/platforms/vercel.js +5 -14
  15. package/dist/cjs/plugins/deploy/platforms/{vercel-handler.js → vercelEntry.js} +1 -27
  16. package/dist/cjs/utils/config.js +1 -1
  17. package/dist/cjs/utils/loadPlugins.js +1 -1
  18. package/dist/cjs/utils/register.js +22 -49
  19. package/dist/esm/builder/builder-rspack/adapterCopy.js +4 -3
  20. package/dist/esm/builder/generator/getBuilderEnvironments.js +2 -0
  21. package/dist/esm/builder/generator/index.js +1 -1
  22. package/dist/esm/builder/index.js +2 -2
  23. package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +1 -1
  24. package/dist/esm/commands/build.js +16 -9
  25. package/dist/esm/commands/dev.js +55 -37
  26. package/dist/esm/commands/index.js +7 -7
  27. package/dist/esm/index.js +1 -42
  28. package/dist/esm/plugins/analyze/index.js +10 -6
  29. package/dist/esm/plugins/deploy/dependencies/index.js +16 -8
  30. package/dist/esm/plugins/deploy/dependencies/utils.js +15 -7
  31. package/dist/esm/utils/createServer.js +1 -1
  32. package/dist/esm-node/builder/builder-rspack/adapterCopy.js +2 -2
  33. package/dist/esm-node/builder/generator/getBuilderEnvironments.js +1 -1
  34. package/dist/esm-node/builder/generator/index.js +1 -1
  35. package/dist/esm-node/builder/index.js +2 -2
  36. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +1 -1
  37. package/dist/esm-node/commands/build.js +3 -0
  38. package/dist/esm-node/commands/dev.js +24 -16
  39. package/dist/esm-node/commands/index.js +7 -7
  40. package/dist/esm-node/index.js +1 -17
  41. package/dist/esm-node/plugins/analyze/index.js +7 -5
  42. package/dist/esm-node/plugins/deploy/dependencies/index.js +15 -7
  43. package/dist/esm-node/plugins/deploy/dependencies/utils.js +11 -2
  44. package/dist/esm-node/utils/createServer.js +1 -1
  45. package/dist/types/builder/index.d.ts +1 -1
  46. package/dist/types/plugins/deploy/platforms/netlifyEntry.d.ts +2 -0
  47. package/dist/types/plugins/deploy/platforms/vercelEntry.d.ts +2 -0
  48. package/package.json +18 -18
  49. package/dist/cjs/esm/esbuild-loader.mjs +0 -20
  50. package/dist/cjs/esm/register-esm.mjs +0 -65
  51. package/dist/cjs/esm/ts-node-loader.mjs +0 -21
  52. package/dist/cjs/esm/utils.mjs +0 -43
  53. package/dist/cjs/plugins/deploy/platforms/netlify-entry.js +0 -3
  54. package/dist/cjs/plugins/deploy/platforms/netlify-entry.mjs +0 -1
  55. package/dist/cjs/plugins/deploy/platforms/vercel-entry.js +0 -3
  56. package/dist/cjs/plugins/deploy/platforms/vercel-entry.mjs +0 -3
  57. package/dist/esm/custom-loader.mjs +0 -41
  58. package/dist/esm/register-esm.mjs +0 -22
  59. package/dist/esm-node/esm/esbuild-loader.js +0 -39
  60. package/dist/esm-node/esm/register-esm.js +0 -39
  61. package/dist/esm-node/esm/ts-node-loader.js +0 -42
  62. package/dist/types/esm/esbuild-loader.d.mts +0 -6
  63. package/dist/types/esm/register-esm.d.mts +0 -5
  64. package/dist/types/esm/ts-node-loader.d.mts +0 -6
  65. package/dist/types/esm/utils.d.mts +0 -6
  66. package/dist/types/plugins/deploy/platforms/netlify-entry.d.cts +0 -1
  67. package/dist/types/plugins/deploy/platforms/netlify-entry.d.mts +0 -1
  68. package/dist/types/plugins/deploy/platforms/netlify-handler.d.cts +0 -1
  69. package/dist/types/plugins/deploy/platforms/vercel-entry.d.cts +0 -2
  70. package/dist/types/plugins/deploy/platforms/vercel-entry.d.mts +0 -2
  71. package/dist/types/plugins/deploy/platforms/vercel-handler.d.cts +0 -1
  72. /package/dist/cjs/plugins/deploy/platforms/{node-entry.js → nodeEntry.js} +0 -0
  73. /package/dist/types/plugins/deploy/platforms/{node-entry.d.ts → nodeEntry.d.ts} +0 -0
@@ -1,27 +1,23 @@
1
1
  import path from "node:path";
2
2
  import { ResolvedConfigContext } from "@modern-js/core";
3
- import { DEFAULT_DEV_HOST, SERVER_DIR, getMeta } from "@modern-js/utils";
3
+ import { DEFAULT_DEV_HOST, SERVER_DIR, getMeta, logger } from "@modern-js/utils";
4
4
  import { createDevServer } from "@modern-js/server";
5
5
  import { applyPlugins } from "@modern-js/prod-server";
6
6
  import { loadServerPlugins } from "../utils/loadPlugins";
7
+ import { registerCompiler } from "../utils/register";
7
8
  import { printInstructions } from "../utils/printInstructions";
8
9
  import { setServer } from "../utils/createServer";
9
10
  import { generateRoutes } from "../utils/routes";
10
11
  import { buildServerConfig } from "../utils/config";
11
- const dev = async (api, options, devServerOptions = {}) => {
12
- var _normalizedConfig_source, _normalizedConfig_tools;
12
+ const dev = async (api, options, devServerOptions) => {
13
+ var _normalizedConfig_source, _normalizedConfig_tools, _normalizedConfig_dev;
13
14
  if (options.analyze) {
14
15
  process.env.BUNDLE_ANALYZE = "true";
15
16
  }
16
17
  let normalizedConfig = api.useResolvedConfigContext();
17
18
  const appContext = api.useAppContext();
18
19
  const hookRunners = api.useHookRunners();
19
- const { registerEsm } = await import("../esm/register-esm.mjs");
20
- await registerEsm({
21
- appDir: appContext.appDirectory,
22
- distDir: appContext.distDirectory,
23
- alias: (_normalizedConfig_source = normalizedConfig.source) === null || _normalizedConfig_source === void 0 ? void 0 : _normalizedConfig_source.alias
24
- });
20
+ await registerCompiler(appContext.appDirectory, appContext.distDirectory, normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig_source = normalizedConfig.source) === null || _normalizedConfig_source === void 0 ? void 0 : _normalizedConfig_source.alias);
25
21
  normalizedConfig = {
26
22
  ...normalizedConfig,
27
23
  cliOptions: options
@@ -64,20 +60,32 @@ const dev = async (api, options, devServerOptions = {}) => {
64
60
  plugins: pluginInstances,
65
61
  ...devServerOptions
66
62
  };
63
+ const host = ((_normalizedConfig_dev = normalizedConfig.dev) === null || _normalizedConfig_dev === void 0 ? void 0 : _normalizedConfig_dev.host) || DEFAULT_DEV_HOST;
67
64
  if (apiOnly) {
68
- var _normalizedConfig_dev;
69
- const app = await createDevServer(serverOptions, applyPlugins);
70
- const host = ((_normalizedConfig_dev = normalizedConfig.dev) === null || _normalizedConfig_dev === void 0 ? void 0 : _normalizedConfig_dev.host) || DEFAULT_DEV_HOST;
71
- app.listen({
65
+ const { server } = await createDevServer({
66
+ ...serverOptions,
67
+ runCompile: false
68
+ }, (devServerOptions === null || devServerOptions === void 0 ? void 0 : devServerOptions.applyPlugins) || applyPlugins);
69
+ server.listen({
72
70
  port,
73
71
  host
74
72
  }, () => {
75
73
  printInstructions(hookRunners, appContext, normalizedConfig);
76
74
  });
77
75
  } else {
78
- const { server } = await appContext.builder.startDevServer({
79
- serverOptions,
80
- applyPlugins
76
+ const { server, afterListen } = await createDevServer({
77
+ ...serverOptions,
78
+ builder: appContext.builder
79
+ }, (devServerOptions === null || devServerOptions === void 0 ? void 0 : devServerOptions.applyPlugins) || applyPlugins);
80
+ server.listen({
81
+ port,
82
+ host
83
+ }, async (err) => {
84
+ if (err) {
85
+ logger.error("Occur error %s, when start dev server", err);
86
+ }
87
+ logger.debug("listen dev server done");
88
+ await afterListen();
81
89
  });
82
90
  setServer(server);
83
91
  }
@@ -5,7 +5,7 @@ const devCommand = async (program, api) => {
5
5
  const runner = api.useHookRunners();
6
6
  const devToolMetas = await runner.registerDev();
7
7
  const devProgram = program.command("dev").alias("start").usage("[options]").description(i18n.t(localeKeys.command.dev.describe)).option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).option("-e --entry [entry...]", i18n.t(localeKeys.command.dev.entry)).option("--analyze", i18n.t(localeKeys.command.shared.analyze)).option("--api-only", i18n.t(localeKeys.command.dev.apiOnly)).option("--web-only", i18n.t(localeKeys.command.dev.webOnly)).action(async (options) => {
8
- const { dev } = await import("./dev.js");
8
+ const { dev } = await import("./dev");
9
9
  await dev(api, options);
10
10
  });
11
11
  for (const meta of devToolMetas) {
@@ -28,7 +28,7 @@ const buildCommand = async (program, api) => {
28
28
  const runner = api.useHookRunners();
29
29
  const platformBuilders = await runner.registerBuildPlatform();
30
30
  const buildProgram = program.command("build").usage("[options]").description(i18n.t(localeKeys.command.build.describe)).option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).option("--analyze", i18n.t(localeKeys.command.shared.analyze)).action(async (options) => {
31
- const { build } = await import("./build.js");
31
+ const { build } = await import("./build");
32
32
  await build(api, options);
33
33
  });
34
34
  for (const platformBuilder of platformBuilders) {
@@ -47,17 +47,17 @@ const buildCommand = async (program, api) => {
47
47
  };
48
48
  const serverCommand = (program, api) => {
49
49
  program.command("serve").usage("[options]").description(i18n.t(localeKeys.command.serve.describe)).option("--api-only", i18n.t(localeKeys.command.dev.apiOnly)).option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).action(async () => {
50
- const { start } = await import("./serve.js");
50
+ const { start } = await import("./serve");
51
51
  await start(api);
52
52
  });
53
53
  };
54
54
  const deployCommand = (program, api) => {
55
55
  program.command("deploy").usage("[options]").option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).option("-s --skip-build", i18n.t(localeKeys.command.shared.skipBuild)).description(i18n.t(localeKeys.command.deploy.describe)).action(async (options) => {
56
56
  if (!options.skipBuild) {
57
- const { build } = await import("./build.js");
57
+ const { build } = await import("./build");
58
58
  await build(api);
59
59
  }
60
- const { deploy } = await import("./deploy.js");
60
+ const { deploy } = await import("./deploy");
61
61
  await deploy(api, options);
62
62
  process.exit(0);
63
63
  });
@@ -71,8 +71,8 @@ const newCommand = (program, locale) => {
71
71
  });
72
72
  };
73
73
  const inspectCommand = (program, api) => {
74
- program.command("inspect").description("inspect the internal configs").option(`--env <env>`, i18n.t(localeKeys.command.inspect.env), "development").option("--output <output>", i18n.t(localeKeys.command.inspect.output), "/").option("--verbose", i18n.t(localeKeys.command.inspect.verbose)).option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).action(async (options) => {
75
- const { inspect } = await import("./inspect.js");
74
+ program.command("inspect").description("inspect the internal configs").option(`--env <env>`, i18n.t(localeKeys.command.inspect.env), "development").option("--output <output>", i18n.t(localeKeys.command.inspect.output), "./").option("--verbose", i18n.t(localeKeys.command.inspect.verbose)).option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).action(async (options) => {
75
+ const { inspect } = await import("./inspect");
76
76
  inspect(api, options);
77
77
  });
78
78
  };
@@ -1,6 +1,6 @@
1
1
  import path from "path";
2
2
  import { lintPlugin } from "@modern-js/plugin-lint";
3
- import { cleanRequireCache, emptyDir, getCommand, getArgv, fs, NESTED_ROUTE_SPEC_FILE } from "@modern-js/utils";
3
+ import { cleanRequireCache, emptyDir, getCommand, getArgv } from "@modern-js/utils";
4
4
  import { getLocaleLanguage } from "@modern-js/plugin-i18n/language-detector";
5
5
  import initializePlugin from "./plugins/initialize";
6
6
  import analyzePlugin from "./plugins/analyze";
@@ -47,7 +47,6 @@ const appTools = (options = {
47
47
  ...appContext,
48
48
  toolsType: "app-tools"
49
49
  });
50
- const nestedRoutes = {};
51
50
  const locale = getLocaleLanguage();
52
51
  i18n.changeLanguage({
53
52
  locale
@@ -112,21 +111,6 @@ const appTools = (options = {
112
111
  cleanRequireCache([
113
112
  require.resolve("./plugins/analyze")
114
113
  ]);
115
- },
116
- async modifyFileSystemRoutes({ entrypoint, routes }) {
117
- nestedRoutes[entrypoint.entryName] = routes;
118
- return {
119
- entrypoint,
120
- routes
121
- };
122
- },
123
- async beforeGenerateRoutes({ entrypoint, code }) {
124
- const { distDirectory } = api.useAppContext();
125
- await fs.outputJSON(path.resolve(distDirectory, NESTED_ROUTE_SPEC_FILE), nestedRoutes);
126
- return {
127
- entrypoint,
128
- code
129
- };
130
114
  }
131
115
  };
132
116
  }
@@ -7,7 +7,6 @@ import { getSelectedEntries } from "../../utils/getSelectedEntries";
7
7
  import { initialNormalizedConfig } from "../../config";
8
8
  import { createBuilderGenerator } from "../../builder";
9
9
  import { checkIsBuildCommands } from "./utils";
10
- import { compatibleRequire } from "@modern-js/utils";
11
10
  const debug = createDebugger("plugin-analyze");
12
11
  var analyze_default = ({ bundler }) => ({
13
12
  name: "@modern-js/plugin-analyze",
@@ -45,9 +44,9 @@ var analyze_default = ({ bundler }) => ({
45
44
  return;
46
45
  }
47
46
  const [{ getBundleEntry }, { getServerRoutes }, { getHtmlTemplate }] = await Promise.all([
48
- compatibleRequire(path.join(__dirname, "./getBundleEntry.js")),
49
- compatibleRequire(path.join(__dirname, "./getServerRoutes.js")),
50
- compatibleRequire(path.join(__dirname, "./getHtmlTemplate.js"))
47
+ import("./getBundleEntry"),
48
+ import("./getServerRoutes"),
49
+ import("./getHtmlTemplate")
51
50
  ]);
52
51
  const { entrypoints } = await hookRunners.modifyEntrypoints({
53
52
  entrypoints: await getBundleEntry(hookRunners, appContext, resolvedConfig)
@@ -100,7 +99,10 @@ var analyze_default = ({ bundler }) => ({
100
99
  normalizedConfig,
101
100
  appContext
102
101
  });
103
- builder.onBeforeBuild(async ({ bundlerConfigs }) => {
102
+ builder.onBeforeBuild(async ({ bundlerConfigs, isFirstCompile }) => {
103
+ if (!isFirstCompile) {
104
+ return;
105
+ }
104
106
  const hookRunners2 = api.useHookRunners();
105
107
  await generateRoutes(appContext);
106
108
  await hookRunners2.beforeBuild({
@@ -2,12 +2,19 @@ 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 as defaultTraceFiles, findPackageParents, resolveTracedPath, readDirRecursive } from "./utils";
6
- const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage }) => {
5
+ import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles as defaultTraceFiles, findPackageParents, resolveTracedPath, readDirRecursive, isSubPath } from "./utils";
6
+ import { nodeFileTrace } from "@vercel/nft";
7
+ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage, traceOptions }) => {
7
8
  const base = "/";
8
9
  const entryFiles = await findEntryFiles(serverRootDir, entryFilter);
9
- const fileTrace = await traceFiles(entryFiles.concat(includeEntries), serverRootDir, base);
10
+ const fileTrace = await traceFiles({
11
+ entryFiles: entryFiles.concat(includeEntries),
12
+ serverRootDir,
13
+ base,
14
+ traceOptions
15
+ });
10
16
  const currentProjectModules = path.join(appDir, "node_modules");
17
+ const dependencySearchRoot = path.resolve(appDir, "../../../../../../");
11
18
  const tracedFiles = Object.fromEntries(await Promise.all([
12
19
  ...fileTrace.reasons.entries()
13
20
  ].map(async ([_path, reasons]) => {
@@ -15,7 +22,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
15
22
  return;
16
23
  }
17
24
  const filePath = await resolveTracedPath(base, _path);
18
- if (filePath.startsWith(serverRootDir) || filePath.startsWith(appDir) && !filePath.startsWith(currentProjectModules)) {
25
+ if (isSubPath(serverRootDir, filePath) || isSubPath(appDir, filePath) && !isSubPath(currentProjectModules, filePath)) {
19
26
  return;
20
27
  }
21
28
  if (!await isFile(filePath)) {
@@ -38,7 +45,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
38
45
  const packageJsonPath = match ? path.join(match[0], "package.json") : await pkgUp({
39
46
  cwd: path.dirname(filePath)
40
47
  });
41
- if (packageJsonPath) {
48
+ if (packageJsonPath && isSubPath(dependencySearchRoot, packageJsonPath)) {
42
49
  const packageJson = await fse.readJSON(packageJsonPath);
43
50
  pkgPath = baseDir = path.dirname(packageJsonPath);
44
51
  subpath = path.relative(baseDir, filePath);
@@ -55,7 +62,7 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
55
62
  path: filePath,
56
63
  parents,
57
64
  isDirectDep: parents.some((parent) => {
58
- return parent.startsWith(appDir) && !parent.startsWith(currentProjectModules);
65
+ return isSubPath(appDir, parent) && !isSubPath(currentProjectModules, parent);
59
66
  }),
60
67
  subpath,
61
68
  pkgName,
@@ -189,5 +196,6 @@ const handleDependencies = async ({ appDir, serverRootDir, includeEntries, trace
189
196
  await fse.writeJSON(outputPkgPath, finalPkgJson);
190
197
  };
191
198
  export {
192
- handleDependencies
199
+ handleDependencies,
200
+ nodeFileTrace
193
201
  };
@@ -98,17 +98,26 @@ const findPackageParents = (pkg, version, tracedFiles) => {
98
98
  ];
99
99
  return parentPkgs.filter((parentPkg) => parentPkg);
100
100
  };
101
- const traceFiles = async (entryFiles, serverRootDir, base = "/") => {
101
+ const traceFiles = async ({ entryFiles, serverRootDir, base = "/", traceOptions }) => {
102
102
  return await nodeFileTrace(entryFiles, {
103
103
  base,
104
- processCwd: serverRootDir
104
+ processCwd: serverRootDir,
105
+ ...traceOptions
105
106
  });
106
107
  };
107
108
  const resolveTracedPath = async (base, p) => fse.realpath(path.resolve(base, p));
109
+ const isSubPath = (parentPath, childPath) => {
110
+ if (!parentPath || !childPath) {
111
+ return false;
112
+ }
113
+ const relative = path.relative(parentPath, childPath);
114
+ return relative && !relative.startsWith("..");
115
+ };
108
116
  export {
109
117
  findEntryFiles,
110
118
  findPackageParents,
111
119
  isFile,
120
+ isSubPath,
112
121
  linkPackage,
113
122
  readDirRecursive,
114
123
  resolveTracedPath,
@@ -15,7 +15,7 @@ const createServer = async (options) => {
15
15
  if (server) {
16
16
  server.close();
17
17
  }
18
- server = await createDevServer(options, applyPlugins);
18
+ server = (await createDevServer(options, applyPlugins)).server;
19
19
  return server;
20
20
  };
21
21
  export {
@@ -1 +1 @@
1
- export declare function createBuilderGenerator(bundler: 'webpack' | 'rspack'): Promise<typeof import("./builder-rspack/index.js").createRspackBuilderForModern>;
1
+ export declare function createBuilderGenerator(bundler: 'webpack' | 'rspack'): Promise<typeof import("./builder-rspack").createRspackBuilderForModern>;
@@ -0,0 +1,2 @@
1
+ declare function _default(request: any, context: any): Promise<any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare function _exports(req: any, res: any): Promise<any>;
2
+ export = _exports;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.57.2-alpha.0",
18
+ "version": "2.58.0",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -87,33 +87,33 @@
87
87
  "mlly": "^1.6.1",
88
88
  "pkg-types": "^1.1.0",
89
89
  "std-env": "^3.7.0",
90
- "@modern-js/core": "2.57.1",
91
- "@modern-js/node-bundle-require": "2.57.1",
92
- "@modern-js/plugin-data-loader": "2.57.1",
93
- "@modern-js/plugin-i18n": "2.57.1",
94
- "@modern-js/plugin": "2.57.1",
95
- "@modern-js/rsbuild-plugin-esbuild": "2.57.1",
96
- "@modern-js/server": "2.57.1",
97
- "@modern-js/plugin-lint": "2.57.1",
98
- "@modern-js/server-core": "2.57.1",
99
- "@modern-js/server-utils": "2.57.1",
100
- "@modern-js/types": "2.57.1",
101
- "@modern-js/utils": "2.57.1",
102
- "@modern-js/prod-server": "2.57.1",
103
- "@modern-js/uni-builder": "2.57.1"
90
+ "@modern-js/core": "2.58.0",
91
+ "@modern-js/plugin-data-loader": "2.58.0",
92
+ "@modern-js/node-bundle-require": "2.58.0",
93
+ "@modern-js/plugin-lint": "2.58.0",
94
+ "@modern-js/rsbuild-plugin-esbuild": "2.58.0",
95
+ "@modern-js/plugin": "2.58.0",
96
+ "@modern-js/plugin-i18n": "2.58.0",
97
+ "@modern-js/prod-server": "2.58.0",
98
+ "@modern-js/server": "2.58.0",
99
+ "@modern-js/server-utils": "2.58.0",
100
+ "@modern-js/types": "2.58.0",
101
+ "@modern-js/uni-builder": "2.58.0",
102
+ "@modern-js/server-core": "2.58.0",
103
+ "@modern-js/utils": "2.58.0"
104
104
  },
105
105
  "devDependencies": {
106
106
  "@rsbuild/plugin-swc": "1.0.1-beta.9",
107
107
  "@types/babel__traverse": "7.18.5",
108
108
  "@types/jest": "^29",
109
- "@types/node": "^16",
109
+ "@types/node": "^14",
110
110
  "jest": "^29",
111
111
  "ts-node": "^10.9.1",
112
112
  "tsconfig-paths": "^4.2.0",
113
113
  "typescript": "^5",
114
114
  "webpack": "^5.93.0",
115
- "@scripts/jest-config": "2.57.1",
116
- "@scripts/build": "2.57.1"
115
+ "@scripts/jest-config": "2.58.0",
116
+ "@scripts/build": "2.58.0"
117
117
  },
118
118
  "sideEffects": false,
119
119
  "publishConfig": {
@@ -1,20 +0,0 @@
1
- import { pathToFileURL } from 'url';
2
- import { createMatchPath } from './utils.mjs';
3
-
4
- let matchPath;
5
- export async function initialize({ appDir, alias, tsconfigPath }) {
6
- matchPath = createMatchPath({
7
- alias,
8
- appDir,
9
- tsconfigPath,
10
- });
11
- }
12
-
13
- export function resolve(specifier, context, defaultResolve) {
14
- const match = matchPath(specifier);
15
- return match
16
- ? defaultResolve(pathToFileURL(match).href, context)
17
- : defaultResolve(specifier, context);
18
- }
19
-
20
- export { load } from 'esbuild-register/loader';
@@ -1,65 +0,0 @@
1
- import path from 'node:path';
2
- import { fs, readTsConfigByFile } from '@modern-js/utils';
3
-
4
- const checkDep = async dep => {
5
- try {
6
- await import(dep);
7
- return true;
8
- } catch (error) {
9
- return false;
10
- }
11
- };
12
-
13
- export const registerEsm = async ({ appDir, distDir, alias }) => {
14
- const nodeVersion = process.versions.node;
15
- const versionArr = nodeVersion.split('.').map(Number);
16
- if (versionArr[0] < 18 || (versionArr[0] === 18 && versionArr[1] < 19)) {
17
- throw new Error(
18
- `The node version of the esm project must be greater than 18.19.0, current version is ${nodeVersion}`,
19
- );
20
- }
21
- const hasTsNode = await checkDep('ts-node');
22
- const TS_CONFIG_FILENAME = `tsconfig.json`;
23
- const tsconfigPath = path.resolve(appDir, TS_CONFIG_FILENAME);
24
- const hasTsconfig = await fs.pathExists(tsconfigPath);
25
- const { register } = await import('node:module');
26
- if (hasTsNode && hasTsconfig) {
27
- // These can be overridden by ts-node options in tsconfig.json
28
- process.env.TS_NODE_TRANSPILE_ONLY = true;
29
- process.env.TS_NODE_PROJECT = tsconfigPath;
30
- process.env.TS_NODE_SCOPE = true;
31
- process.env.TS_NODE_FILES = true;
32
- process.env.TS_NODE_IGNORE = `(?:^|/)node_modules/,(?:^|/)${path.relative(
33
- appDir,
34
- distDir,
35
- )}/`;
36
- register('./ts-node-loader.mjs', import.meta.url, {
37
- data: {
38
- appDir,
39
- distDir,
40
- alias,
41
- tsconfigPath,
42
- },
43
- });
44
- } else {
45
- process.env.MODERN_NODE_LOADER = 'esbuild';
46
- let tsConfig = {};
47
- if (hasTsconfig) {
48
- tsConfig = readTsConfigByFile(tsconfigPath);
49
- }
50
- const esbuildRegister = await import('esbuild-register/dist/node');
51
- esbuildRegister.register({
52
- tsconfigRaw: hasTsconfig ? tsConfig : undefined,
53
- hookIgnoreNodeModules: true,
54
- hookMatcher: fileName => !fileName.startsWith(distDir),
55
- });
56
- register('./esbuild-loader.mjs', import.meta.url, {
57
- data: {
58
- appDir,
59
- distDir,
60
- alias,
61
- tsconfigPath,
62
- },
63
- });
64
- }
65
- };
@@ -1,21 +0,0 @@
1
- import { pathToFileURL } from 'url';
2
- import { resolve as tsNodeResolve } from 'ts-node/esm';
3
- import { createMatchPath } from './utils.mjs';
4
-
5
- let matchPath;
6
- export async function initialize({ appDir, alias, tsconfigPath }) {
7
- matchPath = createMatchPath({
8
- alias,
9
- appDir,
10
- tsconfigPath,
11
- });
12
- }
13
-
14
- export function resolve(specifier, context, defaultResolve) {
15
- const match = matchPath(specifier);
16
- return match
17
- ? tsNodeResolve(pathToFileURL(match).href, context, defaultResolve)
18
- : tsNodeResolve(specifier, context, defaultResolve);
19
- }
20
-
21
- export { transformSource, load } from 'ts-node/esm';
@@ -1,43 +0,0 @@
1
- import path from 'path';
2
- import { createRequire } from 'module';
3
- import tsConfigPaths from '@modern-js/utils/tsconfig-paths';
4
- import { getAliasConfig } from '@modern-js/utils';
5
-
6
- const require = createRequire(import.meta.url);
7
- export function createMatchPath({ alias, appDir, tsconfigPath }) {
8
- const aliasConfig = getAliasConfig(alias, {
9
- appDirectory: appDir,
10
- tsconfigPath,
11
- });
12
-
13
- const { paths = {}, absoluteBaseUrl = './' } = aliasConfig;
14
-
15
- const tsPaths = Object.keys(paths).reduce((o, key) => {
16
- let tsPath = paths[key];
17
- // Do some special handling for Modern.js's internal alias, we can drop it in the next version
18
- if (
19
- typeof tsPath === 'string' &&
20
- key.startsWith('@') &&
21
- tsPath.startsWith('@')
22
- ) {
23
- try {
24
- tsPath = require.resolve(tsPath, {
25
- paths: [appDir],
26
- });
27
- } catch {}
28
- }
29
-
30
- if (typeof tsPath === 'string' && path.isAbsolute(tsPath)) {
31
- tsPath = path.relative(absoluteBaseUrl, tsPath);
32
- }
33
- if (typeof tsPath === 'string') {
34
- tsPath = [tsPath];
35
- }
36
- return {
37
- ...o,
38
- [`${key}`]: tsPath,
39
- };
40
- }, {});
41
-
42
- return tsConfigPaths.createMatchPath(absoluteBaseUrl, tsPaths);
43
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- const { handler } = require("./netlify-handler");
3
- module.exports.default = handler;
@@ -1 +0,0 @@
1
- export { handler as default } from './netlify-handler.cjs';
@@ -1,3 +0,0 @@
1
- "use strict";
2
- const { handler } = require("./vercel-handler.cjs");
3
- module.exports = handler;
@@ -1,3 +0,0 @@
1
- import { handler } from './vercel-handler.cjs';
2
-
3
- export default handler;
@@ -1,41 +0,0 @@
1
- import { pathToFileURL } from 'url';
2
- import { resolve as tsNodeResolve } from 'ts-node/esm';
3
- import * as tsConfigPaths from 'tsconfig-paths';
4
- import fs from 'fs/promises'
5
- import { getAliasConfig } from '@modern-js/utils';
6
- import path from 'path'
7
-
8
-
9
- let matchPath;
10
- export function initialize({ appDir, alias }){
11
- const TS_CONFIG_FILENAME = `tsconfig.json`;
12
- const aliasConfig = getAliasConfig(alias, {
13
- appDirectory: appDir,
14
- tsconfigPath: path.resolve(appDir, TS_CONFIG_FILENAME),
15
- });
16
- const { paths = {}, absoluteBaseUrl = './' } = aliasConfig;
17
- const tsPaths = Object.keys(paths).reduce((o, key) => {
18
- let tsPath = paths[key];
19
- if (typeof tsPath === 'string' && path.isAbsolute(tsPath)) {
20
- tsPath = path.relative(absoluteBaseUrl, tsPath);
21
- }
22
- if (typeof tsPath === 'string') {
23
- tsPath = [tsPath];
24
- }
25
- return {
26
- ...o,
27
- [`${key}`]: tsPath,
28
- };
29
- }, {});
30
-
31
- matchPath = tsConfigPaths.createMatchPath(absoluteBaseUrl, tsPaths);
32
- }
33
-
34
- export function resolve(specifier, context, defaultResolve) {
35
- const match = matchPath(specifier);
36
- return match
37
- ? tsNodeResolve(pathToFileURL(match).href, context, defaultResolve)
38
- : tsNodeResolve(specifier, context, defaultResolve);
39
- }
40
-
41
- export { transformSource, load } from 'ts-node/esm';
@@ -1,22 +0,0 @@
1
- import { register } from 'node:module';
2
- import path from 'node:path';
3
-
4
- export const registerEsm = async ({
5
- appDir,
6
- distDir,
7
- alias
8
- }) => {
9
- // These can be overridden by ts-node options in tsconfig.json
10
- process.env.TS_NODE_TRANSPILE_ONLY = true;
11
- process.env.TS_NODE_PROJECT = path.join(appDir, 'tsconfig.json');
12
- process.env.TS_NODE_SCOPE = true;
13
- process.env.TS_NODE_FILES = true;
14
- process.env.TS_NODE_IGNORE = `(?:^|/)node_modules/,(?:^|/)${path.relative(appDir, distDir)}/`
15
- register('./custom-loader.mjs', import.meta.url, {
16
- data: {
17
- appDir,
18
- distDir,
19
- alias
20
- }
21
- });
22
- };
@@ -1,39 +0,0 @@
1
- import { pathToFileURL } from "url";
2
- import * as tsConfigPaths from "@modern-js/utils/tsconfig-paths";
3
- import { getAliasConfig } from "@modern-js/utils";
4
- import path from "path";
5
- let matchPath;
6
- function initialize({ appDir, alias }) {
7
- const TS_CONFIG_FILENAME = `tsconfig.json`;
8
- const aliasConfig = getAliasConfig(alias, {
9
- appDirectory: appDir,
10
- tsconfigPath: path.resolve(appDir, TS_CONFIG_FILENAME)
11
- });
12
- const { paths = {}, absoluteBaseUrl = "./" } = aliasConfig;
13
- const tsPaths = Object.keys(paths).reduce((o, key) => {
14
- let tsPath = paths[key];
15
- if (typeof tsPath === "string" && path.isAbsolute(tsPath)) {
16
- tsPath = path.relative(absoluteBaseUrl, tsPath);
17
- }
18
- if (typeof tsPath === "string") {
19
- tsPath = [
20
- tsPath
21
- ];
22
- }
23
- return {
24
- ...o,
25
- [`${key}`]: tsPath
26
- };
27
- }, {});
28
- matchPath = tsConfigPaths.createMatchPath(absoluteBaseUrl, tsPaths);
29
- }
30
- function resolve(specifier, context, defaultResolve) {
31
- const match = matchPath(specifier);
32
- return match ? defaultResolve(pathToFileURL(match).href, context) : defaultResolve(specifier, context);
33
- }
34
- import { load } from "esbuild-register/loader";
35
- export {
36
- initialize,
37
- load,
38
- resolve
39
- };