covara 0.0.1 → 0.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 (846) hide show
  1. package/README.md +839 -0
  2. package/dist/auth/adapter.d.ts +47 -0
  3. package/dist/auth/adapter.d.ts.map +1 -0
  4. package/dist/auth/adapter.js +144 -0
  5. package/dist/auth/adapter.js.map +1 -0
  6. package/dist/auth/adapters/authjs.d.ts +31 -0
  7. package/dist/auth/adapters/authjs.d.ts.map +1 -0
  8. package/dist/auth/adapters/authjs.js +143 -0
  9. package/dist/auth/adapters/authjs.js.map +1 -0
  10. package/dist/auth/adapters/jwt.d.ts +70 -0
  11. package/dist/auth/adapters/jwt.d.ts.map +1 -0
  12. package/dist/auth/adapters/jwt.js +368 -0
  13. package/dist/auth/adapters/jwt.js.map +1 -0
  14. package/dist/auth/adapters/oidc.d.ts +120 -0
  15. package/dist/auth/adapters/oidc.d.ts.map +1 -0
  16. package/dist/auth/adapters/oidc.js +280 -0
  17. package/dist/auth/adapters/oidc.js.map +1 -0
  18. package/dist/auth/adapters/passport.d.ts +44 -0
  19. package/dist/auth/adapters/passport.d.ts.map +1 -0
  20. package/dist/auth/adapters/passport.js +206 -0
  21. package/dist/auth/adapters/passport.js.map +1 -0
  22. package/dist/auth/api-keys.d.ts +68 -0
  23. package/dist/auth/api-keys.d.ts.map +1 -0
  24. package/dist/auth/api-keys.js +117 -0
  25. package/dist/auth/api-keys.js.map +1 -0
  26. package/dist/auth/config.d.ts +36 -0
  27. package/dist/auth/config.d.ts.map +1 -0
  28. package/dist/auth/config.js +50 -0
  29. package/dist/auth/config.js.map +1 -0
  30. package/dist/auth/csrf.d.ts +18 -0
  31. package/dist/auth/csrf.d.ts.map +1 -0
  32. package/dist/auth/csrf.js +59 -0
  33. package/dist/auth/csrf.js.map +1 -0
  34. package/dist/auth/index.d.ts +25 -0
  35. package/dist/auth/index.d.ts.map +1 -0
  36. package/dist/auth/index.js +22 -0
  37. package/dist/auth/index.js.map +1 -0
  38. package/dist/auth/login-throttle.d.ts +21 -0
  39. package/dist/auth/login-throttle.d.ts.map +1 -0
  40. package/dist/auth/login-throttle.js +50 -0
  41. package/dist/auth/login-throttle.js.map +1 -0
  42. package/dist/auth/magic-link.d.ts +13 -0
  43. package/dist/auth/magic-link.d.ts.map +1 -0
  44. package/dist/auth/magic-link.js +14 -0
  45. package/dist/auth/magic-link.js.map +1 -0
  46. package/dist/auth/middleware.d.ts +20 -0
  47. package/dist/auth/middleware.d.ts.map +1 -0
  48. package/dist/auth/middleware.js +116 -0
  49. package/dist/auth/middleware.js.map +1 -0
  50. package/dist/auth/password-policy.d.ts +18 -0
  51. package/dist/auth/password-policy.d.ts.map +1 -0
  52. package/dist/auth/password-policy.js +72 -0
  53. package/dist/auth/password-policy.js.map +1 -0
  54. package/dist/auth/password-reset.d.ts +13 -0
  55. package/dist/auth/password-reset.d.ts.map +1 -0
  56. package/dist/auth/password-reset.js +17 -0
  57. package/dist/auth/password-reset.js.map +1 -0
  58. package/dist/auth/password.d.ts +11 -0
  59. package/dist/auth/password.d.ts.map +1 -0
  60. package/dist/auth/password.js +98 -0
  61. package/dist/auth/password.js.map +1 -0
  62. package/dist/auth/routes.d.ts +111 -0
  63. package/dist/auth/routes.d.ts.map +1 -0
  64. package/dist/auth/routes.js +417 -0
  65. package/dist/auth/routes.js.map +1 -0
  66. package/dist/auth/rsql.d.ts +33 -0
  67. package/dist/auth/rsql.d.ts.map +1 -0
  68. package/dist/auth/rsql.js +102 -0
  69. package/dist/auth/rsql.js.map +1 -0
  70. package/dist/auth/scope.d.ts +26 -0
  71. package/dist/auth/scope.d.ts.map +1 -0
  72. package/dist/auth/scope.js +166 -0
  73. package/dist/auth/scope.js.map +1 -0
  74. package/dist/auth/stores/drizzle.d.ts +39 -0
  75. package/dist/auth/stores/drizzle.d.ts.map +1 -0
  76. package/dist/auth/stores/drizzle.js +183 -0
  77. package/dist/auth/stores/drizzle.js.map +1 -0
  78. package/dist/auth/stores/index.d.ts +6 -0
  79. package/dist/auth/stores/index.d.ts.map +1 -0
  80. package/dist/auth/stores/index.js +4 -0
  81. package/dist/auth/stores/index.js.map +1 -0
  82. package/dist/auth/stores/redis.d.ts +25 -0
  83. package/dist/auth/stores/redis.d.ts.map +1 -0
  84. package/dist/auth/stores/redis.js +147 -0
  85. package/dist/auth/stores/redis.js.map +1 -0
  86. package/dist/auth/totp.d.ts +32 -0
  87. package/dist/auth/totp.d.ts.map +1 -0
  88. package/dist/auth/totp.js +126 -0
  89. package/dist/auth/totp.js.map +1 -0
  90. package/dist/auth/types.d.ts +82 -0
  91. package/dist/auth/types.d.ts.map +1 -0
  92. package/dist/auth/types.js +53 -0
  93. package/dist/auth/types.js.map +1 -0
  94. package/dist/auth/verification.d.ts +32 -0
  95. package/dist/auth/verification.d.ts.map +1 -0
  96. package/dist/auth/verification.js +0 -0
  97. package/dist/auth/verification.js.map +1 -0
  98. package/dist/billing/credits.d.ts +29 -0
  99. package/dist/billing/credits.d.ts.map +1 -0
  100. package/dist/billing/credits.js +66 -0
  101. package/dist/billing/credits.js.map +1 -0
  102. package/dist/billing/index.d.ts +53 -0
  103. package/dist/billing/index.d.ts.map +1 -0
  104. package/dist/billing/index.js +139 -0
  105. package/dist/billing/index.js.map +1 -0
  106. package/dist/billing/lemonsqueezy.d.ts +29 -0
  107. package/dist/billing/lemonsqueezy.d.ts.map +1 -0
  108. package/dist/billing/lemonsqueezy.js +276 -0
  109. package/dist/billing/lemonsqueezy.js.map +1 -0
  110. package/dist/billing/paddle.d.ts +30 -0
  111. package/dist/billing/paddle.d.ts.map +1 -0
  112. package/dist/billing/paddle.js +247 -0
  113. package/dist/billing/paddle.js.map +1 -0
  114. package/dist/billing/polar.d.ts +31 -0
  115. package/dist/billing/polar.d.ts.map +1 -0
  116. package/dist/billing/polar.js +284 -0
  117. package/dist/billing/polar.js.map +1 -0
  118. package/dist/billing/router.d.ts +9 -0
  119. package/dist/billing/router.d.ts.map +1 -0
  120. package/dist/billing/router.js +75 -0
  121. package/dist/billing/router.js.map +1 -0
  122. package/dist/billing/stripe.d.ts +31 -0
  123. package/dist/billing/stripe.d.ts.map +1 -0
  124. package/dist/billing/stripe.js +319 -0
  125. package/dist/billing/stripe.js.map +1 -0
  126. package/dist/billing/types.d.ts +97 -0
  127. package/dist/billing/types.d.ts.map +1 -0
  128. package/dist/billing/types.js +9 -0
  129. package/dist/billing/types.js.map +1 -0
  130. package/dist/cli/create.d.ts +10 -0
  131. package/dist/cli/create.d.ts.map +1 -0
  132. package/dist/cli/create.js +79 -0
  133. package/dist/cli/create.js.map +1 -0
  134. package/dist/cli/generate.d.ts +16 -0
  135. package/dist/cli/generate.d.ts.map +1 -0
  136. package/dist/cli/generate.js +105 -0
  137. package/dist/cli/generate.js.map +1 -0
  138. package/dist/cli/index.d.ts +3 -0
  139. package/dist/cli/index.d.ts.map +1 -0
  140. package/dist/cli/index.js +185 -0
  141. package/dist/cli/index.js.map +1 -0
  142. package/dist/cli/options.d.ts +11 -0
  143. package/dist/cli/options.d.ts.map +1 -0
  144. package/dist/cli/options.js +14 -0
  145. package/dist/cli/options.js.map +1 -0
  146. package/dist/cli/templates/configs.d.ts +12 -0
  147. package/dist/cli/templates/configs.d.ts.map +1 -0
  148. package/dist/cli/templates/configs.js +174 -0
  149. package/dist/cli/templates/configs.js.map +1 -0
  150. package/dist/cli/templates/deploy.d.ts +6 -0
  151. package/dist/cli/templates/deploy.d.ts.map +1 -0
  152. package/dist/cli/templates/deploy.js +147 -0
  153. package/dist/cli/templates/deploy.js.map +1 -0
  154. package/dist/cli/templates/index.d.ts +8 -0
  155. package/dist/cli/templates/index.d.ts.map +1 -0
  156. package/dist/cli/templates/index.js +35 -0
  157. package/dist/cli/templates/index.js.map +1 -0
  158. package/dist/cli/templates/package-json.d.ts +3 -0
  159. package/dist/cli/templates/package-json.d.ts.map +1 -0
  160. package/dist/cli/templates/package-json.js +76 -0
  161. package/dist/cli/templates/package-json.js.map +1 -0
  162. package/dist/cli/templates/readme.d.ts +3 -0
  163. package/dist/cli/templates/readme.d.ts.map +1 -0
  164. package/dist/cli/templates/readme.js +109 -0
  165. package/dist/cli/templates/readme.js.map +1 -0
  166. package/dist/cli/templates/source.d.ts +11 -0
  167. package/dist/cli/templates/source.d.ts.map +1 -0
  168. package/dist/cli/templates/source.js +158 -0
  169. package/dist/cli/templates/source.js.map +1 -0
  170. package/dist/client/auth/auth-transport.d.ts +24 -0
  171. package/dist/client/auth/auth-transport.d.ts.map +1 -0
  172. package/dist/client/auth/auth-transport.js +78 -0
  173. package/dist/client/auth/auth-transport.js.map +1 -0
  174. package/dist/client/auth/index.d.ts +52 -0
  175. package/dist/client/auth/index.d.ts.map +1 -0
  176. package/dist/client/auth/index.js +350 -0
  177. package/dist/client/auth/index.js.map +1 -0
  178. package/dist/client/auth/oidc-client.d.ts +17 -0
  179. package/dist/client/auth/oidc-client.d.ts.map +1 -0
  180. package/dist/client/auth/oidc-client.js +159 -0
  181. package/dist/client/auth/oidc-client.js.map +1 -0
  182. package/dist/client/auth/token-manager.d.ts +51 -0
  183. package/dist/client/auth/token-manager.d.ts.map +1 -0
  184. package/dist/client/auth/token-manager.js +222 -0
  185. package/dist/client/auth/token-manager.js.map +1 -0
  186. package/dist/client/auth/types.d.ts +82 -0
  187. package/dist/client/auth/types.d.ts.map +1 -0
  188. package/dist/client/auth/types.js +2 -0
  189. package/dist/client/auth/types.js.map +1 -0
  190. package/dist/client/billing.d.ts +54 -0
  191. package/dist/client/billing.d.ts.map +1 -0
  192. package/dist/client/billing.js +58 -0
  193. package/dist/client/billing.js.map +1 -0
  194. package/dist/client/dates.d.ts +40 -0
  195. package/dist/client/dates.d.ts.map +1 -0
  196. package/dist/client/dates.js +56 -0
  197. package/dist/client/dates.js.map +1 -0
  198. package/dist/client/env.d.ts +24 -0
  199. package/dist/client/env.d.ts.map +1 -0
  200. package/dist/client/env.js +105 -0
  201. package/dist/client/env.js.map +1 -0
  202. package/dist/client/file-upload.d.ts +53 -0
  203. package/dist/client/file-upload.d.ts.map +1 -0
  204. package/dist/client/file-upload.js +162 -0
  205. package/dist/client/file-upload.js.map +1 -0
  206. package/dist/client/globals.d.ts +6 -0
  207. package/dist/client/globals.d.ts.map +1 -0
  208. package/dist/client/globals.js +23 -0
  209. package/dist/client/globals.js.map +1 -0
  210. package/dist/client/index.d.ts +60 -0
  211. package/dist/client/index.d.ts.map +1 -0
  212. package/dist/client/index.js +266 -0
  213. package/dist/client/index.js.map +1 -0
  214. package/dist/client/indexeddb-storage.d.ts +22 -0
  215. package/dist/client/indexeddb-storage.d.ts.map +1 -0
  216. package/dist/client/indexeddb-storage.js +79 -0
  217. package/dist/client/indexeddb-storage.js.map +1 -0
  218. package/dist/client/jwt.d.ts +62 -0
  219. package/dist/client/jwt.d.ts.map +1 -0
  220. package/dist/client/jwt.js +164 -0
  221. package/dist/client/jwt.js.map +1 -0
  222. package/dist/client/live-store.d.ts +49 -0
  223. package/dist/client/live-store.d.ts.map +1 -0
  224. package/dist/client/live-store.js +638 -0
  225. package/dist/client/live-store.js.map +1 -0
  226. package/dist/client/mutation.d.ts +73 -0
  227. package/dist/client/mutation.d.ts.map +1 -0
  228. package/dist/client/mutation.js +72 -0
  229. package/dist/client/mutation.js.map +1 -0
  230. package/dist/client/offline.d.ts +110 -0
  231. package/dist/client/offline.d.ts.map +1 -0
  232. package/dist/client/offline.js +551 -0
  233. package/dist/client/offline.js.map +1 -0
  234. package/dist/client/query-builder.d.ts +130 -0
  235. package/dist/client/query-builder.d.ts.map +1 -0
  236. package/dist/client/query-builder.js +300 -0
  237. package/dist/client/query-builder.js.map +1 -0
  238. package/dist/client/query-cache.d.ts +64 -0
  239. package/dist/client/query-cache.d.ts.map +1 -0
  240. package/dist/client/query-cache.js +112 -0
  241. package/dist/client/query-cache.js.map +1 -0
  242. package/dist/client/query-types.d.ts +61 -0
  243. package/dist/client/query-types.d.ts.map +1 -0
  244. package/dist/client/query-types.js +2 -0
  245. package/dist/client/query-types.js.map +1 -0
  246. package/dist/client/react-billing.d.ts +24 -0
  247. package/dist/client/react-billing.d.ts.map +1 -0
  248. package/dist/client/react-billing.js +101 -0
  249. package/dist/client/react-billing.js.map +1 -0
  250. package/dist/client/react-files.d.ts +46 -0
  251. package/dist/client/react-files.d.ts.map +1 -0
  252. package/dist/client/react-files.js +174 -0
  253. package/dist/client/react-files.js.map +1 -0
  254. package/dist/client/react-jwt.d.ts +17 -0
  255. package/dist/client/react-jwt.d.ts.map +1 -0
  256. package/dist/client/react-jwt.js +73 -0
  257. package/dist/client/react-jwt.js.map +1 -0
  258. package/dist/client/react.d.ts +210 -0
  259. package/dist/client/react.d.ts.map +1 -0
  260. package/dist/client/react.js +599 -0
  261. package/dist/client/react.js.map +1 -0
  262. package/dist/client/repository.d.ts +49 -0
  263. package/dist/client/repository.d.ts.map +1 -0
  264. package/dist/client/repository.js +269 -0
  265. package/dist/client/repository.js.map +1 -0
  266. package/dist/client/resource-query-builder.d.ts +35 -0
  267. package/dist/client/resource-query-builder.d.ts.map +1 -0
  268. package/dist/client/resource-query-builder.js +177 -0
  269. package/dist/client/resource-query-builder.js.map +1 -0
  270. package/dist/client/subscription-manager.d.ts +37 -0
  271. package/dist/client/subscription-manager.d.ts.map +1 -0
  272. package/dist/client/subscription-manager.js +164 -0
  273. package/dist/client/subscription-manager.js.map +1 -0
  274. package/dist/client/tab-sync.d.ts +35 -0
  275. package/dist/client/tab-sync.d.ts.map +1 -0
  276. package/dist/client/tab-sync.js +129 -0
  277. package/dist/client/tab-sync.js.map +1 -0
  278. package/dist/client/transport.d.ts +50 -0
  279. package/dist/client/transport.d.ts.map +1 -0
  280. package/dist/client/transport.js +205 -0
  281. package/dist/client/transport.js.map +1 -0
  282. package/dist/client/typegen.d.ts +20 -0
  283. package/dist/client/typegen.d.ts.map +1 -0
  284. package/dist/client/typegen.js +578 -0
  285. package/dist/client/typegen.js.map +1 -0
  286. package/dist/client/types.d.ts +472 -0
  287. package/dist/client/types.d.ts.map +1 -0
  288. package/dist/client/types.js +2 -0
  289. package/dist/client/types.js.map +1 -0
  290. package/dist/db/index.d.ts +9 -0
  291. package/dist/db/index.d.ts.map +1 -0
  292. package/dist/db/index.js +5 -0
  293. package/dist/db/index.js.map +1 -0
  294. package/dist/db/internal-schema.d.ts +3831 -0
  295. package/dist/db/internal-schema.d.ts.map +1 -0
  296. package/dist/db/internal-schema.js +130 -0
  297. package/dist/db/internal-schema.js.map +1 -0
  298. package/dist/db/migrate.d.ts +15 -0
  299. package/dist/db/migrate.d.ts.map +1 -0
  300. package/dist/db/migrate.js +127 -0
  301. package/dist/db/migrate.js.map +1 -0
  302. package/dist/db/pooling.d.ts +9 -0
  303. package/dist/db/pooling.d.ts.map +1 -0
  304. package/dist/db/pooling.js +42 -0
  305. package/dist/db/pooling.js.map +1 -0
  306. package/dist/db/seed.d.ts +24 -0
  307. package/dist/db/seed.d.ts.map +1 -0
  308. package/dist/db/seed.js +34 -0
  309. package/dist/db/seed.js.map +1 -0
  310. package/dist/email/builder.d.ts +38 -0
  311. package/dist/email/builder.d.ts.map +1 -0
  312. package/dist/email/builder.js +153 -0
  313. package/dist/email/builder.js.map +1 -0
  314. package/dist/email/cloudflare.d.ts +24 -0
  315. package/dist/email/cloudflare.d.ts.map +1 -0
  316. package/dist/email/cloudflare.js +146 -0
  317. package/dist/email/cloudflare.js.map +1 -0
  318. package/dist/email/index.d.ts +12 -0
  319. package/dist/email/index.d.ts.map +1 -0
  320. package/dist/email/index.js +27 -0
  321. package/dist/email/index.js.map +1 -0
  322. package/dist/email/resend.d.ts +15 -0
  323. package/dist/email/resend.d.ts.map +1 -0
  324. package/dist/email/resend.js +114 -0
  325. package/dist/email/resend.js.map +1 -0
  326. package/dist/email/types.d.ts +36 -0
  327. package/dist/email/types.d.ts.map +1 -0
  328. package/dist/email/types.js +12 -0
  329. package/dist/email/types.js.map +1 -0
  330. package/dist/env/index.d.ts +52 -0
  331. package/dist/env/index.d.ts.map +1 -0
  332. package/dist/env/index.js +153 -0
  333. package/dist/env/index.js.map +1 -0
  334. package/dist/health/checks.d.ts +40 -0
  335. package/dist/health/checks.d.ts.map +1 -0
  336. package/dist/health/checks.js +166 -0
  337. package/dist/health/checks.js.map +1 -0
  338. package/dist/health/index.d.ts +26 -0
  339. package/dist/health/index.d.ts.map +1 -0
  340. package/dist/health/index.js +104 -0
  341. package/dist/health/index.js.map +1 -0
  342. package/dist/index.d.ts +78 -0
  343. package/dist/index.d.ts.map +1 -0
  344. package/dist/index.js +72 -0
  345. package/dist/index.js.map +1 -0
  346. package/dist/kv/durable-object.d.ts +192 -0
  347. package/dist/kv/durable-object.d.ts.map +1 -0
  348. package/dist/kv/durable-object.js +1059 -0
  349. package/dist/kv/durable-object.js.map +1 -0
  350. package/dist/kv/index.d.ts +56 -0
  351. package/dist/kv/index.d.ts.map +1 -0
  352. package/dist/kv/index.js +96 -0
  353. package/dist/kv/index.js.map +1 -0
  354. package/dist/kv/memory.d.ts +78 -0
  355. package/dist/kv/memory.d.ts.map +1 -0
  356. package/dist/kv/memory.js +599 -0
  357. package/dist/kv/memory.js.map +1 -0
  358. package/dist/kv/redis.d.ts +148 -0
  359. package/dist/kv/redis.d.ts.map +1 -0
  360. package/dist/kv/redis.js +405 -0
  361. package/dist/kv/redis.js.map +1 -0
  362. package/dist/kv/types.d.ts +132 -0
  363. package/dist/kv/types.d.ts.map +1 -0
  364. package/dist/kv/types.js +24 -0
  365. package/dist/kv/types.js.map +1 -0
  366. package/dist/middleware/error.d.ts +4 -0
  367. package/dist/middleware/error.d.ts.map +1 -0
  368. package/dist/middleware/error.js +63 -0
  369. package/dist/middleware/error.js.map +1 -0
  370. package/dist/middleware/idempotency.d.ts +21 -0
  371. package/dist/middleware/idempotency.d.ts.map +1 -0
  372. package/dist/middleware/idempotency.js +144 -0
  373. package/dist/middleware/idempotency.js.map +1 -0
  374. package/dist/middleware/logging.d.ts +3 -0
  375. package/dist/middleware/logging.d.ts.map +1 -0
  376. package/dist/middleware/logging.js +6 -0
  377. package/dist/middleware/logging.js.map +1 -0
  378. package/dist/middleware/observability.d.ts +104 -0
  379. package/dist/middleware/observability.d.ts.map +1 -0
  380. package/dist/middleware/observability.js +231 -0
  381. package/dist/middleware/observability.js.map +1 -0
  382. package/dist/middleware/rateLimit.d.ts +83 -0
  383. package/dist/middleware/rateLimit.d.ts.map +1 -0
  384. package/dist/middleware/rateLimit.js +255 -0
  385. package/dist/middleware/rateLimit.js.map +1 -0
  386. package/dist/middleware/securityHeaders.d.ts +18 -0
  387. package/dist/middleware/securityHeaders.d.ts.map +1 -0
  388. package/dist/middleware/securityHeaders.js +58 -0
  389. package/dist/middleware/securityHeaders.js.map +1 -0
  390. package/dist/middleware/versioning.d.ts +62 -0
  391. package/dist/middleware/versioning.d.ts.map +1 -0
  392. package/dist/middleware/versioning.js +178 -0
  393. package/dist/middleware/versioning.js.map +1 -0
  394. package/dist/oidc/backends/email-password.d.ts +3 -0
  395. package/dist/oidc/backends/email-password.d.ts.map +1 -0
  396. package/dist/oidc/backends/email-password.js +37 -0
  397. package/dist/oidc/backends/email-password.js.map +1 -0
  398. package/dist/oidc/backends/federated.d.ts +13 -0
  399. package/dist/oidc/backends/federated.d.ts.map +1 -0
  400. package/dist/oidc/backends/federated.js +225 -0
  401. package/dist/oidc/backends/federated.js.map +1 -0
  402. package/dist/oidc/backends/index.d.ts +3 -0
  403. package/dist/oidc/backends/index.d.ts.map +1 -0
  404. package/dist/oidc/backends/index.js +3 -0
  405. package/dist/oidc/backends/index.js.map +1 -0
  406. package/dist/oidc/body.d.ts +3 -0
  407. package/dist/oidc/body.d.ts.map +1 -0
  408. package/dist/oidc/body.js +23 -0
  409. package/dist/oidc/body.js.map +1 -0
  410. package/dist/oidc/discovery.d.ts +3 -0
  411. package/dist/oidc/discovery.d.ts.map +1 -0
  412. package/dist/oidc/discovery.js +66 -0
  413. package/dist/oidc/discovery.js.map +1 -0
  414. package/dist/oidc/endpoints/authorize.d.ts +12 -0
  415. package/dist/oidc/endpoints/authorize.d.ts.map +1 -0
  416. package/dist/oidc/endpoints/authorize.js +148 -0
  417. package/dist/oidc/endpoints/authorize.js.map +1 -0
  418. package/dist/oidc/endpoints/client-auth.d.ts +9 -0
  419. package/dist/oidc/endpoints/client-auth.d.ts.map +1 -0
  420. package/dist/oidc/endpoints/client-auth.js +52 -0
  421. package/dist/oidc/endpoints/client-auth.js.map +1 -0
  422. package/dist/oidc/endpoints/index.d.ts +9 -0
  423. package/dist/oidc/endpoints/index.d.ts.map +1 -0
  424. package/dist/oidc/endpoints/index.js +9 -0
  425. package/dist/oidc/endpoints/index.js.map +1 -0
  426. package/dist/oidc/endpoints/introspection.d.ts +9 -0
  427. package/dist/oidc/endpoints/introspection.d.ts.map +1 -0
  428. package/dist/oidc/endpoints/introspection.js +57 -0
  429. package/dist/oidc/endpoints/introspection.js.map +1 -0
  430. package/dist/oidc/endpoints/jwks.d.ts +4 -0
  431. package/dist/oidc/endpoints/jwks.d.ts.map +1 -0
  432. package/dist/oidc/endpoints/jwks.js +11 -0
  433. package/dist/oidc/endpoints/jwks.js.map +1 -0
  434. package/dist/oidc/endpoints/logout.d.ts +12 -0
  435. package/dist/oidc/endpoints/logout.d.ts.map +1 -0
  436. package/dist/oidc/endpoints/logout.js +92 -0
  437. package/dist/oidc/endpoints/logout.js.map +1 -0
  438. package/dist/oidc/endpoints/register.d.ts +9 -0
  439. package/dist/oidc/endpoints/register.d.ts.map +1 -0
  440. package/dist/oidc/endpoints/register.js +104 -0
  441. package/dist/oidc/endpoints/register.js.map +1 -0
  442. package/dist/oidc/endpoints/revocation.d.ts +9 -0
  443. package/dist/oidc/endpoints/revocation.d.ts.map +1 -0
  444. package/dist/oidc/endpoints/revocation.js +31 -0
  445. package/dist/oidc/endpoints/revocation.js.map +1 -0
  446. package/dist/oidc/endpoints/token.d.ts +11 -0
  447. package/dist/oidc/endpoints/token.d.ts.map +1 -0
  448. package/dist/oidc/endpoints/token.js +167 -0
  449. package/dist/oidc/endpoints/token.js.map +1 -0
  450. package/dist/oidc/endpoints/userinfo.d.ts +10 -0
  451. package/dist/oidc/endpoints/userinfo.d.ts.map +1 -0
  452. package/dist/oidc/endpoints/userinfo.js +58 -0
  453. package/dist/oidc/endpoints/userinfo.js.map +1 -0
  454. package/dist/oidc/index.d.ts +79 -0
  455. package/dist/oidc/index.d.ts.map +1 -0
  456. package/dist/oidc/index.js +44 -0
  457. package/dist/oidc/index.js.map +1 -0
  458. package/dist/oidc/keys/index.d.ts +2 -0
  459. package/dist/oidc/keys/index.d.ts.map +1 -0
  460. package/dist/oidc/keys/index.js +2 -0
  461. package/dist/oidc/keys/index.js.map +1 -0
  462. package/dist/oidc/keys/jwk.d.ts +3 -0
  463. package/dist/oidc/keys/jwk.d.ts.map +1 -0
  464. package/dist/oidc/keys/jwk.js +171 -0
  465. package/dist/oidc/keys/jwk.js.map +1 -0
  466. package/dist/oidc/provider.d.ts +10 -0
  467. package/dist/oidc/provider.d.ts.map +1 -0
  468. package/dist/oidc/provider.js +152 -0
  469. package/dist/oidc/provider.js.map +1 -0
  470. package/dist/oidc/rate-limit.d.ts +9 -0
  471. package/dist/oidc/rate-limit.d.ts.map +1 -0
  472. package/dist/oidc/rate-limit.js +61 -0
  473. package/dist/oidc/rate-limit.js.map +1 -0
  474. package/dist/oidc/stores/index.d.ts +124 -0
  475. package/dist/oidc/stores/index.d.ts.map +1 -0
  476. package/dist/oidc/stores/index.js +337 -0
  477. package/dist/oidc/stores/index.js.map +1 -0
  478. package/dist/oidc/tokens/index.d.ts +4 -0
  479. package/dist/oidc/tokens/index.d.ts.map +1 -0
  480. package/dist/oidc/tokens/index.js +158 -0
  481. package/dist/oidc/tokens/index.js.map +1 -0
  482. package/dist/oidc/types.d.ts +442 -0
  483. package/dist/oidc/types.d.ts.map +1 -0
  484. package/dist/oidc/types.js +2 -0
  485. package/dist/oidc/types.js.map +1 -0
  486. package/dist/oidc/ui/consent.d.ts +12 -0
  487. package/dist/oidc/ui/consent.d.ts.map +1 -0
  488. package/dist/oidc/ui/consent.js +180 -0
  489. package/dist/oidc/ui/consent.js.map +1 -0
  490. package/dist/oidc/ui/index.d.ts +3 -0
  491. package/dist/oidc/ui/index.d.ts.map +1 -0
  492. package/dist/oidc/ui/index.js +3 -0
  493. package/dist/oidc/ui/index.js.map +1 -0
  494. package/dist/oidc/ui/login.d.ts +12 -0
  495. package/dist/oidc/ui/login.d.ts.map +1 -0
  496. package/dist/oidc/ui/login.js +159 -0
  497. package/dist/oidc/ui/login.js.map +1 -0
  498. package/dist/oidc/util.d.ts +5 -0
  499. package/dist/oidc/util.d.ts.map +1 -0
  500. package/dist/oidc/util.js +67 -0
  501. package/dist/oidc/util.js.map +1 -0
  502. package/dist/openapi/generator.d.ts +131 -0
  503. package/dist/openapi/generator.d.ts.map +1 -0
  504. package/dist/openapi/generator.js +609 -0
  505. package/dist/openapi/generator.js.map +1 -0
  506. package/dist/openapi/index.d.ts +5 -0
  507. package/dist/openapi/index.d.ts.map +1 -0
  508. package/dist/openapi/index.js +3 -0
  509. package/dist/openapi/index.js.map +1 -0
  510. package/dist/openapi/schema.d.ts +51 -0
  511. package/dist/openapi/schema.d.ts.map +1 -0
  512. package/dist/openapi/schema.js +296 -0
  513. package/dist/openapi/schema.js.map +1 -0
  514. package/dist/resource/batch.d.ts +40 -0
  515. package/dist/resource/batch.d.ts.map +1 -0
  516. package/dist/resource/batch.js +144 -0
  517. package/dist/resource/batch.js.map +1 -0
  518. package/dist/resource/capabilities.d.ts +29 -0
  519. package/dist/resource/capabilities.d.ts.map +1 -0
  520. package/dist/resource/capabilities.js +224 -0
  521. package/dist/resource/capabilities.js.map +1 -0
  522. package/dist/resource/changelog.d.ts +41 -0
  523. package/dist/resource/changelog.d.ts.map +1 -0
  524. package/dist/resource/changelog.js +275 -0
  525. package/dist/resource/changelog.js.map +1 -0
  526. package/dist/resource/error.d.ts +110 -0
  527. package/dist/resource/error.d.ts.map +1 -0
  528. package/dist/resource/error.js +276 -0
  529. package/dist/resource/error.js.map +1 -0
  530. package/dist/resource/etag.d.ts +30 -0
  531. package/dist/resource/etag.d.ts.map +1 -0
  532. package/dist/resource/etag.js +148 -0
  533. package/dist/resource/etag.js.map +1 -0
  534. package/dist/resource/filter.d.ts +36 -0
  535. package/dist/resource/filter.d.ts.map +1 -0
  536. package/dist/resource/filter.js +1136 -0
  537. package/dist/resource/filter.js.map +1 -0
  538. package/dist/resource/hook.d.ts +13 -0
  539. package/dist/resource/hook.d.ts.map +1 -0
  540. package/dist/resource/hook.js +976 -0
  541. package/dist/resource/hook.js.map +1 -0
  542. package/dist/resource/mutate.d.ts +49 -0
  543. package/dist/resource/mutate.d.ts.map +1 -0
  544. package/dist/resource/mutate.js +247 -0
  545. package/dist/resource/mutate.js.map +1 -0
  546. package/dist/resource/operator-equivalence.d.ts +54 -0
  547. package/dist/resource/operator-equivalence.d.ts.map +1 -0
  548. package/dist/resource/operator-equivalence.js +342 -0
  549. package/dist/resource/operator-equivalence.js.map +1 -0
  550. package/dist/resource/pagination.d.ts +63 -0
  551. package/dist/resource/pagination.d.ts.map +1 -0
  552. package/dist/resource/pagination.js +266 -0
  553. package/dist/resource/pagination.js.map +1 -0
  554. package/dist/resource/procedures.d.ts +28 -0
  555. package/dist/resource/procedures.d.ts.map +1 -0
  556. package/dist/resource/procedures.js +197 -0
  557. package/dist/resource/procedures.js.map +1 -0
  558. package/dist/resource/query.d.ts +37 -0
  559. package/dist/resource/query.d.ts.map +1 -0
  560. package/dist/resource/query.js +246 -0
  561. package/dist/resource/query.js.map +1 -0
  562. package/dist/resource/relations.d.ts +70 -0
  563. package/dist/resource/relations.d.ts.map +1 -0
  564. package/dist/resource/relations.js +395 -0
  565. package/dist/resource/relations.js.map +1 -0
  566. package/dist/resource/search-outbox.d.ts +38 -0
  567. package/dist/resource/search-outbox.d.ts.map +1 -0
  568. package/dist/resource/search-outbox.js +121 -0
  569. package/dist/resource/search-outbox.js.map +1 -0
  570. package/dist/resource/search.d.ts +14 -0
  571. package/dist/resource/search.d.ts.map +1 -0
  572. package/dist/resource/search.js +267 -0
  573. package/dist/resource/search.js.map +1 -0
  574. package/dist/resource/secure-query.d.ts +55 -0
  575. package/dist/resource/secure-query.d.ts.map +1 -0
  576. package/dist/resource/secure-query.js +175 -0
  577. package/dist/resource/secure-query.js.map +1 -0
  578. package/dist/resource/subscription.d.ts +46 -0
  579. package/dist/resource/subscription.d.ts.map +1 -0
  580. package/dist/resource/subscription.js +684 -0
  581. package/dist/resource/subscription.js.map +1 -0
  582. package/dist/resource/track-mutations.d.ts +58 -0
  583. package/dist/resource/track-mutations.d.ts.map +1 -0
  584. package/dist/resource/track-mutations.js +721 -0
  585. package/dist/resource/track-mutations.js.map +1 -0
  586. package/dist/resource/types.d.ts +298 -0
  587. package/dist/resource/types.d.ts.map +1 -0
  588. package/dist/resource/types.js +2 -0
  589. package/dist/resource/types.js.map +1 -0
  590. package/dist/search/index.d.ts +11 -0
  591. package/dist/search/index.d.ts.map +1 -0
  592. package/dist/search/index.js +22 -0
  593. package/dist/search/index.js.map +1 -0
  594. package/dist/search/memory.d.ts +6 -0
  595. package/dist/search/memory.d.ts.map +1 -0
  596. package/dist/search/memory.js +70 -0
  597. package/dist/search/memory.js.map +1 -0
  598. package/dist/search/opensearch.d.ts +47 -0
  599. package/dist/search/opensearch.d.ts.map +1 -0
  600. package/dist/search/opensearch.js +126 -0
  601. package/dist/search/opensearch.js.map +1 -0
  602. package/dist/search/postgres-fts.d.ts +16 -0
  603. package/dist/search/postgres-fts.d.ts.map +1 -0
  604. package/dist/search/postgres-fts.js +171 -0
  605. package/dist/search/postgres-fts.js.map +1 -0
  606. package/dist/search/sqlite-fts.d.ts +14 -0
  607. package/dist/search/sqlite-fts.d.ts.map +1 -0
  608. package/dist/search/sqlite-fts.js +185 -0
  609. package/dist/search/sqlite-fts.js.map +1 -0
  610. package/dist/search/types.d.ts +49 -0
  611. package/dist/search/types.d.ts.map +1 -0
  612. package/dist/search/types.js +2 -0
  613. package/dist/search/types.js.map +1 -0
  614. package/dist/server/app.d.ts +33 -0
  615. package/dist/server/app.d.ts.map +1 -0
  616. package/dist/server/app.js +82 -0
  617. package/dist/server/app.js.map +1 -0
  618. package/dist/server/context.d.ts +16 -0
  619. package/dist/server/context.d.ts.map +1 -0
  620. package/dist/server/context.js +12 -0
  621. package/dist/server/context.js.map +1 -0
  622. package/dist/server/env.d.ts +4 -0
  623. package/dist/server/env.d.ts.map +1 -0
  624. package/dist/server/env.js +7 -0
  625. package/dist/server/env.js.map +1 -0
  626. package/dist/server/lifecycle.d.ts +6 -0
  627. package/dist/server/lifecycle.d.ts.map +1 -0
  628. package/dist/server/lifecycle.js +28 -0
  629. package/dist/server/lifecycle.js.map +1 -0
  630. package/dist/server/logger.d.ts +28 -0
  631. package/dist/server/logger.d.ts.map +1 -0
  632. package/dist/server/logger.js +58 -0
  633. package/dist/server/logger.js.map +1 -0
  634. package/dist/server/node.d.ts +18 -0
  635. package/dist/server/node.d.ts.map +1 -0
  636. package/dist/server/node.js +47 -0
  637. package/dist/server/node.js.map +1 -0
  638. package/dist/server/request.d.ts +4 -0
  639. package/dist/server/request.d.ts.map +1 -0
  640. package/dist/server/request.js +29 -0
  641. package/dist/server/request.js.map +1 -0
  642. package/dist/server/sse.d.ts +26 -0
  643. package/dist/server/sse.d.ts.map +1 -0
  644. package/dist/server/sse.js +115 -0
  645. package/dist/server/sse.js.map +1 -0
  646. package/dist/storage/index.d.ts +15 -0
  647. package/dist/storage/index.d.ts.map +1 -0
  648. package/dist/storage/index.js +41 -0
  649. package/dist/storage/index.js.map +1 -0
  650. package/dist/storage/local.d.ts +25 -0
  651. package/dist/storage/local.d.ts.map +1 -0
  652. package/dist/storage/local.js +172 -0
  653. package/dist/storage/local.js.map +1 -0
  654. package/dist/storage/memory.d.ts +20 -0
  655. package/dist/storage/memory.d.ts.map +1 -0
  656. package/dist/storage/memory.js +82 -0
  657. package/dist/storage/memory.js.map +1 -0
  658. package/dist/storage/r2.d.ts +62 -0
  659. package/dist/storage/r2.d.ts.map +1 -0
  660. package/dist/storage/r2.js +124 -0
  661. package/dist/storage/r2.js.map +1 -0
  662. package/dist/storage/resource.d.ts +50 -0
  663. package/dist/storage/resource.d.ts.map +1 -0
  664. package/dist/storage/resource.js +346 -0
  665. package/dist/storage/resource.js.map +1 -0
  666. package/dist/storage/s3.d.ts +29 -0
  667. package/dist/storage/s3.d.ts.map +1 -0
  668. package/dist/storage/s3.js +202 -0
  669. package/dist/storage/s3.js.map +1 -0
  670. package/dist/storage/types.d.ts +75 -0
  671. package/dist/storage/types.d.ts.map +1 -0
  672. package/dist/storage/types.js +17 -0
  673. package/dist/storage/types.js.map +1 -0
  674. package/dist/storage/validation.d.ts +11 -0
  675. package/dist/storage/validation.d.ts.map +1 -0
  676. package/dist/storage/validation.js +38 -0
  677. package/dist/storage/validation.js.map +1 -0
  678. package/dist/tasks/cloudflare-queues.d.ts +63 -0
  679. package/dist/tasks/cloudflare-queues.d.ts.map +1 -0
  680. package/dist/tasks/cloudflare-queues.js +172 -0
  681. package/dist/tasks/cloudflare-queues.js.map +1 -0
  682. package/dist/tasks/concurrency.d.ts +8 -0
  683. package/dist/tasks/concurrency.d.ts.map +1 -0
  684. package/dist/tasks/concurrency.js +27 -0
  685. package/dist/tasks/concurrency.js.map +1 -0
  686. package/dist/tasks/define.d.ts +25 -0
  687. package/dist/tasks/define.d.ts.map +1 -0
  688. package/dist/tasks/define.js +17 -0
  689. package/dist/tasks/define.js.map +1 -0
  690. package/dist/tasks/dlq.d.ts +29 -0
  691. package/dist/tasks/dlq.d.ts.map +1 -0
  692. package/dist/tasks/dlq.js +185 -0
  693. package/dist/tasks/dlq.js.map +1 -0
  694. package/dist/tasks/idempotency.d.ts +13 -0
  695. package/dist/tasks/idempotency.d.ts.map +1 -0
  696. package/dist/tasks/idempotency.js +21 -0
  697. package/dist/tasks/idempotency.js.map +1 -0
  698. package/dist/tasks/index.d.ts +27 -0
  699. package/dist/tasks/index.d.ts.map +1 -0
  700. package/dist/tasks/index.js +15 -0
  701. package/dist/tasks/index.js.map +1 -0
  702. package/dist/tasks/integration.d.ts +18 -0
  703. package/dist/tasks/integration.d.ts.map +1 -0
  704. package/dist/tasks/integration.js +86 -0
  705. package/dist/tasks/integration.js.map +1 -0
  706. package/dist/tasks/lock.d.ts +9 -0
  707. package/dist/tasks/lock.d.ts.map +1 -0
  708. package/dist/tasks/lock.js +31 -0
  709. package/dist/tasks/lock.js.map +1 -0
  710. package/dist/tasks/queue.d.ts +11 -0
  711. package/dist/tasks/queue.d.ts.map +1 -0
  712. package/dist/tasks/queue.js +75 -0
  713. package/dist/tasks/queue.js.map +1 -0
  714. package/dist/tasks/recurring.d.ts +16 -0
  715. package/dist/tasks/recurring.d.ts.map +1 -0
  716. package/dist/tasks/recurring.js +173 -0
  717. package/dist/tasks/recurring.js.map +1 -0
  718. package/dist/tasks/retry.d.ts +4 -0
  719. package/dist/tasks/retry.d.ts.map +1 -0
  720. package/dist/tasks/retry.js +29 -0
  721. package/dist/tasks/retry.js.map +1 -0
  722. package/dist/tasks/scheduler.d.ts +22 -0
  723. package/dist/tasks/scheduler.d.ts.map +1 -0
  724. package/dist/tasks/scheduler.js +125 -0
  725. package/dist/tasks/scheduler.js.map +1 -0
  726. package/dist/tasks/storage.d.ts +17 -0
  727. package/dist/tasks/storage.d.ts.map +1 -0
  728. package/dist/tasks/storage.js +231 -0
  729. package/dist/tasks/storage.js.map +1 -0
  730. package/dist/tasks/types.d.ts +144 -0
  731. package/dist/tasks/types.d.ts.map +1 -0
  732. package/dist/tasks/types.js +2 -0
  733. package/dist/tasks/types.js.map +1 -0
  734. package/dist/tasks/worker.d.ts +21 -0
  735. package/dist/tasks/worker.d.ts.map +1 -0
  736. package/dist/tasks/worker.js +267 -0
  737. package/dist/tasks/worker.js.map +1 -0
  738. package/dist/ui/admin-auth.d.ts +65 -0
  739. package/dist/ui/admin-auth.d.ts.map +1 -0
  740. package/dist/ui/admin-auth.js +248 -0
  741. package/dist/ui/admin-auth.js.map +1 -0
  742. package/dist/ui/data-explorer.d.ts +11 -0
  743. package/dist/ui/data-explorer.d.ts.map +1 -0
  744. package/dist/ui/data-explorer.js +414 -0
  745. package/dist/ui/data-explorer.js.map +1 -0
  746. package/dist/ui/html/components/index.d.ts +75 -0
  747. package/dist/ui/html/components/index.d.ts.map +1 -0
  748. package/dist/ui/html/components/index.js +154 -0
  749. package/dist/ui/html/components/index.js.map +1 -0
  750. package/dist/ui/html/index.d.ts +6 -0
  751. package/dist/ui/html/index.d.ts.map +1 -0
  752. package/dist/ui/html/index.js +6 -0
  753. package/dist/ui/html/index.js.map +1 -0
  754. package/dist/ui/html/layout.d.ts +19 -0
  755. package/dist/ui/html/layout.d.ts.map +1 -0
  756. package/dist/ui/html/layout.js +162 -0
  757. package/dist/ui/html/layout.js.map +1 -0
  758. package/dist/ui/html/pages/admin-audit.d.ts +21 -0
  759. package/dist/ui/html/pages/admin-audit.d.ts.map +1 -0
  760. package/dist/ui/html/pages/admin-audit.js +130 -0
  761. package/dist/ui/html/pages/admin-audit.js.map +1 -0
  762. package/dist/ui/html/pages/api-explorer.d.ts +40 -0
  763. package/dist/ui/html/pages/api-explorer.d.ts.map +1 -0
  764. package/dist/ui/html/pages/api-explorer.js +153 -0
  765. package/dist/ui/html/pages/api-explorer.js.map +1 -0
  766. package/dist/ui/html/pages/changelog.d.ts +27 -0
  767. package/dist/ui/html/pages/changelog.d.ts.map +1 -0
  768. package/dist/ui/html/pages/changelog.js +129 -0
  769. package/dist/ui/html/pages/changelog.js.map +1 -0
  770. package/dist/ui/html/pages/dashboard.d.ts +20 -0
  771. package/dist/ui/html/pages/dashboard.d.ts.map +1 -0
  772. package/dist/ui/html/pages/dashboard.js +49 -0
  773. package/dist/ui/html/pages/dashboard.js.map +1 -0
  774. package/dist/ui/html/pages/data-explorer.d.ts +48 -0
  775. package/dist/ui/html/pages/data-explorer.d.ts.map +1 -0
  776. package/dist/ui/html/pages/data-explorer.js +251 -0
  777. package/dist/ui/html/pages/data-explorer.js.map +1 -0
  778. package/dist/ui/html/pages/errors.d.ts +13 -0
  779. package/dist/ui/html/pages/errors.d.ts.map +1 -0
  780. package/dist/ui/html/pages/errors.js +38 -0
  781. package/dist/ui/html/pages/errors.js.map +1 -0
  782. package/dist/ui/html/pages/filter-tester.d.ts +21 -0
  783. package/dist/ui/html/pages/filter-tester.d.ts.map +1 -0
  784. package/dist/ui/html/pages/filter-tester.js +161 -0
  785. package/dist/ui/html/pages/filter-tester.js.map +1 -0
  786. package/dist/ui/html/pages/index.d.ts +15 -0
  787. package/dist/ui/html/pages/index.d.ts.map +1 -0
  788. package/dist/ui/html/pages/index.js +15 -0
  789. package/dist/ui/html/pages/index.js.map +1 -0
  790. package/dist/ui/html/pages/kv-inspector.d.ts +20 -0
  791. package/dist/ui/html/pages/kv-inspector.d.ts.map +1 -0
  792. package/dist/ui/html/pages/kv-inspector.js +130 -0
  793. package/dist/ui/html/pages/kv-inspector.js.map +1 -0
  794. package/dist/ui/html/pages/requests.d.ts +23 -0
  795. package/dist/ui/html/pages/requests.d.ts.map +1 -0
  796. package/dist/ui/html/pages/requests.js +127 -0
  797. package/dist/ui/html/pages/requests.js.map +1 -0
  798. package/dist/ui/html/pages/resources.d.ts +27 -0
  799. package/dist/ui/html/pages/resources.d.ts.map +1 -0
  800. package/dist/ui/html/pages/resources.js +85 -0
  801. package/dist/ui/html/pages/resources.js.map +1 -0
  802. package/dist/ui/html/pages/sessions.d.ts +24 -0
  803. package/dist/ui/html/pages/sessions.d.ts.map +1 -0
  804. package/dist/ui/html/pages/sessions.js +157 -0
  805. package/dist/ui/html/pages/sessions.js.map +1 -0
  806. package/dist/ui/html/pages/subscriptions.d.ts +32 -0
  807. package/dist/ui/html/pages/subscriptions.d.ts.map +1 -0
  808. package/dist/ui/html/pages/subscriptions.js +138 -0
  809. package/dist/ui/html/pages/subscriptions.js.map +1 -0
  810. package/dist/ui/html/pages/tasks.d.ts +42 -0
  811. package/dist/ui/html/pages/tasks.d.ts.map +1 -0
  812. package/dist/ui/html/pages/tasks.js +225 -0
  813. package/dist/ui/html/pages/tasks.js.map +1 -0
  814. package/dist/ui/html/pages/users.d.ts +29 -0
  815. package/dist/ui/html/pages/users.d.ts.map +1 -0
  816. package/dist/ui/html/pages/users.js +192 -0
  817. package/dist/ui/html/pages/users.js.map +1 -0
  818. package/dist/ui/html/styles.d.ts +2 -0
  819. package/dist/ui/html/styles.d.ts.map +1 -0
  820. package/dist/ui/html/styles.js +675 -0
  821. package/dist/ui/html/styles.js.map +1 -0
  822. package/dist/ui/html/utils.d.ts +14 -0
  823. package/dist/ui/html/utils.d.ts.map +1 -0
  824. package/dist/ui/html/utils.js +76 -0
  825. package/dist/ui/html/utils.js.map +1 -0
  826. package/dist/ui/index.d.ts +13 -0
  827. package/dist/ui/index.d.ts.map +1 -0
  828. package/dist/ui/index.js +7 -0
  829. package/dist/ui/index.js.map +1 -0
  830. package/dist/ui/kv-inspector.d.ts +11 -0
  831. package/dist/ui/kv-inspector.d.ts.map +1 -0
  832. package/dist/ui/kv-inspector.js +332 -0
  833. package/dist/ui/kv-inspector.js.map +1 -0
  834. package/dist/ui/middleware.d.ts +76 -0
  835. package/dist/ui/middleware.d.ts.map +1 -0
  836. package/dist/ui/middleware.js +1175 -0
  837. package/dist/ui/middleware.js.map +1 -0
  838. package/dist/ui/schema-registry.d.ts +82 -0
  839. package/dist/ui/schema-registry.d.ts.map +1 -0
  840. package/dist/ui/schema-registry.js +165 -0
  841. package/dist/ui/schema-registry.js.map +1 -0
  842. package/dist/ui/task-monitor.d.ts +12 -0
  843. package/dist/ui/task-monitor.d.ts.map +1 -0
  844. package/dist/ui/task-monitor.js +264 -0
  845. package/dist/ui/task-monitor.js.map +1 -0
  846. package/package.json +201 -7
@@ -0,0 +1,1059 @@
1
+ /**
2
+ * Cloudflare Durable Object KV Store Implementation
3
+ *
4
+ * Backs the KV adapter interface with a single Durable Object instance.
5
+ * The module is structured in three layers:
6
+ *
7
+ * 1. DurableKVEngine - executes KV operations against Durable Object storage.
8
+ * Collections are stored one storage entry per member because Durable
9
+ * Object storage caps individual values at 128KB.
10
+ * 2. CovaraKVDurableObject - the Durable Object class. Users re-export it
11
+ * from their worker entry and bind it in wrangler.toml. Handles batched
12
+ * commands over POST /batch and pub/sub over hibernating WebSockets.
13
+ * 3. DurableObjectKVStore - the KVAdapter implementation that talks to the
14
+ * Durable Object via its stub.
15
+ *
16
+ * This module deliberately has zero Cloudflare imports so it stays
17
+ * compilable and testable under Node. Cloudflare-specific globals
18
+ * (WebSocketPair) are resolved at runtime via globalThis.
19
+ */
20
+ // NUL never appears in real keys, unlike spaces or colons
21
+ const SEP = "\u0000";
22
+ const COLLECTION_PREFIX = {
23
+ hash: "h",
24
+ set: "e",
25
+ list: "l",
26
+ zset: "z",
27
+ };
28
+ const LIST_INDEX_BASE = 2 ** 42;
29
+ const padListIndex = (position) => String(LIST_INDEX_BASE + position).padStart(14, "0");
30
+ const globToRegex = (pattern) => {
31
+ const escaped = pattern
32
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
33
+ .replace(/\*/g, ".*")
34
+ .replace(/\?/g, ".");
35
+ return new RegExp(`^${escaped}$`);
36
+ };
37
+ export class DurableKVEngine {
38
+ constructor(storage) {
39
+ this.storage = storage;
40
+ }
41
+ stringKey(key) {
42
+ return `s${SEP}${key}`;
43
+ }
44
+ metaKey(key) {
45
+ return `m${SEP}${key}`;
46
+ }
47
+ memberKey(type, key, member) {
48
+ return `${COLLECTION_PREFIX[type]}${SEP}${key}${SEP}${member}`;
49
+ }
50
+ memberPrefix(type, key) {
51
+ return `${COLLECTION_PREFIX[type]}${SEP}${key}${SEP}`;
52
+ }
53
+ async deleteMembers(type, key) {
54
+ const entries = await this.storage.list({
55
+ prefix: this.memberPrefix(type, key),
56
+ });
57
+ for (const storageKey of entries.keys()) {
58
+ await this.storage.delete(storageKey);
59
+ }
60
+ }
61
+ async deleteLogicalKey(key) {
62
+ let deleted = false;
63
+ if (await this.storage.delete(this.stringKey(key))) {
64
+ deleted = true;
65
+ }
66
+ const meta = await this.storage.get(this.metaKey(key));
67
+ if (meta) {
68
+ await this.deleteMembers(meta.type, key);
69
+ await this.storage.delete(this.metaKey(key));
70
+ deleted = true;
71
+ }
72
+ return deleted;
73
+ }
74
+ async readString(key) {
75
+ const entry = await this.storage.get(this.stringKey(key));
76
+ if (!entry)
77
+ return null;
78
+ if (entry.exp !== undefined && Date.now() > entry.exp) {
79
+ await this.storage.delete(this.stringKey(key));
80
+ return null;
81
+ }
82
+ return entry;
83
+ }
84
+ async readMeta(key) {
85
+ const meta = await this.storage.get(this.metaKey(key));
86
+ if (!meta)
87
+ return null;
88
+ if (meta.exp !== undefined && Date.now() > meta.exp) {
89
+ await this.deleteMembers(meta.type, key);
90
+ await this.storage.delete(this.metaKey(key));
91
+ return null;
92
+ }
93
+ return meta;
94
+ }
95
+ async readMetaOfType(key, type) {
96
+ const meta = await this.readMeta(key);
97
+ return meta?.type === type ? meta : null;
98
+ }
99
+ async prepareCollection(key, type) {
100
+ const existing = await this.readMeta(key);
101
+ if (existing?.type === type)
102
+ return existing;
103
+ await this.deleteLogicalKey(key);
104
+ const meta = type === "list" ? { type, head: 0, tail: 0 } : { type };
105
+ await this.storage.put(this.metaKey(key), meta);
106
+ return meta;
107
+ }
108
+ async get(key) {
109
+ return (await this.readString(key))?.v ?? null;
110
+ }
111
+ async set(key, value, options) {
112
+ const stringEntry = await this.readString(key);
113
+ const meta = await this.readMeta(key);
114
+ const exists = stringEntry !== null || meta !== null;
115
+ if (options?.nx && exists)
116
+ return "OK";
117
+ if (options?.xx && !exists)
118
+ return "OK";
119
+ let exp;
120
+ if (options?.ex) {
121
+ exp = Date.now() + options.ex * 1000;
122
+ }
123
+ else if (options?.px) {
124
+ exp = Date.now() + options.px;
125
+ }
126
+ if (meta) {
127
+ await this.deleteLogicalKey(key);
128
+ }
129
+ const entry = exp === undefined ? { v: value } : { v: value, exp };
130
+ await this.storage.put(this.stringKey(key), entry);
131
+ return "OK";
132
+ }
133
+ async del(...keys) {
134
+ let deleted = 0;
135
+ for (const key of keys) {
136
+ if (await this.deleteLogicalKey(key))
137
+ deleted++;
138
+ }
139
+ return deleted;
140
+ }
141
+ async exists(...keys) {
142
+ let count = 0;
143
+ for (const key of keys) {
144
+ if ((await this.readString(key)) !== null || (await this.readMeta(key)) !== null) {
145
+ count++;
146
+ }
147
+ }
148
+ return count;
149
+ }
150
+ async incr(key) {
151
+ return this.incrBy(key, 1);
152
+ }
153
+ async incrBy(key, increment) {
154
+ const stringEntry = await this.readString(key);
155
+ let exp = stringEntry?.exp;
156
+ if (!stringEntry) {
157
+ const meta = await this.readMeta(key);
158
+ if (meta) {
159
+ exp = meta.exp;
160
+ await this.deleteLogicalKey(key);
161
+ }
162
+ }
163
+ const current = stringEntry ? parseInt(stringEntry.v, 10) : 0;
164
+ const value = current + increment;
165
+ const entry = exp === undefined ? { v: String(value) } : { v: String(value), exp };
166
+ await this.storage.put(this.stringKey(key), entry);
167
+ return value;
168
+ }
169
+ async decr(key) {
170
+ return this.incrBy(key, -1);
171
+ }
172
+ async expire(key, seconds) {
173
+ const exp = Date.now() + seconds * 1000;
174
+ const stringEntry = await this.readString(key);
175
+ if (stringEntry) {
176
+ await this.storage.put(this.stringKey(key), { ...stringEntry, exp });
177
+ return true;
178
+ }
179
+ const meta = await this.readMeta(key);
180
+ if (meta) {
181
+ await this.storage.put(this.metaKey(key), { ...meta, exp });
182
+ return true;
183
+ }
184
+ return false;
185
+ }
186
+ async ttl(key) {
187
+ const stringEntry = await this.readString(key);
188
+ const entry = stringEntry ?? (await this.readMeta(key));
189
+ if (!entry)
190
+ return -2;
191
+ if (entry.exp === undefined)
192
+ return -1;
193
+ const remaining = Math.ceil((entry.exp - Date.now()) / 1000);
194
+ return remaining > 0 ? remaining : -2;
195
+ }
196
+ async hget(key, field) {
197
+ const meta = await this.readMetaOfType(key, "hash");
198
+ if (!meta)
199
+ return null;
200
+ const value = await this.storage.get(this.memberKey("hash", key, field));
201
+ return value ?? null;
202
+ }
203
+ async hset(key, field, value) {
204
+ await this.prepareCollection(key, "hash");
205
+ const fieldKey = this.memberKey("hash", key, field);
206
+ const existing = await this.storage.get(fieldKey);
207
+ await this.storage.put(fieldKey, value);
208
+ return existing === undefined ? 1 : 0;
209
+ }
210
+ async hmset(key, data) {
211
+ await this.prepareCollection(key, "hash");
212
+ for (const [field, value] of Object.entries(data)) {
213
+ await this.storage.put(this.memberKey("hash", key, field), value);
214
+ }
215
+ }
216
+ async hgetall(key) {
217
+ const meta = await this.readMetaOfType(key, "hash");
218
+ if (!meta)
219
+ return {};
220
+ const prefix = this.memberPrefix("hash", key);
221
+ const entries = await this.storage.list({ prefix });
222
+ const result = {};
223
+ for (const [storageKey, value] of entries) {
224
+ result[storageKey.slice(prefix.length)] = value;
225
+ }
226
+ return result;
227
+ }
228
+ async hdel(key, ...fields) {
229
+ const meta = await this.readMetaOfType(key, "hash");
230
+ if (!meta)
231
+ return 0;
232
+ let deleted = 0;
233
+ for (const field of fields) {
234
+ if (await this.storage.delete(this.memberKey("hash", key, field))) {
235
+ deleted++;
236
+ }
237
+ }
238
+ return deleted;
239
+ }
240
+ async hexists(key, field) {
241
+ const meta = await this.readMetaOfType(key, "hash");
242
+ if (!meta)
243
+ return false;
244
+ const value = await this.storage.get(this.memberKey("hash", key, field));
245
+ return value !== undefined;
246
+ }
247
+ async hkeys(key) {
248
+ return Object.keys(await this.hgetall(key));
249
+ }
250
+ async hlen(key) {
251
+ return (await this.hkeys(key)).length;
252
+ }
253
+ async sadd(key, ...members) {
254
+ await this.prepareCollection(key, "set");
255
+ let added = 0;
256
+ for (const member of members) {
257
+ const memberKey = this.memberKey("set", key, member);
258
+ const existing = await this.storage.get(memberKey);
259
+ if (existing === undefined) {
260
+ await this.storage.put(memberKey, 1);
261
+ added++;
262
+ }
263
+ }
264
+ return added;
265
+ }
266
+ async srem(key, ...members) {
267
+ const meta = await this.readMetaOfType(key, "set");
268
+ if (!meta)
269
+ return 0;
270
+ let removed = 0;
271
+ for (const member of members) {
272
+ if (await this.storage.delete(this.memberKey("set", key, member))) {
273
+ removed++;
274
+ }
275
+ }
276
+ return removed;
277
+ }
278
+ async smembers(key) {
279
+ const meta = await this.readMetaOfType(key, "set");
280
+ if (!meta)
281
+ return [];
282
+ const prefix = this.memberPrefix("set", key);
283
+ const entries = await this.storage.list({ prefix });
284
+ return [...entries.keys()].map((storageKey) => storageKey.slice(prefix.length));
285
+ }
286
+ async sismember(key, member) {
287
+ const meta = await this.readMetaOfType(key, "set");
288
+ if (!meta)
289
+ return false;
290
+ const value = await this.storage.get(this.memberKey("set", key, member));
291
+ return value !== undefined;
292
+ }
293
+ async scard(key) {
294
+ return (await this.smembers(key)).length;
295
+ }
296
+ async lpush(key, ...values) {
297
+ const meta = await this.prepareCollection(key, "list");
298
+ let head = meta.head ?? 0;
299
+ const tail = meta.tail ?? 0;
300
+ for (const value of values) {
301
+ head -= 1;
302
+ await this.storage.put(this.memberKey("list", key, padListIndex(head)), value);
303
+ }
304
+ await this.storage.put(this.metaKey(key), { ...meta, head, tail });
305
+ return tail - head;
306
+ }
307
+ async rpush(key, ...values) {
308
+ const meta = await this.prepareCollection(key, "list");
309
+ const head = meta.head ?? 0;
310
+ let tail = meta.tail ?? 0;
311
+ for (const value of values) {
312
+ await this.storage.put(this.memberKey("list", key, padListIndex(tail)), value);
313
+ tail += 1;
314
+ }
315
+ await this.storage.put(this.metaKey(key), { ...meta, head, tail });
316
+ return tail - head;
317
+ }
318
+ async lpop(key) {
319
+ const meta = await this.readMetaOfType(key, "list");
320
+ if (!meta)
321
+ return null;
322
+ const head = meta.head ?? 0;
323
+ const tail = meta.tail ?? 0;
324
+ if (head >= tail)
325
+ return null;
326
+ const storageKey = this.memberKey("list", key, padListIndex(head));
327
+ const value = (await this.storage.get(storageKey)) ?? null;
328
+ await this.storage.delete(storageKey);
329
+ await this.storage.put(this.metaKey(key), { ...meta, head: head + 1 });
330
+ return value;
331
+ }
332
+ async rpop(key) {
333
+ const meta = await this.readMetaOfType(key, "list");
334
+ if (!meta)
335
+ return null;
336
+ const head = meta.head ?? 0;
337
+ const tail = meta.tail ?? 0;
338
+ if (head >= tail)
339
+ return null;
340
+ const storageKey = this.memberKey("list", key, padListIndex(tail - 1));
341
+ const value = (await this.storage.get(storageKey)) ?? null;
342
+ await this.storage.delete(storageKey);
343
+ await this.storage.put(this.metaKey(key), { ...meta, tail: tail - 1 });
344
+ return value;
345
+ }
346
+ async loadList(key) {
347
+ const meta = await this.readMetaOfType(key, "list");
348
+ if (!meta)
349
+ return [];
350
+ const entries = await this.storage.list({
351
+ prefix: this.memberPrefix("list", key),
352
+ });
353
+ return [...entries.values()];
354
+ }
355
+ async lrange(key, start, stop) {
356
+ const list = await this.loadList(key);
357
+ const len = list.length;
358
+ const s = start < 0 ? Math.max(len + start, 0) : start;
359
+ const e = stop < 0 ? len + stop : stop;
360
+ return list.slice(s, e + 1);
361
+ }
362
+ async llen(key) {
363
+ const meta = await this.readMetaOfType(key, "list");
364
+ if (!meta)
365
+ return 0;
366
+ return (meta.tail ?? 0) - (meta.head ?? 0);
367
+ }
368
+ async ltrim(key, start, stop) {
369
+ const meta = await this.readMetaOfType(key, "list");
370
+ if (!meta)
371
+ return;
372
+ const entries = await this.storage.list({
373
+ prefix: this.memberPrefix("list", key),
374
+ });
375
+ const storageKeys = [...entries.keys()];
376
+ const len = storageKeys.length;
377
+ const s = start < 0 ? Math.max(len + start, 0) : start;
378
+ const e = stop < 0 ? len + stop : stop;
379
+ const keepFrom = Math.max(s, 0);
380
+ const keepTo = Math.min(e, len - 1);
381
+ for (let i = 0; i < len; i++) {
382
+ if (i < keepFrom || i > keepTo) {
383
+ await this.storage.delete(storageKeys[i]);
384
+ }
385
+ }
386
+ const head = meta.head ?? 0;
387
+ if (keepFrom > keepTo) {
388
+ await this.storage.put(this.metaKey(key), { ...meta, head: 0, tail: 0 });
389
+ }
390
+ else {
391
+ await this.storage.put(this.metaKey(key), {
392
+ ...meta,
393
+ head: head + keepFrom,
394
+ tail: head + keepTo + 1,
395
+ });
396
+ }
397
+ }
398
+ async loadZSet(key) {
399
+ const meta = await this.readMetaOfType(key, "zset");
400
+ if (!meta)
401
+ return [];
402
+ const prefix = this.memberPrefix("zset", key);
403
+ const entries = await this.storage.list({ prefix });
404
+ const members = [...entries].map(([storageKey, score]) => ({
405
+ member: storageKey.slice(prefix.length),
406
+ score,
407
+ }));
408
+ members.sort((a, b) => a.score - b.score);
409
+ return members;
410
+ }
411
+ async zadd(key, score, member) {
412
+ await this.prepareCollection(key, "zset");
413
+ const memberKey = this.memberKey("zset", key, member);
414
+ const existing = await this.storage.get(memberKey);
415
+ await this.storage.put(memberKey, score);
416
+ return existing === undefined ? 1 : 0;
417
+ }
418
+ async zrem(key, ...members) {
419
+ const meta = await this.readMetaOfType(key, "zset");
420
+ if (!meta)
421
+ return 0;
422
+ let removed = 0;
423
+ for (const member of members) {
424
+ if (await this.storage.delete(this.memberKey("zset", key, member))) {
425
+ removed++;
426
+ }
427
+ }
428
+ return removed;
429
+ }
430
+ async zscore(key, member) {
431
+ const meta = await this.readMetaOfType(key, "zset");
432
+ if (!meta)
433
+ return null;
434
+ const score = await this.storage.get(this.memberKey("zset", key, member));
435
+ return score ?? null;
436
+ }
437
+ async zrange(key, start, stop) {
438
+ const zset = await this.loadZSet(key);
439
+ const len = zset.length;
440
+ const s = start < 0 ? Math.max(len + start, 0) : start;
441
+ const e = stop < 0 ? len + stop : stop;
442
+ return zset.slice(s, e + 1).map((m) => m.member);
443
+ }
444
+ async zrangebyscore(key, min, max, options) {
445
+ const zset = await this.loadZSet(key);
446
+ const minScore = min === "-inf" ? -Infinity : min;
447
+ const maxScore = max === "+inf" ? Infinity : max;
448
+ let filtered = zset.filter((m) => m.score >= minScore && m.score <= maxScore);
449
+ if (options?.limit) {
450
+ filtered = filtered.slice(options.limit.offset, options.limit.offset + options.limit.count);
451
+ }
452
+ return filtered.map((m) => m.member);
453
+ }
454
+ async zcard(key) {
455
+ return (await this.loadZSet(key)).length;
456
+ }
457
+ async zincrby(key, increment, member) {
458
+ await this.prepareCollection(key, "zset");
459
+ const memberKey = this.memberKey("zset", key, member);
460
+ const existing = await this.storage.get(memberKey);
461
+ const score = (existing ?? 0) + increment;
462
+ await this.storage.put(memberKey, score);
463
+ return score;
464
+ }
465
+ async keys(pattern) {
466
+ const regex = globToRegex(pattern);
467
+ const result = [];
468
+ const strings = await this.storage.list({ prefix: `s${SEP}` });
469
+ for (const [storageKey, entry] of strings) {
470
+ const key = storageKey.slice(2);
471
+ if (entry.exp !== undefined && Date.now() > entry.exp) {
472
+ await this.storage.delete(storageKey);
473
+ continue;
474
+ }
475
+ if (regex.test(key))
476
+ result.push(key);
477
+ }
478
+ const metas = await this.storage.list({ prefix: `m${SEP}` });
479
+ for (const [storageKey, meta] of metas) {
480
+ const key = storageKey.slice(2);
481
+ if (meta.exp !== undefined && Date.now() > meta.exp) {
482
+ await this.deleteMembers(meta.type, key);
483
+ await this.storage.delete(storageKey);
484
+ continue;
485
+ }
486
+ if (regex.test(key))
487
+ result.push(key);
488
+ }
489
+ return result;
490
+ }
491
+ async scan(cursor, options) {
492
+ const allKeys = await this.keys(options?.match ?? "*");
493
+ const start = parseInt(cursor, 10) || 0;
494
+ const count = options?.count ?? 10;
495
+ const end = Math.min(start + count, allKeys.length);
496
+ return {
497
+ cursor: end >= allKeys.length ? "0" : String(end),
498
+ keys: allKeys.slice(start, end),
499
+ };
500
+ }
501
+ }
502
+ const ENGINE_OPS = new Set([
503
+ "get",
504
+ "set",
505
+ "del",
506
+ "exists",
507
+ "incr",
508
+ "incrBy",
509
+ "decr",
510
+ "expire",
511
+ "ttl",
512
+ "hget",
513
+ "hset",
514
+ "hmset",
515
+ "hgetall",
516
+ "hdel",
517
+ "hexists",
518
+ "hkeys",
519
+ "hlen",
520
+ "sadd",
521
+ "srem",
522
+ "smembers",
523
+ "sismember",
524
+ "scard",
525
+ "lpush",
526
+ "rpush",
527
+ "lpop",
528
+ "rpop",
529
+ "lrange",
530
+ "llen",
531
+ "ltrim",
532
+ "zadd",
533
+ "zrem",
534
+ "zscore",
535
+ "zrange",
536
+ "zrangebyscore",
537
+ "zcard",
538
+ "zincrby",
539
+ "keys",
540
+ "scan",
541
+ ]);
542
+ const parseChannelList = (raw) => {
543
+ if (!raw)
544
+ return [];
545
+ return raw
546
+ .split(",")
547
+ .filter((part) => part.length > 0)
548
+ .map((part) => decodeURIComponent(part));
549
+ };
550
+ const readAttachmentPatterns = (socket) => {
551
+ try {
552
+ const attachment = socket.deserializeAttachment?.();
553
+ if (attachment &&
554
+ typeof attachment === "object" &&
555
+ Array.isArray(attachment.patterns)) {
556
+ return attachment.patterns;
557
+ }
558
+ }
559
+ catch {
560
+ // sockets without an attachment have no patterns
561
+ }
562
+ return [];
563
+ };
564
+ const createWebSocketResponse = (client) => {
565
+ const init = { status: 101, webSocket: client };
566
+ try {
567
+ // workerd accepts status 101 with a webSocket; Node's Response does not,
568
+ // so fall back to a structurally compatible object for non-CF runtimes
569
+ return new Response(null, init);
570
+ }
571
+ catch {
572
+ return { status: 101, ok: false, webSocket: client };
573
+ }
574
+ };
575
+ const jsonResponse = (body, status) => new Response(JSON.stringify(body), {
576
+ status,
577
+ headers: { "content-type": "application/json" },
578
+ });
579
+ export class CovaraKVDurableObject {
580
+ constructor(state) {
581
+ this.state = state;
582
+ this.engine = new DurableKVEngine(state.storage);
583
+ }
584
+ async fetch(request) {
585
+ const url = new URL(request.url);
586
+ if (request.method === "POST" && url.pathname === "/batch") {
587
+ return this.handleBatch(request);
588
+ }
589
+ if (url.pathname === "/subscribe") {
590
+ if (request.headers.get("Upgrade")?.toLowerCase() !== "websocket") {
591
+ return new Response("Expected websocket upgrade", { status: 426 });
592
+ }
593
+ return this.handleSubscribe(url);
594
+ }
595
+ return new Response("Not found", { status: 404 });
596
+ }
597
+ async webSocketClose() {
598
+ // hibernation API shape; subscriber cleanup is handled by the runtime
599
+ }
600
+ async webSocketError() {
601
+ // hibernation API shape
602
+ }
603
+ async handleBatch(request) {
604
+ let body;
605
+ try {
606
+ body = (await request.json());
607
+ }
608
+ catch {
609
+ return jsonResponse({ error: "Invalid JSON body" }, 400);
610
+ }
611
+ if (!Array.isArray(body?.commands)) {
612
+ return jsonResponse({ error: "commands array required" }, 400);
613
+ }
614
+ const results = [];
615
+ for (const command of body.commands) {
616
+ try {
617
+ const value = await this.runCommand(command.op, command.args ?? []);
618
+ results.push({ ok: true, value: value === undefined ? null : value });
619
+ }
620
+ catch (error) {
621
+ results.push({
622
+ ok: false,
623
+ error: error instanceof Error ? error.message : String(error),
624
+ });
625
+ if (body.stopOnError)
626
+ break;
627
+ }
628
+ }
629
+ return jsonResponse({ results }, 200);
630
+ }
631
+ runCommand(op, args) {
632
+ if (op === "publish") {
633
+ return this.publish(String(args[0]), String(args[1]));
634
+ }
635
+ if (!ENGINE_OPS.has(op)) {
636
+ throw new Error(`Unknown command: ${op}`);
637
+ }
638
+ const method = this.engine[op];
639
+ return method.apply(this.engine, args);
640
+ }
641
+ handleSubscribe(url) {
642
+ const pairConstructor = globalThis.WebSocketPair;
643
+ if (!pairConstructor) {
644
+ return new Response("WebSocketPair is not available in this runtime", {
645
+ status: 500,
646
+ });
647
+ }
648
+ const pair = new pairConstructor();
649
+ const client = pair["0"];
650
+ const server = pair["1"];
651
+ const channels = parseChannelList(url.searchParams.get("channels"));
652
+ const patterns = parseChannelList(url.searchParams.get("patterns"));
653
+ this.state.acceptWebSocket(server, channels);
654
+ server.serializeAttachment?.({ patterns });
655
+ return createWebSocketResponse(client);
656
+ }
657
+ publish(channel, message) {
658
+ const targets = new Set(this.state.getWebSockets(channel));
659
+ for (const socket of this.state.getWebSockets()) {
660
+ if (targets.has(socket))
661
+ continue;
662
+ const patterns = readAttachmentPatterns(socket);
663
+ if (patterns.some((pattern) => globToRegex(pattern).test(channel))) {
664
+ targets.add(socket);
665
+ }
666
+ }
667
+ const payload = JSON.stringify({ channel, message });
668
+ let delivered = 0;
669
+ for (const socket of targets) {
670
+ try {
671
+ socket.send(payload);
672
+ delivered++;
673
+ }
674
+ catch {
675
+ // skip sockets that fail to deliver
676
+ }
677
+ }
678
+ return delivered;
679
+ }
680
+ }
681
+ const defaultReconnectDelay = (attempt) => Math.min(250 * 2 ** attempt, 5000);
682
+ export class DurableObjectKVStore {
683
+ constructor(stub, options) {
684
+ this.connected = false;
685
+ this.channelCallbacks = new Map();
686
+ this.patternCallbacks = new Map();
687
+ this.socket = null;
688
+ this.reconnectAttempts = 0;
689
+ this.reconnectTimer = null;
690
+ this.stub = stub;
691
+ this.prefix = options?.prefix ?? "";
692
+ this.reconnectDelay = options?.reconnectDelay ?? defaultReconnectDelay;
693
+ }
694
+ key(k) {
695
+ return this.prefix ? `${this.prefix}:${k}` : k;
696
+ }
697
+ stripPrefix(key) {
698
+ return this.prefix ? key.slice(this.prefix.length + 1) : key;
699
+ }
700
+ async execBatch(commands, stopOnError = false) {
701
+ const response = await this.stub.fetch("https://covara-kv/batch", {
702
+ method: "POST",
703
+ headers: { "content-type": "application/json" },
704
+ body: JSON.stringify({ commands, stopOnError }),
705
+ });
706
+ if (!response.ok) {
707
+ throw new Error(`Durable Object KV request failed with status ${response.status}`);
708
+ }
709
+ const body = (await response.json());
710
+ return body.results.map((result) => {
711
+ if (!result.ok)
712
+ throw new Error(result.error);
713
+ return result.value;
714
+ });
715
+ }
716
+ async call(op, ...args) {
717
+ while (args.length > 0 && args[args.length - 1] === undefined) {
718
+ args.pop();
719
+ }
720
+ const [value] = await this.execBatch([{ op, args }]);
721
+ return value;
722
+ }
723
+ async connect() {
724
+ this.connected = true;
725
+ }
726
+ async disconnect() {
727
+ this.connected = false;
728
+ this.channelCallbacks.clear();
729
+ this.patternCallbacks.clear();
730
+ this.clearReconnectTimer();
731
+ this.closeSocket();
732
+ }
733
+ isConnected() {
734
+ return this.connected;
735
+ }
736
+ async get(key) {
737
+ return (await this.call("get", this.key(key)));
738
+ }
739
+ async set(key, value, options) {
740
+ await this.call("set", this.key(key), value, options);
741
+ }
742
+ async del(...keys) {
743
+ return (await this.call("del", ...keys.map((key) => this.key(key))));
744
+ }
745
+ async exists(...keys) {
746
+ return (await this.call("exists", ...keys.map((key) => this.key(key))));
747
+ }
748
+ async incr(key) {
749
+ return (await this.call("incr", this.key(key)));
750
+ }
751
+ async incrBy(key, increment) {
752
+ return (await this.call("incrBy", this.key(key), increment));
753
+ }
754
+ async decr(key) {
755
+ return (await this.call("decr", this.key(key)));
756
+ }
757
+ async expire(key, seconds) {
758
+ return (await this.call("expire", this.key(key), seconds));
759
+ }
760
+ async ttl(key) {
761
+ return (await this.call("ttl", this.key(key)));
762
+ }
763
+ async hget(key, field) {
764
+ return (await this.call("hget", this.key(key), field));
765
+ }
766
+ async hset(key, field, value) {
767
+ return (await this.call("hset", this.key(key), field, value));
768
+ }
769
+ async hmset(key, data) {
770
+ await this.call("hmset", this.key(key), data);
771
+ }
772
+ async hgetall(key) {
773
+ return (await this.call("hgetall", this.key(key)));
774
+ }
775
+ async hdel(key, ...fields) {
776
+ return (await this.call("hdel", this.key(key), ...fields));
777
+ }
778
+ async hexists(key, field) {
779
+ return (await this.call("hexists", this.key(key), field));
780
+ }
781
+ async hkeys(key) {
782
+ return (await this.call("hkeys", this.key(key)));
783
+ }
784
+ async hlen(key) {
785
+ return (await this.call("hlen", this.key(key)));
786
+ }
787
+ async sadd(key, ...members) {
788
+ return (await this.call("sadd", this.key(key), ...members));
789
+ }
790
+ async srem(key, ...members) {
791
+ return (await this.call("srem", this.key(key), ...members));
792
+ }
793
+ async smembers(key) {
794
+ return (await this.call("smembers", this.key(key)));
795
+ }
796
+ async sismember(key, member) {
797
+ return (await this.call("sismember", this.key(key), member));
798
+ }
799
+ async scard(key) {
800
+ return (await this.call("scard", this.key(key)));
801
+ }
802
+ async lpush(key, ...values) {
803
+ return (await this.call("lpush", this.key(key), ...values));
804
+ }
805
+ async rpush(key, ...values) {
806
+ return (await this.call("rpush", this.key(key), ...values));
807
+ }
808
+ async lpop(key) {
809
+ return (await this.call("lpop", this.key(key)));
810
+ }
811
+ async rpop(key) {
812
+ return (await this.call("rpop", this.key(key)));
813
+ }
814
+ async lrange(key, start, stop) {
815
+ return (await this.call("lrange", this.key(key), start, stop));
816
+ }
817
+ async llen(key) {
818
+ return (await this.call("llen", this.key(key)));
819
+ }
820
+ async ltrim(key, start, stop) {
821
+ await this.call("ltrim", this.key(key), start, stop);
822
+ }
823
+ async zadd(key, score, member) {
824
+ return (await this.call("zadd", this.key(key), score, member));
825
+ }
826
+ async zrem(key, ...members) {
827
+ return (await this.call("zrem", this.key(key), ...members));
828
+ }
829
+ async zscore(key, member) {
830
+ return (await this.call("zscore", this.key(key), member));
831
+ }
832
+ async zrange(key, start, stop) {
833
+ return (await this.call("zrange", this.key(key), start, stop));
834
+ }
835
+ async zrangebyscore(key, min, max, options) {
836
+ return (await this.call("zrangebyscore", this.key(key), min, max, options));
837
+ }
838
+ async zcard(key) {
839
+ return (await this.call("zcard", this.key(key)));
840
+ }
841
+ async zincrby(key, increment, member) {
842
+ return (await this.call("zincrby", this.key(key), increment, member));
843
+ }
844
+ async keys(pattern) {
845
+ const raw = (await this.call("keys", this.key(pattern)));
846
+ return raw.map((key) => this.stripPrefix(key));
847
+ }
848
+ async scan(cursor, options) {
849
+ const raw = (await this.call("scan", cursor, {
850
+ ...options,
851
+ match: this.key(options?.match ?? "*"),
852
+ }));
853
+ return {
854
+ cursor: raw.cursor,
855
+ keys: raw.keys.map((key) => this.stripPrefix(key)),
856
+ };
857
+ }
858
+ async publish(channel, message) {
859
+ return (await this.call("publish", channel, message));
860
+ }
861
+ async subscribe(channel, callback) {
862
+ const callbacks = this.channelCallbacks.get(channel);
863
+ if (callbacks) {
864
+ callbacks.add(callback);
865
+ return;
866
+ }
867
+ this.channelCallbacks.set(channel, new Set([callback]));
868
+ await this.refreshSocket();
869
+ }
870
+ async psubscribe(pattern, callback) {
871
+ const callbacks = this.patternCallbacks.get(pattern);
872
+ if (callbacks) {
873
+ callbacks.add(callback);
874
+ return;
875
+ }
876
+ this.patternCallbacks.set(pattern, new Set([callback]));
877
+ await this.refreshSocket();
878
+ }
879
+ async unsubscribe(channel) {
880
+ if (!this.channelCallbacks.delete(channel))
881
+ return;
882
+ await this.refreshSocket();
883
+ }
884
+ async punsubscribe(pattern) {
885
+ if (!this.patternCallbacks.delete(pattern))
886
+ return;
887
+ await this.refreshSocket();
888
+ }
889
+ multi() {
890
+ return new DurableObjectTransaction((commands) => this.execBatch(commands, true), (key) => this.key(key));
891
+ }
892
+ async eval(_script, _keys, _args) {
893
+ console.warn("Lua scripting not supported in Durable Object KV store");
894
+ return null;
895
+ }
896
+ async refreshSocket() {
897
+ this.clearReconnectTimer();
898
+ if (this.channelCallbacks.size === 0 && this.patternCallbacks.size === 0) {
899
+ this.closeSocket();
900
+ return;
901
+ }
902
+ const params = new URLSearchParams();
903
+ const channels = [...this.channelCallbacks.keys()];
904
+ const patterns = [...this.patternCallbacks.keys()];
905
+ if (channels.length > 0) {
906
+ params.set("channels", channels.map(encodeURIComponent).join(","));
907
+ }
908
+ if (patterns.length > 0) {
909
+ params.set("patterns", patterns.map(encodeURIComponent).join(","));
910
+ }
911
+ const response = await this.stub.fetch(`https://covara-kv/subscribe?${params.toString()}`, { headers: { Upgrade: "websocket" } });
912
+ const socket = response.webSocket;
913
+ if (!socket) {
914
+ throw new Error("Durable Object did not return a WebSocket");
915
+ }
916
+ socket.accept?.();
917
+ socket.addEventListener?.("message", (event) => this.dispatchMessage(event.data));
918
+ socket.addEventListener?.("close", () => this.handleSocketClose(socket));
919
+ const previous = this.socket;
920
+ this.socket = socket;
921
+ this.reconnectAttempts = 0;
922
+ previous?.close();
923
+ }
924
+ dispatchMessage(data) {
925
+ let event;
926
+ try {
927
+ event = JSON.parse(String(data));
928
+ }
929
+ catch {
930
+ return;
931
+ }
932
+ if (typeof event.channel !== "string" || typeof event.message !== "string") {
933
+ return;
934
+ }
935
+ const channel = event.channel;
936
+ const message = event.message;
937
+ const exact = this.channelCallbacks.get(channel);
938
+ if (exact) {
939
+ for (const callback of exact) {
940
+ callback(message, channel);
941
+ }
942
+ }
943
+ for (const [pattern, callbacks] of this.patternCallbacks) {
944
+ if (!globToRegex(pattern).test(channel))
945
+ continue;
946
+ for (const callback of callbacks) {
947
+ callback(message, channel);
948
+ }
949
+ }
950
+ }
951
+ handleSocketClose(socket) {
952
+ if (socket !== this.socket)
953
+ return;
954
+ this.socket = null;
955
+ if (this.channelCallbacks.size === 0 && this.patternCallbacks.size === 0) {
956
+ return;
957
+ }
958
+ this.scheduleReconnect();
959
+ }
960
+ scheduleReconnect() {
961
+ if (this.reconnectTimer)
962
+ return;
963
+ const delay = this.reconnectDelay(this.reconnectAttempts);
964
+ this.reconnectAttempts += 1;
965
+ this.reconnectTimer = setTimeout(() => {
966
+ this.reconnectTimer = null;
967
+ void this.refreshSocket().catch(() => this.scheduleReconnect());
968
+ }, delay);
969
+ }
970
+ closeSocket() {
971
+ const socket = this.socket;
972
+ this.socket = null;
973
+ socket?.close();
974
+ }
975
+ clearReconnectTimer() {
976
+ if (this.reconnectTimer) {
977
+ clearTimeout(this.reconnectTimer);
978
+ this.reconnectTimer = null;
979
+ }
980
+ }
981
+ }
982
+ class DurableObjectTransaction {
983
+ constructor(execBatch, prefixKey) {
984
+ this.commands = [];
985
+ this.execBatch = execBatch;
986
+ this.prefixKey = prefixKey;
987
+ }
988
+ get(key) {
989
+ this.commands.push({ op: "get", args: [this.prefixKey(key)] });
990
+ return this;
991
+ }
992
+ set(key, value, options) {
993
+ const args = [this.prefixKey(key), value];
994
+ if (options !== undefined)
995
+ args.push(options);
996
+ this.commands.push({ op: "set", args });
997
+ return this;
998
+ }
999
+ del(...keys) {
1000
+ this.commands.push({ op: "del", args: keys.map((key) => this.prefixKey(key)) });
1001
+ return this;
1002
+ }
1003
+ incr(key) {
1004
+ this.commands.push({ op: "incr", args: [this.prefixKey(key)] });
1005
+ return this;
1006
+ }
1007
+ hset(key, field, value) {
1008
+ this.commands.push({ op: "hset", args: [this.prefixKey(key), field, value] });
1009
+ return this;
1010
+ }
1011
+ hdel(key, ...fields) {
1012
+ this.commands.push({ op: "hdel", args: [this.prefixKey(key), ...fields] });
1013
+ return this;
1014
+ }
1015
+ sadd(key, ...members) {
1016
+ this.commands.push({ op: "sadd", args: [this.prefixKey(key), ...members] });
1017
+ return this;
1018
+ }
1019
+ srem(key, ...members) {
1020
+ this.commands.push({ op: "srem", args: [this.prefixKey(key), ...members] });
1021
+ return this;
1022
+ }
1023
+ lpush(key, ...values) {
1024
+ this.commands.push({ op: "lpush", args: [this.prefixKey(key), ...values] });
1025
+ return this;
1026
+ }
1027
+ rpush(key, ...values) {
1028
+ this.commands.push({ op: "rpush", args: [this.prefixKey(key), ...values] });
1029
+ return this;
1030
+ }
1031
+ zadd(key, score, member) {
1032
+ this.commands.push({ op: "zadd", args: [this.prefixKey(key), score, member] });
1033
+ return this;
1034
+ }
1035
+ zrem(key, ...members) {
1036
+ this.commands.push({ op: "zrem", args: [this.prefixKey(key), ...members] });
1037
+ return this;
1038
+ }
1039
+ expire(key, seconds) {
1040
+ this.commands.push({ op: "expire", args: [this.prefixKey(key), seconds] });
1041
+ return this;
1042
+ }
1043
+ async exec() {
1044
+ const results = await this.execBatch(this.commands);
1045
+ this.commands = [];
1046
+ return results;
1047
+ }
1048
+ discard() {
1049
+ this.commands = [];
1050
+ }
1051
+ }
1052
+ export const createDurableObjectKV = (namespace, options) => {
1053
+ const stub = namespace.get(namespace.idFromName(options?.name ?? "covara-kv"));
1054
+ return new DurableObjectKVStore(stub, {
1055
+ prefix: options?.prefix,
1056
+ reconnectDelay: options?.reconnectDelay,
1057
+ });
1058
+ };
1059
+ //# sourceMappingURL=durable-object.js.map