@revealui/db 0.3.6 → 0.4.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 (188) hide show
  1. package/README.md +4 -4
  2. package/dist/audit-store.d.ts +1 -1
  3. package/dist/audit-store.js +1 -1
  4. package/dist/cleanup/rag-site-cleanup.d.ts +2 -2
  5. package/dist/cleanup/rag-site-cleanup.js +2 -2
  6. package/dist/cleanup/stale-tokens.d.ts +6 -6
  7. package/dist/cleanup/stale-tokens.js +6 -6
  8. package/dist/client/index.d.ts +1 -1
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +20 -8
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/crypto.d.ts +23 -1
  13. package/dist/crypto.d.ts.map +1 -1
  14. package/dist/crypto.js +67 -3
  15. package/dist/crypto.js.map +1 -1
  16. package/dist/log-transport.d.ts +1 -1
  17. package/dist/log-transport.js +2 -2
  18. package/dist/log-transport.js.map +1 -1
  19. package/dist/pool.d.ts +0 -5
  20. package/dist/pool.d.ts.map +1 -1
  21. package/dist/pool.js +15 -24
  22. package/dist/pool.js.map +1 -1
  23. package/dist/queries/boards.d.ts +1 -1
  24. package/dist/queries/boards.js +1 -1
  25. package/dist/queries/conversations.js +1 -1
  26. package/dist/queries/conversations.js.map +1 -1
  27. package/dist/queries/media.d.ts +6 -1
  28. package/dist/queries/media.d.ts.map +1 -1
  29. package/dist/queries/media.js +16 -2
  30. package/dist/queries/media.js.map +1 -1
  31. package/dist/queries/orders.d.ts +5 -0
  32. package/dist/queries/orders.d.ts.map +1 -1
  33. package/dist/queries/orders.js +14 -1
  34. package/dist/queries/orders.js.map +1 -1
  35. package/dist/queries/pages.d.ts +1 -1
  36. package/dist/queries/posts.d.ts +8 -3
  37. package/dist/queries/posts.d.ts.map +1 -1
  38. package/dist/queries/posts.js +16 -2
  39. package/dist/queries/posts.js.map +1 -1
  40. package/dist/queries/products.d.ts +6 -1
  41. package/dist/queries/products.d.ts.map +1 -1
  42. package/dist/queries/products.js +15 -1
  43. package/dist/queries/products.js.map +1 -1
  44. package/dist/queries/sites.d.ts +7 -1
  45. package/dist/queries/sites.d.ts.map +1 -1
  46. package/dist/queries/sites.js +15 -1
  47. package/dist/queries/sites.js.map +1 -1
  48. package/dist/queries/ticket-comments.js +2 -2
  49. package/dist/queries/ticket-comments.js.map +1 -1
  50. package/dist/queries/tickets.d.ts +1 -1
  51. package/dist/queries/tickets.js +1 -1
  52. package/dist/queries/tickets.js.map +1 -1
  53. package/dist/queries/users.d.ts +57 -0
  54. package/dist/queries/users.d.ts.map +1 -1
  55. package/dist/queries/users.js +65 -0
  56. package/dist/queries/users.js.map +1 -1
  57. package/dist/saga/crdt-resolver.d.ts +4 -4
  58. package/dist/saga/crdt-resolver.js +10 -10
  59. package/dist/saga/crdt-resolver.js.map +1 -1
  60. package/dist/saga/idempotent-operation.d.ts +1 -1
  61. package/dist/saga/idempotent-operation.js +2 -2
  62. package/dist/saga/idempotent-operation.js.map +1 -1
  63. package/dist/saga/index.d.ts +1 -1
  64. package/dist/saga/index.js +1 -1
  65. package/dist/saga/neon-saga.d.ts +2 -2
  66. package/dist/saga/neon-saga.js +9 -9
  67. package/dist/saga/neon-saga.js.map +1 -1
  68. package/dist/saga/recovery.d.ts +2 -2
  69. package/dist/saga/recovery.js +2 -2
  70. package/dist/saga/resilient-step.d.ts +1 -1
  71. package/dist/saga/resilient-step.js +2 -2
  72. package/dist/saga/resilient-step.js.map +1 -1
  73. package/dist/saga/types.d.ts +2 -2
  74. package/dist/schema/accounts.d.ts.map +1 -1
  75. package/dist/schema/accounts.js +25 -5
  76. package/dist/schema/accounts.js.map +1 -1
  77. package/dist/schema/{cms.d.ts → admin.d.ts} +3 -3
  78. package/dist/schema/admin.d.ts.map +1 -0
  79. package/dist/schema/{cms.js → admin.js} +29 -12
  80. package/dist/schema/admin.js.map +1 -0
  81. package/dist/schema/agents.d.ts +1 -1
  82. package/dist/schema/agents.d.ts.map +1 -1
  83. package/dist/schema/agents.js +40 -14
  84. package/dist/schema/agents.js.map +1 -1
  85. package/dist/schema/api-keys.d.ts +1 -1
  86. package/dist/schema/api-keys.d.ts.map +1 -1
  87. package/dist/schema/api-keys.js +13 -5
  88. package/dist/schema/api-keys.js.map +1 -1
  89. package/dist/schema/app-logs.d.ts +1 -1
  90. package/dist/schema/app-logs.d.ts.map +1 -1
  91. package/dist/schema/app-logs.js +6 -3
  92. package/dist/schema/app-logs.js.map +1 -1
  93. package/dist/schema/audit-log.d.ts +17 -0
  94. package/dist/schema/audit-log.d.ts.map +1 -1
  95. package/dist/schema/audit-log.js +5 -1
  96. package/dist/schema/audit-log.js.map +1 -1
  97. package/dist/schema/circuit-breaker.d.ts.map +1 -1
  98. package/dist/schema/circuit-breaker.js +10 -3
  99. package/dist/schema/circuit-breaker.js.map +1 -1
  100. package/dist/schema/code-provenance.d.ts.map +1 -1
  101. package/dist/schema/code-provenance.js +14 -4
  102. package/dist/schema/code-provenance.js.map +1 -1
  103. package/dist/schema/coordination.d.ts +2 -2
  104. package/dist/schema/coordination.d.ts.map +1 -1
  105. package/dist/schema/coordination.js +14 -5
  106. package/dist/schema/coordination.js.map +1 -1
  107. package/dist/schema/crdt-operations.d.ts.map +1 -1
  108. package/dist/schema/crdt-operations.js +4 -1
  109. package/dist/schema/crdt-operations.js.map +1 -1
  110. package/dist/schema/error-events.d.ts +2 -2
  111. package/dist/schema/error-events.d.ts.map +1 -1
  112. package/dist/schema/error-events.js +10 -6
  113. package/dist/schema/error-events.js.map +1 -1
  114. package/dist/schema/gdpr.d.ts.map +1 -1
  115. package/dist/schema/gdpr.js +6 -1
  116. package/dist/schema/gdpr.js.map +1 -1
  117. package/dist/schema/index.js +6 -6
  118. package/dist/schema/index.js.map +1 -1
  119. package/dist/schema/jobs.d.ts +1 -1
  120. package/dist/schema/jobs.d.ts.map +1 -1
  121. package/dist/schema/jobs.js +4 -2
  122. package/dist/schema/jobs.js.map +1 -1
  123. package/dist/schema/licenses.d.ts.map +1 -1
  124. package/dist/schema/licenses.js +6 -3
  125. package/dist/schema/licenses.js.map +1 -1
  126. package/dist/schema/marketplace.d.ts +1 -1
  127. package/dist/schema/marketplace.d.ts.map +1 -1
  128. package/dist/schema/marketplace.js +14 -7
  129. package/dist/schema/marketplace.js.map +1 -1
  130. package/dist/schema/node-ids.d.ts.map +1 -1
  131. package/dist/schema/node-ids.js +7 -3
  132. package/dist/schema/node-ids.js.map +1 -1
  133. package/dist/schema/oauth-accounts.d.ts +1 -1
  134. package/dist/schema/oauth-accounts.d.ts.map +1 -1
  135. package/dist/schema/oauth-accounts.js +5 -2
  136. package/dist/schema/oauth-accounts.js.map +1 -1
  137. package/dist/schema/pages.d.ts.map +1 -1
  138. package/dist/schema/pages.js +8 -3
  139. package/dist/schema/pages.js.map +1 -1
  140. package/dist/schema/products.d.ts.map +1 -1
  141. package/dist/schema/products.js +13 -4
  142. package/dist/schema/products.js.map +1 -1
  143. package/dist/schema/rag.d.ts +1 -1
  144. package/dist/schema/rag.d.ts.map +1 -1
  145. package/dist/schema/rag.js +19 -12
  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 +8 -2
  149. package/dist/schema/rate-limits.js.map +1 -1
  150. package/dist/schema/rest.d.ts +2 -2
  151. package/dist/schema/rest.d.ts.map +1 -1
  152. package/dist/schema/rest.js +4 -4
  153. package/dist/schema/rest.js.map +1 -1
  154. package/dist/schema/revealcoin.d.ts.map +1 -1
  155. package/dist/schema/revealcoin.js +7 -3
  156. package/dist/schema/revealcoin.js.map +1 -1
  157. package/dist/schema/revmarket.d.ts +1 -1
  158. package/dist/schema/revmarket.d.ts.map +1 -1
  159. package/dist/schema/revmarket.js +20 -9
  160. package/dist/schema/revmarket.js.map +1 -1
  161. package/dist/schema/sites.d.ts.map +1 -1
  162. package/dist/schema/sites.js +11 -4
  163. package/dist/schema/sites.js.map +1 -1
  164. package/dist/schema/tenants.d.ts.map +1 -1
  165. package/dist/schema/tenants.js +4 -1
  166. package/dist/schema/tenants.js.map +1 -1
  167. package/dist/schema/tickets.d.ts.map +1 -1
  168. package/dist/schema/tickets.js +25 -6
  169. package/dist/schema/tickets.js.map +1 -1
  170. package/dist/schema/users.d.ts.map +1 -1
  171. package/dist/schema/users.js +12 -6
  172. package/dist/schema/users.js.map +1 -1
  173. package/dist/schema/webhook-events.js +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 +4 -1
  177. package/dist/schema/yjs-documents.js.map +1 -1
  178. package/dist/scripts/cleanup-expired.d.ts +3 -3
  179. package/dist/scripts/cleanup-expired.js +4 -4
  180. package/dist/scripts/cleanup-expired.js.map +1 -1
  181. package/dist/types/discover.js +1 -1
  182. package/dist/types/discover.js.map +1 -1
  183. package/dist/validation/cross-db.d.ts +1 -1
  184. package/dist/validation/cross-db.js +3 -3
  185. package/dist/validation/cross-db.js.map +1 -1
  186. package/package.json +52 -6
  187. package/dist/schema/cms.d.ts.map +0 -1
  188. package/dist/schema/cms.js.map +0 -1
package/README.md CHANGED
@@ -127,14 +127,14 @@ await db.insert(users).values({
127
127
  - You need type-safe database queries against the RevealUI schema (users, posts, agents, vectors)
128
128
  - You're running migrations or generating types from the Drizzle schema
129
129
  - You want a pre-configured client for Neon, Supabase, or Vercel Postgres
130
- - **Not** for validation logicuse `@revealui/contracts` for Zod schemas
131
- - **Not** for direct SQLuse Drizzle's query builder or `db.execute()` for raw queries
130
+ - **Not** for validation logic - use `@revealui/contracts` for Zod schemas
131
+ - **Not** for direct SQL - use Drizzle's query builder or `db.execute()` for raw queries
132
132
 
133
133
  ## JOSHUA Alignment
134
134
 
135
- - **Unified**: One schema definition (50 tables) drives types, queries, and migrations across all apps
135
+ - **Unified**: One schema definition (81 tables) drives types, queries, and migrations across all apps
136
136
  - **Orthogonal**: Schema files are cleanly separated by domain (cms, users, agents, vector, crdt) with no cross-domain entanglement
137
- - **Sovereign**: Your database, your schema, your migrationsno hosted schema service in the loop
137
+ - **Sovereign**: Your database, your schema, your migrations - no hosted schema service in the loop
138
138
 
139
139
  ## Related Documentation
140
140
 
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Persistent implementation of the AuditStore interface from @revealui/ai.
5
5
  * Stores audit entries in the audit_log PostgreSQL table via Drizzle ORM.
6
- * Append-onlyno update or delete operations.
6
+ * Append-only - no update or delete operations.
7
7
  *
8
8
  * Types are defined locally to avoid a circular dependency on @revealui/ai.
9
9
  * They mirror AuditEntry and AuditFilter from @revealui/ai/audit/types.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Persistent implementation of the AuditStore interface from @revealui/ai.
5
5
  * Stores audit entries in the audit_log PostgreSQL table via Drizzle ORM.
6
- * Append-onlyno update or delete operations.
6
+ * Append-only - no update or delete operations.
7
7
  *
8
8
  * Types are defined locally to avoid a circular dependency on @revealui/ai.
9
9
  * They mirror AuditEntry and AuditFilter from @revealui/ai/audit/types.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * RAG Site CleanupCascade delete for a single site
2
+ * RAG Site Cleanup - Cascade delete for a single site
3
3
  *
4
4
  * When a site is deleted from NeonDB, the cross-database FK cascades to
5
5
  * Supabase are NOT enforced at the DB level. This function immediately
@@ -11,7 +11,7 @@
11
11
  * 3. rag_workspaces (id = sites.id)
12
12
  *
13
13
  * Designed to be called fire-and-forget from the site DELETE route.
14
- * Errors are caught and loggedthey never block the site deletion response.
14
+ * Errors are caught and logged - they never block the site deletion response.
15
15
  */
16
16
  import type { NeonHttpDatabase } from 'drizzle-orm/neon-http';
17
17
  import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * RAG Site CleanupCascade delete for a single site
2
+ * RAG Site Cleanup - Cascade delete for a single site
3
3
  *
4
4
  * When a site is deleted from NeonDB, the cross-database FK cascades to
5
5
  * Supabase are NOT enforced at the DB level. This function immediately
@@ -11,7 +11,7 @@
11
11
  * 3. rag_workspaces (id = sites.id)
12
12
  *
13
13
  * Designed to be called fire-and-forget from the site DELETE route.
14
- * Errors are caught and loggedthey never block the site deletion response.
14
+ * Errors are caught and logged - they never block the site deletion response.
15
15
  */
16
16
  import { eq } from 'drizzle-orm';
17
17
  import { ragChunks, ragDocuments, ragWorkspaces } from '../schema/rag.js';
@@ -6,13 +6,13 @@
6
6
  * via `revealui db cleanup` when crons are unavailable (e.g. Hobby plan).
7
7
  *
8
8
  * Tables:
9
- * - sessionsexpiresAt < now OR deletedAt IS NOT NULL
10
- * - rate_limitsresetAt < now
11
- * - password_reset_tokensexpiresAt < now
12
- * - magic_linksexpiresAt < now
13
- * - pages (scheduled)status = 'scheduled' AND scheduledAt <= now
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
14
  *
15
- * Idempotentsafe to run multiple times.
15
+ * Idempotent - safe to run multiple times.
16
16
  */
17
17
  export type CleanupTable = 'sessions' | 'rateLimits' | 'passwordResetTokens' | 'magicLinks' | 'scheduledPages';
18
18
  export interface StaleTokenCleanupOptions {
@@ -6,13 +6,13 @@
6
6
  * via `revealui db cleanup` when crons are unavailable (e.g. Hobby plan).
7
7
  *
8
8
  * Tables:
9
- * - sessionsexpiresAt < now OR deletedAt IS NOT NULL
10
- * - rate_limitsresetAt < now
11
- * - password_reset_tokensexpiresAt < now
12
- * - magic_linksexpiresAt < now
13
- * - pages (scheduled)status = 'scheduled' AND scheduledAt <= now
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
14
  *
15
- * Idempotentsafe to run multiple times.
15
+ * Idempotent - safe to run multiple times.
16
16
  */
17
17
  import { and, eq, isNotNull, lt, lte, or } from 'drizzle-orm';
18
18
  import { getClient } from '../client/index.js';
@@ -222,7 +222,7 @@ export declare function closeAllPools(): Promise<void>;
222
222
  export declare function requiresTransactions(dbType?: DatabaseType): void;
223
223
  export declare function withTransaction<T>(db: Database, fn: (tx: Database) => Promise<T>): Promise<T>;
224
224
  /**
225
- * Execute a sagaa NeonDB-safe alternative to withTransaction.
225
+ * Execute a saga - a NeonDB-safe alternative to withTransaction.
226
226
  *
227
227
  * Unlike withTransaction (which requires a pg Pool driver), withSaga works
228
228
  * with the NeonDB HTTP driver by modeling multi-step writes as individually
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -66,10 +66,22 @@ let vectorSupportsTransactions = false;
66
66
  * Localhost connections are used for testing and development.
67
67
  */
68
68
  function isSupabaseConnection(connectionString) {
69
- return (connectionString.includes('.supabase.co') ||
70
- connectionString.includes('pooler.supabase.com') ||
71
- connectionString.includes('localhost') ||
72
- connectionString.includes('127.0.0.1'));
69
+ try {
70
+ const host = new URL(connectionString).hostname;
71
+ return (host.endsWith('.supabase.co') ||
72
+ host === 'supabase.co' ||
73
+ host.endsWith('.supabase.com') ||
74
+ host === 'supabase.com' ||
75
+ host === 'localhost' ||
76
+ host === '127.0.0.1');
77
+ }
78
+ catch {
79
+ // Fallback for non-URL connection strings (e.g., plain host:port format)
80
+ return (connectionString.includes('.supabase.co') ||
81
+ connectionString.includes('pooler.supabase.com') ||
82
+ connectionString.includes('localhost') ||
83
+ connectionString.includes('127.0.0.1'));
84
+ }
73
85
  }
74
86
  /**
75
87
  * Creates a Drizzle database client, automatically selecting the appropriate driver:
@@ -411,17 +423,17 @@ export async function withTransaction(db, fn) {
411
423
  // Early check: fail fast with clear message based on tracked driver type
412
424
  if (db === restClient && !restSupportsTransactions) {
413
425
  throw new Error('Transaction not supported: REST database is using Neon HTTP driver. ' +
414
- 'Switch to Supabase pooler or pg driver for transaction support.');
426
+ 'Use withSaga() for NeonDB-safe multi-step writes, or switch to Supabase pooler / pg driver for transaction support.');
415
427
  }
416
428
  if (db === vectorClient && !vectorSupportsTransactions) {
417
429
  throw new Error('Transaction not supported: Vector database is using Neon HTTP driver. ' +
418
- 'Switch to Supabase pooler or pg driver for transaction support.');
430
+ 'Use withSaga() for NeonDB-safe multi-step writes, or switch to Supabase pooler / pg driver for transaction support.');
419
431
  }
420
432
  // Fallback: Check if this is a pg Pool-based client (supports transactions)
421
433
  const hasPgTransaction = 'transaction' in db && typeof db.transaction === 'function';
422
434
  if (!hasPgTransaction) {
423
435
  throw new Error('Transaction not supported: Database client is using Neon HTTP driver which does not support transactions. ' +
424
- 'To use transactions, configure your database with Supabase or localhost connection string. ' +
436
+ 'Use withSaga() for NeonDB-safe multi-step writes, or configure your database with Supabase / localhost connection string. ' +
425
437
  'Neon HTTP driver uses stateless requests and cannot maintain transaction state.');
426
438
  }
427
439
  // Use Drizzle's built-in transaction API
@@ -432,7 +444,7 @@ export async function withTransaction(db, fn) {
432
444
  // Saga Helper (NeonDB-safe alternative to withTransaction)
433
445
  // =============================================================================
434
446
  /**
435
- * Execute a sagaa NeonDB-safe alternative to withTransaction.
447
+ * Execute a saga - a NeonDB-safe alternative to withTransaction.
436
448
  *
437
449
  * Unlike withTransaction (which requires a pg Pool driver), withSaga works
438
450
  * with the NeonDB HTTP driver by modeling multi-step writes as individually
@@ -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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"}
package/dist/crypto.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @revealui/db/cryptoAES-256-GCM envelope encryption for stored API keys
2
+ * @revealui/db/crypto - AES-256-GCM envelope encryption for stored API keys
3
3
  *
4
4
  * Uses a Key Encryption Key (KEK) sourced from the REVEALUI_KEK environment
5
5
  * variable (64 hex chars = 32 bytes). Each key is encrypted with a random
@@ -19,6 +19,28 @@ export declare function encryptApiKey(plaintext: string): string;
19
19
  * Throws if tampered (GCM auth tag mismatch) or if KEK is wrong.
20
20
  */
21
21
  export declare function decryptApiKey(encrypted: string): string;
22
+ /**
23
+ * Encrypt an arbitrary string field using AES-256-GCM.
24
+ * Same algorithm as `encryptApiKey`; use for TOTP secrets, tokens, etc.
25
+ */
26
+ export declare function encryptField(plaintext: string): string;
27
+ /**
28
+ * Decrypt a field encrypted by `encryptField`.
29
+ * Throws on tamper (GCM auth tag mismatch) or wrong KEK.
30
+ */
31
+ export declare function decryptField(encrypted: string): string;
32
+ /**
33
+ * Detect whether a stored value is in the encrypted envelope format.
34
+ * Returns true for `<base64url>.<base64url>.<base64url>` with correct lengths.
35
+ * Useful for rolling migration: read plaintext or encrypted transparently.
36
+ */
37
+ export declare function isEncryptedField(value: string): boolean;
38
+ /**
39
+ * Decrypt a field that may be plaintext (legacy) or encrypted (new).
40
+ * If the value looks like an encrypted envelope, decrypts it.
41
+ * Otherwise returns the plaintext as-is (for rolling migration).
42
+ */
43
+ export declare function decryptFieldOrPassthrough(value: string): string;
22
44
  /**
23
45
  * Return a redacted hint showing only the last 4 characters of an API key.
24
46
  * Safe to store in plaintext and display in the UI.
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkBH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGtD"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkBH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvD;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGtD"}
package/dist/crypto.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @revealui/db/cryptoAES-256-GCM envelope encryption for stored API keys
2
+ * @revealui/db/crypto - AES-256-GCM envelope encryption for stored API keys
3
3
  *
4
4
  * Uses a Key Encryption Key (KEK) sourced from the REVEALUI_KEK environment
5
5
  * variable (64 hex chars = 32 bytes). Each key is encrypted with a random
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';
13
13
  const ALGORITHM = 'aes-256-gcm';
14
- const IV_LENGTH = 12; // 96-bit IVrecommended for AES-GCM
14
+ const IV_LENGTH = 12; // 96-bit IV - recommended for AES-GCM
15
15
  function getKek() {
16
16
  const kekHex = process.env.REVEALUI_KEK;
17
17
  if (!kekHex) {
@@ -46,7 +46,7 @@ export function decryptApiKey(encrypted) {
46
46
  const kek = getKek();
47
47
  const parts = encrypted.split('.');
48
48
  if (parts.length !== 3) {
49
- throw new Error('Invalid encrypted key formatexpected <iv>.<authTag>.<ciphertext>');
49
+ throw new Error('Invalid encrypted key format - expected <iv>.<authTag>.<ciphertext>');
50
50
  }
51
51
  const [ivB64, authTagB64, ciphertextB64] = parts;
52
52
  const iv = Buffer.from(ivB64, 'base64url');
@@ -62,6 +62,70 @@ export function decryptApiKey(encrypted) {
62
62
  decipher.setAuthTag(authTag);
63
63
  return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');
64
64
  }
65
+ // =============================================================================
66
+ // Generic Field Encryption (reusable for any sensitive column)
67
+ // =============================================================================
68
+ /**
69
+ * Encrypt an arbitrary string field using AES-256-GCM.
70
+ * Same algorithm as `encryptApiKey`; use for TOTP secrets, tokens, etc.
71
+ */
72
+ export function encryptField(plaintext) {
73
+ const kek = getKek();
74
+ const iv = randomBytes(IV_LENGTH);
75
+ const cipher = createCipheriv(ALGORITHM, kek, iv);
76
+ const ciphertext = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);
77
+ const authTag = cipher.getAuthTag();
78
+ return [
79
+ iv.toString('base64url'),
80
+ authTag.toString('base64url'),
81
+ ciphertext.toString('base64url'),
82
+ ].join('.');
83
+ }
84
+ /**
85
+ * Decrypt a field encrypted by `encryptField`.
86
+ * Throws on tamper (GCM auth tag mismatch) or wrong KEK.
87
+ */
88
+ export function decryptField(encrypted) {
89
+ const kek = getKek();
90
+ const parts = encrypted.split('.');
91
+ if (parts.length !== 3) {
92
+ throw new Error('Invalid encrypted field format — expected <iv>.<authTag>.<ciphertext>');
93
+ }
94
+ const [ivB64, authTagB64, ciphertextB64] = parts;
95
+ const iv = Buffer.from(ivB64, 'base64url');
96
+ const authTag = Buffer.from(authTagB64, 'base64url');
97
+ const ciphertext = Buffer.from(ciphertextB64, 'base64url');
98
+ if (iv.length !== IV_LENGTH) {
99
+ throw new Error(`Invalid IV length: expected ${IV_LENGTH} bytes, got ${iv.length}`);
100
+ }
101
+ if (authTag.length !== 16) {
102
+ throw new Error(`Invalid auth tag length: expected 16 bytes, got ${authTag.length}`);
103
+ }
104
+ const decipher = createDecipheriv(ALGORITHM, kek, iv);
105
+ decipher.setAuthTag(authTag);
106
+ return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');
107
+ }
108
+ /**
109
+ * Detect whether a stored value is in the encrypted envelope format.
110
+ * Returns true for `<base64url>.<base64url>.<base64url>` with correct lengths.
111
+ * Useful for rolling migration: read plaintext or encrypted transparently.
112
+ */
113
+ export function isEncryptedField(value) {
114
+ const parts = value.split('.');
115
+ if (parts.length !== 3)
116
+ return false;
117
+ // Validate that each part is valid base64url (non-empty, correct chars)
118
+ const b64urlPattern = /^[A-Za-z0-9_-]+$/;
119
+ return parts.every((p) => p !== undefined && p.length > 0 && b64urlPattern.test(p));
120
+ }
121
+ /**
122
+ * Decrypt a field that may be plaintext (legacy) or encrypted (new).
123
+ * If the value looks like an encrypted envelope, decrypts it.
124
+ * Otherwise returns the plaintext as-is (for rolling migration).
125
+ */
126
+ export function decryptFieldOrPassthrough(value) {
127
+ return isEncryptedField(value) ? decryptField(value) : value;
128
+ }
65
129
  /**
66
130
  * Return a redacted hint showing only the last 4 characters of an API key.
67
131
  * Safe to store in plaintext and display in the UI.
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Persists warn/error/fatal entries to the `app_logs` NeonDB table.
6
6
  *
7
7
  * Only writes in production (NODE_ENV=production). All writes are fire-and-forget
8
- *the handler never throws or blocks the caller.
8
+ * - the handler never throws or blocks the caller.
9
9
  *
10
10
  * Usage (call once at app startup):
11
11
  * import { createDbLogHandler } from '@revealui/db/log-transport'
@@ -5,7 +5,7 @@
5
5
  * Persists warn/error/fatal entries to the `app_logs` NeonDB table.
6
6
  *
7
7
  * Only writes in production (NODE_ENV=production). All writes are fire-and-forget
8
- *the handler never throws or blocks the caller.
8
+ * - the handler never throws or blocks the caller.
9
9
  *
10
10
  * Usage (call once at app startup):
11
11
  * import { createDbLogHandler } from '@revealui/db/log-transport'
@@ -44,7 +44,7 @@ export function createDbLogHandler(app) {
44
44
  data: Object.keys(data).length > 0 ? data : null,
45
45
  })
46
46
  .catch(() => {
47
- // Intentionally emptynever throw back to the logger
47
+ // Intentionally empty - never throw back to the logger
48
48
  });
49
49
  };
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log-transport.js","sourceRoot":"","sources":["../src/log-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAExD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,CAAC,KAAe,EAAQ,EAAE;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,OAAO;QAElD,kDAAkD;QAClD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QACvB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG;YACH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;YACjD,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI;YAC3C,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SACjD,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,uDAAuD;QACzD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"log-transport.js","sourceRoot":"","sources":["../src/log-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAExD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,CAAC,KAAe,EAAQ,EAAE;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,OAAO;QAElD,kDAAkD;QAClD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QACvB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG;YACH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;YACjD,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI;YAC3C,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SACjD,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,yDAAyD;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC"}
package/dist/pool.d.ts CHANGED
@@ -5,10 +5,6 @@
5
5
  */
6
6
  import { Pool } from 'pg';
7
7
  export declare function getPool(): Pool;
8
- /**
9
- * @deprecated Use getPool() instead. Eager pool creation risks crashes at module parse time.
10
- */
11
- export declare const pool: Pool;
12
8
  export declare function checkDatabaseHealth(): Promise<{
13
9
  healthy: boolean;
14
10
  stats: {
@@ -33,5 +29,4 @@ export declare function startPoolMonitoring(intervalMs?: number): ReturnType<typ
33
29
  * Pre-warm the connection pool
34
30
  */
35
31
  export declare function warmupPool(): Promise<void>;
36
- export default pool;
37
32
  //# sourceMappingURL=pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,IAAI,EAAoC,MAAM,IAAI,CAAC;AAoG5D,wBAAgB,OAAO,IAAI,IAAI,CAW9B;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,MAIf,CAAC;AA6EH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC,CAgCD;AAMD,wBAAgB,YAAY,IAAI;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB,CASA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,GAAE,MAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAqB9F;AAMD;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgChD;AAMD,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,IAAI,EAAoC,MAAM,IAAI,CAAC;AAoG5D,wBAAgB,OAAO,IAAI,IAAI,CAW9B;AA6ED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC,CAiCD;AAMD,wBAAgB,YAAY,IAAI;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB,CAUA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,GAAE,MAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAqB9F;AAMD;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiChD"}
package/dist/pool.js CHANGED
@@ -92,14 +92,6 @@ export function getPool() {
92
92
  }
93
93
  return _pool;
94
94
  }
95
- /**
96
- * @deprecated Use getPool() instead. Eager pool creation risks crashes at module parse time.
97
- */
98
- export const pool = new Proxy({}, {
99
- get(_target, prop, receiver) {
100
- return Reflect.get(getPool(), prop, receiver);
101
- },
102
- });
103
95
  // ===========================================================================
104
96
  // ERROR HANDLING
105
97
  // ===========================================================================
@@ -158,16 +150,17 @@ function registerShutdown() {
158
150
  // HEALTH CHECK
159
151
  // ===========================================================================
160
152
  export async function checkDatabaseHealth() {
153
+ const p = getPool();
161
154
  try {
162
155
  // Test connection
163
- const client = await pool.connect();
156
+ const client = await p.connect();
164
157
  await client.query('SELECT 1');
165
158
  client.release();
166
159
  // Get pool stats
167
160
  const stats = {
168
- totalCount: pool.totalCount,
169
- idleCount: pool.idleCount,
170
- waitingCount: pool.waitingCount,
161
+ totalCount: p.totalCount,
162
+ idleCount: p.idleCount,
163
+ waitingCount: p.waitingCount,
171
164
  };
172
165
  return {
173
166
  healthy: true,
@@ -179,9 +172,9 @@ export async function checkDatabaseHealth() {
179
172
  return {
180
173
  healthy: false,
181
174
  stats: {
182
- totalCount: pool.totalCount,
183
- idleCount: pool.idleCount,
184
- waitingCount: pool.waitingCount,
175
+ totalCount: p.totalCount,
176
+ idleCount: p.idleCount,
177
+ waitingCount: p.waitingCount,
185
178
  },
186
179
  };
187
180
  }
@@ -190,13 +183,14 @@ export async function checkDatabaseHealth() {
190
183
  // POOL MONITORING
191
184
  // ===========================================================================
192
185
  export function getPoolStats() {
186
+ const p = getPool();
193
187
  return {
194
- totalCount: pool.totalCount, // Total clients
195
- idleCount: pool.idleCount, // Idle clients
196
- waitingCount: pool.waitingCount, // Waiting requests
188
+ totalCount: p.totalCount, // Total clients
189
+ idleCount: p.idleCount, // Idle clients
190
+ waitingCount: p.waitingCount, // Waiting requests
197
191
  maxConnections: poolConfig.max,
198
192
  minConnections: poolConfig.min,
199
- utilization: ((pool.totalCount - pool.idleCount) / (poolConfig.max || 20)) * 100,
193
+ utilization: ((p.totalCount - p.idleCount) / (poolConfig.max || 20)) * 100,
200
194
  };
201
195
  }
202
196
  /**
@@ -232,10 +226,11 @@ export async function warmupPool() {
232
226
  logger.info('Warming up database pool');
233
227
  const warmupConnections = Math.min(poolConfig.min || 5, poolConfig.max || 20);
234
228
  const clients = [];
229
+ const p = getPool();
235
230
  try {
236
231
  // Acquire minimum connections
237
232
  for (let i = 0; i < warmupConnections; i++) {
238
- const client = await pool.connect();
233
+ const client = await p.connect();
239
234
  clients.push(client);
240
235
  }
241
236
  logger.info(`Warmed up ${warmupConnections} database connections`);
@@ -253,8 +248,4 @@ export async function warmupPool() {
253
248
  throw error;
254
249
  }
255
250
  }
256
- // ===========================================================================
257
- // EXPORTS
258
- // ===========================================================================
259
- export default pool;
260
251
  //# sourceMappingURL=pool.js.map
package/dist/pool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAoC,MAAM,IAAI,CAAC;AAO5D;;GAEG;AACH,SAAS,gBAAgB;IACvB,+DAA+D;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACzE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,uDAAuD;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACpF,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB;IAC7B,IACE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACrC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa;QAC1B,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;QACzB,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAe;IAC7B,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,WAAW;IAC9C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,EAAE,CAAC;IACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;IACnC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;IAC/B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAEvC,wEAAwE;IACxE,GAAG,EAAE,gBAAgB,EAAE;IAEvB,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E,wCAAwC;IACxC,uCAAuC;IACvC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAAE,EAAE,CAAC;IAExD,wCAAwC;IACxC,yBAAyB;IACzB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;IAEvD,6DAA6D;IAC7D,wCAAwC;IACxC,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,EAAE,EAAE,CAAC,EAAE,aAAa;IAE5F,6CAA6C;IAC7C,iCAAiC;IACjC,uBAAuB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY;IAEtG,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E,0DAA0D;IAC1D,8CAA8C;IAC9C,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,OAAO,EAAE,EAAE,CAAC,EAAE,aAAa;IAEjG,uDAAuD;IACvD,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,EAAE,EAAE,CAAC,EAAE,aAAa;IAEzF,8EAA8E;IAC9E,uBAAuB;IACvB,8EAA8E;IAE9E,oDAAoD;IACpD,0CAA0C;IAC1C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IAEtD,+CAA+C;IAC/C,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU;CACrD,CAAC;AAEF;;;;;GAKG;AACH,IAAI,KAAK,GAAgB,IAAI,CAAC;AAE9B,MAAM,UAAU,OAAO;IACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,sBAAsB,EAAE,CAAC;QACzB,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjC,gBAAgB,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,EAAU,EAAE;IACxC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;CACF,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,WAAW,CAAC,GAAU;IAC7B,MAAM,CAAC,KAAK,CACV,0CAA0C,EAC1C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAkB;IACvC,MAAM,GAAG,GAAI,MAA4B,CAAC,SAAS,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,yCAAyC,GAAG,GAAG,CAAC,CAAC;IAE7D,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,eAAe;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAE5C,6DAA6D;YAC7D,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,UAAU,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC,CAAC;YAE3F,0BAA0B;YAC1B,MAAM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,oCAAoC,EACpC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,MAAkB;IACvC,MAAM,GAAG,GAAI,MAA4B,CAAC,SAAS,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB;IACtC,MAAM,GAAG,GAAI,MAA4B,CAAC,SAAS,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,iCAAiC,GAAG,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,6BAA6B,EAC7B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,SAAS,gBAAgB;IACvB,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,mBAAmB;IAQvC,IAAI,CAAC;QACH,kBAAkB;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,iBAAiB;QACjB,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK;SACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,8BAA8B,EAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,UAAU,YAAY;IAQ1B,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB;QAC7C,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe;QAC1C,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,mBAAmB;QACpD,cAAc,EAAE,UAAU,CAAC,GAAG;QAC9B,cAAc,EAAE,UAAU,CAAC,GAAG;QAC9B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG;KACjF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB,KAAK;IAC5D,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACjC,GAAG,KAAK;YACR,kBAAkB,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACtD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,oCAAoC;QACpC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE;gBAC3D,YAAY,EAAE,KAAK,CAAC,YAAY;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAExC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,CAAC;QACH,8BAA8B;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,aAAa,iBAAiB,uBAAuB,CAAC,CAAC;QAEnE,sBAAsB;QACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,uBAAuB,EACvB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QAEF,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ export declare function getBoardBySlug(db: Database, slug: string, tenantId?: st
45
45
  * Create a board with default kanban columns.
46
46
  *
47
47
  * NOTE: NeonDB HTTP driver does not support transactions. The board insert and
48
- * column insert below are not atomica failure after the board is created but
48
+ * column insert below are not atomic - a failure after the board is created but
49
49
  * before columns are inserted will leave a board without its default columns.
50
50
  */
51
51
  export declare function createBoard(db: Database, data: {
@@ -35,7 +35,7 @@ export async function getBoardBySlug(db, slug, tenantId) {
35
35
  * Create a board with default kanban columns.
36
36
  *
37
37
  * NOTE: NeonDB HTTP driver does not support transactions. The board insert and
38
- * column insert below are not atomica failure after the board is created but
38
+ * column insert below are not atomic - a failure after the board is created but
39
39
  * before columns are inserted will leave a board without its default columns.
40
40
  */
41
41
  export async function createBoard(db, data) {
@@ -61,7 +61,7 @@ export async function getMessages(db, conversationId, options = {}) {
61
61
  .offset(offset);
62
62
  }
63
63
  // NOTE: NeonDB HTTP driver does not support transactions. The message insert
64
- // and conversation timestamp update below are not atomica failure between
64
+ // and conversation timestamp update below are not atomic - a failure between
65
65
  // them can leave the conversation's updatedAt stale.
66
66
  export async function addMessage(db, data) {
67
67
  const result = await db
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/queries/conversations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/queries/conversations.ts"],"names":[],"mappings":"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"}