@revealui/db 0.2.1 → 0.3.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 (213) hide show
  1. package/dist/audit-store.d.ts.map +1 -1
  2. package/dist/audit-store.js.map +1 -1
  3. package/dist/cleanup/cross-db-cleanup.d.ts +63 -0
  4. package/dist/cleanup/cross-db-cleanup.d.ts.map +1 -0
  5. package/dist/cleanup/cross-db-cleanup.js +150 -0
  6. package/dist/cleanup/cross-db-cleanup.js.map +1 -0
  7. package/dist/cleanup/index.d.ts +10 -0
  8. package/dist/cleanup/index.d.ts.map +1 -0
  9. package/dist/cleanup/index.js +10 -0
  10. package/dist/cleanup/index.js.map +1 -0
  11. package/dist/cleanup/stale-tokens.d.ts +37 -0
  12. package/dist/cleanup/stale-tokens.d.ts.map +1 -0
  13. package/dist/cleanup/stale-tokens.js +113 -0
  14. package/dist/cleanup/stale-tokens.js.map +1 -0
  15. package/dist/client/index.d.ts +13 -0
  16. package/dist/client/index.d.ts.map +1 -1
  17. package/dist/client/index.js +46 -7
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/client/types.d.ts.map +1 -1
  20. package/dist/crypto.js.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/log-transport.d.ts.map +1 -1
  26. package/dist/log-transport.js +3 -1
  27. package/dist/log-transport.js.map +1 -1
  28. package/dist/pool.d.ts +0 -3
  29. package/dist/pool.d.ts.map +1 -1
  30. package/dist/pool.js +13 -5
  31. package/dist/pool.js.map +1 -1
  32. package/dist/queries/boards.d.ts +13 -1
  33. package/dist/queries/boards.d.ts.map +1 -1
  34. package/dist/queries/boards.js +5 -2
  35. package/dist/queries/boards.js.map +1 -1
  36. package/dist/queries/code-provenance.d.ts.map +1 -1
  37. package/dist/queries/code-provenance.js.map +1 -1
  38. package/dist/queries/media.d.ts +9 -0
  39. package/dist/queries/media.d.ts.map +1 -1
  40. package/dist/queries/media.js +23 -13
  41. package/dist/queries/media.js.map +1 -1
  42. package/dist/queries/pages.d.ts +10 -0
  43. package/dist/queries/pages.d.ts.map +1 -1
  44. package/dist/queries/pages.js +24 -5
  45. package/dist/queries/pages.js.map +1 -1
  46. package/dist/queries/posts.d.ts +10 -0
  47. package/dist/queries/posts.d.ts.map +1 -1
  48. package/dist/queries/posts.js +17 -5
  49. package/dist/queries/posts.js.map +1 -1
  50. package/dist/queries/sites.d.ts +36 -1
  51. package/dist/queries/sites.d.ts.map +1 -1
  52. package/dist/queries/sites.js +45 -5
  53. package/dist/queries/sites.js.map +1 -1
  54. package/dist/queries/ticket-comments.d.ts +9 -1
  55. package/dist/queries/ticket-comments.d.ts.map +1 -1
  56. package/dist/queries/ticket-comments.js +4 -0
  57. package/dist/queries/ticket-comments.js.map +1 -1
  58. package/dist/queries/ticket-labels.d.ts +10 -0
  59. package/dist/queries/ticket-labels.d.ts.map +1 -1
  60. package/dist/queries/ticket-labels.js +4 -0
  61. package/dist/queries/ticket-labels.js.map +1 -1
  62. package/dist/queries/tickets.d.ts +1 -1
  63. package/dist/queries/tickets.d.ts.map +1 -1
  64. package/dist/queries/tickets.js +4 -7
  65. package/dist/queries/tickets.js.map +1 -1
  66. package/dist/queries/users.d.ts +109 -0
  67. package/dist/queries/users.d.ts.map +1 -0
  68. package/dist/queries/users.js +44 -0
  69. package/dist/queries/users.js.map +1 -0
  70. package/dist/schema/accounts.d.ts +962 -0
  71. package/dist/schema/accounts.d.ts.map +1 -0
  72. package/dist/schema/accounts.js +115 -0
  73. package/dist/schema/accounts.js.map +1 -0
  74. package/dist/schema/agents.d.ts +165 -1
  75. package/dist/schema/agents.d.ts.map +1 -1
  76. package/dist/schema/agents.js +56 -5
  77. package/dist/schema/agents.js.map +1 -1
  78. package/dist/schema/api-keys.d.ts +17 -0
  79. package/dist/schema/api-keys.d.ts.map +1 -1
  80. package/dist/schema/api-keys.js +3 -0
  81. package/dist/schema/api-keys.js.map +1 -1
  82. package/dist/schema/app-logs.d.ts.map +1 -1
  83. package/dist/schema/app-logs.js.map +1 -1
  84. package/dist/schema/audit-log.d.ts.map +1 -1
  85. package/dist/schema/audit-log.js.map +1 -1
  86. package/dist/schema/cms.d.ts +68 -0
  87. package/dist/schema/cms.d.ts.map +1 -1
  88. package/dist/schema/cms.js +18 -4
  89. package/dist/schema/cms.js.map +1 -1
  90. package/dist/schema/code-provenance.d.ts.map +1 -1
  91. package/dist/schema/code-provenance.js.map +1 -1
  92. package/dist/schema/collab-edits.d.ts.map +1 -1
  93. package/dist/schema/collab-edits.js +2 -2
  94. package/dist/schema/collab-edits.js.map +1 -1
  95. package/dist/schema/coordination.d.ts +967 -0
  96. package/dist/schema/coordination.d.ts.map +1 -0
  97. package/dist/schema/coordination.js +109 -0
  98. package/dist/schema/coordination.js.map +1 -0
  99. package/dist/schema/crdt-operations.d.ts.map +1 -1
  100. package/dist/schema/crdt-operations.js.map +1 -1
  101. package/dist/schema/error-events.d.ts.map +1 -1
  102. package/dist/schema/error-events.js.map +1 -1
  103. package/dist/schema/gdpr.d.ts +529 -0
  104. package/dist/schema/gdpr.d.ts.map +1 -0
  105. package/dist/schema/gdpr.js +93 -0
  106. package/dist/schema/gdpr.js.map +1 -0
  107. package/dist/schema/index.d.ts +37 -1
  108. package/dist/schema/index.d.ts.map +1 -1
  109. package/dist/schema/index.js +73 -0
  110. package/dist/schema/index.js.map +1 -1
  111. package/dist/schema/jobs.d.ts +242 -0
  112. package/dist/schema/jobs.d.ts.map +1 -0
  113. package/dist/schema/jobs.js +48 -0
  114. package/dist/schema/jobs.js.map +1 -0
  115. package/dist/schema/licenses.d.ts +51 -0
  116. package/dist/schema/licenses.d.ts.map +1 -1
  117. package/dist/schema/licenses.js +8 -2
  118. package/dist/schema/licenses.js.map +1 -1
  119. package/dist/schema/magic-links.d.ts +136 -0
  120. package/dist/schema/magic-links.d.ts.map +1 -0
  121. package/dist/schema/magic-links.js +32 -0
  122. package/dist/schema/magic-links.js.map +1 -0
  123. package/dist/schema/marketplace.d.ts +496 -0
  124. package/dist/schema/marketplace.d.ts.map +1 -0
  125. package/dist/schema/marketplace.js +110 -0
  126. package/dist/schema/marketplace.js.map +1 -0
  127. package/dist/schema/node-ids.d.ts.map +1 -1
  128. package/dist/schema/node-ids.js.map +1 -1
  129. package/dist/schema/oauth-accounts.d.ts +34 -0
  130. package/dist/schema/oauth-accounts.d.ts.map +1 -1
  131. package/dist/schema/oauth-accounts.js +5 -0
  132. package/dist/schema/oauth-accounts.js.map +1 -1
  133. package/dist/schema/pages.d.ts +34 -0
  134. package/dist/schema/pages.d.ts.map +1 -1
  135. package/dist/schema/pages.js +14 -4
  136. package/dist/schema/pages.js.map +1 -1
  137. package/dist/schema/passkeys.d.ts +208 -0
  138. package/dist/schema/passkeys.d.ts.map +1 -0
  139. package/dist/schema/passkeys.js +47 -0
  140. package/dist/schema/passkeys.js.map +1 -0
  141. package/dist/schema/password-reset-tokens.d.ts.map +1 -1
  142. package/dist/schema/password-reset-tokens.js +5 -2
  143. package/dist/schema/password-reset-tokens.js.map +1 -1
  144. package/dist/schema/rag.d.ts.map +1 -1
  145. package/dist/schema/rag.js +5 -2
  146. package/dist/schema/rag.js.map +1 -1
  147. package/dist/schema/rate-limits.d.ts.map +1 -1
  148. package/dist/schema/rate-limits.js +5 -2
  149. package/dist/schema/rate-limits.js.map +1 -1
  150. package/dist/schema/rest.d.ts +9 -2
  151. package/dist/schema/rest.d.ts.map +1 -1
  152. package/dist/schema/rest.js +9 -2
  153. package/dist/schema/rest.js.map +1 -1
  154. package/dist/schema/sites.d.ts +34 -0
  155. package/dist/schema/sites.d.ts.map +1 -1
  156. package/dist/schema/sites.js +15 -3
  157. package/dist/schema/sites.js.map +1 -1
  158. package/dist/schema/tenants.d.ts +188 -0
  159. package/dist/schema/tenants.d.ts.map +1 -0
  160. package/dist/schema/tenants.js +15 -0
  161. package/dist/schema/tenants.js.map +1 -0
  162. package/dist/schema/tickets.d.ts.map +1 -1
  163. package/dist/schema/tickets.js +17 -5
  164. package/dist/schema/tickets.js.map +1 -1
  165. package/dist/schema/users.d.ts +174 -0
  166. package/dist/schema/users.d.ts.map +1 -1
  167. package/dist/schema/users.js +32 -3
  168. package/dist/schema/users.js.map +1 -1
  169. package/dist/schema/vector.d.ts.map +1 -1
  170. package/dist/schema/vector.js.map +1 -1
  171. package/dist/schema/waitlist.d.ts.map +1 -1
  172. package/dist/schema/waitlist.js.map +1 -1
  173. package/dist/schema/webhook-events.d.ts.map +1 -1
  174. package/dist/schema/webhook-events.js.map +1 -1
  175. package/dist/schema/yjs-documents.d.ts.map +1 -1
  176. package/dist/schema/yjs-documents.js.map +1 -1
  177. package/dist/scripts/cleanup-expired.d.ts +12 -0
  178. package/dist/scripts/cleanup-expired.d.ts.map +1 -0
  179. package/dist/scripts/cleanup-expired.js +50 -0
  180. package/dist/scripts/cleanup-expired.js.map +1 -0
  181. package/dist/security-audit-storage.d.ts +54 -0
  182. package/dist/security-audit-storage.d.ts.map +1 -0
  183. package/dist/security-audit-storage.js +100 -0
  184. package/dist/security-audit-storage.js.map +1 -0
  185. package/dist/types/database.d.ts +320 -2
  186. package/dist/types/database.d.ts.map +1 -1
  187. package/dist/types/database.js +66 -1
  188. package/dist/types/database.js.map +1 -1
  189. package/dist/types/discover.d.ts +2 -2
  190. package/dist/types/discover.d.ts.map +1 -1
  191. package/dist/types/discover.js +16 -16
  192. package/dist/types/discover.js.map +1 -1
  193. package/dist/types/extract-relationships.d.ts.map +1 -1
  194. package/dist/types/extract-relationships.js.map +1 -1
  195. package/dist/types/generate-contracts.js.map +1 -1
  196. package/dist/types/generate-zod-schemas.js.map +1 -1
  197. package/dist/types/generate.js.map +1 -1
  198. package/dist/types/index.d.ts.map +1 -1
  199. package/dist/types/introspect.d.ts.map +1 -1
  200. package/dist/types/introspect.js +0 -1
  201. package/dist/types/introspect.js.map +1 -1
  202. package/dist/types/stripe-schema.d.ts.map +1 -1
  203. package/dist/types/stripe-schema.js +7 -2
  204. package/dist/types/stripe-schema.js.map +1 -1
  205. package/dist/utils/soft-delete.d.ts +45 -0
  206. package/dist/utils/soft-delete.d.ts.map +1 -0
  207. package/dist/utils/soft-delete.js +45 -0
  208. package/dist/utils/soft-delete.js.map +1 -0
  209. package/dist/validation/cross-db.d.ts +60 -0
  210. package/dist/validation/cross-db.d.ts.map +1 -0
  211. package/dist/validation/cross-db.js +146 -0
  212. package/dist/validation/cross-db.js.map +1 -0
  213. package/package.json +25 -6
@@ -1 +1 @@
1
- {"version":3,"file":"audit-store.d.ts","sourceRoot":"","sources":["../src/audit-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAMjD,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID;;;;;GAKG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,6CAA6C;IACvC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,4DAA4D;IACtD,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,mDAAmD;IAC7C,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAoCvD,2DAA2D;IACrD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ9C,0CAA0C;IACpC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAUlE"}
1
+ {"version":3,"file":"audit-store.d.ts","sourceRoot":"","sources":["../src/audit-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;;GAKG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,6CAA6C;IACvC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,4DAA4D;IACtD,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,mDAAmD;IAC7C,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAoCvD,2DAA2D;IACrD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ9C,0CAA0C;IACpC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAUlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit-store.js","sourceRoot":"","sources":["../src/audit-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-store.js","sourceRoot":"","sources":["../src/audit-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Cross-Database Cleanup Utility
3
+ *
4
+ * Removes orphaned vector data (Supabase) when the owning site has been
5
+ * soft-deleted in NeonDB. PostgreSQL FK cascades cannot span separate
6
+ * database instances, so this utility bridges the gap.
7
+ *
8
+ * Affected Supabase tables:
9
+ * - agentMemories.siteId -> sites.id (NeonDB)
10
+ * - ragDocuments.workspaceId -> sites.id (NeonDB)
11
+ * - ragChunks.workspaceId -> sites.id (NeonDB)
12
+ *
13
+ * Safe to run multiple times (idempotent). Supports dry-run mode and
14
+ * configurable batch sizes via `configureCleanup()`.
15
+ */
16
+ import type { NeonHttpDatabase } from 'drizzle-orm/neon-http';
17
+ import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
18
+ export interface CleanupConfig {
19
+ /** Maximum number of IDs to delete per batch (default: 500) */
20
+ batchSize: number;
21
+ /** When true, report what would be deleted without actually deleting (default: false) */
22
+ dryRun: boolean;
23
+ }
24
+ /**
25
+ * Override cleanup configuration. Useful for tests (small batch sizes)
26
+ * or preview runs (dry-run mode).
27
+ */
28
+ export declare function configureCleanup(overrides: Partial<CleanupConfig>): void;
29
+ /**
30
+ * Minimal Drizzle client interface accepted by cleanup functions.
31
+ * Covers both NeonHttpDatabase and NodePgDatabase without importing
32
+ * the full schema generic, keeping the API flexible for callers.
33
+ */
34
+ type DrizzleClient = NeonHttpDatabase<any> | NodePgDatabase<any>;
35
+ export interface CleanupResult {
36
+ /** Number of agent memories deleted (or that would be deleted in dry-run) */
37
+ agentMemoriesDeleted: number;
38
+ /** Number of RAG documents deleted (or that would be deleted in dry-run) */
39
+ ragDocumentsDeleted: number;
40
+ /** Number of RAG chunks deleted (or that would be deleted in dry-run) */
41
+ ragChunksDeleted: number;
42
+ /** Site IDs whose data was cleaned up */
43
+ deletedSiteIds: string[];
44
+ /** Whether this was a dry-run (no actual deletions) */
45
+ dryRun: boolean;
46
+ }
47
+ /**
48
+ * Removes orphaned vector data from Supabase for sites that have been
49
+ * soft-deleted in NeonDB (sites.deletedAt IS NOT NULL).
50
+ *
51
+ * Steps:
52
+ * 1. Query NeonDB for soft-deleted site IDs.
53
+ * 2. Query Supabase for agentMemories / ragDocuments / ragChunks referencing
54
+ * those site IDs.
55
+ * 3. Delete the orphaned records in batches.
56
+ *
57
+ * @param restDb - Drizzle client connected to NeonDB (REST database)
58
+ * @param vectorDb - Drizzle client connected to Supabase (vector database)
59
+ * @returns Summary of what was cleaned up
60
+ */
61
+ export declare function cleanupOrphanedVectorData(restDb: DrizzleClient, vectorDb: DrizzleClient): Promise<CleanupResult>;
62
+ export {};
63
+ //# sourceMappingURL=cross-db-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-db-cleanup.d.ts","sourceRoot":"","sources":["../../src/cleanup/cross-db-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAShE,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAC;CACjB;AASD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAExE;AAMD;;;;GAIG;AAEH,KAAK,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC,CAuCxB"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Cross-Database Cleanup Utility
3
+ *
4
+ * Removes orphaned vector data (Supabase) when the owning site has been
5
+ * soft-deleted in NeonDB. PostgreSQL FK cascades cannot span separate
6
+ * database instances, so this utility bridges the gap.
7
+ *
8
+ * Affected Supabase tables:
9
+ * - agentMemories.siteId -> sites.id (NeonDB)
10
+ * - ragDocuments.workspaceId -> sites.id (NeonDB)
11
+ * - ragChunks.workspaceId -> sites.id (NeonDB)
12
+ *
13
+ * Safe to run multiple times (idempotent). Supports dry-run mode and
14
+ * configurable batch sizes via `configureCleanup()`.
15
+ */
16
+ import { inArray, isNotNull } from 'drizzle-orm';
17
+ import { agentMemories } from '../schema/agents.js';
18
+ import { ragChunks, ragDocuments } from '../schema/rag.js';
19
+ import { sites } from '../schema/sites.js';
20
+ const DEFAULT_CONFIG = {
21
+ batchSize: 500,
22
+ dryRun: false,
23
+ };
24
+ let config = { ...DEFAULT_CONFIG };
25
+ /**
26
+ * Override cleanup configuration. Useful for tests (small batch sizes)
27
+ * or preview runs (dry-run mode).
28
+ */
29
+ export function configureCleanup(overrides) {
30
+ config = { ...DEFAULT_CONFIG, ...overrides };
31
+ }
32
+ // =============================================================================
33
+ // Core cleanup function
34
+ // =============================================================================
35
+ /**
36
+ * Removes orphaned vector data from Supabase for sites that have been
37
+ * soft-deleted in NeonDB (sites.deletedAt IS NOT NULL).
38
+ *
39
+ * Steps:
40
+ * 1. Query NeonDB for soft-deleted site IDs.
41
+ * 2. Query Supabase for agentMemories / ragDocuments / ragChunks referencing
42
+ * those site IDs.
43
+ * 3. Delete the orphaned records in batches.
44
+ *
45
+ * @param restDb - Drizzle client connected to NeonDB (REST database)
46
+ * @param vectorDb - Drizzle client connected to Supabase (vector database)
47
+ * @returns Summary of what was cleaned up
48
+ */
49
+ export async function cleanupOrphanedVectorData(restDb, vectorDb) {
50
+ // 1. Find all soft-deleted site IDs in NeonDB
51
+ const deletedSiteRows = await restDb
52
+ .select({ id: sites.id })
53
+ .from(sites)
54
+ .where(isNotNull(sites.deletedAt));
55
+ const deletedSiteIds = deletedSiteRows.map((row) => row.id);
56
+ if (deletedSiteIds.length === 0) {
57
+ return {
58
+ agentMemoriesDeleted: 0,
59
+ ragDocumentsDeleted: 0,
60
+ ragChunksDeleted: 0,
61
+ deletedSiteIds: [],
62
+ dryRun: config.dryRun,
63
+ };
64
+ }
65
+ // 2. Find orphaned records in Supabase (one query per table)
66
+ const orphanedMemoryIds = await findOrphanedMemoryIds(vectorDb, deletedSiteIds);
67
+ const orphanedDocumentIds = await findOrphanedDocumentIds(vectorDb, deletedSiteIds);
68
+ const orphanedChunkIds = await findOrphanedChunkIds(vectorDb, deletedSiteIds);
69
+ // 3. Delete orphaned records (unless dry-run)
70
+ if (!config.dryRun) {
71
+ await deleteMemoriesById(vectorDb, orphanedMemoryIds);
72
+ // Delete chunks before documents to respect FK ordering (chunks -> documents)
73
+ await deleteChunksById(vectorDb, orphanedChunkIds);
74
+ await deleteDocumentsById(vectorDb, orphanedDocumentIds);
75
+ }
76
+ return {
77
+ agentMemoriesDeleted: orphanedMemoryIds.length,
78
+ ragDocumentsDeleted: orphanedDocumentIds.length,
79
+ ragChunksDeleted: orphanedChunkIds.length,
80
+ deletedSiteIds,
81
+ dryRun: config.dryRun,
82
+ };
83
+ }
84
+ // =============================================================================
85
+ // Per-table find helpers (type-safe, no generics needed)
86
+ // =============================================================================
87
+ async function findOrphanedMemoryIds(vectorDb, deletedSiteIds) {
88
+ const allIds = [];
89
+ for (let i = 0; i < deletedSiteIds.length; i += config.batchSize) {
90
+ const batch = deletedSiteIds.slice(i, i + config.batchSize);
91
+ const rows = await vectorDb
92
+ .select({ id: agentMemories.id })
93
+ .from(agentMemories)
94
+ .where(inArray(agentMemories.siteId, batch));
95
+ for (const row of rows) {
96
+ allIds.push(row.id);
97
+ }
98
+ }
99
+ return allIds;
100
+ }
101
+ async function findOrphanedDocumentIds(vectorDb, deletedSiteIds) {
102
+ const allIds = [];
103
+ for (let i = 0; i < deletedSiteIds.length; i += config.batchSize) {
104
+ const batch = deletedSiteIds.slice(i, i + config.batchSize);
105
+ const rows = await vectorDb
106
+ .select({ id: ragDocuments.id })
107
+ .from(ragDocuments)
108
+ .where(inArray(ragDocuments.workspaceId, batch));
109
+ for (const row of rows) {
110
+ allIds.push(row.id);
111
+ }
112
+ }
113
+ return allIds;
114
+ }
115
+ async function findOrphanedChunkIds(vectorDb, deletedSiteIds) {
116
+ const allIds = [];
117
+ for (let i = 0; i < deletedSiteIds.length; i += config.batchSize) {
118
+ const batch = deletedSiteIds.slice(i, i + config.batchSize);
119
+ const rows = await vectorDb
120
+ .select({ id: ragChunks.id })
121
+ .from(ragChunks)
122
+ .where(inArray(ragChunks.workspaceId, batch));
123
+ for (const row of rows) {
124
+ allIds.push(row.id);
125
+ }
126
+ }
127
+ return allIds;
128
+ }
129
+ // =============================================================================
130
+ // Per-table delete helpers
131
+ // =============================================================================
132
+ async function deleteMemoriesById(vectorDb, ids) {
133
+ for (let i = 0; i < ids.length; i += config.batchSize) {
134
+ const batch = ids.slice(i, i + config.batchSize);
135
+ await vectorDb.delete(agentMemories).where(inArray(agentMemories.id, batch));
136
+ }
137
+ }
138
+ async function deleteDocumentsById(vectorDb, ids) {
139
+ for (let i = 0; i < ids.length; i += config.batchSize) {
140
+ const batch = ids.slice(i, i + config.batchSize);
141
+ await vectorDb.delete(ragDocuments).where(inArray(ragDocuments.id, batch));
142
+ }
143
+ }
144
+ async function deleteChunksById(vectorDb, ids) {
145
+ for (let i = 0; i < ids.length; i += config.batchSize) {
146
+ const batch = ids.slice(i, i + config.batchSize);
147
+ await vectorDb.delete(ragChunks).where(inArray(ragChunks.id, batch));
148
+ }
149
+ }
150
+ //# sourceMappingURL=cross-db-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-db-cleanup.js","sourceRoot":"","sources":["../../src/cleanup/cross-db-cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cross-Database Cleanup Utilities
3
+ *
4
+ * Bridges the gap between NeonDB (REST) and Supabase (vector) databases
5
+ * by cleaning up orphaned records that FK cascades cannot reach across
6
+ * separate database instances.
7
+ */
8
+ export { type CleanupConfig, type CleanupResult, cleanupOrphanedVectorData, configureCleanup, } from './cross-db-cleanup.js';
9
+ export { type CleanupTable, cleanupStaleTokens, type StaleTokenCleanupOptions, type StaleTokenCleanupResult, } from './stale-tokens.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cleanup/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cross-Database Cleanup Utilities
3
+ *
4
+ * Bridges the gap between NeonDB (REST) and Supabase (vector) databases
5
+ * by cleaning up orphaned records that FK cascades cannot reach across
6
+ * separate database instances.
7
+ */
8
+ export { cleanupOrphanedVectorData, configureCleanup, } from './cross-db-cleanup.js';
9
+ export { cleanupStaleTokens, } from './stale-tokens.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cleanup/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Stale Token Cleanup
3
+ *
4
+ * Deletes expired/revoked rows from auth tables that accumulate over time.
5
+ * Mirrors the Vercel cron route logic so cleanup can be triggered manually
6
+ * via `revealui db cleanup` when crons are unavailable (e.g. Hobby plan).
7
+ *
8
+ * Tables:
9
+ * - sessions — expiresAt < now OR deletedAt IS NOT NULL
10
+ * - rate_limits — resetAt < now
11
+ * - password_reset_tokens — expiresAt < now
12
+ * - magic_links — expiresAt < now
13
+ * - pages (scheduled) — status = 'scheduled' AND scheduledAt <= now
14
+ *
15
+ * Idempotent — safe to run multiple times.
16
+ */
17
+ export type CleanupTable = 'sessions' | 'rateLimits' | 'passwordResetTokens' | 'magicLinks' | 'scheduledPages';
18
+ export interface StaleTokenCleanupOptions {
19
+ /** When true, counts rows without deleting (default: false) */
20
+ dryRun?: boolean;
21
+ /** Limit cleanup to specific tables; defaults to all */
22
+ tables?: CleanupTable[];
23
+ }
24
+ export interface StaleTokenCleanupResult {
25
+ sessions: number;
26
+ rateLimits: number;
27
+ passwordResetTokens: number;
28
+ magicLinks: number;
29
+ scheduledPages: number;
30
+ dryRun: boolean;
31
+ }
32
+ /**
33
+ * Cleans up (or counts, in dry-run mode) stale rows from auth tables.
34
+ * Reads POSTGRES_URL / DATABASE_URL from the environment via getClient().
35
+ */
36
+ export declare function cleanupStaleTokens(options?: StaleTokenCleanupOptions): Promise<StaleTokenCleanupResult>;
37
+ //# sourceMappingURL=stale-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stale-tokens.d.ts","sourceRoot":"","sources":["../../src/cleanup/stale-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,YAAY,GACZ,qBAAqB,GACrB,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,wBAAwB;IACvC,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAmFlC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Stale Token Cleanup
3
+ *
4
+ * Deletes expired/revoked rows from auth tables that accumulate over time.
5
+ * Mirrors the Vercel cron route logic so cleanup can be triggered manually
6
+ * via `revealui db cleanup` when crons are unavailable (e.g. Hobby plan).
7
+ *
8
+ * Tables:
9
+ * - sessions — expiresAt < now OR deletedAt IS NOT NULL
10
+ * - rate_limits — resetAt < now
11
+ * - password_reset_tokens — expiresAt < now
12
+ * - magic_links — expiresAt < now
13
+ * - pages (scheduled) — status = 'scheduled' AND scheduledAt <= now
14
+ *
15
+ * Idempotent — safe to run multiple times.
16
+ */
17
+ import { and, eq, isNotNull, lt, lte, or } from 'drizzle-orm';
18
+ import { getClient } from '../client/index.js';
19
+ import { magicLinks } from '../schema/magic-links.js';
20
+ import { pages } from '../schema/pages.js';
21
+ import { passwordResetTokens } from '../schema/password-reset-tokens.js';
22
+ import { rateLimits } from '../schema/rate-limits.js';
23
+ import { sessions } from '../schema/users.js';
24
+ const ALL_TABLES = [
25
+ 'sessions',
26
+ 'rateLimits',
27
+ 'passwordResetTokens',
28
+ 'magicLinks',
29
+ 'scheduledPages',
30
+ ];
31
+ /**
32
+ * Cleans up (or counts, in dry-run mode) stale rows from auth tables.
33
+ * Reads POSTGRES_URL / DATABASE_URL from the environment via getClient().
34
+ */
35
+ export async function cleanupStaleTokens(options = {}) {
36
+ const { dryRun = false, tables = ALL_TABLES } = options;
37
+ const db = getClient();
38
+ const now = new Date();
39
+ const result = {
40
+ sessions: 0,
41
+ rateLimits: 0,
42
+ passwordResetTokens: 0,
43
+ magicLinks: 0,
44
+ scheduledPages: 0,
45
+ dryRun,
46
+ };
47
+ if (tables.includes('sessions')) {
48
+ const where = or(lt(sessions.expiresAt, now), isNotNull(sessions.deletedAt));
49
+ if (dryRun) {
50
+ const rows = await db.select({ id: sessions.id }).from(sessions).where(where);
51
+ result.sessions = rows.length;
52
+ }
53
+ else {
54
+ const deleted = await db.delete(sessions).where(where).returning();
55
+ result.sessions = deleted.length;
56
+ }
57
+ }
58
+ if (tables.includes('rateLimits')) {
59
+ const where = lt(rateLimits.resetAt, now);
60
+ if (dryRun) {
61
+ const rows = await db.select({ key: rateLimits.key }).from(rateLimits).where(where);
62
+ result.rateLimits = rows.length;
63
+ }
64
+ else {
65
+ const deleted = await db.delete(rateLimits).where(where).returning();
66
+ result.rateLimits = deleted.length;
67
+ }
68
+ }
69
+ if (tables.includes('passwordResetTokens')) {
70
+ const where = lt(passwordResetTokens.expiresAt, now);
71
+ if (dryRun) {
72
+ const rows = await db
73
+ .select({ id: passwordResetTokens.id })
74
+ .from(passwordResetTokens)
75
+ .where(where);
76
+ result.passwordResetTokens = rows.length;
77
+ }
78
+ else {
79
+ const deleted = await db.delete(passwordResetTokens).where(where).returning();
80
+ result.passwordResetTokens = deleted.length;
81
+ }
82
+ }
83
+ if (tables.includes('magicLinks')) {
84
+ const where = lt(magicLinks.expiresAt, now);
85
+ if (dryRun) {
86
+ const rows = await db.select({ id: magicLinks.id }).from(magicLinks).where(where);
87
+ result.magicLinks = rows.length;
88
+ }
89
+ else {
90
+ const deleted = await db.delete(magicLinks).where(where).returning();
91
+ result.magicLinks = deleted.length;
92
+ }
93
+ }
94
+ if (tables.includes('scheduledPages')) {
95
+ const where = and(eq(pages.status, 'scheduled'), isNotNull(pages.scheduledAt), lte(pages.scheduledAt, now));
96
+ if (dryRun) {
97
+ const rows = await db.select({ id: pages.id }).from(pages).where(where);
98
+ result.scheduledPages = rows.length;
99
+ }
100
+ else {
101
+ const due = await db.select({ id: pages.id }).from(pages).where(where);
102
+ for (const page of due) {
103
+ await db
104
+ .update(pages)
105
+ .set({ status: 'published', publishedAt: now, updatedAt: now })
106
+ .where(eq(pages.id, page.id));
107
+ }
108
+ result.scheduledPages = due.length;
109
+ }
110
+ }
111
+ return result;
112
+ }
113
+ //# sourceMappingURL=stale-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stale-tokens.js","sourceRoot":"","sources":["../../src/cleanup/stale-tokens.ts"],"names":[],"mappings":"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"}
@@ -207,6 +207,19 @@ export declare function closeAllPools(): Promise<void>;
207
207
  * await withTransaction(neonDb, async (tx) => { ... }) // Error!
208
208
  * ```
209
209
  */
210
+ /**
211
+ * Asserts that a database type supports transactions. Call at app startup to fail fast.
212
+ *
213
+ * @param dbType - Database type to check ('rest' or 'vector')
214
+ * @throws {Error} If the database driver does not support transactions
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * // At app startup
219
+ * requiresTransactions('rest') // throws if REST DB is Neon HTTP
220
+ * ```
221
+ */
222
+ export declare function requiresTransactions(dbType?: DatabaseType): void;
210
223
  export declare function withTransaction<T>(db: Database, fn: (tx: Database) => Promise<T>): Promise<T>;
211
224
  export { schema };
212
225
  export type { AgentAction, AgentContext, AgentMemory, Conversation, CRDTOperation, GlobalFooter, GlobalHeader, GlobalSettings, Media, NewAgentAction, NewAgentContext, NewAgentMemory, NewConversation, NewCRDTOperation, NewGlobalFooter, NewGlobalHeader, NewGlobalSettings, NewMedia, NewNodeIdMapping, NewPage, NewPageRevision, NewPost, NewSession, NewSite, NewSiteCollaborator, NewUser, NodeIdMapping, Page, PageRevision, Post, Session, Site, SiteCollaborator, User, } from '../schema/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErF,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAOnD,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,uBAAuB;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb;AAMD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAA;AAEtF,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AA0CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,QAAQ,GAAE,OAAO,UAAU,GAAG,OAAO,YAAY,GAAG,OAAO,MAAe,GACzE,QAAQ,CAkCV;AAkCD;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,wBAAgB,SAAS,CAAC,sBAAsB,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAqBlF;AAiDD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAExC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAE1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAa9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBnD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAmBZ;AAMD,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,YAAY,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,KAAK,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,OAAO,EACP,UAAU,EACV,OAAO,EACP,mBAAmB,EACnB,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,IAAI,GACL,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,QAAQ,IAAI,cAAc,EAC1B,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,11 @@ import * as schema from '../schema/index.js'; // Full schema for backward compat
31
31
  import * as restSchema from '../schema/rest.js';
32
32
  import * as vectorSchema from '../schema/vector.js';
33
33
  // =============================================================================
34
+ // Transaction Support Tracking
35
+ // =============================================================================
36
+ let restSupportsTransactions = false;
37
+ let vectorSupportsTransactions = false;
38
+ // =============================================================================
34
39
  // Client Creation
35
40
  // =============================================================================
36
41
  /**
@@ -103,11 +108,13 @@ export function createClient(config, dbSchema = schema) {
103
108
  if (isSupabase) {
104
109
  // Use pg for Supabase connections
105
110
  // This avoids the Neon driver's hostname transformation bug
111
+ const poolMax = parseInt(process.env.DB_POOL_MAX || '10', 10);
112
+ const poolIdleTimeout = parseInt(process.env.DB_POOL_IDLE_TIMEOUT || '30000', 10);
106
113
  const pool = new Pool({
107
114
  connectionString: config.connectionString,
108
115
  ssl: getSSLConfig(config.connectionString), // Auto-detect SSL from connection string
109
- max: 10, // Connection limit
110
- idleTimeoutMillis: 30_000, // 30 seconds
116
+ max: poolMax,
117
+ idleTimeoutMillis: poolIdleTimeout,
111
118
  connectionTimeoutMillis: 10_000, // 10 seconds
112
119
  });
113
120
  // Track pool and register cleanup
@@ -179,7 +186,6 @@ function registerPoolCleanup() {
179
186
  * ```
180
187
  */
181
188
  // Note: DatabaseType | string union is intentional for backward compatibility (allows both type strings and connection strings)
182
- // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
183
189
  export function getClient(typeOrConnectionString) {
184
190
  // Legacy API: If first argument is a string and not 'rest' or 'vector', treat as connection string
185
191
  if (typeOrConnectionString && typeof typeOrConnectionString === 'string') {
@@ -212,6 +218,7 @@ function getClientByType(type) {
212
218
  'Set DATABASE_URL to your Supabase connection string.');
213
219
  }
214
220
  vectorClient = createClient({ connectionString: url }, vectorSchema);
221
+ vectorSupportsTransactions = isSupabaseConnection(url);
215
222
  }
216
223
  return vectorClient;
217
224
  }
@@ -236,6 +243,7 @@ function getClientByType(type) {
236
243
  'Either use @revealui/config, or set POSTGRES_URL (or DATABASE_URL) environment variable.');
237
244
  }
238
245
  restClient = createClient({ connectionString: url }, restSchema);
246
+ restSupportsTransactions = isSupabaseConnection(url);
239
247
  }
240
248
  return restClient;
241
249
  }
@@ -276,6 +284,8 @@ export function getVectorClient() {
276
284
  export function resetClient() {
277
285
  restClient = null;
278
286
  vectorClient = null;
287
+ restSupportsTransactions = false;
288
+ vectorSupportsTransactions = false;
279
289
  }
280
290
  // =============================================================================
281
291
  // Pool Monitoring and Cleanup
@@ -375,15 +385,44 @@ export async function closeAllPools() {
375
385
  * await withTransaction(neonDb, async (tx) => { ... }) // Error!
376
386
  * ```
377
387
  */
388
+ /**
389
+ * Asserts that a database type supports transactions. Call at app startup to fail fast.
390
+ *
391
+ * @param dbType - Database type to check ('rest' or 'vector')
392
+ * @throws {Error} If the database driver does not support transactions
393
+ *
394
+ * @example
395
+ * ```typescript
396
+ * // At app startup
397
+ * requiresTransactions('rest') // throws if REST DB is Neon HTTP
398
+ * ```
399
+ */
400
+ export function requiresTransactions(dbType = 'rest') {
401
+ // Force client creation so we know the driver type
402
+ getClient(dbType);
403
+ const supports = dbType === 'vector' ? vectorSupportsTransactions : restSupportsTransactions;
404
+ if (!supports) {
405
+ throw new Error(`Transaction support required but not available for '${dbType}' database. ` +
406
+ 'The Neon HTTP driver does not support transactions. ' +
407
+ 'Switch to Supabase pooler or pg driver for transaction support.');
408
+ }
409
+ }
378
410
  export async function withTransaction(db, fn) {
379
- // Check if this is a pg Pool-based client (supports transactions)
380
- // The pg Pool client has a 'transaction' method from drizzle-orm/node-postgres
411
+ // Early check: fail fast with clear message based on tracked driver type
412
+ if (db === restClient && !restSupportsTransactions) {
413
+ throw new Error('Transaction not supported: REST database is using Neon HTTP driver. ' +
414
+ 'Switch to Supabase pooler or pg driver for transaction support.');
415
+ }
416
+ if (db === vectorClient && !vectorSupportsTransactions) {
417
+ throw new Error('Transaction not supported: Vector database is using Neon HTTP driver. ' +
418
+ 'Switch to Supabase pooler or pg driver for transaction support.');
419
+ }
420
+ // Fallback: Check if this is a pg Pool-based client (supports transactions)
381
421
  const hasPgTransaction = 'transaction' in db && typeof db.transaction === 'function';
382
422
  if (!hasPgTransaction) {
383
423
  throw new Error('Transaction not supported: Database client is using Neon HTTP driver which does not support transactions. ' +
384
424
  'To use transactions, configure your database with Supabase or localhost connection string. ' +
385
- 'Neon HTTP driver uses stateless requests and cannot maintain transaction state. ' +
386
- 'See docs/PRODUCTION_BLOCKERS.md for migration guide.');
425
+ 'Neon HTTP driver uses stateless requests and cannot maintain transaction state.');
387
426
  }
388
427
  // Use Drizzle's built-in transaction API
389
428
  // This automatically handles BEGIN/COMMIT/ROLLBACK
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}