@bleedingdev/modern-js-runtime 3.5.0-ultramodern.10 → 3.5.0-ultramodern.100
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/boundary-debugger/index.js +13 -3
- package/dist/cjs/cli/index.js +1 -11
- package/dist/cjs/cli/registry.js +18 -0
- package/dist/cjs/cli/ssr/index.js +3 -2
- package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +8 -4
- package/dist/cjs/core/browser/hydrate.js +16 -2
- package/dist/cjs/core/browser/index.js +19 -18
- package/dist/cjs/core/context/index.js +3 -0
- package/dist/cjs/core/context/public.js +49 -0
- package/dist/cjs/core/context/runtime.js +6 -8
- package/dist/cjs/core/react/wrapper.js +57 -0
- package/dist/cjs/core/server/federatedCss.js +7 -3
- package/dist/cjs/core/server/requestHandler.js +15 -45
- package/dist/cjs/core/server/requestResponse.js +83 -0
- package/dist/cjs/core/server/routerCleanup.js +16 -6
- package/dist/cjs/core/server/scriptOrder.js +13 -10
- package/dist/cjs/core/server/stream/afterTemplate.js +9 -5
- package/dist/cjs/core/server/stream/template.js +3 -3
- package/dist/cjs/core/server/string/index.js +3 -3
- package/dist/cjs/core/server/string/loadable.js +3 -11
- package/dist/cjs/index.js +7 -6
- package/dist/cjs/module-federation/consume-surface.js +199 -0
- package/dist/cjs/module-federation/distributed-ssr.js +134 -0
- package/dist/cjs/module-federation/index.js +258 -120
- package/dist/cjs/module-federation/last-known-good.js +124 -0
- package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +140 -0
- package/dist/cjs/module-federation/surface-resolution-types.js +61 -0
- package/dist/cjs/router/cli/code/nestedRoutes.js +3 -0
- package/dist/cjs/router/cli/code/templates.js +3 -2
- package/dist/cjs/router/cli/constants.js +1 -0
- package/dist/cjs/router/cli/nestedRoutesSpec.js +3 -1
- package/dist/cjs/router/runtime/hooks.js +7 -6
- package/dist/cjs/router/runtime/internal.js +30 -16
- package/dist/cjs/router/runtime/plugin.js +6 -7
- package/dist/cjs/router/runtime/provider.js +58 -12
- package/dist/esm/boundary-debugger/index.mjs +13 -3
- package/dist/esm/cli/code.mjs +12 -12
- package/dist/esm/cli/index.mjs +2 -12
- package/dist/esm/cli/registry.mjs +0 -0
- package/dist/esm/cli/ssr/index.mjs +3 -2
- package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +8 -4
- package/dist/esm/core/browser/hydrate.mjs +15 -4
- package/dist/esm/core/browser/index.mjs +15 -17
- package/dist/esm/core/context/index.mjs +1 -1
- package/dist/esm/core/context/public.mjs +5 -0
- package/dist/esm/core/context/runtime.mjs +4 -6
- package/dist/esm/core/react/wrapper.mjs +58 -1
- package/dist/esm/core/server/federatedCss.mjs +7 -3
- package/dist/esm/core/server/requestHandler.mjs +15 -45
- package/dist/esm/core/server/requestResponse.mjs +39 -0
- package/dist/esm/core/server/routerCleanup.mjs +11 -4
- package/dist/esm/core/server/scriptOrder.mjs +11 -8
- package/dist/esm/core/server/stream/afterTemplate.mjs +10 -6
- package/dist/esm/core/server/stream/template.mjs +3 -3
- package/dist/esm/core/server/string/index.mjs +3 -3
- package/dist/esm/core/server/string/loadable.mjs +3 -8
- package/dist/esm/exports/loadable.mjs +3 -3
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/module-federation/consume-surface.mjs +158 -0
- package/dist/esm/module-federation/distributed-ssr.mjs +81 -0
- package/dist/esm/module-federation/index.mjs +6 -0
- package/dist/esm/module-federation/last-known-good.mjs +80 -0
- package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +100 -0
- package/dist/esm/module-federation/surface-resolution-types.mjs +8 -0
- package/dist/esm/router/cli/code/index.mjs +5 -5
- package/dist/esm/router/cli/code/nestedRoutes.mjs +3 -0
- package/dist/esm/router/cli/code/templates.mjs +3 -2
- package/dist/esm/router/cli/constants.mjs +1 -0
- package/dist/esm/router/cli/handler.mjs +3 -3
- package/dist/esm/router/cli/nestedRoutesSpec.mjs +3 -1
- package/dist/esm/router/runtime/hooks.mjs +7 -6
- package/dist/esm/router/runtime/internal.mjs +26 -18
- package/dist/esm/router/runtime/plugin.mjs +6 -7
- package/dist/esm/router/runtime/provider.mjs +56 -13
- package/dist/esm-node/boundary-debugger/index.mjs +13 -3
- package/dist/esm-node/cli/code.mjs +12 -12
- package/dist/esm-node/cli/index.mjs +2 -12
- package/dist/esm-node/cli/registry.mjs +1 -0
- package/dist/esm-node/cli/ssr/index.mjs +3 -2
- package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +8 -4
- package/dist/esm-node/core/browser/hydrate.mjs +15 -4
- package/dist/esm-node/core/browser/index.mjs +15 -17
- package/dist/esm-node/core/context/index.mjs +1 -1
- package/dist/esm-node/core/context/public.mjs +6 -0
- package/dist/esm-node/core/context/runtime.mjs +4 -6
- package/dist/esm-node/core/react/wrapper.mjs +58 -1
- package/dist/esm-node/core/server/federatedCss.mjs +7 -3
- package/dist/esm-node/core/server/requestHandler.mjs +15 -45
- package/dist/esm-node/core/server/requestResponse.mjs +40 -0
- package/dist/esm-node/core/server/routerCleanup.mjs +11 -4
- package/dist/esm-node/core/server/scriptOrder.mjs +11 -8
- package/dist/esm-node/core/server/stream/afterTemplate.mjs +10 -6
- package/dist/esm-node/core/server/stream/template.mjs +3 -3
- package/dist/esm-node/core/server/string/index.mjs +3 -3
- package/dist/esm-node/core/server/string/loadable.mjs +3 -8
- package/dist/esm-node/exports/loadable.mjs +3 -3
- package/dist/esm-node/index.mjs +2 -1
- package/dist/esm-node/module-federation/consume-surface.mjs +159 -0
- package/dist/esm-node/module-federation/distributed-ssr.mjs +82 -0
- package/dist/esm-node/module-federation/index.mjs +6 -0
- package/dist/esm-node/module-federation/last-known-good.mjs +81 -0
- package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +101 -0
- package/dist/esm-node/module-federation/surface-resolution-types.mjs +9 -0
- package/dist/esm-node/router/cli/code/index.mjs +5 -5
- package/dist/esm-node/router/cli/code/nestedRoutes.mjs +3 -0
- package/dist/esm-node/router/cli/code/templates.mjs +3 -2
- package/dist/esm-node/router/cli/constants.mjs +1 -0
- package/dist/esm-node/router/cli/handler.mjs +3 -3
- package/dist/esm-node/router/cli/nestedRoutesSpec.mjs +3 -1
- package/dist/esm-node/router/runtime/hooks.mjs +7 -6
- package/dist/esm-node/router/runtime/internal.mjs +26 -18
- package/dist/esm-node/router/runtime/plugin.mjs +6 -7
- package/dist/esm-node/router/runtime/provider.mjs +56 -13
- package/dist/types/boundary-debugger/index.d.ts +1 -1
- package/dist/types/cli/registry.d.ts +2 -0
- package/dist/types/common.d.ts +8 -1
- package/dist/types/core/browser/hydrate.d.ts +2 -1
- package/dist/types/core/browser/index.d.ts +4 -1
- package/dist/types/core/context/index.d.ts +26 -10
- package/dist/types/core/context/monitors/default.d.ts +10 -2
- package/dist/types/core/context/monitors/index.d.ts +1 -1
- package/dist/types/core/context/monitors/index.server.d.ts +2 -2
- package/dist/types/core/context/public.d.ts +27 -0
- package/dist/types/core/context/runtime.d.ts +12 -22
- package/dist/types/core/react/index.d.ts +1 -1
- package/dist/types/core/server/requestResponse.d.ts +15 -0
- package/dist/types/core/server/routerCleanup.d.ts +2 -1
- package/dist/types/core/server/scriptOrder.d.ts +1 -1
- package/dist/types/core/server/stream/shared.d.ts +2 -2
- package/dist/types/core/server/string/loadable.d.ts +0 -2
- package/dist/types/exports/head.d.ts +1 -1
- package/dist/types/index.d.ts +5 -5
- package/dist/types/internal.d.ts +0 -1
- package/dist/types/module-federation/consume-surface.d.ts +104 -0
- package/dist/types/module-federation/distributed-ssr.d.ts +61 -0
- package/dist/types/module-federation/index.d.ts +6 -0
- package/dist/types/module-federation/last-known-good.d.ts +72 -0
- package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +25 -0
- package/dist/types/module-federation/surface-resolution-types.d.ts +23 -0
- package/dist/types/router/cli/constants.d.ts +1 -0
- package/dist/types/router/runtime/hooks.d.ts +10 -6
- package/dist/types/router/runtime/internal.d.ts +13 -3
- package/dist/types/router/runtime/plugin.d.ts +1 -1
- package/dist/types/router/runtime/plugin.node.d.ts +1 -1
- package/dist/types/router/runtime/provider.d.ts +28 -11
- package/dist/types/router/runtime/types.d.ts +27 -5
- package/package.json +47 -27
- package/dist/cjs/exports/tanstack-router.js +0 -83
- package/dist/esm/exports/tanstack-router.mjs +0 -30
- package/dist/esm-node/exports/tanstack-router.mjs +0 -31
- package/dist/types/exports/tanstack-router.d.ts +0 -88
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G24a/b — last-known-good (LKG) provider wrapper.
|
|
3
|
+
*
|
|
4
|
+
* RESOLUTION-0001 §2.2: the LKG cache "wraps any provider; serves the last
|
|
5
|
+
* complete record on provider failure, marked `compatibility: 'degraded'`". It
|
|
6
|
+
* is universal — no DOM/fetch/framework coupling — so the same wrapper works in
|
|
7
|
+
* the browser, Node, and Cloudflare.
|
|
8
|
+
*
|
|
9
|
+
* Rollback semantics (ADR-0019 / CONTEXT.md Rollback): the delivery UNIT is
|
|
10
|
+
* the unit of rollback. The cache stores exactly ONE whole
|
|
11
|
+
* {@link ResolvedDeliveryUnit} per (unitId, env) key — never per (ref, env) —
|
|
12
|
+
* so every surface of a unit shares one snapshot and a fresh success swaps that
|
|
13
|
+
* snapshot atomically for all of them (two surfaces can never be served from
|
|
14
|
+
* different cached build markers). It never stores or serves a partial record,
|
|
15
|
+
* and it never mixes locations across build markers — a served degraded record
|
|
16
|
+
* is a byte-for-byte prior success with only its compatibility verdict flipped
|
|
17
|
+
* to `degraded`. An `incompatible` record is never good: it is neither cached
|
|
18
|
+
* as the last-known-good snapshot nor ever served. The ref's external-major
|
|
19
|
+
* participates in lookup validation but not in the storage key.
|
|
20
|
+
*/
|
|
21
|
+
import { type ResolvedDeliveryUnit, type SurfaceResolutionProvider } from './surface-resolution-types';
|
|
22
|
+
export declare const LAST_KNOWN_GOOD_PROVIDER_NAME = "last-known-good";
|
|
23
|
+
/** One cached complete record plus the time it was stored. */
|
|
24
|
+
export type LkgRecord = {
|
|
25
|
+
resolved: ResolvedDeliveryUnit;
|
|
26
|
+
storedAt: number;
|
|
27
|
+
/**
|
|
28
|
+
* External-major selector the record was resolved against. Participates in
|
|
29
|
+
* lookup validation — a cached record is only served for a matching major —
|
|
30
|
+
* but never in the storage key, which is (unitId, env) so all surfaces of a
|
|
31
|
+
* unit share one atomically-swapped record.
|
|
32
|
+
*/
|
|
33
|
+
major?: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Pluggable storage hook. The default is an in-memory Map; callers may supply a
|
|
37
|
+
* durable store (KV, disk, etc). Reads/writes may be async. A store only ever
|
|
38
|
+
* receives whole records.
|
|
39
|
+
*/
|
|
40
|
+
export type LkgStorage = {
|
|
41
|
+
read(key: string): (LkgRecord | undefined) | Promise<LkgRecord | undefined>;
|
|
42
|
+
write(key: string, record: LkgRecord): void | Promise<void>;
|
|
43
|
+
};
|
|
44
|
+
export type LkgFreshnessPolicy = {
|
|
45
|
+
/**
|
|
46
|
+
* Maximum age, in ms, a stored record may be served after a provider
|
|
47
|
+
* failure. When omitted, a served record never expires by age. A record
|
|
48
|
+
* older than this yields a typed `stale-record` discovery error.
|
|
49
|
+
*/
|
|
50
|
+
maxStaleMs?: number;
|
|
51
|
+
};
|
|
52
|
+
export type LastKnownGoodOptions = {
|
|
53
|
+
/** The wrapped provider (env/static, Zephyr, or any other). */
|
|
54
|
+
provider: SurfaceResolutionProvider;
|
|
55
|
+
/** Pluggable storage; defaults to a process-local in-memory Map. */
|
|
56
|
+
storage?: LkgStorage;
|
|
57
|
+
freshness?: LkgFreshnessPolicy;
|
|
58
|
+
/** Clock injection for deterministic freshness tests. */
|
|
59
|
+
now?: () => number;
|
|
60
|
+
};
|
|
61
|
+
/** Default process-local in-memory storage. */
|
|
62
|
+
export declare function createInMemoryLkgStorage(): LkgStorage;
|
|
63
|
+
/**
|
|
64
|
+
* Wrap a provider with a last-known-good cache. On success the whole record is
|
|
65
|
+
* cached (atomic swap). On provider failure (typed discovery error or a thrown
|
|
66
|
+
* error) the last complete record is served, marked degraded — unless it has
|
|
67
|
+
* expired per {@link LkgFreshnessPolicy}, in which case a typed `stale-record`
|
|
68
|
+
* error is returned. If there is no cached record, the original failure is
|
|
69
|
+
* passed through (a thrown error becomes a `provider-unavailable` discovery
|
|
70
|
+
* error).
|
|
71
|
+
*/
|
|
72
|
+
export declare function createLastKnownGoodProvider(options: LastKnownGoodOptions): SurfaceResolutionProvider;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type ErrorLoadRemoteArgs = {
|
|
2
|
+
id?: string;
|
|
3
|
+
error?: unknown;
|
|
4
|
+
lifecycle?: string;
|
|
5
|
+
};
|
|
6
|
+
export type ModuleFederationManifestRecoveryPluginOptions = {
|
|
7
|
+
attempts?: number;
|
|
8
|
+
retryDelayMs?: number;
|
|
9
|
+
timeoutMs?: number;
|
|
10
|
+
fetchImpl?: typeof fetch;
|
|
11
|
+
waitImpl?: (milliseconds: number) => Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Gives server-side manifest loading a small, bounded recovery window.
|
|
15
|
+
*
|
|
16
|
+
* Returning `undefined` deliberately hands control back to Module Federation:
|
|
17
|
+
* its runtime preserves the original typed RUNTIME-003 error and invalidates
|
|
18
|
+
* the rejected manifest promise. Parsed manifests are returned without schema
|
|
19
|
+
* interpretation so runtime-core remains the authority for RUNTIME-013.
|
|
20
|
+
*/
|
|
21
|
+
export declare const createModuleFederationManifestRecoveryPlugin: (options?: ModuleFederationManifestRecoveryPluginOptions) => {
|
|
22
|
+
name: string;
|
|
23
|
+
errorLoadRemote(args: ErrorLoadRemoteArgs): Promise<any>;
|
|
24
|
+
};
|
|
25
|
+
export default createModuleFederationManifestRecoveryPlugin;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface-resolution types for the module-federation runtime.
|
|
3
|
+
*
|
|
4
|
+
* Thin re-export of the canonical module in `@modern-js/utils/universal`
|
|
5
|
+
* (`packages/toolkit/utils/src/universal/surface-resolution/`,
|
|
6
|
+
* RESOLUTION-0001). Kept as a file so existing `./surface-resolution-types`
|
|
7
|
+
* imports stay stable. Only helpers the canonical module deliberately does not
|
|
8
|
+
* ship (the (ref, env) cache key) live here, implemented against canonical
|
|
9
|
+
* types.
|
|
10
|
+
*/
|
|
11
|
+
import { type EnvironmentId, type ParsedSurfaceRef } from '@modern-js/utils/universal';
|
|
12
|
+
export { type CompatibilityStatus, type CompatibilityVerdict, createDiscoveryError, type DiscoveryError, type DiscoveryErrorCode, type DiscoveryResult, type EnvironmentId, formatSurfaceRef, type ParsedSurfaceRef, parseSurfaceRef, type ResolvedDeliveryUnit, type ResolvedSurface, type ResolvedSurfaceKind, type ResolvedSurfaceLocation, type ResolvedSurfaceLocationPlatform, type SurfaceRefParseError, type SurfaceRefParseResult, type SurfaceResolutionProvider, validateSurfaceRef, } from '@modern-js/utils/universal';
|
|
13
|
+
/** Stable cache/identity key for a (ref, env) pair. */
|
|
14
|
+
export declare function surfaceResolutionKey(ref: ParsedSurfaceRef, env: EnvironmentId): string;
|
|
15
|
+
/**
|
|
16
|
+
* Stable cache key for a (deliveryUnit, env) pair — ONE record per unit per
|
|
17
|
+
* env (ADR-0019 atomicity). All surfaces of a unit share this key so a refresh
|
|
18
|
+
* replaces the whole unit snapshot atomically for every surface, and two
|
|
19
|
+
* surfaces of the same unit can never be served from different cached
|
|
20
|
+
* snapshots. The ref's external-major participates in lookup validation (see
|
|
21
|
+
* the LKG provider), not in this key.
|
|
22
|
+
*/
|
|
23
|
+
export declare function deliveryUnitResolutionKey(unitId: string, env: EnvironmentId): string;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { RouteObject } from '@modern-js/runtime-utils/router';
|
|
2
2
|
import type { TRuntimeContext } from '../../core/context/runtime';
|
|
3
3
|
import type { RouterLifecycleContext } from './lifecycle';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare const
|
|
9
|
-
declare const
|
|
4
|
+
export type RouterSyncHook<Handler extends (...args: any[]) => any> = {
|
|
5
|
+
call: (...args: Parameters<Handler>) => ReturnType<Handler>;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
declare const modifyRoutes: RouterSyncHook<(routes: RouteObject[]) => RouteObject[]>;
|
|
9
|
+
declare const onBeforeCreateRoutes: RouterSyncHook<(context: TRuntimeContext) => void>;
|
|
10
|
+
declare const onBeforeCreateRouter: RouterSyncHook<(context: RouterLifecycleContext) => void>;
|
|
11
|
+
declare const onAfterCreateRouter: RouterSyncHook<(context: RouterLifecycleContext) => void>;
|
|
12
|
+
declare const onBeforeHydrateRouter: RouterSyncHook<(context: RouterLifecycleContext) => void>;
|
|
13
|
+
declare const onAfterHydrateRouter: RouterSyncHook<(context: RouterLifecycleContext) => void>;
|
|
10
14
|
export { modifyRoutes, onAfterCreateRouter, onAfterHydrateRouter, onBeforeCreateRouter, onBeforeCreateRoutes, onBeforeHydrateRouter, };
|
|
11
15
|
export type RouterExtendsHooks = {
|
|
12
16
|
modifyRoutes: typeof modifyRoutes;
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import type { RuntimePlugin } from '../../
|
|
1
|
+
import type { RuntimePlugin } from '../../common';
|
|
2
2
|
import type { RouterExtendsHooks } from './hooks';
|
|
3
|
+
import type { RouterProviderRegistration } from './provider';
|
|
3
4
|
import type { RouterConfig, SingleRouteConfig } from './types';
|
|
4
|
-
|
|
5
|
+
type LocalRouterProvider = Omit<RouterProviderRegistration, 'isDefault'>;
|
|
6
|
+
export type RouterPluginFactory = (userConfig?: Partial<RouterConfig>) => RuntimePlugin<{
|
|
5
7
|
extendHooks: RouterExtendsHooks;
|
|
6
8
|
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Create one router wrapper and its provider realm for a runtime entry. Optional
|
|
11
|
+
* providers are supplied by the entry-owning integration (for example the
|
|
12
|
+
* TanStack runtime/router module), so independently bundled apps never resolve
|
|
13
|
+
* factories from another app's module graph.
|
|
14
|
+
*/
|
|
15
|
+
export declare const createRouterPlugin: (localProviders?: readonly LocalRouterProvider[]) => RouterPluginFactory;
|
|
16
|
+
export declare const routerPlugin: RouterPluginFactory;
|
|
7
17
|
export default routerPlugin;
|
|
8
18
|
export type { RouterExtendsHooks } from './hooks';
|
|
9
19
|
export { modifyRoutes } from './plugin';
|
|
10
|
-
export { type RouterProviderFactory, type RouterProviderPlugin, registerRouterProvider, resolveRouterProvider, } from './provider';
|
|
20
|
+
export { createRouterProviderRealm, type RouterProviderFactory, type RouterProviderPlugin, type RouterProviderRealm, type RouterProviderRegistration, registerRouterProvider, resolveRouterProvider, } from './provider';
|
|
11
21
|
export { renderRoutes } from './utils';
|
|
12
22
|
export type { RouterConfig, SingleRouteConfig };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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 '../../
|
|
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 '../../
|
|
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
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
*
|
|
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:
|
|
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
|
-
|
|
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
|
|
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?:
|
|
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<
|
|
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.
|
|
20
|
+
"version": "3.5.0-ultramodern.100",
|
|
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,51 @@
|
|
|
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.100",
|
|
250
|
+
"@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.100",
|
|
251
|
+
"@modern-js/render": "npm:@bleedingdev/modern-js-render@3.5.0-ultramodern.100",
|
|
252
|
+
"@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.5.0-ultramodern.100",
|
|
253
|
+
"@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.100",
|
|
254
|
+
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.100",
|
|
229
255
|
"@swc/core": "1.15.43",
|
|
230
256
|
"@swc/helpers": "^0.5.23",
|
|
231
|
-
"@swc/plugin-loadable-components": "^11.
|
|
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.
|
|
260
|
+
"cookie": "2.0.1",
|
|
235
261
|
"entities": "^8.0.0",
|
|
236
|
-
"es-module-lexer": "^2.
|
|
262
|
+
"es-module-lexer": "^2.3.0",
|
|
237
263
|
"esbuild": "^0.28.1",
|
|
238
264
|
"invariant": "^2.2.4",
|
|
239
|
-
"isbot": "5.
|
|
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.10",
|
|
244
|
-
"@modern-js/plugin-data-loader": "npm:@bleedingdev/modern-js-plugin-data-loader@3.5.0-ultramodern.10",
|
|
245
|
-
"@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.5.0-ultramodern.10",
|
|
246
|
-
"@modern-js/render": "npm:@bleedingdev/modern-js-render@3.5.0-ultramodern.10",
|
|
247
|
-
"@modern-js/types": "npm:@bleedingdev/modern-js-types@3.5.0-ultramodern.10",
|
|
248
|
-
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.5.0-ultramodern.10"
|
|
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.100",
|
|
255
276
|
"@remix-run/web-fetch": "^4.4.2",
|
|
256
|
-
"@rsbuild/core": "2.1.
|
|
257
|
-
"@rslib/core": "0.23.
|
|
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",
|
|
282
|
+
"@types/cookie": "0.6.0",
|
|
260
283
|
"@types/invariant": "^2.2.37",
|
|
261
284
|
"@types/loadable__server": "5.12.11",
|
|
262
|
-
"@types/node": "^26.
|
|
263
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
285
|
+
"@types/node": "^26.1.1",
|
|
286
|
+
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
264
287
|
"react": "^19.2.7",
|
|
265
288
|
"react-dom": "^19.2.7",
|
|
266
289
|
"ts-node": "^10.9.2",
|
|
267
|
-
"typescript": "^
|
|
268
|
-
"@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.5.0-ultramodern.10",
|
|
269
|
-
"@scripts/rstest-config": "2.66.0"
|
|
290
|
+
"typescript": "^7.0.2"
|
|
270
291
|
},
|
|
271
292
|
"sideEffects": false,
|
|
272
293
|
"publishConfig": {
|
|
273
|
-
"registry": "https://registry.npmjs.org/",
|
|
274
294
|
"access": "public"
|
|
275
295
|
},
|
|
276
296
|
"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 };
|