@bleedingdev/modern-js-renderer-octane 3.9.3-ultramodern.7 → 3.9.3-ultramodern.9

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 (96) hide show
  1. package/dist/cjs/client.js +56 -6
  2. package/dist/cjs/entry-application.js +7 -2
  3. package/dist/cjs/entry-client.js +3 -0
  4. package/dist/cjs/entry-server.js +13 -5
  5. package/dist/cjs/federation.js +108 -6
  6. package/dist/cjs/i18n/I18nProvider.js +6 -14
  7. package/dist/cjs/i18n/LocalizedLink.js +24 -33
  8. package/dist/cjs/i18n/index.js +0 -3
  9. package/dist/cjs/i18n-external-snapshot.js +645 -0
  10. package/dist/cjs/index.js +4 -4
  11. package/dist/cjs/manifest.js +2 -2
  12. package/dist/cjs/plugin/compiler.js +2 -5
  13. package/dist/cjs/plugin/index.js +2 -2
  14. package/dist/cjs/plugin/profile.js +12 -10
  15. package/dist/cjs/router-client.js +1 -1
  16. package/dist/cjs/router-external-snapshot.js +263 -0
  17. package/dist/cjs/router-handler.js +11 -8
  18. package/dist/cjs/router-server.js +3 -11
  19. package/dist/cjs/router.js +1 -1
  20. package/dist/cjs/routes.js +11 -17
  21. package/dist/cjs/server.js +28 -7
  22. package/dist/cjs/worker-federation-context.js +63 -0
  23. package/dist/cjs/worker-federation-contexts.js +97 -0
  24. package/dist/cjs/worker-federation.js +97 -0
  25. package/dist/esm/client.mjs +56 -6
  26. package/dist/esm/entry-application.mjs +7 -2
  27. package/dist/esm/entry-client.mjs +3 -0
  28. package/dist/esm/entry-server.mjs +11 -6
  29. package/dist/esm/federation.mjs +110 -8
  30. package/dist/esm/i18n/I18nProvider.mjs +7 -15
  31. package/dist/esm/i18n/LocalizedLink.mjs +24 -30
  32. package/dist/esm/i18n/index.mjs +1 -1
  33. package/dist/esm/i18n-external-snapshot.mjs +576 -0
  34. package/dist/esm/index.mjs +4 -4
  35. package/dist/esm/manifest.mjs +2 -2
  36. package/dist/esm/router-client.mjs +1 -1
  37. package/dist/esm/router-external-snapshot.mjs +216 -0
  38. package/dist/esm/router-handler.mjs +11 -8
  39. package/dist/esm/router-server.mjs +0 -1
  40. package/dist/esm/router.mjs +2 -2
  41. package/dist/esm/routes.mjs +11 -17
  42. package/dist/esm/server.mjs +24 -3
  43. package/dist/esm/worker-federation-context.mjs +19 -0
  44. package/dist/esm/worker-federation-contexts.mjs +47 -0
  45. package/dist/esm/worker-federation.mjs +59 -0
  46. package/dist/esm-node/manifest.mjs +2 -2
  47. package/dist/esm-node/plugin/compiler.mjs +2 -5
  48. package/dist/esm-node/plugin/index.mjs +2 -2
  49. package/dist/esm-node/plugin/profile.mjs +12 -10
  50. package/dist/types/client.d.ts +5 -1
  51. package/dist/types/entry-client.d.ts +2 -0
  52. package/dist/types/entry-server.d.ts +4 -1
  53. package/dist/types/federation.d.ts +2 -0
  54. package/dist/types/i18n/LocalizedLink.d.ts +5 -32
  55. package/dist/types/i18n/context.d.ts +1 -1
  56. package/dist/types/i18n/index.d.ts +1 -1
  57. package/dist/types/i18n-external-snapshot.d.ts +43 -0
  58. package/dist/types/index.d.ts +4 -4
  59. package/dist/types/manifest.d.ts +2 -2
  60. package/dist/types/router-external-snapshot.d.ts +10 -0
  61. package/dist/types/router-server.d.ts +0 -2
  62. package/dist/types/server.d.ts +6 -0
  63. package/dist/types/worker-federation-context.d.ts +34 -0
  64. package/dist/types/worker-federation-contexts.d.ts +25 -0
  65. package/dist/types/worker-federation.d.ts +20 -0
  66. package/package.json +84 -22
  67. package/src/client.ts +99 -16
  68. package/src/entry-application.ts +7 -3
  69. package/src/entry-client.ts +10 -0
  70. package/src/entry-server.ts +20 -9
  71. package/src/federation.ts +159 -15
  72. package/src/i18n/I18nProvider.ts +11 -20
  73. package/src/i18n/LocalizedLink.ts +46 -72
  74. package/src/i18n/context.ts +1 -1
  75. package/src/i18n/index.ts +1 -5
  76. package/src/i18n-external-snapshot.ts +803 -0
  77. package/src/index.ts +4 -4
  78. package/src/manifest.ts +2 -2
  79. package/src/plugin/compiler-manifest.cjs +27 -1
  80. package/src/plugin/compiler.ts +6 -14
  81. package/src/plugin/index.ts +4 -2
  82. package/src/plugin/profile.ts +14 -10
  83. package/src/router-client.ts +1 -1
  84. package/src/router-external-snapshot.ts +306 -0
  85. package/src/router-handler.ts +11 -8
  86. package/src/router-server.ts +0 -2
  87. package/src/router.ts +2 -2
  88. package/src/routes.ts +28 -26
  89. package/src/server.ts +45 -5
  90. package/src/worker-federation-context.ts +51 -0
  91. package/src/worker-federation-contexts.ts +91 -0
  92. package/src/worker-federation.ts +120 -0
  93. package/dist/cjs/router-injection.js +0 -139
  94. package/dist/esm/router-injection.mjs +0 -101
  95. package/dist/types/router-injection.d.ts +0 -8
  96. package/src/router-injection.ts +0 -145
@@ -1,6 +1,7 @@
1
1
  import type { NativeFederationBinding } from '@modern-js/renderer-core/federation';
2
2
  import { type RendererIdentity } from '@modern-js/renderer-core/identity';
3
3
  import { type ComponentBody, type Root, type RootContainer, type RootOptions } from 'octane';
4
+ import { type OctaneWorkerFederationFactory, type OctaneWorkerFederationScope } from './worker-federation-context';
4
5
  export type { OctaneDocumentBootstrap } from './bootstrap';
5
6
  export { readOctaneDocumentBootstrap } from './bootstrap';
6
7
  export interface OctaneApplicationModule {
@@ -23,9 +24,12 @@ export interface OctaneApplicationOptions {
23
24
  readonly signal?: AbortSignal;
24
25
  /** Hydration installs the native signal bridge before invoking this importer. */
25
26
  readonly load: () => Promise<OctaneApplicationModule>;
26
- readonly options?: Omit<RootOptions, 'signalOwner'>;
27
+ readonly options?: Omit<RootOptions, 'signalOwner' | 'externalSnapshots'>;
27
28
  /** This browser compilation's native Module Federation runtime. */
28
29
  readonly federation?: NativeFederationBinding;
30
+ readonly workerFederation?: OctaneWorkerFederationScope | OctaneWorkerFederationFactory;
31
+ /** Trusted document bootstrap identity, also present for a CSR document. */
32
+ readonly documentId?: string;
29
33
  }
30
34
  export interface OctaneHydrationOptions extends OctaneApplicationOptions {
31
35
  readonly documentIdentity: RendererIdentity;
@@ -1,8 +1,10 @@
1
1
  import type { LocalisedUrlsOption } from '@modern-js/i18n-runtime-extensions/paths';
2
2
  import { type NativeClientEntryOptions, type NativeI18nInstance } from '@modern-js/renderer-core/entry-client';
3
+ import type { OctaneWorkerFederationFactory, OctaneWorkerFederationScope } from './worker-federation-context';
3
4
  export interface OctaneClientEntryOptions extends NativeClientEntryOptions<NativeI18nInstance, LocalisedUrlsOption> {
4
5
  /** The native client compilation hash, `__webpack_hash__`. */
5
6
  readonly nativeHydrationBuildId: string;
7
+ readonly workerFederation?: OctaneWorkerFederationScope | OctaneWorkerFederationFactory;
6
8
  }
7
9
  /** Start a generated Octane browser entry: mount, or hydrate the server document. */
8
10
  export declare function startNativeClient(options: OctaneClientEntryOptions): void;
@@ -6,6 +6,9 @@ import type { ResponsePolicy } from '@modern-js/renderer-core/session';
6
6
  * declares for the document itself are kept, as Solid document headers are.
7
7
  */
8
8
  export declare function withOctaneDocumentFields(policy: ResponsePolicy, responseHeaders: Headers): ResponsePolicy;
9
- export type OctaneServerEntryOptions = NativeServerEntryOptions<NativeI18nInstance, LocalisedUrlsOption>;
9
+ export { createNativeWorkerFederationRuntime } from './worker-federation';
10
+ export interface OctaneServerEntryOptions extends NativeServerEntryOptions<NativeI18nInstance, LocalisedUrlsOption> {
11
+ readonly workerFederationLocale?: string;
12
+ }
10
13
  /** The native transport handlers of a generated Octane server entry. */
11
14
  export declare function createNativeServerEntry(options: OctaneServerEntryOptions): NativeServerEntry;
@@ -8,6 +8,8 @@ export interface FederatedComponentOptions {
8
8
  readonly fallback?: () => OctaneNode;
9
9
  /** A positive load limit; the server defaults to 3000ms. */
10
10
  readonly timeout?: number;
11
+ /** Explicit registered server projections required by an application remote. */
12
+ readonly contextKeys?: readonly string[];
11
13
  }
12
14
  /**
13
15
  * Render a native Octane remote by its `remote/Expose` id or a browser loader.
@@ -1,41 +1,14 @@
1
1
  import { type OctaneNode } from 'octane';
2
- import { type LinkComponentProps } from '../router';
3
- export interface LocalizedLinkProps {
2
+ import { type AnyRouter, type LinkComponentProps } from '../router';
3
+ export interface LocalizedLinkProps extends Omit<LinkComponentProps<'a', AnyRouter, string, string>, 'to' | 'mask' | 'href' | 'publicHref' | '_fromLocation'> {
4
4
  /** A canonical, language-agnostic target, e.g. `/products/red-shoe`. */
5
5
  to: string;
6
6
  /** Localize for a specific language instead of the current one. */
7
7
  language?: string;
8
- children?: unknown;
9
- class?: string;
10
- activeProps?: LinkComponentProps<'a'>['activeProps'];
11
- inactiveProps?: LinkComponentProps<'a'>['inactiveProps'];
12
- activeOptions?: LinkComponentProps<'a'>['activeOptions'];
13
- replace?: boolean;
14
- preload?: LinkComponentProps<'a'>['preload'];
15
8
  }
16
9
  /**
17
- * A thin wrapper over the native Octane router `Link`
18
- * (`@octanejs/tanstack-router`'s precompiled `Link.tsrx`) that localizes a
19
- * canonical `to` for the current (or an explicit) language before handing it
20
- * to the real link — the same contract as `@modern-js/plugin-i18n`'s React
21
- * `Link`. It resolves the href itself via the shared pathname helpers, so it
22
- * works with or without the router's i18n `rewrite`. Every link, including
23
- * one to another language, is the native `Link`: navigation, preloading and
24
- * active state stay with the router.
25
- *
26
- * Under the i18n `rewrite` the router matches canonical paths and localizes
27
- * outgoing locations to the current language, so a link to another language
28
- * routes to the canonical `to` and publishes the target language's URL as a
29
- * route mask (the rewrite keeps a mask's explicit language). The entry's
30
- * router language synchronization (`syncWithRouter`) switches the i18next
31
- * instance from the navigated URL, as it does for history navigation.
32
- *
33
- * No JSX: built with `createElement`, matching this package's existing
34
- * style (see `src/routes.ts`).
10
+ * The native router owns client navigation, preloading and active state. Its mask
11
+ * keeps the canonical route while publishing the selected language URL;
12
+ * the entry's i18n router subscription synchronizes the instance on navigation.
35
13
  */
36
14
  export declare function LocalizedLink(props: LocalizedLinkProps): OctaneNode;
37
- /**
38
- * Language-invariant active check: `to="/products"` is active whether the
39
- * current location is `/en/products` or `/produkty` under a mapped locale.
40
- */
41
- export declare function useIsLocalizedActive(canonicalTarget: string): boolean;
@@ -3,7 +3,7 @@ export type { I18nContextValue, I18nInstanceLike } from './types';
3
3
  /**
4
4
  * Octane's `createContext<T>(defaultValue: T)` requires a default (unlike
5
5
  * Solid 2's default-less form), so a missing provider is detected by
6
- * checking for `null` in `useI18n`/`useIsLocalizedActive` instead — the same
6
+ * checking for `null` in `useI18n`/`LocalizedLink` instead — the same
7
7
  * guard shape `@modern-js/plugin-i18n`'s React `ModernI18nContext` uses.
8
8
  */
9
9
  export declare const I18nContext: import("octane").Context<I18nContextValue | null>;
@@ -3,7 +3,7 @@ export { createI18nSsrHandoffInlineData, I18N_SSR_HANDOFF_ELEMENT_ID, type I18nS
3
3
  export { type CreateI18nUrlRewriteOptions, createI18nUrlRewrite, type I18nLocationRewrite, } from '@modern-js/i18n-runtime-extensions/urlRewrite';
4
4
  export { I18nContext } from './context';
5
5
  export { I18nProvider, type I18nProviderProps } from './I18nProvider';
6
- export { LocalizedLink, type LocalizedLinkProps, useIsLocalizedActive, } from './LocalizedLink';
6
+ export { LocalizedLink, type LocalizedLinkProps } from './LocalizedLink';
7
7
  export { type OctaneLatestLanguageSyncOptions, useLatestLanguageSync, } from './languageSync';
8
8
  export type { I18nContextValue, I18nInstanceLike } from './types';
9
9
  export { type UseI18nReturn, useI18n } from './useI18n';
@@ -0,0 +1,43 @@
1
+ import { type NativeI18nRewriteSnapshot } from '@modern-js/i18n-runtime-extensions/native';
2
+ import type { LocalisedUrlsOption } from '@modern-js/i18n-runtime-extensions/paths';
3
+ import type { NativeLocationRewrite } from '@modern-js/renderer-core/router';
4
+ import { type i18n as I18nInstance, type Resource } from 'i18next';
5
+ import type { I18nContextValue, I18nInstanceLike } from './i18n/types';
6
+ export type I18nSnapshotJson = null | boolean | number | string | I18nSnapshotJson[] | I18nSnapshotOptions;
7
+ export interface I18nSnapshotOptions {
8
+ [key: string]: I18nSnapshotJson;
9
+ }
10
+ export interface OctaneI18nProfileId {
11
+ key: string;
12
+ version: string;
13
+ }
14
+ export interface OctaneI18nSnapshot {
15
+ version: 1;
16
+ profile: OctaneI18nProfileId;
17
+ language: string;
18
+ languages: string[];
19
+ localisedUrls?: LocalisedUrlsOption;
20
+ options: I18nSnapshotOptions;
21
+ resources: Resource;
22
+ }
23
+ /** Named profiles install their custom translation functions locally. */
24
+ export interface OctaneI18nSnapshotProfile extends OctaneI18nProfileId {
25
+ captureOptions(instance: I18nInstanceLike): Readonly<I18nSnapshotOptions>;
26
+ validateOptions(options: Readonly<I18nSnapshotOptions>): void;
27
+ create(input: {
28
+ language: string;
29
+ options: Readonly<I18nSnapshotOptions>;
30
+ resources: Resource;
31
+ signal?: AbortSignal;
32
+ }): I18nInstance | Promise<I18nInstance>;
33
+ dispose?(instance: I18nInstance): void;
34
+ }
35
+ export declare function captureOctaneI18nRewriteSnapshot(rewrite: NativeLocationRewrite): NativeI18nRewriteSnapshot;
36
+ export declare function restoreOctaneI18nRewriteSnapshot(value: unknown): NativeLocationRewrite;
37
+ export declare function registerOctaneI18nSnapshotProfile(profile: OctaneI18nSnapshotProfile): () => void;
38
+ export declare function associateOctaneI18nSnapshotProfile(instance: I18nInstanceLike, id: OctaneI18nProfileId): void;
39
+ /** Built-in translation behavior only. Custom per-call processors need a profile. */
40
+ export declare function captureOctaneI18nSnapshot(value: I18nContextValue): OctaneI18nSnapshot;
41
+ export declare function restoreOctaneI18nSnapshot(value: unknown, signal?: AbortSignal): Promise<I18nContextValue>;
42
+ export declare function disposeOctaneI18nSnapshot(value: I18nContextValue): void;
43
+ export declare function registerOctaneI18nWorkerContexts(): () => void;
@@ -2,8 +2,8 @@ export type { RendererIdentity } from '@modern-js/renderer-core/identity';
2
2
  export type { OctaneDocumentBootstrap } from './bootstrap';
3
3
  export declare const OCTANE_RUNTIME_PROFILE: Readonly<{
4
4
  renderer: "octane";
5
- runtime: "0.7.1+ultramodern.1331985ea3b0";
6
- router: "0.1.60+ultramodern.0b9f76ee3003";
7
- routerCore: "1.171.15";
8
- history: "1.162.0";
5
+ runtime: "0.13.8";
6
+ router: "0.2.10";
7
+ routerCore: "1.171.34";
8
+ history: "1.162.4";
9
9
  }>;
@@ -1,7 +1,7 @@
1
1
  import type { NativeCompilerArtifacts } from '@modern-js/renderer-core/adapter';
2
2
  import { type RendererIdentity } from '@modern-js/renderer-core/identity';
3
- export declare const OCTANE_RUNTIME_VERSION = "0.7.1+ultramodern.1331985ea3b0";
4
- export declare const OCTANE_COMPILER_VERSION = "0.1.55";
3
+ export declare const OCTANE_RUNTIME_VERSION = "0.13.8";
4
+ export declare const OCTANE_COMPILER_VERSION = "0.2.4";
5
5
  export interface OctaneCompiledSource {
6
6
  readonly resource: string;
7
7
  readonly canonicalId: string;
@@ -0,0 +1,10 @@
1
+ import { type AnyRouter, type RouterRenderSnapshot } from '@octanejs/tanstack-router';
2
+ export declare const OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE: Readonly<{
3
+ key: "ultramodern.file-routes";
4
+ version: "1";
5
+ }>;
6
+ /** Associate the genuine router produced by the generated file-route factory. */
7
+ export declare function associateOctaneFileRouteSnapshot(router: AnyRouter): void;
8
+ export declare function captureOctaneRouterSnapshot(router: AnyRouter): RouterRenderSnapshot;
9
+ /** Startup registration uses the actual physical native router/match Contexts. */
10
+ export declare function registerOctaneRouterWorkerContexts(): () => void;
@@ -3,8 +3,6 @@ import { type ServerRenderNode } from 'octane/server';
3
3
  export * from '@octanejs/tanstack-router/ssr/server';
4
4
  export type { OctaneRequestHandlerOptions } from './router-handler';
5
5
  export { createOctaneRequestHandler } from './router-handler';
6
- export type { OctaneRouterInjectionOptions } from './router-injection';
7
- export { createOctaneRouterInjection } from './router-injection';
8
6
  export type { OctaneRouterSerializationGuard, OctaneRouterSerializationOptions, } from './router-server-snapshot';
9
7
  export { prepareOctaneRouterSerialization } from './router-server-snapshot';
10
8
  /** Render the native provider using the released Start server root contract. */
@@ -1,6 +1,8 @@
1
1
  import { type DocumentAsset, type DocumentInlineData } from '@modern-js/renderer-core/document';
2
2
  import type { NativeFederationBinding } from '@modern-js/renderer-core/federation';
3
3
  import { type RequestSession, type ResponsePolicy } from '@modern-js/renderer-core/session';
4
+ import type { WorkerFederationTransport } from '@modern-js/renderer-core/worker-federation';
5
+ import type { AnyRouter } from '@octanejs/tanstack-router';
4
6
  import { type ServerRenderNode, type StreamOptions } from 'octane/server';
5
7
  export interface OctaneDocumentOptions {
6
8
  /** One identity for this response, shared with the client's signal receiver. */
@@ -27,8 +29,12 @@ export interface RenderOctaneApplicationOptions<Bindings extends object = object
27
29
  readonly props?: unknown;
28
30
  /** Native router serialization, owned by this request's router SSR context. */
29
31
  readonly injection?: StreamOptions['injection'];
32
+ readonly router?: AnyRouter;
33
+ readonly routerSerializationTimeoutMs?: number;
30
34
  /** This server compilation's native Module Federation runtime. */
31
35
  readonly federation?: NativeFederationBinding;
36
+ readonly workerFederation?: WorkerFederationTransport;
37
+ readonly workerFederationLocale?: string;
32
38
  }
33
39
  /** Deliver the CSR document; native browser mounting owns the empty root. */
34
40
  export declare function renderOctaneCSRDocument<Bindings extends object>(input: OctaneDocumentResponseOptions<Bindings>): Promise<Response>;
@@ -0,0 +1,34 @@
1
+ import type { WorkerFederationTransport } from '@modern-js/renderer-core/worker-federation';
2
+ import { FederationApplication, type OctaneFederationScope } from './federation-context';
3
+ export interface OctaneWorkerFederationScope {
4
+ readonly transport: WorkerFederationTransport;
5
+ /** Compiled entry fallback; localized providers supply their live language. */
6
+ readonly locale: string;
7
+ /** Own document disposal; each lazy admission also owns its waiter deadline. */
8
+ readonly signal?: AbortSignal;
9
+ }
10
+ export type OctaneWorkerFederationFactory = (signal: AbortSignal) => OctaneWorkerFederationScope;
11
+ /** Each native document owns its transport and captured publisher authorities. */
12
+ export declare const WorkerFederationContext: import("octane").Context<OctaneWorkerFederationScope | null>;
13
+ export declare function WorkerFederationRoot(props: {
14
+ readonly scope: OctaneWorkerFederationScope;
15
+ readonly children?: unknown;
16
+ }): import("octane").ElementDescriptor<{
17
+ value: OctaneWorkerFederationScope;
18
+ children: unknown;
19
+ }>;
20
+ /** Stable native root used for startup and application updates alike. */
21
+ export declare function WorkerFederationApplication(props: {
22
+ readonly scope: OctaneWorkerFederationScope;
23
+ readonly federation?: OctaneFederationScope;
24
+ readonly application: Parameters<typeof FederationApplication>[0]['application'];
25
+ }): import("octane").ElementDescriptor<{
26
+ scope: OctaneWorkerFederationScope;
27
+ children: import("octane").ElementDescriptor<unknown> | import("octane").ElementDescriptor<{
28
+ scope: OctaneFederationScope;
29
+ application: {
30
+ readonly default: import("octane").ComponentBody;
31
+ readonly props?: unknown;
32
+ };
33
+ }>;
34
+ }>;
@@ -0,0 +1,25 @@
1
+ import type { NativeLocationRewrite } from '@modern-js/renderer-core/router';
2
+ import { type Context, type ExternalSnapshotContextCodec } from 'octane';
3
+ export declare const OCTANE_WORKER_CONTEXT_KEYS: Readonly<{
4
+ readonly router: 'ultramodern.octane.router-context.v1';
5
+ readonly match: 'ultramodern.octane.match-context.v1';
6
+ readonly i18n: 'ultramodern.octane.i18n-context.v1';
7
+ }>;
8
+ type OctaneWorkerContextKey = (typeof OCTANE_WORKER_CONTEXT_KEYS)[keyof typeof OCTANE_WORKER_CONTEXT_KEYS];
9
+ export interface OctaneWorkerContextCodec<T> extends ExternalSnapshotContextCodec<T> {
10
+ readonly key: OctaneWorkerContextKey;
11
+ readonly dispose?: (value: T) => void | PromiseLike<void>;
12
+ readonly isProvided: (value: T) => boolean;
13
+ }
14
+ /** Optional renderer modules register their actual native context identities. */
15
+ export declare function registerOctaneWorkerContext<T>(context: Context<T>, codec: OctaneWorkerContextCodec<T>): () => void;
16
+ /** Read live providers on every render; explicit requirements retain native validation. */
17
+ export declare function useOctaneWorkerContextKeys(explicit?: readonly string[]): readonly string[];
18
+ export interface OctaneWorkerRouterRewrite {
19
+ readonly capture: (rewrite: NativeLocationRewrite) => unknown;
20
+ readonly restore: (descriptor: unknown) => NativeLocationRewrite;
21
+ }
22
+ /** The optional i18n owner supplies its own native rewrite provenance. */
23
+ export declare function registerOctaneWorkerRouterRewrite(codec: OctaneWorkerRouterRewrite): () => void;
24
+ export declare function getOctaneWorkerRouterRewrite(): OctaneWorkerRouterRewrite | undefined;
25
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { NativeWorkerDispatchOptions } from '@modern-js/renderer-core/server';
2
+ import { type AdmitWorkerRendererContract, createWorkerFederationHandler } from '@modern-js/renderer-core/worker-federation';
3
+ import { prepareExternalSnapshotRequest } from 'octane/server';
4
+ type NativeSnapshotRequest = Awaited<ReturnType<typeof prepareExternalSnapshotRequest>>;
5
+ type HandlerOptions = Parameters<typeof createWorkerFederationHandler<NativeSnapshotRequest>>[0];
6
+ /** The compiled registry pins its renderer publication and literal imports. */
7
+ export interface OctaneWorkerFederationRegistry {
8
+ initialize(options: Omit<HandlerOptions, 'publication' | 'exposes'> & {
9
+ publication: unknown;
10
+ }): (request: Request) => Promise<Response | undefined>;
11
+ }
12
+ /** Created per dispatch; no publisher or native snapshot cache crosses documents. */
13
+ export declare function createNativeWorkerFederationRuntime<Bindings extends object>(options: NativeWorkerDispatchOptions<Bindings>, compiler: {
14
+ readonly admitRendererContract: AdmitWorkerRendererContract;
15
+ readonly registry?: OctaneWorkerFederationRegistry;
16
+ }): {
17
+ transport: import("@modern-js/renderer-core/worker-federation").WorkerFederationTransport | undefined;
18
+ handleRequest: (request: Request) => Promise<Response | undefined>;
19
+ };
20
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bleedingdev/modern-js-renderer-octane",
3
- "version": "3.9.3-ultramodern.7",
3
+ "version": "3.9.3-ultramodern.9",
4
4
  "description": "UltraModern native Octane application adapter.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -143,29 +143,61 @@
143
143
  "default": "./dist/cjs/plugin/index.js"
144
144
  }
145
145
  },
146
- "./package.json": "./package.json"
146
+ "./package.json": "./package.json",
147
+ "./router-external-snapshot": {
148
+ "import": {
149
+ "types": "./dist/types/router-external-snapshot.d.ts",
150
+ "default": "./dist/esm/router-external-snapshot.mjs"
151
+ },
152
+ "require": {
153
+ "types": "./dist/types/router-external-snapshot.d.ts",
154
+ "default": "./dist/cjs/router-external-snapshot.js"
155
+ }
156
+ },
157
+ "./i18n-external-snapshot": {
158
+ "import": {
159
+ "types": "./dist/types/i18n-external-snapshot.d.ts",
160
+ "default": "./dist/esm/i18n-external-snapshot.mjs"
161
+ },
162
+ "require": {
163
+ "types": "./dist/types/i18n-external-snapshot.d.ts",
164
+ "default": "./dist/cjs/i18n-external-snapshot.js"
165
+ }
166
+ },
167
+ "./worker-federation-contexts": {
168
+ "import": {
169
+ "types": "./dist/types/worker-federation-contexts.d.ts",
170
+ "default": "./dist/esm/worker-federation-contexts.mjs"
171
+ },
172
+ "require": {
173
+ "types": "./dist/types/worker-federation-contexts.d.ts",
174
+ "default": "./dist/cjs/worker-federation-contexts.js"
175
+ }
176
+ }
147
177
  },
148
178
  "bin": {
149
179
  "octane-tsc": "bin/octane-tsc.mjs"
150
180
  },
151
181
  "engines": {
152
- "node": ">=26.10.0"
182
+ "node": ">=26.12.0"
153
183
  },
154
184
  "dependencies": {
155
- "@modern-js/renderer-core": "npm:@bleedingdev/modern-js-renderer-core@3.9.3-ultramodern.7",
185
+ "@modern-js/renderer-core": "npm:@bleedingdev/modern-js-renderer-core@3.9.3-ultramodern.9",
156
186
  "@volar/language-core": "2.4.28",
157
187
  "jsonc-parser": "3.3.1",
158
- "seroval": "1.6.8",
159
- "seroval-plugins": "1.6.8",
188
+ "seroval": "1.6.9",
189
+ "seroval-plugins": "1.6.9",
160
190
  "typescript": "7.0.2"
161
191
  },
162
192
  "peerDependencies": {
163
- "@modern-js/i18n-runtime-extensions": "3.9.3-ultramodern.7",
164
- "@octanejs/rspack-plugin": "0.1.55",
165
- "@octanejs/tanstack-router": "0.1.60+ultramodern.0b9f76ee3003",
166
- "@rsbuild/core": "2.2.11",
193
+ "@modern-js/i18n-runtime-extensions": "3.9.3-ultramodern.9",
194
+ "@octanejs/rspack-plugin": "0.2.4",
195
+ "@octanejs/tanstack-router": "0.2.10",
196
+ "@rsbuild/core": "2.2.13",
197
+ "@tanstack/router-core": "1.171.38",
198
+ "@tsrx/oxc": "0.20.0",
167
199
  "i18next": ">=25.7.4",
168
- "octane": "0.7.1+ultramodern.1331985ea3b0"
200
+ "octane": "0.13.8"
169
201
  },
170
202
  "peerDependenciesMeta": {
171
203
  "@modern-js/i18n-runtime-extensions": {
@@ -180,6 +212,9 @@
180
212
  "@rsbuild/core": {
181
213
  "optional": true
182
214
  },
215
+ "@tsrx/oxc": {
216
+ "optional": true
217
+ },
183
218
  "i18next": {
184
219
  "optional": true
185
220
  },
@@ -188,22 +223,52 @@
188
223
  }
189
224
  },
190
225
  "devDependencies": {
191
- "@modern-js/i18n-runtime-extensions": "npm:@bleedingdev/modern-js-i18n-runtime-extensions@3.9.3-ultramodern.7",
192
- "@modern-js/tsconfig": "npm:@bleedingdev/modern-js-tsconfig@3.9.3-ultramodern.7",
193
- "@octanejs/rspack-plugin": "0.1.55",
194
- "@octanejs/tanstack-router": "https://github.com/bleedingdev/octane/releases/download/%40octanejs%2Ftanstack-router%400.1.60%2Bultramodern.0b9f76ee3003/octanejs-tanstack-router-0.1.60%2Bultramodern.0b9f76ee3003.tgz",
195
- "@rsbuild/core": "2.2.11",
226
+ "@modern-js/i18n-runtime-extensions": "npm:@bleedingdev/modern-js-i18n-runtime-extensions@3.9.3-ultramodern.9",
227
+ "@modern-js/tsconfig": "npm:@bleedingdev/modern-js-tsconfig@3.9.3-ultramodern.9",
228
+ "@octanejs/rspack-plugin": "https://github.com/BleedingDev/octane/releases/download/ultramodern-octane-0bf2313bbdfb/octanejs-rspack-plugin-0.2.4.tgz",
229
+ "@octanejs/tanstack-router": "https://github.com/BleedingDev/octane/releases/download/ultramodern-octane-0bf2313bbdfb/octanejs-tanstack-router-0.2.10.tgz",
230
+ "@rsbuild/core": "2.2.13",
196
231
  "@rslib/core": "1.0.3",
197
232
  "@scripts/rstest-config": "2.66.0",
198
- "@types/node": "^26.6.3",
199
- "happy-dom": "^20.14.5",
200
- "octane": "https://github.com/bleedingdev/octane/releases/download/octane%400.7.1%2Bultramodern.1331985ea3b0/octane-0.7.1%2Bultramodern.1331985ea3b0.tgz",
233
+ "@tanstack/router-core": "https://github.com/BleedingDev/router/releases/download/ultramodern-router-core-585d3233f7f5/tanstack-router-core-1.171.38.tgz",
234
+ "@tsrx/oxc": "0.20.0",
235
+ "@types/jsdom": "27.0.0",
236
+ "@types/node": "^26.6.5",
237
+ "happy-dom": "^21.0.3",
238
+ "i18next": "26.4.6",
239
+ "jsdom": "30.0.1",
240
+ "octane": "https://github.com/BleedingDev/octane/releases/download/ultramodern-octane-0bf2313bbdfb/octane-0.13.8.tgz",
201
241
  "typescript": "7.0.2"
202
242
  },
203
243
  "sideEffects": false,
204
244
  "publishConfig": {
205
245
  "access": "public"
206
246
  },
247
+ "ultramodern": {
248
+ "nativeArtifacts": {
249
+ "octane": {
250
+ "request": "https://github.com/BleedingDev/octane/releases/download/ultramodern-octane-0bf2313bbdfb/octane-0.13.8.tgz",
251
+ "version": "0.13.8",
252
+ "integrity": "sha512-5ReT/LEGpeLyAD1NAObxbcvlaC3yjcF2TNA0ZRT63tnO841r8u66WlSbEdcrQmUnIxl/ECsYrmN5LEampD8Jpg=="
253
+ },
254
+ "@octanejs/tanstack-router": {
255
+ "request": "https://github.com/BleedingDev/octane/releases/download/ultramodern-octane-0bf2313bbdfb/octanejs-tanstack-router-0.2.10.tgz",
256
+ "version": "0.2.10",
257
+ "integrity": "sha512-wdnPhVZSQqZg2DDllUyz4RZufn7I0GEnPKrb/CB21Z8JYKnunAtZn41Dma/+xhg5xvN/USnIg9Eyyf2nbJgxMQ=="
258
+ },
259
+ "@octanejs/rspack-plugin": {
260
+ "request": "https://github.com/BleedingDev/octane/releases/download/ultramodern-octane-0bf2313bbdfb/octanejs-rspack-plugin-0.2.4.tgz",
261
+ "version": "0.2.4",
262
+ "integrity": "sha512-I8m/d/oj3Qh8nG5nqkWD90m8qgNwlPK9oNh5tlVvGNdSYCTLddRG7Og8wpYKFAGxe2D+0zOIhYGarC0ZKZgSzw=="
263
+ },
264
+ "@tanstack/router-core": {
265
+ "request": "https://github.com/BleedingDev/router/releases/download/ultramodern-router-core-585d3233f7f5/tanstack-router-core-1.171.38.tgz",
266
+ "version": "1.171.38",
267
+ "integrity": "sha512-d/aGvcyEVwDh2Cn9MuZM1n1dqTIqkFYi7AHY2Na/6x/a0jVSDVTNVVVY7QEsuKFXktaJF9zjVwetaRm/0MALZg=="
268
+ }
269
+ },
270
+ "sourceName": "@modern-js/renderer-octane"
271
+ },
207
272
  "scripts": {
208
273
  "build": "rslib build && tsc -p tsconfig.types.json",
209
274
  "test": "rstest"
@@ -211,8 +276,5 @@
211
276
  "homepage": "https://github.com/ultramodernjs/ultramodern.js#readme",
212
277
  "bugs": {
213
278
  "url": "https://github.com/ultramodernjs/ultramodern.js/issues"
214
- },
215
- "ultramodern": {
216
- "sourceName": "@modern-js/renderer-octane"
217
279
  }
218
280
  }