@modern-js/app-tools 3.1.0 → 3.1.2

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 (57) hide show
  1. package/dist/cjs/commands/build.js +3 -9
  2. package/dist/cjs/commands/dev.js +4 -9
  3. package/dist/cjs/esm/register-esm.js +16 -12
  4. package/dist/cjs/esm/register-esm.mjs +11 -10
  5. package/dist/cjs/esm/ts-paths-loader.js +95 -0
  6. package/dist/cjs/esm/ts-paths-loader.mjs +57 -0
  7. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.cjs +1 -1
  8. package/dist/cjs/plugins/deploy/utils/generator.js +4 -3
  9. package/dist/cjs/utils/register.js +48 -17
  10. package/dist/esm/builder/generator/createCopyPattern.mjs +1 -1
  11. package/dist/esm/builder/index.mjs +3 -3
  12. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +2 -2
  13. package/dist/esm/builder/shared/loaders/serverModuleLoader.mjs +1 -1
  14. package/dist/esm/commands/build.mjs +3 -9
  15. package/dist/esm/commands/dev.mjs +4 -9
  16. package/dist/esm/esm/register-esm.mjs +12 -11
  17. package/dist/esm/esm/ts-paths-loader.mjs +58 -0
  18. package/dist/esm/index.mjs +7 -6
  19. package/dist/esm/plugins/analyze/getHtmlTemplate.mjs +2 -2
  20. package/dist/esm/plugins/analyze/index.mjs +5 -5
  21. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +2 -2
  22. package/dist/esm/plugins/deploy/index.mjs +1 -1
  23. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.cjs +1 -1
  24. package/dist/esm/plugins/deploy/utils/generator.mjs +4 -3
  25. package/dist/esm/plugins/initialize/index.mjs +1 -1
  26. package/dist/esm/plugins/serverBuild.mjs +1 -1
  27. package/dist/esm/plugins/serverRuntime.mjs +1 -1
  28. package/dist/esm/utils/config.mjs +2 -2
  29. package/dist/esm/utils/register.mjs +45 -17
  30. package/dist/esm-node/builder/generator/createCopyPattern.mjs +1 -1
  31. package/dist/esm-node/builder/index.mjs +3 -3
  32. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.mjs +2 -2
  33. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +2 -2
  34. package/dist/esm-node/builder/shared/loaders/serverModuleLoader.mjs +1 -1
  35. package/dist/esm-node/commands/build.mjs +3 -9
  36. package/dist/esm-node/commands/dev.mjs +4 -9
  37. package/dist/esm-node/esm/register-esm.mjs +12 -11
  38. package/dist/esm-node/esm/ts-paths-loader.mjs +59 -0
  39. package/dist/esm-node/index.mjs +7 -6
  40. package/dist/esm-node/plugins/analyze/getHtmlTemplate.mjs +2 -2
  41. package/dist/esm-node/plugins/analyze/index.mjs +4 -4
  42. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +2 -2
  43. package/dist/esm-node/plugins/deploy/index.mjs +1 -1
  44. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.cjs +1 -1
  45. package/dist/esm-node/plugins/deploy/utils/generator.mjs +4 -3
  46. package/dist/esm-node/plugins/deploy/utils/index.mjs +2 -2
  47. package/dist/esm-node/plugins/initialize/index.mjs +1 -1
  48. package/dist/esm-node/plugins/serverBuild.mjs +1 -1
  49. package/dist/esm-node/plugins/serverRuntime.mjs +1 -1
  50. package/dist/esm-node/utils/config.mjs +2 -2
  51. package/dist/esm-node/utils/register.mjs +45 -17
  52. package/dist/types/esm/register-esm.d.mts +5 -0
  53. package/dist/types/esm/ts-paths-loader.d.mts +6 -0
  54. package/dist/types/plugins/deploy/platforms/templates/netlify-entry.d.cts +2 -1
  55. package/dist/types/utils/register.d.ts +8 -1
  56. package/package.json +15 -15
  57. package/{rstest.config.ts → rstest.config.mts} +0 -4
@@ -2,12 +2,22 @@ import __rslib_shim_module__ from "node:module";
2
2
  const require = /*#__PURE__*/ __rslib_shim_module__.createRequire(/*#__PURE__*/ (()=>import.meta.url)());
3
3
  import node_path from "node:path";
4
4
  import { fs, getAliasConfig, isDepExists, loadFromProject, readTsConfigByFile } from "@modern-js/utils";
5
- const setupTsRuntime = async (appDir, distDir, alias)=>{
5
+ const resolveTsRuntimeRegisterMode = (hasTsNode)=>{
6
+ const hasNativeTypeScriptSupport = process.features?.typescript;
7
+ const nodeMajorVersion = Number(process.versions.node.split('.')[0]);
8
+ const supportsNativeTypeScript = void 0 === hasNativeTypeScriptSupport ? nodeMajorVersion >= 22 : false !== hasNativeTypeScriptSupport;
9
+ if (supportsNativeTypeScript) return 'node-loader';
10
+ if (hasTsNode) return 'ts-node';
11
+ return 'unsupported';
12
+ };
13
+ const setupTsRuntime = async (appDir, distDir, alias, options = {})=>{
6
14
  const TS_CONFIG_FILENAME = "tsconfig.json";
7
15
  const tsconfigPath = node_path.resolve(appDir, TS_CONFIG_FILENAME);
8
16
  const isTsProject = await fs.pathExists(tsconfigPath);
9
17
  const hasTsNode = isDepExists(appDir, 'ts-node');
10
- if (!isTsProject || !hasTsNode) return;
18
+ if (!isTsProject) return;
19
+ const preferredRegisterMode = resolveTsRuntimeRegisterMode(hasTsNode);
20
+ const registerMode = options.preferTsNodeForServerRuntime && hasTsNode ? 'ts-node' : preferredRegisterMode;
11
21
  const aliasConfig = getAliasConfig(alias, {
12
22
  appDirectory: appDir,
13
23
  tsconfigPath
@@ -32,24 +42,42 @@ const setupTsRuntime = async (appDir, distDir, alias)=>{
32
42
  [`${key}`]: tsPath
33
43
  };
34
44
  }, {});
35
- const tsConfig = readTsConfigByFile(tsconfigPath);
36
- const tsNode = await loadFromProject('ts-node', appDir);
37
- const tsNodeOptions = tsConfig['ts-node'];
38
- tsNode.register({
39
- project: tsconfigPath,
40
- scope: true,
41
- files: true,
42
- transpileOnly: true,
43
- ignore: [
44
- '(?:^|/)node_modules/',
45
- `(?:^|/)${node_path.relative(appDir, distDir)}/`
46
- ],
47
- ...tsNodeOptions
48
- });
45
+ if ('unsupported' === registerMode) return;
46
+ if ('ts-node' === registerMode) {
47
+ if ('module' === options.moduleType) {
48
+ const { registerModuleHooks } = await import("../esm/register-esm.mjs");
49
+ await registerModuleHooks({
50
+ appDir,
51
+ distDir,
52
+ alias: alias || {}
53
+ });
54
+ }
55
+ const tsConfig = readTsConfigByFile(tsconfigPath);
56
+ const tsNode = await loadFromProject('ts-node', appDir);
57
+ const tsNodeOptions = tsConfig['ts-node'];
58
+ tsNode.register({
59
+ project: tsconfigPath,
60
+ scope: true,
61
+ files: true,
62
+ transpileOnly: true,
63
+ ignore: [
64
+ '(?:^|/)node_modules/',
65
+ `(?:^|/)${node_path.relative(appDir, distDir)}/`
66
+ ],
67
+ ...tsNodeOptions
68
+ });
69
+ } else if ('node-loader' === registerMode) {
70
+ const { registerPathsLoader } = await import("../esm/register-esm.mjs");
71
+ await registerPathsLoader({
72
+ appDir,
73
+ baseUrl: absoluteBaseUrl || './',
74
+ paths: tsPaths
75
+ });
76
+ }
49
77
  const { register } = await import("@modern-js/utils/tsconfig-paths");
50
78
  register({
51
79
  baseUrl: absoluteBaseUrl || './',
52
80
  paths: tsPaths
53
81
  });
54
82
  };
55
- export { setupTsRuntime };
83
+ export { resolveTsRuntimeRegisterMode, setupTsRuntime };
@@ -3,3 +3,8 @@ export function registerModuleHooks({ appDir, distDir, alias }: {
3
3
  distDir: any;
4
4
  alias: any;
5
5
  }): Promise<void>;
6
+ export function registerPathsLoader({ appDir, baseUrl, paths }: {
7
+ appDir: any;
8
+ baseUrl: any;
9
+ paths: any;
10
+ }): Promise<void>;
@@ -0,0 +1,6 @@
1
+ export function initialize({ appDir: currentAppDir, baseUrl, paths }: {
2
+ appDir: any;
3
+ baseUrl: any;
4
+ paths: any;
5
+ }): Promise<void>;
6
+ export function resolve(specifier: any, context: any, defaultResolve: any): any;
@@ -1 +1,2 @@
1
- export function handler(request: any, context: any): Promise<any>;
1
+ export default handler;
2
+ declare function handler(request: any, context: any): Promise<any>;
@@ -1,7 +1,14 @@
1
1
  import { type Alias } from '@modern-js/utils';
2
2
  import type { ConfigChain } from '@rsbuild/core';
3
+ type TsRuntimeRegisterMode = 'ts-node' | 'node-loader' | 'unsupported';
4
+ interface TsRuntimeSetupOptions {
5
+ moduleType?: string;
6
+ preferTsNodeForServerRuntime?: boolean;
7
+ }
8
+ export declare const resolveTsRuntimeRegisterMode: (hasTsNode: boolean) => TsRuntimeRegisterMode;
3
9
  /**
4
10
  * Setup TypeScript runtime support.
5
11
  * Register ts-node for compilation and tsconfig-paths for path alias resolution.
6
12
  */
7
- export declare const setupTsRuntime: (appDir: string, distDir: string, alias?: ConfigChain<Alias>) => Promise<void>;
13
+ export declare const setupTsRuntime: (appDir: string, distDir: string, alias?: ConfigChain<Alias>, options?: TsRuntimeSetupOptions) => Promise<void>;
14
+ export {};
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "3.1.0",
18
+ "version": "3.1.2",
19
19
  "types": "./dist/types/index.d.ts",
20
20
  "main": "./dist/cjs/index.js",
21
21
  "exports": {
@@ -80,33 +80,33 @@
80
80
  "modern-app": "./bin/modern.js"
81
81
  },
82
82
  "dependencies": {
83
- "@babel/parser": "^7.29.0",
83
+ "@babel/parser": "^7.29.2",
84
84
  "@babel/traverse": "^7.29.0",
85
85
  "@babel/types": "^7.29.0",
86
- "@rsbuild/core": "2.0.0-beta.4",
86
+ "@rsbuild/core": "2.0.0-rc.0",
87
87
  "@swc/helpers": "^0.5.17",
88
88
  "es-module-lexer": "^1.7.0",
89
89
  "esbuild": "0.25.5",
90
90
  "esbuild-register": "^3.6.0",
91
91
  "import-meta-resolve": "^4.2.0",
92
- "flatted": "^3.4.0",
92
+ "flatted": "^3.4.2",
93
93
  "mlly": "^1.8.0",
94
94
  "ndepe": "^0.1.13",
95
95
  "pkg-types": "^1.3.1",
96
96
  "std-env": "^3.10.0",
97
- "@modern-js/builder": "3.1.0",
98
- "@modern-js/i18n-utils": "3.1.0",
99
- "@modern-js/plugin": "3.1.0",
100
- "@modern-js/plugin-data-loader": "3.1.0",
101
- "@modern-js/prod-server": "3.1.0",
102
- "@modern-js/server": "3.1.0",
103
- "@modern-js/server-utils": "3.1.0",
104
- "@modern-js/server-core": "3.1.0",
105
- "@modern-js/types": "3.1.0",
106
- "@modern-js/utils": "3.1.0"
97
+ "@modern-js/builder": "3.1.2",
98
+ "@modern-js/i18n-utils": "3.1.2",
99
+ "@modern-js/plugin": "3.1.2",
100
+ "@modern-js/plugin-data-loader": "3.1.2",
101
+ "@modern-js/prod-server": "3.1.2",
102
+ "@modern-js/server": "3.1.2",
103
+ "@modern-js/server-core": "3.1.2",
104
+ "@modern-js/types": "3.1.2",
105
+ "@modern-js/utils": "3.1.2",
106
+ "@modern-js/server-utils": "3.1.2"
107
107
  },
108
108
  "devDependencies": {
109
- "@rslib/core": "0.19.6",
109
+ "@rslib/core": "0.20.3",
110
110
  "@types/babel__traverse": "7.28.0",
111
111
  "@types/node": "^20",
112
112
  "ts-node": "^10.9.2",
@@ -7,10 +7,6 @@ export default withTestPreset({
7
7
  globals: true,
8
8
  tools: {
9
9
  rspack: {
10
- optimization: {
11
- // Disable tree shaking to avoid issues with rstest mocking '@modern-js/utils'.
12
- providedExports: false,
13
- },
14
10
  module: {
15
11
  parser: {
16
12
  javascript: {