@modern-js/server-core 3.8.2 → 3.9.0

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.
@@ -33,7 +33,6 @@ function getHookRunners(context) {
33
33
  config: (params)=>hooks.modifyConfig.call(params),
34
34
  prepare: ()=>hooks.onPrepare.call(),
35
35
  reset: (params)=>hooks.onReset.call(params),
36
- fallback: (input)=>hooks.fallback.call(input),
37
36
  prepareWebServer: (input)=>hooks.prepareWebServer.call(input),
38
37
  prepareApiServer: (input)=>hooks.prepareApiServer.call(input),
39
38
  afterMatch: (ctx)=>hooks.afterMatch.call(ctx),
@@ -36,7 +36,6 @@ const external_hooks_js_namespaceObject = require("./hooks.js");
36
36
  const compatPlugin = ()=>({
37
37
  name: '@modern-js/server-compat',
38
38
  registryHooks: {
39
- fallback: (0, plugin_namespaceObject.createAsyncHook)(),
40
39
  prepareWebServer: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
41
40
  prepareApiServer: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
42
41
  afterMatch: (0, plugin_namespaceObject.createAsyncPipelineHook)(),
@@ -38,23 +38,14 @@ const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig })=>({
38
38
  api.onPrepare(async ()=>{
39
39
  const { distDirectory: pwd, routes, metaName } = api.getServerContext();
40
40
  const config = api.getServerConfig();
41
- const hooks = api.getHooks();
42
41
  if (!routes) return;
43
- const onFallback = async (reason, error, context)=>{
44
- await hooks.fallback.call({
45
- reason,
46
- error,
47
- context
48
- });
49
- };
50
42
  const getRenderHandlerOptions = {
51
43
  pwd: pwd,
52
44
  routes,
53
45
  config,
54
46
  metaName,
55
47
  cacheConfig: cacheConfig,
56
- staticGenerate,
57
- onFallback
48
+ staticGenerate
58
49
  };
59
50
  const render = await getRenderHandler(getRenderHandlerOptions);
60
51
  api.updateServerContext({
@@ -64,7 +55,7 @@ const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig })=>({
64
55
  });
65
56
  }
66
57
  });
67
- async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate, onFallback }) {
58
+ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate }) {
68
59
  const ssrConfig = config.server?.ssr;
69
60
  const ssrByEntries = config.server?.ssrByEntries;
70
61
  const forceCSR = 'object' == typeof ssrConfig ? ssrConfig.forceCSR : false;
@@ -81,8 +72,7 @@ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, st
81
72
  forceCSR,
82
73
  forceCSRMap,
83
74
  nonce: config.security?.nonce,
84
- metaName: metaName || 'modern-js',
85
- onFallback
75
+ metaName: metaName || 'modern-js'
86
76
  });
87
77
  return render;
88
78
  }
@@ -108,7 +108,7 @@ var __webpack_exports__ = {};
108
108
  delete _headers.cookie;
109
109
  return _headers;
110
110
  }
111
- async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config, onFallback }) {
111
+ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config }) {
112
112
  const router = getRouter(routes);
113
113
  return async (req, { monitors, nodeReq, templates, serverManifest, rscClientManifest, rscSSRManifest, rscServerManifest, locals, matchEntryName, matchPathname, loaderContext, contextForceCSR, reporter })=>{
114
114
  const forMatchpathname = matchPathname ?? (0, index_js_namespaceObject.getPathname)(req);
@@ -116,13 +116,14 @@ var __webpack_exports__ = {};
116
116
  const framework = (0, universal_namespaceObject.cutNameByHyphen)(metaName || 'modern-js');
117
117
  const fallbackHeader = `x-${framework}-ssr-fallback`;
118
118
  let fallbackReason = null;
119
- const fallbackContext = {
120
- request: req,
121
- monitors
122
- };
123
- const fallbackWrapper = async (reason, error)=>{
119
+ const fallbackWrapper = (reason)=>{
124
120
  fallbackReason = reason;
125
- return onFallback?.(reason, error, fallbackContext);
121
+ monitors?.warn('fallback to CSR reason: %o', {
122
+ type: reason
123
+ });
124
+ monitors?.counter('ssr-fallback', {
125
+ type: reason
126
+ });
126
127
  };
127
128
  if (!routeInfo) return new Response((0, index_js_namespaceObject.createErrorHtml)(404), {
128
129
  status: 404,
@@ -217,7 +218,7 @@ var __webpack_exports__ = {};
217
218
  response = await (0, external_ssrRender_js_namespaceObject.ssrRender)(request, options);
218
219
  } catch (e) {
219
220
  options.onError(e, index_js_namespaceObject.ErrorDigest.ERENDER);
220
- await fallbackWrapper('error', e);
221
+ fallbackWrapper('error');
221
222
  response = await csrRender(request, {
222
223
  ...options,
223
224
  html: injectFallbackReasonToHtml({
@@ -4,7 +4,6 @@ function getHookRunners(context) {
4
4
  config: (params)=>hooks.modifyConfig.call(params),
5
5
  prepare: ()=>hooks.onPrepare.call(),
6
6
  reset: (params)=>hooks.onReset.call(params),
7
- fallback: (input)=>hooks.fallback.call(input),
8
7
  prepareWebServer: (input)=>hooks.prepareWebServer.call(input),
9
8
  prepareApiServer: (input)=>hooks.prepareApiServer.call(input),
10
9
  afterMatch: (ctx)=>hooks.afterMatch.call(ctx),
@@ -1,9 +1,8 @@
1
- import { createAsyncHook, createAsyncPipelineHook } from "@modern-js/plugin";
1
+ import { createAsyncPipelineHook } from "@modern-js/plugin";
2
2
  import { getHookRunners, handleSetupResult } from "./hooks.mjs";
3
3
  const compatPlugin = ()=>({
4
4
  name: '@modern-js/server-compat',
5
5
  registryHooks: {
6
- fallback: createAsyncHook(),
7
6
  prepareWebServer: createAsyncPipelineHook(),
8
7
  prepareApiServer: createAsyncPipelineHook(),
9
8
  afterMatch: createAsyncPipelineHook(),
@@ -5,23 +5,14 @@ const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig })=>({
5
5
  api.onPrepare(async ()=>{
6
6
  const { distDirectory: pwd, routes, metaName } = api.getServerContext();
7
7
  const config = api.getServerConfig();
8
- const hooks = api.getHooks();
9
8
  if (!routes) return;
10
- const onFallback = async (reason, error, context)=>{
11
- await hooks.fallback.call({
12
- reason,
13
- error,
14
- context
15
- });
16
- };
17
9
  const getRenderHandlerOptions = {
18
10
  pwd: pwd,
19
11
  routes,
20
12
  config,
21
13
  metaName,
22
14
  cacheConfig: cacheConfig,
23
- staticGenerate,
24
- onFallback
15
+ staticGenerate
25
16
  };
26
17
  const render = await getRenderHandler(getRenderHandlerOptions);
27
18
  api.updateServerContext({
@@ -31,7 +22,7 @@ const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig })=>({
31
22
  });
32
23
  }
33
24
  });
34
- async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate, onFallback }) {
25
+ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate }) {
35
26
  const ssrConfig = config.server?.ssr;
36
27
  const ssrByEntries = config.server?.ssrByEntries;
37
28
  const forceCSR = 'object' == typeof ssrConfig ? ssrConfig.forceCSR : false;
@@ -48,8 +39,7 @@ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, st
48
39
  forceCSR,
49
40
  forceCSRMap,
50
41
  nonce: config.security?.nonce,
51
- metaName: metaName || 'modern-js',
52
- onFallback
42
+ metaName: metaName || 'modern-js'
53
43
  });
54
44
  return render;
55
45
  }
@@ -8,10 +8,10 @@ import { renderRscHandler } from "./renderRscHandler.mjs";
8
8
  import { serverActionHandler } from "./serverActionHandler.mjs";
9
9
  import { ssrRender } from "./ssrRender.mjs";
10
10
  import { __webpack_require__ } from "../../rslib-runtime.mjs";
11
- import * as __rspack_external__modern_js_runtime_utils_router_2aa8d96f from "@modern-js/runtime-utils/router";
11
+ import * as __rspack_external__modern_js_runtime_utils_router_4aa9f9b0 from "@modern-js/runtime-utils/router";
12
12
  __webpack_require__.add({
13
13
  5327 (module) {
14
- module.exports = __rspack_external__modern_js_runtime_utils_router_2aa8d96f;
14
+ module.exports = __rspack_external__modern_js_runtime_utils_router_4aa9f9b0;
15
15
  }
16
16
  });
17
17
  const DYNAMIC_ROUTE_REG = /\/:./;
@@ -67,7 +67,7 @@ function getHeadersWithoutCookie(headers) {
67
67
  delete _headers.cookie;
68
68
  return _headers;
69
69
  }
70
- async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config, onFallback }) {
70
+ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config }) {
71
71
  const router = getRouter(routes);
72
72
  return async (req, { monitors, nodeReq, templates, serverManifest, rscClientManifest, rscSSRManifest, rscServerManifest, locals, matchEntryName, matchPathname, loaderContext, contextForceCSR, reporter })=>{
73
73
  const forMatchpathname = matchPathname ?? getPathname(req);
@@ -75,13 +75,14 @@ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig
75
75
  const framework = cutNameByHyphen(metaName || 'modern-js');
76
76
  const fallbackHeader = `x-${framework}-ssr-fallback`;
77
77
  let fallbackReason = null;
78
- const fallbackContext = {
79
- request: req,
80
- monitors
81
- };
82
- const fallbackWrapper = async (reason, error)=>{
78
+ const fallbackWrapper = (reason)=>{
83
79
  fallbackReason = reason;
84
- return onFallback?.(reason, error, fallbackContext);
80
+ monitors?.warn('fallback to CSR reason: %o', {
81
+ type: reason
82
+ });
83
+ monitors?.counter('ssr-fallback', {
84
+ type: reason
85
+ });
85
86
  };
86
87
  if (!routeInfo) return new Response(createErrorHtml(404), {
87
88
  status: 404,
@@ -176,7 +177,7 @@ async function renderHandler(request, options, mode, fallbackWrapper, framework)
176
177
  response = await ssrRender(request, options);
177
178
  } catch (e) {
178
179
  options.onError(e, ErrorDigest.ERENDER);
179
- await fallbackWrapper('error', e);
180
+ fallbackWrapper('error');
180
181
  response = await csrRender(request, {
181
182
  ...options,
182
183
  html: injectFallbackReasonToHtml({
@@ -5,7 +5,6 @@ function getHookRunners(context) {
5
5
  config: (params)=>hooks.modifyConfig.call(params),
6
6
  prepare: ()=>hooks.onPrepare.call(),
7
7
  reset: (params)=>hooks.onReset.call(params),
8
- fallback: (input)=>hooks.fallback.call(input),
9
8
  prepareWebServer: (input)=>hooks.prepareWebServer.call(input),
10
9
  prepareApiServer: (input)=>hooks.prepareApiServer.call(input),
11
10
  afterMatch: (ctx)=>hooks.afterMatch.call(ctx),
@@ -1,10 +1,9 @@
1
1
  import "node:module";
2
- import { createAsyncHook, createAsyncPipelineHook } from "@modern-js/plugin";
2
+ import { createAsyncPipelineHook } from "@modern-js/plugin";
3
3
  import { getHookRunners, handleSetupResult } from "./hooks.mjs";
4
4
  const compatPlugin = ()=>({
5
5
  name: '@modern-js/server-compat',
6
6
  registryHooks: {
7
- fallback: createAsyncHook(),
8
7
  prepareWebServer: createAsyncPipelineHook(),
9
8
  prepareApiServer: createAsyncPipelineHook(),
10
9
  afterMatch: createAsyncPipelineHook(),
@@ -6,23 +6,14 @@ const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig })=>({
6
6
  api.onPrepare(async ()=>{
7
7
  const { distDirectory: pwd, routes, metaName } = api.getServerContext();
8
8
  const config = api.getServerConfig();
9
- const hooks = api.getHooks();
10
9
  if (!routes) return;
11
- const onFallback = async (reason, error, context)=>{
12
- await hooks.fallback.call({
13
- reason,
14
- error,
15
- context
16
- });
17
- };
18
10
  const getRenderHandlerOptions = {
19
11
  pwd: pwd,
20
12
  routes,
21
13
  config,
22
14
  metaName,
23
15
  cacheConfig: cacheConfig,
24
- staticGenerate,
25
- onFallback
16
+ staticGenerate
26
17
  };
27
18
  const render = await getRenderHandler(getRenderHandlerOptions);
28
19
  api.updateServerContext({
@@ -32,7 +23,7 @@ const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig })=>({
32
23
  });
33
24
  }
34
25
  });
35
- async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate, onFallback }) {
26
+ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate }) {
36
27
  const ssrConfig = config.server?.ssr;
37
28
  const ssrByEntries = config.server?.ssrByEntries;
38
29
  const forceCSR = 'object' == typeof ssrConfig ? ssrConfig.forceCSR : false;
@@ -49,8 +40,7 @@ async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, st
49
40
  forceCSR,
50
41
  forceCSRMap,
51
42
  nonce: config.security?.nonce,
52
- metaName: metaName || 'modern-js',
53
- onFallback
43
+ metaName: metaName || 'modern-js'
54
44
  });
55
45
  return render;
56
46
  }
@@ -9,10 +9,10 @@ import { renderRscHandler } from "./renderRscHandler.mjs";
9
9
  import { serverActionHandler } from "./serverActionHandler.mjs";
10
10
  import { ssrRender } from "./ssrRender.mjs";
11
11
  import { __webpack_require__ } from "../../rslib-runtime.mjs";
12
- import * as __rspack_external__modern_js_runtime_utils_router_2aa8d96f from "@modern-js/runtime-utils/router";
12
+ import * as __rspack_external__modern_js_runtime_utils_router_4aa9f9b0 from "@modern-js/runtime-utils/router";
13
13
  __webpack_require__.add({
14
14
  "@modern-js/runtime-utils/router" (module) {
15
- module.exports = __rspack_external__modern_js_runtime_utils_router_2aa8d96f;
15
+ module.exports = __rspack_external__modern_js_runtime_utils_router_4aa9f9b0;
16
16
  }
17
17
  });
18
18
  const DYNAMIC_ROUTE_REG = /\/:./;
@@ -68,7 +68,7 @@ function getHeadersWithoutCookie(headers) {
68
68
  delete _headers.cookie;
69
69
  return _headers;
70
70
  }
71
- async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config, onFallback }) {
71
+ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config }) {
72
72
  const router = getRouter(routes);
73
73
  return async (req, { monitors, nodeReq, templates, serverManifest, rscClientManifest, rscSSRManifest, rscServerManifest, locals, matchEntryName, matchPathname, loaderContext, contextForceCSR, reporter })=>{
74
74
  const forMatchpathname = matchPathname ?? getPathname(req);
@@ -76,13 +76,14 @@ async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig
76
76
  const framework = cutNameByHyphen(metaName || 'modern-js');
77
77
  const fallbackHeader = `x-${framework}-ssr-fallback`;
78
78
  let fallbackReason = null;
79
- const fallbackContext = {
80
- request: req,
81
- monitors
82
- };
83
- const fallbackWrapper = async (reason, error)=>{
79
+ const fallbackWrapper = (reason)=>{
84
80
  fallbackReason = reason;
85
- return onFallback?.(reason, error, fallbackContext);
81
+ monitors?.warn('fallback to CSR reason: %o', {
82
+ type: reason
83
+ });
84
+ monitors?.counter('ssr-fallback', {
85
+ type: reason
86
+ });
86
87
  };
87
88
  if (!routeInfo) return new Response(createErrorHtml(404), {
88
89
  status: 404,
@@ -177,7 +178,7 @@ async function renderHandler(request, options, mode, fallbackWrapper, framework)
177
178
  response = await ssrRender(request, options);
178
179
  } catch (e) {
179
180
  options.onError(e, ErrorDigest.ERENDER);
180
- await fallbackWrapper('error', e);
181
+ fallbackWrapper('error');
181
182
  response = await csrRender(request, {
182
183
  ...options,
183
184
  html: injectFallbackReasonToHtml({
@@ -4,4 +4,4 @@ export interface InjectRenderHandlerOptions {
4
4
  cacheConfig?: CacheConfig;
5
5
  }
6
6
  export declare const injectRenderHandlerPlugin: ({ staticGenerate, cacheConfig, }: InjectRenderHandlerOptions) => ServerPlugin;
7
- export declare function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate, onFallback, }: GetRenderHandlerOptions): Promise<Render>;
7
+ export declare function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate, }: GetRenderHandlerOptions): Promise<Render>;
@@ -1,6 +1,6 @@
1
1
  import type { ServerRoute } from '@modern-js/types';
2
2
  import type { Router } from 'hono/router';
3
- import type { CacheConfig, OnFallback, UserConfig } from '../../types';
3
+ import type { CacheConfig, UserConfig } from '../../types';
4
4
  import type { Render } from '../../types';
5
5
  import type { Params } from '../../types/requestHandler';
6
6
  interface CreateRenderOptions {
@@ -9,7 +9,6 @@ interface CreateRenderOptions {
9
9
  config: UserConfig;
10
10
  cacheConfig?: CacheConfig;
11
11
  staticGenerate?: boolean;
12
- onFallback?: OnFallback;
13
12
  metaName?: string;
14
13
  forceCSR?: boolean;
15
14
  forceCSRMap?: Map<string, boolean>;
@@ -17,5 +16,5 @@ interface CreateRenderOptions {
17
16
  }
18
17
  type MatchedRoute = [ServerRoute | undefined, Params];
19
18
  export declare function matchRoute(router: Router<ServerRoute>, pathname: string, entryName?: string): MatchedRoute;
20
- export declare function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config, onFallback, }: CreateRenderOptions): Promise<Render>;
19
+ export declare function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, forceCSRMap, config, }: CreateRenderOptions): Promise<Render>;
21
20
  export {};
@@ -1,20 +1,9 @@
1
- import type { CacheOption, Container, HttpMethodDecider, MiddlewareContext, Monitors, ServerRoute } from '@modern-js/types';
1
+ import type { CacheOption, Container, HttpMethodDecider, MiddlewareContext, ServerRoute } from '@modern-js/types';
2
2
  import type { Context, MiddlewareHandler } from 'hono';
3
3
  import type { UserConfig } from '../config';
4
4
  import type { Render } from '../render';
5
5
  import type { ServerPlugin } from './plugin';
6
6
  export type { FileChangeEvent, ResetEvent } from '@modern-js/plugin';
7
- export type FallbackReason = 'error' | 'header' | 'query' | `header,${string}`;
8
- export type FallbackContext = {
9
- request: Request;
10
- monitors?: Monitors;
11
- };
12
- export type FallbackInput = {
13
- reason: FallbackReason;
14
- error: unknown;
15
- context?: FallbackContext;
16
- };
17
- export type OnFallback = (reason: FallbackReason, error?: unknown, context?: FallbackContext) => Promise<void>;
18
7
  export type APIServerStartInput = {
19
8
  pwd: string;
20
9
  prefix?: string;
@@ -44,7 +33,6 @@ export interface GetRenderHandlerOptions {
44
33
  pwd: string;
45
34
  routes: ServerRoute[];
46
35
  config: UserConfig;
47
- onFallback?: OnFallback;
48
36
  cacheConfig?: CacheConfig;
49
37
  staticGenerate?: boolean;
50
38
  metaName?: string;
@@ -1,2 +1,2 @@
1
1
  export * from './plugin';
2
- export type { ServerConfig, CacheConfig, OnFallback, FallbackReason, FallbackContext, GetRenderHandlerOptions, FileChangeEvent, FallbackInput, WebServerStartInput, APIServerStartInput, ServerMiddleware, MiddlewareObj, } from './base';
2
+ export type { ServerConfig, CacheConfig, GetRenderHandlerOptions, FileChangeEvent, WebServerStartInput, APIServerStartInput, ServerMiddleware, MiddlewareObj, } from './base';
@@ -1,10 +1,9 @@
1
- import type { AsyncHook, AsyncPipelineHook, ServerContext as BaseServerContext, ServerPlugin as BaseServerPlugin, ServerPluginAPI as BaseServerPluginAPI, ServerPluginExtends as BaseServerPluginExtends } from '@modern-js/plugin';
1
+ import type { AsyncPipelineHook, ServerContext as BaseServerContext, ServerPlugin as BaseServerPlugin, ServerPluginAPI as BaseServerPluginAPI, ServerPluginExtends as BaseServerPluginExtends } from '@modern-js/plugin';
2
2
  import type { Hooks } from '@modern-js/plugin/server';
3
3
  import type { AfterMatchContext, AfterRenderContext, AfterStreamingRenderContext } from '@modern-js/types';
4
4
  import type { MiddlewareHandler } from 'hono';
5
5
  import type { MiddlewareObj } from './base';
6
- import type { APIServerStartInput, FallbackInput, ServerConfig, WebAdapter, WebServerStartInput } from './base';
7
- export type FallbackFn = (input: FallbackInput) => Promise<FallbackInput>;
6
+ import type { APIServerStartInput, ServerConfig, WebAdapter, WebServerStartInput } from './base';
8
7
  export type PrepareWebServerFn = (input: WebServerStartInput) => Promise<WebAdapter | null>;
9
8
  export type PrepareApiServerFn = (input: APIServerStartInput) => Promise<MiddlewareHandler>;
10
9
  export type AfterMatchFn = (ctx: AfterMatchContext) => Promise<any>;
@@ -19,7 +18,6 @@ export interface ServerPluginExtends extends BaseServerPluginExtends {
19
18
  };
20
19
  extendHooks: {
21
20
  prepareWebServer: AsyncPipelineHook<PrepareWebServerFn>;
22
- fallback: AsyncHook<FallbackFn>;
23
21
  prepareApiServer: AsyncPipelineHook<PrepareApiServerFn>;
24
22
  afterMatch: AsyncPipelineHook<AfterMatchFn>;
25
23
  afterRender: AsyncPipelineHook<AfterRenderFn>;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "3.8.2",
18
+ "version": "3.9.0",
19
19
  "types": "./dist/types/index.d.ts",
20
20
  "main": "./dist/cjs/index.js",
21
21
  "exports": {
@@ -68,12 +68,12 @@
68
68
  "@web-std/file": "^3.0.3",
69
69
  "@web-std/stream": "^1.0.3",
70
70
  "cloneable-readable": "^3.0.0",
71
- "flatted": "^3.4.2",
71
+ "flatted": "^3.4.4",
72
72
  "hono": "^4.11.7",
73
73
  "ts-deepmerge": "7.0.3",
74
- "@modern-js/plugin": "3.8.2",
75
- "@modern-js/runtime-utils": "3.8.2",
76
- "@modern-js/utils": "3.8.2"
74
+ "@modern-js/plugin": "3.9.0",
75
+ "@modern-js/runtime-utils": "3.9.0",
76
+ "@modern-js/utils": "3.9.0"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@rslib/core": "0.23.2",
@@ -83,7 +83,7 @@
83
83
  "http-proxy-middleware": "^2.0.10",
84
84
  "typescript": "^5",
85
85
  "@modern-js/rslib": "2.68.10",
86
- "@modern-js/types": "3.8.2",
86
+ "@modern-js/types": "3.9.0",
87
87
  "@scripts/rstest-config": "2.66.0"
88
88
  },
89
89
  "sideEffects": false,