@openruntime/modern-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +334 -0
  2. package/dist/business/ready.d.ts +13 -0
  3. package/dist/business/ready.d.ts.map +1 -0
  4. package/dist/business/ready.js +48 -0
  5. package/dist/business/ready.js.map +1 -0
  6. package/dist/garfish/plugin.d.ts +5 -0
  7. package/dist/garfish/plugin.d.ts.map +1 -0
  8. package/dist/garfish/plugin.js +181 -0
  9. package/dist/garfish/plugin.js.map +1 -0
  10. package/dist/garfish/reporter.d.ts +6 -0
  11. package/dist/garfish/reporter.d.ts.map +1 -0
  12. package/dist/garfish/reporter.js +338 -0
  13. package/dist/garfish/reporter.js.map +1 -0
  14. package/dist/garfish/types.d.ts +111 -0
  15. package/dist/garfish/types.d.ts.map +1 -0
  16. package/dist/garfish/types.js +25 -0
  17. package/dist/garfish/types.js.map +1 -0
  18. package/dist/index.d.ts +11 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +8 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/modern/events.d.ts +124 -0
  23. package/dist/modern/events.d.ts.map +1 -0
  24. package/dist/modern/events.js +2 -0
  25. package/dist/modern/events.js.map +1 -0
  26. package/dist/modern/handlers.d.ts +10 -0
  27. package/dist/modern/handlers.d.ts.map +1 -0
  28. package/dist/modern/handlers.js +355 -0
  29. package/dist/modern/handlers.js.map +1 -0
  30. package/dist/modern/serialize.d.ts +9 -0
  31. package/dist/modern/serialize.d.ts.map +1 -0
  32. package/dist/modern/serialize.js +84 -0
  33. package/dist/modern/serialize.js.map +1 -0
  34. package/dist/modern/stream-ssr.d.ts +5 -0
  35. package/dist/modern/stream-ssr.d.ts.map +1 -0
  36. package/dist/modern/stream-ssr.js +90 -0
  37. package/dist/modern/stream-ssr.js.map +1 -0
  38. package/dist/plugin/create-plugin.d.ts +3 -0
  39. package/dist/plugin/create-plugin.d.ts.map +1 -0
  40. package/dist/plugin/create-plugin.js +32 -0
  41. package/dist/plugin/create-plugin.js.map +1 -0
  42. package/dist/plugin/runtime-state.d.ts +60 -0
  43. package/dist/plugin/runtime-state.d.ts.map +1 -0
  44. package/dist/plugin/runtime-state.js +453 -0
  45. package/dist/plugin/runtime-state.js.map +1 -0
  46. package/dist/plugin/types.d.ts +24 -0
  47. package/dist/plugin/types.d.ts.map +1 -0
  48. package/dist/plugin/types.js +2 -0
  49. package/dist/plugin/types.js.map +1 -0
  50. package/dist/runtime/render-context.d.ts +11 -0
  51. package/dist/runtime/render-context.d.ts.map +1 -0
  52. package/dist/runtime/render-context.js +51 -0
  53. package/dist/runtime/render-context.js.map +1 -0
  54. package/dist/runtime/resolve-runtime.d.ts +9 -0
  55. package/dist/runtime/resolve-runtime.d.ts.map +1 -0
  56. package/dist/runtime/resolve-runtime.js +31 -0
  57. package/dist/runtime/resolve-runtime.js.map +1 -0
  58. package/dist/runtime/targets.d.ts +51 -0
  59. package/dist/runtime/targets.d.ts.map +1 -0
  60. package/dist/runtime/targets.js +176 -0
  61. package/dist/runtime/targets.js.map +1 -0
  62. package/package.json +41 -0
@@ -0,0 +1,32 @@
1
+ import { handleBeforeRender, handleHydration, handleRouteComponent, handleRouteLoader, handleRouterCreated, handleRouterStateChange, isServerRenderContext } from "../modern/handlers.js";
2
+ import { createOpenRuntimeStreamSsrExtender } from "../modern/stream-ssr.js";
3
+ import { ModernPluginRuntimeState } from "./runtime-state.js";
4
+ export function openRuntimeModernPlugin(options = {}) {
5
+ return {
6
+ name: "@openruntime/modern-plugin",
7
+ setup(api) {
8
+ const state = new ModernPluginRuntimeState(options);
9
+ state.getRuntime();
10
+ api.onBeforeRender((context) => {
11
+ handleBeforeRender(isServerRenderContext(context) ? new ModernPluginRuntimeState(options) : state, context);
12
+ });
13
+ api.onHydration?.((event) => {
14
+ handleHydration(state, event);
15
+ });
16
+ api.onRouterCreated?.((event) => {
17
+ handleRouterCreated(state, event);
18
+ });
19
+ api.onRouterStateChange?.((event) => {
20
+ handleRouterStateChange(state, event);
21
+ });
22
+ api.onRouteLoader?.((event) => {
23
+ handleRouteLoader(state, event);
24
+ });
25
+ api.onRouteComponent?.((event) => {
26
+ handleRouteComponent(state, event);
27
+ });
28
+ api.extendStreamSSR?.(() => createOpenRuntimeStreamSsrExtender());
29
+ }
30
+ };
31
+ }
32
+ //# sourceMappingURL=create-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-plugin.js","sourceRoot":"","sources":["../../src/plugin/create-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,MAAM,UAAU,uBAAuB,CACrC,UAA0C,EAAE;IAE5C,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,CAAC,GAA2B;YAC/B,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACpD,KAAK,CAAC,UAAU,EAAE,CAAC;YAEnB,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,kBAAkB,CAChB,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAC9E,OAAO,CACR,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1B,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5B,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,kCAAkC,EAAE,CAAC,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { OpenRuntimeCore, OpenRuntimeWindowHost, RuntimeError, RuntimeStatus } from "@openruntime/core";
2
+ import type { ModernDataRouter, ModernRouteObject, ModernRouterState } from "../modern/events.js";
3
+ import { type RouteManifestEntry, type RouteTargetInfo } from "../runtime/targets.js";
4
+ import { type OpenRuntimeRenderContext } from "../runtime/render-context.js";
5
+ import type { OpenRuntimeModernPluginOptions } from "./types.js";
6
+ export interface RouteRuntimeData {
7
+ pathname?: string;
8
+ navigation?: string;
9
+ matches: RouteRuntimeMatch[];
10
+ errorRouteIds: string[];
11
+ }
12
+ export interface RouteRuntimeMatch extends Omit<RouteManifestEntry, "hasLoader" | "hasRouteComponent"> {
13
+ loader?: RuntimeRouteLoaderStatus;
14
+ routeComponent?: "error";
15
+ error?: RuntimeError;
16
+ }
17
+ type RuntimeRouteLoaderStatus = "loading" | "success" | "redirect" | "error";
18
+ type RuntimeRouteComponentStatus = "loading" | "mounted" | "error";
19
+ interface RouteLoaderState {
20
+ status: RuntimeRouteLoaderStatus;
21
+ error?: RuntimeError;
22
+ data?: unknown;
23
+ }
24
+ interface RouteComponentState {
25
+ status: RuntimeRouteComponentStatus;
26
+ error?: RuntimeError;
27
+ data?: unknown;
28
+ }
29
+ export declare class ModernPluginRuntimeState {
30
+ #private;
31
+ readonly source: string;
32
+ constructor(options: OpenRuntimeModernPluginOptions);
33
+ getRuntime(): OpenRuntimeCore;
34
+ getHost(): OpenRuntimeWindowHost | undefined;
35
+ setRouter(router: ModernDataRouter): void;
36
+ startServerRender(): OpenRuntimeRenderContext;
37
+ getServerRenderContext(): OpenRuntimeRenderContext | undefined;
38
+ syncServerBridge(url: string): void;
39
+ registerRoutes(routes: ModernRouteObject[]): RouteTargetInfo[];
40
+ registerRoute(route: ModernRouteObject): RouteTargetInfo[];
41
+ resolveRouteId(routeId: string): string;
42
+ ensureHydrationTarget(): void;
43
+ ensureSsrTarget(): void;
44
+ hasHydrationFailed(): boolean;
45
+ markHydrationFailed(): void;
46
+ suppressHydrationTarget(): void;
47
+ isHydrationSuppressed(): boolean;
48
+ hasSsrTarget(): boolean;
49
+ updateRouteFromRouterState(routes: ModernRouteObject[], routerState: ModernRouterState | undefined): void;
50
+ getCurrentRouteStatus(): RuntimeStatus;
51
+ getCurrentRoutePathname(): string | undefined;
52
+ getCurrentRouteErrorIds(): string[];
53
+ getRouteCount(): number;
54
+ getCurrentRouteFailureReason(): "route-loader-error" | "route-component-error" | "route-error";
55
+ updateLoader(routeId: string, state: RouteLoaderState): void;
56
+ updateComponent(routeId: string, state: RouteComponentState): void;
57
+ syncRouteSnapshot(): void;
58
+ }
59
+ export {};
60
+ //# sourceMappingURL=runtime-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/plugin/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,YAAY,EAEZ,aAAa,EACd,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EACV,gBAAgB,EAEhB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EASL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,mBAAmB,CAAC;IACpG,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,KAAK,wBAAwB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAC7E,KAAK,2BAA2B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,UAAU,gBAAgB;IACxB,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,2BAA2B,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AASD,qBAAa,wBAAwB;;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAmBZ,OAAO,EAAE,8BAA8B;IAKnD,UAAU,IAAI,eAAe;IAS7B,OAAO,IAAI,qBAAqB,GAAG,SAAS;IAI5C,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIzC,iBAAiB,IAAI,wBAAwB;IAM7C,sBAAsB,IAAI,wBAAwB,GAAG,SAAS;IAI9D,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmBnC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE;IAS9D,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,EAAE;IAI1D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIvC,qBAAqB,IAAI,IAAI;IAQ7B,eAAe,IAAI,IAAI;IAMvB,kBAAkB,IAAI,OAAO;IAI7B,mBAAmB,IAAI,IAAI;IAI3B,uBAAuB,IAAI,IAAI;IAK/B,qBAAqB,IAAI,OAAO;IAIhC,YAAY,IAAI,OAAO;IAIvB,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI;IAgBzG,qBAAqB,IAAI,aAAa;IAItC,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAI7C,uBAAuB,IAAI,MAAM,EAAE;IAInC,aAAa,IAAI,MAAM;IAIvB,4BAA4B,IAAI,oBAAoB,GAAG,uBAAuB,GAAG,aAAa;IAW9F,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAc5D,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAclE,iBAAiB,IAAI,IAAI;CAiR1B"}
@@ -0,0 +1,453 @@
1
+ import { createOpenRuntime, syncServerRuntimeBridge } from "@openruntime/core";
2
+ import { flattenRoutes, getRouteManifestEntry, registerBaseTargets, registerHydrationTarget, registerRouteTargetInfos, registerSsrTarget, updateTargetStatus, modernTargetIds } from "../runtime/targets.js";
3
+ import { resolveOpenRuntime } from "../runtime/resolve-runtime.js";
4
+ import { createOpenRuntimeRenderContext } from "../runtime/render-context.js";
5
+ const routeListActionName = "modern.route.list";
6
+ const routeNavigateActionName = "modern.route.navigate";
7
+ export class ModernPluginRuntimeState {
8
+ source;
9
+ #options;
10
+ #routes = new Map();
11
+ #routeAliases = new Map();
12
+ #loaderStates = new Map();
13
+ #componentStates = new Map();
14
+ #routeErrors = new Map();
15
+ #routeListActionRuntimes = new WeakSet();
16
+ #routeNavigateActionRuntimes = new WeakSet();
17
+ #runtime;
18
+ #router;
19
+ #serverRenderContext;
20
+ #serverSyncQueue = Promise.resolve();
21
+ #currentMatches = [];
22
+ #pathname;
23
+ #navigation;
24
+ #hydrationFailed = false;
25
+ #hydrationSuppressed = false;
26
+ constructor(options) {
27
+ this.#options = options;
28
+ this.source = options.source ?? "modern.js";
29
+ }
30
+ getRuntime() {
31
+ this.#runtime ??= resolveOpenRuntime({
32
+ ...this.#options,
33
+ beforeConnect: (runtime) => this.#ensureBaseTargets(runtime)
34
+ });
35
+ this.#ensureBaseTargets(this.#runtime);
36
+ return this.#runtime;
37
+ }
38
+ getHost() {
39
+ return this.#options.host;
40
+ }
41
+ setRouter(router) {
42
+ this.#router = router;
43
+ }
44
+ startServerRender() {
45
+ this.#runtime = createOpenRuntime();
46
+ this.#serverRenderContext = createOpenRuntimeRenderContext(this.source);
47
+ return this.#serverRenderContext;
48
+ }
49
+ getServerRenderContext() {
50
+ return this.#serverRenderContext;
51
+ }
52
+ syncServerBridge(url) {
53
+ if (this.#serverRenderContext === undefined || this.#options.bridge === undefined || this.#options.bridge === false) {
54
+ return;
55
+ }
56
+ const bridge = this.#options.bridge;
57
+ const runtime = this.getRuntime();
58
+ const renderContext = this.#serverRenderContext;
59
+ this.#serverSyncQueue = this.#serverSyncQueue.then(() => syncServerRuntimeBridge(runtime, {
60
+ runtimeId: renderContext.runtimeId,
61
+ renderId: renderContext.renderId,
62
+ url,
63
+ source: this.source,
64
+ ...(bridge.port === undefined ? {} : { port: bridge.port })
65
+ }).then(() => undefined)).catch(() => {
66
+ // Server rendering should not fail just because the optional local Bridge is unavailable.
67
+ });
68
+ }
69
+ registerRoutes(routes) {
70
+ const routeInfos = flattenRoutes(routes);
71
+ for (const info of routeInfos) {
72
+ this.#upsertRoute(info);
73
+ }
74
+ return this.#syncRouteTarget();
75
+ }
76
+ registerRoute(route) {
77
+ return this.registerRoutes([route]);
78
+ }
79
+ resolveRouteId(routeId) {
80
+ return this.#routeAliases.get(routeId) ?? routeId;
81
+ }
82
+ ensureHydrationTarget() {
83
+ if (this.#hydrationSuppressed) {
84
+ return;
85
+ }
86
+ registerHydrationTarget(this.getRuntime(), this.source);
87
+ }
88
+ ensureSsrTarget() {
89
+ const runtime = this.getRuntime();
90
+ registerSsrTarget(runtime, this.source);
91
+ updateInitialSnapshot(runtime, this.source, modernTargetIds.ssr, "unknown");
92
+ }
93
+ hasHydrationFailed() {
94
+ return this.#hydrationFailed;
95
+ }
96
+ markHydrationFailed() {
97
+ this.#hydrationFailed = true;
98
+ }
99
+ suppressHydrationTarget() {
100
+ this.#hydrationSuppressed = true;
101
+ this.getRuntime().unregisterTarget(modernTargetIds.hydration);
102
+ }
103
+ isHydrationSuppressed() {
104
+ return this.#hydrationSuppressed;
105
+ }
106
+ hasSsrTarget() {
107
+ return this.getRuntime().getTargets({ id: modernTargetIds.ssr }).length > 0;
108
+ }
109
+ updateRouteFromRouterState(routes, routerState) {
110
+ this.registerRoutes(routes);
111
+ this.#pathname = routerState?.location?.pathname;
112
+ this.#navigation = routerState?.navigation?.state ?? "idle";
113
+ this.#routeErrors.clear();
114
+ for (const [routeId, error] of Object.entries(routerState?.errors ?? {})) {
115
+ this.#routeErrors.set(this.resolveRouteId(routeId), toRouteError(error));
116
+ }
117
+ this.#currentMatches = dedupeRouteMatches((routerState?.matches ?? []).map((match) => this.#createRouteMatch(match)));
118
+ this.syncRouteSnapshot();
119
+ }
120
+ getCurrentRouteStatus() {
121
+ return this.#getRouteStatus();
122
+ }
123
+ getCurrentRoutePathname() {
124
+ return this.#pathname;
125
+ }
126
+ getCurrentRouteErrorIds() {
127
+ return [...this.#routeErrors.keys()];
128
+ }
129
+ getRouteCount() {
130
+ return this.#routes.size;
131
+ }
132
+ getCurrentRouteFailureReason() {
133
+ if (this.#currentMatches.some((match) => match.loader === "error")) {
134
+ return "route-loader-error";
135
+ }
136
+ if (this.#currentMatches.some((match) => match.routeComponent === "error")) {
137
+ return "route-component-error";
138
+ }
139
+ return "route-error";
140
+ }
141
+ updateLoader(routeId, state) {
142
+ const targetRouteId = this.resolveRouteId(routeId);
143
+ if (targetRouteId === routeId) {
144
+ this.registerRoute({ id: routeId, hasLoader: true });
145
+ }
146
+ this.#loaderStates.set(targetRouteId, state);
147
+ if (state.error !== undefined) {
148
+ this.#routeErrors.set(targetRouteId, state.error);
149
+ }
150
+ this.#refreshCurrentMatch(targetRouteId);
151
+ this.syncRouteSnapshot();
152
+ }
153
+ updateComponent(routeId, state) {
154
+ const targetRouteId = this.resolveRouteId(routeId);
155
+ if (targetRouteId === routeId) {
156
+ this.registerRoute({ id: routeId, Component: true });
157
+ }
158
+ this.#componentStates.set(targetRouteId, state);
159
+ if (state.error !== undefined) {
160
+ this.#routeErrors.set(targetRouteId, state.error);
161
+ }
162
+ this.#refreshCurrentMatch(targetRouteId);
163
+ this.syncRouteSnapshot();
164
+ }
165
+ syncRouteSnapshot() {
166
+ const runtime = this.getRuntime();
167
+ const status = this.#getRouteStatus();
168
+ const error = status === "error" ? this.#getFirstRouteError() : undefined;
169
+ updateTargetStatus(runtime, this.source, modernTargetIds.route, status, {
170
+ data: this.#getRouteRuntimeData(),
171
+ ...(error === undefined ? {} : { error })
172
+ });
173
+ }
174
+ #ensureBaseTargets(runtime) {
175
+ registerBaseTargets(runtime, this.source);
176
+ registerRouteTargetInfos(runtime, this.source, [...this.#routes.values()]);
177
+ this.#ensureRouteActions(runtime);
178
+ updateInitialSnapshot(runtime, this.source, modernTargetIds.app, "initializing");
179
+ }
180
+ #ensureRouteActions(runtime) {
181
+ if (this.#serverRenderContext !== undefined) {
182
+ return;
183
+ }
184
+ if (this.#options.injectRouteListAction === true && !this.#routeListActionRuntimes.has(runtime)) {
185
+ runtime.registerAction({
186
+ name: routeListActionName,
187
+ description: "List Modern.js routes known by the current page.",
188
+ source: this.source,
189
+ risk: "safe",
190
+ handler: () => ({
191
+ routes: this.#getRouteManifestEntries(),
192
+ routeCount: this.#routes.size
193
+ })
194
+ });
195
+ this.#routeListActionRuntimes.add(runtime);
196
+ }
197
+ if (this.#options.injectRouteNavigateAction === true && !this.#routeNavigateActionRuntimes.has(runtime)) {
198
+ runtime.registerAction({
199
+ name: routeNavigateActionName,
200
+ description: "Navigate to a known Modern.js route.",
201
+ source: this.source,
202
+ risk: "state-changing",
203
+ inputSchema: {
204
+ type: "object",
205
+ properties: {
206
+ to: {
207
+ type: "string",
208
+ description: "Known route pathname to navigate to."
209
+ },
210
+ replace: {
211
+ type: "boolean",
212
+ description: "Replace the current history entry instead of pushing a new entry."
213
+ }
214
+ },
215
+ required: ["to"],
216
+ additionalProperties: false
217
+ },
218
+ getInputOptions: (inputName) => {
219
+ if (inputName !== "to") {
220
+ return [];
221
+ }
222
+ return this.#getRouteNavigateOptions();
223
+ },
224
+ handler: async (payload) => this.#navigateRoute(payload)
225
+ });
226
+ this.#routeNavigateActionRuntimes.add(runtime);
227
+ }
228
+ }
229
+ #getRouteManifestEntries() {
230
+ return [...this.#routes.values()].map(getRouteManifestEntry);
231
+ }
232
+ #getRouteNavigateOptions() {
233
+ const seen = new Set();
234
+ const options = [];
235
+ for (const route of this.#getRouteManifestEntries()) {
236
+ if (!isNavigableRouteManifestEntry(route) || seen.has(route.pathname)) {
237
+ continue;
238
+ }
239
+ seen.add(route.pathname);
240
+ options.push({
241
+ value: route.pathname,
242
+ description: getRouteOptionDescription(route)
243
+ });
244
+ }
245
+ return options;
246
+ }
247
+ async #navigateRoute(payload) {
248
+ const input = isRecord(payload) ? payload : {};
249
+ const to = typeof input.to === "string" ? input.to.trim() : "";
250
+ if (to === "") {
251
+ throw new Error("Route navigation requires a non-empty to value.");
252
+ }
253
+ const route = this.#resolveNavigableRoute(to);
254
+ if (route === undefined) {
255
+ throw new Error(`Route "${to}" is not in the Modern.js route list.`);
256
+ }
257
+ const router = this.#router;
258
+ if (typeof router?.navigate !== "function") {
259
+ throw new Error("Modern.js router navigation is not available.");
260
+ }
261
+ const replace = input.replace === true;
262
+ await router.navigate(route.pathname, { replace });
263
+ return {
264
+ to: route.pathname,
265
+ routeId: route.routeId,
266
+ replace
267
+ };
268
+ }
269
+ #resolveNavigableRoute(to) {
270
+ return this.#getRouteManifestEntries().find((route) => {
271
+ if (!isNavigableRouteManifestEntry(route)) {
272
+ return false;
273
+ }
274
+ return route.pathname === to || route.routeId === to;
275
+ });
276
+ }
277
+ #upsertRoute(info) {
278
+ const existing = this.#routes.get(info.routeId);
279
+ this.#routes.set(info.routeId, {
280
+ routeId: info.routeId,
281
+ route: {
282
+ ...existing?.route,
283
+ ...info.route,
284
+ ...(info.route.children === undefined && existing?.route.children !== undefined
285
+ ? { children: existing.route.children }
286
+ : {})
287
+ },
288
+ ...(info.parentRouteId !== undefined
289
+ ? { parentRouteId: info.parentRouteId }
290
+ : existing?.parentRouteId === undefined
291
+ ? {}
292
+ : { parentRouteId: existing.parentRouteId }),
293
+ ...(info.modernRouteId !== undefined
294
+ ? { modernRouteId: info.modernRouteId }
295
+ : existing?.modernRouteId === undefined
296
+ ? {}
297
+ : { modernRouteId: existing.modernRouteId }),
298
+ ...(info.pathname !== undefined
299
+ ? { pathname: info.pathname }
300
+ : existing?.pathname === undefined
301
+ ? {}
302
+ : { pathname: existing.pathname })
303
+ });
304
+ if (info.modernRouteId !== undefined) {
305
+ this.#routeAliases.set(info.modernRouteId, info.routeId);
306
+ }
307
+ }
308
+ #syncRouteTarget() {
309
+ const runtime = this.getRuntime();
310
+ const routeInfos = [...this.#routes.values()];
311
+ registerRouteTargetInfos(runtime, this.source, routeInfos);
312
+ return routeInfos;
313
+ }
314
+ #createRouteMatch(match) {
315
+ const modernRouteId = match.route?.id ?? match.id;
316
+ const routeId = modernRouteId === undefined ? match.pathname ?? "unknown" : this.resolveRouteId(modernRouteId);
317
+ const routeInfo = this.#routes.get(routeId);
318
+ if (routeInfo === undefined && modernRouteId !== undefined) {
319
+ this.registerRoute({ id: modernRouteId });
320
+ }
321
+ const refreshedRouteInfo = this.#routes.get(routeId);
322
+ const manifest = refreshedRouteInfo === undefined
323
+ ? createFallbackManifest(routeId, modernRouteId, match.pathname)
324
+ : getRouteManifestEntry(refreshedRouteInfo);
325
+ return this.#attachRouteStepState({
326
+ ...manifest,
327
+ ...(match.pathname === undefined ? {} : { pathname: match.pathname })
328
+ });
329
+ }
330
+ #refreshCurrentMatch(routeId) {
331
+ this.#currentMatches = this.#currentMatches.map((match) => {
332
+ if (match.routeId !== routeId) {
333
+ return match;
334
+ }
335
+ const routeInfo = this.#routes.get(routeId);
336
+ const manifest = routeInfo === undefined
337
+ ? createFallbackManifest(match.routeId, match.modernRouteId, match.pathname)
338
+ : getRouteManifestEntry(routeInfo);
339
+ return this.#attachRouteStepState({
340
+ ...manifest,
341
+ ...(match.pathname === undefined ? {} : { pathname: match.pathname })
342
+ });
343
+ });
344
+ }
345
+ #attachRouteStepState(match) {
346
+ const { hasLoader, hasRouteComponent: _hasRouteComponent, ...matchData } = match;
347
+ const loaderState = this.#loaderStates.get(match.routeId);
348
+ const componentState = this.#componentStates.get(match.routeId);
349
+ const routeError = this.#routeErrors.get(match.routeId);
350
+ const next = { ...matchData };
351
+ if (loaderState !== undefined) {
352
+ next.loader = loaderState.status;
353
+ }
354
+ else if (hasLoader) {
355
+ next.loader = routeError === undefined ? "success" : "error";
356
+ }
357
+ if (componentState?.status === "error") {
358
+ next.routeComponent = "error";
359
+ }
360
+ if (routeError !== undefined) {
361
+ next.error = routeError;
362
+ }
363
+ else if (loaderState?.error !== undefined) {
364
+ next.error = loaderState.error;
365
+ }
366
+ else if (componentState?.error !== undefined) {
367
+ next.error = componentState.error;
368
+ }
369
+ return next;
370
+ }
371
+ #getRouteRuntimeData() {
372
+ return {
373
+ ...(this.#pathname === undefined ? {} : { pathname: this.#pathname }),
374
+ ...(this.#navigation === undefined ? {} : { navigation: this.#navigation }),
375
+ matches: this.#currentMatches,
376
+ errorRouteIds: [...this.#routeErrors.keys()]
377
+ };
378
+ }
379
+ #getRouteStatus() {
380
+ if (this.#currentMatches.length === 0) {
381
+ return "idle";
382
+ }
383
+ if (this.#routeErrors.size > 0 || this.#currentMatches.some((match) => match.error !== undefined || match.loader === "error" || match.routeComponent === "error")) {
384
+ return "error";
385
+ }
386
+ if (this.#navigation !== undefined && this.#navigation !== "idle") {
387
+ return "loading";
388
+ }
389
+ if (this.#currentMatches.some((match) => match.loader === "loading" || match.loader === "redirect")) {
390
+ return "loading";
391
+ }
392
+ return "ready";
393
+ }
394
+ #getFirstRouteError() {
395
+ for (const match of this.#currentMatches) {
396
+ if (match.error !== undefined) {
397
+ return match.error;
398
+ }
399
+ }
400
+ return this.#routeErrors.values().next().value;
401
+ }
402
+ }
403
+ function createFallbackManifest(routeId, modernRouteId, pathname) {
404
+ return {
405
+ routeId,
406
+ hasLoader: false,
407
+ hasRouteComponent: false,
408
+ hasLazyModule: false,
409
+ ...(pathname === undefined ? {} : { pathname }),
410
+ ...(modernRouteId === undefined ? {} : { modernRouteId })
411
+ };
412
+ }
413
+ function updateInitialSnapshot(runtime, source, targetId, status) {
414
+ if (runtime.getSnapshot({ id: targetId }).targets[targetId] !== undefined) {
415
+ return;
416
+ }
417
+ updateTargetStatus(runtime, source, targetId, status);
418
+ }
419
+ function toRouteError(error) {
420
+ if (error instanceof Error) {
421
+ return {
422
+ message: error.message,
423
+ ...(error.stack === undefined ? {} : { stack: error.stack })
424
+ };
425
+ }
426
+ return {
427
+ message: String(error)
428
+ };
429
+ }
430
+ function dedupeRouteMatches(matches) {
431
+ const deduped = [];
432
+ for (const match of matches) {
433
+ if (deduped[deduped.length - 1]?.routeId === match.routeId) {
434
+ deduped[deduped.length - 1] = match;
435
+ continue;
436
+ }
437
+ deduped.push(match);
438
+ }
439
+ return deduped;
440
+ }
441
+ function getRouteOptionDescription(route) {
442
+ if (route.modernRouteId !== undefined && route.modernRouteId !== route.pathname) {
443
+ return route.modernRouteId;
444
+ }
445
+ return route.routeId;
446
+ }
447
+ function isNavigableRouteManifestEntry(route) {
448
+ return typeof route.pathname === "string" && route.pathname.startsWith("/");
449
+ }
450
+ function isRecord(value) {
451
+ return typeof value === "object" && value !== null;
452
+ }
453
+ //# sourceMappingURL=runtime-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/plugin/runtime-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { BridgeConnectOptions, OpenRuntimeCore, OpenRuntimeWindowHost } from "@openruntime/core";
2
+ import type { ModernHydrationEvent, ModernRenderContext, ModernRouteComponentEvent, ModernRouteLoaderEvent, ModernRouterCreatedEvent, ModernRouterStateChangeEvent, ModernStreamSsrExtender } from "../modern/events.js";
3
+ export interface OpenRuntimeModernPluginOptions {
4
+ runtime?: OpenRuntimeCore;
5
+ source?: string;
6
+ bridge?: false | BridgeConnectOptions;
7
+ host?: OpenRuntimeWindowHost;
8
+ injectRouteListAction?: boolean;
9
+ injectRouteNavigateAction?: boolean;
10
+ }
11
+ export interface ModernRuntimePlugin {
12
+ name: string;
13
+ setup(api: ModernRuntimePluginApi): void;
14
+ }
15
+ export interface ModernRuntimePluginApi {
16
+ onBeforeRender(handler: (context: ModernRenderContext) => void): void;
17
+ onHydration?: (handler: (event: ModernHydrationEvent) => void) => void;
18
+ onRouterCreated?: (handler: (event: ModernRouterCreatedEvent) => void) => void;
19
+ onRouterStateChange?: (handler: (event: ModernRouterStateChangeEvent) => void) => void;
20
+ onRouteLoader?: (handler: (event: ModernRouteLoaderEvent) => void) => void;
21
+ onRouteComponent?: (handler: (event: ModernRouteComponentEvent) => void) => void;
22
+ extendStreamSSR?: (handler: () => ModernStreamSsrExtender) => void;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC;IACtC,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI,CAAC;IACtE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,KAAK,IAAI,CAAC;IAC/E,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI,KAAK,IAAI,CAAC;IACvF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,KAAK,IAAI,CAAC;IAC3E,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,KAAK,IAAI,CAAC;IACjF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,uBAAuB,KAAK,IAAI,CAAC;CACpE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugin/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export declare const openRuntimeContextScriptId = "__OPEN_RUNTIME_CONTEXT__";
2
+ export interface OpenRuntimeRenderContext {
3
+ runtimeId: string;
4
+ renderId: string;
5
+ source: string;
6
+ }
7
+ export declare function createOpenRuntimeRenderContext(source: string): OpenRuntimeRenderContext;
8
+ export declare function injectOpenRuntimeRenderContext(html: string, context: OpenRuntimeRenderContext): string;
9
+ export declare function createOpenRuntimeRenderContextScript(context: OpenRuntimeRenderContext): string;
10
+ export declare function readOpenRuntimeRenderContext(): OpenRuntimeRenderContext | undefined;
11
+ //# sourceMappingURL=render-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../../src/runtime/render-context.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,6BAA6B,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAMvF;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAOR;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAE9F;AAED,wBAAgB,4BAA4B,IAAI,wBAAwB,GAAG,SAAS,CAwBnF"}