@modern-js/app-tools 2.48.6 → 2.49.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,20 +3,19 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
3
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
4
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
5
  import { logger, isApiOnly, getTargetDir } from "@modern-js/utils";
6
- import server from "@modern-js/prod-server";
6
+ import { createProdServer } from "@modern-js/prod-server";
7
7
  import { printInstructions } from "../utils/printInstructions";
8
- import { injectDataLoaderPlugin } from "../utils/createServer";
9
8
  import { getServerInternalPlugins } from "../utils/getServerInternalPlugins";
10
9
  var start = function() {
11
10
  var _ref = _async_to_generator(function(api) {
12
- var _userConfig_source, _userConfig_output_distPath, appContext, userConfig, hookRunners, appDirectory, port, serverConfigFile, metaName, apiOnly, serverInternalPlugins, app;
11
+ var _userConfig_source, _userConfig_output_distPath, appContext, userConfig, hookRunners, distDirectory, appDirectory, port, serverConfigFile, metaName, serverRoutes, apiOnly, runMode, serverInternalPlugins, app;
13
12
  return _ts_generator(this, function(_state) {
14
13
  switch (_state.label) {
15
14
  case 0:
16
15
  appContext = api.useAppContext();
17
16
  userConfig = api.useResolvedConfigContext();
18
17
  hookRunners = api.useHookRunners();
19
- appDirectory = appContext.appDirectory, port = appContext.port, serverConfigFile = appContext.serverConfigFile, metaName = appContext.metaName;
18
+ distDirectory = appContext.distDirectory, appDirectory = appContext.appDirectory, port = appContext.port, serverConfigFile = appContext.serverConfigFile, metaName = appContext.metaName, serverRoutes = appContext.serverRoutes;
20
19
  logger.info("Starting production server...");
21
20
  return [
22
21
  4,
@@ -24,6 +23,9 @@ var start = function() {
24
23
  ];
25
24
  case 1:
26
25
  apiOnly = _state.sent();
26
+ if (apiOnly) {
27
+ runMode = "apiOnly";
28
+ }
27
29
  return [
28
30
  4,
29
31
  getServerInternalPlugins(api)
@@ -32,51 +34,45 @@ var start = function() {
32
34
  serverInternalPlugins = _state.sent();
33
35
  return [
34
36
  4,
35
- server({
36
- pwd: appDirectory,
37
+ createProdServer({
38
+ metaName,
39
+ pwd: distDirectory,
37
40
  config: _object_spread_props(_object_spread({}, userConfig), {
38
41
  dev: userConfig.dev,
39
42
  output: _object_spread({
40
43
  path: (_userConfig_output_distPath = userConfig.output.distPath) === null || _userConfig_output_distPath === void 0 ? void 0 : _userConfig_output_distPath.root
41
44
  }, userConfig.output || {})
42
45
  }),
46
+ routes: serverRoutes,
43
47
  appContext: {
44
- metaName,
48
+ appDirectory,
45
49
  sharedDirectory: getTargetDir(appContext.sharedDirectory, appContext.appDirectory, appContext.distDirectory),
46
50
  apiDirectory: getTargetDir(appContext.apiDirectory, appContext.appDirectory, appContext.distDirectory),
47
51
  lambdaDirectory: getTargetDir(appContext.lambdaDirectory, appContext.appDirectory, appContext.distDirectory)
48
52
  },
49
53
  serverConfigFile,
50
- internalPlugins: injectDataLoaderPlugin(serverInternalPlugins),
51
- apiOnly
54
+ internalPlugins: serverInternalPlugins,
55
+ runMode
52
56
  })
53
57
  ];
54
58
  case 3:
55
59
  app = _state.sent();
56
- app.listen(port, function() {
57
- var _ref2 = _async_to_generator(function(err) {
58
- return _ts_generator(this, function(_state2) {
59
- switch (_state2.label) {
60
- case 0:
61
- if (err) {
62
- throw err;
63
- }
64
- return [
65
- 4,
66
- printInstructions(hookRunners, appContext, userConfig)
67
- ];
68
- case 1:
69
- _state2.sent();
70
- return [
71
- 2
72
- ];
73
- }
74
- });
60
+ app.listen(port, /* @__PURE__ */ _async_to_generator(function() {
61
+ return _ts_generator(this, function(_state2) {
62
+ switch (_state2.label) {
63
+ case 0:
64
+ return [
65
+ 4,
66
+ printInstructions(hookRunners, appContext, userConfig)
67
+ ];
68
+ case 1:
69
+ _state2.sent();
70
+ return [
71
+ 2
72
+ ];
73
+ }
75
74
  });
76
- return function(err) {
77
- return _ref2.apply(this, arguments);
78
- };
79
- }());
75
+ }));
80
76
  return [
81
77
  2
82
78
  ];
@@ -1,8 +1,7 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
- import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
- import { Server } from "@modern-js/server";
3
+ import { createDevServer } from "@modern-js/server";
4
+ import { initProdMiddlewares } from "@modern-js/prod-server";
6
5
  var server = null;
7
6
  var getServer = function() {
8
7
  return server;
@@ -13,26 +12,13 @@ var setServer = function(newServer) {
13
12
  var closeServer = function() {
14
13
  var _ref = _async_to_generator(function() {
15
14
  return _ts_generator(this, function(_state) {
16
- switch (_state.label) {
17
- case 0:
18
- if (!server)
19
- return [
20
- 3,
21
- 2
22
- ];
23
- return [
24
- 4,
25
- server.close()
26
- ];
27
- case 1:
28
- _state.sent();
29
- server = null;
30
- _state.label = 2;
31
- case 2:
32
- return [
33
- 2
34
- ];
15
+ if (server) {
16
+ server.close();
17
+ server = null;
35
18
  }
19
+ return [
20
+ 2
21
+ ];
36
22
  });
37
23
  });
38
24
  return function closeServer2() {
@@ -41,33 +27,21 @@ var closeServer = function() {
41
27
  }();
42
28
  var createServer = function() {
43
29
  var _ref = _async_to_generator(function(options) {
44
- var app;
45
30
  return _ts_generator(this, function(_state) {
46
31
  switch (_state.label) {
47
32
  case 0:
48
- if (!server)
49
- return [
50
- 3,
51
- 2
52
- ];
33
+ if (server) {
34
+ server.close();
35
+ }
53
36
  return [
54
37
  4,
55
- server.close()
38
+ createDevServer(options, initProdMiddlewares)
56
39
  ];
57
40
  case 1:
58
- _state.sent();
59
- _state.label = 2;
60
- case 2:
61
- server = new Server(options);
62
- return [
63
- 4,
64
- server.init()
65
- ];
66
- case 3:
67
- app = _state.sent();
41
+ server = _state.sent();
68
42
  return [
69
43
  2,
70
- app
44
+ server
71
45
  ];
72
46
  }
73
47
  });
@@ -76,19 +50,9 @@ var createServer = function() {
76
50
  return _ref.apply(this, arguments);
77
51
  };
78
52
  }();
79
- var injectDataLoaderPlugin = function(internalPlugins) {
80
- var DataLoaderPlugin = require.resolve("@modern-js/plugin-data-loader/server");
81
- return _object_spread_props(_object_spread({}, internalPlugins), {
82
- "@modern-js/plugin-data-loader": {
83
- path: DataLoaderPlugin,
84
- forced: true
85
- }
86
- });
87
- };
88
53
  export {
89
54
  closeServer,
90
55
  createServer,
91
56
  getServer,
92
- injectDataLoaderPlugin,
93
57
  setServer
94
58
  };
@@ -1,4 +1,4 @@
1
- import { cutNameByHyphen } from "@modern-js/utils";
1
+ import { cutNameByHyphen } from "@modern-js/utils/universal";
2
2
  function getAutoInjectEnv(appContext) {
3
3
  var metaName = appContext.metaName;
4
4
  var prefix = "".concat(cutNameByHyphen(metaName), "_").toUpperCase();
@@ -0,0 +1,129 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _define_property } from "@swc/helpers/_/_define_property";
3
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
4
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
5
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
6
+ import path from "node:path";
7
+ import { fs, getAliasConfig, readTsConfigByFile } from "@modern-js/utils";
8
+ var registerCompiler = function() {
9
+ var _ref = _async_to_generator(function() {
10
+ var appDir, distDir, alias, TS_CONFIG_FILENAME, tsconfigPath, isTsProject, aliasConfig, _aliasConfig_paths, paths, _aliasConfig_absoluteBaseUrl, absoluteBaseUrl, tsPaths, tsConfig, tsNode, tsNodeOptions, error, esbuildRegister, tsConfigPaths, loaderRes;
11
+ var _arguments = arguments;
12
+ return _ts_generator(this, function(_state) {
13
+ switch (_state.label) {
14
+ case 0:
15
+ appDir = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : process.cwd(), distDir = _arguments.length > 1 ? _arguments[1] : void 0, alias = _arguments.length > 2 ? _arguments[2] : void 0;
16
+ TS_CONFIG_FILENAME = "tsconfig.json";
17
+ tsconfigPath = path.resolve(appDir, TS_CONFIG_FILENAME);
18
+ return [
19
+ 4,
20
+ fs.pathExists(tsconfigPath)
21
+ ];
22
+ case 1:
23
+ isTsProject = _state.sent();
24
+ aliasConfig = getAliasConfig(alias, {
25
+ appDirectory: appDir,
26
+ tsconfigPath
27
+ });
28
+ _aliasConfig_paths = aliasConfig.paths, paths = _aliasConfig_paths === void 0 ? {} : _aliasConfig_paths, _aliasConfig_absoluteBaseUrl = aliasConfig.absoluteBaseUrl, absoluteBaseUrl = _aliasConfig_absoluteBaseUrl === void 0 ? "./" : _aliasConfig_absoluteBaseUrl;
29
+ tsPaths = Object.keys(paths).reduce(function(o, key) {
30
+ var tsPath = paths[key];
31
+ if (typeof tsPath === "string" && path.isAbsolute(tsPath)) {
32
+ tsPath = path.relative(absoluteBaseUrl, tsPath);
33
+ }
34
+ if (typeof tsPath === "string") {
35
+ tsPath = [
36
+ tsPath
37
+ ];
38
+ }
39
+ return _object_spread_props(_object_spread({}, o), _define_property({}, "".concat(key), tsPath));
40
+ }, {});
41
+ tsConfig = {};
42
+ if (isTsProject) {
43
+ tsConfig = readTsConfigByFile(tsconfigPath);
44
+ }
45
+ _state.label = 2;
46
+ case 2:
47
+ _state.trys.push([
48
+ 2,
49
+ 4,
50
+ ,
51
+ 6
52
+ ]);
53
+ return [
54
+ 4,
55
+ import("ts-node")
56
+ ];
57
+ case 3:
58
+ tsNode = _state.sent();
59
+ tsNodeOptions = tsConfig["ts-node"];
60
+ if (isTsProject) {
61
+ tsNode.register(_object_spread({
62
+ project: tsconfigPath,
63
+ scope: true,
64
+ // for env.d.ts, https://www.npmjs.com/package/ts-node#missing-types
65
+ files: true,
66
+ transpileOnly: true,
67
+ ignore: [
68
+ "(?:^|/)node_modules/",
69
+ "(?:^|/)".concat(distDir, "/")
70
+ ]
71
+ }, tsNodeOptions));
72
+ }
73
+ return [
74
+ 3,
75
+ 6
76
+ ];
77
+ case 4:
78
+ error = _state.sent();
79
+ return [
80
+ 4,
81
+ import("esbuild-register/dist/node")
82
+ ];
83
+ case 5:
84
+ esbuildRegister = _state.sent();
85
+ esbuildRegister.register({
86
+ tsconfigRaw: isTsProject ? tsConfig : void 0,
87
+ hookIgnoreNodeModules: true,
88
+ hookMatcher: function(fileName) {
89
+ return !fileName.startsWith(distDir);
90
+ }
91
+ });
92
+ return [
93
+ 3,
94
+ 6
95
+ ];
96
+ case 6:
97
+ return [
98
+ 4,
99
+ import("@modern-js/utils/tsconfig-paths")
100
+ ];
101
+ case 7:
102
+ tsConfigPaths = _state.sent();
103
+ return [
104
+ 4,
105
+ fs.pathExists(appDir)
106
+ ];
107
+ case 8:
108
+ if (_state.sent()) {
109
+ loaderRes = tsConfigPaths.loadConfig(appDir);
110
+ if (loaderRes.resultType === "success") {
111
+ tsConfigPaths.register({
112
+ baseUrl: absoluteBaseUrl || "./",
113
+ paths: tsPaths
114
+ });
115
+ }
116
+ }
117
+ return [
118
+ 2
119
+ ];
120
+ }
121
+ });
122
+ });
123
+ return function registerCompiler2() {
124
+ return _ref.apply(this, arguments);
125
+ };
126
+ }();
127
+ export {
128
+ registerCompiler
129
+ };
@@ -2,13 +2,16 @@ import { ResolvedConfigContext } from "@modern-js/core";
2
2
  import { logger } from "@modern-js/utils";
3
3
  import { generateRoutes } from "../utils/routes";
4
4
  import { buildServerConfig } from "../utils/config";
5
+ import { registerCompiler } from "../utils/register";
5
6
  const build = async (api, options) => {
7
+ var _resolvedConfig_source;
6
8
  if (options === null || options === void 0 ? void 0 : options.analyze) {
7
9
  process.env.BUNDLE_ANALYZE = "true";
8
10
  }
9
11
  let resolvedConfig = api.useResolvedConfigContext();
10
12
  const appContext = api.useAppContext();
11
13
  const hookRunners = api.useHookRunners();
14
+ await registerCompiler(appContext.appDirectory, appContext.distDirectory, resolvedConfig === null || resolvedConfig === void 0 ? void 0 : (_resolvedConfig_source = resolvedConfig.source) === null || _resolvedConfig_source === void 0 ? void 0 : _resolvedConfig_source.alias);
12
15
  const { apiOnly } = appContext;
13
16
  if (apiOnly) {
14
17
  const { appDirectory: appDirectory2, distDirectory: distDirectory2, serverConfigFile: serverConfigFile2 } = appContext;
@@ -1,24 +1,28 @@
1
1
  import { ResolvedConfigContext } from "@modern-js/core";
2
2
  import { DEFAULT_DEV_HOST } from "@modern-js/utils";
3
+ import { createDevServer } from "@modern-js/server";
4
+ import { initProdMiddlewares } from "@modern-js/prod-server";
5
+ import { registerCompiler } from "../utils/register";
3
6
  import { printInstructions } from "../utils/printInstructions";
4
- import { setServer, createServer, injectDataLoaderPlugin } from "../utils/createServer";
7
+ import { setServer } from "../utils/createServer";
5
8
  import { generateRoutes } from "../utils/routes";
6
9
  import { buildServerConfig } from "../utils/config";
7
10
  import { getServerInternalPlugins } from "../utils/getServerInternalPlugins";
8
11
  const dev = async (api, options, devServerOptions = {}) => {
9
- var _normalizedConfig_tools;
12
+ var _normalizedConfig_source, _normalizedConfig_tools;
10
13
  if (options.analyze) {
11
14
  process.env.BUNDLE_ANALYZE = "true";
12
15
  }
13
16
  let normalizedConfig = api.useResolvedConfigContext();
14
17
  const appContext = api.useAppContext();
15
18
  const hookRunners = api.useHookRunners();
19
+ 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);
16
20
  normalizedConfig = {
17
21
  ...normalizedConfig,
18
22
  cliOptions: options
19
23
  };
20
24
  ResolvedConfigContext.set(normalizedConfig);
21
- const { appDirectory, distDirectory, port, apiOnly, serverConfigFile, metaName } = appContext;
25
+ const { appDirectory, distDirectory, port, apiOnly, serverConfigFile, metaName, serverRoutes } = appContext;
22
26
  await buildServerConfig({
23
27
  appDirectory,
24
28
  distDirectory,
@@ -32,6 +36,7 @@ const dev = async (api, options, devServerOptions = {}) => {
32
36
  await generateRoutes(appContext);
33
37
  const serverInternalPlugins = await getServerInternalPlugins(api);
34
38
  const serverOptions = {
39
+ metaName,
35
40
  dev: {
36
41
  port,
37
42
  https: normalizedConfig.dev.https,
@@ -39,37 +44,32 @@ const dev = async (api, options, devServerOptions = {}) => {
39
44
  ...(_normalizedConfig_tools = normalizedConfig.tools) === null || _normalizedConfig_tools === void 0 ? void 0 : _normalizedConfig_tools.devServer
40
45
  },
41
46
  appContext: {
42
- metaName,
43
- appDirectory: appContext.appDirectory,
44
- sharedDirectory: appContext.sharedDirectory,
47
+ appDirectory,
45
48
  apiDirectory: appContext.apiDirectory,
46
- lambdaDirectory: appContext.lambdaDirectory
49
+ lambdaDirectory: appContext.lambdaDirectory,
50
+ sharedDirectory: appContext.sharedDirectory
47
51
  },
52
+ routes: serverRoutes,
48
53
  pwd: appDirectory,
49
54
  config: normalizedConfig,
50
55
  serverConfigFile,
51
- internalPlugins: injectDataLoaderPlugin(serverInternalPlugins),
56
+ internalPlugins: serverInternalPlugins,
52
57
  ...devServerOptions
53
58
  };
54
59
  if (apiOnly) {
55
60
  var _normalizedConfig_dev;
56
- const app = await createServer({
57
- ...serverOptions,
58
- compiler: null
59
- });
61
+ const app = await createDevServer(serverOptions, initProdMiddlewares);
60
62
  const host = ((_normalizedConfig_dev = normalizedConfig.dev) === null || _normalizedConfig_dev === void 0 ? void 0 : _normalizedConfig_dev.host) || DEFAULT_DEV_HOST;
61
63
  app.listen({
62
64
  port,
63
65
  host
64
- }, async (err) => {
65
- if (err) {
66
- throw err;
67
- }
66
+ }, () => {
68
67
  printInstructions(hookRunners, appContext, normalizedConfig);
69
68
  });
70
69
  } else {
71
70
  const { server } = await appContext.builder.startDevServer({
72
- serverOptions
71
+ serverOptions,
72
+ initProdMiddlewares
73
73
  });
74
74
  setServer(server);
75
75
  }
@@ -1,19 +1,23 @@
1
1
  import { logger, isApiOnly, getTargetDir } from "@modern-js/utils";
2
- import server from "@modern-js/prod-server";
2
+ import { createProdServer } from "@modern-js/prod-server";
3
3
  import { printInstructions } from "../utils/printInstructions";
4
- import { injectDataLoaderPlugin } from "../utils/createServer";
5
4
  import { getServerInternalPlugins } from "../utils/getServerInternalPlugins";
6
5
  const start = async (api) => {
7
6
  var _userConfig_source, _userConfig_output_distPath;
8
7
  const appContext = api.useAppContext();
9
8
  const userConfig = api.useResolvedConfigContext();
10
9
  const hookRunners = api.useHookRunners();
11
- const { appDirectory, port, serverConfigFile, metaName } = appContext;
10
+ const { distDirectory, appDirectory, port, serverConfigFile, metaName, serverRoutes } = appContext;
12
11
  logger.info(`Starting production server...`);
13
12
  const apiOnly = await isApiOnly(appContext.appDirectory, userConfig === null || userConfig === void 0 ? void 0 : (_userConfig_source = userConfig.source) === null || _userConfig_source === void 0 ? void 0 : _userConfig_source.entriesDir, appContext.apiDirectory);
13
+ let runMode;
14
+ if (apiOnly) {
15
+ runMode = "apiOnly";
16
+ }
14
17
  const serverInternalPlugins = await getServerInternalPlugins(api);
15
- const app = await server({
16
- pwd: appDirectory,
18
+ const app = await createProdServer({
19
+ metaName,
20
+ pwd: distDirectory,
17
21
  config: {
18
22
  ...userConfig,
19
23
  dev: userConfig.dev,
@@ -22,20 +26,18 @@ const start = async (api) => {
22
26
  ...userConfig.output || {}
23
27
  }
24
28
  },
29
+ routes: serverRoutes,
25
30
  appContext: {
26
- metaName,
31
+ appDirectory,
27
32
  sharedDirectory: getTargetDir(appContext.sharedDirectory, appContext.appDirectory, appContext.distDirectory),
28
33
  apiDirectory: getTargetDir(appContext.apiDirectory, appContext.appDirectory, appContext.distDirectory),
29
34
  lambdaDirectory: getTargetDir(appContext.lambdaDirectory, appContext.appDirectory, appContext.distDirectory)
30
35
  },
31
36
  serverConfigFile,
32
- internalPlugins: injectDataLoaderPlugin(serverInternalPlugins),
33
- apiOnly
37
+ internalPlugins: serverInternalPlugins,
38
+ runMode
34
39
  });
35
- app.listen(port, async (err) => {
36
- if (err) {
37
- throw err;
38
- }
40
+ app.listen(port, async () => {
39
41
  await printInstructions(hookRunners, appContext, userConfig);
40
42
  });
41
43
  };
@@ -1,4 +1,5 @@
1
- import { Server } from "@modern-js/server";
1
+ import { createDevServer } from "@modern-js/server";
2
+ import { initProdMiddlewares } from "@modern-js/prod-server";
2
3
  let server = null;
3
4
  const getServer = () => server;
4
5
  const setServer = (newServer) => {
@@ -6,32 +7,20 @@ const setServer = (newServer) => {
6
7
  };
7
8
  const closeServer = async () => {
8
9
  if (server) {
9
- await server.close();
10
+ server.close();
10
11
  server = null;
11
12
  }
12
13
  };
13
14
  const createServer = async (options) => {
14
15
  if (server) {
15
- await server.close();
16
+ server.close();
16
17
  }
17
- server = new Server(options);
18
- const app = await server.init();
19
- return app;
20
- };
21
- const injectDataLoaderPlugin = (internalPlugins) => {
22
- const DataLoaderPlugin = require.resolve("@modern-js/plugin-data-loader/server");
23
- return {
24
- ...internalPlugins,
25
- "@modern-js/plugin-data-loader": {
26
- path: DataLoaderPlugin,
27
- forced: true
28
- }
29
- };
18
+ server = await createDevServer(options, initProdMiddlewares);
19
+ return server;
30
20
  };
31
21
  export {
32
22
  closeServer,
33
23
  createServer,
34
24
  getServer,
35
- injectDataLoaderPlugin,
36
25
  setServer
37
26
  };
@@ -1,4 +1,4 @@
1
- import { cutNameByHyphen } from "@modern-js/utils";
1
+ import { cutNameByHyphen } from "@modern-js/utils/universal";
2
2
  function getAutoInjectEnv(appContext) {
3
3
  const { metaName } = appContext;
4
4
  const prefix = `${cutNameByHyphen(metaName)}_`.toUpperCase();
@@ -0,0 +1,69 @@
1
+ import path from "node:path";
2
+ import { fs, getAliasConfig, readTsConfigByFile } from "@modern-js/utils";
3
+ const registerCompiler = async (appDir = process.cwd(), distDir, alias) => {
4
+ const TS_CONFIG_FILENAME = `tsconfig.json`;
5
+ const tsconfigPath = path.resolve(appDir, TS_CONFIG_FILENAME);
6
+ const isTsProject = await fs.pathExists(tsconfigPath);
7
+ const aliasConfig = getAliasConfig(alias, {
8
+ appDirectory: appDir,
9
+ tsconfigPath
10
+ });
11
+ const { paths = {}, absoluteBaseUrl = "./" } = aliasConfig;
12
+ const tsPaths = Object.keys(paths).reduce((o, key) => {
13
+ let tsPath = paths[key];
14
+ if (typeof tsPath === "string" && path.isAbsolute(tsPath)) {
15
+ tsPath = path.relative(absoluteBaseUrl, tsPath);
16
+ }
17
+ if (typeof tsPath === "string") {
18
+ tsPath = [
19
+ tsPath
20
+ ];
21
+ }
22
+ return {
23
+ ...o,
24
+ [`${key}`]: tsPath
25
+ };
26
+ }, {});
27
+ let tsConfig = {};
28
+ if (isTsProject) {
29
+ tsConfig = readTsConfigByFile(tsconfigPath);
30
+ }
31
+ try {
32
+ const tsNode = await import("ts-node");
33
+ const tsNodeOptions = tsConfig["ts-node"];
34
+ if (isTsProject) {
35
+ tsNode.register({
36
+ project: tsconfigPath,
37
+ scope: true,
38
+ // for env.d.ts, https://www.npmjs.com/package/ts-node#missing-types
39
+ files: true,
40
+ transpileOnly: true,
41
+ ignore: [
42
+ "(?:^|/)node_modules/",
43
+ `(?:^|/)${distDir}/`
44
+ ],
45
+ ...tsNodeOptions
46
+ });
47
+ }
48
+ } catch (error) {
49
+ const esbuildRegister = await import("esbuild-register/dist/node");
50
+ esbuildRegister.register({
51
+ tsconfigRaw: isTsProject ? tsConfig : void 0,
52
+ hookIgnoreNodeModules: true,
53
+ hookMatcher: (fileName) => !fileName.startsWith(distDir)
54
+ });
55
+ }
56
+ const tsConfigPaths = await import("@modern-js/utils/tsconfig-paths");
57
+ if (await fs.pathExists(appDir)) {
58
+ const loaderRes = tsConfigPaths.loadConfig(appDir);
59
+ if (loaderRes.resultType === "success") {
60
+ tsConfigPaths.register({
61
+ baseUrl: absoluteBaseUrl || "./",
62
+ paths: tsPaths
63
+ });
64
+ }
65
+ }
66
+ };
67
+ export {
68
+ registerCompiler
69
+ };
@@ -1,12 +1,7 @@
1
- import { Server, ModernDevServerOptions } from '@modern-js/server';
2
- import type { InternalPlugins } from '@modern-js/types';
3
- export declare const getServer: () => Server | null;
1
+ /// <reference types="node" />
2
+ import type { Server } from 'node:http';
3
+ import { ModernDevServerOptions } from '@modern-js/server';
4
+ export declare const getServer: () => Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | null;
4
5
  export declare const setServer: (newServer: Server) => void;
5
6
  export declare const closeServer: () => Promise<void>;
6
7
  export declare const createServer: (options: ModernDevServerOptions) => Promise<Server>;
7
- export declare const injectDataLoaderPlugin: (internalPlugins: InternalPlugins) => {
8
- '@modern-js/plugin-data-loader': {
9
- path: string;
10
- forced: boolean;
11
- };
12
- };
@@ -0,0 +1,3 @@
1
+ import { Alias } from '@modern-js/utils';
2
+ import { ChainedConfig } from '@rsbuild/shared';
3
+ export declare const registerCompiler: (appDir: string | undefined, distDir: string, alias?: ChainedConfig<Alias>) => Promise<void>;