@bleedingdev/modern-js-runtime 3.5.0-ultramodern.6 → 3.5.0-ultramodern.76

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 (145) hide show
  1. package/dist/cjs/boundary-debugger/index.js +13 -3
  2. package/dist/cjs/cli/registry.js +18 -0
  3. package/dist/cjs/cli/ssr/index.js +3 -2
  4. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +8 -4
  5. package/dist/cjs/core/browser/hydrate.js +16 -2
  6. package/dist/cjs/core/browser/index.js +15 -3
  7. package/dist/cjs/core/context/index.js +3 -0
  8. package/dist/cjs/core/context/public.js +49 -0
  9. package/dist/cjs/core/context/runtime.js +6 -8
  10. package/dist/cjs/core/react/wrapper.js +57 -0
  11. package/dist/cjs/core/server/federatedCss.js +7 -3
  12. package/dist/cjs/core/server/requestHandler.js +15 -45
  13. package/dist/cjs/core/server/requestResponse.js +83 -0
  14. package/dist/cjs/core/server/routerCleanup.js +16 -6
  15. package/dist/cjs/core/server/scriptOrder.js +13 -10
  16. package/dist/cjs/core/server/stream/afterTemplate.js +9 -5
  17. package/dist/cjs/core/server/stream/template.js +3 -3
  18. package/dist/cjs/core/server/string/loadable.js +3 -11
  19. package/dist/cjs/index.js +7 -6
  20. package/dist/cjs/module-federation/consume-surface.js +199 -0
  21. package/dist/cjs/module-federation/distributed-ssr.js +134 -0
  22. package/dist/cjs/module-federation/index.js +258 -120
  23. package/dist/cjs/module-federation/last-known-good.js +124 -0
  24. package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +140 -0
  25. package/dist/cjs/module-federation/surface-resolution-types.js +61 -0
  26. package/dist/cjs/router/cli/code/nestedRoutes.js +3 -0
  27. package/dist/cjs/router/cli/code/templates.js +3 -2
  28. package/dist/cjs/router/cli/constants.js +1 -0
  29. package/dist/cjs/router/cli/nestedRoutesSpec.js +3 -1
  30. package/dist/cjs/router/runtime/hooks.js +7 -6
  31. package/dist/cjs/router/runtime/internal.js +30 -16
  32. package/dist/cjs/router/runtime/plugin.js +6 -7
  33. package/dist/cjs/router/runtime/provider.js +58 -12
  34. package/dist/esm/boundary-debugger/index.mjs +13 -3
  35. package/dist/esm/cli/code.mjs +12 -12
  36. package/dist/esm/cli/registry.mjs +0 -0
  37. package/dist/esm/cli/ssr/index.mjs +3 -2
  38. package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +8 -4
  39. package/dist/esm/core/browser/hydrate.mjs +15 -4
  40. package/dist/esm/core/browser/index.mjs +11 -5
  41. package/dist/esm/core/context/index.mjs +1 -1
  42. package/dist/esm/core/context/public.mjs +5 -0
  43. package/dist/esm/core/context/runtime.mjs +4 -6
  44. package/dist/esm/core/react/wrapper.mjs +58 -1
  45. package/dist/esm/core/server/federatedCss.mjs +7 -3
  46. package/dist/esm/core/server/requestHandler.mjs +15 -45
  47. package/dist/esm/core/server/requestResponse.mjs +39 -0
  48. package/dist/esm/core/server/routerCleanup.mjs +11 -4
  49. package/dist/esm/core/server/scriptOrder.mjs +11 -8
  50. package/dist/esm/core/server/stream/afterTemplate.mjs +10 -6
  51. package/dist/esm/core/server/stream/template.mjs +3 -3
  52. package/dist/esm/core/server/string/loadable.mjs +3 -8
  53. package/dist/esm/exports/loadable.mjs +3 -3
  54. package/dist/esm/index.mjs +2 -1
  55. package/dist/esm/module-federation/consume-surface.mjs +158 -0
  56. package/dist/esm/module-federation/distributed-ssr.mjs +81 -0
  57. package/dist/esm/module-federation/index.mjs +6 -0
  58. package/dist/esm/module-federation/last-known-good.mjs +80 -0
  59. package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +100 -0
  60. package/dist/esm/module-federation/surface-resolution-types.mjs +8 -0
  61. package/dist/esm/router/cli/code/index.mjs +5 -5
  62. package/dist/esm/router/cli/code/nestedRoutes.mjs +3 -0
  63. package/dist/esm/router/cli/code/templates.mjs +3 -2
  64. package/dist/esm/router/cli/constants.mjs +1 -0
  65. package/dist/esm/router/cli/handler.mjs +3 -3
  66. package/dist/esm/router/cli/nestedRoutesSpec.mjs +3 -1
  67. package/dist/esm/router/runtime/hooks.mjs +7 -6
  68. package/dist/esm/router/runtime/internal.mjs +26 -18
  69. package/dist/esm/router/runtime/plugin.mjs +6 -7
  70. package/dist/esm/router/runtime/provider.mjs +56 -13
  71. package/dist/esm-node/boundary-debugger/index.mjs +13 -3
  72. package/dist/esm-node/cli/code.mjs +12 -12
  73. package/dist/esm-node/cli/registry.mjs +1 -0
  74. package/dist/esm-node/cli/ssr/index.mjs +3 -2
  75. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +8 -4
  76. package/dist/esm-node/core/browser/hydrate.mjs +15 -4
  77. package/dist/esm-node/core/browser/index.mjs +11 -5
  78. package/dist/esm-node/core/context/index.mjs +1 -1
  79. package/dist/esm-node/core/context/public.mjs +6 -0
  80. package/dist/esm-node/core/context/runtime.mjs +4 -6
  81. package/dist/esm-node/core/react/wrapper.mjs +58 -1
  82. package/dist/esm-node/core/server/federatedCss.mjs +7 -3
  83. package/dist/esm-node/core/server/requestHandler.mjs +15 -45
  84. package/dist/esm-node/core/server/requestResponse.mjs +40 -0
  85. package/dist/esm-node/core/server/routerCleanup.mjs +11 -4
  86. package/dist/esm-node/core/server/scriptOrder.mjs +11 -8
  87. package/dist/esm-node/core/server/stream/afterTemplate.mjs +10 -6
  88. package/dist/esm-node/core/server/stream/template.mjs +3 -3
  89. package/dist/esm-node/core/server/string/loadable.mjs +3 -8
  90. package/dist/esm-node/exports/loadable.mjs +3 -3
  91. package/dist/esm-node/index.mjs +2 -1
  92. package/dist/esm-node/module-federation/consume-surface.mjs +159 -0
  93. package/dist/esm-node/module-federation/distributed-ssr.mjs +82 -0
  94. package/dist/esm-node/module-federation/index.mjs +6 -0
  95. package/dist/esm-node/module-federation/last-known-good.mjs +81 -0
  96. package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +101 -0
  97. package/dist/esm-node/module-federation/surface-resolution-types.mjs +9 -0
  98. package/dist/esm-node/router/cli/code/index.mjs +5 -5
  99. package/dist/esm-node/router/cli/code/nestedRoutes.mjs +3 -0
  100. package/dist/esm-node/router/cli/code/templates.mjs +3 -2
  101. package/dist/esm-node/router/cli/constants.mjs +1 -0
  102. package/dist/esm-node/router/cli/handler.mjs +3 -3
  103. package/dist/esm-node/router/cli/nestedRoutesSpec.mjs +3 -1
  104. package/dist/esm-node/router/runtime/hooks.mjs +7 -6
  105. package/dist/esm-node/router/runtime/internal.mjs +26 -18
  106. package/dist/esm-node/router/runtime/plugin.mjs +6 -7
  107. package/dist/esm-node/router/runtime/provider.mjs +56 -13
  108. package/dist/types/boundary-debugger/index.d.ts +1 -1
  109. package/dist/types/cli/registry.d.ts +2 -0
  110. package/dist/types/common.d.ts +8 -1
  111. package/dist/types/core/browser/hydrate.d.ts +2 -1
  112. package/dist/types/core/browser/index.d.ts +4 -0
  113. package/dist/types/core/context/index.d.ts +26 -10
  114. package/dist/types/core/context/monitors/default.d.ts +10 -2
  115. package/dist/types/core/context/monitors/index.d.ts +1 -1
  116. package/dist/types/core/context/monitors/index.server.d.ts +2 -2
  117. package/dist/types/core/context/public.d.ts +27 -0
  118. package/dist/types/core/context/runtime.d.ts +12 -22
  119. package/dist/types/core/react/index.d.ts +1 -1
  120. package/dist/types/core/server/requestResponse.d.ts +15 -0
  121. package/dist/types/core/server/routerCleanup.d.ts +2 -1
  122. package/dist/types/core/server/scriptOrder.d.ts +1 -1
  123. package/dist/types/core/server/stream/shared.d.ts +2 -2
  124. package/dist/types/core/server/string/loadable.d.ts +0 -2
  125. package/dist/types/exports/head.d.ts +1 -1
  126. package/dist/types/index.d.ts +5 -5
  127. package/dist/types/internal.d.ts +0 -1
  128. package/dist/types/module-federation/consume-surface.d.ts +104 -0
  129. package/dist/types/module-federation/distributed-ssr.d.ts +61 -0
  130. package/dist/types/module-federation/index.d.ts +6 -0
  131. package/dist/types/module-federation/last-known-good.d.ts +72 -0
  132. package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +25 -0
  133. package/dist/types/module-federation/surface-resolution-types.d.ts +23 -0
  134. package/dist/types/router/cli/constants.d.ts +1 -0
  135. package/dist/types/router/runtime/hooks.d.ts +10 -6
  136. package/dist/types/router/runtime/internal.d.ts +13 -3
  137. package/dist/types/router/runtime/plugin.d.ts +1 -1
  138. package/dist/types/router/runtime/plugin.node.d.ts +1 -1
  139. package/dist/types/router/runtime/provider.d.ts +28 -11
  140. package/dist/types/router/runtime/types.d.ts +27 -5
  141. package/package.json +46 -27
  142. package/dist/cjs/exports/tanstack-router.js +0 -83
  143. package/dist/esm/exports/tanstack-router.mjs +0 -30
  144. package/dist/esm-node/exports/tanstack-router.mjs +0 -31
  145. package/dist/types/exports/tanstack-router.d.ts +0 -88
@@ -1,4 +1,4 @@
1
- import { type RuntimePlugin } from '../../core';
1
+ import type { RuntimePlugin } from '../../common';
2
2
  import type { RouterExtendsHooks } from './hooks';
3
3
  import type { RouterConfig, Routes } from './types';
4
4
  export declare let finalRouteConfig: RouterConfig['routesConfig'];
@@ -1,4 +1,4 @@
1
- import type { RuntimePlugin } from '../../core';
1
+ import type { RuntimePlugin } from '../../common';
2
2
  import type { RouterExtendsHooks } from './hooks';
3
3
  import type { RouterConfig } from './types';
4
4
  export declare const routerPlugin: (userConfig?: Partial<RouterConfig>) => RuntimePlugin<{
@@ -11,7 +11,7 @@
11
11
  * - `@modern-js/plugin-tanstack` registers the `tanstack` provider when its
12
12
  * runtime entry is imported.
13
13
  */
14
- import type { RuntimePlugin } from '../../core';
14
+ import type { RuntimePlugin } from '../../common';
15
15
  import type { RouterExtendsHooks } from './hooks';
16
16
  import type { RouterConfig } from './types';
17
17
  /**
@@ -35,19 +35,36 @@ export declare function reportUnsupportedProviderRegistryHooks(providerPlugin: {
35
35
  registryHooks?: Record<string, unknown>;
36
36
  }): string[];
37
37
  export type RouterProviderFactory = (userConfig: Partial<RouterConfig>) => RouterProviderPlugin;
38
+ export type RouterProviderRegistration = {
39
+ name: string;
40
+ factory: RouterProviderFactory;
41
+ isDefault?: boolean;
42
+ };
43
+ /**
44
+ * App-owned provider catalog. Provider factories close over their module graph,
45
+ * so they must be resolved from the runtime wrapper that owns the app instead
46
+ * of from a page-global first-registration winner.
47
+ */
48
+ export type RouterProviderRealm = Readonly<{
49
+ defaultProvider?: string;
50
+ get: (name: string) => RouterProviderFactory | undefined;
51
+ names: () => readonly string[];
52
+ }>;
53
+ export declare function createRouterProviderRealm(registrations: readonly RouterProviderRegistration[]): RouterProviderRealm;
38
54
  export declare function registerRouterProvider(name: string, factory: RouterProviderFactory, options?: {
39
55
  isDefault?: boolean;
40
56
  }): void;
41
57
  export declare function resolveRouterProvider(framework?: RouterConfig['framework'], options?: {
42
58
  /**
43
- * The resolving module's own copy of a provider. The registry is
44
- * realm-global with keep-first semantics, so in a page hosting several
45
- * independent Modern.js apps (Module Federation app-level remotes) the
46
- * first-loaded copy of a provider would otherwise win for *every* app —
47
- * a foreign factory closes over the foreign app's global context (routes,
48
- * App, runtime hooks) and renders the wrong app inside the resolving one.
49
- * When the resolved name matches `localDefault.name`, the local factory
50
- * is returned instead of whatever copy registered first.
59
+ * Provider factories owned by the resolving app/runtime wrapper. A realm
60
+ * is the exclusive provider source when supplied because its factories
61
+ * close over the correct app module graph.
62
+ */
63
+ realm?: RouterProviderRealm;
64
+ /**
65
+ * Legacy single-provider override retained for published wrappers. New
66
+ * integrations should pass an app-owned `realm`, which supports every
67
+ * provider rather than only the default.
51
68
  */
52
69
  localDefault?: {
53
70
  name: string;
@@ -55,7 +72,7 @@ export declare function resolveRouterProvider(framework?: RouterConfig['framewor
55
72
  };
56
73
  }): RouterProviderFactory;
57
74
  /**
58
- * Test-only escape hatch: the registry lives on `globalThis`, so unit tests
59
- * need a way to restore a pristine state between cases.
75
+ * Test-only escape hatch: compatibility registries live on `globalThis`, so
76
+ * unit tests need a way to restore a pristine state between cases.
60
77
  */
61
78
  export declare function unsafe_resetRouterProvidersForTesting(): void;
@@ -1,6 +1,12 @@
1
- import type { RequestContext } from '@modern-js/runtime-utils/node';
2
1
  import type { Params, RouteObject, RouteProps } from '@modern-js/runtime-utils/router';
3
- import type { NestedRoute, PageRoute } from '@modern-js/types';
2
+ export type ModernRoute = {
3
+ type: 'nested' | 'page';
4
+ path?: string;
5
+ id?: string;
6
+ component?: React.ComponentType | string;
7
+ children?: ModernRoute[];
8
+ [key: string]: any;
9
+ };
4
10
  export type SingleRouteConfig = RouteProps & {
5
11
  redirect?: string;
6
12
  routes?: SingleRouteConfig[];
@@ -19,13 +25,13 @@ export type RouterFramework = BuiltInRouterFramework | (string & {});
19
25
  export type RouterConfig = {
20
26
  /**
21
27
  * Select the router implementation used by Modern.js conventional routing.
22
- * - `react-router` (default): React Router v7 based integration
28
+ * - `react-router` (default): React Router based integration
23
29
  * - `tanstack`: TanStack Router integration
24
30
  */
25
31
  framework?: RouterFramework;
26
32
  routesConfig: {
27
33
  globalApp?: React.ComponentType<any>;
28
- routes?: (NestedRoute | PageRoute)[];
34
+ routes?: ModernRoute[];
29
35
  };
30
36
  /**
31
37
  * You should not use it
@@ -108,12 +114,28 @@ export type ModernRouteObject = RouteObject & {
108
114
  component?: React.ComponentType | LazyComponentDescriptor;
109
115
  entryCssFiles?: string[];
110
116
  };
117
+ type LoaderContextKey<T = unknown> = {
118
+ symbol: symbol;
119
+ getDefaultValue: () => T;
120
+ };
121
+ interface LoaderRequestGet<P extends Record<string, unknown>> {
122
+ <Key extends keyof P>(key: Key): P[Key];
123
+ <T>(key: LoaderContextKey<T>): T;
124
+ }
125
+ interface LoaderRequestSet<P extends Record<string, unknown>> {
126
+ <Key extends keyof P>(key: Key, value: P[Key]): void;
127
+ <T>(key: LoaderContextKey<T>, value: T): void;
128
+ }
129
+ type LoaderRequestContext<P extends Record<string, unknown> = {}> = {
130
+ get: LoaderRequestGet<P & Record<string, unknown>>;
131
+ set: LoaderRequestSet<P & Record<string, unknown>>;
132
+ };
111
133
  interface DataFunctionArgs<D = any> {
112
134
  request: Request;
113
135
  params: Params;
114
136
  context?: D;
115
137
  }
116
- export type LoaderFunctionArgs<P extends Record<string, unknown> = Record<string, unknown>> = DataFunctionArgs<RequestContext<P>>;
138
+ export type LoaderFunctionArgs<P extends Record<string, unknown> = Record<string, unknown>> = DataFunctionArgs<LoaderRequestContext<P>>;
117
139
  declare type DataFunctionValue = Response | NonNullable<unknown> | null;
118
140
  export type LoaderFunction = <P extends Record<string, unknown> = Record<string, unknown>>(args: LoaderFunctionArgs<P>) => Promise<DataFunctionValue> | DataFunctionValue;
119
141
  export {};
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.5.0-ultramodern.6",
20
+ "version": "3.5.0-ultramodern.76",
21
21
  "engines": {
22
22
  "node": ">=20"
23
23
  },
@@ -55,6 +55,12 @@
55
55
  "types": "./dist/types/core/browser/index.d.ts",
56
56
  "default": "./dist/esm/core/browser/index.mjs"
57
57
  },
58
+ "./registry": {
59
+ "types": "./dist/types/cli/registry.d.ts"
60
+ },
61
+ "./registry/*": {
62
+ "types": "./dist/types/cli/registry.d.ts"
63
+ },
58
64
  "./loadable": {
59
65
  "types": "./dist/types/exports/loadable.d.ts",
60
66
  "default": "./dist/esm/exports/loadable.mjs"
@@ -71,6 +77,18 @@
71
77
  "types": "./dist/types/module-federation/index.d.ts",
72
78
  "default": "./dist/esm/module-federation/index.mjs"
73
79
  },
80
+ "./module-federation/distributed-ssr": {
81
+ "types": "./dist/types/module-federation/distributed-ssr.d.ts",
82
+ "default": "./dist/esm/module-federation/distributed-ssr.mjs"
83
+ },
84
+ "./module-federation/manifest-recovery-runtime-plugin": {
85
+ "types": "./dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts",
86
+ "node": {
87
+ "import": "./dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs",
88
+ "require": "./dist/cjs/module-federation/manifest-recovery-runtime-plugin.js"
89
+ },
90
+ "default": "./dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs"
91
+ },
74
92
  "./ssr": {
75
93
  "types": "./dist/types/core/server/index.d.ts",
76
94
  "default": "./dist/esm/core/server/index.mjs"
@@ -99,10 +117,6 @@
99
117
  },
100
118
  "default": "./dist/esm/router/index.mjs"
101
119
  },
102
- "./tanstack-router": {
103
- "types": "./dist/types/exports/tanstack-router.d.ts",
104
- "default": "./dist/esm/exports/tanstack-router.mjs"
105
- },
106
120
  "./router/server": {
107
121
  "types": "./dist/types/router/runtime/server.d.ts",
108
122
  "default": "./dist/esm/router/runtime/server.mjs"
@@ -173,6 +187,12 @@
173
187
  "browser": [
174
188
  "./dist/types/core/browser/index.d.ts"
175
189
  ],
190
+ "registry": [
191
+ "./dist/types/cli/registry.d.ts"
192
+ ],
193
+ "registry/*": [
194
+ "./dist/types/cli/registry.d.ts"
195
+ ],
176
196
  "head": [
177
197
  "./dist/types/exports/head.d.ts"
178
198
  ],
@@ -182,6 +202,9 @@
182
202
  "module-federation": [
183
203
  "./dist/types/module-federation/index.d.ts"
184
204
  ],
205
+ "module-federation/manifest-recovery-runtime-plugin": [
206
+ "./dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts"
207
+ ],
185
208
  "document": [
186
209
  "./dist/types/document/index.d.ts"
187
210
  ],
@@ -194,9 +217,6 @@
194
217
  "router": [
195
218
  "./dist/types/router/index.d.ts"
196
219
  ],
197
- "tanstack-router": [
198
- "./dist/types/exports/tanstack-router.d.ts"
199
- ],
200
220
  "router/server": [
201
221
  "./dist/types/router/runtime/server.d.ts"
202
222
  ],
@@ -226,51 +246,50 @@
226
246
  "dependencies": {
227
247
  "@loadable/component": "5.16.7",
228
248
  "@loadable/server": "5.16.7",
249
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.5.0-ultramodern.76",
250
+ "@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.76",
251
+ "@modern-js/render": "npm:@bleedingdev/modern-js-render@3.5.0-ultramodern.76",
252
+ "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.5.0-ultramodern.76",
253
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.76",
254
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.76",
229
255
  "@swc/core": "1.15.43",
230
256
  "@swc/helpers": "^0.5.23",
231
- "@swc/plugin-loadable-components": "^11.14.0",
257
+ "@swc/plugin-loadable-components": "^11.15.0",
232
258
  "@types/loadable__component": "^5.13.10",
233
259
  "@types/react-helmet": "^6.1.11",
234
- "cookie": "2.0.0",
260
+ "cookie": "2.0.1",
235
261
  "entities": "^8.0.0",
236
- "es-module-lexer": "^2.1.0",
262
+ "es-module-lexer": "^2.3.0",
237
263
  "esbuild": "^0.28.1",
238
264
  "invariant": "^2.2.4",
239
- "isbot": "5.1.44",
265
+ "isbot": "5.2.0",
240
266
  "react-helmet": "^6.1.0",
241
267
  "react-helmet-async": "3.0.0",
242
- "react-is": "^19.2.7",
243
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.5.0-ultramodern.6",
244
- "@modern-js/render": "npm:@bleedingdev/modern-js-render@3.5.0-ultramodern.6",
245
- "@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.6",
246
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.6",
247
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.6",
248
- "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.5.0-ultramodern.6"
268
+ "react-is": "^19.2.7"
249
269
  },
250
270
  "peerDependencies": {
251
271
  "react": "^19.2.7",
252
272
  "react-dom": "^19.2.7"
253
273
  },
254
274
  "devDependencies": {
275
+ "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.5.0-ultramodern.76",
255
276
  "@remix-run/web-fetch": "^4.4.2",
256
- "@rsbuild/core": "2.1.1",
257
- "@rslib/core": "0.23.1",
277
+ "@rsbuild/core": "2.1.5",
278
+ "@rslib/core": "0.23.2",
279
+ "@scripts/rstest-config": "2.66.0",
258
280
  "@testing-library/dom": "^10.4.1",
259
281
  "@testing-library/react": "^16.3.2",
260
282
  "@types/invariant": "^2.2.37",
261
283
  "@types/loadable__server": "5.12.11",
262
- "@types/node": "^26.0.1",
263
- "@typescript/native-preview": "7.0.0-dev.20260628.1",
284
+ "@types/node": "^26.1.1",
285
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
264
286
  "react": "^19.2.7",
265
287
  "react-dom": "^19.2.7",
266
288
  "ts-node": "^10.9.2",
267
- "typescript": "^6.0.3",
268
- "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.5.0-ultramodern.6",
269
- "@scripts/rstest-config": "2.66.0"
289
+ "typescript": "^7.0.2"
270
290
  },
271
291
  "sideEffects": false,
272
292
  "publishConfig": {
273
- "registry": "https://registry.npmjs.org/",
274
293
  "access": "public"
275
294
  },
276
295
  "scripts": {
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, getters, values)=>{
5
- var define = (defs, kind)=>{
6
- for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
- enumerable: true,
8
- [kind]: defs[key]
9
- });
10
- };
11
- define(getters, "get");
12
- define(values, "value");
13
- };
14
- })();
15
- (()=>{
16
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
- })();
18
- (()=>{
19
- __webpack_require__.r = (exports1)=>{
20
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
- value: 'Module'
22
- });
23
- Object.defineProperty(exports1, '__esModule', {
24
- value: true
25
- });
26
- };
27
- })();
28
- var __webpack_exports__ = {};
29
- __webpack_require__.r(__webpack_exports__);
30
- __webpack_require__.d(__webpack_exports__, {
31
- Form: ()=>Form,
32
- Link: ()=>Link,
33
- NavLink: ()=>NavLink,
34
- Outlet: ()=>Outlet,
35
- RouteActionResponseError: ()=>RouteActionResponseError,
36
- useFetcher: ()=>useFetcher
37
- });
38
- const external_react_namespaceObject = require("react");
39
- const COMPAT_BINDINGS_SLOT = Symbol.for('@modern-js/plugin-tanstack:runtime-compat-bindings');
40
- function readCompatBindings() {
41
- return globalThis[COMPAT_BINDINGS_SLOT];
42
- }
43
- function resolveCompatBindings(exportName) {
44
- const bindings = readCompatBindings();
45
- if (void 0 === bindings) throw new Error(`[@modern-js/runtime] '${exportName}' from the deprecated '@modern-js/runtime/tanstack-router' alias is provided by @modern-js/plugin-tanstack. Install @modern-js/plugin-tanstack, add \`tanstackRouterPlugin()\` to the \`plugins\` array in modern.config.ts, and make sure '@modern-js/plugin-tanstack/runtime' is imported (e.g. in modern.runtime.ts) before '${exportName}' is used. Prefer importing '${exportName}' from '@modern-js/plugin-tanstack/runtime' directly.`);
46
- return bindings;
47
- }
48
- const Link = (props)=>(0, external_react_namespaceObject.createElement)(resolveCompatBindings('Link').Link, props);
49
- const NavLink = (props)=>(0, external_react_namespaceObject.createElement)(resolveCompatBindings('NavLink').NavLink, props);
50
- const Outlet = ()=>(0, external_react_namespaceObject.createElement)(resolveCompatBindings('Outlet').Outlet);
51
- const Form = (props)=>(0, external_react_namespaceObject.createElement)(resolveCompatBindings('Form').Form, props);
52
- function useFetcher() {
53
- return resolveCompatBindings('useFetcher').useFetcher();
54
- }
55
- function RouteActionResponseErrorPlaceholder() {}
56
- const RouteActionResponseError = new Proxy(RouteActionResponseErrorPlaceholder, {
57
- construct (_target, args) {
58
- const RealError = resolveCompatBindings('RouteActionResponseError').RouteActionResponseError;
59
- return new RealError(...args);
60
- },
61
- get (target, property, receiver) {
62
- const RealError = readCompatBindings()?.RouteActionResponseError;
63
- if (void 0 !== RealError) return Reflect.get(RealError, property);
64
- return Reflect.get(target, property, receiver);
65
- }
66
- });
67
- exports.Form = __webpack_exports__.Form;
68
- exports.Link = __webpack_exports__.Link;
69
- exports.NavLink = __webpack_exports__.NavLink;
70
- exports.Outlet = __webpack_exports__.Outlet;
71
- exports.RouteActionResponseError = __webpack_exports__.RouteActionResponseError;
72
- exports.useFetcher = __webpack_exports__.useFetcher;
73
- for(var __rspack_i in __webpack_exports__)if (-1 === [
74
- "Form",
75
- "Link",
76
- "NavLink",
77
- "Outlet",
78
- "RouteActionResponseError",
79
- "useFetcher"
80
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
81
- Object.defineProperty(exports, '__esModule', {
82
- value: true
83
- });
@@ -1,30 +0,0 @@
1
- import { createElement } from "react";
2
- const COMPAT_BINDINGS_SLOT = Symbol.for('@modern-js/plugin-tanstack:runtime-compat-bindings');
3
- function readCompatBindings() {
4
- return globalThis[COMPAT_BINDINGS_SLOT];
5
- }
6
- function resolveCompatBindings(exportName) {
7
- const bindings = readCompatBindings();
8
- if (void 0 === bindings) throw new Error(`[@modern-js/runtime] '${exportName}' from the deprecated '@modern-js/runtime/tanstack-router' alias is provided by @modern-js/plugin-tanstack. Install @modern-js/plugin-tanstack, add \`tanstackRouterPlugin()\` to the \`plugins\` array in modern.config.ts, and make sure '@modern-js/plugin-tanstack/runtime' is imported (e.g. in modern.runtime.ts) before '${exportName}' is used. Prefer importing '${exportName}' from '@modern-js/plugin-tanstack/runtime' directly.`);
9
- return bindings;
10
- }
11
- const Link = (props)=>createElement(resolveCompatBindings('Link').Link, props);
12
- const NavLink = (props)=>createElement(resolveCompatBindings('NavLink').NavLink, props);
13
- const Outlet = ()=>createElement(resolveCompatBindings('Outlet').Outlet);
14
- const Form = (props)=>createElement(resolveCompatBindings('Form').Form, props);
15
- function useFetcher() {
16
- return resolveCompatBindings('useFetcher').useFetcher();
17
- }
18
- function RouteActionResponseErrorPlaceholder() {}
19
- const RouteActionResponseError = new Proxy(RouteActionResponseErrorPlaceholder, {
20
- construct (_target, args) {
21
- const RealError = resolveCompatBindings('RouteActionResponseError').RouteActionResponseError;
22
- return new RealError(...args);
23
- },
24
- get (target, property, receiver) {
25
- const RealError = readCompatBindings()?.RouteActionResponseError;
26
- if (void 0 !== RealError) return Reflect.get(RealError, property);
27
- return Reflect.get(target, property, receiver);
28
- }
29
- });
30
- export { Form, Link, NavLink, Outlet, RouteActionResponseError, useFetcher };
@@ -1,31 +0,0 @@
1
- import "node:module";
2
- import { createElement } from "react";
3
- const COMPAT_BINDINGS_SLOT = Symbol.for('@modern-js/plugin-tanstack:runtime-compat-bindings');
4
- function readCompatBindings() {
5
- return globalThis[COMPAT_BINDINGS_SLOT];
6
- }
7
- function resolveCompatBindings(exportName) {
8
- const bindings = readCompatBindings();
9
- if (void 0 === bindings) throw new Error(`[@modern-js/runtime] '${exportName}' from the deprecated '@modern-js/runtime/tanstack-router' alias is provided by @modern-js/plugin-tanstack. Install @modern-js/plugin-tanstack, add \`tanstackRouterPlugin()\` to the \`plugins\` array in modern.config.ts, and make sure '@modern-js/plugin-tanstack/runtime' is imported (e.g. in modern.runtime.ts) before '${exportName}' is used. Prefer importing '${exportName}' from '@modern-js/plugin-tanstack/runtime' directly.`);
10
- return bindings;
11
- }
12
- const Link = (props)=>createElement(resolveCompatBindings('Link').Link, props);
13
- const NavLink = (props)=>createElement(resolveCompatBindings('NavLink').NavLink, props);
14
- const Outlet = ()=>createElement(resolveCompatBindings('Outlet').Outlet);
15
- const Form = (props)=>createElement(resolveCompatBindings('Form').Form, props);
16
- function useFetcher() {
17
- return resolveCompatBindings('useFetcher').useFetcher();
18
- }
19
- function RouteActionResponseErrorPlaceholder() {}
20
- const RouteActionResponseError = new Proxy(RouteActionResponseErrorPlaceholder, {
21
- construct (_target, args) {
22
- const RealError = resolveCompatBindings('RouteActionResponseError').RouteActionResponseError;
23
- return new RealError(...args);
24
- },
25
- get (target, property, receiver) {
26
- const RealError = readCompatBindings()?.RouteActionResponseError;
27
- if (void 0 !== RealError) return Reflect.get(RealError, property);
28
- return Reflect.get(target, property, receiver);
29
- }
30
- });
31
- export { Form, Link, NavLink, Outlet, RouteActionResponseError, useFetcher };
@@ -1,88 +0,0 @@
1
- /**
2
- * @deprecated Legacy alias kept so the published `@modern-js/runtime/tanstack-router`
3
- * subpath keeps resolving. Use `@modern-js/plugin-tanstack/runtime` instead.
4
- *
5
- * Only the Modern.js specific `Link`, `NavLink`, `Outlet`, `Form`,
6
- * `useFetcher` and `RouteActionResponseError` bindings are still exported from
7
- * here for compatibility. They are thin delegates: the real implementations
8
- * live in `@modern-js/plugin-tanstack` and are looked up at use time through a
9
- * `Symbol.for` slot that '@modern-js/plugin-tanstack/runtime' populates on
10
- * import. (`@modern-js/runtime` cannot import `@modern-js/plugin-tanstack`
11
- * directly — the package dependency points the other way.)
12
- */
13
- import type React from 'react';
14
- export type PrefetchBehavior = 'intent' | 'render' | 'viewport' | 'none';
15
- export type LinkProps<_TRouter = unknown, TFrom extends string = string, TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, TMaskTo extends string = '.'> = Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> & {
16
- prefetch?: PrefetchBehavior;
17
- from?: TFrom;
18
- mask?: {
19
- from?: TMaskFrom;
20
- to?: TMaskTo;
21
- };
22
- params?: unknown;
23
- search?: unknown;
24
- to?: TTo;
25
- };
26
- export type NavLinkProps<TRouter = unknown, TFrom extends string = string, TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, TMaskTo extends string = '.'> = LinkProps<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;
27
- type LinkComponent = <TRouter = unknown, const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(props: LinkProps<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => React.ReactElement;
28
- export type SubmitOptions = {
29
- action?: string;
30
- method?: string;
31
- encType?: string;
32
- };
33
- export type FetcherState = 'idle' | 'submitting' | 'loading';
34
- export type FetcherSubmitOptions = SubmitOptions;
35
- export type FormProps = Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'action'> & {
36
- action?: string;
37
- onSubmit?: React.FormEventHandler<HTMLFormElement>;
38
- reloadDocument?: boolean;
39
- };
40
- type SubmitTarget = HTMLFormElement | FormData | URLSearchParams | Record<string, string | number | boolean | null | undefined>;
41
- export type Fetcher = {
42
- state: FetcherState;
43
- data: unknown;
44
- error: unknown;
45
- Form: React.ComponentType<FormProps>;
46
- submit: (target: SubmitTarget, options?: FetcherSubmitOptions) => Promise<void>;
47
- };
48
- export interface RouteActionResponseError<TData = unknown> extends Error {
49
- readonly response: Response;
50
- readonly data: TData;
51
- }
52
- interface RouteActionResponseErrorConstructor {
53
- new <TData = unknown>(response: Response, data: TData): RouteActionResponseError<TData>;
54
- readonly prototype: RouteActionResponseError<unknown>;
55
- }
56
- /**
57
- * @deprecated Import `Link` from `@modern-js/plugin-tanstack/runtime` instead.
58
- */
59
- export declare const Link: LinkComponent;
60
- /**
61
- * @deprecated Import `NavLink` from `@modern-js/plugin-tanstack/runtime` instead.
62
- */
63
- export declare const NavLink: LinkComponent;
64
- /**
65
- * @deprecated Import `Outlet` from `@modern-js/plugin-tanstack/runtime` instead.
66
- */
67
- export declare const Outlet: React.ComponentType;
68
- /**
69
- * @deprecated Import `Form` from `@modern-js/plugin-tanstack/runtime` instead.
70
- */
71
- export declare const Form: React.ComponentType<FormProps>;
72
- /**
73
- * @deprecated Import `useFetcher` from `@modern-js/plugin-tanstack/runtime`
74
- * instead.
75
- */
76
- export declare function useFetcher(): Fetcher;
77
- /**
78
- * @deprecated Import `RouteActionResponseError` from
79
- * `@modern-js/plugin-tanstack/runtime` instead.
80
- *
81
- * Delegates to the real class registered by '@modern-js/plugin-tanstack/runtime'
82
- * so that `instanceof` checks observe the same class identity. Before the
83
- * registration happens no instance can exist, so `instanceof` is gracefully
84
- * `false`; constructing without @modern-js/plugin-tanstack installed throws an
85
- * actionable error.
86
- */
87
- export declare const RouteActionResponseError: RouteActionResponseErrorConstructor;
88
- export {};