@portel/photon 1.4.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/README.md +326 -1177
  2. package/dist/auto-ui/beam.d.ts +14 -0
  3. package/dist/auto-ui/beam.d.ts.map +1 -0
  4. package/dist/auto-ui/beam.js +3057 -0
  5. package/dist/auto-ui/beam.js.map +1 -0
  6. package/dist/auto-ui/bridge/index.d.ts +37 -0
  7. package/dist/auto-ui/bridge/index.d.ts.map +1 -0
  8. package/dist/auto-ui/bridge/index.js +555 -0
  9. package/dist/auto-ui/bridge/index.js.map +1 -0
  10. package/dist/auto-ui/bridge/openai-shim.d.ts +20 -0
  11. package/dist/auto-ui/bridge/openai-shim.d.ts.map +1 -0
  12. package/dist/auto-ui/bridge/openai-shim.js +231 -0
  13. package/dist/auto-ui/bridge/openai-shim.js.map +1 -0
  14. package/dist/auto-ui/bridge/photon-app.d.ts +162 -0
  15. package/dist/auto-ui/bridge/photon-app.d.ts.map +1 -0
  16. package/dist/auto-ui/bridge/photon-app.js +460 -0
  17. package/dist/auto-ui/bridge/photon-app.js.map +1 -0
  18. package/dist/auto-ui/bridge/types.d.ts +128 -0
  19. package/dist/auto-ui/bridge/types.d.ts.map +1 -0
  20. package/dist/auto-ui/bridge/types.js +7 -0
  21. package/dist/auto-ui/bridge/types.js.map +1 -0
  22. package/dist/auto-ui/components/card.d.ts +13 -0
  23. package/dist/auto-ui/components/card.d.ts.map +1 -0
  24. package/dist/auto-ui/components/card.js +64 -0
  25. package/dist/auto-ui/components/card.js.map +1 -0
  26. package/dist/auto-ui/components/form.d.ts +15 -0
  27. package/dist/auto-ui/components/form.d.ts.map +1 -0
  28. package/dist/auto-ui/components/form.js +72 -0
  29. package/dist/auto-ui/components/form.js.map +1 -0
  30. package/dist/auto-ui/components/list.d.ts +13 -0
  31. package/dist/auto-ui/components/list.d.ts.map +1 -0
  32. package/dist/auto-ui/components/list.js +58 -0
  33. package/dist/auto-ui/components/list.js.map +1 -0
  34. package/dist/auto-ui/components/progress.d.ts +18 -0
  35. package/dist/auto-ui/components/progress.d.ts.map +1 -0
  36. package/dist/auto-ui/components/progress.js +125 -0
  37. package/dist/auto-ui/components/progress.js.map +1 -0
  38. package/dist/auto-ui/components/table.d.ts +13 -0
  39. package/dist/auto-ui/components/table.d.ts.map +1 -0
  40. package/dist/auto-ui/components/table.js +82 -0
  41. package/dist/auto-ui/components/table.js.map +1 -0
  42. package/dist/auto-ui/components/tree.d.ts +13 -0
  43. package/dist/auto-ui/components/tree.d.ts.map +1 -0
  44. package/dist/auto-ui/components/tree.js +61 -0
  45. package/dist/auto-ui/components/tree.js.map +1 -0
  46. package/dist/auto-ui/daemon-tools.d.ts +45 -0
  47. package/dist/auto-ui/daemon-tools.d.ts.map +1 -0
  48. package/dist/auto-ui/daemon-tools.js +580 -0
  49. package/dist/auto-ui/daemon-tools.js.map +1 -0
  50. package/dist/auto-ui/design-system/index.d.ts +21 -0
  51. package/dist/auto-ui/design-system/index.d.ts.map +1 -0
  52. package/dist/auto-ui/design-system/index.js +27 -0
  53. package/dist/auto-ui/design-system/index.js.map +1 -0
  54. package/dist/auto-ui/design-system/tokens.d.ts +9 -0
  55. package/dist/auto-ui/design-system/tokens.d.ts.map +1 -0
  56. package/dist/auto-ui/design-system/tokens.js +27 -0
  57. package/dist/auto-ui/design-system/tokens.js.map +1 -0
  58. package/dist/auto-ui/design-system/transaction-ui.d.ts +70 -0
  59. package/dist/auto-ui/design-system/transaction-ui.d.ts.map +1 -0
  60. package/dist/auto-ui/design-system/transaction-ui.js +982 -0
  61. package/dist/auto-ui/design-system/transaction-ui.js.map +1 -0
  62. package/dist/auto-ui/frontend/index.html +84 -0
  63. package/dist/auto-ui/index.d.ts +23 -0
  64. package/dist/auto-ui/index.d.ts.map +1 -0
  65. package/dist/auto-ui/index.js +28 -0
  66. package/dist/auto-ui/index.js.map +1 -0
  67. package/dist/auto-ui/openapi-generator.d.ts +71 -0
  68. package/dist/auto-ui/openapi-generator.d.ts.map +1 -0
  69. package/dist/auto-ui/openapi-generator.js +223 -0
  70. package/dist/auto-ui/openapi-generator.js.map +1 -0
  71. package/dist/auto-ui/photon-bridge.d.ts +159 -0
  72. package/dist/auto-ui/photon-bridge.d.ts.map +1 -0
  73. package/dist/auto-ui/photon-bridge.js +262 -0
  74. package/dist/auto-ui/photon-bridge.js.map +1 -0
  75. package/dist/auto-ui/photon-host.d.ts +113 -0
  76. package/dist/auto-ui/photon-host.d.ts.map +1 -0
  77. package/dist/auto-ui/photon-host.js +284 -0
  78. package/dist/auto-ui/photon-host.js.map +1 -0
  79. package/dist/auto-ui/platform-compat.d.ts +71 -0
  80. package/dist/auto-ui/platform-compat.d.ts.map +1 -0
  81. package/dist/auto-ui/platform-compat.js +628 -0
  82. package/dist/auto-ui/platform-compat.js.map +1 -0
  83. package/dist/auto-ui/playground-html.d.ts +15 -0
  84. package/dist/auto-ui/playground-html.d.ts.map +1 -0
  85. package/dist/auto-ui/playground-html.js +1113 -0
  86. package/dist/auto-ui/playground-html.js.map +1 -0
  87. package/dist/auto-ui/playground-server.d.ts +7 -0
  88. package/dist/auto-ui/playground-server.d.ts.map +1 -0
  89. package/dist/auto-ui/playground-server.js +840 -0
  90. package/dist/auto-ui/playground-server.js.map +1 -0
  91. package/dist/auto-ui/registry.d.ts +13 -0
  92. package/dist/auto-ui/registry.d.ts.map +1 -0
  93. package/dist/auto-ui/registry.js +62 -0
  94. package/dist/auto-ui/registry.js.map +1 -0
  95. package/dist/auto-ui/renderer.d.ts +14 -0
  96. package/dist/auto-ui/renderer.d.ts.map +1 -0
  97. package/dist/auto-ui/renderer.js +88 -0
  98. package/dist/auto-ui/renderer.js.map +1 -0
  99. package/dist/auto-ui/rendering/components.d.ts +29 -0
  100. package/dist/auto-ui/rendering/components.d.ts.map +1 -0
  101. package/dist/auto-ui/rendering/components.js +773 -0
  102. package/dist/auto-ui/rendering/components.js.map +1 -0
  103. package/dist/auto-ui/rendering/field-analyzer.d.ts +48 -0
  104. package/dist/auto-ui/rendering/field-analyzer.d.ts.map +1 -0
  105. package/dist/auto-ui/rendering/field-analyzer.js +270 -0
  106. package/dist/auto-ui/rendering/field-analyzer.js.map +1 -0
  107. package/dist/auto-ui/rendering/field-renderers.d.ts +64 -0
  108. package/dist/auto-ui/rendering/field-renderers.d.ts.map +1 -0
  109. package/dist/auto-ui/rendering/field-renderers.js +317 -0
  110. package/dist/auto-ui/rendering/field-renderers.js.map +1 -0
  111. package/dist/auto-ui/rendering/index.d.ts +28 -0
  112. package/dist/auto-ui/rendering/index.d.ts.map +1 -0
  113. package/dist/auto-ui/rendering/index.js +60 -0
  114. package/dist/auto-ui/rendering/index.js.map +1 -0
  115. package/dist/auto-ui/rendering/layout-selector.d.ts +48 -0
  116. package/dist/auto-ui/rendering/layout-selector.d.ts.map +1 -0
  117. package/dist/auto-ui/rendering/layout-selector.js +352 -0
  118. package/dist/auto-ui/rendering/layout-selector.js.map +1 -0
  119. package/dist/auto-ui/rendering/template-engine.d.ts +41 -0
  120. package/dist/auto-ui/rendering/template-engine.d.ts.map +1 -0
  121. package/dist/auto-ui/rendering/template-engine.js +238 -0
  122. package/dist/auto-ui/rendering/template-engine.js.map +1 -0
  123. package/dist/auto-ui/streamable-http-transport.d.ts +103 -0
  124. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -0
  125. package/dist/auto-ui/streamable-http-transport.js +1875 -0
  126. package/dist/auto-ui/streamable-http-transport.js.map +1 -0
  127. package/dist/auto-ui/types.d.ts +384 -0
  128. package/dist/auto-ui/types.d.ts.map +1 -0
  129. package/dist/auto-ui/types.js +92 -0
  130. package/dist/auto-ui/types.js.map +1 -0
  131. package/dist/beam.bundle.js +63137 -0
  132. package/dist/beam.bundle.js.map +7 -0
  133. package/dist/claude-code-plugin.d.ts.map +1 -1
  134. package/dist/claude-code-plugin.js +30 -30
  135. package/dist/claude-code-plugin.js.map +1 -1
  136. package/dist/cli/commands/info.d.ts +11 -0
  137. package/dist/cli/commands/info.d.ts.map +1 -0
  138. package/dist/cli/commands/info.js +313 -0
  139. package/dist/cli/commands/info.js.map +1 -0
  140. package/dist/cli/commands/marketplace.d.ts +11 -0
  141. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  142. package/dist/cli/commands/marketplace.js +198 -0
  143. package/dist/cli/commands/marketplace.js.map +1 -0
  144. package/dist/cli/commands/package-app.d.ts +9 -0
  145. package/dist/cli/commands/package-app.d.ts.map +1 -0
  146. package/dist/cli/commands/package-app.js +191 -0
  147. package/dist/cli/commands/package-app.js.map +1 -0
  148. package/dist/cli/commands/package.d.ts +11 -0
  149. package/dist/cli/commands/package.d.ts.map +1 -0
  150. package/dist/cli/commands/package.js +573 -0
  151. package/dist/cli/commands/package.js.map +1 -0
  152. package/dist/cli-alias.d.ts.map +1 -1
  153. package/dist/cli-alias.js +30 -28
  154. package/dist/cli-alias.js.map +1 -1
  155. package/dist/cli-formatter.d.ts +8 -24
  156. package/dist/cli-formatter.d.ts.map +1 -1
  157. package/dist/cli-formatter.js +8 -325
  158. package/dist/cli-formatter.js.map +1 -1
  159. package/dist/cli.d.ts +15 -1
  160. package/dist/cli.d.ts.map +1 -1
  161. package/dist/cli.js +1166 -1131
  162. package/dist/cli.js.map +1 -1
  163. package/dist/daemon/client.d.ts +84 -3
  164. package/dist/daemon/client.d.ts.map +1 -1
  165. package/dist/daemon/client.js +561 -11
  166. package/dist/daemon/client.js.map +1 -1
  167. package/dist/daemon/manager.d.ts +51 -12
  168. package/dist/daemon/manager.d.ts.map +1 -1
  169. package/dist/daemon/manager.js +122 -61
  170. package/dist/daemon/manager.js.map +1 -1
  171. package/dist/daemon/protocol.d.ts +62 -6
  172. package/dist/daemon/protocol.d.ts.map +1 -1
  173. package/dist/daemon/protocol.js +76 -1
  174. package/dist/daemon/protocol.js.map +1 -1
  175. package/dist/daemon/server.d.ts +6 -6
  176. package/dist/daemon/server.js +743 -133
  177. package/dist/daemon/server.js.map +1 -1
  178. package/dist/daemon/session-manager.d.ts +8 -1
  179. package/dist/daemon/session-manager.d.ts.map +1 -1
  180. package/dist/daemon/session-manager.js +32 -9
  181. package/dist/daemon/session-manager.js.map +1 -1
  182. package/dist/deploy/cloudflare.d.ts +12 -0
  183. package/dist/deploy/cloudflare.d.ts.map +1 -0
  184. package/dist/deploy/cloudflare.js +216 -0
  185. package/dist/deploy/cloudflare.js.map +1 -0
  186. package/dist/index.d.ts +1 -0
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +3 -0
  189. package/dist/index.js.map +1 -1
  190. package/dist/loader.d.ts +191 -21
  191. package/dist/loader.d.ts.map +1 -1
  192. package/dist/loader.js +1186 -319
  193. package/dist/loader.js.map +1 -1
  194. package/dist/markdown-utils.d.ts +8 -0
  195. package/dist/markdown-utils.d.ts.map +1 -0
  196. package/dist/markdown-utils.js +63 -0
  197. package/dist/markdown-utils.js.map +1 -0
  198. package/dist/marketplace-manager.d.ts +10 -0
  199. package/dist/marketplace-manager.d.ts.map +1 -1
  200. package/dist/marketplace-manager.js +112 -28
  201. package/dist/marketplace-manager.js.map +1 -1
  202. package/dist/mcp-client.d.ts +9 -0
  203. package/dist/mcp-client.d.ts.map +1 -0
  204. package/dist/mcp-client.js +11 -0
  205. package/dist/mcp-client.js.map +1 -0
  206. package/dist/mcp-elicitation.d.ts +32 -0
  207. package/dist/mcp-elicitation.d.ts.map +1 -0
  208. package/dist/mcp-elicitation.js +26 -0
  209. package/dist/mcp-elicitation.js.map +1 -0
  210. package/dist/path-resolver.d.ts +9 -12
  211. package/dist/path-resolver.d.ts.map +1 -1
  212. package/dist/path-resolver.js +13 -43
  213. package/dist/path-resolver.js.map +1 -1
  214. package/dist/photon-cli-runner.d.ts.map +1 -1
  215. package/dist/photon-cli-runner.js +204 -77
  216. package/dist/photon-cli-runner.js.map +1 -1
  217. package/dist/photon-doc-extractor.d.ts +89 -0
  218. package/dist/photon-doc-extractor.d.ts.map +1 -1
  219. package/dist/photon-doc-extractor.js +560 -32
  220. package/dist/photon-doc-extractor.js.map +1 -1
  221. package/dist/photons/maker.photon.d.ts +182 -0
  222. package/dist/photons/maker.photon.d.ts.map +1 -0
  223. package/dist/photons/maker.photon.js +504 -0
  224. package/dist/photons/maker.photon.js.map +1 -0
  225. package/dist/photons/maker.photon.ts +626 -0
  226. package/dist/photons/marketplace.photon.d.ts +110 -0
  227. package/dist/photons/marketplace.photon.d.ts.map +1 -0
  228. package/dist/photons/marketplace.photon.js +260 -0
  229. package/dist/photons/marketplace.photon.js.map +1 -0
  230. package/dist/photons/marketplace.photon.ts +378 -0
  231. package/dist/photons/tunnel.photon.d.ts +80 -0
  232. package/dist/photons/tunnel.photon.d.ts.map +1 -0
  233. package/dist/photons/tunnel.photon.js +269 -0
  234. package/dist/photons/tunnel.photon.js.map +1 -0
  235. package/dist/photons/tunnel.photon.ts +345 -0
  236. package/dist/security-scanner.d.ts.map +1 -1
  237. package/dist/security-scanner.js +18 -15
  238. package/dist/security-scanner.js.map +1 -1
  239. package/dist/serv/auth/jwt.d.ts +89 -0
  240. package/dist/serv/auth/jwt.d.ts.map +1 -0
  241. package/dist/serv/auth/jwt.js +239 -0
  242. package/dist/serv/auth/jwt.js.map +1 -0
  243. package/dist/serv/auth/oauth.d.ts +117 -0
  244. package/dist/serv/auth/oauth.d.ts.map +1 -0
  245. package/dist/serv/auth/oauth.js +395 -0
  246. package/dist/serv/auth/oauth.js.map +1 -0
  247. package/dist/serv/auth/well-known.d.ts +60 -0
  248. package/dist/serv/auth/well-known.d.ts.map +1 -0
  249. package/dist/serv/auth/well-known.js +154 -0
  250. package/dist/serv/auth/well-known.js.map +1 -0
  251. package/dist/serv/db/d1-client.d.ts +65 -0
  252. package/dist/serv/db/d1-client.d.ts.map +1 -0
  253. package/dist/serv/db/d1-client.js +137 -0
  254. package/dist/serv/db/d1-client.js.map +1 -0
  255. package/dist/serv/db/d1-stores.d.ts +62 -0
  256. package/dist/serv/db/d1-stores.d.ts.map +1 -0
  257. package/dist/serv/db/d1-stores.js +307 -0
  258. package/dist/serv/db/d1-stores.js.map +1 -0
  259. package/dist/serv/index.d.ts +114 -0
  260. package/dist/serv/index.d.ts.map +1 -0
  261. package/dist/serv/index.js +172 -0
  262. package/dist/serv/index.js.map +1 -0
  263. package/dist/serv/local.d.ts +118 -0
  264. package/dist/serv/local.d.ts.map +1 -0
  265. package/dist/serv/local.js +392 -0
  266. package/dist/serv/local.js.map +1 -0
  267. package/dist/serv/middleware/auth.d.ts +66 -0
  268. package/dist/serv/middleware/auth.d.ts.map +1 -0
  269. package/dist/serv/middleware/auth.js +178 -0
  270. package/dist/serv/middleware/auth.js.map +1 -0
  271. package/dist/serv/middleware/tenant.d.ts +94 -0
  272. package/dist/serv/middleware/tenant.d.ts.map +1 -0
  273. package/dist/serv/middleware/tenant.js +152 -0
  274. package/dist/serv/middleware/tenant.js.map +1 -0
  275. package/dist/serv/runtime/executor.d.ts +76 -0
  276. package/dist/serv/runtime/executor.d.ts.map +1 -0
  277. package/dist/serv/runtime/executor.js +105 -0
  278. package/dist/serv/runtime/executor.js.map +1 -0
  279. package/dist/serv/runtime/index.d.ts +8 -0
  280. package/dist/serv/runtime/index.d.ts.map +1 -0
  281. package/dist/serv/runtime/index.js +10 -0
  282. package/dist/serv/runtime/index.js.map +1 -0
  283. package/dist/serv/runtime/oauth-context.d.ts +121 -0
  284. package/dist/serv/runtime/oauth-context.d.ts.map +1 -0
  285. package/dist/serv/runtime/oauth-context.js +153 -0
  286. package/dist/serv/runtime/oauth-context.js.map +1 -0
  287. package/dist/serv/session/kv-store.d.ts +54 -0
  288. package/dist/serv/session/kv-store.d.ts.map +1 -0
  289. package/dist/serv/session/kv-store.js +149 -0
  290. package/dist/serv/session/kv-store.js.map +1 -0
  291. package/dist/serv/session/store.d.ts +113 -0
  292. package/dist/serv/session/store.d.ts.map +1 -0
  293. package/dist/serv/session/store.js +284 -0
  294. package/dist/serv/session/store.js.map +1 -0
  295. package/dist/serv/types/index.d.ts +147 -0
  296. package/dist/serv/types/index.d.ts.map +1 -0
  297. package/dist/serv/types/index.js +8 -0
  298. package/dist/serv/types/index.js.map +1 -0
  299. package/dist/serv/vault/token-vault.d.ts +102 -0
  300. package/dist/serv/vault/token-vault.d.ts.map +1 -0
  301. package/dist/serv/vault/token-vault.js +177 -0
  302. package/dist/serv/vault/token-vault.js.map +1 -0
  303. package/dist/server.d.ts +184 -0
  304. package/dist/server.d.ts.map +1 -1
  305. package/dist/server.js +1995 -86
  306. package/dist/server.js.map +1 -1
  307. package/dist/shared/cli-sections.d.ts +6 -0
  308. package/dist/shared/cli-sections.d.ts.map +1 -0
  309. package/dist/shared/cli-sections.js +16 -0
  310. package/dist/shared/cli-sections.js.map +1 -0
  311. package/dist/shared/cli-utils.d.ts +81 -0
  312. package/dist/shared/cli-utils.d.ts.map +1 -0
  313. package/dist/shared/cli-utils.js +174 -0
  314. package/dist/shared/cli-utils.js.map +1 -0
  315. package/dist/shared/config-docs.d.ts +6 -0
  316. package/dist/shared/config-docs.d.ts.map +1 -0
  317. package/dist/shared/config-docs.js +6 -0
  318. package/dist/shared/config-docs.js.map +1 -0
  319. package/dist/shared/error-handler.d.ts +128 -0
  320. package/dist/shared/error-handler.d.ts.map +1 -0
  321. package/dist/shared/error-handler.js +342 -0
  322. package/dist/shared/error-handler.js.map +1 -0
  323. package/dist/shared/logger.d.ts +42 -0
  324. package/dist/shared/logger.d.ts.map +1 -0
  325. package/dist/shared/logger.js +123 -0
  326. package/dist/shared/logger.js.map +1 -0
  327. package/dist/shared/performance.d.ts +65 -0
  328. package/dist/shared/performance.d.ts.map +1 -0
  329. package/dist/shared/performance.js +136 -0
  330. package/dist/shared/performance.js.map +1 -0
  331. package/dist/shared/task-runner.d.ts +2 -0
  332. package/dist/shared/task-runner.d.ts.map +1 -0
  333. package/dist/shared/task-runner.js +16 -0
  334. package/dist/shared/task-runner.js.map +1 -0
  335. package/dist/shared/validation.d.ts +6 -0
  336. package/dist/shared/validation.d.ts.map +1 -0
  337. package/dist/shared/validation.js +6 -0
  338. package/dist/shared/validation.js.map +1 -0
  339. package/dist/shared-utils.d.ts +63 -0
  340. package/dist/shared-utils.d.ts.map +1 -0
  341. package/dist/shared-utils.js +123 -0
  342. package/dist/shared-utils.js.map +1 -0
  343. package/dist/template-manager.d.ts +23 -2
  344. package/dist/template-manager.d.ts.map +1 -1
  345. package/dist/template-manager.js +176 -87
  346. package/dist/template-manager.js.map +1 -1
  347. package/dist/test-client.d.ts.map +1 -1
  348. package/dist/test-client.js +10 -8
  349. package/dist/test-client.js.map +1 -1
  350. package/dist/test-runner.d.ts +52 -0
  351. package/dist/test-runner.d.ts.map +1 -0
  352. package/dist/test-runner.js +785 -0
  353. package/dist/test-runner.js.map +1 -0
  354. package/dist/testing.d.ts +103 -0
  355. package/dist/testing.d.ts.map +1 -0
  356. package/dist/testing.js +163 -0
  357. package/dist/testing.js.map +1 -0
  358. package/dist/version-checker.d.ts.map +1 -1
  359. package/dist/version-checker.js +2 -2
  360. package/dist/version-checker.js.map +1 -1
  361. package/dist/version.d.ts +10 -0
  362. package/dist/version.d.ts.map +1 -0
  363. package/dist/version.js +21 -0
  364. package/dist/version.js.map +1 -0
  365. package/dist/watcher.d.ts +6 -3
  366. package/dist/watcher.d.ts.map +1 -1
  367. package/dist/watcher.js +49 -10
  368. package/dist/watcher.js.map +1 -1
  369. package/package.json +57 -7
  370. package/templates/cloudflare/worker.ts.template +381 -0
  371. package/templates/cloudflare/wrangler.toml.template +9 -0
  372. package/dist/base.d.ts +0 -58
  373. package/dist/base.d.ts.map +0 -1
  374. package/dist/base.js +0 -92
  375. package/dist/base.js.map +0 -1
  376. package/dist/dependency-manager.d.ts +0 -49
  377. package/dist/dependency-manager.d.ts.map +0 -1
  378. package/dist/dependency-manager.js +0 -165
  379. package/dist/dependency-manager.js.map +0 -1
  380. package/dist/registry-manager.d.ts +0 -76
  381. package/dist/registry-manager.d.ts.map +0 -1
  382. package/dist/registry-manager.js +0 -220
  383. package/dist/registry-manager.js.map +0 -1
  384. package/dist/schema-extractor.d.ts +0 -110
  385. package/dist/schema-extractor.d.ts.map +0 -1
  386. package/dist/schema-extractor.js +0 -727
  387. package/dist/schema-extractor.js.map +0 -1
  388. package/dist/test-marketplace-sources.d.ts +0 -5
  389. package/dist/test-marketplace-sources.d.ts.map +0 -1
  390. package/dist/test-marketplace-sources.js +0 -53
  391. package/dist/test-marketplace-sources.js.map +0 -1
  392. package/dist/types.d.ts +0 -109
  393. package/dist/types.d.ts.map +0 -1
  394. package/dist/types.js +0 -12
  395. package/dist/types.js.map +0 -1
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Cloudflare D1 Database Client
3
+ *
4
+ * Provides typed access to D1 SQLite database
5
+ */
6
+ /**
7
+ * Cloudflare D1 Database interface
8
+ * Compatible with @cloudflare/workers-types D1Database
9
+ */
10
+ export interface D1Database {
11
+ prepare(query: string): D1PreparedStatement;
12
+ batch<T = unknown>(statements: D1PreparedStatement[]): Promise<D1Result<T>[]>;
13
+ exec(query: string): Promise<D1ExecResult>;
14
+ }
15
+ export interface D1PreparedStatement {
16
+ bind(...values: unknown[]): D1PreparedStatement;
17
+ first<T = unknown>(column?: string): Promise<T | null>;
18
+ all<T = unknown>(): Promise<D1Result<T>>;
19
+ run(): Promise<D1Result>;
20
+ }
21
+ export interface D1Result<T = unknown> {
22
+ results?: T[];
23
+ success: boolean;
24
+ meta?: {
25
+ duration: number;
26
+ changes: number;
27
+ last_row_id: number;
28
+ };
29
+ }
30
+ export interface D1ExecResult {
31
+ count: number;
32
+ duration: number;
33
+ }
34
+ export declare const SCHEMA = "\n-- Tenants\nCREATE TABLE IF NOT EXISTS tenants (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n slug TEXT UNIQUE NOT NULL,\n region TEXT NOT NULL DEFAULT 'global',\n plan TEXT NOT NULL DEFAULT 'free',\n encryption_key_id TEXT NOT NULL,\n settings TEXT NOT NULL DEFAULT '{}',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_tenants_slug ON tenants(slug);\n\n-- Users (global)\nCREATE TABLE IF NOT EXISTS users (\n id TEXT PRIMARY KEY,\n email TEXT UNIQUE NOT NULL,\n email_verified INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_users_email ON users(email);\n\n-- Memberships\nCREATE TABLE IF NOT EXISTS memberships (\n tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\n role TEXT NOT NULL DEFAULT 'member',\n status TEXT NOT NULL DEFAULT 'active',\n invited_by TEXT REFERENCES users(id),\n joined_at TEXT NOT NULL DEFAULT (datetime('now')),\n PRIMARY KEY (tenant_id, user_id)\n);\n\nCREATE INDEX IF NOT EXISTS idx_memberships_user ON memberships(user_id);\n\n-- OAuth Grants\nCREATE TABLE IF NOT EXISTS photon_grants (\n id TEXT PRIMARY KEY,\n tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,\n user_id TEXT REFERENCES users(id) ON DELETE CASCADE,\n photon_id TEXT NOT NULL,\n provider TEXT NOT NULL,\n scopes TEXT NOT NULL,\n access_token_encrypted TEXT NOT NULL,\n refresh_token_encrypted TEXT,\n token_expires_at TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE (tenant_id, user_id, photon_id, provider)\n);\n\nCREATE INDEX IF NOT EXISTS idx_grants_tenant ON photon_grants(tenant_id);\nCREATE INDEX IF NOT EXISTS idx_grants_lookup ON photon_grants(tenant_id, photon_id, provider);\n\n-- Elicitation Requests (short-lived)\nCREATE TABLE IF NOT EXISTS elicitation_requests (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n photon_id TEXT NOT NULL,\n provider TEXT NOT NULL,\n required_scopes TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'pending',\n redirect_uri TEXT NOT NULL,\n code_verifier TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n expires_at TEXT NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_elicitation_session ON elicitation_requests(session_id);\nCREATE INDEX IF NOT EXISTS idx_elicitation_expires ON elicitation_requests(expires_at);\n";
35
+ export declare class D1Client {
36
+ private db;
37
+ constructor(db: D1Database);
38
+ /**
39
+ * Initialize the database schema
40
+ */
41
+ initialize(): Promise<void>;
42
+ /**
43
+ * Execute a query and return first result
44
+ */
45
+ first<T>(query: string, ...params: unknown[]): Promise<T | null>;
46
+ /**
47
+ * Execute a query and return all results
48
+ */
49
+ all<T>(query: string, ...params: unknown[]): Promise<T[]>;
50
+ /**
51
+ * Execute a query (INSERT, UPDATE, DELETE)
52
+ */
53
+ run(query: string, ...params: unknown[]): Promise<{
54
+ changes: number;
55
+ lastRowId: number;
56
+ }>;
57
+ /**
58
+ * Execute multiple queries in a batch
59
+ */
60
+ batch(queries: Array<{
61
+ sql: string;
62
+ params: unknown[];
63
+ }>): Promise<void>;
64
+ }
65
+ //# sourceMappingURL=d1-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d1-client.d.ts","sourceRoot":"","sources":["../../../src/serv/db/d1-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC5C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,eAAO,MAAM,MAAM,q9EAyElB,CAAC;AAMF,qBAAa,QAAQ;IACP,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,UAAU;IAElC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOtE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAQ/D;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAW/F;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/E"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Cloudflare D1 Database Client
3
+ *
4
+ * Provides typed access to D1 SQLite database
5
+ */
6
+ // ============================================================================
7
+ // Schema
8
+ // ============================================================================
9
+ export const SCHEMA = `
10
+ -- Tenants
11
+ CREATE TABLE IF NOT EXISTS tenants (
12
+ id TEXT PRIMARY KEY,
13
+ name TEXT NOT NULL,
14
+ slug TEXT UNIQUE NOT NULL,
15
+ region TEXT NOT NULL DEFAULT 'global',
16
+ plan TEXT NOT NULL DEFAULT 'free',
17
+ encryption_key_id TEXT NOT NULL,
18
+ settings TEXT NOT NULL DEFAULT '{}',
19
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
20
+ );
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_tenants_slug ON tenants(slug);
23
+
24
+ -- Users (global)
25
+ CREATE TABLE IF NOT EXISTS users (
26
+ id TEXT PRIMARY KEY,
27
+ email TEXT UNIQUE NOT NULL,
28
+ email_verified INTEGER NOT NULL DEFAULT 0,
29
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
30
+ );
31
+
32
+ CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
33
+
34
+ -- Memberships
35
+ CREATE TABLE IF NOT EXISTS memberships (
36
+ tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
37
+ user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
38
+ role TEXT NOT NULL DEFAULT 'member',
39
+ status TEXT NOT NULL DEFAULT 'active',
40
+ invited_by TEXT REFERENCES users(id),
41
+ joined_at TEXT NOT NULL DEFAULT (datetime('now')),
42
+ PRIMARY KEY (tenant_id, user_id)
43
+ );
44
+
45
+ CREATE INDEX IF NOT EXISTS idx_memberships_user ON memberships(user_id);
46
+
47
+ -- OAuth Grants
48
+ CREATE TABLE IF NOT EXISTS photon_grants (
49
+ id TEXT PRIMARY KEY,
50
+ tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
51
+ user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
52
+ photon_id TEXT NOT NULL,
53
+ provider TEXT NOT NULL,
54
+ scopes TEXT NOT NULL,
55
+ access_token_encrypted TEXT NOT NULL,
56
+ refresh_token_encrypted TEXT,
57
+ token_expires_at TEXT NOT NULL,
58
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
59
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
60
+ UNIQUE (tenant_id, user_id, photon_id, provider)
61
+ );
62
+
63
+ CREATE INDEX IF NOT EXISTS idx_grants_tenant ON photon_grants(tenant_id);
64
+ CREATE INDEX IF NOT EXISTS idx_grants_lookup ON photon_grants(tenant_id, photon_id, provider);
65
+
66
+ -- Elicitation Requests (short-lived)
67
+ CREATE TABLE IF NOT EXISTS elicitation_requests (
68
+ id TEXT PRIMARY KEY,
69
+ session_id TEXT NOT NULL,
70
+ photon_id TEXT NOT NULL,
71
+ provider TEXT NOT NULL,
72
+ required_scopes TEXT NOT NULL,
73
+ status TEXT NOT NULL DEFAULT 'pending',
74
+ redirect_uri TEXT NOT NULL,
75
+ code_verifier TEXT,
76
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
77
+ expires_at TEXT NOT NULL
78
+ );
79
+
80
+ CREATE INDEX IF NOT EXISTS idx_elicitation_session ON elicitation_requests(session_id);
81
+ CREATE INDEX IF NOT EXISTS idx_elicitation_expires ON elicitation_requests(expires_at);
82
+ `;
83
+ // ============================================================================
84
+ // D1 Client Wrapper
85
+ // ============================================================================
86
+ export class D1Client {
87
+ db;
88
+ constructor(db) {
89
+ this.db = db;
90
+ }
91
+ /**
92
+ * Initialize the database schema
93
+ */
94
+ async initialize() {
95
+ await this.db.exec(SCHEMA);
96
+ }
97
+ /**
98
+ * Execute a query and return first result
99
+ */
100
+ async first(query, ...params) {
101
+ return this.db
102
+ .prepare(query)
103
+ .bind(...params)
104
+ .first();
105
+ }
106
+ /**
107
+ * Execute a query and return all results
108
+ */
109
+ async all(query, ...params) {
110
+ const result = await this.db
111
+ .prepare(query)
112
+ .bind(...params)
113
+ .all();
114
+ return result.results ?? [];
115
+ }
116
+ /**
117
+ * Execute a query (INSERT, UPDATE, DELETE)
118
+ */
119
+ async run(query, ...params) {
120
+ const result = await this.db
121
+ .prepare(query)
122
+ .bind(...params)
123
+ .run();
124
+ return {
125
+ changes: result.meta?.changes ?? 0,
126
+ lastRowId: result.meta?.last_row_id ?? 0,
127
+ };
128
+ }
129
+ /**
130
+ * Execute multiple queries in a batch
131
+ */
132
+ async batch(queries) {
133
+ const statements = queries.map((q) => this.db.prepare(q.sql).bind(...q.params));
134
+ await this.db.batch(statements);
135
+ }
136
+ }
137
+ //# sourceMappingURL=d1-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d1-client.js","sourceRoot":"","sources":["../../../src/serv/db/d1-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsCH,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyErB,CAAC;AAEF,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,OAAO,QAAQ;IACC;IAApB,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;IAAG,CAAC;IAEtC;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAI,KAAa,EAAE,GAAG,MAAiB;QAChD,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CAAC,KAAK,CAAC;aACd,IAAI,CAAC,GAAG,MAAM,CAAC;aACf,KAAK,EAAK,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,KAAa,EAAE,GAAG,MAAiB;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE;aACzB,OAAO,CAAC,KAAK,CAAC;aACd,IAAI,CAAC,GAAG,MAAM,CAAC;aACf,GAAG,EAAK,CAAC;QACZ,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,GAAG,MAAiB;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE;aACzB,OAAO,CAAC,KAAK,CAAC;aACd,IAAI,CAAC,GAAG,MAAM,CAAC;aACf,GAAG,EAAE,CAAC;QACT,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;YAClC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAkD;QAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Cloudflare D1 Store Implementations
3
+ *
4
+ * Production-ready stores using D1 SQLite database
5
+ */
6
+ import type { Tenant, User, Membership, PhotonGrant, ElicitationRequest } from '../types/index.js';
7
+ import type { TenantStore } from '../middleware/tenant.js';
8
+ import type { UserStore, MembershipStore } from '../middleware/auth.js';
9
+ import type { ElicitationStore, GrantStore } from '../auth/oauth.js';
10
+ import type { D1Client } from './d1-client.js';
11
+ export declare class D1TenantStore implements TenantStore {
12
+ private db;
13
+ constructor(db: D1Client);
14
+ findBySlug(slug: string): Promise<Tenant | null>;
15
+ findByCustomDomain(domain: string): Promise<Tenant | null>;
16
+ findById(id: string): Promise<Tenant | null>;
17
+ create(tenant: Omit<Tenant, 'createdAt'>): Promise<Tenant>;
18
+ update(id: string, data: Partial<Tenant>): Promise<void>;
19
+ delete(id: string): Promise<void>;
20
+ private rowToTenant;
21
+ }
22
+ export declare class D1UserStore implements UserStore {
23
+ private db;
24
+ constructor(db: D1Client);
25
+ findById(id: string): Promise<User | null>;
26
+ findByEmail(email: string): Promise<User | null>;
27
+ create(user: Omit<User, 'createdAt'>): Promise<User>;
28
+ update(id: string, data: Partial<User>): Promise<void>;
29
+ private rowToUser;
30
+ }
31
+ export declare class D1MembershipStore implements MembershipStore {
32
+ private db;
33
+ constructor(db: D1Client);
34
+ find(tenantId: string, userId: string): Promise<Membership | null>;
35
+ findByUser(userId: string): Promise<Membership[]>;
36
+ findByTenant(tenantId: string): Promise<Membership[]>;
37
+ create(membership: Omit<Membership, 'joinedAt'>): Promise<Membership>;
38
+ update(tenantId: string, userId: string, data: Partial<Membership>): Promise<void>;
39
+ delete(tenantId: string, userId: string): Promise<void>;
40
+ private rowToMembership;
41
+ }
42
+ export declare class D1GrantStore implements GrantStore {
43
+ private db;
44
+ constructor(db: D1Client);
45
+ find(tenantId: string, photonId: string, provider: string, userId?: string): Promise<PhotonGrant | null>;
46
+ create(grant: Omit<PhotonGrant, 'id' | 'createdAt' | 'updatedAt'>): Promise<PhotonGrant>;
47
+ update(id: string, data: Partial<PhotonGrant>): Promise<void>;
48
+ delete(id: string): Promise<void>;
49
+ findByUser(tenantId: string, userId: string): Promise<PhotonGrant[]>;
50
+ private rowToGrant;
51
+ }
52
+ export declare class D1ElicitationStore implements ElicitationStore {
53
+ private db;
54
+ constructor(db: D1Client);
55
+ create(data: Omit<ElicitationRequest, 'id' | 'createdAt'>): Promise<ElicitationRequest>;
56
+ get(id: string): Promise<ElicitationRequest | null>;
57
+ update(id: string, data: Partial<ElicitationRequest>): Promise<void>;
58
+ delete(id: string): Promise<void>;
59
+ cleanup(): Promise<number>;
60
+ private rowToElicitation;
61
+ }
62
+ //# sourceMappingURL=d1-stores.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d1-stores.d.ts","sourceRoot":"","sources":["../../../src/serv/db/d1-stores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Cloudflare D1 Store Implementations
3
+ *
4
+ * Production-ready stores using D1 SQLite database
5
+ */
6
+ import { randomUUID } from 'crypto';
7
+ // ============================================================================
8
+ // D1 Tenant Store
9
+ // ============================================================================
10
+ export class D1TenantStore {
11
+ db;
12
+ constructor(db) {
13
+ this.db = db;
14
+ }
15
+ async findBySlug(slug) {
16
+ const row = await this.db.first('SELECT * FROM tenants WHERE slug = ?', slug);
17
+ return row ? this.rowToTenant(row) : null;
18
+ }
19
+ async findByCustomDomain(domain) {
20
+ // Query tenants where settings.customDomain matches
21
+ const rows = await this.db.all("SELECT * FROM tenants WHERE json_extract(settings, '$.customDomain') = ?", domain);
22
+ return rows.length > 0 ? this.rowToTenant(rows[0]) : null;
23
+ }
24
+ async findById(id) {
25
+ const row = await this.db.first('SELECT * FROM tenants WHERE id = ?', id);
26
+ return row ? this.rowToTenant(row) : null;
27
+ }
28
+ async create(tenant) {
29
+ const now = new Date().toISOString();
30
+ await this.db.run(`INSERT INTO tenants (id, name, slug, region, plan, encryption_key_id, settings, created_at)
31
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, tenant.id, tenant.name, tenant.slug, tenant.region, tenant.plan, tenant.encryptionKeyId, JSON.stringify(tenant.settings), now);
32
+ return { ...tenant, createdAt: new Date(now) };
33
+ }
34
+ async update(id, data) {
35
+ const updates = [];
36
+ const params = [];
37
+ if (data.name !== undefined) {
38
+ updates.push('name = ?');
39
+ params.push(data.name);
40
+ }
41
+ if (data.plan !== undefined) {
42
+ updates.push('plan = ?');
43
+ params.push(data.plan);
44
+ }
45
+ if (data.settings !== undefined) {
46
+ updates.push('settings = ?');
47
+ params.push(JSON.stringify(data.settings));
48
+ }
49
+ if (updates.length === 0)
50
+ return;
51
+ params.push(id);
52
+ await this.db.run(`UPDATE tenants SET ${updates.join(', ')} WHERE id = ?`, ...params);
53
+ }
54
+ async delete(id) {
55
+ await this.db.run('DELETE FROM tenants WHERE id = ?', id);
56
+ }
57
+ rowToTenant(row) {
58
+ return {
59
+ id: row.id,
60
+ name: row.name,
61
+ slug: row.slug,
62
+ region: row.region,
63
+ plan: row.plan,
64
+ encryptionKeyId: row.encryption_key_id,
65
+ settings: JSON.parse(row.settings),
66
+ createdAt: new Date(row.created_at),
67
+ };
68
+ }
69
+ }
70
+ // ============================================================================
71
+ // D1 User Store
72
+ // ============================================================================
73
+ export class D1UserStore {
74
+ db;
75
+ constructor(db) {
76
+ this.db = db;
77
+ }
78
+ async findById(id) {
79
+ const row = await this.db.first('SELECT * FROM users WHERE id = ?', id);
80
+ return row ? this.rowToUser(row) : null;
81
+ }
82
+ async findByEmail(email) {
83
+ const row = await this.db.first('SELECT * FROM users WHERE email = ?', email.toLowerCase());
84
+ return row ? this.rowToUser(row) : null;
85
+ }
86
+ async create(user) {
87
+ const now = new Date().toISOString();
88
+ await this.db.run(`INSERT INTO users (id, email, email_verified, created_at)
89
+ VALUES (?, ?, ?, ?)`, user.id, user.email.toLowerCase(), user.emailVerified ? 1 : 0, now);
90
+ return { ...user, createdAt: new Date(now) };
91
+ }
92
+ async update(id, data) {
93
+ const updates = [];
94
+ const params = [];
95
+ if (data.emailVerified !== undefined) {
96
+ updates.push('email_verified = ?');
97
+ params.push(data.emailVerified ? 1 : 0);
98
+ }
99
+ if (updates.length === 0)
100
+ return;
101
+ params.push(id);
102
+ await this.db.run(`UPDATE users SET ${updates.join(', ')} WHERE id = ?`, ...params);
103
+ }
104
+ rowToUser(row) {
105
+ return {
106
+ id: row.id,
107
+ email: row.email,
108
+ emailVerified: row.email_verified === 1,
109
+ createdAt: new Date(row.created_at),
110
+ };
111
+ }
112
+ }
113
+ // ============================================================================
114
+ // D1 Membership Store
115
+ // ============================================================================
116
+ export class D1MembershipStore {
117
+ db;
118
+ constructor(db) {
119
+ this.db = db;
120
+ }
121
+ async find(tenantId, userId) {
122
+ const row = await this.db.first('SELECT * FROM memberships WHERE tenant_id = ? AND user_id = ?', tenantId, userId);
123
+ return row ? this.rowToMembership(row) : null;
124
+ }
125
+ async findByUser(userId) {
126
+ const rows = await this.db.all('SELECT * FROM memberships WHERE user_id = ?', userId);
127
+ return rows.map((r) => this.rowToMembership(r));
128
+ }
129
+ async findByTenant(tenantId) {
130
+ const rows = await this.db.all('SELECT * FROM memberships WHERE tenant_id = ?', tenantId);
131
+ return rows.map((r) => this.rowToMembership(r));
132
+ }
133
+ async create(membership) {
134
+ const now = new Date().toISOString();
135
+ await this.db.run(`INSERT INTO memberships (tenant_id, user_id, role, status, invited_by, joined_at)
136
+ VALUES (?, ?, ?, ?, ?, ?)`, membership.tenantId, membership.userId, membership.role, membership.status, membership.invitedBy ?? null, now);
137
+ return { ...membership, joinedAt: new Date(now) };
138
+ }
139
+ async update(tenantId, userId, data) {
140
+ const updates = [];
141
+ const params = [];
142
+ if (data.role !== undefined) {
143
+ updates.push('role = ?');
144
+ params.push(data.role);
145
+ }
146
+ if (data.status !== undefined) {
147
+ updates.push('status = ?');
148
+ params.push(data.status);
149
+ }
150
+ if (updates.length === 0)
151
+ return;
152
+ params.push(tenantId, userId);
153
+ await this.db.run(`UPDATE memberships SET ${updates.join(', ')} WHERE tenant_id = ? AND user_id = ?`, ...params);
154
+ }
155
+ async delete(tenantId, userId) {
156
+ await this.db.run('DELETE FROM memberships WHERE tenant_id = ? AND user_id = ?', tenantId, userId);
157
+ }
158
+ rowToMembership(row) {
159
+ return {
160
+ tenantId: row.tenant_id,
161
+ userId: row.user_id,
162
+ role: row.role,
163
+ status: row.status,
164
+ invitedBy: row.invited_by ?? undefined,
165
+ joinedAt: new Date(row.joined_at),
166
+ };
167
+ }
168
+ }
169
+ // ============================================================================
170
+ // D1 Grant Store
171
+ // ============================================================================
172
+ export class D1GrantStore {
173
+ db;
174
+ constructor(db) {
175
+ this.db = db;
176
+ }
177
+ async find(tenantId, photonId, provider, userId) {
178
+ const row = await this.db.first(`SELECT * FROM photon_grants
179
+ WHERE tenant_id = ? AND photon_id = ? AND provider = ? AND user_id IS ?`, tenantId, photonId, provider, userId ?? null);
180
+ return row ? this.rowToGrant(row) : null;
181
+ }
182
+ async create(grant) {
183
+ const id = randomUUID();
184
+ const now = new Date().toISOString();
185
+ await this.db.run(`INSERT INTO photon_grants
186
+ (id, tenant_id, user_id, photon_id, provider, scopes, access_token_encrypted,
187
+ refresh_token_encrypted, token_expires_at, created_at, updated_at)
188
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, id, grant.tenantId, grant.userId ?? null, grant.photonId, grant.provider, JSON.stringify(grant.scopes), grant.accessTokenEncrypted, grant.refreshTokenEncrypted ?? null, grant.tokenExpiresAt.toISOString(), now, now);
189
+ return {
190
+ ...grant,
191
+ id,
192
+ createdAt: new Date(now),
193
+ updatedAt: new Date(now),
194
+ };
195
+ }
196
+ async update(id, data) {
197
+ const updates = ['updated_at = ?'];
198
+ const params = [new Date().toISOString()];
199
+ if (data.accessTokenEncrypted !== undefined) {
200
+ updates.push('access_token_encrypted = ?');
201
+ params.push(data.accessTokenEncrypted);
202
+ }
203
+ if (data.refreshTokenEncrypted !== undefined) {
204
+ updates.push('refresh_token_encrypted = ?');
205
+ params.push(data.refreshTokenEncrypted);
206
+ }
207
+ if (data.scopes !== undefined) {
208
+ updates.push('scopes = ?');
209
+ params.push(JSON.stringify(data.scopes));
210
+ }
211
+ if (data.tokenExpiresAt !== undefined) {
212
+ updates.push('token_expires_at = ?');
213
+ params.push(data.tokenExpiresAt.toISOString());
214
+ }
215
+ params.push(id);
216
+ await this.db.run(`UPDATE photon_grants SET ${updates.join(', ')} WHERE id = ?`, ...params);
217
+ }
218
+ async delete(id) {
219
+ await this.db.run('DELETE FROM photon_grants WHERE id = ?', id);
220
+ }
221
+ async findByUser(tenantId, userId) {
222
+ const rows = await this.db.all('SELECT * FROM photon_grants WHERE tenant_id = ? AND user_id = ?', tenantId, userId);
223
+ return rows.map((r) => this.rowToGrant(r));
224
+ }
225
+ rowToGrant(row) {
226
+ return {
227
+ id: row.id,
228
+ tenantId: row.tenant_id,
229
+ userId: row.user_id ?? undefined,
230
+ photonId: row.photon_id,
231
+ provider: row.provider,
232
+ scopes: JSON.parse(row.scopes),
233
+ accessTokenEncrypted: row.access_token_encrypted,
234
+ refreshTokenEncrypted: row.refresh_token_encrypted ?? undefined,
235
+ tokenExpiresAt: new Date(row.token_expires_at),
236
+ createdAt: new Date(row.created_at),
237
+ updatedAt: new Date(row.updated_at),
238
+ };
239
+ }
240
+ }
241
+ // ============================================================================
242
+ // D1 Elicitation Store
243
+ // ============================================================================
244
+ export class D1ElicitationStore {
245
+ db;
246
+ constructor(db) {
247
+ this.db = db;
248
+ }
249
+ async create(data) {
250
+ const id = randomUUID();
251
+ const now = new Date().toISOString();
252
+ await this.db.run(`INSERT INTO elicitation_requests
253
+ (id, session_id, photon_id, provider, required_scopes, status, redirect_uri, code_verifier, created_at, expires_at)
254
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, id, data.sessionId, data.photonId, data.provider, JSON.stringify(data.requiredScopes), data.status, data.redirectUri, data.codeVerifier ?? null, now, data.expiresAt.toISOString());
255
+ return {
256
+ ...data,
257
+ id,
258
+ createdAt: new Date(now),
259
+ };
260
+ }
261
+ async get(id) {
262
+ const row = await this.db.first('SELECT * FROM elicitation_requests WHERE id = ?', id);
263
+ if (!row)
264
+ return null;
265
+ const request = this.rowToElicitation(row);
266
+ // Check expiry
267
+ if (request.expiresAt.getTime() < Date.now()) {
268
+ await this.delete(id);
269
+ return null;
270
+ }
271
+ return request;
272
+ }
273
+ async update(id, data) {
274
+ const updates = [];
275
+ const params = [];
276
+ if (data.status !== undefined) {
277
+ updates.push('status = ?');
278
+ params.push(data.status);
279
+ }
280
+ if (updates.length === 0)
281
+ return;
282
+ params.push(id);
283
+ await this.db.run(`UPDATE elicitation_requests SET ${updates.join(', ')} WHERE id = ?`, ...params);
284
+ }
285
+ async delete(id) {
286
+ await this.db.run('DELETE FROM elicitation_requests WHERE id = ?', id);
287
+ }
288
+ async cleanup() {
289
+ const result = await this.db.run('DELETE FROM elicitation_requests WHERE expires_at < ?', new Date().toISOString());
290
+ return result.changes;
291
+ }
292
+ rowToElicitation(row) {
293
+ return {
294
+ id: row.id,
295
+ sessionId: row.session_id,
296
+ photonId: row.photon_id,
297
+ provider: row.provider,
298
+ requiredScopes: JSON.parse(row.required_scopes),
299
+ status: row.status,
300
+ redirectUri: row.redirect_uri,
301
+ codeVerifier: row.code_verifier ?? undefined,
302
+ createdAt: new Date(row.created_at),
303
+ expiresAt: new Date(row.expires_at),
304
+ };
305
+ }
306
+ }
307
+ //# sourceMappingURL=d1-stores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d1-stores.js","sourceRoot":"","sources":["../../../src/serv/db/d1-stores.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAwEpC,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,OAAO,aAAa;IACJ;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAY,sCAAsC,EAAE,IAAI,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,oDAAoD;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC5B,0EAA0E,EAC1E,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAY,oCAAoC,EAAE,EAAE,CAAC,CAAC;QACrF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAiC;QAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;uCACiC,EACjC,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,eAAe,EACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/B,GAAG,CACJ,CAAC;QACF,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAqB;QAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEO,WAAW,CAAC,GAAc;QAChC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAsB;YAChC,eAAe,EAAE,GAAG,CAAC,iBAAiB;YACtC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAmB;YACpD,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SACpC,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAU,kCAAkC,EAAE,EAAE,CAAC,CAAC;QACjF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B,qCAAqC,EACrC,KAAK,CAAC,WAAW,EAAE,CACpB,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA6B;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;2BACqB,EACrB,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EACxB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,GAAG,CACJ,CAAC;QACF,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAmB;QAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,CAAC,CAAC;IACtF,CAAC;IAEO,SAAS,CAAC,GAAY;QAC5B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,aAAa,EAAE,GAAG,CAAC,cAAc,KAAK,CAAC;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SACpC,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAAc;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B,+DAA+D,EAC/D,QAAQ,EACR,MAAM,CACP,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC5B,6CAA6C,EAC7C,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC5B,+CAA+C,EAC/C,QAAQ,CACT,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAwC;QACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;iCAC2B,EAC3B,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,SAAS,IAAI,IAAI,EAC5B,GAAG,CACJ,CAAC;QACF,OAAO,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,MAAc,EAAE,IAAyB;QACtE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,EAClF,GAAG,MAAM,CACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,MAAc;QAC3C,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf,6DAA6D,EAC7D,QAAQ,EACR,MAAM,CACP,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,GAAkB;QACxC,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,IAAI,EAAE,GAAG,CAAC,IAA0B;YACpC,MAAM,EAAE,GAAG,CAAC,MAA8B;YAC1C,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACtC,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,IAAI,CACR,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,MAAe;QAEf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B;+EACyE,EACzE,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,IAAI,IAAI,CACf,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA0D;QACrE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;;;gDAG0C,EAC1C,EAAE,EACF,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5B,KAAK,CAAC,oBAAoB,EAC1B,KAAK,CAAC,qBAAqB,IAAI,IAAI,EACnC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,EAClC,GAAG,EACH,GAAG,CACJ,CAAC;QACF,OAAO;YACL,GAAG,KAAK;YACR,EAAE;YACF,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC;YACxB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAA0B;QACjD,MAAM,OAAO,GAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAc,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,MAAM,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc;QAC/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC5B,iEAAiE,EACjE,QAAQ,EACR,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,UAAU,CAAC,GAAa;QAC9B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YAChC,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC9B,oBAAoB,EAAE,GAAG,CAAC,sBAAsB;YAChD,qBAAqB,EAAE,GAAG,CAAC,uBAAuB,IAAI,SAAS;YAC/D,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC9C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SACpC,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAEpC,KAAK,CAAC,MAAM,CAAC,IAAkD;QAC7D,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;;6CAEuC,EACvC,EAAE,EACF,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EACnC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,IAAI,IAAI,EACzB,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAC7B,CAAC;QACF,OAAO;YACL,GAAG,IAAI;YACP,EAAE;YACF,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B,iDAAiD,EACjD,EAAE,CACH,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE3C,eAAe;QACf,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAiC;QACxD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EACpE,GAAG,MAAM,CACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC9B,uDAAuD,EACvD,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAEO,gBAAgB,CAAC,GAAmB;QAC1C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;YAC/C,MAAM,EAAE,GAAG,CAAC,MAAsC;YAClD,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;YAC5C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SACpC,CAAC;IACJ,CAAC;CACF"}