@archlast/server 0.0.1

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 (811) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/admin/auth.d.ts +79 -0
  4. package/dist/admin/auth.d.ts.map +1 -0
  5. package/dist/admin/auth.js +487 -0
  6. package/dist/admin/auth.js.map +1 -0
  7. package/dist/admin/schema.d.ts +240 -0
  8. package/dist/admin/schema.d.ts.map +1 -0
  9. package/dist/admin/schema.js +521 -0
  10. package/dist/admin/schema.js.map +1 -0
  11. package/dist/admin/seed.d.ts +9 -0
  12. package/dist/admin/seed.d.ts.map +1 -0
  13. package/dist/admin/seed.js +276 -0
  14. package/dist/admin/seed.js.map +1 -0
  15. package/dist/auth/api-key-resolver.d.ts +12 -0
  16. package/dist/auth/api-key-resolver.d.ts.map +1 -0
  17. package/dist/auth/api-key-resolver.js +24 -0
  18. package/dist/auth/api-key-resolver.js.map +1 -0
  19. package/dist/auth/archlast-auth-adapter.d.ts +22 -0
  20. package/dist/auth/archlast-auth-adapter.d.ts.map +1 -0
  21. package/dist/auth/archlast-auth-adapter.js +32 -0
  22. package/dist/auth/archlast-auth-adapter.js.map +1 -0
  23. package/dist/auth/audit.d.ts +65 -0
  24. package/dist/auth/audit.d.ts.map +1 -0
  25. package/dist/auth/audit.js +138 -0
  26. package/dist/auth/audit.js.map +1 -0
  27. package/dist/auth/better-auth-adapter.d.ts +35 -0
  28. package/dist/auth/better-auth-adapter.d.ts.map +1 -0
  29. package/dist/auth/better-auth-adapter.js +460 -0
  30. package/dist/auth/better-auth-adapter.js.map +1 -0
  31. package/dist/auth/better-auth-admin.d.ts +40 -0
  32. package/dist/auth/better-auth-admin.d.ts.map +1 -0
  33. package/dist/auth/better-auth-admin.js +80 -0
  34. package/dist/auth/better-auth-admin.js.map +1 -0
  35. package/dist/auth/better-auth-api-key-resolver.d.ts +39 -0
  36. package/dist/auth/better-auth-api-key-resolver.d.ts.map +1 -0
  37. package/dist/auth/better-auth-api-key-resolver.js +184 -0
  38. package/dist/auth/better-auth-api-key-resolver.js.map +1 -0
  39. package/dist/auth/better-auth-instance.d.ts +2464 -0
  40. package/dist/auth/better-auth-instance.d.ts.map +1 -0
  41. package/dist/auth/better-auth-instance.js +251 -0
  42. package/dist/auth/better-auth-instance.js.map +1 -0
  43. package/dist/auth/better-auth-seed.d.ts +23 -0
  44. package/dist/auth/better-auth-seed.d.ts.map +1 -0
  45. package/dist/auth/better-auth-seed.js +316 -0
  46. package/dist/auth/better-auth-seed.js.map +1 -0
  47. package/dist/auth/better-auth-session-adapter.d.ts +49 -0
  48. package/dist/auth/better-auth-session-adapter.d.ts.map +1 -0
  49. package/dist/auth/better-auth-session-adapter.js +254 -0
  50. package/dist/auth/better-auth-session-adapter.js.map +1 -0
  51. package/dist/auth/errors.d.ts +18 -0
  52. package/dist/auth/errors.d.ts.map +1 -0
  53. package/dist/auth/errors.js +27 -0
  54. package/dist/auth/errors.js.map +1 -0
  55. package/dist/auth/http/handlers.d.ts +17 -0
  56. package/dist/auth/http/handlers.d.ts.map +1 -0
  57. package/dist/auth/http/handlers.js +19 -0
  58. package/dist/auth/http/handlers.js.map +1 -0
  59. package/dist/auth/interfaces.d.ts +138 -0
  60. package/dist/auth/interfaces.d.ts.map +1 -0
  61. package/dist/auth/interfaces.js +105 -0
  62. package/dist/auth/interfaces.js.map +1 -0
  63. package/dist/auth/mfa/index.d.ts +6 -0
  64. package/dist/auth/mfa/index.d.ts.map +1 -0
  65. package/dist/auth/mfa/index.js +13 -0
  66. package/dist/auth/mfa/index.js.map +1 -0
  67. package/dist/auth/mfa/schema.d.ts +32 -0
  68. package/dist/auth/mfa/schema.d.ts.map +1 -0
  69. package/dist/auth/mfa/schema.js +35 -0
  70. package/dist/auth/mfa/schema.js.map +1 -0
  71. package/dist/auth/mfa/service.d.ts +65 -0
  72. package/dist/auth/mfa/service.d.ts.map +1 -0
  73. package/dist/auth/mfa/service.js +255 -0
  74. package/dist/auth/mfa/service.js.map +1 -0
  75. package/dist/auth/oauth-proxy.d.ts +58 -0
  76. package/dist/auth/oauth-proxy.d.ts.map +1 -0
  77. package/dist/auth/oauth-proxy.js +298 -0
  78. package/dist/auth/oauth-proxy.js.map +1 -0
  79. package/dist/auth/otp/index.d.ts +6 -0
  80. package/dist/auth/otp/index.d.ts.map +1 -0
  81. package/dist/auth/otp/index.js +13 -0
  82. package/dist/auth/otp/index.js.map +1 -0
  83. package/dist/auth/otp/schema.d.ts +32 -0
  84. package/dist/auth/otp/schema.d.ts.map +1 -0
  85. package/dist/auth/otp/schema.js +38 -0
  86. package/dist/auth/otp/schema.js.map +1 -0
  87. package/dist/auth/otp/service.d.ts +59 -0
  88. package/dist/auth/otp/service.d.ts.map +1 -0
  89. package/dist/auth/otp/service.js +183 -0
  90. package/dist/auth/otp/service.js.map +1 -0
  91. package/dist/auth/password-recovery.d.ts +61 -0
  92. package/dist/auth/password-recovery.d.ts.map +1 -0
  93. package/dist/auth/password-recovery.js +173 -0
  94. package/dist/auth/password-recovery.js.map +1 -0
  95. package/dist/auth/resolver.d.ts +29 -0
  96. package/dist/auth/resolver.d.ts.map +1 -0
  97. package/dist/auth/resolver.js +78 -0
  98. package/dist/auth/resolver.js.map +1 -0
  99. package/dist/auth/role-helpers.d.ts +56 -0
  100. package/dist/auth/role-helpers.d.ts.map +1 -0
  101. package/dist/auth/role-helpers.js +103 -0
  102. package/dist/auth/role-helpers.js.map +1 -0
  103. package/dist/auth/session-manager.d.ts +21 -0
  104. package/dist/auth/session-manager.d.ts.map +1 -0
  105. package/dist/auth/session-manager.js +30 -0
  106. package/dist/auth/session-manager.js.map +1 -0
  107. package/dist/auth/session-security.d.ts +14 -0
  108. package/dist/auth/session-security.d.ts.map +1 -0
  109. package/dist/auth/session-security.js +26 -0
  110. package/dist/auth/session-security.js.map +1 -0
  111. package/dist/auth/system/better-auth-schema.d.ts +144 -0
  112. package/dist/auth/system/better-auth-schema.d.ts.map +1 -0
  113. package/dist/auth/system/better-auth-schema.js +250 -0
  114. package/dist/auth/system/better-auth-schema.js.map +1 -0
  115. package/dist/auth/system/constants.d.ts +114 -0
  116. package/dist/auth/system/constants.d.ts.map +1 -0
  117. package/dist/auth/system/constants.js +205 -0
  118. package/dist/auth/system/constants.js.map +1 -0
  119. package/dist/auth/system/cookies.d.ts +83 -0
  120. package/dist/auth/system/cookies.d.ts.map +1 -0
  121. package/dist/auth/system/cookies.js +148 -0
  122. package/dist/auth/system/cookies.js.map +1 -0
  123. package/dist/auth/system/crypto.d.ts +53 -0
  124. package/dist/auth/system/crypto.d.ts.map +1 -0
  125. package/dist/auth/system/crypto.js +188 -0
  126. package/dist/auth/system/crypto.js.map +1 -0
  127. package/dist/auth/system/extended-schema.d.ts +145 -0
  128. package/dist/auth/system/extended-schema.d.ts.map +1 -0
  129. package/dist/auth/system/extended-schema.js +86 -0
  130. package/dist/auth/system/extended-schema.js.map +1 -0
  131. package/dist/auth/system/schema.d.ts +538 -0
  132. package/dist/auth/system/schema.d.ts.map +1 -0
  133. package/dist/auth/system/schema.js +306 -0
  134. package/dist/auth/system/schema.js.map +1 -0
  135. package/dist/cache/client.d.ts +77 -0
  136. package/dist/cache/client.d.ts.map +1 -0
  137. package/dist/cache/client.js +279 -0
  138. package/dist/cache/client.js.map +1 -0
  139. package/dist/cache/index.d.ts +9 -0
  140. package/dist/cache/index.d.ts.map +1 -0
  141. package/dist/cache/index.js +14 -0
  142. package/dist/cache/index.js.map +1 -0
  143. package/dist/cache/layers.d.ts +125 -0
  144. package/dist/cache/layers.d.ts.map +1 -0
  145. package/dist/cache/layers.js +354 -0
  146. package/dist/cache/layers.js.map +1 -0
  147. package/dist/cache/manager.d.ts +101 -0
  148. package/dist/cache/manager.d.ts.map +1 -0
  149. package/dist/cache/manager.js +423 -0
  150. package/dist/cache/manager.js.map +1 -0
  151. package/dist/cache/protocol.d.ts +115 -0
  152. package/dist/cache/protocol.d.ts.map +1 -0
  153. package/dist/cache/protocol.js +36 -0
  154. package/dist/cache/protocol.js.map +1 -0
  155. package/dist/cache/run-sidecar.d.ts +8 -0
  156. package/dist/cache/run-sidecar.d.ts.map +1 -0
  157. package/dist/cache/run-sidecar.js +71 -0
  158. package/dist/cache/run-sidecar.js.map +1 -0
  159. package/dist/cache/sidecar-client.d.ts +90 -0
  160. package/dist/cache/sidecar-client.d.ts.map +1 -0
  161. package/dist/cache/sidecar-client.js +437 -0
  162. package/dist/cache/sidecar-client.js.map +1 -0
  163. package/dist/cache/sidecar-server.d.ts +18 -0
  164. package/dist/cache/sidecar-server.d.ts.map +1 -0
  165. package/dist/cache/sidecar-server.js +90 -0
  166. package/dist/cache/sidecar-server.js.map +1 -0
  167. package/dist/cache/store.d.ts +90 -0
  168. package/dist/cache/store.d.ts.map +1 -0
  169. package/dist/cache/store.js +357 -0
  170. package/dist/cache/store.js.map +1 -0
  171. package/dist/cache/strategies.d.ts +52 -0
  172. package/dist/cache/strategies.d.ts.map +1 -0
  173. package/dist/cache/strategies.js +13 -0
  174. package/dist/cache/strategies.js.map +1 -0
  175. package/dist/cache/utils.d.ts +16 -0
  176. package/dist/cache/utils.d.ts.map +1 -0
  177. package/dist/cache/utils.js +101 -0
  178. package/dist/cache/utils.js.map +1 -0
  179. package/dist/config/index.d.ts +4 -0
  180. package/dist/config/index.d.ts.map +1 -0
  181. package/dist/config/index.js +20 -0
  182. package/dist/config/index.js.map +1 -0
  183. package/dist/config/paths.d.ts +16 -0
  184. package/dist/config/paths.d.ts.map +1 -0
  185. package/dist/config/paths.js +29 -0
  186. package/dist/config/paths.js.map +1 -0
  187. package/dist/config/schema.d.ts +42 -0
  188. package/dist/config/schema.d.ts.map +1 -0
  189. package/dist/config/schema.js +62 -0
  190. package/dist/config/schema.js.map +1 -0
  191. package/dist/config/service.d.ts +56 -0
  192. package/dist/config/service.d.ts.map +1 -0
  193. package/dist/config/service.js +108 -0
  194. package/dist/config/service.js.map +1 -0
  195. package/dist/context.d.ts +48 -0
  196. package/dist/context.d.ts.map +1 -0
  197. package/dist/context.js +6 -0
  198. package/dist/context.js.map +1 -0
  199. package/dist/controllers/admin/admin-tokens.controller.d.ts +159 -0
  200. package/dist/controllers/admin/admin-tokens.controller.d.ts.map +1 -0
  201. package/dist/controllers/admin/admin-tokens.controller.js +138 -0
  202. package/dist/controllers/admin/admin-tokens.controller.js.map +1 -0
  203. package/dist/controllers/admin/api-keys.controller.d.ts +187 -0
  204. package/dist/controllers/admin/api-keys.controller.d.ts.map +1 -0
  205. package/dist/controllers/admin/api-keys.controller.js +124 -0
  206. package/dist/controllers/admin/api-keys.controller.js.map +1 -0
  207. package/dist/controllers/admin/app-users.controller.d.ts +376 -0
  208. package/dist/controllers/admin/app-users.controller.d.ts.map +1 -0
  209. package/dist/controllers/admin/app-users.controller.js +348 -0
  210. package/dist/controllers/admin/app-users.controller.js.map +1 -0
  211. package/dist/controllers/admin/auth.controller.d.ts +285 -0
  212. package/dist/controllers/admin/auth.controller.d.ts.map +1 -0
  213. package/dist/controllers/admin/auth.controller.js +221 -0
  214. package/dist/controllers/admin/auth.controller.js.map +1 -0
  215. package/dist/controllers/admin/backup.controller.d.ts +250 -0
  216. package/dist/controllers/admin/backup.controller.d.ts.map +1 -0
  217. package/dist/controllers/admin/backup.controller.js +316 -0
  218. package/dist/controllers/admin/backup.controller.js.map +1 -0
  219. package/dist/controllers/admin/data.controller.d.ts +250 -0
  220. package/dist/controllers/admin/data.controller.d.ts.map +1 -0
  221. package/dist/controllers/admin/data.controller.js +240 -0
  222. package/dist/controllers/admin/data.controller.js.map +1 -0
  223. package/dist/controllers/admin/provisioning.controller.d.ts +77 -0
  224. package/dist/controllers/admin/provisioning.controller.d.ts.map +1 -0
  225. package/dist/controllers/admin/provisioning.controller.js +141 -0
  226. package/dist/controllers/admin/provisioning.controller.js.map +1 -0
  227. package/dist/controllers/admin/settings.controller.d.ts +153 -0
  228. package/dist/controllers/admin/settings.controller.d.ts.map +1 -0
  229. package/dist/controllers/admin/settings.controller.js +120 -0
  230. package/dist/controllers/admin/settings.controller.js.map +1 -0
  231. package/dist/controllers/admin/setup.controller.d.ts +104 -0
  232. package/dist/controllers/admin/setup.controller.d.ts.map +1 -0
  233. package/dist/controllers/admin/setup.controller.js +113 -0
  234. package/dist/controllers/admin/setup.controller.js.map +1 -0
  235. package/dist/controllers/admin/tenants.controller.d.ts +275 -0
  236. package/dist/controllers/admin/tenants.controller.d.ts.map +1 -0
  237. package/dist/controllers/admin/tenants.controller.js +206 -0
  238. package/dist/controllers/admin/tenants.controller.js.map +1 -0
  239. package/dist/controllers/admin/users.controller.d.ts +253 -0
  240. package/dist/controllers/admin/users.controller.d.ts.map +1 -0
  241. package/dist/controllers/admin/users.controller.js +186 -0
  242. package/dist/controllers/admin/users.controller.js.map +1 -0
  243. package/dist/controllers/auth.controller.d.ts +308 -0
  244. package/dist/controllers/auth.controller.d.ts.map +1 -0
  245. package/dist/controllers/auth.controller.js +305 -0
  246. package/dist/controllers/auth.controller.js.map +1 -0
  247. package/dist/controllers/crud-generator.controller.d.ts +83 -0
  248. package/dist/controllers/crud-generator.controller.d.ts.map +1 -0
  249. package/dist/controllers/crud-generator.controller.js +201 -0
  250. package/dist/controllers/crud-generator.controller.js.map +1 -0
  251. package/dist/controllers/deployment-events.controller.d.ts +74 -0
  252. package/dist/controllers/deployment-events.controller.d.ts.map +1 -0
  253. package/dist/controllers/deployment-events.controller.js +143 -0
  254. package/dist/controllers/deployment-events.controller.js.map +1 -0
  255. package/dist/controllers/index.d.ts +18 -0
  256. package/dist/controllers/index.d.ts.map +1 -0
  257. package/dist/controllers/index.js +42 -0
  258. package/dist/controllers/index.js.map +1 -0
  259. package/dist/controllers/introspection.controller.d.ts +430 -0
  260. package/dist/controllers/introspection.controller.d.ts.map +1 -0
  261. package/dist/controllers/introspection.controller.js +358 -0
  262. package/dist/controllers/introspection.controller.js.map +1 -0
  263. package/dist/controllers/invite.controller.d.ts +218 -0
  264. package/dist/controllers/invite.controller.d.ts.map +1 -0
  265. package/dist/controllers/invite.controller.js +218 -0
  266. package/dist/controllers/invite.controller.js.map +1 -0
  267. package/dist/controllers/mfa.controller.d.ts +211 -0
  268. package/dist/controllers/mfa.controller.d.ts.map +1 -0
  269. package/dist/controllers/mfa.controller.js +155 -0
  270. package/dist/controllers/mfa.controller.js.map +1 -0
  271. package/dist/controllers/otp.controller.d.ts +220 -0
  272. package/dist/controllers/otp.controller.d.ts.map +1 -0
  273. package/dist/controllers/otp.controller.js +223 -0
  274. package/dist/controllers/otp.controller.js.map +1 -0
  275. package/dist/controllers/storage.controller.d.ts +297 -0
  276. package/dist/controllers/storage.controller.d.ts.map +1 -0
  277. package/dist/controllers/storage.controller.js +304 -0
  278. package/dist/controllers/storage.controller.js.map +1 -0
  279. package/dist/controllers/system.controller.d.ts +176 -0
  280. package/dist/controllers/system.controller.d.ts.map +1 -0
  281. package/dist/controllers/system.controller.js +222 -0
  282. package/dist/controllers/system.controller.js.map +1 -0
  283. package/dist/controllers/tenant.controller.d.ts +316 -0
  284. package/dist/controllers/tenant.controller.d.ts.map +1 -0
  285. package/dist/controllers/tenant.controller.js +269 -0
  286. package/dist/controllers/tenant.controller.js.map +1 -0
  287. package/dist/db/cachedclient.d.ts +69 -0
  288. package/dist/db/cachedclient.d.ts.map +1 -0
  289. package/dist/db/cachedclient.js +331 -0
  290. package/dist/db/cachedclient.js.map +1 -0
  291. package/dist/db/distributed-client.d.ts +82 -0
  292. package/dist/db/distributed-client.d.ts.map +1 -0
  293. package/dist/db/distributed-client.js +477 -0
  294. package/dist/db/distributed-client.js.map +1 -0
  295. package/dist/db/factory.d.ts +19 -0
  296. package/dist/db/factory.d.ts.map +1 -0
  297. package/dist/db/factory.js +44 -0
  298. package/dist/db/factory.js.map +1 -0
  299. package/dist/db/interfaces.d.ts +67 -0
  300. package/dist/db/interfaces.d.ts.map +1 -0
  301. package/dist/db/interfaces.js +3 -0
  302. package/dist/db/interfaces.js.map +1 -0
  303. package/dist/db/socket-client.d.ts +122 -0
  304. package/dist/db/socket-client.d.ts.map +1 -0
  305. package/dist/db/socket-client.js +1092 -0
  306. package/dist/db/socket-client.js.map +1 -0
  307. package/dist/db/store-config.d.ts +19 -0
  308. package/dist/db/store-config.d.ts.map +1 -0
  309. package/dist/db/store-config.js +65 -0
  310. package/dist/db/store-config.js.map +1 -0
  311. package/dist/deployment/function-extractor.d.ts +11 -0
  312. package/dist/deployment/function-extractor.d.ts.map +1 -0
  313. package/dist/deployment/function-extractor.js +101 -0
  314. package/dist/deployment/function-extractor.js.map +1 -0
  315. package/dist/deployment/handler.d.ts +174 -0
  316. package/dist/deployment/handler.d.ts.map +1 -0
  317. package/dist/deployment/handler.js +1437 -0
  318. package/dist/deployment/handler.js.map +1 -0
  319. package/dist/deployment/persistence.d.ts +97 -0
  320. package/dist/deployment/persistence.d.ts.map +1 -0
  321. package/dist/deployment/persistence.js +238 -0
  322. package/dist/deployment/persistence.js.map +1 -0
  323. package/dist/deployment/protocol.d.ts +34 -0
  324. package/dist/deployment/protocol.d.ts.map +1 -0
  325. package/dist/deployment/protocol.js +7 -0
  326. package/dist/deployment/protocol.js.map +1 -0
  327. package/dist/di/container.d.ts +58 -0
  328. package/dist/di/container.d.ts.map +1 -0
  329. package/dist/di/container.js +121 -0
  330. package/dist/di/container.js.map +1 -0
  331. package/dist/di/decorators.d.ts +57 -0
  332. package/dist/di/decorators.d.ts.map +1 -0
  333. package/dist/di/decorators.js +80 -0
  334. package/dist/di/decorators.js.map +1 -0
  335. package/dist/di/index.d.ts +10 -0
  336. package/dist/di/index.d.ts.map +1 -0
  337. package/dist/di/index.js +21 -0
  338. package/dist/di/index.js.map +1 -0
  339. package/dist/di/resolver.d.ts +26 -0
  340. package/dist/di/resolver.d.ts.map +1 -0
  341. package/dist/di/resolver.js +32 -0
  342. package/dist/di/resolver.js.map +1 -0
  343. package/dist/docker/compose.d.ts +3 -0
  344. package/dist/docker/compose.d.ts.map +1 -0
  345. package/dist/docker/compose.js +106 -0
  346. package/dist/docker/compose.js.map +1 -0
  347. package/dist/docker/index.d.ts +4 -0
  348. package/dist/docker/index.d.ts.map +1 -0
  349. package/dist/docker/index.js +8 -0
  350. package/dist/docker/index.js.map +1 -0
  351. package/dist/docker/manager.d.ts +14 -0
  352. package/dist/docker/manager.d.ts.map +1 -0
  353. package/dist/docker/manager.js +76 -0
  354. package/dist/docker/manager.js.map +1 -0
  355. package/dist/docker/types.d.ts +18 -0
  356. package/dist/docker/types.d.ts.map +1 -0
  357. package/dist/docker/types.js +3 -0
  358. package/dist/docker/types.js.map +1 -0
  359. package/dist/email/index.d.ts +6 -0
  360. package/dist/email/index.d.ts.map +1 -0
  361. package/dist/email/index.js +25 -0
  362. package/dist/email/index.js.map +1 -0
  363. package/dist/email/service.d.ts +89 -0
  364. package/dist/email/service.d.ts.map +1 -0
  365. package/dist/email/service.js +215 -0
  366. package/dist/email/service.js.map +1 -0
  367. package/dist/email/templates/MagicLinkEmail.d.ts +8 -0
  368. package/dist/email/templates/MagicLinkEmail.d.ts.map +1 -0
  369. package/dist/email/templates/MagicLinkEmail.js +84 -0
  370. package/dist/email/templates/MagicLinkEmail.js.map +1 -0
  371. package/dist/email/templates/OtpEmail.d.ts +8 -0
  372. package/dist/email/templates/OtpEmail.d.ts.map +1 -0
  373. package/dist/email/templates/OtpEmail.js +72 -0
  374. package/dist/email/templates/OtpEmail.js.map +1 -0
  375. package/dist/email/templates/PasswordResetEmail.d.ts +9 -0
  376. package/dist/email/templates/PasswordResetEmail.d.ts.map +1 -0
  377. package/dist/email/templates/PasswordResetEmail.js +103 -0
  378. package/dist/email/templates/PasswordResetEmail.js.map +1 -0
  379. package/dist/email/templates/WelcomeEmail.d.ts +8 -0
  380. package/dist/email/templates/WelcomeEmail.d.ts.map +1 -0
  381. package/dist/email/templates/WelcomeEmail.js +94 -0
  382. package/dist/email/templates/WelcomeEmail.js.map +1 -0
  383. package/dist/email/templates/index.d.ts +9 -0
  384. package/dist/email/templates/index.d.ts.map +1 -0
  385. package/dist/email/templates/index.js +16 -0
  386. package/dist/email/templates/index.js.map +1 -0
  387. package/dist/engine/context.d.ts +9 -0
  388. package/dist/engine/context.d.ts.map +1 -0
  389. package/dist/engine/context.js +9 -0
  390. package/dist/engine/context.js.map +1 -0
  391. package/dist/engine/runner.d.ts +115 -0
  392. package/dist/engine/runner.d.ts.map +1 -0
  393. package/dist/engine/runner.js +617 -0
  394. package/dist/engine/runner.js.map +1 -0
  395. package/dist/functions/built-in/auth-apikey.d.ts +21 -0
  396. package/dist/functions/built-in/auth-apikey.d.ts.map +1 -0
  397. package/dist/functions/built-in/auth-apikey.js +344 -0
  398. package/dist/functions/built-in/auth-apikey.js.map +1 -0
  399. package/dist/functions/built-in/auth-email.d.ts +3 -0
  400. package/dist/functions/built-in/auth-email.d.ts.map +1 -0
  401. package/dist/functions/built-in/auth-email.js +63 -0
  402. package/dist/functions/built-in/auth-email.js.map +1 -0
  403. package/dist/functions/built-in/auth-invite.d.ts +5 -0
  404. package/dist/functions/built-in/auth-invite.d.ts.map +1 -0
  405. package/dist/functions/built-in/auth-invite.js +105 -0
  406. package/dist/functions/built-in/auth-invite.js.map +1 -0
  407. package/dist/functions/built-in/auth-password.d.ts +4 -0
  408. package/dist/functions/built-in/auth-password.d.ts.map +1 -0
  409. package/dist/functions/built-in/auth-password.js +107 -0
  410. package/dist/functions/built-in/auth-password.js.map +1 -0
  411. package/dist/functions/built-in/auth-session.d.ts +18 -0
  412. package/dist/functions/built-in/auth-session.d.ts.map +1 -0
  413. package/dist/functions/built-in/auth-session.js +221 -0
  414. package/dist/functions/built-in/auth-session.js.map +1 -0
  415. package/dist/functions/built-in/auth-signin.d.ts +20 -0
  416. package/dist/functions/built-in/auth-signin.d.ts.map +1 -0
  417. package/dist/functions/built-in/auth-signin.js +198 -0
  418. package/dist/functions/built-in/auth-signin.js.map +1 -0
  419. package/dist/functions/built-in/auth-signout.d.ts +18 -0
  420. package/dist/functions/built-in/auth-signout.d.ts.map +1 -0
  421. package/dist/functions/built-in/auth-signout.js +78 -0
  422. package/dist/functions/built-in/auth-signout.js.map +1 -0
  423. package/dist/functions/built-in/auth-signup.d.ts +21 -0
  424. package/dist/functions/built-in/auth-signup.d.ts.map +1 -0
  425. package/dist/functions/built-in/auth-signup.js +147 -0
  426. package/dist/functions/built-in/auth-signup.js.map +1 -0
  427. package/dist/functions/built-in/auth-tenant.d.ts +3 -0
  428. package/dist/functions/built-in/auth-tenant.d.ts.map +1 -0
  429. package/dist/functions/built-in/auth-tenant.js +86 -0
  430. package/dist/functions/built-in/auth-tenant.js.map +1 -0
  431. package/dist/functions/built-in/index.d.ts +55 -0
  432. package/dist/functions/built-in/index.d.ts.map +1 -0
  433. package/dist/functions/built-in/index.js +181 -0
  434. package/dist/functions/built-in/index.js.map +1 -0
  435. package/dist/functions/built-in/system-cache.d.ts +10 -0
  436. package/dist/functions/built-in/system-cache.d.ts.map +1 -0
  437. package/dist/functions/built-in/system-cache.js +98 -0
  438. package/dist/functions/built-in/system-cache.js.map +1 -0
  439. package/dist/functions/built-in/system-data.d.ts +13 -0
  440. package/dist/functions/built-in/system-data.d.ts.map +1 -0
  441. package/dist/functions/built-in/system-data.js +133 -0
  442. package/dist/functions/built-in/system-data.js.map +1 -0
  443. package/dist/functions/built-in/system-jobs.d.ts +22 -0
  444. package/dist/functions/built-in/system-jobs.d.ts.map +1 -0
  445. package/dist/functions/built-in/system-jobs.js +82 -0
  446. package/dist/functions/built-in/system-jobs.js.map +1 -0
  447. package/dist/functions/built-in/system-notifications.d.ts +41 -0
  448. package/dist/functions/built-in/system-notifications.d.ts.map +1 -0
  449. package/dist/functions/built-in/system-notifications.js +72 -0
  450. package/dist/functions/built-in/system-notifications.js.map +1 -0
  451. package/dist/functions/built-in/system-performance.d.ts +25 -0
  452. package/dist/functions/built-in/system-performance.d.ts.map +1 -0
  453. package/dist/functions/built-in/system-performance.js +83 -0
  454. package/dist/functions/built-in/system-performance.js.map +1 -0
  455. package/dist/functions/built-in-registry.d.ts +101 -0
  456. package/dist/functions/built-in-registry.d.ts.map +1 -0
  457. package/dist/functions/built-in-registry.js +165 -0
  458. package/dist/functions/built-in-registry.js.map +1 -0
  459. package/dist/functions/definition.d.ts +206 -0
  460. package/dist/functions/definition.d.ts.map +1 -0
  461. package/dist/functions/definition.js +178 -0
  462. package/dist/functions/definition.js.map +1 -0
  463. package/dist/functions/types.d.ts +151 -0
  464. package/dist/functions/types.d.ts.map +1 -0
  465. package/dist/functions/types.js +3 -0
  466. package/dist/functions/types.js.map +1 -0
  467. package/dist/http/context-helper.d.ts +60 -0
  468. package/dist/http/context-helper.d.ts.map +1 -0
  469. package/dist/http/context-helper.js +161 -0
  470. package/dist/http/context-helper.js.map +1 -0
  471. package/dist/http/definition.d.ts +76 -0
  472. package/dist/http/definition.d.ts.map +1 -0
  473. package/dist/http/definition.js +46 -0
  474. package/dist/http/definition.js.map +1 -0
  475. package/dist/http/index.d.ts +7 -0
  476. package/dist/http/index.d.ts.map +1 -0
  477. package/dist/http/index.js +12 -0
  478. package/dist/http/index.js.map +1 -0
  479. package/dist/http/plugins/auth.d.ts +71 -0
  480. package/dist/http/plugins/auth.d.ts.map +1 -0
  481. package/dist/http/plugins/auth.js +67 -0
  482. package/dist/http/plugins/auth.js.map +1 -0
  483. package/dist/http/plugins/better-auth.d.ts +67 -0
  484. package/dist/http/plugins/better-auth.d.ts.map +1 -0
  485. package/dist/http/plugins/better-auth.js +48 -0
  486. package/dist/http/plugins/better-auth.js.map +1 -0
  487. package/dist/http/router.d.ts +59 -0
  488. package/dist/http/router.d.ts.map +1 -0
  489. package/dist/http/router.js +371 -0
  490. package/dist/http/router.js.map +1 -0
  491. package/dist/http/server.d.ts +15 -0
  492. package/dist/http/server.d.ts.map +1 -0
  493. package/dist/http/server.js +217 -0
  494. package/dist/http/server.js.map +1 -0
  495. package/dist/http/types.d.ts +142 -0
  496. package/dist/http/types.d.ts.map +1 -0
  497. package/dist/http/types.js +7 -0
  498. package/dist/http/types.js.map +1 -0
  499. package/dist/index.d.mts +2 -0
  500. package/dist/index.d.mts.map +1 -0
  501. package/dist/index.mjs +116 -0
  502. package/dist/index.mjs.map +1 -0
  503. package/dist/ipc/run-sidecar.d.ts +8 -0
  504. package/dist/ipc/run-sidecar.d.ts.map +1 -0
  505. package/dist/ipc/run-sidecar.js +127 -0
  506. package/dist/ipc/run-sidecar.js.map +1 -0
  507. package/dist/ipc/socket-bridge.d.ts +114 -0
  508. package/dist/ipc/socket-bridge.d.ts.map +1 -0
  509. package/dist/ipc/socket-bridge.js +724 -0
  510. package/dist/ipc/socket-bridge.js.map +1 -0
  511. package/dist/jobs/index.d.ts +7 -0
  512. package/dist/jobs/index.d.ts.map +1 -0
  513. package/dist/jobs/index.js +10 -0
  514. package/dist/jobs/index.js.map +1 -0
  515. package/dist/jobs/queue.d.ts +62 -0
  516. package/dist/jobs/queue.d.ts.map +1 -0
  517. package/dist/jobs/queue.js +192 -0
  518. package/dist/jobs/queue.js.map +1 -0
  519. package/dist/jobs/run-scheduler.d.ts +2 -0
  520. package/dist/jobs/run-scheduler.d.ts.map +1 -0
  521. package/dist/jobs/run-scheduler.js +245 -0
  522. package/dist/jobs/run-scheduler.js.map +1 -0
  523. package/dist/jobs/run-worker.d.ts +2 -0
  524. package/dist/jobs/run-worker.d.ts.map +1 -0
  525. package/dist/jobs/run-worker.js +123 -0
  526. package/dist/jobs/run-worker.js.map +1 -0
  527. package/dist/jobs/runtime-loader.d.ts +14 -0
  528. package/dist/jobs/runtime-loader.d.ts.map +1 -0
  529. package/dist/jobs/runtime-loader.js +122 -0
  530. package/dist/jobs/runtime-loader.js.map +1 -0
  531. package/dist/jobs/scheduler-client.d.ts +33 -0
  532. package/dist/jobs/scheduler-client.d.ts.map +1 -0
  533. package/dist/jobs/scheduler-client.js +69 -0
  534. package/dist/jobs/scheduler-client.js.map +1 -0
  535. package/dist/jobs/scheduler.d.ts +73 -0
  536. package/dist/jobs/scheduler.d.ts.map +1 -0
  537. package/dist/jobs/scheduler.js +297 -0
  538. package/dist/jobs/scheduler.js.map +1 -0
  539. package/dist/jobs/worker-thread.d.ts +27 -0
  540. package/dist/jobs/worker-thread.d.ts.map +1 -0
  541. package/dist/jobs/worker-thread.js +173 -0
  542. package/dist/jobs/worker-thread.js.map +1 -0
  543. package/dist/jobs/worker.d.ts +30 -0
  544. package/dist/jobs/worker.d.ts.map +1 -0
  545. package/dist/jobs/worker.js +262 -0
  546. package/dist/jobs/worker.js.map +1 -0
  547. package/dist/jobs/ws-client.d.ts +23 -0
  548. package/dist/jobs/ws-client.d.ts.map +1 -0
  549. package/dist/jobs/ws-client.js +105 -0
  550. package/dist/jobs/ws-client.js.map +1 -0
  551. package/dist/linq/async-enumerable.d.ts +91 -0
  552. package/dist/linq/async-enumerable.d.ts.map +1 -0
  553. package/dist/linq/async-enumerable.js +176 -0
  554. package/dist/linq/async-enumerable.js.map +1 -0
  555. package/dist/linq/enumerable.d.ts +94 -0
  556. package/dist/linq/enumerable.d.ts.map +1 -0
  557. package/dist/linq/enumerable.js +210 -0
  558. package/dist/linq/enumerable.js.map +1 -0
  559. package/dist/linq/index.d.ts +25 -0
  560. package/dist/linq/index.d.ts.map +1 -0
  561. package/dist/linq/index.js +27 -0
  562. package/dist/linq/index.js.map +1 -0
  563. package/dist/linq/interfaces.d.ts +23 -0
  564. package/dist/linq/interfaces.d.ts.map +1 -0
  565. package/dist/linq/interfaces.js +3 -0
  566. package/dist/linq/interfaces.js.map +1 -0
  567. package/dist/logging/logger.d.ts +85 -0
  568. package/dist/logging/logger.d.ts.map +1 -0
  569. package/dist/logging/logger.js +217 -0
  570. package/dist/logging/logger.js.map +1 -0
  571. package/dist/query/builder.d.ts +91 -0
  572. package/dist/query/builder.d.ts.map +1 -0
  573. package/dist/query/builder.js +103 -0
  574. package/dist/query/builder.js.map +1 -0
  575. package/dist/query/types.d.ts +112 -0
  576. package/dist/query/types.d.ts.map +1 -0
  577. package/dist/query/types.js +3 -0
  578. package/dist/query/types.js.map +1 -0
  579. package/dist/reactivity/graph.d.ts +8 -0
  580. package/dist/reactivity/graph.d.ts.map +1 -0
  581. package/dist/reactivity/graph.js +51 -0
  582. package/dist/reactivity/graph.js.map +1 -0
  583. package/dist/repository/db-set.d.ts +220 -0
  584. package/dist/repository/db-set.d.ts.map +1 -0
  585. package/dist/repository/db-set.js +515 -0
  586. package/dist/repository/db-set.js.map +1 -0
  587. package/dist/repository/ef-core.d.ts +177 -0
  588. package/dist/repository/ef-core.d.ts.map +1 -0
  589. package/dist/repository/ef-core.js +404 -0
  590. package/dist/repository/ef-core.js.map +1 -0
  591. package/dist/repository/factory.d.ts +117 -0
  592. package/dist/repository/factory.d.ts.map +1 -0
  593. package/dist/repository/factory.js +183 -0
  594. package/dist/repository/factory.js.map +1 -0
  595. package/dist/repository/interfaces.d.ts +449 -0
  596. package/dist/repository/interfaces.d.ts.map +1 -0
  597. package/dist/repository/interfaces.js +21 -0
  598. package/dist/repository/interfaces.js.map +1 -0
  599. package/dist/repository/provider.d.ts +16 -0
  600. package/dist/repository/provider.d.ts.map +1 -0
  601. package/dist/repository/provider.js +674 -0
  602. package/dist/repository/provider.js.map +1 -0
  603. package/dist/repository/queryable.d.ts +111 -0
  604. package/dist/repository/queryable.d.ts.map +1 -0
  605. package/dist/repository/queryable.js +566 -0
  606. package/dist/repository/queryable.js.map +1 -0
  607. package/dist/rpc/adapter.d.ts +18 -0
  608. package/dist/rpc/adapter.d.ts.map +1 -0
  609. package/dist/rpc/adapter.js +101 -0
  610. package/dist/rpc/adapter.js.map +1 -0
  611. package/dist/rpc/router.d.ts +82 -0
  612. package/dist/rpc/router.d.ts.map +1 -0
  613. package/dist/rpc/router.js +177 -0
  614. package/dist/rpc/router.js.map +1 -0
  615. package/dist/schema/definition.d.ts +51 -0
  616. package/dist/schema/definition.d.ts.map +1 -0
  617. package/dist/schema/definition.js +79 -0
  618. package/dist/schema/definition.js.map +1 -0
  619. package/dist/schema/input-types.d.ts +88 -0
  620. package/dist/schema/input-types.d.ts.map +1 -0
  621. package/dist/schema/input-types.js +81 -0
  622. package/dist/schema/input-types.js.map +1 -0
  623. package/dist/schema/modifiers.d.ts +173 -0
  624. package/dist/schema/modifiers.d.ts.map +1 -0
  625. package/dist/schema/modifiers.js +218 -0
  626. package/dist/schema/modifiers.js.map +1 -0
  627. package/dist/schema/relationship-types.d.ts +109 -0
  628. package/dist/schema/relationship-types.d.ts.map +1 -0
  629. package/dist/schema/relationship-types.js +11 -0
  630. package/dist/schema/relationship-types.js.map +1 -0
  631. package/dist/schema/type-helpers.d.ts +105 -0
  632. package/dist/schema/type-helpers.d.ts.map +1 -0
  633. package/dist/schema/type-helpers.js +215 -0
  634. package/dist/schema/type-helpers.js.map +1 -0
  635. package/dist/schema/types.d.ts +144 -0
  636. package/dist/schema/types.d.ts.map +1 -0
  637. package/dist/schema/types.js +12 -0
  638. package/dist/schema/types.js.map +1 -0
  639. package/dist/schema/validators.d.ts +127 -0
  640. package/dist/schema/validators.d.ts.map +1 -0
  641. package/dist/schema/validators.js +164 -0
  642. package/dist/schema/validators.js.map +1 -0
  643. package/dist/services/admin/app-users.service.d.ts +138 -0
  644. package/dist/services/admin/app-users.service.d.ts.map +1 -0
  645. package/dist/services/admin/app-users.service.js +435 -0
  646. package/dist/services/admin/app-users.service.js.map +1 -0
  647. package/dist/services/admin/auth.service.d.ts +104 -0
  648. package/dist/services/admin/auth.service.d.ts.map +1 -0
  649. package/dist/services/admin/auth.service.js +208 -0
  650. package/dist/services/admin/auth.service.js.map +1 -0
  651. package/dist/services/admin/backup/BackupOrchestrator.d.ts +38 -0
  652. package/dist/services/admin/backup/BackupOrchestrator.d.ts.map +1 -0
  653. package/dist/services/admin/backup/BackupOrchestrator.js +350 -0
  654. package/dist/services/admin/backup/BackupOrchestrator.js.map +1 -0
  655. package/dist/services/admin/backup/DataStreamer.d.ts +11 -0
  656. package/dist/services/admin/backup/DataStreamer.d.ts.map +1 -0
  657. package/dist/services/admin/backup/DataStreamer.js +85 -0
  658. package/dist/services/admin/backup/DataStreamer.js.map +1 -0
  659. package/dist/services/admin/backup/LegacyAdapter.d.ts +28 -0
  660. package/dist/services/admin/backup/LegacyAdapter.d.ts.map +1 -0
  661. package/dist/services/admin/backup/LegacyAdapter.js +35 -0
  662. package/dist/services/admin/backup/LegacyAdapter.js.map +1 -0
  663. package/dist/services/admin/backup/SqliteGenerator.d.ts +15 -0
  664. package/dist/services/admin/backup/SqliteGenerator.d.ts.map +1 -0
  665. package/dist/services/admin/backup/SqliteGenerator.js +152 -0
  666. package/dist/services/admin/backup/SqliteGenerator.js.map +1 -0
  667. package/dist/services/admin/backup/StorageStreamer.d.ts +17 -0
  668. package/dist/services/admin/backup/StorageStreamer.d.ts.map +1 -0
  669. package/dist/services/admin/backup/StorageStreamer.js +117 -0
  670. package/dist/services/admin/backup/StorageStreamer.js.map +1 -0
  671. package/dist/services/admin/backup/ZipComposer.d.ts +17 -0
  672. package/dist/services/admin/backup/ZipComposer.d.ts.map +1 -0
  673. package/dist/services/admin/backup/ZipComposer.js +95 -0
  674. package/dist/services/admin/backup/ZipComposer.js.map +1 -0
  675. package/dist/services/admin/backup/ZipExtractor.d.ts +24 -0
  676. package/dist/services/admin/backup/ZipExtractor.d.ts.map +1 -0
  677. package/dist/services/admin/backup/ZipExtractor.js +135 -0
  678. package/dist/services/admin/backup/ZipExtractor.js.map +1 -0
  679. package/dist/services/admin/backup/index.d.ts +9 -0
  680. package/dist/services/admin/backup/index.d.ts.map +1 -0
  681. package/dist/services/admin/backup/index.js +18 -0
  682. package/dist/services/admin/backup/index.js.map +1 -0
  683. package/dist/services/admin/backup/types.d.ts +48 -0
  684. package/dist/services/admin/backup/types.d.ts.map +1 -0
  685. package/dist/services/admin/backup/types.js +3 -0
  686. package/dist/services/admin/backup/types.js.map +1 -0
  687. package/dist/services/admin/backup.service.d.ts +117 -0
  688. package/dist/services/admin/backup.service.d.ts.map +1 -0
  689. package/dist/services/admin/backup.service.js +709 -0
  690. package/dist/services/admin/backup.service.js.map +1 -0
  691. package/dist/services/admin/data.service.d.ts +109 -0
  692. package/dist/services/admin/data.service.d.ts.map +1 -0
  693. package/dist/services/admin/data.service.js +734 -0
  694. package/dist/services/admin/data.service.js.map +1 -0
  695. package/dist/services/admin/tenants.service.d.ts +99 -0
  696. package/dist/services/admin/tenants.service.d.ts.map +1 -0
  697. package/dist/services/admin/tenants.service.js +173 -0
  698. package/dist/services/admin/tenants.service.js.map +1 -0
  699. package/dist/services/auth.service.d.ts +155 -0
  700. package/dist/services/auth.service.d.ts.map +1 -0
  701. package/dist/services/auth.service.js +401 -0
  702. package/dist/services/auth.service.js.map +1 -0
  703. package/dist/services/introspection.service.d.ts +262 -0
  704. package/dist/services/introspection.service.d.ts.map +1 -0
  705. package/dist/services/introspection.service.js +400 -0
  706. package/dist/services/introspection.service.js.map +1 -0
  707. package/dist/services/invite.service.d.ts +87 -0
  708. package/dist/services/invite.service.d.ts.map +1 -0
  709. package/dist/services/invite.service.js +216 -0
  710. package/dist/services/invite.service.js.map +1 -0
  711. package/dist/services/storage.service.d.ts +79 -0
  712. package/dist/services/storage.service.d.ts.map +1 -0
  713. package/dist/services/storage.service.js +209 -0
  714. package/dist/services/storage.service.js.map +1 -0
  715. package/dist/services/system.service.d.ts +60 -0
  716. package/dist/services/system.service.d.ts.map +1 -0
  717. package/dist/services/system.service.js +176 -0
  718. package/dist/services/system.service.js.map +1 -0
  719. package/dist/services/tenant.service.d.ts +112 -0
  720. package/dist/services/tenant.service.d.ts.map +1 -0
  721. package/dist/services/tenant.service.js +359 -0
  722. package/dist/services/tenant.service.js.map +1 -0
  723. package/dist/settings/index.d.ts +6 -0
  724. package/dist/settings/index.d.ts.map +1 -0
  725. package/dist/settings/index.js +13 -0
  726. package/dist/settings/index.js.map +1 -0
  727. package/dist/settings/schema.d.ts +39 -0
  728. package/dist/settings/schema.d.ts.map +1 -0
  729. package/dist/settings/schema.js +41 -0
  730. package/dist/settings/schema.js.map +1 -0
  731. package/dist/settings/service.d.ts +28 -0
  732. package/dist/settings/service.d.ts.map +1 -0
  733. package/dist/settings/service.js +133 -0
  734. package/dist/settings/service.js.map +1 -0
  735. package/dist/startup/bootstrap.d.ts +13 -0
  736. package/dist/startup/bootstrap.d.ts.map +1 -0
  737. package/dist/startup/bootstrap.js +262 -0
  738. package/dist/startup/bootstrap.js.map +1 -0
  739. package/dist/startup/cluster-manager.d.ts +59 -0
  740. package/dist/startup/cluster-manager.d.ts.map +1 -0
  741. package/dist/startup/cluster-manager.js +238 -0
  742. package/dist/startup/cluster-manager.js.map +1 -0
  743. package/dist/startup/process-manager.d.ts +46 -0
  744. package/dist/startup/process-manager.d.ts.map +1 -0
  745. package/dist/startup/process-manager.js +288 -0
  746. package/dist/startup/process-manager.js.map +1 -0
  747. package/dist/startup/processes.d.mts +15 -0
  748. package/dist/startup/processes.d.mts.map +1 -0
  749. package/dist/startup/processes.mjs +162 -0
  750. package/dist/startup/processes.mjs.map +1 -0
  751. package/dist/startup.js +42 -0
  752. package/dist/storage/fs-backend.d.ts +38 -0
  753. package/dist/storage/fs-backend.d.ts.map +1 -0
  754. package/dist/storage/fs-backend.js +129 -0
  755. package/dist/storage/fs-backend.js.map +1 -0
  756. package/dist/storage/manager.d.ts +88 -0
  757. package/dist/storage/manager.d.ts.map +1 -0
  758. package/dist/storage/manager.js +416 -0
  759. package/dist/storage/manager.js.map +1 -0
  760. package/dist/storage/s3-backend.d.ts +30 -0
  761. package/dist/storage/s3-backend.d.ts.map +1 -0
  762. package/dist/storage/s3-backend.js +65 -0
  763. package/dist/storage/s3-backend.js.map +1 -0
  764. package/dist/storage/types.d.ts +56 -0
  765. package/dist/storage/types.d.ts.map +1 -0
  766. package/dist/storage/types.js +3 -0
  767. package/dist/storage/types.js.map +1 -0
  768. package/dist/utils/http.d.ts +16 -0
  769. package/dist/utils/http.d.ts.map +1 -0
  770. package/dist/utils/http.js +61 -0
  771. package/dist/utils/http.js.map +1 -0
  772. package/dist/utils/introspection-helpers.d.ts +35 -0
  773. package/dist/utils/introspection-helpers.d.ts.map +1 -0
  774. package/dist/utils/introspection-helpers.js +246 -0
  775. package/dist/utils/introspection-helpers.js.map +1 -0
  776. package/dist/webhook/definition.d.ts +79 -0
  777. package/dist/webhook/definition.d.ts.map +1 -0
  778. package/dist/webhook/definition.js +33 -0
  779. package/dist/webhook/definition.js.map +1 -0
  780. package/dist/webhook/guard.d.ts +34 -0
  781. package/dist/webhook/guard.d.ts.map +1 -0
  782. package/dist/webhook/guard.js +86 -0
  783. package/dist/webhook/guard.js.map +1 -0
  784. package/dist/webhook/index.d.ts +9 -0
  785. package/dist/webhook/index.d.ts.map +1 -0
  786. package/dist/webhook/index.js +19 -0
  787. package/dist/webhook/index.js.map +1 -0
  788. package/dist/webhook/verifier.d.ts +24 -0
  789. package/dist/webhook/verifier.d.ts.map +1 -0
  790. package/dist/webhook/verifier.js +107 -0
  791. package/dist/webhook/verifier.js.map +1 -0
  792. package/dist/websocket/server.d.ts +74 -0
  793. package/dist/websocket/server.d.ts.map +1 -0
  794. package/dist/websocket/server.js +693 -0
  795. package/dist/websocket/server.js.map +1 -0
  796. package/dist/websocket/types.d.ts +53 -0
  797. package/dist/websocket/types.d.ts.map +1 -0
  798. package/dist/websocket/types.js +3 -0
  799. package/dist/websocket/types.js.map +1 -0
  800. package/dist/websocket/ws-compat.d.ts +26 -0
  801. package/dist/websocket/ws-compat.d.ts.map +1 -0
  802. package/dist/websocket/ws-compat.js +35 -0
  803. package/dist/websocket/ws-compat.js.map +1 -0
  804. package/docker/README.md +5 -0
  805. package/package.json +210 -0
  806. package/scripts/postinstall.js +31 -0
  807. package/templates/.env.example +55 -0
  808. package/templates/archlast.config.js +36 -0
  809. package/templates/docker-compose.dev.yml +8 -0
  810. package/templates/docker-compose.prod.yml +15 -0
  811. package/templates/docker-compose.yml +33 -0
@@ -0,0 +1,693 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArchlastWebSocketHandler = void 0;
4
+ const logger_js_1 = require("../logging/logger.js");
5
+ const cookies_js_1 = require("../auth/system/cookies.js");
6
+ const MAX_MESSAGE_BYTES = Number(process.env.WS_MAX_MESSAGE_BYTES ?? 65536);
7
+ const RATE_LIMIT_WINDOW_MS = Number(process.env.WS_RATE_LIMIT_WINDOW_MS ?? 1000);
8
+ const MAX_MESSAGES_PER_WINDOW = Number(process.env.WS_MAX_MESSAGES_PER_WINDOW ?? 50);
9
+ const HEARTBEAT_INTERVAL_MS = Number(process.env.WS_HEARTBEAT_INTERVAL_MS ?? 15000);
10
+ const IDLE_TIMEOUT_MS = Number(process.env.WS_IDLE_TIMEOUT_MS ?? 45000);
11
+ const REVALIDATION_DEBOUNCE_MS = Number(process.env.REVALIDATION_DEBOUNCE_MS ?? 10);
12
+ const role_helpers_js_1 = require("../auth/role-helpers.js");
13
+ const context_helper_js_1 = require("../http/context-helper.js");
14
+ // Cookie name for Better-Auth session
15
+ const BETTER_AUTH_SESSION_COOKIE = "better-auth.session_token";
16
+ // ... existing imports ...
17
+ class ArchlastWebSocketHandler {
18
+ authResolver;
19
+ engine;
20
+ db;
21
+ // Map<QueryId, Set<WebSocket>>
22
+ // Note: QueryId here is the "canonical" ID (e.g. hash of name+args)
23
+ // But for simplicity, we'll use the client-provided queryId and assume it's unique per client connection.
24
+ // Actually, to support "re-run all clients who asked for X", we need a way to map "canonical query" -> clients.
25
+ // But the DependencyGraph tracks "QueryId".
26
+ // If we use ClientQueryId as the ID in DependencyGraph, then we have one entry per client per query.
27
+ // This is fine for now. It means if 100 clients watch "tasks", we have 100 entries in the graph.
28
+ // Optimization: Deduplicate identical queries. (Not doing this for Phase 1).
29
+ // So we just need to map QueryId -> WebSocket to push updates.
30
+ querySubscribers = new Map();
31
+ // Map canonical function keys to session-specific query IDs
32
+ // This allows job-executed queries to trigger revalidation of WebSocket queries
33
+ // Example: "fn:tasks.list:abc123" → Set("session1:query1", "session2:query5")
34
+ functionToQueryIds = new Map();
35
+ revalidationQueue = new Set();
36
+ revalidationTimer = null;
37
+ // Track all active WebSocket connections
38
+ connectedClients = new Set();
39
+ // Track admin connections for admin events broadcasting
40
+ adminConnections = new Set();
41
+ constructor(authResolver, engine, db) {
42
+ this.authResolver = authResolver;
43
+ this.engine = engine;
44
+ this.db = db;
45
+ }
46
+ async open(ws) {
47
+ ws.data.subscriptions = new Map();
48
+ ws.data.lastSeen = Date.now();
49
+ ws.data.msgWindowStart = Date.now();
50
+ ws.data.msgCount = 0;
51
+ ws.data.heartbeatTimer = setInterval(() => {
52
+ const last = ws.data.lastSeen ?? 0;
53
+ if (Date.now() - last > IDLE_TIMEOUT_MS) {
54
+ clearInterval(ws.data.heartbeatTimer);
55
+ ws.close(1001, "idle timeout");
56
+ }
57
+ }, HEARTBEAT_INTERVAL_MS);
58
+ // Track this connection
59
+ this.connectedClients.add(ws);
60
+ logger_js_1.logger.log({
61
+ timestamp: Date.now(),
62
+ level: "info",
63
+ kind: "system",
64
+ message: `[WebSocket] Opened connection. Total: ${this.connectedClients.size}`,
65
+ });
66
+ }
67
+ async message(ws, message) {
68
+ try {
69
+ // Calculate message size for limit check
70
+ let size;
71
+ if (typeof message === "string") {
72
+ size = Buffer.byteLength(message);
73
+ }
74
+ else if (Buffer.isBuffer(message) || message instanceof ArrayBuffer) {
75
+ size = message.byteLength;
76
+ }
77
+ else {
78
+ // Pre-parsed object from Elysia
79
+ size = JSON.stringify(message).length;
80
+ }
81
+ if (size > MAX_MESSAGE_BYTES) {
82
+ ws.close(1009, "message too large");
83
+ return;
84
+ }
85
+ const now = Date.now();
86
+ ws.data.lastSeen = now;
87
+ const windowStart = ws.data.msgWindowStart ?? now;
88
+ const count = ws.data.msgCount ?? 0;
89
+ if (now - windowStart > RATE_LIMIT_WINDOW_MS) {
90
+ ws.data.msgWindowStart = now;
91
+ ws.data.msgCount = 0;
92
+ }
93
+ else if (count >= MAX_MESSAGES_PER_WINDOW) {
94
+ ws.close(1011, "rate limit");
95
+ return;
96
+ }
97
+ ws.data.msgCount = (ws.data.msgCount ?? 0) + 1;
98
+ // Handle message parsing - Elysia may pass pre-parsed JSON objects
99
+ let msg;
100
+ if (typeof message === "object" && message !== null && !Buffer.isBuffer(message)) {
101
+ // Already parsed by Elysia
102
+ msg = message;
103
+ }
104
+ else {
105
+ // Raw string or buffer - need to parse
106
+ const data = typeof message === "string" ? message : message.toString();
107
+ msg = JSON.parse(data);
108
+ }
109
+ if (msg.type === "connect") {
110
+ const authInput = msg.auth || {};
111
+ // Merge client-provided connect auth payload with best-effort header/cookie resolution.
112
+ // This enables cookie-based sessions for WS when the client forwards a Cookie header.
113
+ // Headers from the HTTP Upgrade request (captured in http/server.ts via derive)
114
+ const upgradeHeaders = ws.data.requestHeaders || {};
115
+ // Headers from the "connect" message payload (optional manual override)
116
+ const connectPayloadHeaders = {
117
+ ...(typeof authInput?.headers === "object" &&
118
+ authInput?.headers
119
+ ? authInput.headers
120
+ : {}),
121
+ };
122
+ const mergedHeaders = {
123
+ ...upgradeHeaders,
124
+ ...connectPayloadHeaders,
125
+ };
126
+ // Parse cookies from Upgrade headers
127
+ const upgradeCookieHeader = upgradeHeaders["cookie"] || upgradeHeaders["Cookie"] || "";
128
+ const upgradeCookies = (0, cookies_js_1.parseCookieHeader)(upgradeCookieHeader);
129
+ // Parse cookies from "connect" message payload
130
+ const payloadCookieHeaderRaw = typeof authInput?.headers?.cookie === "string"
131
+ ? authInput.headers.cookie
132
+ : typeof authInput?.headers?.Cookie === "string"
133
+ ? authInput.headers.Cookie
134
+ : "";
135
+ const payloadCookiesFromHeader = (0, cookies_js_1.parseCookieHeader)(payloadCookieHeaderRaw);
136
+ const payloadCookiesDirect = typeof authInput?.cookies === "object" && authInput?.cookies
137
+ ? authInput.cookies
138
+ : {};
139
+ const mergedCookies = {
140
+ ...upgradeCookies,
141
+ ...payloadCookiesFromHeader,
142
+ ...payloadCookiesDirect,
143
+ };
144
+ ws.data.requestHeaders = mergedHeaders;
145
+ ws.data.requestCookies = mergedCookies;
146
+ // Dynamic cookie resolution for legacy auth
147
+ const appId = mergedHeaders["x-archlast-app-id"] || mergedHeaders["X-Archlast-App-Id"];
148
+ const cookieName = appId ? `archlast_session_${appId}` : "archlast_session";
149
+ const token = mergedCookies[cookieName];
150
+ // For Better-Auth: check if we have a Better-Auth session cookie
151
+ // Better-Auth uses cookies like "better-auth.session_token" or "better-auth.session_token.X"
152
+ let betterAuthToken = null;
153
+ for (const [key, value] of Object.entries(mergedCookies)) {
154
+ if (key.startsWith("better-auth.session_token")) {
155
+ betterAuthToken = value;
156
+ break;
157
+ }
158
+ }
159
+ // Use Better-Auth token if available, otherwise fallback to legacy token
160
+ const resolvedToken = authInput.token || betterAuthToken || token;
161
+ const authContext = await this.authResolver.resolve({
162
+ ...authInput,
163
+ token: resolvedToken,
164
+ headers: mergedHeaders,
165
+ cookies: mergedCookies,
166
+ });
167
+ let finalAuthContext = authContext;
168
+ // Check for admin authentication via Authorization header, x-api-key, or cookies
169
+ // This validates: Better-Auth sessions, API keys (arch_*), and username/password sign-in
170
+ if (!finalAuthContext.isAuthenticated) {
171
+ // Check x-api-key header first (Better-Auth API key)
172
+ const apiKeyHeader = mergedHeaders["x-api-key"] || mergedHeaders["X-Api-Key"];
173
+ // Check Authorization header (client sends Bearer token)
174
+ const authHeader = mergedHeaders["authorization"] || mergedHeaders["Authorization"];
175
+ // Check Better-Auth session cookie
176
+ const adminCookie = mergedCookies[BETTER_AUTH_SESSION_COOKIE] ||
177
+ mergedCookies["better-auth.session_token"] ||
178
+ mergedCookies["archlast_admin_session"];
179
+ if (apiKeyHeader || authHeader || adminCookie) {
180
+ try {
181
+ // Create a synthetic Request object to use with requireAdmin
182
+ const headers = new Headers();
183
+ if (apiKeyHeader) {
184
+ headers.set("x-api-key", apiKeyHeader);
185
+ }
186
+ if (authHeader) {
187
+ headers.set("authorization", authHeader);
188
+ }
189
+ if (adminCookie) {
190
+ headers.set("cookie", `${BETTER_AUTH_SESSION_COOKIE}=${adminCookie}`);
191
+ }
192
+ // Also include user-agent for logging
193
+ if (mergedHeaders["user-agent"]) {
194
+ headers.set("user-agent", mergedHeaders["user-agent"]);
195
+ }
196
+ const syntheticReq = new Request("http://internal", { headers });
197
+ // Use Better-Auth requireAdmin for admin authentication
198
+ const adminAuth = await (0, role_helpers_js_1.requireAdmin)((0, context_helper_js_1.getBetterAuth)(), syntheticReq);
199
+ if (adminAuth) {
200
+ // Extract userId from Better-Auth
201
+ const userId = adminAuth.user?.id || adminAuth.user?._id || adminAuth.userId;
202
+ const sessionId = adminAuth.session?.id || adminAuth.session?._id || adminAuth.sessionId;
203
+ // Create synthetic AuthContext for Admin
204
+ finalAuthContext = {
205
+ userId,
206
+ isAuthenticated: true,
207
+ isAdminToken: true, // CRITICAL: Mark as admin token for edge function authorization
208
+ provider: "better-auth",
209
+ type: "session",
210
+ // Minimal implementation for context
211
+ user: adminAuth.user,
212
+ session: adminAuth.session,
213
+ raw: { sessionId },
214
+ permissions: ["*"],
215
+ role: "super_admin",
216
+ hasPermission: () => true,
217
+ requireAuthenticated: () => { },
218
+ requireTenant: () => { }, // Admin doesn't need tenant context usually
219
+ requirePermission: () => { },
220
+ requireRole: () => { },
221
+ apiKey: null,
222
+ apiKeyId: null,
223
+ tenant: null,
224
+ membership: null,
225
+ tenantId: null,
226
+ };
227
+ logger_js_1.logger.log({
228
+ timestamp: Date.now(),
229
+ level: "info",
230
+ kind: "system",
231
+ message: "[WebSocket] Admin authentication verified successfully",
232
+ context: {
233
+ userId,
234
+ method: apiKeyHeader ? "x-api-key" : authHeader?.startsWith("Bearer ") ? "Bearer token" : "cookie",
235
+ },
236
+ });
237
+ }
238
+ else {
239
+ logger_js_1.logger.log({
240
+ timestamp: Date.now(),
241
+ level: "warn",
242
+ kind: "system",
243
+ message: "[WebSocket] Admin authentication failed (invalid token)",
244
+ });
245
+ }
246
+ }
247
+ catch (e) {
248
+ logger_js_1.logger.log({
249
+ timestamp: Date.now(),
250
+ level: "error",
251
+ kind: "system",
252
+ message: "[WebSocket] Admin authentication error",
253
+ context: { error: e instanceof Error ? e.message : String(e) },
254
+ });
255
+ }
256
+ }
257
+ else {
258
+ logger_js_1.logger.log({
259
+ timestamp: Date.now(),
260
+ level: "warn",
261
+ kind: "system",
262
+ message: "[WebSocket] No admin credentials found in cookies/headers",
263
+ context: {
264
+ cookies: Object.keys(mergedCookies),
265
+ hasArchlastAdminSession: !!mergedCookies["archlast_admin_session"],
266
+ hasAuthHeader: !!authHeader,
267
+ hasApiKeyHeader: !!apiKeyHeader,
268
+ },
269
+ });
270
+ }
271
+ }
272
+ // Log full headers for debugging
273
+ if (!finalAuthContext.isAuthenticated) {
274
+ logger_js_1.logger.log({
275
+ timestamp: Date.now(),
276
+ level: "warn",
277
+ kind: "system",
278
+ message: "[WebSocket] Unauthenticated connection proceeding (restricted access)",
279
+ context: {
280
+ headers: Object.keys(mergedHeaders),
281
+ cookies: Object.keys(mergedCookies),
282
+ cookieHeader: upgradeCookieHeader,
283
+ },
284
+ });
285
+ }
286
+ else {
287
+ logger_js_1.logger.log({
288
+ timestamp: Date.now(),
289
+ level: "info",
290
+ kind: "system",
291
+ message: "[WebSocket] Authenticated connection",
292
+ context: { userId: finalAuthContext.userId },
293
+ });
294
+ }
295
+ // ALLOW connection even if unauthenticated
296
+ // We will enforce auth on specific subscriptions/messages
297
+ ws.data.authContext = finalAuthContext;
298
+ ws.data.sessionId = "session-" + Date.now();
299
+ // Allow proceeding without closing
300
+ ws.send(JSON.stringify({
301
+ type: "connected",
302
+ sessionId: ws.data.sessionId,
303
+ authenticated: finalAuthContext.isAuthenticated,
304
+ }));
305
+ return;
306
+ ws.data.authContext = finalAuthContext;
307
+ ws.data.sessionId = "session-" + Date.now();
308
+ ws.send(JSON.stringify({ type: "connected", sessionId: ws.data.sessionId }));
309
+ logger_js_1.logger.log({
310
+ timestamp: Date.now(),
311
+ level: "info",
312
+ kind: "system",
313
+ message: `Client connected. User: ${finalAuthContext.userId}`,
314
+ });
315
+ }
316
+ else if (msg.type === "query") {
317
+ if (!ws.data.authContext || !ws.data.authContext.isAuthenticated) {
318
+ ws.send(JSON.stringify({ type: "error", message: "Authentication required" }));
319
+ return;
320
+ }
321
+ const { queryId, name, args } = msg;
322
+ // Special handling for sys.logs query -> enable log streaming
323
+ if (name === "sys.logs") {
324
+ ws.data.subscribedToLogs = true;
325
+ // Register subscription effectively (so client can unsubscribe later via close/unsubscribe)
326
+ ws.data.subscriptions.set(queryId, { name, args });
327
+ // Send recent logs history so the user sees something immediately
328
+ const recentLogs = await logger_js_1.logger.list(100);
329
+ for (const log of recentLogs) {
330
+ ws.send(JSON.stringify({ type: "log", log }));
331
+ }
332
+ // Send initial "connected" data packet for the subscription
333
+ ws.send(JSON.stringify({ type: "data", queryId, data: { status: "subscribed" } }));
334
+ return;
335
+ }
336
+ // Register subscription
337
+ ws.data.subscriptions.set(queryId, { name, args });
338
+ // We use a composite key for the graph: sessionId:queryId
339
+ // This ensures uniqueness across clients
340
+ const uniqueQueryId = `${ws.data.sessionId}:${queryId}`;
341
+ this.querySubscribers.set(uniqueQueryId, ws);
342
+ // Register the canonical function key mapping for cross-instance revalidation
343
+ // This allows job-executed queries to trigger WebSocket query revalidation
344
+ const argsHash = this.hashArgs(args);
345
+ const functionCacheKey = `fn:${name}:${argsHash}`;
346
+ if (!this.functionToQueryIds.has(functionCacheKey)) {
347
+ this.functionToQueryIds.set(functionCacheKey, new Set());
348
+ }
349
+ this.functionToQueryIds.get(functionCacheKey).add(uniqueQueryId);
350
+ // Run initial query
351
+ try {
352
+ const { result } = await this.engine.runQuery(name, args, ws.data.authContext, uniqueQueryId);
353
+ ws.send(JSON.stringify({ type: "data", queryId, data: result }));
354
+ }
355
+ catch (e) {
356
+ ws.send(JSON.stringify({ type: "error", message: e.message }));
357
+ }
358
+ }
359
+ else if (msg.type === "mutation") {
360
+ if (!ws.data.authContext || !ws.data.authContext.isAuthenticated) {
361
+ ws.send(JSON.stringify({ type: "error", message: "Authentication required" }));
362
+ return;
363
+ }
364
+ const { mutationId, name, args } = msg;
365
+ try {
366
+ const { result, affectedQueries } = await this.engine.runMutation(name, args, ws.data.authContext);
367
+ // Send mutation result
368
+ // (We don't have a specific mutation response type in ClientMessage yet, but let's assume 'data' or similar)
369
+ // Actually client expects a promise resolution. We should send a specific mutation response.
370
+ // For now, let's just send it as 'data' with mutationId?
371
+ // The client implementation I wrote expects a response.
372
+ // Let's add a type "mutationResponse" later.
373
+ ws.send(JSON.stringify({
374
+ type: "mutationResponse",
375
+ mutationId,
376
+ data: result,
377
+ success: true,
378
+ }));
379
+ // Handle Reactivity
380
+ this.revalidateQueries(affectedQueries);
381
+ }
382
+ catch (e) {
383
+ ws.send(JSON.stringify({
384
+ type: "mutationResponse",
385
+ mutationId,
386
+ error: e.message,
387
+ success: false,
388
+ }));
389
+ }
390
+ }
391
+ else if (msg.type === "subscribe_logs") {
392
+ // Subscribe to real-time log stream
393
+ ws.data.subscribedToLogs = true;
394
+ ws.send(JSON.stringify({ type: "logs_subscribed" }));
395
+ }
396
+ else if (msg.type === "unsubscribe_logs") {
397
+ // Unsubscribe from log stream
398
+ ws.data.subscribedToLogs = false;
399
+ ws.send(JSON.stringify({ type: "logs_unsubscribed" }));
400
+ }
401
+ else if (msg.type === "subscribe_admin_events") {
402
+ ws.data.isSubscribedToAdminEvents = true;
403
+ this.adminConnections.add(ws);
404
+ ws.send(JSON.stringify({ type: "admin_events_subscribed" }));
405
+ }
406
+ else if (msg.type === "ping") {
407
+ ws.send(JSON.stringify({ type: "pong" }));
408
+ }
409
+ }
410
+ catch (e) {
411
+ logger_js_1.logger.log({
412
+ timestamp: Date.now(),
413
+ level: "error",
414
+ kind: "system",
415
+ message: "Error handling message",
416
+ context: { error: e instanceof Error ? e.message : String(e) },
417
+ });
418
+ ws.send(JSON.stringify({ type: "error", message: "Invalid message format" }));
419
+ }
420
+ }
421
+ async close(ws, code, reason) {
422
+ // Remove from connected clients
423
+ const deleted = this.connectedClients.delete(ws);
424
+ logger_js_1.logger.log({
425
+ timestamp: Date.now(),
426
+ level: "info",
427
+ kind: "system",
428
+ message: `[WebSocket] Closed connection ${ws.data.sessionId || "unknown"}. Removed: ${deleted}. Remaining: ${this.connectedClients.size}`,
429
+ context: { code, reason },
430
+ });
431
+ // Remove from admin connections if subscribed
432
+ if (ws.data.isSubscribedToAdminEvents) {
433
+ this.adminConnections.delete(ws);
434
+ logger_js_1.logger.log({
435
+ timestamp: Date.now(),
436
+ level: "info",
437
+ kind: "system",
438
+ message: `[WebSocket] Admin unsubscribed from events. Remaining admin connections: ${this.adminConnections.size}`,
439
+ context: { sessionId: ws.data.sessionId },
440
+ });
441
+ }
442
+ // Cleanup subscriptions
443
+ if (ws.data.subscriptions) {
444
+ for (const [queryId, sub] of ws.data.subscriptions) {
445
+ const uniqueQueryId = `${ws.data.sessionId}:${queryId}`;
446
+ this.querySubscribers.delete(uniqueQueryId);
447
+ this.engine.clearDependencies(uniqueQueryId);
448
+ // Clean up function-to-query mapping
449
+ const argsHash = this.hashArgs(sub.args);
450
+ const functionCacheKey = `fn:${sub.name}:${argsHash}`;
451
+ const sessionQueryIds = this.functionToQueryIds.get(functionCacheKey);
452
+ if (sessionQueryIds) {
453
+ sessionQueryIds.delete(uniqueQueryId);
454
+ // Remove the mapping entirely if no more sessions
455
+ if (sessionQueryIds.size === 0) {
456
+ this.functionToQueryIds.delete(functionCacheKey);
457
+ }
458
+ }
459
+ }
460
+ ws.data.subscriptions.clear();
461
+ }
462
+ // Cleanup log subscription
463
+ ws.data.subscribedToLogs = false;
464
+ if (ws.data.heartbeatTimer) {
465
+ clearInterval(ws.data.heartbeatTimer);
466
+ ws.data.heartbeatTimer = undefined;
467
+ }
468
+ }
469
+ /**
470
+ * Broadcast a log entry to all subscribed clients.
471
+ * Called from IPC poller when logs arrive from any process.
472
+ */
473
+ broadcastLog(log) {
474
+ const message = JSON.stringify({ type: "log", log });
475
+ for (const client of this.connectedClients) {
476
+ if (client.data.subscribedToLogs) {
477
+ try {
478
+ client.send(message);
479
+ }
480
+ catch {
481
+ // Client may have disconnected, ignore
482
+ }
483
+ }
484
+ }
485
+ }
486
+ /**
487
+ * Hash args to create a canonical function key
488
+ */
489
+ hashArgs(args) {
490
+ try {
491
+ const str = JSON.stringify(args || {});
492
+ // Simple hash function (same as used in engine/runner.ts)
493
+ let hash = 0;
494
+ for (let i = 0; i < str.length; i++) {
495
+ const char = str.charCodeAt(i);
496
+ hash = (hash << 5) - hash + char;
497
+ hash = hash & hash;
498
+ }
499
+ return Math.abs(hash).toString(36);
500
+ }
501
+ catch {
502
+ return "default";
503
+ }
504
+ }
505
+ async revalidateQueries(affectedQueryIds) {
506
+ this.bufferRevalidation(affectedQueryIds);
507
+ }
508
+ broadcastAdminEvent(type, payload) {
509
+ const message = JSON.stringify({ type, ...payload });
510
+ for (const adminWs of this.adminConnections) {
511
+ console.log(`[WebSocket] Broadcasting admin event to ${adminWs.data.sessionId}`);
512
+ try {
513
+ adminWs.send(message);
514
+ }
515
+ catch {
516
+ // Client may have disconnected, ignore
517
+ }
518
+ }
519
+ logger_js_1.logger.log({
520
+ timestamp: Date.now(),
521
+ level: "info",
522
+ kind: "system",
523
+ message: `[WebSocket] Broadcast admin event to ${this.adminConnections.size} admin connections`,
524
+ context: { type, payload },
525
+ });
526
+ }
527
+ bufferRevalidation(affectedQueryIds) {
528
+ // Expand affected query IDs to include session-specific IDs
529
+ const expandedQueryIds = new Set();
530
+ for (const qid of affectedQueryIds) {
531
+ // If this is a canonical function key (fn:name:hash), expand it
532
+ if (qid.startsWith("fn:")) {
533
+ const sessionQueryIds = this.functionToQueryIds.get(qid);
534
+ if (sessionQueryIds) {
535
+ for (const sessionQid of sessionQueryIds) {
536
+ expandedQueryIds.add(sessionQid);
537
+ }
538
+ }
539
+ }
540
+ else {
541
+ // Regular session-specific query ID
542
+ expandedQueryIds.add(qid);
543
+ }
544
+ }
545
+ for (const q of expandedQueryIds) {
546
+ this.revalidationQueue.add(q);
547
+ }
548
+ if (this.revalidationTimer)
549
+ return;
550
+ this.revalidationTimer = setTimeout(() => this.flushRevalidation(), REVALIDATION_DEBOUNCE_MS);
551
+ }
552
+ async flushRevalidation() {
553
+ const queued = this.revalidationQueue;
554
+ this.revalidationQueue = new Set();
555
+ this.revalidationTimer = null;
556
+ logger_js_1.logger.log({
557
+ timestamp: Date.now(),
558
+ level: "info",
559
+ kind: "system",
560
+ message: "[WebSocket] flushRevalidation:",
561
+ context: {
562
+ data: [
563
+ {
564
+ queuedSize: queued.size,
565
+ queued: Array.from(queued).slice(0, 10),
566
+ },
567
+ ],
568
+ },
569
+ });
570
+ for (const uniqueQueryId of queued) {
571
+ const ws = this.querySubscribers.get(uniqueQueryId);
572
+ logger_js_1.logger.log({
573
+ timestamp: Date.now(),
574
+ level: "info",
575
+ kind: "system",
576
+ message: "[WebSocket] Processing query revalidation:",
577
+ context: {
578
+ data: [
579
+ {
580
+ uniqueQueryId,
581
+ hasWebSocket: !!ws,
582
+ isOpen: ws?.readyState === WebSocket.OPEN,
583
+ },
584
+ ],
585
+ },
586
+ });
587
+ if (!ws || ws.readyState !== WebSocket.OPEN) {
588
+ logger_js_1.logger.log({
589
+ timestamp: Date.now(),
590
+ level: "info",
591
+ kind: "system",
592
+ message: "[WebSocket] Cleaning up stale subscription:",
593
+ context: { uniqueQueryId },
594
+ });
595
+ this.querySubscribers.delete(uniqueQueryId);
596
+ this.engine.clearDependencies(uniqueQueryId);
597
+ if (ws?.data?.subscriptions) {
598
+ const parts = uniqueQueryId.split(":");
599
+ const queryId = parts.slice(1).join(":");
600
+ const sub = ws.data.subscriptions.get(queryId);
601
+ ws.data.subscriptions.delete(queryId);
602
+ // Clean up function-to-query mapping
603
+ if (sub) {
604
+ const argsHash = this.hashArgs(sub.args);
605
+ const functionCacheKey = `fn:${sub.name}:${argsHash}`;
606
+ const sessionQueryIds = this.functionToQueryIds.get(functionCacheKey);
607
+ if (sessionQueryIds) {
608
+ sessionQueryIds.delete(uniqueQueryId);
609
+ if (sessionQueryIds.size === 0) {
610
+ this.functionToQueryIds.delete(functionCacheKey);
611
+ }
612
+ }
613
+ }
614
+ }
615
+ continue;
616
+ }
617
+ const parts = uniqueQueryId.split(":");
618
+ const queryId = parts.slice(1).join(":");
619
+ const sub = ws.data.subscriptions?.get(queryId);
620
+ if (sub) {
621
+ try {
622
+ const { result } = await this.engine.runQuery(sub.name, sub.args, ws.data.authContext, uniqueQueryId);
623
+ ws.send(JSON.stringify({ type: "data", queryId, data: result }));
624
+ logger_js_1.logger.log({
625
+ timestamp: Date.now(),
626
+ level: "info",
627
+ kind: "system",
628
+ message: "[WebSocket] ✅ Query revalidation sent to client:",
629
+ context: {
630
+ data: [
631
+ {
632
+ uniqueQueryId,
633
+ queryId,
634
+ hasResult: !!result,
635
+ },
636
+ ],
637
+ },
638
+ });
639
+ }
640
+ catch (e) {
641
+ logger_js_1.logger.log({
642
+ timestamp: Date.now(),
643
+ level: "error",
644
+ kind: "system",
645
+ message: "[WebSocket] ✗ Query revalidation failed:",
646
+ context: {
647
+ data: [
648
+ {
649
+ uniqueQueryId,
650
+ error: e instanceof Error ? e.message : String(e),
651
+ },
652
+ ],
653
+ },
654
+ });
655
+ logger_js_1.logger.log({
656
+ timestamp: Date.now(),
657
+ level: "error",
658
+ kind: "system",
659
+ message: `Failed to re-run query ${uniqueQueryId}`,
660
+ context: { error: e instanceof Error ? e.message : String(e) },
661
+ });
662
+ }
663
+ }
664
+ }
665
+ }
666
+ /**
667
+ * Get introspection data for monitoring dashboard
668
+ */
669
+ getIntrospection() {
670
+ const sessions = Array.from(this.connectedClients)
671
+ .filter((ws) => ws.readyState === WebSocket.OPEN)
672
+ .map((ws) => ({
673
+ sessionId: ws.data.sessionId || "unknown",
674
+ userId: ws.data.authContext?.userId || null,
675
+ lastSeen: ws.data.lastSeen || 0,
676
+ subscriptionCount: ws.data.subscriptions?.size || 0,
677
+ subscriptions: Array.from(ws.data.subscriptions?.entries() || []).map(([queryId, sub]) => ({
678
+ queryId,
679
+ name: sub.name,
680
+ args: sub.args,
681
+ })),
682
+ }));
683
+ const totalSubscriptions = sessions.reduce((sum, s) => sum + s.subscriptionCount, 0);
684
+ return {
685
+ activeConnections: this.connectedClients.size,
686
+ openConnections: sessions.length,
687
+ totalSubscriptions,
688
+ sessions,
689
+ };
690
+ }
691
+ }
692
+ exports.ArchlastWebSocketHandler = ArchlastWebSocketHandler;
693
+ //# sourceMappingURL=server.js.map