@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,51 @@
1
+ export const openRuntimeContextScriptId = "__OPEN_RUNTIME_CONTEXT__";
2
+ export function createOpenRuntimeRenderContext(source) {
3
+ return {
4
+ runtimeId: createId("runtime"),
5
+ renderId: createId("render"),
6
+ source
7
+ };
8
+ }
9
+ export function injectOpenRuntimeRenderContext(html, context) {
10
+ const script = createOpenRuntimeRenderContextScript(context);
11
+ if (html.includes("</head>")) {
12
+ return html.replace("</head>", `${script}</head>`);
13
+ }
14
+ return `${script}${html}`;
15
+ }
16
+ export function createOpenRuntimeRenderContextScript(context) {
17
+ return `<script id="${openRuntimeContextScriptId}" type="application/json">${escapeJsonForHtml(context)}</script>`;
18
+ }
19
+ export function readOpenRuntimeRenderContext() {
20
+ const element = globalThis.document?.getElementById(openRuntimeContextScriptId);
21
+ if (element?.textContent === undefined || element.textContent.length === 0) {
22
+ return undefined;
23
+ }
24
+ try {
25
+ const value = JSON.parse(element.textContent);
26
+ if (typeof value.runtimeId !== "string" ||
27
+ typeof value.renderId !== "string" ||
28
+ typeof value.source !== "string") {
29
+ return undefined;
30
+ }
31
+ return {
32
+ runtimeId: value.runtimeId,
33
+ renderId: value.renderId,
34
+ source: value.source
35
+ };
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ }
41
+ function createId(prefix) {
42
+ const uuid = globalThis.crypto?.randomUUID?.();
43
+ if (uuid !== undefined) {
44
+ return `${prefix}-${uuid}`;
45
+ }
46
+ return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
47
+ }
48
+ function escapeJsonForHtml(value) {
49
+ return JSON.stringify(value).replaceAll("<", "\\u003c");
50
+ }
51
+ //# sourceMappingURL=render-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-context.js","sourceRoot":"","sources":["../../src/runtime/render-context.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG,0BAA0B,CAAC;AAQrE,MAAM,UAAU,8BAA8B,CAAC,MAAc;IAC3D,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC9B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,OAAiC;IAEjC,MAAM,MAAM,GAAG,oCAAoC,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,OAAiC;IACpF,OAAO,eAAe,0BAA0B,6BAA6B,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC;AACrH,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC;IAChF,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAsC,CAAC;QACnF,IACE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YACnC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAClC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAChC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type BridgeConnectOptions, type OpenRuntimeCore, type OpenRuntimeWindowHost } from "@openruntime/core";
2
+ export interface ResolveRuntimeOptions {
3
+ runtime?: OpenRuntimeCore;
4
+ bridge?: false | BridgeConnectOptions;
5
+ host?: OpenRuntimeWindowHost;
6
+ beforeConnect?: (runtime: OpenRuntimeCore) => void;
7
+ }
8
+ export declare function resolveOpenRuntime(options?: ResolveRuntimeOptions): OpenRuntimeCore;
9
+ //# sourceMappingURL=resolve-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/resolve-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC;IACtC,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACpD;AAID,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,qBAA0B,GAAG,eAAe,CAavF"}
@@ -0,0 +1,31 @@
1
+ import { createOpenRuntime, getOpenRuntimeFromWindow, installOpenRuntimeOnWindow } from "@openruntime/core";
2
+ import { readOpenRuntimeRenderContext } from "./render-context.js";
3
+ const connectedRuntimes = new WeakSet();
4
+ export function resolveOpenRuntime(options = {}) {
5
+ const host = options.host ?? getDefaultHost();
6
+ const runtime = options.runtime ?? getOpenRuntimeFromWindow(host) ?? installOpenRuntimeOnWindow(createOpenRuntime(), host);
7
+ options.beforeConnect?.(runtime);
8
+ if (host !== undefined && options.bridge !== undefined && options.bridge !== false && !connectedRuntimes.has(runtime)) {
9
+ runtime.connectBridge(withRenderContext(options.bridge));
10
+ connectedRuntimes.add(runtime);
11
+ }
12
+ return runtime;
13
+ }
14
+ function withRenderContext(options) {
15
+ const context = readOpenRuntimeRenderContext();
16
+ if (context === undefined) {
17
+ return options;
18
+ }
19
+ return {
20
+ ...options,
21
+ runtimeId: options.runtimeId ?? context.runtimeId,
22
+ renderId: options.renderId ?? context.renderId
23
+ };
24
+ }
25
+ function getDefaultHost() {
26
+ if (typeof window === "undefined") {
27
+ return undefined;
28
+ }
29
+ return window;
30
+ }
31
+ //# sourceMappingURL=resolve-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-runtime.js","sourceRoot":"","sources":["../../src/runtime/resolve-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAI3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AASnE,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAmB,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAAC,UAAiC,EAAE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;IAC9C,MAAM,OAAO,GACX,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;IAE7G,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACtH,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA6B;IACtD,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;QACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { OpenRuntimeCore, RuntimeStatus } from "@openruntime/core";
2
+ import type { ModernRouteObject } from "../modern/events.js";
3
+ export declare const modernTargetTypes: {
4
+ readonly app: "modern.app";
5
+ readonly ssr: "modern.ssr";
6
+ readonly hydration: "modern.hydration";
7
+ readonly route: "modern.route";
8
+ };
9
+ export declare const modernTargetIds: {
10
+ readonly app: "modern:app";
11
+ readonly ssr: "modern:ssr";
12
+ readonly hydration: "modern:hydration";
13
+ readonly route: "modern:route";
14
+ };
15
+ export interface RouteTargetInfo {
16
+ routeId: string;
17
+ route: ModernRouteObject;
18
+ modernRouteId?: string;
19
+ parentRouteId?: string;
20
+ pathname?: string;
21
+ }
22
+ export interface RouteManifestEntry {
23
+ routeId: string;
24
+ hasLoader: boolean;
25
+ hasRouteComponent: boolean;
26
+ hasLazyModule: boolean;
27
+ path?: string;
28
+ pathname?: string;
29
+ modernRouteId?: string;
30
+ index?: boolean;
31
+ parentRouteId?: string;
32
+ }
33
+ export declare function registerBaseTargets(runtime: OpenRuntimeCore, source: string): void;
34
+ export declare function registerHydrationTarget(runtime: OpenRuntimeCore, source: string): void;
35
+ export declare function registerSsrTarget(runtime: OpenRuntimeCore, source: string): void;
36
+ export declare function registerRouteTargetInfos(runtime: OpenRuntimeCore, source: string, routeInfos: RouteTargetInfo[]): void;
37
+ export declare function updateTargetStatus(runtime: OpenRuntimeCore, source: string, targetId: string, status: RuntimeStatus, options?: {
38
+ data?: unknown;
39
+ error?: {
40
+ message: string;
41
+ code?: string;
42
+ stack?: string;
43
+ data?: unknown;
44
+ };
45
+ dependsOn?: string[];
46
+ }): void;
47
+ export declare function flattenRoutes(routes: ModernRouteObject[]): RouteTargetInfo[];
48
+ export declare function getRouteManifestEntry(info: RouteTargetInfo): RouteManifestEntry;
49
+ export declare function hasRouteComponent(route: ModernRouteObject | undefined): boolean;
50
+ export declare function hasRouteLoader(route: ModernRouteObject | undefined): boolean;
51
+ //# sourceMappingURL=targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/runtime/targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAOX,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CASlF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAStF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAShF;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,eAAe,EAAE,GAC5B,IAAI,CAYN;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GACL,IAAI,CASN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAU5E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CAyB/E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAU5E"}
@@ -0,0 +1,176 @@
1
+ export const modernTargetTypes = {
2
+ app: "modern.app",
3
+ ssr: "modern.ssr",
4
+ hydration: "modern.hydration",
5
+ route: "modern.route"
6
+ };
7
+ const appStatuses = ["initializing", "rendering", "ready", "error"];
8
+ const ssrStatuses = ["unknown", "rendering", "server-rendered", "fallback", "invalidated", "error"];
9
+ const hydrationStatuses = ["running", "success", "fallback", "error"];
10
+ const routeStatuses = ["idle", "loading", "ready", "error"];
11
+ export const modernTargetIds = {
12
+ app: "modern:app",
13
+ ssr: "modern:ssr",
14
+ hydration: "modern:hydration",
15
+ route: "modern:route"
16
+ };
17
+ export function registerBaseTargets(runtime, source) {
18
+ runtime.registerTarget({
19
+ id: modernTargetIds.app,
20
+ type: modernTargetTypes.app,
21
+ source,
22
+ label: "Modern.js app",
23
+ description: "Overall Modern.js runtime state for this page.",
24
+ statuses: [...appStatuses]
25
+ });
26
+ }
27
+ export function registerHydrationTarget(runtime, source) {
28
+ runtime.registerTarget({
29
+ id: modernTargetIds.hydration,
30
+ type: modernTargetTypes.hydration,
31
+ source,
32
+ label: "Modern.js hydration",
33
+ description: "Client hydration lifecycle for this page.",
34
+ statuses: [...hydrationStatuses]
35
+ });
36
+ }
37
+ export function registerSsrTarget(runtime, source) {
38
+ runtime.registerTarget({
39
+ id: modernTargetIds.ssr,
40
+ type: modernTargetTypes.ssr,
41
+ source,
42
+ label: "Modern.js SSR",
43
+ description: "Server-rendered payload state. Registered only when SSR data exists.",
44
+ statuses: [...ssrStatuses]
45
+ });
46
+ }
47
+ export function registerRouteTargetInfos(runtime, source, routeInfos) {
48
+ runtime.registerTarget({
49
+ id: modernTargetIds.route,
50
+ type: modernTargetTypes.route,
51
+ source,
52
+ label: "Modern.js route",
53
+ description: "Current Modern.js route state and route manifest.",
54
+ statuses: [...routeStatuses],
55
+ data: {
56
+ routes: routeInfos.map(getRouteManifestEntry)
57
+ }
58
+ });
59
+ }
60
+ export function updateTargetStatus(runtime, source, targetId, status, options = {}) {
61
+ runtime.updateSnapshot({
62
+ id: targetId,
63
+ status,
64
+ source,
65
+ ...(options.data !== undefined ? { data: options.data } : {}),
66
+ ...(options.error !== undefined ? { error: options.error } : {}),
67
+ ...(options.dependsOn !== undefined ? { dependsOn: options.dependsOn } : {})
68
+ });
69
+ }
70
+ export function flattenRoutes(routes) {
71
+ const result = [];
72
+ routes.forEach((route, index) => {
73
+ collectRouteTargets(route, result, {
74
+ fallbackId: String(index)
75
+ });
76
+ });
77
+ return result;
78
+ }
79
+ export function getRouteManifestEntry(info) {
80
+ const data = {
81
+ routeId: info.routeId,
82
+ hasLoader: hasRouteLoader(info.route),
83
+ hasRouteComponent: hasRouteComponent(info.route),
84
+ hasLazyModule: info.route.lazy !== undefined
85
+ };
86
+ if (info.route.path !== undefined) {
87
+ data.path = info.route.path;
88
+ }
89
+ if (info.pathname !== undefined) {
90
+ data.pathname = info.pathname;
91
+ }
92
+ if (info.modernRouteId !== undefined) {
93
+ data.modernRouteId = info.modernRouteId;
94
+ }
95
+ if (info.route.index !== undefined) {
96
+ data.index = info.route.index;
97
+ }
98
+ if (info.parentRouteId !== undefined) {
99
+ data.parentRouteId = info.parentRouteId;
100
+ }
101
+ return data;
102
+ }
103
+ export function hasRouteComponent(route) {
104
+ return route?.Component !== undefined || route?.component !== undefined || route?.element !== undefined || route?.lazy !== undefined;
105
+ }
106
+ export function hasRouteLoader(route) {
107
+ if (route?.hasLoader === true) {
108
+ return true;
109
+ }
110
+ if (typeof route?.loader !== "function") {
111
+ return false;
112
+ }
113
+ return route.loader.length > 0;
114
+ }
115
+ function collectRouteTargets(route, result, context) {
116
+ const pathname = getRoutePathname(route, context.parentPathname);
117
+ const routeId = normalizeRouteId(route, context.fallbackId, pathname);
118
+ const modernRouteId = normalizeModernRouteId(route);
119
+ const parentRouteId = context.parentRouteId === routeId ? undefined : context.parentRouteId;
120
+ const info = {
121
+ routeId,
122
+ route,
123
+ ...(modernRouteId !== undefined ? { modernRouteId } : {}),
124
+ ...(parentRouteId !== undefined ? { parentRouteId } : {}),
125
+ ...(pathname !== undefined ? { pathname } : {})
126
+ };
127
+ result.push(info);
128
+ route.children?.forEach((child, index) => {
129
+ collectRouteTargets(child, result, {
130
+ fallbackId: `${routeId}.${index}`,
131
+ parentRouteId: routeId,
132
+ ...((pathname ?? context.parentPathname) === undefined
133
+ ? {}
134
+ : { parentPathname: pathname ?? context.parentPathname })
135
+ });
136
+ });
137
+ }
138
+ function normalizeRouteId(route, fallbackId, pathname) {
139
+ if (pathname !== undefined)
140
+ return pathname;
141
+ if (route.index === true) {
142
+ return `index:${fallbackId}`;
143
+ }
144
+ if (typeof route.id === "string" && route.id.trim() !== "") {
145
+ return route.id;
146
+ }
147
+ return `unnamed:${fallbackId}`;
148
+ }
149
+ function normalizeModernRouteId(route) {
150
+ return typeof route.id === "string" && route.id.trim() !== "" ? route.id : undefined;
151
+ }
152
+ function getRoutePathname(route, parentPathname) {
153
+ if (route.index === true) {
154
+ return parentPathname;
155
+ }
156
+ if (typeof route.path !== "string" || route.path.trim() === "") {
157
+ return undefined;
158
+ }
159
+ return joinRoutePath(parentPathname, route.path.trim());
160
+ }
161
+ function joinRoutePath(parentPathname, path) {
162
+ if (path.startsWith("/"))
163
+ return normalizePathname(path);
164
+ if (parentPathname === undefined || parentPathname === "")
165
+ return normalizePathname(path);
166
+ if (parentPathname === "/")
167
+ return normalizePathname(`/${path}`);
168
+ return normalizePathname(`${parentPathname}/${path}`);
169
+ }
170
+ function normalizePathname(pathname) {
171
+ const normalized = pathname.replace(/\/+/g, "/");
172
+ if (normalized === "")
173
+ return "/";
174
+ return normalized.startsWith("/") ? normalized : `/${normalized}`;
175
+ }
176
+ //# sourceMappingURL=targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/runtime/targets.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@openruntime/modern-plugin",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/2heal1/openruntime.git",
8
+ "directory": "packages/modern-plugin"
9
+ },
10
+ "author": "2heal1",
11
+ "main": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist/**/*.d.ts",
21
+ "dist/**/*.d.ts.map",
22
+ "dist/**/*.js",
23
+ "dist/**/*.js.map"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "dependencies": {
29
+ "@openruntime/core": "^0.1.0"
30
+ },
31
+ "peerDependencies": {
32
+ "@modern-js/runtime": ">=3.2.2"
33
+ },
34
+ "devDependencies": {
35
+ "@rstest/core": "0.10.3"
36
+ },
37
+ "scripts": {
38
+ "build": "tsc -b --pretty false",
39
+ "test": "pnpm run build && tsc -p tsconfig.test.json --pretty false && rstest run"
40
+ }
41
+ }