everything-dev 0.3.3 → 1.3.3

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 (313) hide show
  1. package/README.md +64 -0
  2. package/cli.js +10 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  4. package/dist/api-contract.cjs +172 -0
  5. package/dist/api-contract.cjs.map +1 -0
  6. package/dist/api-contract.mjs +171 -0
  7. package/dist/api-contract.mjs.map +1 -0
  8. package/dist/api.cjs +124 -0
  9. package/dist/api.cjs.map +1 -0
  10. package/dist/api.d.cts +36 -0
  11. package/dist/api.d.cts.map +1 -0
  12. package/dist/api.d.mts +36 -0
  13. package/dist/api.d.mts.map +1 -0
  14. package/dist/api.mjs +119 -0
  15. package/dist/api.mjs.map +1 -0
  16. package/dist/app.cjs +156 -0
  17. package/dist/app.cjs.map +1 -0
  18. package/dist/app.mjs +153 -0
  19. package/dist/app.mjs.map +1 -0
  20. package/dist/cli/catalog.cjs +30 -0
  21. package/dist/cli/catalog.cjs.map +1 -0
  22. package/dist/cli/catalog.mjs +29 -0
  23. package/dist/cli/catalog.mjs.map +1 -0
  24. package/dist/cli/help.cjs +16 -0
  25. package/dist/cli/help.cjs.map +1 -0
  26. package/dist/cli/help.mjs +16 -0
  27. package/dist/cli/help.mjs.map +1 -0
  28. package/dist/cli/init.cjs +287 -0
  29. package/dist/cli/init.cjs.map +1 -0
  30. package/dist/cli/init.d.cts +36 -0
  31. package/dist/cli/init.d.cts.map +1 -0
  32. package/dist/cli/init.d.mts +36 -0
  33. package/dist/cli/init.d.mts.map +1 -0
  34. package/dist/cli/init.mjs +279 -0
  35. package/dist/cli/init.mjs.map +1 -0
  36. package/dist/cli/parse.cjs +96 -0
  37. package/dist/cli/parse.cjs.map +1 -0
  38. package/dist/cli/parse.mjs +95 -0
  39. package/dist/cli/parse.mjs.map +1 -0
  40. package/dist/cli/prompts.cjs +42 -0
  41. package/dist/cli/prompts.cjs.map +1 -0
  42. package/dist/cli/prompts.mjs +41 -0
  43. package/dist/cli/prompts.mjs.map +1 -0
  44. package/dist/cli.cjs +167 -0
  45. package/dist/cli.cjs.map +1 -0
  46. package/dist/cli.d.cts +1 -0
  47. package/dist/cli.d.mts +1 -0
  48. package/dist/cli.mjs +166 -0
  49. package/dist/cli.mjs.map +1 -0
  50. package/dist/components/dev-view.cjs +307 -0
  51. package/dist/components/dev-view.cjs.map +1 -0
  52. package/dist/components/dev-view.mjs +306 -0
  53. package/dist/components/dev-view.mjs.map +1 -0
  54. package/dist/components/streaming-view.cjs +146 -0
  55. package/dist/components/streaming-view.cjs.map +1 -0
  56. package/dist/components/streaming-view.mjs +144 -0
  57. package/dist/components/streaming-view.mjs.map +1 -0
  58. package/dist/config.cjs +280 -0
  59. package/dist/config.cjs.map +1 -0
  60. package/dist/config.d.cts +35 -0
  61. package/dist/config.d.cts.map +1 -0
  62. package/dist/config.d.mts +35 -0
  63. package/dist/config.d.mts.map +1 -0
  64. package/dist/config.mjs +266 -0
  65. package/dist/config.mjs.map +1 -0
  66. package/dist/contract.cjs +209 -0
  67. package/dist/contract.cjs.map +1 -0
  68. package/dist/contract.d.cts +490 -0
  69. package/dist/contract.d.cts.map +1 -0
  70. package/dist/contract.d.mts +490 -0
  71. package/dist/contract.d.mts.map +1 -0
  72. package/dist/contract.meta.cjs +104 -0
  73. package/dist/contract.meta.cjs.map +1 -0
  74. package/dist/contract.meta.d.cts +141 -0
  75. package/dist/contract.meta.d.cts.map +1 -0
  76. package/dist/contract.meta.d.mts +141 -0
  77. package/dist/contract.meta.d.mts.map +1 -0
  78. package/dist/contract.meta.mjs +102 -0
  79. package/dist/contract.meta.mjs.map +1 -0
  80. package/dist/contract.mjs +186 -0
  81. package/dist/contract.mjs.map +1 -0
  82. package/dist/dev-logs.cjs +53 -0
  83. package/dist/dev-logs.cjs.map +1 -0
  84. package/dist/dev-logs.mjs +51 -0
  85. package/dist/dev-logs.mjs.map +1 -0
  86. package/dist/dev-session.cjs +195 -0
  87. package/dist/dev-session.cjs.map +1 -0
  88. package/dist/dev-session.mjs +194 -0
  89. package/dist/dev-session.mjs.map +1 -0
  90. package/dist/fastkv.cjs +89 -0
  91. package/dist/fastkv.cjs.map +1 -0
  92. package/dist/fastkv.d.cts +11 -0
  93. package/dist/fastkv.d.cts.map +1 -0
  94. package/dist/fastkv.d.mts +11 -0
  95. package/dist/fastkv.d.mts.map +1 -0
  96. package/dist/fastkv.mjs +82 -0
  97. package/dist/fastkv.mjs.map +1 -0
  98. package/dist/federation.server.cjs +27 -0
  99. package/dist/federation.server.cjs.map +1 -0
  100. package/dist/federation.server.mjs +27 -0
  101. package/dist/federation.server.mjs.map +1 -0
  102. package/dist/host.cjs +367 -0
  103. package/dist/host.cjs.map +1 -0
  104. package/dist/host.d.cts +22 -0
  105. package/dist/host.d.cts.map +1 -0
  106. package/dist/host.d.mts +22 -0
  107. package/dist/host.d.mts.map +1 -0
  108. package/dist/host.mjs +364 -0
  109. package/dist/host.mjs.map +1 -0
  110. package/dist/index.cjs +122 -0
  111. package/dist/index.d.cts +7 -0
  112. package/dist/index.d.mts +7 -0
  113. package/dist/index.mjs +9 -0
  114. package/dist/integrity.cjs +39 -0
  115. package/dist/integrity.cjs.map +1 -0
  116. package/dist/integrity.d.cts +7 -0
  117. package/dist/integrity.d.cts.map +1 -0
  118. package/dist/integrity.d.mts +7 -0
  119. package/dist/integrity.d.mts.map +1 -0
  120. package/dist/integrity.mjs +35 -0
  121. package/dist/integrity.mjs.map +1 -0
  122. package/dist/internal/manifest-normalizer.cjs +140 -0
  123. package/dist/internal/manifest-normalizer.cjs.map +1 -0
  124. package/dist/internal/manifest-normalizer.mjs +138 -0
  125. package/dist/internal/manifest-normalizer.mjs.map +1 -0
  126. package/dist/mf.cjs +77 -0
  127. package/dist/mf.cjs.map +1 -0
  128. package/dist/mf.d.cts +19 -0
  129. package/dist/mf.d.cts.map +1 -0
  130. package/dist/mf.d.mts +19 -0
  131. package/dist/mf.d.mts.map +1 -0
  132. package/dist/mf.mjs +71 -0
  133. package/dist/mf.mjs.map +1 -0
  134. package/dist/near-cli.cjs +196 -0
  135. package/dist/near-cli.cjs.map +1 -0
  136. package/dist/near-cli.mjs +193 -0
  137. package/dist/near-cli.mjs.map +1 -0
  138. package/dist/network.cjs +9 -0
  139. package/dist/network.cjs.map +1 -0
  140. package/dist/network.mjs +8 -0
  141. package/dist/network.mjs.map +1 -0
  142. package/dist/orchestrator.cjs +441 -0
  143. package/dist/orchestrator.cjs.map +1 -0
  144. package/dist/orchestrator.d.cts +40 -0
  145. package/dist/orchestrator.d.cts.map +1 -0
  146. package/dist/orchestrator.d.mts +40 -0
  147. package/dist/orchestrator.d.mts.map +1 -0
  148. package/dist/orchestrator.mjs +436 -0
  149. package/dist/orchestrator.mjs.map +1 -0
  150. package/dist/plugin.cjs +830 -0
  151. package/dist/plugin.cjs.map +1 -0
  152. package/dist/plugin.d.cts +347 -0
  153. package/dist/plugin.d.cts.map +1 -0
  154. package/dist/plugin.d.mts +348 -0
  155. package/dist/plugin.d.mts.map +1 -0
  156. package/dist/plugin.mjs +827 -0
  157. package/dist/plugin.mjs.map +1 -0
  158. package/dist/process-registry.cjs +120 -0
  159. package/dist/process-registry.cjs.map +1 -0
  160. package/dist/process-registry.d.cts +25 -0
  161. package/dist/process-registry.d.cts.map +1 -0
  162. package/dist/process-registry.d.mts +25 -0
  163. package/dist/process-registry.d.mts.map +1 -0
  164. package/dist/process-registry.mjs +119 -0
  165. package/dist/process-registry.mjs.map +1 -0
  166. package/dist/sdk.cjs +61 -0
  167. package/dist/sdk.d.cts +5 -0
  168. package/dist/sdk.d.mts +5 -0
  169. package/dist/sdk.mjs +6 -0
  170. package/dist/shared.cjs +143 -0
  171. package/dist/shared.cjs.map +1 -0
  172. package/dist/shared.d.cts +33 -0
  173. package/dist/shared.d.cts.map +1 -0
  174. package/dist/shared.d.mts +33 -0
  175. package/dist/shared.d.mts.map +1 -0
  176. package/dist/shared.mjs +140 -0
  177. package/dist/shared.mjs.map +1 -0
  178. package/dist/types.cjs +160 -0
  179. package/dist/types.cjs.map +1 -0
  180. package/dist/types.d.cts +269 -0
  181. package/dist/types.d.cts.map +1 -0
  182. package/dist/types.d.mts +269 -0
  183. package/dist/types.d.mts.map +1 -0
  184. package/dist/types.mjs +144 -0
  185. package/dist/types.mjs.map +1 -0
  186. package/dist/ui/head.cjs +67 -0
  187. package/dist/ui/head.cjs.map +1 -0
  188. package/dist/ui/head.d.cts +19 -0
  189. package/dist/ui/head.d.cts.map +1 -0
  190. package/dist/ui/head.d.mts +19 -0
  191. package/dist/ui/head.d.mts.map +1 -0
  192. package/dist/ui/head.mjs +61 -0
  193. package/dist/ui/head.mjs.map +1 -0
  194. package/dist/ui/index.cjs +32 -0
  195. package/dist/ui/index.d.cts +7 -0
  196. package/dist/ui/index.d.mts +7 -0
  197. package/dist/ui/index.mjs +6 -0
  198. package/dist/ui/metadata.cjs +106 -0
  199. package/dist/ui/metadata.cjs.map +1 -0
  200. package/dist/ui/metadata.d.cts +35 -0
  201. package/dist/ui/metadata.d.cts.map +1 -0
  202. package/dist/ui/metadata.d.mts +35 -0
  203. package/dist/ui/metadata.d.mts.map +1 -0
  204. package/dist/ui/metadata.mjs +100 -0
  205. package/dist/ui/metadata.mjs.map +1 -0
  206. package/dist/ui/router.cjs +56 -0
  207. package/dist/ui/router.cjs.map +1 -0
  208. package/dist/ui/router.d.cts +11 -0
  209. package/dist/ui/router.d.cts.map +1 -0
  210. package/dist/ui/router.d.mts +11 -0
  211. package/dist/ui/router.d.mts.map +1 -0
  212. package/dist/ui/router.mjs +51 -0
  213. package/dist/ui/router.mjs.map +1 -0
  214. package/dist/ui/runtime.cjs +65 -0
  215. package/dist/ui/runtime.cjs.map +1 -0
  216. package/dist/ui/runtime.d.cts +29 -0
  217. package/dist/ui/runtime.d.cts.map +1 -0
  218. package/dist/ui/runtime.d.mts +29 -0
  219. package/dist/ui/runtime.d.mts.map +1 -0
  220. package/dist/ui/runtime.mjs +53 -0
  221. package/dist/ui/runtime.mjs.map +1 -0
  222. package/dist/ui/types.cjs +0 -0
  223. package/dist/ui/types.d.cts +52 -0
  224. package/dist/ui/types.d.cts.map +1 -0
  225. package/dist/ui/types.d.mts +52 -0
  226. package/dist/ui/types.d.mts.map +1 -0
  227. package/dist/ui/types.mjs +1 -0
  228. package/dist/utils/banner.cjs +24 -0
  229. package/dist/utils/banner.cjs.map +1 -0
  230. package/dist/utils/banner.mjs +23 -0
  231. package/dist/utils/banner.mjs.map +1 -0
  232. package/dist/utils/linkify.cjs +15 -0
  233. package/dist/utils/linkify.cjs.map +1 -0
  234. package/dist/utils/linkify.mjs +14 -0
  235. package/dist/utils/linkify.mjs.map +1 -0
  236. package/dist/utils/run.cjs +40 -0
  237. package/dist/utils/run.cjs.map +1 -0
  238. package/dist/utils/run.mjs +39 -0
  239. package/dist/utils/run.mjs.map +1 -0
  240. package/dist/utils/theme.cjs +44 -0
  241. package/dist/utils/theme.cjs.map +1 -0
  242. package/dist/utils/theme.mjs +37 -0
  243. package/dist/utils/theme.mjs.map +1 -0
  244. package/package.json +269 -80
  245. package/src/api-contract.ts +309 -0
  246. package/src/api.ts +181 -0
  247. package/src/app.ts +346 -0
  248. package/src/cli/catalog.ts +49 -0
  249. package/src/cli/help.ts +13 -0
  250. package/src/cli/init.ts +386 -0
  251. package/src/cli/parse.ts +130 -0
  252. package/src/cli/prompts.ts +64 -0
  253. package/src/cli.ts +203 -1507
  254. package/src/components/dev-view.tsx +307 -255
  255. package/src/components/streaming-view.ts +164 -128
  256. package/src/config.ts +462 -532
  257. package/src/contract.meta.ts +96 -0
  258. package/src/contract.ts +164 -561
  259. package/src/dev-logs.ts +85 -0
  260. package/src/dev-session.ts +318 -0
  261. package/src/fastkv.ts +153 -0
  262. package/src/federation.server.ts +43 -0
  263. package/src/host.ts +526 -0
  264. package/src/index.ts +6 -3
  265. package/src/integrity.ts +54 -0
  266. package/src/internal/manifest-normalizer.ts +251 -0
  267. package/src/mf.ts +105 -0
  268. package/src/near-cli.ts +284 -0
  269. package/src/network.ts +3 -0
  270. package/src/orchestrator.ts +648 -0
  271. package/src/plugin.ts +1130 -2311
  272. package/src/process-registry.ts +154 -0
  273. package/src/scripts/sync-api-contract.ts +24 -0
  274. package/src/sdk.ts +14 -0
  275. package/src/shared.ts +206 -0
  276. package/src/types.ts +152 -206
  277. package/src/ui/head.ts +34 -27
  278. package/src/ui/index.ts +3 -3
  279. package/src/ui/metadata.ts +95 -0
  280. package/src/ui/router.ts +22 -6
  281. package/src/ui/runtime.ts +55 -6
  282. package/src/ui/types.ts +24 -11
  283. package/src/utils/banner.ts +10 -6
  284. package/src/utils/run.ts +26 -27
  285. package/src/utils/theme.ts +3 -66
  286. package/src/components/monitor-view.tsx +0 -475
  287. package/src/components/status-view.tsx +0 -173
  288. package/src/lib/env.ts +0 -109
  289. package/src/lib/near-cli.ts +0 -289
  290. package/src/lib/nova.ts +0 -266
  291. package/src/lib/orchestrator.ts +0 -276
  292. package/src/lib/process-registry.ts +0 -166
  293. package/src/lib/process.ts +0 -550
  294. package/src/lib/resource-monitor/assertions.ts +0 -234
  295. package/src/lib/resource-monitor/command.ts +0 -283
  296. package/src/lib/resource-monitor/diff.ts +0 -157
  297. package/src/lib/resource-monitor/errors.ts +0 -127
  298. package/src/lib/resource-monitor/index.ts +0 -305
  299. package/src/lib/resource-monitor/platform/darwin.ts +0 -306
  300. package/src/lib/resource-monitor/platform/index.ts +0 -35
  301. package/src/lib/resource-monitor/platform/linux.ts +0 -332
  302. package/src/lib/resource-monitor/platform/windows.ts +0 -298
  303. package/src/lib/resource-monitor/snapshot.ts +0 -217
  304. package/src/lib/resource-monitor/types.ts +0 -74
  305. package/src/lib/session-recorder/errors.ts +0 -102
  306. package/src/lib/session-recorder/flows/login.ts +0 -210
  307. package/src/lib/session-recorder/index.ts +0 -361
  308. package/src/lib/session-recorder/playwright.ts +0 -257
  309. package/src/lib/session-recorder/report.ts +0 -353
  310. package/src/lib/session-recorder/server.ts +0 -268
  311. package/src/lib/session-recorder/types.ts +0 -115
  312. package/src/lib/sync.ts +0 -1
  313. package/src/ui/files.ts +0 -134
package/dist/host.mjs ADDED
@@ -0,0 +1,364 @@
1
+ import { createStitchedRouter, loadApiPluginsFromRuntimeConfig } from "./api.mjs";
2
+ import { loadRouterModule } from "./federation.server.mjs";
3
+ import { serve } from "@hono/node-server";
4
+ import { OpenAPIHandler } from "@orpc/openapi/fetch";
5
+ import { OpenAPIReferencePlugin } from "@orpc/openapi/plugins";
6
+ import { RPCHandler } from "@orpc/server/fetch";
7
+ import { BatchHandlerPlugin } from "@orpc/server/plugins";
8
+ import { ZodToJsonSchemaConverter } from "@orpc/zod/zod4";
9
+ import { Hono } from "hono";
10
+ import { cors } from "hono/cors";
11
+ import { secureHeaders } from "hono/secure-headers";
12
+
13
+ //#region src/host.ts
14
+ function buildClientRuntimeConfig(runtimeConfig) {
15
+ return {
16
+ env: runtimeConfig.env,
17
+ account: runtimeConfig.account,
18
+ networkId: runtimeConfig.networkId,
19
+ hostUrl: runtimeConfig.hostUrl,
20
+ assetsUrl: runtimeConfig.ui.url,
21
+ apiBase: "/api",
22
+ rpcBase: "/api/rpc",
23
+ ui: runtimeConfig.ui ? {
24
+ name: runtimeConfig.ui.name,
25
+ url: runtimeConfig.ui.url,
26
+ entry: runtimeConfig.ui.entry,
27
+ integrity: runtimeConfig.ui.integrity
28
+ } : void 0,
29
+ api: runtimeConfig.api ? {
30
+ name: runtimeConfig.api.name,
31
+ url: runtimeConfig.api.url,
32
+ entry: runtimeConfig.api.entry,
33
+ integrity: runtimeConfig.api.integrity
34
+ } : void 0,
35
+ plugins: runtimeConfig.plugins ? Object.fromEntries(Object.entries(runtimeConfig.plugins).map(([key, plugin]) => [key, {
36
+ name: plugin.name,
37
+ url: plugin.url,
38
+ entry: plugin.entry,
39
+ integrity: plugin.integrity
40
+ }])) : void 0
41
+ };
42
+ }
43
+ function renderLoadingShell(runtimeConfig, error) {
44
+ const bootstrap = `window.__RUNTIME_CONFIG__ = ${JSON.stringify(runtimeConfig)};window.addEventListener('load', function handleEverythingDevHydrate() { window.__hydrate?.(); }, { once: true });`;
45
+ const errorMarkup = error ? `<p style="color: #fca5a5;">Error loading UI: ${escapeHtml(error)}</p>` : "<p>Loading UI...</p>";
46
+ const uiIntegrity = runtimeConfig.ui?.integrity;
47
+ const sriAttr = uiIntegrity ? ` integrity="${uiIntegrity}" crossorigin="anonymous"` : "";
48
+ return `
49
+ <!DOCTYPE html>
50
+ <html lang="en">
51
+ <head>
52
+ <meta charset="utf-8" />
53
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
54
+ <title>Loading...</title>
55
+ <style>
56
+ body { background: #171717; color: #fafafa; display: flex; align-items: center; justify-content: center; height: 100vh; font-family: system-ui; }
57
+ .fade { animation: fadeIn 0.3s ease-in; text-align: center; padding: 2rem; }
58
+ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
59
+ </style>
60
+ ${runtimeConfig.assetsUrl ? `<script src="${runtimeConfig.assetsUrl}/remoteEntry.js"${sriAttr}><\/script>` : ""}
61
+ <script>${bootstrap}<\/script>
62
+ </head>
63
+ <body>
64
+ <div id="root" class="fade">${errorMarkup}</div>
65
+ </body>
66
+ </html>
67
+ `;
68
+ }
69
+ function escapeHtml(value) {
70
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("\"", "&quot;").replaceAll("'", "&#39;");
71
+ }
72
+ function createHostServer(config) {
73
+ const port = config.port ?? 3e3;
74
+ const { runtimeConfig } = config;
75
+ let shutdownImpl = null;
76
+ const ready = (async () => {
77
+ shutdownImpl = (await runHostServer({
78
+ runtimeConfig,
79
+ port
80
+ })).shutdown;
81
+ })();
82
+ const shutdown = async () => {
83
+ console.log("[Host] Shutting down...");
84
+ const timeout = setTimeout(() => {
85
+ console.log("[Host] Force exit");
86
+ process.exit(0);
87
+ }, 5e3);
88
+ await ready.catch(() => {});
89
+ if (shutdownImpl) await shutdownImpl().catch(() => {});
90
+ clearTimeout(timeout);
91
+ console.log("[Host] Shutdown complete");
92
+ };
93
+ return {
94
+ ready,
95
+ shutdown
96
+ };
97
+ }
98
+ async function runHostServer(opts) {
99
+ const { runtimeConfig, port } = opts;
100
+ let apiPlugins = [];
101
+ let baseApiPlugin = null;
102
+ let apiPluginError = null;
103
+ let apiPluginLoading = null;
104
+ let ssrRouterModule = null;
105
+ let ssrRouterError = null;
106
+ let ssrRouterLoading = null;
107
+ let rpcHandler = null;
108
+ let openApiHandler = null;
109
+ const clientRuntimeConfig = buildClientRuntimeConfig(runtimeConfig);
110
+ const initApiHandlers = () => {
111
+ const stitchedRouter = createStitchedRouter(baseApiPlugin?.router ?? {}, apiPlugins.filter((plugin) => plugin.key !== "api"));
112
+ if (!baseApiPlugin) {
113
+ rpcHandler = null;
114
+ openApiHandler = null;
115
+ return;
116
+ }
117
+ rpcHandler = new RPCHandler(stitchedRouter, { plugins: [new BatchHandlerPlugin()] });
118
+ openApiHandler = new OpenAPIHandler(stitchedRouter, { plugins: [new OpenAPIReferencePlugin({ schemaConverters: [new ZodToJsonSchemaConverter()] })] });
119
+ };
120
+ const ensureApiPluginLoaded = async () => {
121
+ if (apiPlugins.length > 0) return {
122
+ base: baseApiPlugin,
123
+ plugins: apiPlugins,
124
+ errors: []
125
+ };
126
+ if (!runtimeConfig.api) return null;
127
+ if (apiPluginLoading) return apiPluginLoading;
128
+ apiPluginLoading = loadApiPluginsFromRuntimeConfig(runtimeConfig, process.env).then((loaded) => {
129
+ if (loaded) {
130
+ apiPlugins = loaded.plugins;
131
+ baseApiPlugin = loaded.base;
132
+ apiPluginError = loaded.errors.length > 0 ? loaded.errors.map((item) => item.error).join("; ") : null;
133
+ initApiHandlers();
134
+ }
135
+ return loaded;
136
+ }).catch((e) => {
137
+ apiPluginError = e instanceof Error ? e.message : String(e);
138
+ return null;
139
+ }).finally(() => {
140
+ apiPluginLoading = null;
141
+ });
142
+ return apiPluginLoading;
143
+ };
144
+ const ensureRouterModuleLoaded = async () => {
145
+ if (ssrRouterModule) return ssrRouterModule;
146
+ if (ssrRouterLoading) return ssrRouterLoading;
147
+ ssrRouterLoading = loadRouterModule(runtimeConfig).then((routerModule) => {
148
+ ssrRouterModule = routerModule;
149
+ ssrRouterError = null;
150
+ return routerModule;
151
+ }).catch((error) => {
152
+ ssrRouterError = error instanceof Error ? error.message : String(error);
153
+ return null;
154
+ }).finally(() => {
155
+ ssrRouterLoading = null;
156
+ });
157
+ return ssrRouterLoading;
158
+ };
159
+ ensureApiPluginLoaded();
160
+ ensureRouterModuleLoaded();
161
+ const app = new Hono();
162
+ const corsOrigins = process.env.CORS_ORIGIN?.split(",").map((o) => o.trim()) ?? [runtimeConfig.hostUrl, ...runtimeConfig.ui?.url ? [runtimeConfig.ui.url] : []];
163
+ if (!process.env.CORS_ORIGIN && runtimeConfig.env === "production") console.warn("[Security] CORS_ORIGIN is not set in production. Using host and UI URLs as allowed origins.");
164
+ app.use("/*", cors({
165
+ origin: corsOrigins,
166
+ credentials: true
167
+ }));
168
+ app.use("*", secureHeaders());
169
+ app.get("/health", (c) => c.text("OK"));
170
+ app.get("/ready", async (c) => {
171
+ const probe = async (url, timeoutMs = 400) => {
172
+ const started = Date.now();
173
+ const controller = new AbortController();
174
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
175
+ try {
176
+ const res = await fetch(url, { signal: controller.signal });
177
+ return {
178
+ name: "",
179
+ url,
180
+ required: true,
181
+ ok: res.ok,
182
+ status: res.status,
183
+ latencyMs: Date.now() - started
184
+ };
185
+ } catch (e) {
186
+ return {
187
+ name: "",
188
+ url,
189
+ required: true,
190
+ ok: false,
191
+ latencyMs: Date.now() - started,
192
+ error: e instanceof Error ? e.message : String(e)
193
+ };
194
+ } finally {
195
+ clearTimeout(timer);
196
+ }
197
+ };
198
+ const checks = [];
199
+ if (runtimeConfig.ui?.url) {
200
+ const base = runtimeConfig.ui.url.replace(/\/$/, "");
201
+ const manifest = await probe(`${base}/mf-manifest.json`);
202
+ manifest.name = "ui";
203
+ manifest.required = false;
204
+ checks.push(manifest);
205
+ if (!manifest.ok) {
206
+ const remoteEntry = await probe(`${base}/remoteEntry.js`);
207
+ remoteEntry.name = "ui";
208
+ remoteEntry.required = true;
209
+ checks.push(remoteEntry);
210
+ } else manifest.required = true;
211
+ }
212
+ if (runtimeConfig.ui?.ssrUrl) {
213
+ const ssr = await probe(`${runtimeConfig.ui.ssrUrl.replace(/\/$/, "")}/`);
214
+ ssr.name = "ui-ssr";
215
+ ssr.required = false;
216
+ checks.push(ssr);
217
+ }
218
+ if (runtimeConfig.api?.url) {
219
+ const api = await probe(`${runtimeConfig.api.url.replace(/\/$/, "")}/`);
220
+ api.name = "api";
221
+ api.required = true;
222
+ checks.push(api);
223
+ }
224
+ if (runtimeConfig.api) {
225
+ checks.push({
226
+ name: "api-plugin",
227
+ url: runtimeConfig.api.entry,
228
+ required: true,
229
+ ok: baseApiPlugin !== null,
230
+ status: baseApiPlugin !== null ? 200 : 503,
231
+ error: baseApiPlugin !== null ? void 0 : apiPluginLoading ? "loading" : apiPluginError ?? "not loaded"
232
+ });
233
+ if (!baseApiPlugin && !apiPluginLoading) ensureApiPluginLoaded();
234
+ }
235
+ for (const [key, plugin] of Object.entries(runtimeConfig.plugins ?? {})) {
236
+ const loaded = apiPlugins.find((item) => item.key === key);
237
+ checks.push({
238
+ name: key,
239
+ url: plugin.entry,
240
+ required: true,
241
+ ok: Boolean(loaded),
242
+ status: loaded ? 200 : 503,
243
+ error: loaded ? void 0 : apiPluginError ?? "not loaded"
244
+ });
245
+ }
246
+ const allRequiredOk = checks.filter((x) => x.required).every((x) => x.ok);
247
+ return c.json({
248
+ status: allRequiredOk ? "ready" : "not_ready",
249
+ host: {
250
+ url: runtimeConfig.hostUrl,
251
+ env: runtimeConfig.env
252
+ },
253
+ checks,
254
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
255
+ }, allRequiredOk ? 200 : 503);
256
+ });
257
+ app.get("/api/_health", (c) => c.json({
258
+ status: "ready",
259
+ mode: runtimeConfig.env,
260
+ ui: runtimeConfig.ui?.url ?? null,
261
+ uiSsr: runtimeConfig.ui?.ssrUrl ?? null,
262
+ ssrRouterLoaded: ssrRouterModule !== null,
263
+ ssrRouterLoading: ssrRouterLoading !== null,
264
+ ssrRouterError,
265
+ api: runtimeConfig.api?.url ?? null,
266
+ apiPluginLoaded: baseApiPlugin !== null,
267
+ apiPluginLoading: apiPluginLoading !== null,
268
+ apiPluginError
269
+ }));
270
+ app.all("/api/rpc/*", async (c) => {
271
+ if (!rpcHandler) await ensureApiPluginLoaded();
272
+ if (!rpcHandler) return c.json({
273
+ error: "API plugin not loaded",
274
+ detail: apiPluginError
275
+ }, 503);
276
+ const result = await rpcHandler.handle(c.req.raw, {
277
+ prefix: "/api/rpc",
278
+ context: {}
279
+ });
280
+ return result.response ? c.newResponse(result.response.body, result.response) : c.text("Not Found", 404);
281
+ });
282
+ app.all("/api/*", async (c) => {
283
+ if (!openApiHandler) await ensureApiPluginLoaded();
284
+ if (!openApiHandler) return c.json({
285
+ error: "API plugin not loaded",
286
+ detail: apiPluginError
287
+ }, 503);
288
+ const result = await openApiHandler.handle(c.req.raw, {
289
+ prefix: "/api",
290
+ context: {}
291
+ });
292
+ return result.response ? c.newResponse(result.response.body, result.response) : c.text("Not Found", 404);
293
+ });
294
+ if (runtimeConfig.ui) {
295
+ app.all("/__mf/ui/*", async (c) => {
296
+ const targetUrl = `${runtimeConfig.ui.url}${c.req.path.replace("/__mf/ui", "")}`;
297
+ return await fetch(targetUrl, {
298
+ method: c.req.method,
299
+ headers: c.req.header()
300
+ });
301
+ });
302
+ if (runtimeConfig.ui.ssrUrl) app.all("/__mf/ui/ssr/*", async (c) => {
303
+ const targetUrl = `${runtimeConfig.ui.ssrUrl}${c.req.path.replace("/__mf/ui/ssr", "")}`;
304
+ return await fetch(targetUrl, {
305
+ method: c.req.method,
306
+ headers: c.req.header()
307
+ });
308
+ });
309
+ }
310
+ app.get("*", async (c) => {
311
+ const routerModule = await ensureRouterModuleLoaded();
312
+ if (!routerModule) return c.html(renderLoadingShell(clientRuntimeConfig, ssrRouterError), 503);
313
+ try {
314
+ const apiClient = baseApiPlugin?.createClient();
315
+ const result = await routerModule.renderToStream(c.req.raw, {
316
+ assetsUrl: runtimeConfig.ui.url,
317
+ runtimeConfig: clientRuntimeConfig,
318
+ apiClient
319
+ });
320
+ return new Response(result.stream, {
321
+ status: result.statusCode,
322
+ headers: result.headers
323
+ });
324
+ } catch (error) {
325
+ const message = error instanceof Error ? error.message : String(error);
326
+ return c.html(renderLoadingShell(clientRuntimeConfig, message), 500);
327
+ }
328
+ });
329
+ const hostname = process.env.HOST ?? "0.0.0.0";
330
+ let resolveReady = null;
331
+ const ready = new Promise((resolve) => {
332
+ resolveReady = resolve;
333
+ });
334
+ const proxiedFetch = (req) => {
335
+ const url = new URL(req.url);
336
+ const forwardedProto = req.headers.get("x-forwarded-proto");
337
+ const forwardedHost = req.headers.get("x-forwarded-host");
338
+ if (forwardedProto) url.protocol = forwardedProto;
339
+ if (forwardedHost) url.host = forwardedHost;
340
+ if (forwardedProto || forwardedHost) req = new Request(url, req);
341
+ return app.fetch(req);
342
+ };
343
+ const server = serve({
344
+ fetch: proxiedFetch,
345
+ port,
346
+ hostname
347
+ }, (info) => {
348
+ console.log(`[Host] Server running at http://${hostname}:${info.port}`);
349
+ console.log(`[Host] API: http://${hostname}:${info.port}/api/rpc`);
350
+ resolveReady?.();
351
+ });
352
+ await ready;
353
+ return { shutdown: () => new Promise((resolve) => {
354
+ try {
355
+ server.close(() => resolve());
356
+ } catch {
357
+ resolve();
358
+ }
359
+ }) };
360
+ }
361
+
362
+ //#endregion
363
+ export { createHostServer, runHostServer };
364
+ //# sourceMappingURL=host.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.mjs","names":[],"sources":["../src/host.ts"],"sourcesContent":["import { serve } from \"@hono/node-server\";\nimport { OpenAPIHandler } from \"@orpc/openapi/fetch\";\nimport { OpenAPIReferencePlugin } from \"@orpc/openapi/plugins\";\nimport { RPCHandler } from \"@orpc/server/fetch\";\nimport { BatchHandlerPlugin } from \"@orpc/server/plugins\";\nimport { ZodToJsonSchemaConverter } from \"@orpc/zod/zod4\";\nimport { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { secureHeaders } from \"hono/secure-headers\";\nimport {\n createStitchedRouter,\n type LoadedPluginResult,\n type LoadedPluginsResult,\n loadApiPluginsFromRuntimeConfig,\n} from \"./api\";\nimport { loadRouterModule, type RouterModule } from \"./federation.server\";\nimport type { ClientRuntimeConfig, RuntimeConfig } from \"./types\";\n\nexport interface HostServerConfig {\n runtimeConfig: RuntimeConfig;\n configDir: string;\n port?: number;\n}\n\nexport interface HostServerHandle {\n ready: Promise<void>;\n shutdown: () => Promise<void>;\n}\n\nfunction buildClientRuntimeConfig(runtimeConfig: RuntimeConfig): ClientRuntimeConfig {\n return {\n env: runtimeConfig.env,\n account: runtimeConfig.account,\n networkId: runtimeConfig.networkId,\n hostUrl: runtimeConfig.hostUrl,\n assetsUrl: runtimeConfig.ui.url,\n apiBase: \"/api\",\n rpcBase: \"/api/rpc\",\n ui: runtimeConfig.ui\n ? {\n name: runtimeConfig.ui.name,\n url: runtimeConfig.ui.url,\n entry: runtimeConfig.ui.entry,\n integrity: runtimeConfig.ui.integrity,\n }\n : undefined,\n api: runtimeConfig.api\n ? {\n name: runtimeConfig.api.name,\n url: runtimeConfig.api.url,\n entry: runtimeConfig.api.entry,\n integrity: runtimeConfig.api.integrity,\n }\n : undefined,\n plugins: runtimeConfig.plugins\n ? Object.fromEntries(\n Object.entries(runtimeConfig.plugins).map(([key, plugin]) => [\n key,\n {\n name: plugin.name,\n url: plugin.url,\n entry: plugin.entry,\n integrity: plugin.integrity,\n },\n ]),\n )\n : undefined,\n };\n}\n\nfunction renderLoadingShell(runtimeConfig: ClientRuntimeConfig, error?: string | null) {\n const bootstrap = `window.__RUNTIME_CONFIG__ = ${JSON.stringify(runtimeConfig)};window.addEventListener('load', function handleEverythingDevHydrate() { window.__hydrate?.(); }, { once: true });`;\n const errorMarkup = error\n ? `<p style=\"color: #fca5a5;\">Error loading UI: ${escapeHtml(error)}</p>`\n : \"<p>Loading UI...</p>\";\n\n const uiIntegrity = runtimeConfig.ui?.integrity;\n const sriAttr = uiIntegrity ? ` integrity=\"${uiIntegrity}\" crossorigin=\"anonymous\"` : \"\";\n\n return `\n\t\t<!DOCTYPE html>\n\t\t<html lang=\"en\">\n\t\t\t<head>\n\t\t\t\t<meta charset=\"utf-8\" />\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\t\t\t\t<title>Loading...</title>\n\t\t\t\t<style>\n\t\t\t\t\tbody { background: #171717; color: #fafafa; display: flex; align-items: center; justify-content: center; height: 100vh; font-family: system-ui; }\n\t\t\t\t\t.fade { animation: fadeIn 0.3s ease-in; text-align: center; padding: 2rem; }\n\t\t\t\t\t@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\n\t\t\t\t</style>\n\t\t\t\t${runtimeConfig.assetsUrl ? `<script src=\"${runtimeConfig.assetsUrl}/remoteEntry.js\"${sriAttr}></script>` : \"\"}\n\t\t\t\t<script>${bootstrap}</script>\n\t\t\t</head>\n\t\t\t<body>\n\t\t\t\t<div id=\"root\" class=\"fade\">${errorMarkup}</div>\n\t\t\t</body>\n\t\t</html>\n\t`;\n}\n\nfunction escapeHtml(value: string) {\n return value\n .replaceAll(\"&\", \"&amp;\")\n .replaceAll(\"<\", \"&lt;\")\n .replaceAll(\">\", \"&gt;\")\n .replaceAll('\"', \"&quot;\")\n .replaceAll(\"'\", \"&#39;\");\n}\n\nexport function createHostServer(config: HostServerConfig): HostServerHandle {\n const port = config.port ?? 3000;\n const { runtimeConfig } = config;\n\n let shutdownImpl: (() => Promise<void>) | null = null;\n\n const ready = (async () => {\n const started = await runHostServer({ runtimeConfig, port });\n shutdownImpl = started.shutdown;\n })();\n\n const shutdown = async () => {\n console.log(\"[Host] Shutting down...\");\n const timeout = setTimeout(() => {\n console.log(\"[Host] Force exit\");\n process.exit(0);\n }, 5000);\n await ready.catch(() => {});\n if (shutdownImpl) {\n await shutdownImpl().catch(() => {});\n }\n clearTimeout(timeout);\n console.log(\"[Host] Shutdown complete\");\n };\n\n return { ready, shutdown };\n}\n\nasync function runHostServer(opts: {\n runtimeConfig: RuntimeConfig;\n port: number;\n}): Promise<{ shutdown: () => Promise<void> }> {\n const { runtimeConfig, port } = opts;\n\n let apiPlugins: LoadedPluginResult[] = [];\n let baseApiPlugin: LoadedPluginResult | null = null;\n let apiPluginError: string | null = null;\n let apiPluginLoading: Promise<LoadedPluginsResult | null> | null = null;\n let ssrRouterModule: RouterModule | null = null;\n let ssrRouterError: string | null = null;\n let ssrRouterLoading: Promise<RouterModule | null> | null = null;\n let rpcHandler: RPCHandler<any> | null = null;\n let openApiHandler: OpenAPIHandler<any> | null = null;\n\n const clientRuntimeConfig = buildClientRuntimeConfig(runtimeConfig);\n\n const initApiHandlers = () => {\n const baseRouter = baseApiPlugin?.router ?? {};\n const stitchedRouter = createStitchedRouter(\n baseRouter,\n apiPlugins.filter((plugin) => plugin.key !== \"api\"),\n );\n\n if (!baseApiPlugin) {\n rpcHandler = null;\n openApiHandler = null;\n return;\n }\n\n rpcHandler = new RPCHandler(stitchedRouter as any, {\n plugins: [new BatchHandlerPlugin()],\n });\n openApiHandler = new OpenAPIHandler(stitchedRouter as any, {\n plugins: [\n new OpenAPIReferencePlugin({\n schemaConverters: [new ZodToJsonSchemaConverter()],\n }),\n ],\n });\n };\n\n const ensureApiPluginLoaded = async (): Promise<LoadedPluginsResult | null> => {\n if (apiPlugins.length > 0) return { base: baseApiPlugin, plugins: apiPlugins, errors: [] };\n if (!runtimeConfig.api) return null;\n if (apiPluginLoading) return apiPluginLoading;\n\n apiPluginLoading = loadApiPluginsFromRuntimeConfig(runtimeConfig, process.env as any)\n .then((loaded) => {\n if (loaded) {\n apiPlugins = loaded.plugins;\n baseApiPlugin = loaded.base;\n apiPluginError =\n loaded.errors.length > 0 ? loaded.errors.map((item) => item.error).join(\"; \") : null;\n initApiHandlers();\n }\n return loaded;\n })\n .catch((e) => {\n apiPluginError = e instanceof Error ? e.message : String(e);\n return null;\n })\n .finally(() => {\n apiPluginLoading = null;\n });\n\n return apiPluginLoading;\n };\n\n const ensureRouterModuleLoaded = async (): Promise<RouterModule | null> => {\n if (ssrRouterModule) {\n return ssrRouterModule;\n }\n\n if (ssrRouterLoading) {\n return ssrRouterLoading;\n }\n\n ssrRouterLoading = loadRouterModule(runtimeConfig)\n .then((routerModule) => {\n ssrRouterModule = routerModule;\n ssrRouterError = null;\n return routerModule;\n })\n .catch((error) => {\n ssrRouterError = error instanceof Error ? error.message : String(error);\n return null;\n })\n .finally(() => {\n ssrRouterLoading = null;\n });\n\n return ssrRouterLoading;\n };\n\n // Kick off API plugin load in the background; host should still start even if\n // the remote isn't ready yet.\n void ensureApiPluginLoaded();\n void ensureRouterModuleLoaded();\n\n const app = new Hono();\n\n const corsOrigins = process.env.CORS_ORIGIN?.split(\",\").map((o) => o.trim()) ?? [\n runtimeConfig.hostUrl,\n ...(runtimeConfig.ui?.url ? [runtimeConfig.ui.url] : []),\n ];\n\n if (!process.env.CORS_ORIGIN && runtimeConfig.env === \"production\") {\n console.warn(\n \"[Security] CORS_ORIGIN is not set in production. Using host and UI URLs as allowed origins.\",\n );\n }\n\n app.use(\n \"/*\",\n cors({\n origin: corsOrigins,\n credentials: true,\n }),\n );\n\n app.use(\"*\", secureHeaders());\n\n app.get(\"/health\", (c) => c.text(\"OK\"));\n app.get(\"/ready\", async (c) => {\n type Check = {\n name: string;\n url: string;\n required: boolean;\n ok: boolean;\n status?: number;\n latencyMs?: number;\n error?: string;\n };\n\n const probe = async (url: string, timeoutMs = 400): Promise<Check> => {\n const started = Date.now();\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const res = await fetch(url, { signal: controller.signal });\n return {\n name: \"\",\n url,\n required: true,\n ok: res.ok,\n status: res.status,\n latencyMs: Date.now() - started,\n };\n } catch (e) {\n return {\n name: \"\",\n url,\n required: true,\n ok: false,\n latencyMs: Date.now() - started,\n error: e instanceof Error ? e.message : String(e),\n };\n } finally {\n clearTimeout(timer);\n }\n };\n\n const checks: Check[] = [];\n\n if (runtimeConfig.ui?.url) {\n const base = runtimeConfig.ui.url.replace(/\\/$/, \"\");\n const manifest = await probe(`${base}/mf-manifest.json`);\n manifest.name = \"ui\";\n // mf-manifest.json is preferred but not always present; fall back to\n // remoteEntry.js for readiness.\n manifest.required = false;\n checks.push(manifest);\n if (!manifest.ok) {\n const remoteEntry = await probe(`${base}/remoteEntry.js`);\n remoteEntry.name = \"ui\";\n remoteEntry.required = true;\n checks.push(remoteEntry);\n } else {\n manifest.required = true;\n }\n }\n\n if (runtimeConfig.ui?.ssrUrl) {\n const base = runtimeConfig.ui.ssrUrl.replace(/\\/$/, \"\");\n const ssr = await probe(`${base}/`);\n ssr.name = \"ui-ssr\";\n ssr.required = false;\n checks.push(ssr);\n }\n\n if (runtimeConfig.api?.url) {\n const base = runtimeConfig.api.url.replace(/\\/$/, \"\");\n const api = await probe(`${base}/`);\n api.name = \"api\";\n api.required = true;\n checks.push(api);\n }\n\n if (runtimeConfig.api) {\n checks.push({\n name: \"api-plugin\",\n url: runtimeConfig.api.entry,\n required: true,\n ok: baseApiPlugin !== null,\n status: baseApiPlugin !== null ? 200 : 503,\n error:\n baseApiPlugin !== null\n ? undefined\n : apiPluginLoading\n ? \"loading\"\n : (apiPluginError ?? \"not loaded\"),\n });\n if (!baseApiPlugin && !apiPluginLoading) {\n void ensureApiPluginLoaded();\n }\n }\n\n for (const [key, plugin] of Object.entries(runtimeConfig.plugins ?? {})) {\n const loaded = apiPlugins.find((item) => item.key === key);\n checks.push({\n name: key,\n url: plugin.entry,\n required: true,\n ok: Boolean(loaded),\n status: loaded ? 200 : 503,\n error: loaded ? undefined : (apiPluginError ?? \"not loaded\"),\n });\n }\n\n const allRequiredOk = checks.filter((x) => x.required).every((x) => x.ok);\n\n return c.json(\n {\n status: allRequiredOk ? \"ready\" : \"not_ready\",\n host: {\n url: runtimeConfig.hostUrl,\n env: runtimeConfig.env,\n },\n checks,\n timestamp: new Date().toISOString(),\n },\n allRequiredOk ? 200 : 503,\n );\n });\n app.get(\"/api/_health\", (c) =>\n c.json({\n status: \"ready\",\n mode: runtimeConfig.env,\n ui: runtimeConfig.ui?.url ?? null,\n uiSsr: runtimeConfig.ui?.ssrUrl ?? null,\n ssrRouterLoaded: ssrRouterModule !== null,\n ssrRouterLoading: ssrRouterLoading !== null,\n ssrRouterError,\n api: runtimeConfig.api?.url ?? null,\n apiPluginLoaded: baseApiPlugin !== null,\n apiPluginLoading: apiPluginLoading !== null,\n apiPluginError,\n }),\n );\n\n app.all(\"/api/rpc/*\", async (c) => {\n if (!rpcHandler) {\n await ensureApiPluginLoaded();\n }\n if (!rpcHandler) {\n return c.json({ error: \"API plugin not loaded\", detail: apiPluginError }, 503);\n }\n const result = await rpcHandler.handle(c.req.raw, {\n prefix: \"/api/rpc\",\n context: {},\n });\n return result.response\n ? c.newResponse(result.response.body, result.response)\n : c.text(\"Not Found\", 404);\n });\n\n app.all(\"/api/*\", async (c) => {\n if (!openApiHandler) {\n await ensureApiPluginLoaded();\n }\n if (!openApiHandler) {\n return c.json({ error: \"API plugin not loaded\", detail: apiPluginError }, 503);\n }\n const result = await openApiHandler.handle(c.req.raw, {\n prefix: \"/api\",\n context: {},\n });\n return result.response\n ? c.newResponse(result.response.body, result.response)\n : c.text(\"Not Found\", 404);\n });\n\n if (runtimeConfig.ui) {\n app.all(\"/__mf/ui/*\", async (c) => {\n const targetUrl = `${runtimeConfig.ui!.url}${c.req.path.replace(\"/__mf/ui\", \"\")}`;\n const response = await fetch(targetUrl, {\n method: c.req.method,\n headers: c.req.header(),\n });\n return response;\n });\n\n if (runtimeConfig.ui.ssrUrl) {\n app.all(\"/__mf/ui/ssr/*\", async (c) => {\n const targetUrl = `${runtimeConfig.ui!.ssrUrl}${c.req.path.replace(\"/__mf/ui/ssr\", \"\")}`;\n const response = await fetch(targetUrl, {\n method: c.req.method,\n headers: c.req.header(),\n });\n return response;\n });\n }\n }\n\n app.get(\"*\", async (c) => {\n const routerModule = await ensureRouterModuleLoaded();\n\n if (!routerModule) {\n return c.html(renderLoadingShell(clientRuntimeConfig, ssrRouterError), 503);\n }\n\n try {\n const apiClient = baseApiPlugin?.createClient();\n\n const result = await routerModule.renderToStream(c.req.raw, {\n assetsUrl: runtimeConfig.ui.url,\n runtimeConfig: clientRuntimeConfig,\n apiClient,\n });\n\n return new Response(result.stream, {\n status: result.statusCode,\n headers: result.headers,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return c.html(renderLoadingShell(clientRuntimeConfig, message), 500);\n }\n });\n\n const hostname = process.env.HOST ?? \"0.0.0.0\";\n let resolveReady: (() => void) | null = null;\n const ready = new Promise<void>((resolve) => {\n resolveReady = resolve;\n });\n\n const proxiedFetch = (req: Request): Response | Promise<Response> => {\n const url = new URL(req.url);\n const forwardedProto = req.headers.get(\"x-forwarded-proto\");\n const forwardedHost = req.headers.get(\"x-forwarded-host\");\n\n if (forwardedProto) {\n url.protocol = forwardedProto;\n }\n if (forwardedHost) {\n url.host = forwardedHost;\n }\n\n if (forwardedProto || forwardedHost) {\n req = new Request(url, req);\n }\n\n return app.fetch(req);\n };\n\n const server = serve({ fetch: proxiedFetch, port, hostname }, (info) => {\n console.log(`[Host] Server running at http://${hostname}:${info.port}`);\n console.log(`[Host] API: http://${hostname}:${info.port}/api/rpc`);\n resolveReady?.();\n });\n\n await ready;\n\n return {\n shutdown: () =>\n new Promise<void>((resolve) => {\n try {\n server.close(() => resolve());\n } catch {\n resolve();\n }\n }),\n };\n}\n\nexport { runHostServer };\n"],"mappings":"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"}
package/dist/index.cjs ADDED
@@ -0,0 +1,122 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
+ const require_fastkv = require('./fastkv.cjs');
4
+ require('./sdk.cjs');
5
+ const require_types = require('./types.cjs');
6
+ const require_config = require('./config.cjs');
7
+ const require_contract = require('./contract.cjs');
8
+ const require_contract_meta = require('./contract.meta.cjs');
9
+ require('./plugin.cjs');
10
+ let every_plugin_effect = require("every-plugin/effect");
11
+ let every_plugin = require("every-plugin");
12
+ let every_plugin_orpc = require("every-plugin/orpc");
13
+ let every_plugin_zod = require("every-plugin/zod");
14
+
15
+ exports.ApiPluginConfigSchema = require_types.ApiPluginConfigSchema;
16
+ exports.BosConfigSchema = require_types.BosConfigSchema;
17
+ exports.BosPluginRefSchema = require_types.BosPluginRefSchema;
18
+ exports.BosStagingSchema = require_types.BosStagingSchema;
19
+ exports.BuildOptionsSchema = require_contract.BuildOptionsSchema;
20
+ exports.BuildResultSchema = require_contract.BuildResultSchema;
21
+ exports.ClientRuntimeConfigSchema = require_types.ClientRuntimeConfigSchema;
22
+ exports.ClientRuntimeInfoSchema = require_types.ClientRuntimeInfoSchema;
23
+ exports.ConfigResultSchema = require_contract.ConfigResultSchema;
24
+ Object.defineProperty(exports, 'Context', {
25
+ enumerable: true,
26
+ get: function () {
27
+ return every_plugin_effect.Context;
28
+ }
29
+ });
30
+ exports.DevOptionsSchema = require_contract.DevOptionsSchema;
31
+ exports.DevResultSchema = require_contract.DevResultSchema;
32
+ Object.defineProperty(exports, 'Effect', {
33
+ enumerable: true,
34
+ get: function () {
35
+ return every_plugin_effect.Effect;
36
+ }
37
+ });
38
+ exports.FederationEntrySchema = require_types.FederationEntrySchema;
39
+ exports.HostConfigSchema = require_types.HostConfigSchema;
40
+ exports.InitOptionsSchema = require_contract.InitOptionsSchema;
41
+ exports.InitResultSchema = require_contract.InitResultSchema;
42
+ exports.KeyPublishOptionsSchema = require_contract.KeyPublishOptionsSchema;
43
+ exports.KeyPublishResultSchema = require_contract.KeyPublishResultSchema;
44
+ Object.defineProperty(exports, 'Layer', {
45
+ enumerable: true,
46
+ get: function () {
47
+ return every_plugin_effect.Layer;
48
+ }
49
+ });
50
+ exports.PluginAddOptionsSchema = require_contract.PluginAddOptionsSchema;
51
+ exports.PluginAddResultSchema = require_contract.PluginAddResultSchema;
52
+ exports.PluginListResultSchema = require_contract.PluginListResultSchema;
53
+ exports.PluginPublishOptionsSchema = require_contract.PluginPublishOptionsSchema;
54
+ exports.PluginPublishResultSchema = require_contract.PluginPublishResultSchema;
55
+ exports.PluginRemoveOptionsSchema = require_contract.PluginRemoveOptionsSchema;
56
+ exports.PluginRemoveResultSchema = require_contract.PluginRemoveResultSchema;
57
+ Object.defineProperty(exports, 'PluginRuntime', {
58
+ enumerable: true,
59
+ get: function () {
60
+ return every_plugin.PluginRuntime;
61
+ }
62
+ });
63
+ exports.PublishOptionsSchema = require_contract.PublishOptionsSchema;
64
+ exports.PublishResultSchema = require_contract.PublishResultSchema;
65
+ exports.RuntimeConfigSchema = require_types.RuntimeConfigSchema;
66
+ exports.RuntimePluginConfigSchema = require_types.RuntimePluginConfigSchema;
67
+ Object.defineProperty(exports, 'Scope', {
68
+ enumerable: true,
69
+ get: function () {
70
+ return every_plugin_effect.Scope;
71
+ }
72
+ });
73
+ exports.SharedConfigSchema = require_types.SharedConfigSchema;
74
+ exports.SharedDepConfigSchema = require_types.SharedDepConfigSchema;
75
+ exports.SourceModeSchema = require_types.SourceModeSchema;
76
+ exports.StartOptionsSchema = require_contract.StartOptionsSchema;
77
+ exports.StartResultSchema = require_contract.StartResultSchema;
78
+ exports.UiConfigSchema = require_types.UiConfigSchema;
79
+ exports.bosContract = require_contract.bosContract;
80
+ exports.buildRegistryConfigUrl = require_fastkv.buildRegistryConfigUrl;
81
+ exports.buildRegistryConfigUrlForNetwork = require_fastkv.buildRegistryConfigUrlForNetwork;
82
+ exports.buildRuntimePluginsForConfig = require_config.buildRuntimePluginsForConfig;
83
+ exports.clearConfigCache = require_config.clearConfigCache;
84
+ exports.cliCommandMeta = require_contract_meta.cliCommandMeta;
85
+ Object.defineProperty(exports, 'createPlugin', {
86
+ enumerable: true,
87
+ get: function () {
88
+ return every_plugin.createPlugin;
89
+ }
90
+ });
91
+ Object.defineProperty(exports, 'createPluginRuntime', {
92
+ enumerable: true,
93
+ get: function () {
94
+ return every_plugin.createPluginRuntime;
95
+ }
96
+ });
97
+ exports.fetchBosConfigFromFastKv = require_fastkv.fetchBosConfigFromFastKv;
98
+ exports.findConfigPath = require_config.findConfigPath;
99
+ exports.getConfig = require_config.getConfig;
100
+ exports.getFastKvBaseUrlForNetwork = require_fastkv.getFastKvBaseUrlForNetwork;
101
+ exports.getHostDevelopmentPort = require_config.getHostDevelopmentPort;
102
+ exports.getProjectRoot = require_config.getProjectRoot;
103
+ exports.getRegistryNamespaceForAccount = require_fastkv.getRegistryNamespaceForAccount;
104
+ exports.getRegistryNamespaceForNetwork = require_fastkv.getRegistryNamespaceForNetwork;
105
+ exports.isLocalDevelopmentTarget = require_config.isLocalDevelopmentTarget;
106
+ exports.loadBosConfig = require_config.loadBosConfig;
107
+ exports.loadConfig = require_config.loadConfig;
108
+ Object.defineProperty(exports, 'oc', {
109
+ enumerable: true,
110
+ get: function () {
111
+ return every_plugin_orpc.oc;
112
+ }
113
+ });
114
+ exports.parsePort = require_config.parsePort;
115
+ exports.resolveDevelopmentHostUrl = require_config.resolveDevelopmentHostUrl;
116
+ exports.resolveLocalDevelopmentPath = require_config.resolveLocalDevelopmentPath;
117
+ Object.defineProperty(exports, 'z', {
118
+ enumerable: true,
119
+ get: function () {
120
+ return every_plugin_zod.z;
121
+ }
122
+ });
@@ -0,0 +1,7 @@
1
+ import { AnyContractRouter, AnySchema, Context, Effect, Layer, LoadedPluginWithBinding, Plugin, PluginRuntime, Scope, createPlugin, createPluginRuntime, oc, z } from "./sdk.cjs";
2
+ import { ApiPluginConfig, ApiPluginConfigSchema, BosConfig, BosConfigSchema, BosPluginRef, BosPluginRefSchema, BosStaging, BosStagingSchema, ClientRuntimeConfig, ClientRuntimeConfigSchema, ClientRuntimeInfo, ClientRuntimeInfoSchema, FederationEntry, FederationEntrySchema, HostConfig, HostConfigSchema, RuntimeConfig, RuntimeConfigSchema, RuntimePluginConfig, RuntimePluginConfigSchema, SharedConfig, SharedConfigSchema, SharedDepConfig, SharedDepConfigSchema, SourceMode, SourceModeSchema, UiConfig, UiConfigSchema } from "./types.cjs";
3
+ import { ConfigResult, buildRuntimePluginsForConfig, clearConfigCache, findConfigPath, getConfig, getHostDevelopmentPort, getProjectRoot, isLocalDevelopmentTarget, loadBosConfig, loadConfig, parsePort, resolveDevelopmentHostUrl, resolveLocalDevelopmentPath } from "./config.cjs";
4
+ import { CliCommandMeta, cliCommandMeta } from "./contract.meta.cjs";
5
+ import { NetworkId, buildRegistryConfigUrl, buildRegistryConfigUrlForNetwork, fetchBosConfigFromFastKv, getFastKvBaseUrlForNetwork, getRegistryNamespaceForAccount, getRegistryNamespaceForNetwork } from "./fastkv.cjs";
6
+ import { BosConfigResult, BuildOptions, BuildOptionsSchema, BuildResultSchema, ConfigResultSchema, DevOptions, DevOptionsSchema, DevResultSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, PublishOptions, PublishOptionsSchema, PublishResultSchema, StartOptions, StartOptionsSchema, StartResultSchema, bosContract } from "./contract.cjs";
7
+ export { AnyContractRouter, AnySchema, ApiPluginConfig, ApiPluginConfigSchema, BosConfig, BosConfigResult, BosConfigSchema, BosPluginRef, BosPluginRefSchema, BosStaging, BosStagingSchema, BuildOptions, BuildOptionsSchema, BuildResultSchema, CliCommandMeta, ClientRuntimeConfig, ClientRuntimeConfigSchema, ClientRuntimeInfo, ClientRuntimeInfoSchema, ConfigResult, ConfigResultSchema, Context, DevOptions, DevOptionsSchema, DevResultSchema, Effect, FederationEntry, FederationEntrySchema, HostConfig, HostConfigSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, Layer, LoadedPluginWithBinding, NetworkId, Plugin, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, PluginRuntime, PublishOptions, PublishOptionsSchema, PublishResultSchema, RuntimeConfig, RuntimeConfigSchema, RuntimePluginConfig, RuntimePluginConfigSchema, Scope, SharedConfig, SharedConfigSchema, SharedDepConfig, SharedDepConfigSchema, SourceMode, SourceModeSchema, StartOptions, StartOptionsSchema, StartResultSchema, UiConfig, UiConfigSchema, bosContract, buildRegistryConfigUrl, buildRegistryConfigUrlForNetwork, buildRuntimePluginsForConfig, clearConfigCache, cliCommandMeta, createPlugin, createPluginRuntime, fetchBosConfigFromFastKv, findConfigPath, getConfig, getFastKvBaseUrlForNetwork, getHostDevelopmentPort, getProjectRoot, getRegistryNamespaceForAccount, getRegistryNamespaceForNetwork, isLocalDevelopmentTarget, loadBosConfig, loadConfig, oc, parsePort, resolveDevelopmentHostUrl, resolveLocalDevelopmentPath, z };
@@ -0,0 +1,7 @@
1
+ import { AnyContractRouter, AnySchema, Context, Effect, Layer, LoadedPluginWithBinding, Plugin, PluginRuntime, Scope, createPlugin, createPluginRuntime, oc, z } from "./sdk.mjs";
2
+ import { ApiPluginConfig, ApiPluginConfigSchema, BosConfig, BosConfigSchema, BosPluginRef, BosPluginRefSchema, BosStaging, BosStagingSchema, ClientRuntimeConfig, ClientRuntimeConfigSchema, ClientRuntimeInfo, ClientRuntimeInfoSchema, FederationEntry, FederationEntrySchema, HostConfig, HostConfigSchema, RuntimeConfig, RuntimeConfigSchema, RuntimePluginConfig, RuntimePluginConfigSchema, SharedConfig, SharedConfigSchema, SharedDepConfig, SharedDepConfigSchema, SourceMode, SourceModeSchema, UiConfig, UiConfigSchema } from "./types.mjs";
3
+ import { ConfigResult, buildRuntimePluginsForConfig, clearConfigCache, findConfigPath, getConfig, getHostDevelopmentPort, getProjectRoot, isLocalDevelopmentTarget, loadBosConfig, loadConfig, parsePort, resolveDevelopmentHostUrl, resolveLocalDevelopmentPath } from "./config.mjs";
4
+ import { CliCommandMeta, cliCommandMeta } from "./contract.meta.mjs";
5
+ import { NetworkId, buildRegistryConfigUrl, buildRegistryConfigUrlForNetwork, fetchBosConfigFromFastKv, getFastKvBaseUrlForNetwork, getRegistryNamespaceForAccount, getRegistryNamespaceForNetwork } from "./fastkv.mjs";
6
+ import { BosConfigResult, BuildOptions, BuildOptionsSchema, BuildResultSchema, ConfigResultSchema, DevOptions, DevOptionsSchema, DevResultSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, PublishOptions, PublishOptionsSchema, PublishResultSchema, StartOptions, StartOptionsSchema, StartResultSchema, bosContract } from "./contract.mjs";
7
+ export { AnyContractRouter, AnySchema, ApiPluginConfig, ApiPluginConfigSchema, BosConfig, BosConfigResult, BosConfigSchema, BosPluginRef, BosPluginRefSchema, BosStaging, BosStagingSchema, BuildOptions, BuildOptionsSchema, BuildResultSchema, CliCommandMeta, ClientRuntimeConfig, ClientRuntimeConfigSchema, ClientRuntimeInfo, ClientRuntimeInfoSchema, ConfigResult, ConfigResultSchema, Context, DevOptions, DevOptionsSchema, DevResultSchema, Effect, FederationEntry, FederationEntrySchema, HostConfig, HostConfigSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, Layer, LoadedPluginWithBinding, NetworkId, Plugin, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, PluginRuntime, PublishOptions, PublishOptionsSchema, PublishResultSchema, RuntimeConfig, RuntimeConfigSchema, RuntimePluginConfig, RuntimePluginConfigSchema, Scope, SharedConfig, SharedConfigSchema, SharedDepConfig, SharedDepConfigSchema, SourceMode, SourceModeSchema, StartOptions, StartOptionsSchema, StartResultSchema, UiConfig, UiConfigSchema, bosContract, buildRegistryConfigUrl, buildRegistryConfigUrlForNetwork, buildRuntimePluginsForConfig, clearConfigCache, cliCommandMeta, createPlugin, createPluginRuntime, fetchBosConfigFromFastKv, findConfigPath, getConfig, getFastKvBaseUrlForNetwork, getHostDevelopmentPort, getProjectRoot, getRegistryNamespaceForAccount, getRegistryNamespaceForNetwork, isLocalDevelopmentTarget, loadBosConfig, loadConfig, oc, parsePort, resolveDevelopmentHostUrl, resolveLocalDevelopmentPath, z };
package/dist/index.mjs ADDED
@@ -0,0 +1,9 @@
1
+ import { buildRegistryConfigUrl, buildRegistryConfigUrlForNetwork, fetchBosConfigFromFastKv, getFastKvBaseUrlForNetwork, getRegistryNamespaceForAccount, getRegistryNamespaceForNetwork } from "./fastkv.mjs";
2
+ import { Context, Effect, Layer, PluginRuntime, Scope, createPlugin, createPluginRuntime, oc, z } from "./sdk.mjs";
3
+ import { ApiPluginConfigSchema, BosConfigSchema, BosPluginRefSchema, BosStagingSchema, ClientRuntimeConfigSchema, ClientRuntimeInfoSchema, FederationEntrySchema, HostConfigSchema, RuntimeConfigSchema, RuntimePluginConfigSchema, SharedConfigSchema, SharedDepConfigSchema, SourceModeSchema, UiConfigSchema } from "./types.mjs";
4
+ import { buildRuntimePluginsForConfig, clearConfigCache, findConfigPath, getConfig, getHostDevelopmentPort, getProjectRoot, isLocalDevelopmentTarget, loadBosConfig, loadConfig, parsePort, resolveDevelopmentHostUrl, resolveLocalDevelopmentPath } from "./config.mjs";
5
+ import { BuildOptionsSchema, BuildResultSchema, ConfigResultSchema, DevOptionsSchema, DevResultSchema, InitOptionsSchema, InitResultSchema, KeyPublishOptionsSchema, KeyPublishResultSchema, PluginAddOptionsSchema, PluginAddResultSchema, PluginListResultSchema, PluginPublishOptionsSchema, PluginPublishResultSchema, PluginRemoveOptionsSchema, PluginRemoveResultSchema, PublishOptionsSchema, PublishResultSchema, StartOptionsSchema, StartResultSchema, bosContract } from "./contract.mjs";
6
+ import { cliCommandMeta } from "./contract.meta.mjs";
7
+ import "./plugin.mjs";
8
+
9
+ export { ApiPluginConfigSchema, BosConfigSchema, BosPluginRefSchema, BosStagingSchema, BuildOptionsSchema, BuildResultSchema, ClientRuntimeConfigSchema, ClientRuntimeInfoSchema, ConfigResultSchema, Context, DevOptionsSchema, DevResultSchema, Effect, FederationEntrySchema, HostConfigSchema, InitOptionsSchema, InitResultSchema, KeyPublishOptionsSchema, KeyPublishResultSchema, Layer, PluginAddOptionsSchema, PluginAddResultSchema, PluginListResultSchema, PluginPublishOptionsSchema, PluginPublishResultSchema, PluginRemoveOptionsSchema, PluginRemoveResultSchema, PluginRuntime, PublishOptionsSchema, PublishResultSchema, RuntimeConfigSchema, RuntimePluginConfigSchema, Scope, SharedConfigSchema, SharedDepConfigSchema, SourceModeSchema, StartOptionsSchema, StartResultSchema, UiConfigSchema, bosContract, buildRegistryConfigUrl, buildRegistryConfigUrlForNetwork, buildRuntimePluginsForConfig, clearConfigCache, cliCommandMeta, createPlugin, createPluginRuntime, fetchBosConfigFromFastKv, findConfigPath, getConfig, getFastKvBaseUrlForNetwork, getHostDevelopmentPort, getProjectRoot, getRegistryNamespaceForAccount, getRegistryNamespaceForNetwork, isLocalDevelopmentTarget, loadBosConfig, loadConfig, oc, parsePort, resolveDevelopmentHostUrl, resolveLocalDevelopmentPath, z };
@@ -0,0 +1,39 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
+ let node_crypto = require("node:crypto");
4
+
5
+ //#region src/integrity.ts
6
+ function computeSriHash(content) {
7
+ return `sha384-${(0, node_crypto.createHash)("sha384").update(content).digest("base64")}`;
8
+ }
9
+ async function computeSriHashForUrl(url) {
10
+ try {
11
+ const entryUrl = url.endsWith("/remoteEntry.js") ? url : url.endsWith("/mf-manifest.json") ? `${url.replace(/\/mf-manifest\.json$/, "")}/remoteEntry.js` : `${url.replace(/\/$/, "")}/remoteEntry.js`;
12
+ const response = await fetch(entryUrl);
13
+ if (!response.ok) {
14
+ console.warn(`[SRI] Failed to fetch ${entryUrl}: ${response.status} ${response.statusText}`);
15
+ return null;
16
+ }
17
+ return computeSriHash(Buffer.from(await response.arrayBuffer()));
18
+ } catch (error) {
19
+ console.warn(`[SRI] Error computing integrity for ${url}:`, error instanceof Error ? error.message : error);
20
+ return null;
21
+ }
22
+ }
23
+ async function verifySriForUrl(url, expectedIntegrity) {
24
+ const entryUrl = url.endsWith("/remoteEntry.js") ? url : url.endsWith("/mf-manifest.json") ? `${url.replace(/\/mf-manifest\.json$/, "")}/remoteEntry.js` : `${url.replace(/\/$/, "")}/remoteEntry.js`;
25
+ const response = await fetch(entryUrl);
26
+ if (!response.ok) {
27
+ console.warn(`[SRI] Failed to fetch ${entryUrl} for verification: ${response.status}`);
28
+ return;
29
+ }
30
+ const computed = computeSriHash(Buffer.from(await response.arrayBuffer()));
31
+ if (computed !== expectedIntegrity) throw new Error(`[SRI] Integrity check failed for ${entryUrl}\n Expected: ${expectedIntegrity}\n Computed: ${computed}`);
32
+ console.log(`[SRI] Integrity verified for ${entryUrl}`);
33
+ }
34
+
35
+ //#endregion
36
+ exports.computeSriHash = computeSriHash;
37
+ exports.computeSriHashForUrl = computeSriHashForUrl;
38
+ exports.verifySriForUrl = verifySriForUrl;
39
+ //# sourceMappingURL=integrity.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.cjs","names":[],"sources":["../src/integrity.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\n\nexport function computeSriHash(content: string | Buffer): string {\n return `sha384-${createHash(\"sha384\").update(content).digest(\"base64\")}`;\n}\n\nexport async function computeSriHashForUrl(url: string): Promise<string | null> {\n try {\n const entryUrl = url.endsWith(\"/remoteEntry.js\")\n ? url\n : url.endsWith(\"/mf-manifest.json\")\n ? `${url.replace(/\\/mf-manifest\\.json$/, \"\")}/remoteEntry.js`\n : `${url.replace(/\\/$/, \"\")}/remoteEntry.js`;\n\n const response = await fetch(entryUrl);\n if (!response.ok) {\n console.warn(`[SRI] Failed to fetch ${entryUrl}: ${response.status} ${response.statusText}`);\n return null;\n }\n const buffer = Buffer.from(await response.arrayBuffer());\n return computeSriHash(buffer);\n } catch (error) {\n console.warn(\n `[SRI] Error computing integrity for ${url}:`,\n error instanceof Error ? error.message : error,\n );\n return null;\n }\n}\n\nexport async function verifySriForUrl(url: string, expectedIntegrity: string): Promise<void> {\n const entryUrl = url.endsWith(\"/remoteEntry.js\")\n ? url\n : url.endsWith(\"/mf-manifest.json\")\n ? `${url.replace(/\\/mf-manifest\\.json$/, \"\")}/remoteEntry.js`\n : `${url.replace(/\\/$/, \"\")}/remoteEntry.js`;\n\n const response = await fetch(entryUrl);\n if (!response.ok) {\n console.warn(`[SRI] Failed to fetch ${entryUrl} for verification: ${response.status}`);\n return;\n }\n\n const buffer = Buffer.from(await response.arrayBuffer());\n const computed = computeSriHash(buffer);\n\n if (computed !== expectedIntegrity) {\n throw new Error(\n `[SRI] Integrity check failed for ${entryUrl}\\n Expected: ${expectedIntegrity}\\n Computed: ${computed}`,\n );\n }\n\n console.log(`[SRI] Integrity verified for ${entryUrl}`);\n}\n"],"mappings":";;;;;AAEA,SAAgB,eAAe,SAAkC;AAC/D,QAAO,sCAAqB,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,SAAS;;AAGxE,eAAsB,qBAAqB,KAAqC;AAC9E,KAAI;EACF,MAAM,WAAW,IAAI,SAAS,kBAAkB,GAC5C,MACA,IAAI,SAAS,oBAAoB,GAC/B,GAAG,IAAI,QAAQ,wBAAwB,GAAG,CAAC,mBAC3C,GAAG,IAAI,QAAQ,OAAO,GAAG,CAAC;EAEhC,MAAM,WAAW,MAAM,MAAM,SAAS;AACtC,MAAI,CAAC,SAAS,IAAI;AAChB,WAAQ,KAAK,yBAAyB,SAAS,IAAI,SAAS,OAAO,GAAG,SAAS,aAAa;AAC5F,UAAO;;AAGT,SAAO,eADQ,OAAO,KAAK,MAAM,SAAS,aAAa,CAAC,CAC3B;UACtB,OAAO;AACd,UAAQ,KACN,uCAAuC,IAAI,IAC3C,iBAAiB,QAAQ,MAAM,UAAU,MAC1C;AACD,SAAO;;;AAIX,eAAsB,gBAAgB,KAAa,mBAA0C;CAC3F,MAAM,WAAW,IAAI,SAAS,kBAAkB,GAC5C,MACA,IAAI,SAAS,oBAAoB,GAC/B,GAAG,IAAI,QAAQ,wBAAwB,GAAG,CAAC,mBAC3C,GAAG,IAAI,QAAQ,OAAO,GAAG,CAAC;CAEhC,MAAM,WAAW,MAAM,MAAM,SAAS;AACtC,KAAI,CAAC,SAAS,IAAI;AAChB,UAAQ,KAAK,yBAAyB,SAAS,qBAAqB,SAAS,SAAS;AACtF;;CAIF,MAAM,WAAW,eADF,OAAO,KAAK,MAAM,SAAS,aAAa,CAAC,CACjB;AAEvC,KAAI,aAAa,kBACf,OAAM,IAAI,MACR,oCAAoC,SAAS,gBAAgB,kBAAkB,gBAAgB,WAChG;AAGH,SAAQ,IAAI,gCAAgC,WAAW"}
@@ -0,0 +1,7 @@
1
+ //#region src/integrity.d.ts
2
+ declare function computeSriHash(content: string | Buffer): string;
3
+ declare function computeSriHashForUrl(url: string): Promise<string | null>;
4
+ declare function verifySriForUrl(url: string, expectedIntegrity: string): Promise<void>;
5
+ //#endregion
6
+ export { computeSriHash, computeSriHashForUrl, verifySriForUrl };
7
+ //# sourceMappingURL=integrity.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.d.cts","names":[],"sources":["../src/integrity.ts"],"mappings":";iBAEgB,cAAA,CAAe,OAAA,WAAkB,MAAA;AAAA,iBAI3B,oBAAA,CAAqB,GAAA,WAAc,OAAA;AAAA,iBAwBnC,eAAA,CAAgB,GAAA,UAAa,iBAAA,WAA4B,OAAA"}
@@ -0,0 +1,7 @@
1
+ //#region src/integrity.d.ts
2
+ declare function computeSriHash(content: string | Buffer): string;
3
+ declare function computeSriHashForUrl(url: string): Promise<string | null>;
4
+ declare function verifySriForUrl(url: string, expectedIntegrity: string): Promise<void>;
5
+ //#endregion
6
+ export { computeSriHash, computeSriHashForUrl, verifySriForUrl };
7
+ //# sourceMappingURL=integrity.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.d.mts","names":[],"sources":["../src/integrity.ts"],"mappings":";iBAEgB,cAAA,CAAe,OAAA,WAAkB,MAAA;AAAA,iBAI3B,oBAAA,CAAqB,GAAA,WAAc,OAAA;AAAA,iBAwBnC,eAAA,CAAgB,GAAA,UAAa,iBAAA,WAA4B,OAAA"}