@bleedingdev/modern-js-plugin-bff 3.9.0-ultramodern.12 → 3.9.0-ultramodern.13

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/cli.js CHANGED
@@ -164,7 +164,7 @@ const bffPlugin = ()=>({
164
164
  appContext.apiDirectory,
165
165
  appContext.sharedDirectory
166
166
  ].filter(Boolean);
167
- return [];
167
+ else return [];
168
168
  });
169
169
  api.onFileChanged(async (e)=>{
170
170
  const { filename, eventType, isPrivate } = e;
@@ -44,15 +44,6 @@ const utils_namespaceObject = require("@modern-js/utils");
44
44
  const external_path_namespaceObject = require("path");
45
45
  var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
46
46
  const adapter_js_namespaceObject = require("./runtime/hono/adapter.js");
47
- async function loadRuntimeAdapters(specifier, api) {
48
- if ('string' != typeof specifier || '' === specifier.trim()) throw new Error('The BFF runtime adapter must be a module specifier.');
49
- const context = api.getServerContext();
50
- const module = await (0, utils_namespaceObject.compatibleRequire)((0, utils_namespaceObject.tryResolve)(specifier, context.appDirectory || context.distDirectory || process.cwd()), false);
51
- if (!module || 'function' != typeof module.createRuntimeAdapters) throw new Error(`BFF runtime adapter module "${specifier}" must export createRuntimeAdapters.`);
52
- const adapters = await module.createRuntimeAdapters(api);
53
- if (!Array.isArray(adapters) || 0 === adapters.length || adapters.some((adapter)=>!adapter || 'function' != typeof adapter.registerMiddleware)) throw new Error(`BFF runtime adapter module "${specifier}" returned invalid adapters.`);
54
- return adapters;
55
- }
56
47
  const normalizePrefixList = (prefix)=>{
57
48
  if (Array.isArray(prefix)) return prefix.filter(Boolean);
58
49
  return [
@@ -72,9 +63,7 @@ const server = (options = {})=>({
72
63
  let apiRouter = null;
73
64
  const appContext = api.getServerContext();
74
65
  const runtimeFramework = appContext.bffRuntimeFramework ?? 'hono';
75
- if (options.runtimeAdapters && Object.hasOwn(options.runtimeAdapters, 'hono')) throw new Error('The native Hono BFF adapter cannot be overridden.');
76
- const adapterModule = options.runtimeAdapters?.[runtimeFramework];
77
- if ('hono' !== runtimeFramework && (!options.runtimeAdapters || !Object.hasOwn(options.runtimeAdapters, runtimeFramework) || 'string' != typeof adapterModule || '' === adapterModule.trim())) throw new Error(`No BFF runtime adapter is registered for "${runtimeFramework}".`);
66
+ if ('hono' !== runtimeFramework) throw new Error(`Native BFF server plugin requires Hono; received "${runtimeFramework}".`);
78
67
  api.onPrepare(async ()=>{
79
68
  const appContext = api.getServerContext();
80
69
  const { render } = appContext;
@@ -90,51 +79,46 @@ const server = (options = {})=>({
90
79
  const httpMethodDecider = config?.bff?.httpMethodDecider;
91
80
  const { distDirectory: pwd, middlewares: globalMiddlewares } = api.getServerContext();
92
81
  const webOnly = await (0, utils_namespaceObject.isWebOnly)();
93
- if ('hono' === runtimeFramework) {
94
- let handler;
95
- if (webOnly) handler = async (c, next)=>{
96
- c.body('');
97
- await next();
98
- };
99
- else {
100
- const runner = api.getHooks();
101
- const renderHandler = enableHandleWeb ? render : null;
102
- handler = await runner.prepareApiServer.call({
103
- pwd: pwd,
104
- prefix,
105
- render: renderHandler,
106
- httpMethodDecider
107
- });
108
- }
109
- if (handler && (0, utils_namespaceObject.isFunction)(handler)) globalMiddlewares.push({
110
- name: 'bind-bff',
111
- handler: (c, next)=>{
112
- if (!prefixList.some((item)=>c.req.path.startsWith(item)) && !enableHandleWeb) return next();
113
- return handler(c, next);
114
- },
115
- order: 'post',
116
- before: [
117
- 'custom-server-hook',
118
- 'custom-server-middleware',
119
- 'render'
120
- ]
82
+ let handler;
83
+ if (webOnly) handler = async (c, next)=>{
84
+ c.body('');
85
+ await next();
86
+ };
87
+ else {
88
+ const runner = api.getHooks();
89
+ const renderHandler = enableHandleWeb ? render : null;
90
+ handler = await runner.prepareApiServer.call({
91
+ pwd: pwd,
92
+ prefix,
93
+ render: renderHandler,
94
+ httpMethodDecider
121
95
  });
122
96
  }
97
+ if (handler && (0, utils_namespaceObject.isFunction)(handler)) globalMiddlewares.push({
98
+ name: 'bind-bff',
99
+ handler: (c, next)=>{
100
+ if (!prefixList.some((item)=>c.req.path.startsWith(item)) && !enableHandleWeb) return next();
101
+ return handler(c, next);
102
+ },
103
+ order: 'post',
104
+ before: [
105
+ 'custom-server-hook',
106
+ 'custom-server-middleware',
107
+ 'render'
108
+ ]
109
+ });
123
110
  let createHonoRouteBinder;
124
- if ('hono' === runtimeFramework && void 0 !== options.honoRouteBinder) {
111
+ if (void 0 !== options.honoRouteBinder) {
125
112
  if ('string' != typeof options.honoRouteBinder || '' === options.honoRouteBinder.trim()) throw new Error('The Hono BFF route binder must be a module specifier.');
126
113
  const context = api.getServerContext();
127
114
  const module = await (0, utils_namespaceObject.compatibleRequire)((0, utils_namespaceObject.tryResolve)(options.honoRouteBinder, context.appDirectory || context.distDirectory || process.cwd()), false);
128
115
  if (!module || 'function' != typeof module.createHonoRouteBinder) throw new Error(`BFF route binder module "${options.honoRouteBinder}" must export createHonoRouteBinder.`);
129
116
  createHonoRouteBinder = module.createHonoRouteBinder;
130
117
  }
131
- const runtimeAdapters = 'hono' === runtimeFramework ? [
132
- new adapter_js_namespaceObject.HonoAdapter(api, createHonoRouteBinder)
133
- ] : await loadRuntimeAdapters(adapterModule, api);
134
- await Promise.all(runtimeAdapters.map((adapter)=>adapter.registerMiddleware({
135
- prefix: 'hono' === runtimeFramework ? prefix : prefixList,
136
- enableHandleWeb
137
- })));
118
+ await new adapter_js_namespaceObject.HonoAdapter(api, createHonoRouteBinder).registerMiddleware({
119
+ prefix,
120
+ enableHandleWeb
121
+ });
138
122
  });
139
123
  api.onReset(async ({ event })=>{
140
124
  if ('file-change' === event.type && apiRouter) {
@@ -147,7 +131,6 @@ const server = (options = {})=>({
147
131
  }
148
132
  });
149
133
  const prepareApiServer = async (input, next)=>{
150
- if ('hono' !== runtimeFramework) return next(input);
151
134
  const { pwd, prefix, httpMethodDecider } = input;
152
135
  const defaultApiDirectory = external_path_default().resolve(pwd, utils_namespaceObject.API_DIR);
153
136
  const appContext = api.getServerContext();
@@ -90,7 +90,7 @@ const createHonoHandler = (handler)=>async (c)=>{
90
90
  }
91
91
  throw error;
92
92
  }
93
- {
93
+ else {
94
94
  const routePath = c.req.routePath;
95
95
  const paramNames = routePath.match(/:\w+/g)?.map((s)=>s.slice(1)) || [];
96
96
  const params = Object.fromEntries(paramNames.map((name)=>[
package/dist/esm/cli.mjs CHANGED
@@ -121,7 +121,7 @@ const bffPlugin = ()=>({
121
121
  appContext.apiDirectory,
122
122
  appContext.sharedDirectory
123
123
  ].filter(Boolean);
124
- return [];
124
+ else return [];
125
125
  });
126
126
  api.onFileChanged(async (e)=>{
127
127
  const { filename, eventType, isPrivate } = e;
@@ -2,15 +2,6 @@ import { ApiRouter } from "@modern-js/bff-core";
2
2
  import { API_DIR, compatibleRequire, isFunction, isWebOnly, tryResolve } from "@modern-js/utils";
3
3
  import path from "path";
4
4
  import { HonoAdapter } from "./runtime/hono/adapter.mjs";
5
- async function loadRuntimeAdapters(specifier, api) {
6
- if ('string' != typeof specifier || '' === specifier.trim()) throw new Error('The BFF runtime adapter must be a module specifier.');
7
- const context = api.getServerContext();
8
- const module = await compatibleRequire(tryResolve(specifier, context.appDirectory || context.distDirectory || process.cwd()), false);
9
- if (!module || 'function' != typeof module.createRuntimeAdapters) throw new Error(`BFF runtime adapter module "${specifier}" must export createRuntimeAdapters.`);
10
- const adapters = await module.createRuntimeAdapters(api);
11
- if (!Array.isArray(adapters) || 0 === adapters.length || adapters.some((adapter)=>!adapter || 'function' != typeof adapter.registerMiddleware)) throw new Error(`BFF runtime adapter module "${specifier}" returned invalid adapters.`);
12
- return adapters;
13
- }
14
5
  const normalizePrefixList = (prefix)=>{
15
6
  if (Array.isArray(prefix)) return prefix.filter(Boolean);
16
7
  return [
@@ -30,9 +21,7 @@ const server = (options = {})=>({
30
21
  let apiRouter = null;
31
22
  const appContext = api.getServerContext();
32
23
  const runtimeFramework = appContext.bffRuntimeFramework ?? 'hono';
33
- if (options.runtimeAdapters && Object.hasOwn(options.runtimeAdapters, 'hono')) throw new Error('The native Hono BFF adapter cannot be overridden.');
34
- const adapterModule = options.runtimeAdapters?.[runtimeFramework];
35
- if ('hono' !== runtimeFramework && (!options.runtimeAdapters || !Object.hasOwn(options.runtimeAdapters, runtimeFramework) || 'string' != typeof adapterModule || '' === adapterModule.trim())) throw new Error(`No BFF runtime adapter is registered for "${runtimeFramework}".`);
24
+ if ('hono' !== runtimeFramework) throw new Error(`Native BFF server plugin requires Hono; received "${runtimeFramework}".`);
36
25
  api.onPrepare(async ()=>{
37
26
  const appContext = api.getServerContext();
38
27
  const { render } = appContext;
@@ -48,51 +37,46 @@ const server = (options = {})=>({
48
37
  const httpMethodDecider = config?.bff?.httpMethodDecider;
49
38
  const { distDirectory: pwd, middlewares: globalMiddlewares } = api.getServerContext();
50
39
  const webOnly = await isWebOnly();
51
- if ('hono' === runtimeFramework) {
52
- let handler;
53
- if (webOnly) handler = async (c, next)=>{
54
- c.body('');
55
- await next();
56
- };
57
- else {
58
- const runner = api.getHooks();
59
- const renderHandler = enableHandleWeb ? render : null;
60
- handler = await runner.prepareApiServer.call({
61
- pwd: pwd,
62
- prefix,
63
- render: renderHandler,
64
- httpMethodDecider
65
- });
66
- }
67
- if (handler && isFunction(handler)) globalMiddlewares.push({
68
- name: 'bind-bff',
69
- handler: (c, next)=>{
70
- if (!prefixList.some((item)=>c.req.path.startsWith(item)) && !enableHandleWeb) return next();
71
- return handler(c, next);
72
- },
73
- order: 'post',
74
- before: [
75
- 'custom-server-hook',
76
- 'custom-server-middleware',
77
- 'render'
78
- ]
40
+ let handler;
41
+ if (webOnly) handler = async (c, next)=>{
42
+ c.body('');
43
+ await next();
44
+ };
45
+ else {
46
+ const runner = api.getHooks();
47
+ const renderHandler = enableHandleWeb ? render : null;
48
+ handler = await runner.prepareApiServer.call({
49
+ pwd: pwd,
50
+ prefix,
51
+ render: renderHandler,
52
+ httpMethodDecider
79
53
  });
80
54
  }
55
+ if (handler && isFunction(handler)) globalMiddlewares.push({
56
+ name: 'bind-bff',
57
+ handler: (c, next)=>{
58
+ if (!prefixList.some((item)=>c.req.path.startsWith(item)) && !enableHandleWeb) return next();
59
+ return handler(c, next);
60
+ },
61
+ order: 'post',
62
+ before: [
63
+ 'custom-server-hook',
64
+ 'custom-server-middleware',
65
+ 'render'
66
+ ]
67
+ });
81
68
  let createHonoRouteBinder;
82
- if ('hono' === runtimeFramework && void 0 !== options.honoRouteBinder) {
69
+ if (void 0 !== options.honoRouteBinder) {
83
70
  if ('string' != typeof options.honoRouteBinder || '' === options.honoRouteBinder.trim()) throw new Error('The Hono BFF route binder must be a module specifier.');
84
71
  const context = api.getServerContext();
85
72
  const module = await compatibleRequire(tryResolve(options.honoRouteBinder, context.appDirectory || context.distDirectory || process.cwd()), false);
86
73
  if (!module || 'function' != typeof module.createHonoRouteBinder) throw new Error(`BFF route binder module "${options.honoRouteBinder}" must export createHonoRouteBinder.`);
87
74
  createHonoRouteBinder = module.createHonoRouteBinder;
88
75
  }
89
- const runtimeAdapters = 'hono' === runtimeFramework ? [
90
- new HonoAdapter(api, createHonoRouteBinder)
91
- ] : await loadRuntimeAdapters(adapterModule, api);
92
- await Promise.all(runtimeAdapters.map((adapter)=>adapter.registerMiddleware({
93
- prefix: 'hono' === runtimeFramework ? prefix : prefixList,
94
- enableHandleWeb
95
- })));
76
+ await new HonoAdapter(api, createHonoRouteBinder).registerMiddleware({
77
+ prefix,
78
+ enableHandleWeb
79
+ });
96
80
  });
97
81
  api.onReset(async ({ event })=>{
98
82
  if ('file-change' === event.type && apiRouter) {
@@ -105,7 +89,6 @@ const server = (options = {})=>({
105
89
  }
106
90
  });
107
91
  const prepareApiServer = async (input, next)=>{
108
- if ('hono' !== runtimeFramework) return next(input);
109
92
  const { pwd, prefix, httpMethodDecider } = input;
110
93
  const defaultApiDirectory = path.resolve(pwd, API_DIR);
111
94
  const appContext = api.getServerContext();
@@ -47,7 +47,7 @@ const createHonoHandler = (handler)=>async (c)=>{
47
47
  }
48
48
  throw error;
49
49
  }
50
- {
50
+ else {
51
51
  const routePath = c.req.routePath;
52
52
  const paramNames = routePath.match(/:\w+/g)?.map((s)=>s.slice(1)) || [];
53
53
  const params = Object.fromEntries(paramNames.map((name)=>[
@@ -125,7 +125,7 @@ const bffPlugin = ()=>({
125
125
  appContext.apiDirectory,
126
126
  appContext.sharedDirectory
127
127
  ].filter(Boolean);
128
- return [];
128
+ else return [];
129
129
  });
130
130
  api.onFileChanged(async (e)=>{
131
131
  const { filename, eventType, isPrivate } = e;
@@ -3,15 +3,6 @@ import { ApiRouter } from "@modern-js/bff-core";
3
3
  import { API_DIR, compatibleRequire, isFunction, isWebOnly, tryResolve } from "@modern-js/utils";
4
4
  import path from "path";
5
5
  import { HonoAdapter } from "./runtime/hono/adapter.mjs";
6
- async function loadRuntimeAdapters(specifier, api) {
7
- if ('string' != typeof specifier || '' === specifier.trim()) throw new Error('The BFF runtime adapter must be a module specifier.');
8
- const context = api.getServerContext();
9
- const module = await compatibleRequire(tryResolve(specifier, context.appDirectory || context.distDirectory || process.cwd()), false);
10
- if (!module || 'function' != typeof module.createRuntimeAdapters) throw new Error(`BFF runtime adapter module "${specifier}" must export createRuntimeAdapters.`);
11
- const adapters = await module.createRuntimeAdapters(api);
12
- if (!Array.isArray(adapters) || 0 === adapters.length || adapters.some((adapter)=>!adapter || 'function' != typeof adapter.registerMiddleware)) throw new Error(`BFF runtime adapter module "${specifier}" returned invalid adapters.`);
13
- return adapters;
14
- }
15
6
  const normalizePrefixList = (prefix)=>{
16
7
  if (Array.isArray(prefix)) return prefix.filter(Boolean);
17
8
  return [
@@ -31,9 +22,7 @@ const server = (options = {})=>({
31
22
  let apiRouter = null;
32
23
  const appContext = api.getServerContext();
33
24
  const runtimeFramework = appContext.bffRuntimeFramework ?? 'hono';
34
- if (options.runtimeAdapters && Object.hasOwn(options.runtimeAdapters, 'hono')) throw new Error('The native Hono BFF adapter cannot be overridden.');
35
- const adapterModule = options.runtimeAdapters?.[runtimeFramework];
36
- if ('hono' !== runtimeFramework && (!options.runtimeAdapters || !Object.hasOwn(options.runtimeAdapters, runtimeFramework) || 'string' != typeof adapterModule || '' === adapterModule.trim())) throw new Error(`No BFF runtime adapter is registered for "${runtimeFramework}".`);
25
+ if ('hono' !== runtimeFramework) throw new Error(`Native BFF server plugin requires Hono; received "${runtimeFramework}".`);
37
26
  api.onPrepare(async ()=>{
38
27
  const appContext = api.getServerContext();
39
28
  const { render } = appContext;
@@ -49,51 +38,46 @@ const server = (options = {})=>({
49
38
  const httpMethodDecider = config?.bff?.httpMethodDecider;
50
39
  const { distDirectory: pwd, middlewares: globalMiddlewares } = api.getServerContext();
51
40
  const webOnly = await isWebOnly();
52
- if ('hono' === runtimeFramework) {
53
- let handler;
54
- if (webOnly) handler = async (c, next)=>{
55
- c.body('');
56
- await next();
57
- };
58
- else {
59
- const runner = api.getHooks();
60
- const renderHandler = enableHandleWeb ? render : null;
61
- handler = await runner.prepareApiServer.call({
62
- pwd: pwd,
63
- prefix,
64
- render: renderHandler,
65
- httpMethodDecider
66
- });
67
- }
68
- if (handler && isFunction(handler)) globalMiddlewares.push({
69
- name: 'bind-bff',
70
- handler: (c, next)=>{
71
- if (!prefixList.some((item)=>c.req.path.startsWith(item)) && !enableHandleWeb) return next();
72
- return handler(c, next);
73
- },
74
- order: 'post',
75
- before: [
76
- 'custom-server-hook',
77
- 'custom-server-middleware',
78
- 'render'
79
- ]
41
+ let handler;
42
+ if (webOnly) handler = async (c, next)=>{
43
+ c.body('');
44
+ await next();
45
+ };
46
+ else {
47
+ const runner = api.getHooks();
48
+ const renderHandler = enableHandleWeb ? render : null;
49
+ handler = await runner.prepareApiServer.call({
50
+ pwd: pwd,
51
+ prefix,
52
+ render: renderHandler,
53
+ httpMethodDecider
80
54
  });
81
55
  }
56
+ if (handler && isFunction(handler)) globalMiddlewares.push({
57
+ name: 'bind-bff',
58
+ handler: (c, next)=>{
59
+ if (!prefixList.some((item)=>c.req.path.startsWith(item)) && !enableHandleWeb) return next();
60
+ return handler(c, next);
61
+ },
62
+ order: 'post',
63
+ before: [
64
+ 'custom-server-hook',
65
+ 'custom-server-middleware',
66
+ 'render'
67
+ ]
68
+ });
82
69
  let createHonoRouteBinder;
83
- if ('hono' === runtimeFramework && void 0 !== options.honoRouteBinder) {
70
+ if (void 0 !== options.honoRouteBinder) {
84
71
  if ('string' != typeof options.honoRouteBinder || '' === options.honoRouteBinder.trim()) throw new Error('The Hono BFF route binder must be a module specifier.');
85
72
  const context = api.getServerContext();
86
73
  const module = await compatibleRequire(tryResolve(options.honoRouteBinder, context.appDirectory || context.distDirectory || process.cwd()), false);
87
74
  if (!module || 'function' != typeof module.createHonoRouteBinder) throw new Error(`BFF route binder module "${options.honoRouteBinder}" must export createHonoRouteBinder.`);
88
75
  createHonoRouteBinder = module.createHonoRouteBinder;
89
76
  }
90
- const runtimeAdapters = 'hono' === runtimeFramework ? [
91
- new HonoAdapter(api, createHonoRouteBinder)
92
- ] : await loadRuntimeAdapters(adapterModule, api);
93
- await Promise.all(runtimeAdapters.map((adapter)=>adapter.registerMiddleware({
94
- prefix: 'hono' === runtimeFramework ? prefix : prefixList,
95
- enableHandleWeb
96
- })));
77
+ await new HonoAdapter(api, createHonoRouteBinder).registerMiddleware({
78
+ prefix,
79
+ enableHandleWeb
80
+ });
97
81
  });
98
82
  api.onReset(async ({ event })=>{
99
83
  if ('file-change' === event.type && apiRouter) {
@@ -106,7 +90,6 @@ const server = (options = {})=>({
106
90
  }
107
91
  });
108
92
  const prepareApiServer = async (input, next)=>{
109
- if ('hono' !== runtimeFramework) return next(input);
110
93
  const { pwd, prefix, httpMethodDecider } = input;
111
94
  const defaultApiDirectory = path.resolve(pwd, API_DIR);
112
95
  const appContext = api.getServerContext();
@@ -48,7 +48,7 @@ const createHonoHandler = (handler)=>async (c)=>{
48
48
  }
49
49
  throw error;
50
50
  }
51
- {
51
+ else {
52
52
  const routePath = c.req.routePath;
53
53
  const paramNames = routePath.match(/:\w+/g)?.map((s)=>s.slice(1)) || [];
54
54
  const params = Object.fromEntries(paramNames.map((name)=>[
@@ -1,10 +1,6 @@
1
- import type { BffUserConfig, ServerPlugin } from '@modern-js/server-core';
2
- type RuntimeFramework = NonNullable<BffUserConfig['runtimeFramework']>;
1
+ import type { ServerPlugin } from '@modern-js/server-core';
3
2
  export type BffServerPluginOptions = {
4
3
  honoRouteBinder?: string;
5
- runtimeAdapters?: {
6
- [Runtime in RuntimeFramework]?: Runtime extends 'hono' ? never : string;
7
- };
8
4
  };
9
5
  export default _default;
10
6
  declare function _default(options?: BffServerPluginOptions): ServerPlugin;
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.9.0-ultramodern.12",
20
+ "version": "3.9.0-ultramodern.13",
21
21
  "types": "./dist/types/cli.d.ts",
22
22
  "main": "./dist/cjs/cli.js",
23
23
  "exports": {
@@ -91,17 +91,17 @@
91
91
  }
92
92
  },
93
93
  "dependencies": {
94
- "@modern-js/bff-core": "npm:@bleedingdev/modern-js-bff-core@3.9.0-ultramodern.12",
95
- "@modern-js/create-request": "npm:@bleedingdev/modern-js-create-request@3.9.0-ultramodern.12",
96
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.0-ultramodern.12",
97
- "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.9.0-ultramodern.12",
98
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.12",
94
+ "@modern-js/bff-core": "npm:@bleedingdev/modern-js-bff-core@3.9.0-ultramodern.13",
95
+ "@modern-js/create-request": "npm:@bleedingdev/modern-js-create-request@3.9.0-ultramodern.13",
96
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.9.0-ultramodern.13",
97
+ "@modern-js/server-utils": "npm:@bleedingdev/modern-js-server-utils@3.9.0-ultramodern.13",
98
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.13",
99
99
  "@swc/core": "1.16.2",
100
100
  "qs": "^6.16.0",
101
101
  "type-is": "^2.1.0"
102
102
  },
103
103
  "peerDependencies": {
104
- "@modern-js/app-tools": "3.9.0-ultramodern.12"
104
+ "@modern-js/app-tools": "3.9.0-ultramodern.13"
105
105
  },
106
106
  "peerDependenciesMeta": {
107
107
  "@modern-js/app-tools": {
@@ -109,23 +109,23 @@
109
109
  }
110
110
  },
111
111
  "devDependencies": {
112
- "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.9.0-ultramodern.12",
113
- "@modern-js/bff-runtime": "npm:@bleedingdev/modern-js-bff-runtime@3.9.0-ultramodern.12",
114
- "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.9.0-ultramodern.12",
115
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.0-ultramodern.12",
116
- "@modern-js/runtime": "npm:@bleedingdev/modern-js-runtime@3.9.0-ultramodern.12",
117
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.12",
118
- "@rsbuild/core": "2.2.3",
119
- "@rslib/core": "1.0.0",
112
+ "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.9.0-ultramodern.13",
113
+ "@modern-js/bff-runtime": "npm:@bleedingdev/modern-js-bff-runtime@3.9.0-ultramodern.13",
114
+ "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.9.0-ultramodern.13",
115
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.0-ultramodern.13",
116
+ "@modern-js/runtime": "npm:@bleedingdev/modern-js-runtime@3.9.0-ultramodern.13",
117
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.13",
118
+ "@rsbuild/core": "2.2.9",
119
+ "@rslib/core": "1.0.2",
120
120
  "@scripts/rstest-config": "2.66.0",
121
- "@types/node": "^26.4.1",
121
+ "@types/node": "^26.6.2",
122
122
  "@types/qs": "^6.15.1",
123
123
  "@types/type-is": "^1.6.7",
124
124
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
125
125
  "esbuild": "^0.28.2",
126
- "memfs": "^4.71.0",
126
+ "memfs": "^4.79.0",
127
127
  "typescript": "^7.0.2",
128
- "zod": "^4.5.4"
128
+ "zod": "npm:@bleedingdev/zod@4.6.5"
129
129
  },
130
130
  "engines": {
131
131
  "node": ">=26.7.0"