everything-dev 0.3.2 → 1.3.2

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 (308) 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 +317 -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 +309 -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/mf.cjs +77 -0
  123. package/dist/mf.cjs.map +1 -0
  124. package/dist/mf.d.cts +19 -0
  125. package/dist/mf.d.cts.map +1 -0
  126. package/dist/mf.d.mts +19 -0
  127. package/dist/mf.d.mts.map +1 -0
  128. package/dist/mf.mjs +71 -0
  129. package/dist/mf.mjs.map +1 -0
  130. package/dist/near-cli.cjs +196 -0
  131. package/dist/near-cli.cjs.map +1 -0
  132. package/dist/near-cli.mjs +193 -0
  133. package/dist/near-cli.mjs.map +1 -0
  134. package/dist/network.cjs +9 -0
  135. package/dist/network.cjs.map +1 -0
  136. package/dist/network.mjs +8 -0
  137. package/dist/network.mjs.map +1 -0
  138. package/dist/orchestrator.cjs +441 -0
  139. package/dist/orchestrator.cjs.map +1 -0
  140. package/dist/orchestrator.d.cts +40 -0
  141. package/dist/orchestrator.d.cts.map +1 -0
  142. package/dist/orchestrator.d.mts +40 -0
  143. package/dist/orchestrator.d.mts.map +1 -0
  144. package/dist/orchestrator.mjs +436 -0
  145. package/dist/orchestrator.mjs.map +1 -0
  146. package/dist/plugin.cjs +825 -0
  147. package/dist/plugin.cjs.map +1 -0
  148. package/dist/plugin.d.cts +347 -0
  149. package/dist/plugin.d.cts.map +1 -0
  150. package/dist/plugin.d.mts +348 -0
  151. package/dist/plugin.d.mts.map +1 -0
  152. package/dist/plugin.mjs +822 -0
  153. package/dist/plugin.mjs.map +1 -0
  154. package/dist/process-registry.cjs +120 -0
  155. package/dist/process-registry.cjs.map +1 -0
  156. package/dist/process-registry.d.cts +25 -0
  157. package/dist/process-registry.d.cts.map +1 -0
  158. package/dist/process-registry.d.mts +25 -0
  159. package/dist/process-registry.d.mts.map +1 -0
  160. package/dist/process-registry.mjs +119 -0
  161. package/dist/process-registry.mjs.map +1 -0
  162. package/dist/sdk.cjs +61 -0
  163. package/dist/sdk.d.cts +5 -0
  164. package/dist/sdk.d.mts +5 -0
  165. package/dist/sdk.mjs +6 -0
  166. package/dist/shared.cjs +143 -0
  167. package/dist/shared.cjs.map +1 -0
  168. package/dist/shared.d.cts +33 -0
  169. package/dist/shared.d.cts.map +1 -0
  170. package/dist/shared.d.mts +33 -0
  171. package/dist/shared.d.mts.map +1 -0
  172. package/dist/shared.mjs +140 -0
  173. package/dist/shared.mjs.map +1 -0
  174. package/dist/types.cjs +160 -0
  175. package/dist/types.cjs.map +1 -0
  176. package/dist/types.d.cts +269 -0
  177. package/dist/types.d.cts.map +1 -0
  178. package/dist/types.d.mts +269 -0
  179. package/dist/types.d.mts.map +1 -0
  180. package/dist/types.mjs +144 -0
  181. package/dist/types.mjs.map +1 -0
  182. package/dist/ui/head.cjs +67 -0
  183. package/dist/ui/head.cjs.map +1 -0
  184. package/dist/ui/head.d.cts +19 -0
  185. package/dist/ui/head.d.cts.map +1 -0
  186. package/dist/ui/head.d.mts +19 -0
  187. package/dist/ui/head.d.mts.map +1 -0
  188. package/dist/ui/head.mjs +61 -0
  189. package/dist/ui/head.mjs.map +1 -0
  190. package/dist/ui/index.cjs +32 -0
  191. package/dist/ui/index.d.cts +7 -0
  192. package/dist/ui/index.d.mts +7 -0
  193. package/dist/ui/index.mjs +6 -0
  194. package/dist/ui/metadata.cjs +106 -0
  195. package/dist/ui/metadata.cjs.map +1 -0
  196. package/dist/ui/metadata.d.cts +35 -0
  197. package/dist/ui/metadata.d.cts.map +1 -0
  198. package/dist/ui/metadata.d.mts +35 -0
  199. package/dist/ui/metadata.d.mts.map +1 -0
  200. package/dist/ui/metadata.mjs +100 -0
  201. package/dist/ui/metadata.mjs.map +1 -0
  202. package/dist/ui/router.cjs +56 -0
  203. package/dist/ui/router.cjs.map +1 -0
  204. package/dist/ui/router.d.cts +11 -0
  205. package/dist/ui/router.d.cts.map +1 -0
  206. package/dist/ui/router.d.mts +11 -0
  207. package/dist/ui/router.d.mts.map +1 -0
  208. package/dist/ui/router.mjs +51 -0
  209. package/dist/ui/router.mjs.map +1 -0
  210. package/dist/ui/runtime.cjs +65 -0
  211. package/dist/ui/runtime.cjs.map +1 -0
  212. package/dist/ui/runtime.d.cts +29 -0
  213. package/dist/ui/runtime.d.cts.map +1 -0
  214. package/dist/ui/runtime.d.mts +29 -0
  215. package/dist/ui/runtime.d.mts.map +1 -0
  216. package/dist/ui/runtime.mjs +53 -0
  217. package/dist/ui/runtime.mjs.map +1 -0
  218. package/dist/ui/types.cjs +0 -0
  219. package/dist/ui/types.d.cts +52 -0
  220. package/dist/ui/types.d.cts.map +1 -0
  221. package/dist/ui/types.d.mts +52 -0
  222. package/dist/ui/types.d.mts.map +1 -0
  223. package/dist/ui/types.mjs +1 -0
  224. package/dist/utils/banner.cjs +24 -0
  225. package/dist/utils/banner.cjs.map +1 -0
  226. package/dist/utils/banner.mjs +23 -0
  227. package/dist/utils/banner.mjs.map +1 -0
  228. package/dist/utils/linkify.cjs +15 -0
  229. package/dist/utils/linkify.cjs.map +1 -0
  230. package/dist/utils/linkify.mjs +14 -0
  231. package/dist/utils/linkify.mjs.map +1 -0
  232. package/dist/utils/run.cjs +40 -0
  233. package/dist/utils/run.cjs.map +1 -0
  234. package/dist/utils/run.mjs +39 -0
  235. package/dist/utils/run.mjs.map +1 -0
  236. package/dist/utils/theme.cjs +44 -0
  237. package/dist/utils/theme.cjs.map +1 -0
  238. package/dist/utils/theme.mjs +37 -0
  239. package/dist/utils/theme.mjs.map +1 -0
  240. package/package.json +269 -80
  241. package/src/api-contract.ts +309 -0
  242. package/src/api.ts +181 -0
  243. package/src/app.ts +346 -0
  244. package/src/cli/catalog.ts +49 -0
  245. package/src/cli/help.ts +13 -0
  246. package/src/cli/init.ts +415 -0
  247. package/src/cli/parse.ts +130 -0
  248. package/src/cli/prompts.ts +64 -0
  249. package/src/cli.ts +203 -1507
  250. package/src/components/dev-view.tsx +104 -41
  251. package/src/components/streaming-view.ts +89 -22
  252. package/src/config.ts +462 -532
  253. package/src/contract.meta.ts +96 -0
  254. package/src/contract.ts +164 -561
  255. package/src/dev-logs.ts +85 -0
  256. package/src/dev-session.ts +318 -0
  257. package/src/fastkv.ts +153 -0
  258. package/src/federation.server.ts +43 -0
  259. package/src/host.ts +526 -0
  260. package/src/index.ts +6 -3
  261. package/src/integrity.ts +54 -0
  262. package/src/mf.ts +105 -0
  263. package/src/near-cli.ts +284 -0
  264. package/src/network.ts +3 -0
  265. package/src/orchestrator.ts +648 -0
  266. package/src/plugin.ts +1116 -2303
  267. package/src/process-registry.ts +154 -0
  268. package/src/scripts/sync-api-contract.ts +24 -0
  269. package/src/sdk.ts +14 -0
  270. package/src/shared.ts +206 -0
  271. package/src/types.ts +152 -206
  272. package/src/ui/head.ts +34 -27
  273. package/src/ui/index.ts +3 -3
  274. package/src/ui/metadata.ts +95 -0
  275. package/src/ui/router.ts +22 -6
  276. package/src/ui/runtime.ts +55 -6
  277. package/src/ui/types.ts +24 -11
  278. package/src/utils/banner.ts +10 -6
  279. package/src/utils/run.ts +26 -27
  280. package/src/utils/theme.ts +3 -66
  281. package/src/components/monitor-view.tsx +0 -475
  282. package/src/components/status-view.tsx +0 -173
  283. package/src/lib/env.ts +0 -109
  284. package/src/lib/near-cli.ts +0 -289
  285. package/src/lib/nova.ts +0 -266
  286. package/src/lib/orchestrator.ts +0 -276
  287. package/src/lib/process-registry.ts +0 -166
  288. package/src/lib/process.ts +0 -549
  289. package/src/lib/resource-monitor/assertions.ts +0 -234
  290. package/src/lib/resource-monitor/command.ts +0 -283
  291. package/src/lib/resource-monitor/diff.ts +0 -157
  292. package/src/lib/resource-monitor/errors.ts +0 -127
  293. package/src/lib/resource-monitor/index.ts +0 -305
  294. package/src/lib/resource-monitor/platform/darwin.ts +0 -306
  295. package/src/lib/resource-monitor/platform/index.ts +0 -35
  296. package/src/lib/resource-monitor/platform/linux.ts +0 -332
  297. package/src/lib/resource-monitor/platform/windows.ts +0 -298
  298. package/src/lib/resource-monitor/snapshot.ts +0 -217
  299. package/src/lib/resource-monitor/types.ts +0 -74
  300. package/src/lib/session-recorder/errors.ts +0 -102
  301. package/src/lib/session-recorder/flows/login.ts +0 -210
  302. package/src/lib/session-recorder/index.ts +0 -361
  303. package/src/lib/session-recorder/playwright.ts +0 -257
  304. package/src/lib/session-recorder/report.ts +0 -353
  305. package/src/lib/session-recorder/server.ts +0 -267
  306. package/src/lib/session-recorder/types.ts +0 -115
  307. package/src/lib/sync.ts +0 -1
  308. package/src/ui/files.ts +0 -134
@@ -0,0 +1,143 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
+ let node_fs = require("node:fs");
4
+ let node_path = require("node:path");
5
+ let node_crypto = require("node:crypto");
6
+
7
+ //#region src/shared.ts
8
+ function sha256(input) {
9
+ return (0, node_crypto.createHash)("sha256").update(input).digest("hex");
10
+ }
11
+ function extractSemverExact(input) {
12
+ if (typeof input !== "string") return null;
13
+ const match = input.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/);
14
+ return match ? match[0] : null;
15
+ }
16
+ function caretRange(version) {
17
+ return `^${version}`;
18
+ }
19
+ function stableDepsObject(deps) {
20
+ const keys = Object.keys(deps).sort((a, b) => a.localeCompare(b));
21
+ const out = {};
22
+ for (const k of keys) out[k] = deps[k];
23
+ return out;
24
+ }
25
+ function writeFileIfChanged(filePath, nextContent) {
26
+ try {
27
+ if ((0, node_fs.readFileSync)(filePath, "utf-8") === nextContent) return false;
28
+ } catch {}
29
+ (0, node_fs.writeFileSync)(filePath, nextContent);
30
+ return true;
31
+ }
32
+ function fingerprintResolved(deps) {
33
+ const stable = stableDepsObject(deps);
34
+ return sha256(JSON.stringify(stable));
35
+ }
36
+ function getSharedUiDeps(bosConfig) {
37
+ return (bosConfig.shared ?? {}).ui ?? {};
38
+ }
39
+ async function syncAndGenerateSharedUi(opts) {
40
+ const bosConfigPath = (0, node_path.join)(opts.configDir, "bos.config.json");
41
+ const packageJsonPath = (0, node_path.join)(opts.configDir, "package.json");
42
+ const generatedPath = (0, node_path.join)(opts.configDir, ".bos", "generated", "shared-ui.json");
43
+ const bosConfig = opts.bosConfig ?? JSON.parse((0, node_fs.readFileSync)(bosConfigPath, "utf-8"));
44
+ let pkgJson = {};
45
+ try {
46
+ pkgJson = JSON.parse((0, node_fs.readFileSync)(packageJsonPath, "utf-8"));
47
+ } catch {}
48
+ const originalBos = JSON.stringify(bosConfig);
49
+ const originalPkg = JSON.stringify(pkgJson);
50
+ const catalog = pkgJson?.workspaces?.catalog ?? {};
51
+ const sharedUi = getSharedUiDeps(bosConfig);
52
+ const mode = opts.hostMode === "local" ? "catalog->bos" : "bos->catalog";
53
+ if (mode === "catalog->bos") for (const [name, cfg] of Object.entries(sharedUi)) {
54
+ const dep = cfg;
55
+ const version = catalog[name] ?? extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);
56
+ if (!version) continue;
57
+ dep.version = version;
58
+ dep.requiredVersion = caretRange(version);
59
+ dep.shareScope = dep.shareScope ?? "default";
60
+ }
61
+ else {
62
+ for (const [name, cfg] of Object.entries(sharedUi)) {
63
+ const dep = cfg;
64
+ const version = extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);
65
+ if (!version) continue;
66
+ dep.version = version;
67
+ dep.requiredVersion = caretRange(version);
68
+ dep.shareScope = dep.shareScope ?? "default";
69
+ if (catalog[name] !== version) catalog[name] = version;
70
+ }
71
+ if (!pkgJson.workspaces) pkgJson.workspaces = {
72
+ packages: [],
73
+ catalog: {}
74
+ };
75
+ pkgJson.workspaces.catalog = catalog;
76
+ }
77
+ const nextBos = JSON.stringify(bosConfig);
78
+ const nextPkg = JSON.stringify(pkgJson);
79
+ const bosConfigChanged = nextBos !== originalBos;
80
+ const catalogChanged = nextPkg !== originalPkg;
81
+ if (bosConfigChanged) writeFileIfChanged(bosConfigPath, `${JSON.stringify(bosConfig, null, 2)}\n`);
82
+ if (catalogChanged) writeFileIfChanged(packageJsonPath, `${JSON.stringify(pkgJson, null, 2)}\n`);
83
+ const resolvedDeps = {};
84
+ for (const [name, cfg] of Object.entries(getSharedUiDeps(bosConfig))) {
85
+ const version = catalog[name] ?? extractSemverExact(cfg.version) ?? extractSemverExact(cfg.requiredVersion);
86
+ if (!version) continue;
87
+ resolvedDeps[name] = {
88
+ name,
89
+ version,
90
+ requiredVersion: caretRange(version),
91
+ shareScope: cfg.shareScope ?? "default",
92
+ singleton: cfg.singleton ?? false,
93
+ eager: cfg.eager ?? false,
94
+ strictVersion: cfg.strictVersion ?? false
95
+ };
96
+ }
97
+ const stableResolvedDeps = stableDepsObject(resolvedDeps);
98
+ const resolved = {
99
+ deps: stableResolvedDeps,
100
+ fingerprintSha256: fingerprintResolved(stableResolvedDeps)
101
+ };
102
+ const nextGenerated = {
103
+ schemaVersion: 1,
104
+ kind: "everything-dev/shared-ui",
105
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
106
+ ui: {
107
+ deps: stableResolvedDeps,
108
+ fingerprintSha256: resolved.fingerprintSha256
109
+ },
110
+ inputs: {
111
+ mode,
112
+ hostMode: opts.hostMode
113
+ }
114
+ };
115
+ let prevFingerprint = null;
116
+ try {
117
+ prevFingerprint = JSON.parse((0, node_fs.readFileSync)(generatedPath, "utf-8"))?.ui?.fingerprintSha256 ?? null;
118
+ } catch {}
119
+ (0, node_fs.mkdirSync)((0, node_path.dirname)(generatedPath), { recursive: true });
120
+ writeFileIfChanged(generatedPath, `${JSON.stringify(nextGenerated, null, 2)}\n`);
121
+ const generatedChanged = prevFingerprint !== nextGenerated.ui.fingerprintSha256;
122
+ return {
123
+ mode,
124
+ hostMode: opts.hostMode,
125
+ bosConfigChanged,
126
+ catalogChanged,
127
+ generatedChanged,
128
+ resolved
129
+ };
130
+ }
131
+ function loadGeneratedSharedUi(configDir) {
132
+ const generatedPath = (0, node_path.join)(configDir, ".bos", "generated", "shared-ui.json");
133
+ try {
134
+ return JSON.parse((0, node_fs.readFileSync)(generatedPath, "utf-8"))?.ui ?? null;
135
+ } catch {
136
+ return null;
137
+ }
138
+ }
139
+
140
+ //#endregion
141
+ exports.loadGeneratedSharedUi = loadGeneratedSharedUi;
142
+ exports.syncAndGenerateSharedUi = syncAndGenerateSharedUi;
143
+ //# sourceMappingURL=shared.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.cjs","names":[],"sources":["../src/shared.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { BosConfig, SharedDepConfig } from \"./types\";\n\nexport interface SharedUiResolvedDep {\n name: string;\n version: string;\n requiredVersion: string;\n shareScope: string;\n singleton: boolean;\n eager: boolean;\n strictVersion: boolean;\n}\n\nexport interface SharedUiResolved {\n deps: Record<string, SharedUiResolvedDep>;\n fingerprintSha256: string;\n}\n\nexport interface SharedSyncResult {\n mode: \"catalog->bos\" | \"bos->catalog\";\n hostMode: \"local\" | \"remote\";\n bosConfigChanged: boolean;\n catalogChanged: boolean;\n generatedChanged: boolean;\n resolved: SharedUiResolved;\n}\n\nfunction sha256(input: string): string {\n return createHash(\"sha256\").update(input).digest(\"hex\");\n}\n\nfunction extractSemverExact(input: unknown): string | null {\n if (typeof input !== \"string\") return null;\n const match = input.match(/\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?/);\n return match ? match[0] : null;\n}\n\nfunction caretRange(version: string): string {\n return `^${version}`;\n}\n\nfunction stableDepsObject(\n deps: Record<string, SharedUiResolvedDep>,\n): Record<string, SharedUiResolvedDep> {\n const keys = Object.keys(deps).sort((a, b) => a.localeCompare(b));\n const out: Record<string, SharedUiResolvedDep> = {};\n for (const k of keys) out[k] = deps[k]!;\n return out;\n}\n\nfunction writeFileIfChanged(filePath: string, nextContent: string): boolean {\n try {\n const current = readFileSync(filePath, \"utf-8\");\n if (current === nextContent) return false;\n } catch {\n // ignore\n }\n\n writeFileSync(filePath, nextContent);\n return true;\n}\n\nfunction fingerprintResolved(deps: Record<string, SharedUiResolvedDep>): string {\n const stable = stableDepsObject(deps);\n return sha256(JSON.stringify(stable));\n}\n\nfunction getSharedUiDeps(bosConfig: BosConfig): Record<string, SharedDepConfig> {\n const shared = bosConfig.shared ?? {};\n const ui = shared.ui ?? {};\n return ui;\n}\n\nexport async function syncAndGenerateSharedUi(opts: {\n configDir: string;\n hostMode: \"local\" | \"remote\";\n bosConfig?: BosConfig;\n}): Promise<SharedSyncResult> {\n const bosConfigPath = join(opts.configDir, \"bos.config.json\");\n const packageJsonPath = join(opts.configDir, \"package.json\");\n const generatedPath = join(opts.configDir, \".bos\", \"generated\", \"shared-ui.json\");\n\n const bosConfig: BosConfig = opts.bosConfig ?? JSON.parse(readFileSync(bosConfigPath, \"utf-8\"));\n let pkgJson: any = {};\n try {\n pkgJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\"));\n } catch {\n // package.json might not exist\n }\n\n const originalBos = JSON.stringify(bosConfig);\n const originalPkg = JSON.stringify(pkgJson);\n\n const catalog = pkgJson?.workspaces?.catalog ?? {};\n const sharedUi = getSharedUiDeps(bosConfig);\n\n const mode = opts.hostMode === \"local\" ? \"catalog->bos\" : \"bos->catalog\";\n\n if (mode === \"catalog->bos\") {\n for (const [name, cfg] of Object.entries(sharedUi)) {\n const dep = cfg as SharedDepConfig;\n const version =\n catalog[name] ?? extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);\n if (!version) continue;\n dep.version = version;\n dep.requiredVersion = caretRange(version);\n dep.shareScope = dep.shareScope ?? \"default\";\n }\n } else {\n for (const [name, cfg] of Object.entries(sharedUi)) {\n const dep = cfg as SharedDepConfig;\n const version = extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);\n if (!version) continue;\n dep.version = version;\n dep.requiredVersion = caretRange(version);\n dep.shareScope = dep.shareScope ?? \"default\";\n if (catalog[name] !== version) {\n catalog[name] = version;\n }\n }\n if (!pkgJson.workspaces) pkgJson.workspaces = { packages: [], catalog: {} };\n pkgJson.workspaces.catalog = catalog;\n }\n\n const nextBos = JSON.stringify(bosConfig);\n const nextPkg = JSON.stringify(pkgJson);\n const bosConfigChanged = nextBos !== originalBos;\n const catalogChanged = nextPkg !== originalPkg;\n\n if (bosConfigChanged) {\n writeFileIfChanged(bosConfigPath, `${JSON.stringify(bosConfig, null, 2)}\\n`);\n }\n if (catalogChanged) {\n writeFileIfChanged(packageJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n }\n\n const resolvedDeps: Record<string, SharedUiResolvedDep> = {};\n for (const [name, cfg] of Object.entries(getSharedUiDeps(bosConfig))) {\n const version =\n catalog[name] ?? extractSemverExact(cfg.version) ?? extractSemverExact(cfg.requiredVersion);\n if (!version) continue;\n resolvedDeps[name] = {\n name,\n version,\n requiredVersion: caretRange(version),\n shareScope: cfg.shareScope ?? \"default\",\n singleton: cfg.singleton ?? false,\n eager: cfg.eager ?? false,\n strictVersion: cfg.strictVersion ?? false,\n };\n }\n\n const stableResolvedDeps = stableDepsObject(resolvedDeps);\n const resolved: SharedUiResolved = {\n deps: stableResolvedDeps,\n fingerprintSha256: fingerprintResolved(stableResolvedDeps),\n };\n\n const nextGenerated = {\n schemaVersion: 1,\n kind: \"everything-dev/shared-ui\",\n generatedAt: new Date().toISOString(),\n ui: {\n deps: stableResolvedDeps,\n fingerprintSha256: resolved.fingerprintSha256,\n },\n inputs: {\n mode,\n hostMode: opts.hostMode,\n },\n };\n\n let prevFingerprint: string | null = null;\n try {\n const prev = JSON.parse(readFileSync(generatedPath, \"utf-8\"));\n prevFingerprint = prev?.ui?.fingerprintSha256 ?? null;\n } catch {\n // ignore\n }\n\n mkdirSync(dirname(generatedPath), { recursive: true });\n writeFileIfChanged(generatedPath, `${JSON.stringify(nextGenerated, null, 2)}\\n`);\n\n const generatedChanged = prevFingerprint !== nextGenerated.ui.fingerprintSha256;\n\n return {\n mode,\n hostMode: opts.hostMode,\n bosConfigChanged,\n catalogChanged,\n generatedChanged,\n resolved,\n };\n}\n\nexport function loadGeneratedSharedUi(configDir: string): SharedUiResolved | null {\n const generatedPath = join(configDir, \".bos\", \"generated\", \"shared-ui.json\");\n try {\n const content = JSON.parse(readFileSync(generatedPath, \"utf-8\"));\n return content?.ui ?? null;\n } catch {\n return null;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { BosConfig } from "./types.cjs";
2
+
3
+ //#region src/shared.d.ts
4
+ interface SharedUiResolvedDep {
5
+ name: string;
6
+ version: string;
7
+ requiredVersion: string;
8
+ shareScope: string;
9
+ singleton: boolean;
10
+ eager: boolean;
11
+ strictVersion: boolean;
12
+ }
13
+ interface SharedUiResolved {
14
+ deps: Record<string, SharedUiResolvedDep>;
15
+ fingerprintSha256: string;
16
+ }
17
+ interface SharedSyncResult {
18
+ mode: "catalog->bos" | "bos->catalog";
19
+ hostMode: "local" | "remote";
20
+ bosConfigChanged: boolean;
21
+ catalogChanged: boolean;
22
+ generatedChanged: boolean;
23
+ resolved: SharedUiResolved;
24
+ }
25
+ declare function syncAndGenerateSharedUi(opts: {
26
+ configDir: string;
27
+ hostMode: "local" | "remote";
28
+ bosConfig?: BosConfig;
29
+ }): Promise<SharedSyncResult>;
30
+ declare function loadGeneratedSharedUi(configDir: string): SharedUiResolved | null;
31
+ //#endregion
32
+ export { SharedSyncResult, SharedUiResolved, SharedUiResolvedDep, loadGeneratedSharedUi, syncAndGenerateSharedUi };
33
+ //# sourceMappingURL=shared.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.cts","names":[],"sources":["../src/shared.ts"],"mappings":";;;UAKiB,mBAAA;EACf,IAAA;EACA,OAAA;EACA,eAAA;EACA,UAAA;EACA,SAAA;EACA,KAAA;EACA,aAAA;AAAA;AAAA,UAGe,gBAAA;EACf,IAAA,EAAM,MAAA,SAAe,mBAAA;EACrB,iBAAA;AAAA;AAAA,UAGe,gBAAA;EACf,IAAA;EACA,QAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;EACA,QAAA,EAAU,gBAAA;AAAA;AAAA,iBAiDU,uBAAA,CAAwB,IAAA;EAC5C,SAAA;EACA,QAAA;EACA,SAAA,GAAY,SAAA;AAAA,IACV,OAAA,CAAQ,gBAAA;AAAA,iBAsHI,qBAAA,CAAsB,SAAA,WAAoB,gBAAA"}
@@ -0,0 +1,33 @@
1
+ import { BosConfig } from "./types.mjs";
2
+
3
+ //#region src/shared.d.ts
4
+ interface SharedUiResolvedDep {
5
+ name: string;
6
+ version: string;
7
+ requiredVersion: string;
8
+ shareScope: string;
9
+ singleton: boolean;
10
+ eager: boolean;
11
+ strictVersion: boolean;
12
+ }
13
+ interface SharedUiResolved {
14
+ deps: Record<string, SharedUiResolvedDep>;
15
+ fingerprintSha256: string;
16
+ }
17
+ interface SharedSyncResult {
18
+ mode: "catalog->bos" | "bos->catalog";
19
+ hostMode: "local" | "remote";
20
+ bosConfigChanged: boolean;
21
+ catalogChanged: boolean;
22
+ generatedChanged: boolean;
23
+ resolved: SharedUiResolved;
24
+ }
25
+ declare function syncAndGenerateSharedUi(opts: {
26
+ configDir: string;
27
+ hostMode: "local" | "remote";
28
+ bosConfig?: BosConfig;
29
+ }): Promise<SharedSyncResult>;
30
+ declare function loadGeneratedSharedUi(configDir: string): SharedUiResolved | null;
31
+ //#endregion
32
+ export { SharedSyncResult, SharedUiResolved, SharedUiResolvedDep, loadGeneratedSharedUi, syncAndGenerateSharedUi };
33
+ //# sourceMappingURL=shared.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.mts","names":[],"sources":["../src/shared.ts"],"mappings":";;;UAKiB,mBAAA;EACf,IAAA;EACA,OAAA;EACA,eAAA;EACA,UAAA;EACA,SAAA;EACA,KAAA;EACA,aAAA;AAAA;AAAA,UAGe,gBAAA;EACf,IAAA,EAAM,MAAA,SAAe,mBAAA;EACrB,iBAAA;AAAA;AAAA,UAGe,gBAAA;EACf,IAAA;EACA,QAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;EACA,QAAA,EAAU,gBAAA;AAAA;AAAA,iBAiDU,uBAAA,CAAwB,IAAA;EAC5C,SAAA;EACA,QAAA;EACA,SAAA,GAAY,SAAA;AAAA,IACV,OAAA,CAAQ,gBAAA;AAAA,iBAsHI,qBAAA,CAAsB,SAAA,WAAoB,gBAAA"}
@@ -0,0 +1,140 @@
1
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { createHash } from "node:crypto";
4
+
5
+ //#region src/shared.ts
6
+ function sha256(input) {
7
+ return createHash("sha256").update(input).digest("hex");
8
+ }
9
+ function extractSemverExact(input) {
10
+ if (typeof input !== "string") return null;
11
+ const match = input.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/);
12
+ return match ? match[0] : null;
13
+ }
14
+ function caretRange(version) {
15
+ return `^${version}`;
16
+ }
17
+ function stableDepsObject(deps) {
18
+ const keys = Object.keys(deps).sort((a, b) => a.localeCompare(b));
19
+ const out = {};
20
+ for (const k of keys) out[k] = deps[k];
21
+ return out;
22
+ }
23
+ function writeFileIfChanged(filePath, nextContent) {
24
+ try {
25
+ if (readFileSync(filePath, "utf-8") === nextContent) return false;
26
+ } catch {}
27
+ writeFileSync(filePath, nextContent);
28
+ return true;
29
+ }
30
+ function fingerprintResolved(deps) {
31
+ const stable = stableDepsObject(deps);
32
+ return sha256(JSON.stringify(stable));
33
+ }
34
+ function getSharedUiDeps(bosConfig) {
35
+ return (bosConfig.shared ?? {}).ui ?? {};
36
+ }
37
+ async function syncAndGenerateSharedUi(opts) {
38
+ const bosConfigPath = join(opts.configDir, "bos.config.json");
39
+ const packageJsonPath = join(opts.configDir, "package.json");
40
+ const generatedPath = join(opts.configDir, ".bos", "generated", "shared-ui.json");
41
+ const bosConfig = opts.bosConfig ?? JSON.parse(readFileSync(bosConfigPath, "utf-8"));
42
+ let pkgJson = {};
43
+ try {
44
+ pkgJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
45
+ } catch {}
46
+ const originalBos = JSON.stringify(bosConfig);
47
+ const originalPkg = JSON.stringify(pkgJson);
48
+ const catalog = pkgJson?.workspaces?.catalog ?? {};
49
+ const sharedUi = getSharedUiDeps(bosConfig);
50
+ const mode = opts.hostMode === "local" ? "catalog->bos" : "bos->catalog";
51
+ if (mode === "catalog->bos") for (const [name, cfg] of Object.entries(sharedUi)) {
52
+ const dep = cfg;
53
+ const version = catalog[name] ?? extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);
54
+ if (!version) continue;
55
+ dep.version = version;
56
+ dep.requiredVersion = caretRange(version);
57
+ dep.shareScope = dep.shareScope ?? "default";
58
+ }
59
+ else {
60
+ for (const [name, cfg] of Object.entries(sharedUi)) {
61
+ const dep = cfg;
62
+ const version = extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);
63
+ if (!version) continue;
64
+ dep.version = version;
65
+ dep.requiredVersion = caretRange(version);
66
+ dep.shareScope = dep.shareScope ?? "default";
67
+ if (catalog[name] !== version) catalog[name] = version;
68
+ }
69
+ if (!pkgJson.workspaces) pkgJson.workspaces = {
70
+ packages: [],
71
+ catalog: {}
72
+ };
73
+ pkgJson.workspaces.catalog = catalog;
74
+ }
75
+ const nextBos = JSON.stringify(bosConfig);
76
+ const nextPkg = JSON.stringify(pkgJson);
77
+ const bosConfigChanged = nextBos !== originalBos;
78
+ const catalogChanged = nextPkg !== originalPkg;
79
+ if (bosConfigChanged) writeFileIfChanged(bosConfigPath, `${JSON.stringify(bosConfig, null, 2)}\n`);
80
+ if (catalogChanged) writeFileIfChanged(packageJsonPath, `${JSON.stringify(pkgJson, null, 2)}\n`);
81
+ const resolvedDeps = {};
82
+ for (const [name, cfg] of Object.entries(getSharedUiDeps(bosConfig))) {
83
+ const version = catalog[name] ?? extractSemverExact(cfg.version) ?? extractSemverExact(cfg.requiredVersion);
84
+ if (!version) continue;
85
+ resolvedDeps[name] = {
86
+ name,
87
+ version,
88
+ requiredVersion: caretRange(version),
89
+ shareScope: cfg.shareScope ?? "default",
90
+ singleton: cfg.singleton ?? false,
91
+ eager: cfg.eager ?? false,
92
+ strictVersion: cfg.strictVersion ?? false
93
+ };
94
+ }
95
+ const stableResolvedDeps = stableDepsObject(resolvedDeps);
96
+ const resolved = {
97
+ deps: stableResolvedDeps,
98
+ fingerprintSha256: fingerprintResolved(stableResolvedDeps)
99
+ };
100
+ const nextGenerated = {
101
+ schemaVersion: 1,
102
+ kind: "everything-dev/shared-ui",
103
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
104
+ ui: {
105
+ deps: stableResolvedDeps,
106
+ fingerprintSha256: resolved.fingerprintSha256
107
+ },
108
+ inputs: {
109
+ mode,
110
+ hostMode: opts.hostMode
111
+ }
112
+ };
113
+ let prevFingerprint = null;
114
+ try {
115
+ prevFingerprint = JSON.parse(readFileSync(generatedPath, "utf-8"))?.ui?.fingerprintSha256 ?? null;
116
+ } catch {}
117
+ mkdirSync(dirname(generatedPath), { recursive: true });
118
+ writeFileIfChanged(generatedPath, `${JSON.stringify(nextGenerated, null, 2)}\n`);
119
+ const generatedChanged = prevFingerprint !== nextGenerated.ui.fingerprintSha256;
120
+ return {
121
+ mode,
122
+ hostMode: opts.hostMode,
123
+ bosConfigChanged,
124
+ catalogChanged,
125
+ generatedChanged,
126
+ resolved
127
+ };
128
+ }
129
+ function loadGeneratedSharedUi(configDir) {
130
+ const generatedPath = join(configDir, ".bos", "generated", "shared-ui.json");
131
+ try {
132
+ return JSON.parse(readFileSync(generatedPath, "utf-8"))?.ui ?? null;
133
+ } catch {
134
+ return null;
135
+ }
136
+ }
137
+
138
+ //#endregion
139
+ export { loadGeneratedSharedUi, syncAndGenerateSharedUi };
140
+ //# sourceMappingURL=shared.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.mjs","names":[],"sources":["../src/shared.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { BosConfig, SharedDepConfig } from \"./types\";\n\nexport interface SharedUiResolvedDep {\n name: string;\n version: string;\n requiredVersion: string;\n shareScope: string;\n singleton: boolean;\n eager: boolean;\n strictVersion: boolean;\n}\n\nexport interface SharedUiResolved {\n deps: Record<string, SharedUiResolvedDep>;\n fingerprintSha256: string;\n}\n\nexport interface SharedSyncResult {\n mode: \"catalog->bos\" | \"bos->catalog\";\n hostMode: \"local\" | \"remote\";\n bosConfigChanged: boolean;\n catalogChanged: boolean;\n generatedChanged: boolean;\n resolved: SharedUiResolved;\n}\n\nfunction sha256(input: string): string {\n return createHash(\"sha256\").update(input).digest(\"hex\");\n}\n\nfunction extractSemverExact(input: unknown): string | null {\n if (typeof input !== \"string\") return null;\n const match = input.match(/\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?/);\n return match ? match[0] : null;\n}\n\nfunction caretRange(version: string): string {\n return `^${version}`;\n}\n\nfunction stableDepsObject(\n deps: Record<string, SharedUiResolvedDep>,\n): Record<string, SharedUiResolvedDep> {\n const keys = Object.keys(deps).sort((a, b) => a.localeCompare(b));\n const out: Record<string, SharedUiResolvedDep> = {};\n for (const k of keys) out[k] = deps[k]!;\n return out;\n}\n\nfunction writeFileIfChanged(filePath: string, nextContent: string): boolean {\n try {\n const current = readFileSync(filePath, \"utf-8\");\n if (current === nextContent) return false;\n } catch {\n // ignore\n }\n\n writeFileSync(filePath, nextContent);\n return true;\n}\n\nfunction fingerprintResolved(deps: Record<string, SharedUiResolvedDep>): string {\n const stable = stableDepsObject(deps);\n return sha256(JSON.stringify(stable));\n}\n\nfunction getSharedUiDeps(bosConfig: BosConfig): Record<string, SharedDepConfig> {\n const shared = bosConfig.shared ?? {};\n const ui = shared.ui ?? {};\n return ui;\n}\n\nexport async function syncAndGenerateSharedUi(opts: {\n configDir: string;\n hostMode: \"local\" | \"remote\";\n bosConfig?: BosConfig;\n}): Promise<SharedSyncResult> {\n const bosConfigPath = join(opts.configDir, \"bos.config.json\");\n const packageJsonPath = join(opts.configDir, \"package.json\");\n const generatedPath = join(opts.configDir, \".bos\", \"generated\", \"shared-ui.json\");\n\n const bosConfig: BosConfig = opts.bosConfig ?? JSON.parse(readFileSync(bosConfigPath, \"utf-8\"));\n let pkgJson: any = {};\n try {\n pkgJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\"));\n } catch {\n // package.json might not exist\n }\n\n const originalBos = JSON.stringify(bosConfig);\n const originalPkg = JSON.stringify(pkgJson);\n\n const catalog = pkgJson?.workspaces?.catalog ?? {};\n const sharedUi = getSharedUiDeps(bosConfig);\n\n const mode = opts.hostMode === \"local\" ? \"catalog->bos\" : \"bos->catalog\";\n\n if (mode === \"catalog->bos\") {\n for (const [name, cfg] of Object.entries(sharedUi)) {\n const dep = cfg as SharedDepConfig;\n const version =\n catalog[name] ?? extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);\n if (!version) continue;\n dep.version = version;\n dep.requiredVersion = caretRange(version);\n dep.shareScope = dep.shareScope ?? \"default\";\n }\n } else {\n for (const [name, cfg] of Object.entries(sharedUi)) {\n const dep = cfg as SharedDepConfig;\n const version = extractSemverExact(dep.version) ?? extractSemverExact(dep.requiredVersion);\n if (!version) continue;\n dep.version = version;\n dep.requiredVersion = caretRange(version);\n dep.shareScope = dep.shareScope ?? \"default\";\n if (catalog[name] !== version) {\n catalog[name] = version;\n }\n }\n if (!pkgJson.workspaces) pkgJson.workspaces = { packages: [], catalog: {} };\n pkgJson.workspaces.catalog = catalog;\n }\n\n const nextBos = JSON.stringify(bosConfig);\n const nextPkg = JSON.stringify(pkgJson);\n const bosConfigChanged = nextBos !== originalBos;\n const catalogChanged = nextPkg !== originalPkg;\n\n if (bosConfigChanged) {\n writeFileIfChanged(bosConfigPath, `${JSON.stringify(bosConfig, null, 2)}\\n`);\n }\n if (catalogChanged) {\n writeFileIfChanged(packageJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n }\n\n const resolvedDeps: Record<string, SharedUiResolvedDep> = {};\n for (const [name, cfg] of Object.entries(getSharedUiDeps(bosConfig))) {\n const version =\n catalog[name] ?? extractSemverExact(cfg.version) ?? extractSemverExact(cfg.requiredVersion);\n if (!version) continue;\n resolvedDeps[name] = {\n name,\n version,\n requiredVersion: caretRange(version),\n shareScope: cfg.shareScope ?? \"default\",\n singleton: cfg.singleton ?? false,\n eager: cfg.eager ?? false,\n strictVersion: cfg.strictVersion ?? false,\n };\n }\n\n const stableResolvedDeps = stableDepsObject(resolvedDeps);\n const resolved: SharedUiResolved = {\n deps: stableResolvedDeps,\n fingerprintSha256: fingerprintResolved(stableResolvedDeps),\n };\n\n const nextGenerated = {\n schemaVersion: 1,\n kind: \"everything-dev/shared-ui\",\n generatedAt: new Date().toISOString(),\n ui: {\n deps: stableResolvedDeps,\n fingerprintSha256: resolved.fingerprintSha256,\n },\n inputs: {\n mode,\n hostMode: opts.hostMode,\n },\n };\n\n let prevFingerprint: string | null = null;\n try {\n const prev = JSON.parse(readFileSync(generatedPath, \"utf-8\"));\n prevFingerprint = prev?.ui?.fingerprintSha256 ?? null;\n } catch {\n // ignore\n }\n\n mkdirSync(dirname(generatedPath), { recursive: true });\n writeFileIfChanged(generatedPath, `${JSON.stringify(nextGenerated, null, 2)}\\n`);\n\n const generatedChanged = prevFingerprint !== nextGenerated.ui.fingerprintSha256;\n\n return {\n mode,\n hostMode: opts.hostMode,\n bosConfigChanged,\n catalogChanged,\n generatedChanged,\n resolved,\n };\n}\n\nexport function loadGeneratedSharedUi(configDir: string): SharedUiResolved | null {\n const generatedPath = join(configDir, \".bos\", \"generated\", \"shared-ui.json\");\n try {\n const content = JSON.parse(readFileSync(generatedPath, \"utf-8\"));\n return content?.ui ?? null;\n } catch {\n return null;\n }\n}\n"],"mappings":"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"}
package/dist/types.cjs ADDED
@@ -0,0 +1,160 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
+ require('./sdk.cjs');
4
+ let every_plugin_zod = require("every-plugin/zod");
5
+
6
+ //#region src/types.ts
7
+ const SourceModeSchema = every_plugin_zod.z.enum(["local", "remote"]);
8
+ const SharedConfigSchema = every_plugin_zod.z.object({
9
+ version: every_plugin_zod.z.string(),
10
+ requiredVersion: every_plugin_zod.z.string().optional(),
11
+ singleton: every_plugin_zod.z.boolean().optional(),
12
+ eager: every_plugin_zod.z.boolean().optional(),
13
+ strictVersion: every_plugin_zod.z.boolean().optional(),
14
+ shareScope: every_plugin_zod.z.string().optional()
15
+ });
16
+ const SharedDepConfigSchema = SharedConfigSchema;
17
+ const FederationEntrySchema = every_plugin_zod.z.object({
18
+ name: every_plugin_zod.z.string(),
19
+ url: every_plugin_zod.z.string(),
20
+ entry: every_plugin_zod.z.string(),
21
+ source: SourceModeSchema,
22
+ integrity: every_plugin_zod.z.string().optional()
23
+ });
24
+ const ApiPluginConfigSchema = every_plugin_zod.z.object({
25
+ name: every_plugin_zod.z.string(),
26
+ development: every_plugin_zod.z.string().optional(),
27
+ production: every_plugin_zod.z.string().optional(),
28
+ productionIntegrity: every_plugin_zod.z.string().optional(),
29
+ proxy: every_plugin_zod.z.string().optional(),
30
+ variables: every_plugin_zod.z.record(every_plugin_zod.z.string(), every_plugin_zod.z.string()).optional(),
31
+ secrets: every_plugin_zod.z.array(every_plugin_zod.z.string()).optional()
32
+ });
33
+ const BosPluginRefSchema = every_plugin_zod.z.object({
34
+ extends: every_plugin_zod.z.string().optional(),
35
+ development: every_plugin_zod.z.string().optional(),
36
+ production: every_plugin_zod.z.string().optional(),
37
+ productionIntegrity: every_plugin_zod.z.string().optional(),
38
+ proxy: every_plugin_zod.z.string().optional(),
39
+ variables: every_plugin_zod.z.record(every_plugin_zod.z.string(), every_plugin_zod.z.string()).optional(),
40
+ secrets: every_plugin_zod.z.array(every_plugin_zod.z.string()).optional()
41
+ });
42
+ const RuntimePluginConfigSchema = every_plugin_zod.z.object({
43
+ name: every_plugin_zod.z.string(),
44
+ url: every_plugin_zod.z.string(),
45
+ entry: every_plugin_zod.z.string(),
46
+ source: SourceModeSchema,
47
+ localPath: every_plugin_zod.z.string().optional(),
48
+ port: every_plugin_zod.z.number().optional(),
49
+ proxy: every_plugin_zod.z.string().optional(),
50
+ variables: every_plugin_zod.z.record(every_plugin_zod.z.string(), every_plugin_zod.z.string()).optional(),
51
+ secrets: every_plugin_zod.z.array(every_plugin_zod.z.string()).optional(),
52
+ integrity: every_plugin_zod.z.string().optional()
53
+ });
54
+ const UiConfigSchema = every_plugin_zod.z.object({
55
+ name: every_plugin_zod.z.string(),
56
+ development: every_plugin_zod.z.string().optional(),
57
+ production: every_plugin_zod.z.string().optional(),
58
+ productionIntegrity: every_plugin_zod.z.string().optional(),
59
+ ssr: every_plugin_zod.z.string().optional(),
60
+ ssrIntegrity: every_plugin_zod.z.string().optional()
61
+ });
62
+ const HostConfigSchema = every_plugin_zod.z.object({
63
+ development: every_plugin_zod.z.string(),
64
+ production: every_plugin_zod.z.string(),
65
+ productionIntegrity: every_plugin_zod.z.string().optional(),
66
+ secrets: every_plugin_zod.z.array(every_plugin_zod.z.string()).optional()
67
+ });
68
+ const ClientRuntimeInfoSchema = every_plugin_zod.z.object({
69
+ accountId: every_plugin_zod.z.string(),
70
+ gatewayId: every_plugin_zod.z.string(),
71
+ runtimeBasePath: every_plugin_zod.z.string(),
72
+ title: every_plugin_zod.z.string().nullable(),
73
+ hostUrl: every_plugin_zod.z.string().nullable()
74
+ });
75
+ const BosStagingSchema = every_plugin_zod.z.object({ domain: every_plugin_zod.z.string() });
76
+ const BosConfigSchema = every_plugin_zod.z.object({
77
+ account: every_plugin_zod.z.string(),
78
+ extends: every_plugin_zod.z.string().optional(),
79
+ domain: every_plugin_zod.z.string().optional(),
80
+ testnet: every_plugin_zod.z.string().optional(),
81
+ staging: BosStagingSchema.optional(),
82
+ repository: every_plugin_zod.z.string().optional(),
83
+ shared: every_plugin_zod.z.record(every_plugin_zod.z.string(), every_plugin_zod.z.record(every_plugin_zod.z.string(), SharedConfigSchema)).optional(),
84
+ plugins: every_plugin_zod.z.record(every_plugin_zod.z.string(), BosPluginRefSchema).optional(),
85
+ app: every_plugin_zod.z.object({
86
+ host: HostConfigSchema,
87
+ ui: UiConfigSchema,
88
+ api: ApiPluginConfigSchema
89
+ })
90
+ });
91
+ const RuntimeConfigSchema = every_plugin_zod.z.object({
92
+ env: every_plugin_zod.z.enum(["development", "production"]),
93
+ account: every_plugin_zod.z.string(),
94
+ domain: every_plugin_zod.z.string().optional(),
95
+ networkId: every_plugin_zod.z.enum(["mainnet", "testnet"]),
96
+ title: every_plugin_zod.z.string().optional(),
97
+ repository: every_plugin_zod.z.string().optional(),
98
+ hostUrl: every_plugin_zod.z.string(),
99
+ shared: every_plugin_zod.z.object({ ui: every_plugin_zod.z.record(every_plugin_zod.z.string(), SharedConfigSchema).optional() }).optional(),
100
+ ui: FederationEntrySchema.extend({
101
+ localPath: every_plugin_zod.z.string().optional(),
102
+ port: every_plugin_zod.z.number().optional(),
103
+ ssrUrl: every_plugin_zod.z.string().optional(),
104
+ ssrIntegrity: every_plugin_zod.z.string().optional()
105
+ }),
106
+ api: FederationEntrySchema.extend({
107
+ localPath: every_plugin_zod.z.string().optional(),
108
+ port: every_plugin_zod.z.number().optional(),
109
+ proxy: every_plugin_zod.z.string().optional(),
110
+ variables: every_plugin_zod.z.record(every_plugin_zod.z.string(), every_plugin_zod.z.string()).optional(),
111
+ secrets: every_plugin_zod.z.array(every_plugin_zod.z.string()).optional()
112
+ }),
113
+ plugins: every_plugin_zod.z.record(every_plugin_zod.z.string(), RuntimePluginConfigSchema).optional()
114
+ });
115
+ const ClientRuntimeConfigSchema = every_plugin_zod.z.object({
116
+ env: every_plugin_zod.z.enum(["development", "production"]),
117
+ account: every_plugin_zod.z.string(),
118
+ networkId: every_plugin_zod.z.enum(["mainnet", "testnet"]),
119
+ hostUrl: every_plugin_zod.z.string().optional(),
120
+ assetsUrl: every_plugin_zod.z.string(),
121
+ apiBase: every_plugin_zod.z.string(),
122
+ rpcBase: every_plugin_zod.z.string(),
123
+ repository: every_plugin_zod.z.string().optional(),
124
+ runtime: ClientRuntimeInfoSchema.optional(),
125
+ ui: every_plugin_zod.z.object({
126
+ name: every_plugin_zod.z.string(),
127
+ url: every_plugin_zod.z.string(),
128
+ entry: every_plugin_zod.z.string(),
129
+ integrity: every_plugin_zod.z.string().optional()
130
+ }).optional(),
131
+ api: every_plugin_zod.z.object({
132
+ name: every_plugin_zod.z.string(),
133
+ url: every_plugin_zod.z.string(),
134
+ entry: every_plugin_zod.z.string(),
135
+ integrity: every_plugin_zod.z.string().optional()
136
+ }).optional(),
137
+ plugins: every_plugin_zod.z.record(every_plugin_zod.z.string(), every_plugin_zod.z.object({
138
+ name: every_plugin_zod.z.string(),
139
+ url: every_plugin_zod.z.string(),
140
+ entry: every_plugin_zod.z.string(),
141
+ integrity: every_plugin_zod.z.string().optional()
142
+ })).optional()
143
+ });
144
+
145
+ //#endregion
146
+ exports.ApiPluginConfigSchema = ApiPluginConfigSchema;
147
+ exports.BosConfigSchema = BosConfigSchema;
148
+ exports.BosPluginRefSchema = BosPluginRefSchema;
149
+ exports.BosStagingSchema = BosStagingSchema;
150
+ exports.ClientRuntimeConfigSchema = ClientRuntimeConfigSchema;
151
+ exports.ClientRuntimeInfoSchema = ClientRuntimeInfoSchema;
152
+ exports.FederationEntrySchema = FederationEntrySchema;
153
+ exports.HostConfigSchema = HostConfigSchema;
154
+ exports.RuntimeConfigSchema = RuntimeConfigSchema;
155
+ exports.RuntimePluginConfigSchema = RuntimePluginConfigSchema;
156
+ exports.SharedConfigSchema = SharedConfigSchema;
157
+ exports.SharedDepConfigSchema = SharedDepConfigSchema;
158
+ exports.SourceModeSchema = SourceModeSchema;
159
+ exports.UiConfigSchema = UiConfigSchema;
160
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","names":["z"],"sources":["../src/types.ts"],"sourcesContent":["import { z } from \"./sdk\";\n\nexport const SourceModeSchema = z.enum([\"local\", \"remote\"]);\nexport type SourceMode = z.infer<typeof SourceModeSchema>;\n\nexport const SharedConfigSchema = z.object({\n version: z.string(),\n requiredVersion: z.string().optional(),\n singleton: z.boolean().optional(),\n eager: z.boolean().optional(),\n strictVersion: z.boolean().optional(),\n shareScope: z.string().optional(),\n});\nexport type SharedConfig = z.infer<typeof SharedConfigSchema>;\nexport type SharedDepConfig = SharedConfig;\nexport const SharedDepConfigSchema = SharedConfigSchema;\n\nexport const FederationEntrySchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n integrity: z.string().optional(),\n});\nexport type FederationEntry = z.infer<typeof FederationEntrySchema>;\n\nexport const ApiPluginConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n productionIntegrity: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n});\nexport type ApiPluginConfig = z.infer<typeof ApiPluginConfigSchema>;\n\nexport const BosPluginRefSchema = z.object({\n extends: z.string().optional(),\n development: z.string().optional(),\n production: z.string().optional(),\n productionIntegrity: z.string().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n});\nexport type BosPluginRef = z.infer<typeof BosPluginRefSchema>;\n\nexport const RuntimePluginConfigSchema = z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n source: SourceModeSchema,\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n integrity: z.string().optional(),\n});\nexport type RuntimePluginConfig = z.infer<typeof RuntimePluginConfigSchema>;\n\nexport const UiConfigSchema = z.object({\n name: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n productionIntegrity: z.string().optional(),\n ssr: z.string().optional(),\n ssrIntegrity: z.string().optional(),\n});\nexport type UiConfig = z.infer<typeof UiConfigSchema>;\n\nexport const HostConfigSchema = z.object({\n development: z.string(),\n production: z.string(),\n productionIntegrity: z.string().optional(),\n secrets: z.array(z.string()).optional(),\n});\nexport type HostConfig = z.infer<typeof HostConfigSchema>;\n\nexport const ClientRuntimeInfoSchema = z.object({\n accountId: z.string(),\n gatewayId: z.string(),\n runtimeBasePath: z.string(),\n title: z.string().nullable(),\n hostUrl: z.string().nullable(),\n});\nexport type ClientRuntimeInfo = z.infer<typeof ClientRuntimeInfoSchema>;\n\nexport const BosStagingSchema = z.object({\n domain: z.string(),\n});\nexport type BosStaging = z.infer<typeof BosStagingSchema>;\n\nexport const BosConfigSchema = z.object({\n account: z.string(),\n extends: z.string().optional(),\n domain: z.string().optional(),\n testnet: z.string().optional(),\n staging: BosStagingSchema.optional(),\n repository: z.string().optional(),\n shared: z.record(z.string(), z.record(z.string(), SharedConfigSchema)).optional(),\n plugins: z.record(z.string(), BosPluginRefSchema).optional(),\n app: z.object({\n host: HostConfigSchema,\n ui: UiConfigSchema,\n api: ApiPluginConfigSchema,\n }),\n});\nexport type BosConfig = z.infer<typeof BosConfigSchema>;\n\nexport const RuntimeConfigSchema = z.object({\n env: z.enum([\"development\", \"production\"]),\n account: z.string(),\n domain: z.string().optional(),\n networkId: z.enum([\"mainnet\", \"testnet\"]),\n title: z.string().optional(),\n repository: z.string().optional(),\n hostUrl: z.string(),\n shared: z\n .object({\n ui: z.record(z.string(), SharedConfigSchema).optional(),\n })\n .optional(),\n ui: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n ssrUrl: z.string().optional(),\n ssrIntegrity: z.string().optional(),\n }),\n api: FederationEntrySchema.extend({\n localPath: z.string().optional(),\n port: z.number().optional(),\n proxy: z.string().optional(),\n variables: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string()).optional(),\n }),\n plugins: z.record(z.string(), RuntimePluginConfigSchema).optional(),\n});\nexport type RuntimeConfig = z.infer<typeof RuntimeConfigSchema>;\n\nexport const ClientRuntimeConfigSchema = z.object({\n env: z.enum([\"development\", \"production\"]),\n account: z.string(),\n networkId: z.enum([\"mainnet\", \"testnet\"]),\n hostUrl: z.string().optional(),\n assetsUrl: z.string(),\n apiBase: z.string(),\n rpcBase: z.string(),\n repository: z.string().optional(),\n runtime: ClientRuntimeInfoSchema.optional(),\n ui: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n })\n .optional(),\n api: z\n .object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n })\n .optional(),\n plugins: z\n .record(\n z.string(),\n z.object({\n name: z.string(),\n url: z.string(),\n entry: z.string(),\n integrity: z.string().optional(),\n }),\n )\n .optional(),\n});\nexport type ClientRuntimeConfig = z.infer<typeof ClientRuntimeConfigSchema>;\n"],"mappings":";;;;;;AAEA,MAAa,mBAAmBA,mBAAE,KAAK,CAAC,SAAS,SAAS,CAAC;AAG3D,MAAa,qBAAqBA,mBAAE,OAAO;CACzC,SAASA,mBAAE,QAAQ;CACnB,iBAAiBA,mBAAE,QAAQ,CAAC,UAAU;CACtC,WAAWA,mBAAE,SAAS,CAAC,UAAU;CACjC,OAAOA,mBAAE,SAAS,CAAC,UAAU;CAC7B,eAAeA,mBAAE,SAAS,CAAC,UAAU;CACrC,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CAClC,CAAC;AAGF,MAAa,wBAAwB;AAErC,MAAa,wBAAwBA,mBAAE,OAAO;CAC5C,MAAMA,mBAAE,QAAQ;CAChB,KAAKA,mBAAE,QAAQ;CACf,OAAOA,mBAAE,QAAQ;CACjB,QAAQ;CACR,WAAWA,mBAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAGF,MAAa,wBAAwBA,mBAAE,OAAO;CAC5C,MAAMA,mBAAE,QAAQ;CAChB,aAAaA,mBAAE,QAAQ,CAAC,UAAU;CAClC,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CACjC,qBAAqBA,mBAAE,QAAQ,CAAC,UAAU;CAC1C,OAAOA,mBAAE,QAAQ,CAAC,UAAU;CAC5B,WAAWA,mBAAE,OAAOA,mBAAE,QAAQ,EAAEA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACtD,SAASA,mBAAE,MAAMA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACxC,CAAC;AAGF,MAAa,qBAAqBA,mBAAE,OAAO;CACzC,SAASA,mBAAE,QAAQ,CAAC,UAAU;CAC9B,aAAaA,mBAAE,QAAQ,CAAC,UAAU;CAClC,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CACjC,qBAAqBA,mBAAE,QAAQ,CAAC,UAAU;CAC1C,OAAOA,mBAAE,QAAQ,CAAC,UAAU;CAC5B,WAAWA,mBAAE,OAAOA,mBAAE,QAAQ,EAAEA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACtD,SAASA,mBAAE,MAAMA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACxC,CAAC;AAGF,MAAa,4BAA4BA,mBAAE,OAAO;CAChD,MAAMA,mBAAE,QAAQ;CAChB,KAAKA,mBAAE,QAAQ;CACf,OAAOA,mBAAE,QAAQ;CACjB,QAAQ;CACR,WAAWA,mBAAE,QAAQ,CAAC,UAAU;CAChC,MAAMA,mBAAE,QAAQ,CAAC,UAAU;CAC3B,OAAOA,mBAAE,QAAQ,CAAC,UAAU;CAC5B,WAAWA,mBAAE,OAAOA,mBAAE,QAAQ,EAAEA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACtD,SAASA,mBAAE,MAAMA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACvC,WAAWA,mBAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAGF,MAAa,iBAAiBA,mBAAE,OAAO;CACrC,MAAMA,mBAAE,QAAQ;CAChB,aAAaA,mBAAE,QAAQ,CAAC,UAAU;CAClC,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CACjC,qBAAqBA,mBAAE,QAAQ,CAAC,UAAU;CAC1C,KAAKA,mBAAE,QAAQ,CAAC,UAAU;CAC1B,cAAcA,mBAAE,QAAQ,CAAC,UAAU;CACpC,CAAC;AAGF,MAAa,mBAAmBA,mBAAE,OAAO;CACvC,aAAaA,mBAAE,QAAQ;CACvB,YAAYA,mBAAE,QAAQ;CACtB,qBAAqBA,mBAAE,QAAQ,CAAC,UAAU;CAC1C,SAASA,mBAAE,MAAMA,mBAAE,QAAQ,CAAC,CAAC,UAAU;CACxC,CAAC;AAGF,MAAa,0BAA0BA,mBAAE,OAAO;CAC9C,WAAWA,mBAAE,QAAQ;CACrB,WAAWA,mBAAE,QAAQ;CACrB,iBAAiBA,mBAAE,QAAQ;CAC3B,OAAOA,mBAAE,QAAQ,CAAC,UAAU;CAC5B,SAASA,mBAAE,QAAQ,CAAC,UAAU;CAC/B,CAAC;AAGF,MAAa,mBAAmBA,mBAAE,OAAO,EACvC,QAAQA,mBAAE,QAAQ,EACnB,CAAC;AAGF,MAAa,kBAAkBA,mBAAE,OAAO;CACtC,SAASA,mBAAE,QAAQ;CACnB,SAASA,mBAAE,QAAQ,CAAC,UAAU;CAC9B,QAAQA,mBAAE,QAAQ,CAAC,UAAU;CAC7B,SAASA,mBAAE,QAAQ,CAAC,UAAU;CAC9B,SAAS,iBAAiB,UAAU;CACpC,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CACjC,QAAQA,mBAAE,OAAOA,mBAAE,QAAQ,EAAEA,mBAAE,OAAOA,mBAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,UAAU;CACjF,SAASA,mBAAE,OAAOA,mBAAE,QAAQ,EAAE,mBAAmB,CAAC,UAAU;CAC5D,KAAKA,mBAAE,OAAO;EACZ,MAAM;EACN,IAAI;EACJ,KAAK;EACN,CAAC;CACH,CAAC;AAGF,MAAa,sBAAsBA,mBAAE,OAAO;CAC1C,KAAKA,mBAAE,KAAK,CAAC,eAAe,aAAa,CAAC;CAC1C,SAASA,mBAAE,QAAQ;CACnB,QAAQA,mBAAE,QAAQ,CAAC,UAAU;CAC7B,WAAWA,mBAAE,KAAK,CAAC,WAAW,UAAU,CAAC;CACzC,OAAOA,mBAAE,QAAQ,CAAC,UAAU;CAC5B,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CACjC,SAASA,mBAAE,QAAQ;CACnB,QAAQA,mBACL,OAAO,EACN,IAAIA,mBAAE,OAAOA,mBAAE,QAAQ,EAAE,mBAAmB,CAAC,UAAU,EACxD,CAAC,CACD,UAAU;CACb,IAAI,sBAAsB,OAAO;EAC/B,WAAWA,mBAAE,QAAQ,CAAC,UAAU;EAChC,MAAMA,mBAAE,QAAQ,CAAC,UAAU;EAC3B,QAAQA,mBAAE,QAAQ,CAAC,UAAU;EAC7B,cAAcA,mBAAE,QAAQ,CAAC,UAAU;EACpC,CAAC;CACF,KAAK,sBAAsB,OAAO;EAChC,WAAWA,mBAAE,QAAQ,CAAC,UAAU;EAChC,MAAMA,mBAAE,QAAQ,CAAC,UAAU;EAC3B,OAAOA,mBAAE,QAAQ,CAAC,UAAU;EAC5B,WAAWA,mBAAE,OAAOA,mBAAE,QAAQ,EAAEA,mBAAE,QAAQ,CAAC,CAAC,UAAU;EACtD,SAASA,mBAAE,MAAMA,mBAAE,QAAQ,CAAC,CAAC,UAAU;EACxC,CAAC;CACF,SAASA,mBAAE,OAAOA,mBAAE,QAAQ,EAAE,0BAA0B,CAAC,UAAU;CACpE,CAAC;AAGF,MAAa,4BAA4BA,mBAAE,OAAO;CAChD,KAAKA,mBAAE,KAAK,CAAC,eAAe,aAAa,CAAC;CAC1C,SAASA,mBAAE,QAAQ;CACnB,WAAWA,mBAAE,KAAK,CAAC,WAAW,UAAU,CAAC;CACzC,SAASA,mBAAE,QAAQ,CAAC,UAAU;CAC9B,WAAWA,mBAAE,QAAQ;CACrB,SAASA,mBAAE,QAAQ;CACnB,SAASA,mBAAE,QAAQ;CACnB,YAAYA,mBAAE,QAAQ,CAAC,UAAU;CACjC,SAAS,wBAAwB,UAAU;CAC3C,IAAIA,mBACD,OAAO;EACN,MAAMA,mBAAE,QAAQ;EAChB,KAAKA,mBAAE,QAAQ;EACf,OAAOA,mBAAE,QAAQ;EACjB,WAAWA,mBAAE,QAAQ,CAAC,UAAU;EACjC,CAAC,CACD,UAAU;CACb,KAAKA,mBACF,OAAO;EACN,MAAMA,mBAAE,QAAQ;EAChB,KAAKA,mBAAE,QAAQ;EACf,OAAOA,mBAAE,QAAQ;EACjB,WAAWA,mBAAE,QAAQ,CAAC,UAAU;EACjC,CAAC,CACD,UAAU;CACb,SAASA,mBACN,OACCA,mBAAE,QAAQ,EACVA,mBAAE,OAAO;EACP,MAAMA,mBAAE,QAAQ;EAChB,KAAKA,mBAAE,QAAQ;EACf,OAAOA,mBAAE,QAAQ;EACjB,WAAWA,mBAAE,QAAQ,CAAC,UAAU;EACjC,CAAC,CACH,CACA,UAAU;CACd,CAAC"}