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,1136 @@
1
+ import { getTableColumns } from "drizzle-orm";
2
+ import { and, eq, not, or, sql, isNull as drizzleIsNull, isNotNull as drizzleIsNotNull, } from "drizzle-orm";
3
+ import { FilterParseError } from "./error.js";
4
+ export const DEFAULT_FILTER_CONFIG = {
5
+ maxLength: 4096,
6
+ maxDepth: 10,
7
+ maxNodes: 100,
8
+ };
9
+ const validateComplexity = (ctx, depth) => {
10
+ ctx.nodeCount++;
11
+ ctx.maxDepthSeen = Math.max(ctx.maxDepthSeen, depth);
12
+ if (ctx.config.maxNodes && ctx.nodeCount > ctx.config.maxNodes) {
13
+ throw new FilterParseError("Filter has too many conditions", {
14
+ suggestion: `Maximum ${ctx.config.maxNodes} conditions allowed`,
15
+ });
16
+ }
17
+ if (ctx.config.maxDepth && depth > ctx.config.maxDepth) {
18
+ throw new FilterParseError("Filter is too deeply nested", {
19
+ suggestion: `Maximum nesting depth is ${ctx.config.maxDepth}`,
20
+ });
21
+ }
22
+ };
23
+ const likePatternToRegex = (pattern) => {
24
+ let regex = "^";
25
+ let i = 0;
26
+ while (i < pattern.length) {
27
+ const ch = pattern[i];
28
+ if (ch === "\\") {
29
+ i++;
30
+ if (i < pattern.length) {
31
+ regex += escapeRegexChar(pattern[i]);
32
+ }
33
+ else {
34
+ regex += "\\\\";
35
+ }
36
+ }
37
+ else if (ch === "%") {
38
+ regex += ".*";
39
+ }
40
+ else if (ch === "_") {
41
+ regex += ".";
42
+ }
43
+ else {
44
+ regex += escapeRegexChar(ch);
45
+ }
46
+ i++;
47
+ }
48
+ regex += "$";
49
+ return new RegExp(regex);
50
+ };
51
+ const escapeRegexChar = (ch) => {
52
+ return /[\\^$.*+?()[\]{}|]/.test(ch) ? "\\" + ch : ch;
53
+ };
54
+ const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-]\d{2}:?\d{2})?)?$/;
55
+ const tryParseDate = (v) => {
56
+ if (v instanceof Date)
57
+ return v;
58
+ if (typeof v === "string" && ISO_DATE_REGEX.test(v)) {
59
+ const d = new Date(v);
60
+ return Number.isNaN(d.getTime()) ? null : d;
61
+ }
62
+ // Only treat numbers as timestamps if they're in a reasonable range
63
+ // (between year 1970 and year 3000 in milliseconds)
64
+ if (typeof v === "number") {
65
+ const MIN_TIMESTAMP = 0; // Jan 1, 1970
66
+ const MAX_TIMESTAMP = 32503680000000; // Year 3000
67
+ if (v >= MIN_TIMESTAMP && v <= MAX_TIMESTAMP && Number.isInteger(v)) {
68
+ const d = new Date(v);
69
+ return Number.isNaN(d.getTime()) ? null : d;
70
+ }
71
+ }
72
+ return null;
73
+ };
74
+ const safeCompare = (a, b) => {
75
+ const aDate = tryParseDate(a);
76
+ const bDate = tryParseDate(b);
77
+ if (aDate && bDate) {
78
+ const aTime = aDate.getTime();
79
+ const bTime = bDate.getTime();
80
+ if (aTime < bTime)
81
+ return -1;
82
+ if (aTime > bTime)
83
+ return 1;
84
+ return 0;
85
+ }
86
+ const tryNumber = (v) => {
87
+ if (typeof v === "number")
88
+ return Number.isFinite(v) ? v : NaN;
89
+ if (typeof v === "string") {
90
+ const n = parseFloat(v.trim());
91
+ return Number.isFinite(n) ? n : NaN;
92
+ }
93
+ return NaN;
94
+ };
95
+ const aNum = tryNumber(a);
96
+ const bNum = tryNumber(b);
97
+ const eitherIsNumberLike = typeof a === "number" ||
98
+ typeof b === "number" ||
99
+ !Number.isNaN(aNum) ||
100
+ !Number.isNaN(bNum);
101
+ if (eitherIsNumberLike && !Number.isNaN(aNum) && !Number.isNaN(bNum)) {
102
+ if (aNum < bNum)
103
+ return -1;
104
+ if (aNum > bNum)
105
+ return 1;
106
+ return 0;
107
+ }
108
+ const aStr = String(a);
109
+ const bStr = String(b);
110
+ const cmp = aStr.localeCompare(bStr);
111
+ if (cmp < 0)
112
+ return -1;
113
+ if (cmp > 0)
114
+ return 1;
115
+ return 0;
116
+ };
117
+ const normalizeForComparison = (v) => {
118
+ if (v === null || v === undefined)
119
+ return null;
120
+ const d = tryParseDate(v);
121
+ if (d)
122
+ return d;
123
+ if (typeof v === "number")
124
+ return v;
125
+ if (typeof v === "boolean")
126
+ return v ? 1 : 0;
127
+ return String(v);
128
+ };
129
+ const isTruthy = (v) => {
130
+ if (typeof v === "boolean")
131
+ return v === true;
132
+ if (typeof v === "number")
133
+ return v === 1;
134
+ if (typeof v === "string")
135
+ return v.toLowerCase() === "true" || v === "1";
136
+ return false;
137
+ };
138
+ const isFalsy = (v) => {
139
+ if (typeof v === "boolean")
140
+ return v === false;
141
+ if (typeof v === "number")
142
+ return v === 0;
143
+ if (typeof v === "string")
144
+ return v.toLowerCase() === "false" || v === "0";
145
+ return false;
146
+ };
147
+ export const createResourceFilter = (schema, customOperators = {}, filterConfig = DEFAULT_FILTER_CONFIG) => {
148
+ const config = { ...DEFAULT_FILTER_CONFIG, ...filterConfig };
149
+ const builtinOperators = [
150
+ // LIKE pattern operators (must be before == and != for parsing priority)
151
+ {
152
+ op: "!%=",
153
+ convert: (lhs, rhs) => sql `${lhs} NOT LIKE ${rhs}`,
154
+ execute: (lhs, rhs) => {
155
+ const regex = likePatternToRegex(String(rhs));
156
+ return !regex.test(String(lhs));
157
+ },
158
+ },
159
+ {
160
+ op: "%=",
161
+ convert: (lhs, rhs) => sql `${lhs} LIKE ${rhs}`,
162
+ execute: (lhs, rhs) => {
163
+ const regex = likePatternToRegex(String(rhs));
164
+ return regex.test(String(lhs));
165
+ },
166
+ },
167
+ // Basic equality operators
168
+ {
169
+ op: "==",
170
+ convert: (lhs, rhs) => eq(lhs, rhs),
171
+ execute: (lhs, rhs) => {
172
+ // Handle boolean comparisons: true matches true/1/"true"/"1", false matches false/0/"false"/"0"
173
+ if (rhs === true) {
174
+ return isTruthy(lhs);
175
+ }
176
+ if (rhs === false) {
177
+ return isFalsy(lhs);
178
+ }
179
+ // Handle date comparisons
180
+ const lhsNorm = normalizeForComparison(lhs);
181
+ const rhsNorm = normalizeForComparison(rhs);
182
+ if (lhsNorm instanceof Date && rhsNorm instanceof Date) {
183
+ return lhsNorm.getTime() === rhsNorm.getTime();
184
+ }
185
+ return String(lhs) === String(rhs);
186
+ },
187
+ },
188
+ {
189
+ op: "!=",
190
+ convert: (lhs, rhs) => not(eq(lhs, rhs)),
191
+ execute: (lhs, rhs) => {
192
+ // Handle boolean comparisons
193
+ if (rhs === true) {
194
+ return !isTruthy(lhs);
195
+ }
196
+ if (rhs === false) {
197
+ return !isFalsy(lhs);
198
+ }
199
+ // Handle date comparisons
200
+ const lhsNorm = normalizeForComparison(lhs);
201
+ const rhsNorm = normalizeForComparison(rhs);
202
+ if (lhsNorm instanceof Date && rhsNorm instanceof Date) {
203
+ return lhsNorm.getTime() !== rhsNorm.getTime();
204
+ }
205
+ return String(lhs) !== String(rhs);
206
+ },
207
+ },
208
+ // Comparison operators
209
+ {
210
+ op: ">=",
211
+ convert: (lhs, rhs) => sql `${lhs} >= ${rhs}`,
212
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) >= 0,
213
+ },
214
+ {
215
+ op: "<=",
216
+ convert: (lhs, rhs) => sql `${lhs} <= ${rhs}`,
217
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) <= 0,
218
+ },
219
+ {
220
+ op: ">",
221
+ convert: (lhs, rhs) => sql `${lhs} > ${rhs}`,
222
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) > 0,
223
+ },
224
+ {
225
+ op: "<",
226
+ convert: (lhs, rhs) => sql `${lhs} < ${rhs}`,
227
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) < 0,
228
+ },
229
+ // Null check operators
230
+ {
231
+ op: "=isnull=",
232
+ convert: (lhs, rhs) => {
233
+ const checkNull = String(rhs).toLowerCase() === "true";
234
+ return checkNull ? drizzleIsNull(lhs) : drizzleIsNotNull(lhs);
235
+ },
236
+ execute: (lhs, rhs) => {
237
+ const checkNull = String(rhs).toLowerCase() === "true";
238
+ return checkNull ? lhs === null || lhs === undefined : lhs !== null && lhs !== undefined;
239
+ },
240
+ },
241
+ {
242
+ op: "=isempty=",
243
+ convert: (lhs, rhs) => {
244
+ const checkEmpty = String(rhs).toLowerCase() === "true";
245
+ if (checkEmpty) {
246
+ return sql `(${lhs} IS NULL OR ${lhs} = '')`;
247
+ }
248
+ return sql `(${lhs} IS NOT NULL AND ${lhs} != '')`;
249
+ },
250
+ execute: (lhs, rhs) => {
251
+ const checkEmpty = String(rhs).toLowerCase() === "true";
252
+ const isEmpty = lhs === null || lhs === undefined || lhs === "";
253
+ return checkEmpty ? isEmpty : !isEmpty;
254
+ },
255
+ },
256
+ // Set membership operators
257
+ {
258
+ op: "=in=",
259
+ convert: (lhs, rhs) => sql `${lhs} IN (${rhs})`,
260
+ execute: (lhs, rhs) => {
261
+ const arr = Array.isArray(rhs) ? rhs : [rhs];
262
+ const lhsNorm = normalizeForComparison(lhs);
263
+ return arr.some((item) => {
264
+ const itemNorm = normalizeForComparison(item);
265
+ if (lhsNorm instanceof Date && itemNorm instanceof Date) {
266
+ return lhsNorm.getTime() === itemNorm.getTime();
267
+ }
268
+ return String(item) === String(lhs);
269
+ });
270
+ },
271
+ },
272
+ {
273
+ op: "=out=",
274
+ convert: (lhs, rhs) => sql `${lhs} NOT IN (${rhs})`,
275
+ execute: (lhs, rhs) => {
276
+ const arr = Array.isArray(rhs) ? rhs : [rhs];
277
+ const lhsNorm = normalizeForComparison(lhs);
278
+ return !arr.some((item) => {
279
+ const itemNorm = normalizeForComparison(item);
280
+ if (lhsNorm instanceof Date && itemNorm instanceof Date) {
281
+ return lhsNorm.getTime() === itemNorm.getTime();
282
+ }
283
+ return String(item) === String(lhs);
284
+ });
285
+ },
286
+ },
287
+ // Case-insensitive equality
288
+ {
289
+ op: "=ieq=",
290
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) = LOWER(${rhs})`,
291
+ execute: (lhs, rhs) => String(lhs).toLowerCase() === String(rhs).toLowerCase(),
292
+ },
293
+ {
294
+ op: "=ine=",
295
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) != LOWER(${rhs})`,
296
+ execute: (lhs, rhs) => String(lhs).toLowerCase() !== String(rhs).toLowerCase(),
297
+ },
298
+ // Case-insensitive LIKE
299
+ {
300
+ op: "=ilike=",
301
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) LIKE LOWER(${rhs})`,
302
+ execute: (lhs, rhs) => {
303
+ const regex = likePatternToRegex(String(rhs).toLowerCase());
304
+ return regex.test(String(lhs).toLowerCase());
305
+ },
306
+ },
307
+ {
308
+ op: "=nilike=",
309
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) NOT LIKE LOWER(${rhs})`,
310
+ execute: (lhs, rhs) => {
311
+ const regex = likePatternToRegex(String(rhs).toLowerCase());
312
+ return !regex.test(String(lhs).toLowerCase());
313
+ },
314
+ },
315
+ // String operations
316
+ {
317
+ op: "=contains=",
318
+ convert: (lhs, rhs) => sql `${lhs} LIKE '%' || ${rhs} || '%'`,
319
+ execute: (lhs, rhs) => String(lhs).includes(String(rhs)),
320
+ },
321
+ {
322
+ op: "=icontains=",
323
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) LIKE '%' || LOWER(${rhs}) || '%'`,
324
+ execute: (lhs, rhs) => String(lhs).toLowerCase().includes(String(rhs).toLowerCase()),
325
+ },
326
+ {
327
+ op: "=startswith=",
328
+ convert: (lhs, rhs) => sql `${lhs} LIKE ${rhs} || '%'`,
329
+ execute: (lhs, rhs) => String(lhs).startsWith(String(rhs)),
330
+ },
331
+ {
332
+ op: "=istartswith=",
333
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) LIKE LOWER(${rhs}) || '%'`,
334
+ execute: (lhs, rhs) => String(lhs).toLowerCase().startsWith(String(rhs).toLowerCase()),
335
+ },
336
+ {
337
+ op: "=endswith=",
338
+ convert: (lhs, rhs) => sql `${lhs} LIKE '%' || ${rhs}`,
339
+ execute: (lhs, rhs) => String(lhs).endsWith(String(rhs)),
340
+ },
341
+ {
342
+ op: "=iendswith=",
343
+ convert: (lhs, rhs) => sql `LOWER(${lhs}) LIKE '%' || LOWER(${rhs})`,
344
+ execute: (lhs, rhs) => String(lhs).toLowerCase().endsWith(String(rhs).toLowerCase()),
345
+ },
346
+ // RSQL-style named comparison operators (aliases)
347
+ {
348
+ op: "=gt=",
349
+ convert: (lhs, rhs) => sql `${lhs} > ${rhs}`,
350
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) > 0,
351
+ },
352
+ {
353
+ op: "=ge=",
354
+ convert: (lhs, rhs) => sql `${lhs} >= ${rhs}`,
355
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) >= 0,
356
+ },
357
+ {
358
+ op: "=lt=",
359
+ convert: (lhs, rhs) => sql `${lhs} < ${rhs}`,
360
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) < 0,
361
+ },
362
+ {
363
+ op: "=le=",
364
+ convert: (lhs, rhs) => sql `${lhs} <= ${rhs}`,
365
+ execute: (lhs, rhs) => safeCompare(lhs, rhs) <= 0,
366
+ },
367
+ // Range/between operator
368
+ {
369
+ op: "=between=",
370
+ convert: (lhs, rhs) => sql `${lhs} BETWEEN ${rhs}`,
371
+ execute: (lhs, rhs) => {
372
+ const arr = Array.isArray(rhs) ? rhs : [];
373
+ if (arr.length !== 2)
374
+ return false;
375
+ return safeCompare(lhs, arr[0]) >= 0 && safeCompare(lhs, arr[1]) <= 0;
376
+ },
377
+ },
378
+ {
379
+ op: "=nbetween=",
380
+ convert: (lhs, rhs) => sql `${lhs} NOT BETWEEN ${rhs}`,
381
+ execute: (lhs, rhs) => {
382
+ const arr = Array.isArray(rhs) ? rhs : [];
383
+ if (arr.length !== 2)
384
+ return true;
385
+ return safeCompare(lhs, arr[0]) < 0 || safeCompare(lhs, arr[1]) > 0;
386
+ },
387
+ },
388
+ // Regex matching (JavaScript only, falls back to LIKE for SQL)
389
+ {
390
+ op: "=regex=",
391
+ convert: (lhs, rhs) => {
392
+ // SQLite doesn't support native regex, use GLOB as approximation
393
+ // For full regex support, use a custom operator with extension
394
+ return sql `${lhs} GLOB ${rhs}`;
395
+ },
396
+ execute: (lhs, rhs) => {
397
+ try {
398
+ const regex = new RegExp(String(rhs));
399
+ return regex.test(String(lhs));
400
+ }
401
+ catch {
402
+ return false;
403
+ }
404
+ },
405
+ },
406
+ {
407
+ op: "=iregex=",
408
+ convert: (lhs, rhs) => {
409
+ return sql `LOWER(${lhs}) GLOB LOWER(${rhs})`;
410
+ },
411
+ execute: (lhs, rhs) => {
412
+ try {
413
+ const regex = new RegExp(String(rhs), "i");
414
+ return regex.test(String(lhs));
415
+ }
416
+ catch {
417
+ return false;
418
+ }
419
+ },
420
+ },
421
+ // Length operators
422
+ {
423
+ op: "=length=",
424
+ convert: (lhs, rhs) => sql `LENGTH(${lhs}) = ${rhs}`,
425
+ execute: (lhs, rhs) => {
426
+ const len = String(lhs).length;
427
+ const expected = typeof rhs === "number" ? rhs : parseInt(String(rhs), 10);
428
+ return len === expected;
429
+ },
430
+ },
431
+ {
432
+ op: "=minlength=",
433
+ convert: (lhs, rhs) => sql `LENGTH(${lhs}) >= ${rhs}`,
434
+ execute: (lhs, rhs) => {
435
+ const len = String(lhs).length;
436
+ const min = typeof rhs === "number" ? rhs : parseInt(String(rhs), 10);
437
+ return len >= min;
438
+ },
439
+ },
440
+ {
441
+ op: "=maxlength=",
442
+ convert: (lhs, rhs) => sql `LENGTH(${lhs}) <= ${rhs}`,
443
+ execute: (lhs, rhs) => {
444
+ const len = String(lhs).length;
445
+ const max = typeof rhs === "number" ? rhs : parseInt(String(rhs), 10);
446
+ return len <= max;
447
+ },
448
+ },
449
+ ];
450
+ const customOperatorsList = Object.entries(customOperators).map(([op, def]) => ({
451
+ op,
452
+ convert: def.convert,
453
+ execute: def.execute,
454
+ }));
455
+ const allOperators = [...builtinOperators, ...customOperatorsList];
456
+ class FilterExpression {
457
+ }
458
+ class EmptyFilterExpression extends FilterExpression {
459
+ print() {
460
+ return "";
461
+ }
462
+ convert() {
463
+ return sql `1 = 1`;
464
+ }
465
+ execute(_object) {
466
+ return true;
467
+ }
468
+ }
469
+ class FilterValue {
470
+ }
471
+ class ColumnFilterValue extends FilterValue {
472
+ constructor(columnName) {
473
+ super();
474
+ this.columnName = columnName;
475
+ }
476
+ print() {
477
+ return this.columnName;
478
+ }
479
+ convert() {
480
+ const columns = getTableColumns(schema);
481
+ if (!(this.columnName in columns)) {
482
+ throw new FilterParseError(`Unknown column: ${this.columnName}`);
483
+ }
484
+ return schema[this.columnName];
485
+ }
486
+ execute(object) {
487
+ return object[this.columnName];
488
+ }
489
+ }
490
+ class StringFilterValue extends FilterValue {
491
+ constructor(value) {
492
+ super();
493
+ this.value = value;
494
+ }
495
+ print() {
496
+ return `"${this.value}"`;
497
+ }
498
+ convert() {
499
+ return sql `${this.value}`;
500
+ }
501
+ execute(_object) {
502
+ return this.value;
503
+ }
504
+ }
505
+ class NumberFilterValue extends FilterValue {
506
+ constructor(value) {
507
+ super();
508
+ this.value = value;
509
+ }
510
+ print() {
511
+ return this.value.toString();
512
+ }
513
+ convert() {
514
+ return sql `${this.value}`;
515
+ }
516
+ execute(_object) {
517
+ return this.value;
518
+ }
519
+ }
520
+ class BooleanFilterValue extends FilterValue {
521
+ constructor(value) {
522
+ super();
523
+ this.value = value;
524
+ }
525
+ print() {
526
+ return this.value.toString();
527
+ }
528
+ convert() {
529
+ return sql `${this.value}`;
530
+ }
531
+ execute(_object) {
532
+ return this.value;
533
+ }
534
+ }
535
+ class NullFilterValue extends FilterValue {
536
+ print() {
537
+ return "null";
538
+ }
539
+ convert() {
540
+ return sql `NULL`;
541
+ }
542
+ execute(_object) {
543
+ return null;
544
+ }
545
+ }
546
+ class DateFilterValue extends FilterValue {
547
+ constructor(value) {
548
+ super();
549
+ this.value = value;
550
+ }
551
+ print() {
552
+ return this.value.toISOString();
553
+ }
554
+ convert() {
555
+ return sql `${this.value.toISOString()}`;
556
+ }
557
+ execute(_object) {
558
+ return this.value;
559
+ }
560
+ }
561
+ class SetFilterValue extends FilterValue {
562
+ constructor(values) {
563
+ super();
564
+ this.values = values;
565
+ }
566
+ print() {
567
+ return `(${this.values.map((v) => v.print()).join(", ")})`;
568
+ }
569
+ convert() {
570
+ const converted = this.values.map((v) => v.convert());
571
+ return sql.join(converted, sql `, `);
572
+ }
573
+ execute(object) {
574
+ return this.values.map((v) => v.execute(object));
575
+ }
576
+ }
577
+ class OperationFilterExpression extends FilterExpression {
578
+ constructor(field, operator, value) {
579
+ super();
580
+ this.field = field;
581
+ this.operator = operator;
582
+ this.value = value;
583
+ }
584
+ print() {
585
+ return `(${this.field} ${this.operator} ${this.value.print()})`;
586
+ }
587
+ convert() {
588
+ const opDef = allOperators.find((op) => op.op === this.operator);
589
+ if (!opDef) {
590
+ throw new FilterParseError(`Unknown operator: ${this.operator}`);
591
+ }
592
+ const lhs = new ColumnFilterValue(this.field).convert();
593
+ const rhs = this.value.convert();
594
+ return opDef.convert(lhs, rhs);
595
+ }
596
+ execute(object) {
597
+ const opDef = allOperators.find((op) => op.op === this.operator);
598
+ if (!opDef) {
599
+ throw new FilterParseError(`Unknown operator: ${this.operator}`);
600
+ }
601
+ const lhs = new ColumnFilterValue(this.field).execute(object);
602
+ const rhs = this.value.execute(object);
603
+ return opDef.execute(lhs, rhs);
604
+ }
605
+ }
606
+ class AndFilterExpression extends FilterExpression {
607
+ constructor(expressions) {
608
+ super();
609
+ this.expressions = expressions;
610
+ }
611
+ print() {
612
+ return ("(" + this.expressions.map((expr) => expr.print()).join(" AND ") + ")");
613
+ }
614
+ convert() {
615
+ return and(...this.expressions.map((expr) => expr.convert()));
616
+ }
617
+ execute(object) {
618
+ for (const expr of this.expressions) {
619
+ if (!expr.execute(object)) {
620
+ return false;
621
+ }
622
+ }
623
+ return true;
624
+ }
625
+ addExpression(expr) {
626
+ this.expressions.push(expr);
627
+ }
628
+ }
629
+ class OrFilterExpression extends FilterExpression {
630
+ constructor(expressions) {
631
+ super();
632
+ this.expressions = expressions;
633
+ }
634
+ print() {
635
+ return ("(" + this.expressions.map((expr) => expr.print()).join(" OR ") + ")");
636
+ }
637
+ convert() {
638
+ return or(...this.expressions.map((expr) => expr.convert()));
639
+ }
640
+ execute(object) {
641
+ for (const expr of this.expressions) {
642
+ if (expr.execute(object)) {
643
+ return true;
644
+ }
645
+ }
646
+ return false;
647
+ }
648
+ addExpression(expr) {
649
+ this.expressions.push(expr);
650
+ }
651
+ }
652
+ const skipWhitespace = (string) => {
653
+ return string.replace(/^\s+/, "");
654
+ };
655
+ const isAlpha = (char) => {
656
+ return /^[A-Za-z_]$/.test(char);
657
+ };
658
+ const isDigit = (char) => {
659
+ return /^[0-9]$/.test(char);
660
+ };
661
+ const isAlNum = (char) => {
662
+ return isAlpha(char) || isDigit(char);
663
+ };
664
+ const parseIdentifier = (expression) => {
665
+ expression = skipWhitespace(expression);
666
+ if (expression.length === 0 || !isAlpha(expression[0] ?? "")) {
667
+ throw new FilterParseError("Invalid identifier start");
668
+ }
669
+ let i = 1;
670
+ while (i < expression.length && isAlNum(expression[i] ?? "")) {
671
+ i++;
672
+ }
673
+ const identifier = expression.slice(0, i);
674
+ const remaining = expression.slice(i);
675
+ return { identifier, remaining };
676
+ };
677
+ const parseOperator = (expression) => {
678
+ expression = skipWhitespace(expression);
679
+ if (expression.length === 0) {
680
+ throw new FilterParseError("Invalid operator start");
681
+ }
682
+ for (const op of allOperators) {
683
+ if (expression.startsWith(op.op)) {
684
+ return { operator: op.op, remaining: expression.slice(op.op.length) };
685
+ }
686
+ }
687
+ if (expression[0] === "=" || expression[0] === "!") {
688
+ let i = 1;
689
+ while (i < expression.length && isAlpha(expression[i] ?? "")) {
690
+ i++;
691
+ }
692
+ if (expression[i] !== "=") {
693
+ throw new FilterParseError("Invalid operator format");
694
+ }
695
+ i++;
696
+ const operator = expression.slice(0, i);
697
+ const remaining = expression.slice(i);
698
+ const opDef = allOperators.find((op) => op.op === operator);
699
+ if (!opDef) {
700
+ throw new FilterParseError(`Unknown operator: ${operator}`);
701
+ }
702
+ return { operator, remaining };
703
+ }
704
+ else {
705
+ throw new FilterParseError("Invalid operator");
706
+ }
707
+ };
708
+ const parseStringValue = (expression) => {
709
+ if (expression[0] !== '"') {
710
+ throw new FilterParseError("Invalid string value start");
711
+ }
712
+ let i = 1;
713
+ while (i < expression.length && expression[i] !== '"') {
714
+ if (expression[i] === "\\") {
715
+ i += 2;
716
+ }
717
+ else {
718
+ i++;
719
+ }
720
+ }
721
+ if (i >= expression.length) {
722
+ throw new FilterParseError("Unterminated string value");
723
+ }
724
+ const value = expression
725
+ .slice(1, i)
726
+ .replace(/\\"/g, '"')
727
+ .replace(/\\\\/g, "\\");
728
+ const remaining = expression.slice(i + 1);
729
+ // Check if the string is an ISO date
730
+ const dateVal = tryParseDate(value);
731
+ if (dateVal) {
732
+ return { value: new DateFilterValue(dateVal), remaining };
733
+ }
734
+ return { value: new StringFilterValue(value), remaining };
735
+ };
736
+ const parseNumberValue = (expression) => {
737
+ let i = 0;
738
+ let hasDecimal = false;
739
+ if (expression[i] === "-" || expression[i] === "+") {
740
+ i++;
741
+ }
742
+ while (i < expression.length) {
743
+ const char = expression[i];
744
+ if (isDigit(char ?? "")) {
745
+ i++;
746
+ }
747
+ else if (char === "." && !hasDecimal) {
748
+ hasDecimal = true;
749
+ i++;
750
+ }
751
+ else {
752
+ break;
753
+ }
754
+ }
755
+ if (i === 0 ||
756
+ (i === 1 && (expression[0] === "-" || expression[0] === "+"))) {
757
+ throw new FilterParseError("Invalid number value");
758
+ }
759
+ const numStr = expression.slice(0, i);
760
+ const value = new NumberFilterValue(parseFloat(numStr));
761
+ const remaining = expression.slice(i);
762
+ return { value, remaining };
763
+ };
764
+ const parseValue = (expression) => {
765
+ expression = skipWhitespace(expression);
766
+ if (expression.length === 0) {
767
+ throw new FilterParseError("Invalid value", {
768
+ suggestion: "Expected a value (string, number, boolean, or null)",
769
+ });
770
+ }
771
+ if (expression[0] === '"') {
772
+ return parseStringValue(expression);
773
+ }
774
+ else if (isDigit(expression[0] ?? "") ||
775
+ expression[0] === "-" ||
776
+ expression[0] === "+" ||
777
+ expression[0] === ".") {
778
+ return parseNumberValue(expression);
779
+ }
780
+ else if (expression[0] === "(") {
781
+ return parseSetValue(expression);
782
+ }
783
+ else if (expression[0] === "[") {
784
+ return parseRangeValue(expression);
785
+ }
786
+ else if (expression.startsWith("true")) {
787
+ const nextChar = expression[4];
788
+ if (!nextChar || !isAlNum(nextChar)) {
789
+ return { value: new BooleanFilterValue(true), remaining: expression.slice(4) };
790
+ }
791
+ }
792
+ else if (expression.startsWith("false")) {
793
+ const nextChar = expression[5];
794
+ if (!nextChar || !isAlNum(nextChar)) {
795
+ return { value: new BooleanFilterValue(false), remaining: expression.slice(5) };
796
+ }
797
+ }
798
+ else if (expression.startsWith("null")) {
799
+ const nextChar = expression[4];
800
+ if (!nextChar || !isAlNum(nextChar)) {
801
+ return { value: new NullFilterValue(), remaining: expression.slice(4) };
802
+ }
803
+ }
804
+ throw new FilterParseError("Unknown value type", {
805
+ suggestion: "Expected a quoted string, number, true, false, or null",
806
+ });
807
+ };
808
+ const parseSetValue = (expression) => {
809
+ if (expression[0] !== "(") {
810
+ throw new FilterParseError("Invalid set value start");
811
+ }
812
+ const values = [];
813
+ let expr = skipWhitespace(expression.slice(1));
814
+ while (expr.length > 0 && expr[0] !== ")") {
815
+ const { value, remaining } = parseValue(expr);
816
+ values.push(value);
817
+ expr = skipWhitespace(remaining);
818
+ if (expr[0] === ",") {
819
+ expr = skipWhitespace(expr.slice(1));
820
+ }
821
+ else if (expr[0] !== ")") {
822
+ throw new FilterParseError("Invalid set value format");
823
+ }
824
+ }
825
+ if (expr[0] !== ")") {
826
+ throw new FilterParseError("Unterminated set value");
827
+ }
828
+ const remaining = expr.slice(1);
829
+ return { value: new SetFilterValue(values), remaining };
830
+ };
831
+ const parseRangeValue = (expression) => {
832
+ if (expression[0] !== "[") {
833
+ throw new FilterParseError("Invalid range value start");
834
+ }
835
+ const values = [];
836
+ let expr = skipWhitespace(expression.slice(1));
837
+ // Parse first value
838
+ const { value: firstValue, remaining: rem1 } = parseValue(expr);
839
+ values.push(firstValue);
840
+ expr = skipWhitespace(rem1);
841
+ // Expect comma
842
+ if (expr[0] !== ",") {
843
+ throw new FilterParseError("Range must have exactly two values separated by comma");
844
+ }
845
+ expr = skipWhitespace(expr.slice(1));
846
+ // Parse second value
847
+ const { value: secondValue, remaining: rem2 } = parseValue(expr);
848
+ values.push(secondValue);
849
+ expr = skipWhitespace(rem2);
850
+ // Expect closing bracket
851
+ if (expr[0] !== "]") {
852
+ throw new FilterParseError("Unterminated range value");
853
+ }
854
+ const remaining = expr.slice(1);
855
+ // Return as SetFilterValue so it works with existing between operator
856
+ return { value: new SetFilterValue(values), remaining };
857
+ };
858
+ const parseTerm = (expression) => {
859
+ expression = skipWhitespace(expression);
860
+ if (expression.startsWith("(")) {
861
+ expression = skipWhitespace(expression.slice(1));
862
+ const { expr: innerExpr, remaining: remAfterInner } = parseOr(expression);
863
+ expression = skipWhitespace(remAfterInner);
864
+ if (expression[0] !== ")") {
865
+ throw new FilterParseError("Unterminated parenthesis in filter expression");
866
+ }
867
+ expression = skipWhitespace(expression.slice(1));
868
+ return { expr: innerExpr, remaining: expression };
869
+ }
870
+ const { identifier, remaining: remAfterIdent } = parseIdentifier(expression);
871
+ expression = skipWhitespace(remAfterIdent);
872
+ const { operator, remaining: remAfterOp } = parseOperator(expression);
873
+ expression = skipWhitespace(remAfterOp);
874
+ const { value, remaining: remAfterValue } = parseValue(expression);
875
+ expression = skipWhitespace(remAfterValue);
876
+ const newExpr = new OperationFilterExpression(identifier, operator, value);
877
+ return { expr: newExpr, remaining: expression };
878
+ };
879
+ const parseAnd = (expression) => {
880
+ let ret = new EmptyFilterExpression();
881
+ expression = skipWhitespace(expression);
882
+ while (expression.length > 0) {
883
+ const { expr, remaining } = parseTerm(expression);
884
+ expression = skipWhitespace(remaining);
885
+ if (ret instanceof EmptyFilterExpression) {
886
+ ret = expr;
887
+ }
888
+ else if (ret instanceof AndFilterExpression) {
889
+ ret.addExpression(expr);
890
+ }
891
+ else {
892
+ ret = new AndFilterExpression([ret, expr]);
893
+ }
894
+ if (expression.startsWith(";") ||
895
+ expression.startsWith("&&") ||
896
+ (expression.startsWith("and") && !isAlNum(expression[3] ?? "")) ||
897
+ (expression.startsWith("AND") && !isAlNum(expression[3] ?? ""))) {
898
+ expression = skipWhitespace(expression.startsWith(";")
899
+ ? expression.slice(1)
900
+ : expression.startsWith("&&")
901
+ ? expression.slice(2)
902
+ : expression.slice(3));
903
+ continue;
904
+ }
905
+ break;
906
+ }
907
+ return { expr: ret, remaining: expression };
908
+ };
909
+ const parseOr = (expression) => {
910
+ let ret = new EmptyFilterExpression();
911
+ expression = skipWhitespace(expression);
912
+ while (expression.length > 0) {
913
+ const { expr, remaining } = parseAnd(expression);
914
+ expression = skipWhitespace(remaining);
915
+ if (ret instanceof EmptyFilterExpression) {
916
+ ret = expr;
917
+ }
918
+ else if (ret instanceof OrFilterExpression) {
919
+ ret.addExpression(expr);
920
+ }
921
+ else {
922
+ ret = new OrFilterExpression([ret, expr]);
923
+ }
924
+ if (expression.startsWith(",")) {
925
+ expression = skipWhitespace(expression.slice(1));
926
+ continue;
927
+ }
928
+ if (expression.startsWith("||")) {
929
+ expression = skipWhitespace(expression.slice(2));
930
+ continue;
931
+ }
932
+ if (expression.startsWith("or") && !isAlNum(expression[2] ?? "")) {
933
+ expression = skipWhitespace(expression.slice(2));
934
+ continue;
935
+ }
936
+ if (expression.startsWith("OR") && !isAlNum(expression[2] ?? "")) {
937
+ expression = skipWhitespace(expression.slice(2));
938
+ continue;
939
+ }
940
+ break;
941
+ }
942
+ return { expr: ret, remaining: expression };
943
+ };
944
+ const parseFilterExpression = (expression) => {
945
+ if (!expression || expression.trim() === "") {
946
+ return new EmptyFilterExpression();
947
+ }
948
+ if (config.maxLength && expression.length > config.maxLength) {
949
+ throw new FilterParseError("Filter exceeds maximum length", {
950
+ suggestion: `Maximum filter length is ${config.maxLength} characters`,
951
+ });
952
+ }
953
+ const ctx = {
954
+ nodeCount: 0,
955
+ maxDepthSeen: 0,
956
+ config,
957
+ };
958
+ const data = parseOrWithContext(expression, ctx, 0);
959
+ if (data.remaining.length > 0) {
960
+ throw new FilterParseError(`Unexpected input after parsing filter expression: ${data.remaining}`, {
961
+ position: expression.length - data.remaining.length,
962
+ });
963
+ }
964
+ return data.expr;
965
+ };
966
+ const parseTermWithContext = (expression, ctx, depth) => {
967
+ expression = skipWhitespace(expression);
968
+ validateComplexity(ctx, depth);
969
+ if (expression.startsWith("(")) {
970
+ expression = skipWhitespace(expression.slice(1));
971
+ const { expr: innerExpr, remaining: remAfterInner } = parseOrWithContext(expression, ctx, depth + 1);
972
+ expression = skipWhitespace(remAfterInner);
973
+ if (expression[0] !== ")") {
974
+ throw new FilterParseError("Unterminated parenthesis in filter expression", { position: expression.length });
975
+ }
976
+ expression = skipWhitespace(expression.slice(1));
977
+ return { expr: innerExpr, remaining: expression };
978
+ }
979
+ const { identifier, remaining: remAfterIdent } = parseIdentifier(expression);
980
+ expression = skipWhitespace(remAfterIdent);
981
+ if (config.allowedFields && !config.allowedFields.includes(identifier)) {
982
+ throw new FilterParseError(`Field '${identifier}' is not filterable`, {
983
+ allowedFields: config.allowedFields,
984
+ });
985
+ }
986
+ const { operator, remaining: remAfterOp } = parseOperatorWithValidation(expression, config.allowedOperators);
987
+ expression = skipWhitespace(remAfterOp);
988
+ const { value, remaining: remAfterValue } = parseValue(expression);
989
+ expression = skipWhitespace(remAfterValue);
990
+ const newExpr = new OperationFilterExpression(identifier, operator, value);
991
+ return { expr: newExpr, remaining: expression };
992
+ };
993
+ const parseAndWithContext = (expression, ctx, depth) => {
994
+ let ret = new EmptyFilterExpression();
995
+ expression = skipWhitespace(expression);
996
+ while (expression.length > 0) {
997
+ const { expr, remaining } = parseTermWithContext(expression, ctx, depth);
998
+ expression = skipWhitespace(remaining);
999
+ if (ret instanceof EmptyFilterExpression) {
1000
+ ret = expr;
1001
+ }
1002
+ else if (ret instanceof AndFilterExpression) {
1003
+ ret.addExpression(expr);
1004
+ }
1005
+ else {
1006
+ ret = new AndFilterExpression([ret, expr]);
1007
+ }
1008
+ if (expression.startsWith(";") ||
1009
+ expression.startsWith("&&") ||
1010
+ (expression.startsWith("and") && !isAlNum(expression[3] ?? "")) ||
1011
+ (expression.startsWith("AND") && !isAlNum(expression[3] ?? ""))) {
1012
+ expression = skipWhitespace(expression.startsWith(";")
1013
+ ? expression.slice(1)
1014
+ : expression.startsWith("&&")
1015
+ ? expression.slice(2)
1016
+ : expression.slice(3));
1017
+ continue;
1018
+ }
1019
+ break;
1020
+ }
1021
+ return { expr: ret, remaining: expression };
1022
+ };
1023
+ const parseOrWithContext = (expression, ctx, depth) => {
1024
+ let ret = new EmptyFilterExpression();
1025
+ expression = skipWhitespace(expression);
1026
+ while (expression.length > 0) {
1027
+ const { expr, remaining } = parseAndWithContext(expression, ctx, depth);
1028
+ expression = skipWhitespace(remaining);
1029
+ if (ret instanceof EmptyFilterExpression) {
1030
+ ret = expr;
1031
+ }
1032
+ else if (ret instanceof OrFilterExpression) {
1033
+ ret.addExpression(expr);
1034
+ }
1035
+ else {
1036
+ ret = new OrFilterExpression([ret, expr]);
1037
+ }
1038
+ if (expression.startsWith(",")) {
1039
+ expression = skipWhitespace(expression.slice(1));
1040
+ continue;
1041
+ }
1042
+ if (expression.startsWith("||")) {
1043
+ expression = skipWhitespace(expression.slice(2));
1044
+ continue;
1045
+ }
1046
+ if (expression.startsWith("or") && !isAlNum(expression[2] ?? "")) {
1047
+ expression = skipWhitespace(expression.slice(2));
1048
+ continue;
1049
+ }
1050
+ if (expression.startsWith("OR") && !isAlNum(expression[2] ?? "")) {
1051
+ expression = skipWhitespace(expression.slice(2));
1052
+ continue;
1053
+ }
1054
+ break;
1055
+ }
1056
+ return { expr: ret, remaining: expression };
1057
+ };
1058
+ const parseOperatorWithValidation = (expression, allowedOperators) => {
1059
+ expression = skipWhitespace(expression);
1060
+ if (expression.length === 0) {
1061
+ throw new FilterParseError("Invalid operator start", {
1062
+ suggestion: "Expected an operator",
1063
+ });
1064
+ }
1065
+ for (const op of allOperators) {
1066
+ if (expression.startsWith(op.op)) {
1067
+ if (allowedOperators && !allowedOperators.includes(op.op)) {
1068
+ throw new FilterParseError(`Operator '${op.op}' is not allowed`, {
1069
+ allowedOperators,
1070
+ });
1071
+ }
1072
+ return { operator: op.op, remaining: expression.slice(op.op.length) };
1073
+ }
1074
+ }
1075
+ if (expression[0] === "=" || expression[0] === "!") {
1076
+ let i = 1;
1077
+ while (i < expression.length && isAlpha(expression[i] ?? "")) {
1078
+ i++;
1079
+ }
1080
+ if (expression[i] !== "=") {
1081
+ throw new FilterParseError("Invalid operator format", {
1082
+ suggestion: "Operators must be in format =name= or symbolic (==, !=, etc.)",
1083
+ });
1084
+ }
1085
+ i++;
1086
+ const operator = expression.slice(0, i);
1087
+ const remaining = expression.slice(i);
1088
+ const opDef = allOperators.find((op) => op.op === operator);
1089
+ if (!opDef) {
1090
+ throw new FilterParseError(`Unknown operator: ${operator}`, {
1091
+ suggestion: "Use a valid operator like ==, !=, =isnull=, =in=, etc.",
1092
+ allowedOperators: allOperators.map((o) => o.op),
1093
+ });
1094
+ }
1095
+ if (allowedOperators && !allowedOperators.includes(operator)) {
1096
+ throw new FilterParseError(`Operator '${operator}' is not allowed`, {
1097
+ allowedOperators,
1098
+ });
1099
+ }
1100
+ return { operator, remaining };
1101
+ }
1102
+ else {
1103
+ throw new FilterParseError("Invalid operator", {
1104
+ suggestion: "Operators must start with = or ! or be symbolic (>, <, etc.)",
1105
+ });
1106
+ }
1107
+ };
1108
+ const filterCache = new Map();
1109
+ const getCompiledFilter = (expr) => {
1110
+ let compiled = filterCache.get(expr);
1111
+ if (!compiled) {
1112
+ compiled = parseFilterExpression(expr);
1113
+ filterCache.set(expr, compiled);
1114
+ }
1115
+ return compiled;
1116
+ };
1117
+ return {
1118
+ compile: (expr) => {
1119
+ return getCompiledFilter(expr);
1120
+ },
1121
+ convert: (expr) => {
1122
+ const filter = getCompiledFilter(expr);
1123
+ return filter.convert();
1124
+ },
1125
+ execute: (expr, object) => {
1126
+ const filter = getCompiledFilter(expr);
1127
+ return filter.execute(object);
1128
+ },
1129
+ clearCache: () => {
1130
+ filterCache.clear();
1131
+ },
1132
+ getConfig: () => config,
1133
+ getOperators: () => allOperators.map((op) => op.op),
1134
+ };
1135
+ };
1136
+ //# sourceMappingURL=filter.js.map