@bleedingdev/modern-js-prod-server 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21

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.
package/dist/cjs/apply.js CHANGED
@@ -32,13 +32,12 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  });
33
33
  const server_core_namespaceObject = require("@modern-js/server-core");
34
34
  const node_namespaceObject = require("@modern-js/server-core/node");
35
- const server_runtime_extensions_namespaceObject = require("@modern-js/server-runtime-extensions");
36
35
  const utils_namespaceObject = require("@modern-js/utils");
37
36
  function getLogger(_) {
38
37
  if (process.env.DEBUG || 'production' === process.env.NODE_ENV) return (0, utils_namespaceObject.createLogger)({
39
38
  level: process.env.MODERN_SERVER_LOG_LEVEL || 'verbose'
40
39
  });
41
- return (0, utils_namespaceObject.createLogger)();
40
+ else return (0, utils_namespaceObject.createLogger)();
42
41
  }
43
42
  async function applyPlugins(serverBase, options, nodeServer) {
44
43
  const { pwd, appContext, config, logger: optLogger, serverConfig } = options;
@@ -60,13 +59,24 @@ async function applyPlugins(serverBase, options, nodeServer) {
60
59
  } catch (configError) {
61
60
  utils_namespaceObject.logger.error(`Error in serverConfig.onError handler: ${configError}`);
62
61
  }
62
+ try {
63
+ const result = await serverBase.hooks.handleError.call({
64
+ error: err,
65
+ context: c
66
+ });
67
+ if (result.response instanceof Response) return result.response;
68
+ } catch (pluginError) {
69
+ utils_namespaceObject.logger.error('Error in server handleError hook', pluginError);
70
+ }
63
71
  const bffPrefix = config.bff?.prefix || '/api';
64
72
  const bffPrefixList = Array.isArray(bffPrefix) ? bffPrefix : [
65
73
  bffPrefix
66
74
  ];
67
75
  const isApiPath = bffPrefixList.some((prefix)=>c.req.path.startsWith(prefix));
68
- if (isApiPath) return (0, server_core_namespaceObject.createSafeJsonFailureResponse)(err);
69
- return c.html((0, server_core_namespaceObject.createErrorHtml)(500), 500);
76
+ if (isApiPath) return c.json({
77
+ message: '[BFF] Internal Server Error'
78
+ }, 500);
79
+ else return c.html((0, server_core_namespaceObject.createErrorHtml)(500), 500);
70
80
  });
71
81
  const loggerOptions = config.server.logger;
72
82
  const { middlewares, renderMiddlewares } = options.serverConfig || {};
@@ -81,12 +91,9 @@ async function applyPlugins(serverBase, options, nodeServer) {
81
91
  staticGenerate: options.staticGenerate,
82
92
  logger: false === loggerOptions ? false : optLogger || getLogger(loggerOptions)
83
93
  }),
84
- (0, server_runtime_extensions_namespaceObject.injectTelemetryPlugin)(),
85
94
  (0, server_core_namespaceObject.injectConfigMiddlewarePlugin)(middlewares, renderMiddlewares),
86
95
  ...options.plugins || [],
87
96
  (0, node_namespaceObject.injectResourcePlugin)(),
88
- (0, server_runtime_extensions_namespaceObject.injectModuleFederationCssPlugin)(),
89
- (0, server_runtime_extensions_namespaceObject.injectMfAssetCacheHeadersPlugin)(),
90
97
  (0, node_namespaceObject.injectRscManifestPlugin)(enableRsc),
91
98
  (0, node_namespaceObject.serverStaticPlugin)(),
92
99
  (0, server_core_namespaceObject.faviconPlugin)(),
package/dist/cjs/index.js CHANGED
@@ -28,24 +28,15 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- TelemetryHealthMonitor: ()=>server_runtime_extensions_namespaceObject.TelemetryHealthMonitor,
32
- TelemetryRegistry: ()=>server_runtime_extensions_namespaceObject.TelemetryRegistry,
33
- TelemetryStartupHealthError: ()=>server_runtime_extensions_namespaceObject.TelemetryStartupHealthError,
34
31
  applyPlugins: ()=>external_apply_js_namespaceObject.applyPlugins,
35
- createOtlpTelemetryExporter: ()=>server_runtime_extensions_namespaceObject.createOtlpTelemetryExporter,
36
32
  createProdServer: ()=>createProdServer,
37
- createTelemetryAwareMetrics: ()=>server_runtime_extensions_namespaceObject.createTelemetryAwareMetrics,
38
- createVictoriaMetricsTelemetryExporter: ()=>server_runtime_extensions_namespaceObject.createVictoriaMetricsTelemetryExporter,
39
33
  default: ()=>src,
40
- hasEnabledTelemetryExporters: ()=>server_runtime_extensions_namespaceObject.hasEnabledTelemetryExporters,
41
34
  loadServerPlugins: ()=>node_namespaceObject.loadServerPlugins
42
35
  });
43
36
  const server_core_namespaceObject = require("@modern-js/server-core");
44
37
  const node_namespaceObject = require("@modern-js/server-core/node");
45
- const runtime_lifecycle_namespaceObject = require("@modern-js/server-runtime-extensions/runtime-lifecycle");
46
38
  const utils_namespaceObject = require("@modern-js/utils");
47
39
  const external_apply_js_namespaceObject = require("./apply.js");
48
- const server_runtime_extensions_namespaceObject = require("@modern-js/server-runtime-extensions");
49
40
  const createProdServer = async (options)=>{
50
41
  await (0, node_namespaceObject.loadServerEnv)(options);
51
42
  const serverBaseOptions = options;
@@ -61,41 +52,29 @@ const createProdServer = async (options)=>{
61
52
  }
62
53
  const server = (0, server_core_namespaceObject.createServerBase)(serverBaseOptions);
63
54
  const nodeServer = await (0, node_namespaceObject.createNodeServer)(server.handle.bind(server));
55
+ let disposePromise;
56
+ const dispose = ()=>disposePromise ??= server.dispose();
64
57
  nodeServer.once('close', ()=>{
65
- (0, runtime_lifecycle_namespaceObject.disposeServerRuntime)(server).catch((error)=>utils_namespaceObject.logger.error(error));
58
+ dispose().catch((error)=>utils_namespaceObject.logger.error(error));
66
59
  });
67
60
  try {
68
61
  await (0, external_apply_js_namespaceObject.applyPlugins)(server, options, nodeServer);
69
62
  await server.init();
70
63
  } catch (error) {
71
- await (0, runtime_lifecycle_namespaceObject.disposeServerRuntime)(server).catch((disposeError)=>utils_namespaceObject.logger.error(disposeError));
64
+ await dispose().catch((disposeError)=>utils_namespaceObject.logger.error(disposeError));
72
65
  throw error;
73
66
  }
74
67
  return nodeServer;
75
68
  };
76
69
  const src = createProdServer;
77
- exports.TelemetryHealthMonitor = __webpack_exports__.TelemetryHealthMonitor;
78
- exports.TelemetryRegistry = __webpack_exports__.TelemetryRegistry;
79
- exports.TelemetryStartupHealthError = __webpack_exports__.TelemetryStartupHealthError;
80
70
  exports.applyPlugins = __webpack_exports__.applyPlugins;
81
- exports.createOtlpTelemetryExporter = __webpack_exports__.createOtlpTelemetryExporter;
82
71
  exports.createProdServer = __webpack_exports__.createProdServer;
83
- exports.createTelemetryAwareMetrics = __webpack_exports__.createTelemetryAwareMetrics;
84
- exports.createVictoriaMetricsTelemetryExporter = __webpack_exports__.createVictoriaMetricsTelemetryExporter;
85
72
  exports["default"] = __webpack_exports__["default"];
86
- exports.hasEnabledTelemetryExporters = __webpack_exports__.hasEnabledTelemetryExporters;
87
73
  exports.loadServerPlugins = __webpack_exports__.loadServerPlugins;
88
74
  for(var __rspack_i in __webpack_exports__)if (-1 === [
89
- "TelemetryHealthMonitor",
90
- "TelemetryRegistry",
91
- "TelemetryStartupHealthError",
92
75
  "applyPlugins",
93
- "createOtlpTelemetryExporter",
94
76
  "createProdServer",
95
- "createTelemetryAwareMetrics",
96
- "createVictoriaMetricsTelemetryExporter",
97
77
  "default",
98
- "hasEnabledTelemetryExporters",
99
78
  "loadServerPlugins"
100
79
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
101
80
  Object.defineProperty(exports, '__esModule', {
@@ -1,12 +1,11 @@
1
- import { ErrorDigest, createDefaultPlugins, createErrorHtml, createSafeJsonFailureResponse, faviconPlugin, injectConfigMiddlewarePlugin, onError, renderPlugin } from "@modern-js/server-core";
1
+ import { ErrorDigest, createDefaultPlugins, createErrorHtml, faviconPlugin, injectConfigMiddlewarePlugin, onError, renderPlugin } from "@modern-js/server-core";
2
2
  import { injectNodeSeverPlugin, injectResourcePlugin, injectRscManifestPlugin, loadCacheConfig, serverStaticPlugin } from "@modern-js/server-core/node";
3
- import { injectMfAssetCacheHeadersPlugin, injectModuleFederationCssPlugin, injectTelemetryPlugin } from "@modern-js/server-runtime-extensions";
4
3
  import { createLogger, isProd, logger } from "@modern-js/utils";
5
4
  function getLogger(_) {
6
5
  if (process.env.DEBUG || 'production' === process.env.NODE_ENV) return createLogger({
7
6
  level: process.env.MODERN_SERVER_LOG_LEVEL || 'verbose'
8
7
  });
9
- return createLogger();
8
+ else return createLogger();
10
9
  }
11
10
  async function applyPlugins(serverBase, options, nodeServer) {
12
11
  const { pwd, appContext, config, logger: optLogger, serverConfig } = options;
@@ -28,13 +27,24 @@ async function applyPlugins(serverBase, options, nodeServer) {
28
27
  } catch (configError) {
29
28
  logger.error(`Error in serverConfig.onError handler: ${configError}`);
30
29
  }
30
+ try {
31
+ const result = await serverBase.hooks.handleError.call({
32
+ error: err,
33
+ context: c
34
+ });
35
+ if (result.response instanceof Response) return result.response;
36
+ } catch (pluginError) {
37
+ logger.error('Error in server handleError hook', pluginError);
38
+ }
31
39
  const bffPrefix = config.bff?.prefix || '/api';
32
40
  const bffPrefixList = Array.isArray(bffPrefix) ? bffPrefix : [
33
41
  bffPrefix
34
42
  ];
35
43
  const isApiPath = bffPrefixList.some((prefix)=>c.req.path.startsWith(prefix));
36
- if (isApiPath) return createSafeJsonFailureResponse(err);
37
- return c.html(createErrorHtml(500), 500);
44
+ if (isApiPath) return c.json({
45
+ message: '[BFF] Internal Server Error'
46
+ }, 500);
47
+ else return c.html(createErrorHtml(500), 500);
38
48
  });
39
49
  const loggerOptions = config.server.logger;
40
50
  const { middlewares, renderMiddlewares } = options.serverConfig || {};
@@ -49,12 +59,9 @@ async function applyPlugins(serverBase, options, nodeServer) {
49
59
  staticGenerate: options.staticGenerate,
50
60
  logger: false === loggerOptions ? false : optLogger || getLogger(loggerOptions)
51
61
  }),
52
- injectTelemetryPlugin(),
53
62
  injectConfigMiddlewarePlugin(middlewares, renderMiddlewares),
54
63
  ...options.plugins || [],
55
64
  injectResourcePlugin(),
56
- injectModuleFederationCssPlugin(),
57
- injectMfAssetCacheHeadersPlugin(),
58
65
  injectRscManifestPlugin(enableRsc),
59
66
  serverStaticPlugin(),
60
67
  faviconPlugin(),
@@ -1,6 +1,5 @@
1
1
  import { createServerBase } from "@modern-js/server-core";
2
2
  import { createNodeServer, loadServerCliConfig, loadServerEnv, loadServerPlugins, loadServerRuntimeConfig } from "@modern-js/server-core/node";
3
- import { disposeServerRuntime } from "@modern-js/server-runtime-extensions/runtime-lifecycle";
4
3
  import { logger } from "@modern-js/utils";
5
4
  import { applyPlugins } from "./apply.mjs";
6
5
  const createProdServer = async (options)=>{
@@ -18,19 +17,20 @@ const createProdServer = async (options)=>{
18
17
  }
19
18
  const server = createServerBase(serverBaseOptions);
20
19
  const nodeServer = await createNodeServer(server.handle.bind(server));
20
+ let disposePromise;
21
+ const dispose = ()=>disposePromise ??= server.dispose();
21
22
  nodeServer.once('close', ()=>{
22
- disposeServerRuntime(server).catch((error)=>logger.error(error));
23
+ dispose().catch((error)=>logger.error(error));
23
24
  });
24
25
  try {
25
26
  await applyPlugins(server, options, nodeServer);
26
27
  await server.init();
27
28
  } catch (error) {
28
- await disposeServerRuntime(server).catch((disposeError)=>logger.error(disposeError));
29
+ await dispose().catch((disposeError)=>logger.error(disposeError));
29
30
  throw error;
30
31
  }
31
32
  return nodeServer;
32
33
  };
33
34
  const src = createProdServer;
34
- export { TelemetryHealthMonitor, TelemetryRegistry, TelemetryStartupHealthError, createOtlpTelemetryExporter, createTelemetryAwareMetrics, createVictoriaMetricsTelemetryExporter, hasEnabledTelemetryExporters } from "@modern-js/server-runtime-extensions";
35
35
  export default src;
36
36
  export { applyPlugins, createProdServer, loadServerPlugins };
@@ -1,13 +1,12 @@
1
1
  import "node:module";
2
- import { ErrorDigest, createDefaultPlugins, createErrorHtml, createSafeJsonFailureResponse, faviconPlugin, injectConfigMiddlewarePlugin, onError, renderPlugin } from "@modern-js/server-core";
2
+ import { ErrorDigest, createDefaultPlugins, createErrorHtml, faviconPlugin, injectConfigMiddlewarePlugin, onError, renderPlugin } from "@modern-js/server-core";
3
3
  import { injectNodeSeverPlugin, injectResourcePlugin, injectRscManifestPlugin, loadCacheConfig, serverStaticPlugin } from "@modern-js/server-core/node";
4
- import { injectMfAssetCacheHeadersPlugin, injectModuleFederationCssPlugin, injectTelemetryPlugin } from "@modern-js/server-runtime-extensions";
5
4
  import { createLogger, isProd, logger } from "@modern-js/utils";
6
5
  function getLogger(_) {
7
6
  if (process.env.DEBUG || 'production' === process.env.NODE_ENV) return createLogger({
8
7
  level: process.env.MODERN_SERVER_LOG_LEVEL || 'verbose'
9
8
  });
10
- return createLogger();
9
+ else return createLogger();
11
10
  }
12
11
  async function applyPlugins(serverBase, options, nodeServer) {
13
12
  const { pwd, appContext, config, logger: optLogger, serverConfig } = options;
@@ -29,13 +28,24 @@ async function applyPlugins(serverBase, options, nodeServer) {
29
28
  } catch (configError) {
30
29
  logger.error(`Error in serverConfig.onError handler: ${configError}`);
31
30
  }
31
+ try {
32
+ const result = await serverBase.hooks.handleError.call({
33
+ error: err,
34
+ context: c
35
+ });
36
+ if (result.response instanceof Response) return result.response;
37
+ } catch (pluginError) {
38
+ logger.error('Error in server handleError hook', pluginError);
39
+ }
32
40
  const bffPrefix = config.bff?.prefix || '/api';
33
41
  const bffPrefixList = Array.isArray(bffPrefix) ? bffPrefix : [
34
42
  bffPrefix
35
43
  ];
36
44
  const isApiPath = bffPrefixList.some((prefix)=>c.req.path.startsWith(prefix));
37
- if (isApiPath) return createSafeJsonFailureResponse(err);
38
- return c.html(createErrorHtml(500), 500);
45
+ if (isApiPath) return c.json({
46
+ message: '[BFF] Internal Server Error'
47
+ }, 500);
48
+ else return c.html(createErrorHtml(500), 500);
39
49
  });
40
50
  const loggerOptions = config.server.logger;
41
51
  const { middlewares, renderMiddlewares } = options.serverConfig || {};
@@ -50,12 +60,9 @@ async function applyPlugins(serverBase, options, nodeServer) {
50
60
  staticGenerate: options.staticGenerate,
51
61
  logger: false === loggerOptions ? false : optLogger || getLogger(loggerOptions)
52
62
  }),
53
- injectTelemetryPlugin(),
54
63
  injectConfigMiddlewarePlugin(middlewares, renderMiddlewares),
55
64
  ...options.plugins || [],
56
65
  injectResourcePlugin(),
57
- injectModuleFederationCssPlugin(),
58
- injectMfAssetCacheHeadersPlugin(),
59
66
  injectRscManifestPlugin(enableRsc),
60
67
  serverStaticPlugin(),
61
68
  faviconPlugin(),
@@ -1,7 +1,6 @@
1
1
  import "node:module";
2
2
  import { createServerBase } from "@modern-js/server-core";
3
3
  import { createNodeServer, loadServerCliConfig, loadServerEnv, loadServerPlugins, loadServerRuntimeConfig } from "@modern-js/server-core/node";
4
- import { disposeServerRuntime } from "@modern-js/server-runtime-extensions/runtime-lifecycle";
5
4
  import { logger } from "@modern-js/utils";
6
5
  import { applyPlugins } from "./apply.mjs";
7
6
  const createProdServer = async (options)=>{
@@ -19,19 +18,20 @@ const createProdServer = async (options)=>{
19
18
  }
20
19
  const server = createServerBase(serverBaseOptions);
21
20
  const nodeServer = await createNodeServer(server.handle.bind(server));
21
+ let disposePromise;
22
+ const dispose = ()=>disposePromise ??= server.dispose();
22
23
  nodeServer.once('close', ()=>{
23
- disposeServerRuntime(server).catch((error)=>logger.error(error));
24
+ dispose().catch((error)=>logger.error(error));
24
25
  });
25
26
  try {
26
27
  await applyPlugins(server, options, nodeServer);
27
28
  await server.init();
28
29
  } catch (error) {
29
- await disposeServerRuntime(server).catch((disposeError)=>logger.error(disposeError));
30
+ await dispose().catch((disposeError)=>logger.error(disposeError));
30
31
  throw error;
31
32
  }
32
33
  return nodeServer;
33
34
  };
34
35
  const src = createProdServer;
35
- export { TelemetryHealthMonitor, TelemetryRegistry, TelemetryStartupHealthError, createOtlpTelemetryExporter, createTelemetryAwareMetrics, createVictoriaMetricsTelemetryExporter, hasEnabledTelemetryExporters } from "@modern-js/server-runtime-extensions";
36
36
  export default src;
37
37
  export { applyPlugins, createProdServer, loadServerPlugins };
@@ -1,8 +1,6 @@
1
1
  import { createNodeServer, loadServerPlugins } from '@modern-js/server-core/node';
2
2
  import type { ProdServerOptions } from './types.js';
3
3
  export type { ServerPlugin } from '@modern-js/server-core';
4
- export type { TelemetryHealthEvaluation, TelemetryQueueStats, TelemetrySloAlert, } from '@modern-js/server-runtime-extensions';
5
- export { createOtlpTelemetryExporter, createTelemetryAwareMetrics, createVictoriaMetricsTelemetryExporter, hasEnabledTelemetryExporters, TelemetryHealthMonitor, TelemetryRegistry, TelemetryStartupHealthError, } from '@modern-js/server-runtime-extensions';
6
4
  export { type ApplyPlugins, applyPlugins } from './apply.js';
7
5
  export type { BaseEnv, ProdServerOptions } from './types.js';
8
6
  export { loadServerPlugins };
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.9.0-ultramodern.2",
20
+ "version": "3.9.0-ultramodern.21",
21
21
  "types": "./dist/types/index.d.ts",
22
22
  "main": "./dist/cjs/index.js",
23
23
  "exports": {
@@ -49,20 +49,19 @@
49
49
  }
50
50
  },
51
51
  "dependencies": {
52
- "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.9.0-ultramodern.2",
53
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.0-ultramodern.2",
54
- "@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.0-ultramodern.2",
55
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.2",
52
+ "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.9.0-ultramodern.21",
53
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.0-ultramodern.21",
54
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.21",
56
55
  "@swc/helpers": "^0.5.23"
57
56
  },
58
57
  "devDependencies": {
59
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.2",
60
- "@rslib/core": "1.0.0",
58
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.21",
59
+ "@rslib/core": "1.0.2",
61
60
  "@scripts/rstest-config": "2.66.0",
62
61
  "@types/merge-deep": "^3.0.3",
63
- "@types/node": "^26.4.1",
62
+ "@types/node": "^26.6.2",
64
63
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
65
- "lint-staged": "~17.5.0"
64
+ "lint-staged": "~17.5.1"
66
65
  },
67
66
  "sideEffects": [],
68
67
  "engines": {
@@ -74,6 +73,6 @@
74
73
  "scripts": {
75
74
  "build": "rslib build",
76
75
  "dev": "rslib build --watch",
77
- "test": "rstest --passWithNoTests"
76
+ "test": "rstest"
78
77
  }
79
78
  }