@revealui/db 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) 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 +82 -0
  4. package/dist/cleanup/cross-db-cleanup.d.ts.map +1 -0
  5. package/dist/cleanup/cross-db-cleanup.js +189 -0
  6. package/dist/cleanup/cross-db-cleanup.js.map +1 -0
  7. package/dist/cleanup/index.d.ts +11 -0
  8. package/dist/cleanup/index.d.ts.map +1 -0
  9. package/dist/cleanup/index.js +11 -0
  10. package/dist/cleanup/index.js.map +1 -0
  11. package/dist/cleanup/rag-site-cleanup.d.ts +58 -0
  12. package/dist/cleanup/rag-site-cleanup.d.ts.map +1 -0
  13. package/dist/cleanup/rag-site-cleanup.js +68 -0
  14. package/dist/cleanup/rag-site-cleanup.js.map +1 -0
  15. package/dist/cleanup/stale-tokens.d.ts +37 -0
  16. package/dist/cleanup/stale-tokens.d.ts.map +1 -0
  17. package/dist/cleanup/stale-tokens.js +113 -0
  18. package/dist/cleanup/stale-tokens.js.map +1 -0
  19. package/dist/client/index.d.ts +14 -1
  20. package/dist/client/index.d.ts.map +1 -1
  21. package/dist/client/index.js +49 -13
  22. package/dist/client/index.js.map +1 -1
  23. package/dist/client/types.d.ts.map +1 -1
  24. package/dist/crypto.js.map +1 -1
  25. package/dist/index.d.ts +2 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/log-transport.d.ts.map +1 -1
  30. package/dist/log-transport.js +3 -1
  31. package/dist/log-transport.js.map +1 -1
  32. package/dist/pool.d.ts +2 -1
  33. package/dist/pool.d.ts.map +1 -1
  34. package/dist/pool.js +56 -22
  35. package/dist/pool.js.map +1 -1
  36. package/dist/queries/boards.d.ts +13 -1
  37. package/dist/queries/boards.d.ts.map +1 -1
  38. package/dist/queries/boards.js +5 -2
  39. package/dist/queries/boards.js.map +1 -1
  40. package/dist/queries/code-provenance.d.ts.map +1 -1
  41. package/dist/queries/code-provenance.js.map +1 -1
  42. package/dist/queries/conversations.d.ts +29 -0
  43. package/dist/queries/conversations.d.ts.map +1 -0
  44. package/dist/queries/conversations.js +80 -0
  45. package/dist/queries/conversations.js.map +1 -0
  46. package/dist/queries/media.d.ts +9 -0
  47. package/dist/queries/media.d.ts.map +1 -1
  48. package/dist/queries/media.js +23 -13
  49. package/dist/queries/media.js.map +1 -1
  50. package/dist/queries/orders.d.ts +87 -0
  51. package/dist/queries/orders.d.ts.map +1 -0
  52. package/dist/queries/orders.js +36 -0
  53. package/dist/queries/orders.js.map +1 -0
  54. package/dist/queries/pages.d.ts +10 -0
  55. package/dist/queries/pages.d.ts.map +1 -1
  56. package/dist/queries/pages.js +19 -5
  57. package/dist/queries/pages.js.map +1 -1
  58. package/dist/queries/posts.d.ts +41 -0
  59. package/dist/queries/posts.d.ts.map +1 -1
  60. package/dist/queries/posts.js +38 -5
  61. package/dist/queries/posts.js.map +1 -1
  62. package/dist/queries/products.d.ts +102 -0
  63. package/dist/queries/products.d.ts.map +1 -0
  64. package/dist/queries/products.js +55 -0
  65. package/dist/queries/products.js.map +1 -0
  66. package/dist/queries/sites.d.ts +36 -1
  67. package/dist/queries/sites.d.ts.map +1 -1
  68. package/dist/queries/sites.js +45 -5
  69. package/dist/queries/sites.js.map +1 -1
  70. package/dist/queries/ticket-comments.d.ts +34 -1
  71. package/dist/queries/ticket-comments.d.ts.map +1 -1
  72. package/dist/queries/ticket-comments.js +32 -1
  73. package/dist/queries/ticket-comments.js.map +1 -1
  74. package/dist/queries/ticket-labels.d.ts +10 -0
  75. package/dist/queries/ticket-labels.d.ts.map +1 -1
  76. package/dist/queries/ticket-labels.js +4 -0
  77. package/dist/queries/ticket-labels.js.map +1 -1
  78. package/dist/queries/tickets.d.ts +42 -1
  79. package/dist/queries/tickets.d.ts.map +1 -1
  80. package/dist/queries/tickets.js +28 -7
  81. package/dist/queries/tickets.js.map +1 -1
  82. package/dist/queries/users.d.ts +221 -0
  83. package/dist/queries/users.d.ts.map +1 -0
  84. package/dist/queries/users.js +94 -0
  85. package/dist/queries/users.js.map +1 -0
  86. package/dist/schema/accounts.d.ts +962 -0
  87. package/dist/schema/accounts.d.ts.map +1 -0
  88. package/dist/schema/accounts.js +117 -0
  89. package/dist/schema/accounts.js.map +1 -0
  90. package/dist/schema/agents.d.ts +216 -1
  91. package/dist/schema/agents.d.ts.map +1 -1
  92. package/dist/schema/agents.js +61 -6
  93. package/dist/schema/agents.js.map +1 -1
  94. package/dist/schema/api-keys.d.ts +17 -0
  95. package/dist/schema/api-keys.d.ts.map +1 -1
  96. package/dist/schema/api-keys.js +3 -0
  97. package/dist/schema/api-keys.js.map +1 -1
  98. package/dist/schema/app-logs.d.ts.map +1 -1
  99. package/dist/schema/app-logs.js.map +1 -1
  100. package/dist/schema/audit-log.d.ts.map +1 -1
  101. package/dist/schema/audit-log.js.map +1 -1
  102. package/dist/schema/circuit-breaker.d.ts +139 -0
  103. package/dist/schema/circuit-breaker.d.ts.map +1 -0
  104. package/dist/schema/circuit-breaker.js +28 -0
  105. package/dist/schema/circuit-breaker.js.map +1 -0
  106. package/dist/schema/cms.d.ts +68 -0
  107. package/dist/schema/cms.d.ts.map +1 -1
  108. package/dist/schema/cms.js +18 -4
  109. package/dist/schema/cms.js.map +1 -1
  110. package/dist/schema/code-provenance.d.ts.map +1 -1
  111. package/dist/schema/code-provenance.js.map +1 -1
  112. package/dist/schema/collab-edits.d.ts.map +1 -1
  113. package/dist/schema/collab-edits.js +2 -2
  114. package/dist/schema/collab-edits.js.map +1 -1
  115. package/dist/schema/coordination.d.ts +967 -0
  116. package/dist/schema/coordination.d.ts.map +1 -0
  117. package/dist/schema/coordination.js +109 -0
  118. package/dist/schema/coordination.js.map +1 -0
  119. package/dist/schema/crdt-operations.d.ts.map +1 -1
  120. package/dist/schema/crdt-operations.js.map +1 -1
  121. package/dist/schema/error-events.d.ts.map +1 -1
  122. package/dist/schema/error-events.js.map +1 -1
  123. package/dist/schema/gdpr.d.ts +529 -0
  124. package/dist/schema/gdpr.d.ts.map +1 -0
  125. package/dist/schema/gdpr.js +93 -0
  126. package/dist/schema/gdpr.js.map +1 -0
  127. package/dist/schema/index.d.ts +44 -1
  128. package/dist/schema/index.d.ts.map +1 -1
  129. package/dist/schema/index.js +93 -0
  130. package/dist/schema/index.js.map +1 -1
  131. package/dist/schema/jobs.d.ts +242 -0
  132. package/dist/schema/jobs.d.ts.map +1 -0
  133. package/dist/schema/jobs.js +48 -0
  134. package/dist/schema/jobs.js.map +1 -0
  135. package/dist/schema/licenses.d.ts +68 -0
  136. package/dist/schema/licenses.d.ts.map +1 -1
  137. package/dist/schema/licenses.js +11 -2
  138. package/dist/schema/licenses.js.map +1 -1
  139. package/dist/schema/magic-links.d.ts +136 -0
  140. package/dist/schema/magic-links.d.ts.map +1 -0
  141. package/dist/schema/magic-links.js +32 -0
  142. package/dist/schema/magic-links.js.map +1 -0
  143. package/dist/schema/marketplace.d.ts +496 -0
  144. package/dist/schema/marketplace.d.ts.map +1 -0
  145. package/dist/schema/marketplace.js +114 -0
  146. package/dist/schema/marketplace.js.map +1 -0
  147. package/dist/schema/node-ids.d.ts.map +1 -1
  148. package/dist/schema/node-ids.js.map +1 -1
  149. package/dist/schema/oauth-accounts.d.ts +34 -0
  150. package/dist/schema/oauth-accounts.d.ts.map +1 -1
  151. package/dist/schema/oauth-accounts.js +5 -0
  152. package/dist/schema/oauth-accounts.js.map +1 -1
  153. package/dist/schema/pages.d.ts +34 -0
  154. package/dist/schema/pages.d.ts.map +1 -1
  155. package/dist/schema/pages.js +14 -4
  156. package/dist/schema/pages.js.map +1 -1
  157. package/dist/schema/passkeys.d.ts +208 -0
  158. package/dist/schema/passkeys.d.ts.map +1 -0
  159. package/dist/schema/passkeys.js +48 -0
  160. package/dist/schema/passkeys.js.map +1 -0
  161. package/dist/schema/password-reset-tokens.d.ts.map +1 -1
  162. package/dist/schema/password-reset-tokens.js +5 -2
  163. package/dist/schema/password-reset-tokens.js.map +1 -1
  164. package/dist/schema/products.d.ts +519 -0
  165. package/dist/schema/products.d.ts.map +1 -0
  166. package/dist/schema/products.js +101 -0
  167. package/dist/schema/products.js.map +1 -0
  168. package/dist/schema/rag.d.ts.map +1 -1
  169. package/dist/schema/rag.js +5 -2
  170. package/dist/schema/rag.js.map +1 -1
  171. package/dist/schema/rate-limits.d.ts.map +1 -1
  172. package/dist/schema/rate-limits.js +5 -2
  173. package/dist/schema/rate-limits.js.map +1 -1
  174. package/dist/schema/rest.d.ts +12 -2
  175. package/dist/schema/rest.d.ts.map +1 -1
  176. package/dist/schema/rest.js +12 -2
  177. package/dist/schema/rest.js.map +1 -1
  178. package/dist/schema/revealcoin.d.ts +267 -0
  179. package/dist/schema/revealcoin.d.ts.map +1 -0
  180. package/dist/schema/revealcoin.js +54 -0
  181. package/dist/schema/revealcoin.js.map +1 -0
  182. package/dist/schema/sites.d.ts +34 -0
  183. package/dist/schema/sites.d.ts.map +1 -1
  184. package/dist/schema/sites.js +15 -3
  185. package/dist/schema/sites.js.map +1 -1
  186. package/dist/schema/tenants.d.ts +188 -0
  187. package/dist/schema/tenants.d.ts.map +1 -0
  188. package/dist/schema/tenants.js +14 -0
  189. package/dist/schema/tenants.js.map +1 -0
  190. package/dist/schema/tickets.d.ts.map +1 -1
  191. package/dist/schema/tickets.js +17 -5
  192. package/dist/schema/tickets.js.map +1 -1
  193. package/dist/schema/users.d.ts +174 -0
  194. package/dist/schema/users.d.ts.map +1 -1
  195. package/dist/schema/users.js +31 -3
  196. package/dist/schema/users.js.map +1 -1
  197. package/dist/schema/vector.d.ts +10 -3
  198. package/dist/schema/vector.d.ts.map +1 -1
  199. package/dist/schema/vector.js +11 -4
  200. package/dist/schema/vector.js.map +1 -1
  201. package/dist/schema/waitlist.d.ts.map +1 -1
  202. package/dist/schema/waitlist.js.map +1 -1
  203. package/dist/schema/webhook-events.d.ts.map +1 -1
  204. package/dist/schema/webhook-events.js.map +1 -1
  205. package/dist/schema/yjs-documents.d.ts.map +1 -1
  206. package/dist/schema/yjs-documents.js.map +1 -1
  207. package/dist/scripts/cleanup-expired.d.ts +12 -0
  208. package/dist/scripts/cleanup-expired.d.ts.map +1 -0
  209. package/dist/scripts/cleanup-expired.js +50 -0
  210. package/dist/scripts/cleanup-expired.js.map +1 -0
  211. package/dist/types/database.d.ts +387 -2
  212. package/dist/types/database.d.ts.map +1 -1
  213. package/dist/types/database.js +80 -1
  214. package/dist/types/database.js.map +1 -1
  215. package/dist/types/discover.d.ts +2 -2
  216. package/dist/types/discover.d.ts.map +1 -1
  217. package/dist/types/discover.js +16 -16
  218. package/dist/types/discover.js.map +1 -1
  219. package/dist/types/extract-relationships.d.ts.map +1 -1
  220. package/dist/types/extract-relationships.js.map +1 -1
  221. package/dist/types/generate-contracts.js +1 -1
  222. package/dist/types/generate-contracts.js.map +1 -1
  223. package/dist/types/generate-zod-schemas.js.map +1 -1
  224. package/dist/types/generate.js.map +1 -1
  225. package/dist/types/index.d.ts.map +1 -1
  226. package/dist/types/introspect.d.ts.map +1 -1
  227. package/dist/types/introspect.js +0 -1
  228. package/dist/types/introspect.js.map +1 -1
  229. package/dist/types/stripe-schema.d.ts.map +1 -1
  230. package/dist/types/stripe-schema.js +7 -2
  231. package/dist/types/stripe-schema.js.map +1 -1
  232. package/dist/utils/soft-delete.d.ts +45 -0
  233. package/dist/utils/soft-delete.d.ts.map +1 -0
  234. package/dist/utils/soft-delete.js +45 -0
  235. package/dist/utils/soft-delete.js.map +1 -0
  236. package/dist/validation/cross-db.d.ts +60 -0
  237. package/dist/validation/cross-db.d.ts.map +1 -0
  238. package/dist/validation/cross-db.js +146 -0
  239. package/dist/validation/cross-db.js.map +1 -0
  240. package/package.json +60 -12
  241. package/dist/queries/optimized-queries.d.ts +0 -89
  242. package/dist/queries/optimized-queries.d.ts.map +0 -1
  243. package/dist/queries/optimized-queries.js +0 -371
  244. package/dist/queries/optimized-queries.js.map +0 -1
  245. package/dist/queries/todos.d.ts +0 -37
  246. package/dist/queries/todos.d.ts.map +0 -1
  247. package/dist/queries/todos.js +0 -37
  248. package/dist/queries/todos.js.map +0 -1
  249. package/dist/schema/query.d.ts +0 -11
  250. package/dist/schema/query.d.ts.map +0 -1
  251. package/dist/schema/query.js +0 -11
  252. package/dist/schema/query.js.map +0 -1
  253. package/dist/schema/todos.d.ts +0 -98
  254. package/dist/schema/todos.d.ts.map +0 -1
  255. package/dist/schema/todos.js +0 -12
  256. package/dist/schema/todos.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../../src/schema/rate-limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAarB,CAAA;AAMF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAA;AAMF,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAA;AACtD,MAAM,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,YAAY,CAAA;AACzD,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA"}
1
+ {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../../src/schema/rate-limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBtB,CAAC;AAMF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBzB,CAAC;AAMH,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Tables for storing rate limiting and brute force protection data.
5
5
  * Used by the storage abstraction for distributed rate limiting.
6
6
  */
7
- import { integer, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
7
+ import { index, integer, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
8
8
  // =============================================================================
9
9
  // Rate Limits Table
10
10
  // =============================================================================
@@ -18,7 +18,10 @@ export const rateLimits = pgTable('rate_limits', {
18
18
  // Timestamps
19
19
  createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
20
20
  updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
21
- });
21
+ }, (table) => [
22
+ // R5-H6: Index for cleanup queries that scan by expiry
23
+ index('rate_limits_reset_at_idx').on(table.resetAt),
24
+ ]);
22
25
  // =============================================================================
23
26
  // Failed Attempts Table
24
27
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limits.js","sourceRoot":"","sources":["../../src/schema/rate-limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEvE,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE;IAC/C,0DAA0D;IAC1D,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;IAE7B,mDAAmD;IACnD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAE9B,sDAAsD;IACtD,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IAEhE,aAAa;IACb,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CAClF,CAAC,CAAA;AAEF,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE;IACvD,8BAA8B;IAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE;IAEjC,uBAAuB;IACvB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5C,4BAA4B;IAC5B,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAE1D,yBAAyB;IACzB,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IAExE,aAAa;IACb,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CAClF,CAAC,CAAA"}
1
+ {"version":3,"file":"rate-limits.js","sourceRoot":"","sources":["../../src/schema/rate-limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/E,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,aAAa,EACb;IACE,0DAA0D;IAC1D,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;IAE7B,mDAAmD;IACnD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAE9B,sDAAsD;IACtD,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IAEhE,aAAa;IACb,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CAClF,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,uDAAuD;IACvD,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;CACpD,CACF,CAAC;AAEF,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE;IACvD,8BAA8B;IAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE;IAEjC,uBAAuB;IACvB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5C,4BAA4B;IAC5B,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAE1D,yBAAyB;IACzB,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IAExE,aAAa;IACb,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CAClF,CAAC,CAAC"}
@@ -8,23 +8,33 @@
8
8
  * - Media, posts, metadata
9
9
  * - Agent contexts, conversations, actions (but NOT agent_memories)
10
10
  */
11
- export { type AgentAction, type AgentContext, agentActions, agentContexts, type Conversation, conversations, messages, type NewAgentAction, type NewAgentContext, type NewConversation, type NewRegisteredAgent, type RegisteredAgent, registeredAgents, syncMetadata, userDevices, } from './agents.js';
11
+ export * from './accounts.js';
12
+ export { type AgentAction, type AgentContext, type AgentTaskUsage, type AiMemorySession, agentActions, agentContexts, agentTaskUsage, aiMemorySessions, type Conversation, conversations, messages, type NewAgentAction, type NewAgentContext, type NewAgentTaskUsage, type NewAiMemorySession, type NewConversation, type NewRegisteredAgent, type RegisteredAgent, registeredAgents, syncMetadata, userDevices, } from './agents.js';
12
13
  export * from './api-keys.js';
13
14
  export * from './app-logs.js';
14
15
  export * from './audit-log.js';
16
+ export * from './circuit-breaker.js';
15
17
  export * from './cms.js';
16
18
  export * from './code-provenance.js';
17
19
  export * from './collab-edits.js';
20
+ export * from './coordination.js';
18
21
  export * from './crdt-operations.js';
19
22
  export * from './error-events.js';
23
+ export * from './gdpr.js';
24
+ export * from './jobs.js';
20
25
  export * from './licenses.js';
26
+ export * from './magic-links.js';
27
+ export * from './marketplace.js';
21
28
  export * from './node-ids.js';
22
29
  export * from './oauth-accounts.js';
23
30
  export * from './pages.js';
31
+ export * from './passkeys.js';
24
32
  export * from './password-reset-tokens.js';
25
- export * from './query.js';
33
+ export * from './products.js';
26
34
  export * from './rate-limits.js';
35
+ export * from './revealcoin.js';
27
36
  export * from './sites.js';
37
+ export * from './tenants.js';
28
38
  export * from './tickets.js';
29
39
  export * from './users.js';
30
40
  export * from './waitlist.js';
@@ -1 +1 @@
1
- {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/schema/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,YAAY,EACZ,aAAa,EACb,KAAK,YAAY,EACjB,aAAa,EACb,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAE9B,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/schema/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,KAAK,YAAY,EACjB,aAAa,EACb,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -10,24 +10,34 @@
10
10
  */
11
11
  // Export agent schemas except agentMemories
12
12
  // Note: AgentMemory types are exported from './vector.js' instead
13
- export { agentActions, agentContexts, conversations, messages, registeredAgents, syncMetadata, userDevices, } from './agents.js';
13
+ export * from './accounts.js';
14
+ export { agentActions, agentContexts, agentTaskUsage, aiMemorySessions, conversations, messages, registeredAgents, syncMetadata, userDevices, } from './agents.js';
14
15
  export * from './api-keys.js';
15
16
  export * from './app-logs.js';
16
17
  export * from './audit-log.js';
18
+ export * from './circuit-breaker.js';
17
19
  // Export all REST schemas
18
20
  export * from './cms.js';
19
21
  export * from './code-provenance.js';
20
22
  export * from './collab-edits.js';
23
+ export * from './coordination.js';
21
24
  export * from './crdt-operations.js';
22
25
  export * from './error-events.js';
26
+ export * from './gdpr.js';
27
+ export * from './jobs.js';
23
28
  export * from './licenses.js';
29
+ export * from './magic-links.js';
30
+ export * from './marketplace.js';
24
31
  export * from './node-ids.js';
25
32
  export * from './oauth-accounts.js';
26
33
  export * from './pages.js';
34
+ export * from './passkeys.js';
27
35
  export * from './password-reset-tokens.js';
28
- export * from './query.js';
36
+ export * from './products.js';
29
37
  export * from './rate-limits.js';
38
+ export * from './revealcoin.js';
30
39
  export * from './sites.js';
40
+ export * from './tenants.js';
31
41
  export * from './tickets.js';
32
42
  export * from './users.js';
33
43
  export * from './waitlist.js';
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/schema/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,kEAAkE;AAClE,OAAO,EAGL,YAAY,EACZ,aAAa,EAEb,aAAa,EACb,QAAQ,EAMR,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAElC,yEAAyE;AACzE,mFAAmF;AACnF,2DAA2D"}
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/schema/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,kEAAkE;AAClE,cAAc,eAAe,CAAC;AAC9B,OAAO,EAKL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,EAEhB,aAAa,EACb,QAAQ,EAQR,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AAEnC,yEAAyE;AACzE,mFAAmF;AACnF,2DAA2D"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * RevealCoin Payment Tables
3
+ *
4
+ * Tracks verified RVUI payments and price snapshots for anti-manipulation
5
+ * safeguards (TWAP pricing, rate limiting, duplicate tx rejection, discount caps).
6
+ */
7
+ export declare const revealcoinPayments: import("drizzle-orm/pg-core").PgTableWithColumns<{
8
+ name: "revealcoin_payments";
9
+ schema: undefined;
10
+ columns: {
11
+ id: import("drizzle-orm/pg-core").PgColumn<{
12
+ name: "id";
13
+ tableName: "revealcoin_payments";
14
+ dataType: "string";
15
+ columnType: "PgText";
16
+ data: string;
17
+ driverParam: string;
18
+ notNull: true;
19
+ hasDefault: false;
20
+ isPrimaryKey: true;
21
+ isAutoincrement: false;
22
+ hasRuntimeDefault: false;
23
+ enumValues: [string, ...string[]];
24
+ baseColumn: never;
25
+ identity: undefined;
26
+ generated: undefined;
27
+ }, {}, {}>;
28
+ txSignature: import("drizzle-orm/pg-core").PgColumn<{
29
+ name: "tx_signature";
30
+ tableName: "revealcoin_payments";
31
+ dataType: "string";
32
+ columnType: "PgText";
33
+ data: string;
34
+ driverParam: string;
35
+ notNull: true;
36
+ hasDefault: false;
37
+ isPrimaryKey: false;
38
+ isAutoincrement: false;
39
+ hasRuntimeDefault: false;
40
+ enumValues: [string, ...string[]];
41
+ baseColumn: never;
42
+ identity: undefined;
43
+ generated: undefined;
44
+ }, {}, {}>;
45
+ walletAddress: import("drizzle-orm/pg-core").PgColumn<{
46
+ name: "wallet_address";
47
+ tableName: "revealcoin_payments";
48
+ dataType: "string";
49
+ columnType: "PgText";
50
+ data: string;
51
+ driverParam: string;
52
+ notNull: true;
53
+ hasDefault: false;
54
+ isPrimaryKey: false;
55
+ isAutoincrement: false;
56
+ hasRuntimeDefault: false;
57
+ enumValues: [string, ...string[]];
58
+ baseColumn: never;
59
+ identity: undefined;
60
+ generated: undefined;
61
+ }, {}, {}>;
62
+ userId: import("drizzle-orm/pg-core").PgColumn<{
63
+ name: "user_id";
64
+ tableName: "revealcoin_payments";
65
+ dataType: "string";
66
+ columnType: "PgText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {}>;
79
+ amountRvui: import("drizzle-orm/pg-core").PgColumn<{
80
+ name: "amount_rvc";
81
+ tableName: "revealcoin_payments";
82
+ dataType: "string";
83
+ columnType: "PgText";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: true;
87
+ hasDefault: false;
88
+ isPrimaryKey: false;
89
+ isAutoincrement: false;
90
+ hasRuntimeDefault: false;
91
+ enumValues: [string, ...string[]];
92
+ baseColumn: never;
93
+ identity: undefined;
94
+ generated: undefined;
95
+ }, {}, {}>;
96
+ amountUsd: import("drizzle-orm/pg-core").PgColumn<{
97
+ name: "amount_usd";
98
+ tableName: "revealcoin_payments";
99
+ dataType: "string";
100
+ columnType: "PgNumeric";
101
+ data: string;
102
+ driverParam: string;
103
+ notNull: true;
104
+ hasDefault: false;
105
+ isPrimaryKey: false;
106
+ isAutoincrement: false;
107
+ hasRuntimeDefault: false;
108
+ enumValues: undefined;
109
+ baseColumn: never;
110
+ identity: undefined;
111
+ generated: undefined;
112
+ }, {}, {}>;
113
+ discountUsd: import("drizzle-orm/pg-core").PgColumn<{
114
+ name: "discount_usd";
115
+ tableName: "revealcoin_payments";
116
+ dataType: "string";
117
+ columnType: "PgNumeric";
118
+ data: string;
119
+ driverParam: string;
120
+ notNull: true;
121
+ hasDefault: true;
122
+ isPrimaryKey: false;
123
+ isAutoincrement: false;
124
+ hasRuntimeDefault: false;
125
+ enumValues: undefined;
126
+ baseColumn: never;
127
+ identity: undefined;
128
+ generated: undefined;
129
+ }, {}, {}>;
130
+ purpose: import("drizzle-orm/pg-core").PgColumn<{
131
+ name: "purpose";
132
+ tableName: "revealcoin_payments";
133
+ dataType: "string";
134
+ columnType: "PgText";
135
+ data: string;
136
+ driverParam: string;
137
+ notNull: true;
138
+ hasDefault: false;
139
+ isPrimaryKey: false;
140
+ isAutoincrement: false;
141
+ hasRuntimeDefault: false;
142
+ enumValues: [string, ...string[]];
143
+ baseColumn: never;
144
+ identity: undefined;
145
+ generated: undefined;
146
+ }, {}, {}>;
147
+ status: import("drizzle-orm/pg-core").PgColumn<{
148
+ name: "status";
149
+ tableName: "revealcoin_payments";
150
+ dataType: "string";
151
+ columnType: "PgText";
152
+ data: string;
153
+ driverParam: string;
154
+ notNull: true;
155
+ hasDefault: true;
156
+ isPrimaryKey: false;
157
+ isAutoincrement: false;
158
+ hasRuntimeDefault: false;
159
+ enumValues: [string, ...string[]];
160
+ baseColumn: never;
161
+ identity: undefined;
162
+ generated: undefined;
163
+ }, {}, {}>;
164
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
165
+ name: "created_at";
166
+ tableName: "revealcoin_payments";
167
+ dataType: "date";
168
+ columnType: "PgTimestamp";
169
+ data: Date;
170
+ driverParam: string;
171
+ notNull: true;
172
+ hasDefault: true;
173
+ isPrimaryKey: false;
174
+ isAutoincrement: false;
175
+ hasRuntimeDefault: false;
176
+ enumValues: undefined;
177
+ baseColumn: never;
178
+ identity: undefined;
179
+ generated: undefined;
180
+ }, {}, {}>;
181
+ };
182
+ dialect: "pg";
183
+ }>;
184
+ /** Row type for select queries. */
185
+ export type RevealcoinPaymentRow = typeof revealcoinPayments.$inferSelect;
186
+ /** Insert type for new records. */
187
+ export type RevealcoinPaymentInsert = typeof revealcoinPayments.$inferInsert;
188
+ export declare const revealcoinPriceSnapshots: import("drizzle-orm/pg-core").PgTableWithColumns<{
189
+ name: "revealcoin_price_snapshots";
190
+ schema: undefined;
191
+ columns: {
192
+ id: import("drizzle-orm/pg-core").PgColumn<{
193
+ name: "id";
194
+ tableName: "revealcoin_price_snapshots";
195
+ dataType: "string";
196
+ columnType: "PgText";
197
+ data: string;
198
+ driverParam: string;
199
+ notNull: true;
200
+ hasDefault: false;
201
+ isPrimaryKey: true;
202
+ isAutoincrement: false;
203
+ hasRuntimeDefault: false;
204
+ enumValues: [string, ...string[]];
205
+ baseColumn: never;
206
+ identity: undefined;
207
+ generated: undefined;
208
+ }, {}, {}>;
209
+ priceUsd: import("drizzle-orm/pg-core").PgColumn<{
210
+ name: "price_usd";
211
+ tableName: "revealcoin_price_snapshots";
212
+ dataType: "string";
213
+ columnType: "PgNumeric";
214
+ data: string;
215
+ driverParam: string;
216
+ notNull: true;
217
+ hasDefault: false;
218
+ isPrimaryKey: false;
219
+ isAutoincrement: false;
220
+ hasRuntimeDefault: false;
221
+ enumValues: undefined;
222
+ baseColumn: never;
223
+ identity: undefined;
224
+ generated: undefined;
225
+ }, {}, {}>;
226
+ source: import("drizzle-orm/pg-core").PgColumn<{
227
+ name: "source";
228
+ tableName: "revealcoin_price_snapshots";
229
+ dataType: "string";
230
+ columnType: "PgText";
231
+ data: string;
232
+ driverParam: string;
233
+ notNull: true;
234
+ hasDefault: false;
235
+ isPrimaryKey: false;
236
+ isAutoincrement: false;
237
+ hasRuntimeDefault: false;
238
+ enumValues: [string, ...string[]];
239
+ baseColumn: never;
240
+ identity: undefined;
241
+ generated: undefined;
242
+ }, {}, {}>;
243
+ recordedAt: import("drizzle-orm/pg-core").PgColumn<{
244
+ name: "recorded_at";
245
+ tableName: "revealcoin_price_snapshots";
246
+ dataType: "date";
247
+ columnType: "PgTimestamp";
248
+ data: Date;
249
+ driverParam: string;
250
+ notNull: true;
251
+ hasDefault: true;
252
+ isPrimaryKey: false;
253
+ isAutoincrement: false;
254
+ hasRuntimeDefault: false;
255
+ enumValues: undefined;
256
+ baseColumn: never;
257
+ identity: undefined;
258
+ generated: undefined;
259
+ }, {}, {}>;
260
+ };
261
+ dialect: "pg";
262
+ }>;
263
+ /** Row type for select queries. */
264
+ export type RevealcoinPriceSnapshotRow = typeof revealcoinPriceSnapshots.$inferSelect;
265
+ /** Insert type for new records. */
266
+ export type RevealcoinPriceSnapshotInsert = typeof revealcoinPriceSnapshots.$inferInsert;
267
+ //# sourceMappingURL=revealcoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revealcoin.d.ts","sourceRoot":"","sources":["../../src/schema/revealcoin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC9B,CAAC;AAEF,mCAAmC;AACnC,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AAE1E,mCAAmC;AACnC,MAAM,MAAM,uBAAuB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AAM7E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBpC,CAAC;AAEF,mCAAmC;AACnC,MAAM,MAAM,0BAA0B,GAAG,OAAO,wBAAwB,CAAC,YAAY,CAAC;AAEtF,mCAAmC;AACnC,MAAM,MAAM,6BAA6B,GAAG,OAAO,wBAAwB,CAAC,YAAY,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * RevealCoin Payment Tables
3
+ *
4
+ * Tracks verified RVUI payments and price snapshots for anti-manipulation
5
+ * safeguards (TWAP pricing, rate limiting, duplicate tx rejection, discount caps).
6
+ */
7
+ import { index, numeric, pgTable, text, timestamp, uniqueIndex } from 'drizzle-orm/pg-core';
8
+ import { users } from './users.js';
9
+ // =============================================================================
10
+ // RevealCoin Payments
11
+ // =============================================================================
12
+ export const revealcoinPayments = pgTable('revealcoin_payments', {
13
+ /** Unique payment ID (UUID). */
14
+ id: text('id').primaryKey(),
15
+ /** Solana transaction signature (base58). Unique — prevents replay. */
16
+ txSignature: text('tx_signature').notNull(),
17
+ /** Payer's Solana wallet address (base58 public key). */
18
+ walletAddress: text('wallet_address').notNull(),
19
+ /** RevealUI user who initiated the payment. */
20
+ userId: text('user_id')
21
+ .notNull()
22
+ .references(() => users.id, { onDelete: 'cascade' }),
23
+ /** RVUI amount transferred (raw token units as string for precision). */
24
+ amountRvui: text('amount_rvc').notNull(),
25
+ /** USD equivalent at time of payment (TWAP-based). */
26
+ amountUsd: numeric('amount_usd', { precision: 12, scale: 4 }).notNull(),
27
+ /** USD discount applied (difference vs fiat price). */
28
+ discountUsd: numeric('discount_usd', { precision: 12, scale: 4 }).notNull().default('0'),
29
+ /** Payment purpose (e.g., 'subscription:pro', 'ai_credits', 'agent_task'). */
30
+ purpose: text('purpose').notNull(),
31
+ /** Payment verification status. */
32
+ status: text('status').notNull().default('verified'),
33
+ /** When the payment was recorded. */
34
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
35
+ }, (table) => [
36
+ uniqueIndex('revealcoin_payments_tx_sig_idx').on(table.txSignature),
37
+ index('revealcoin_payments_user_id_idx').on(table.userId),
38
+ index('revealcoin_payments_wallet_idx').on(table.walletAddress),
39
+ index('revealcoin_payments_created_at_idx').on(table.createdAt),
40
+ ]);
41
+ // =============================================================================
42
+ // Price Snapshots (for TWAP calculation)
43
+ // =============================================================================
44
+ export const revealcoinPriceSnapshots = pgTable('revealcoin_price_snapshots', {
45
+ /** Unique snapshot ID (UUID). */
46
+ id: text('id').primaryKey(),
47
+ /** RVUI price in USD at this point in time. */
48
+ priceUsd: numeric('price_usd', { precision: 18, scale: 8 }).notNull(),
49
+ /** Price data source (e.g., 'jupiter', 'raydium', 'manual'). */
50
+ source: text('source').notNull(),
51
+ /** When this price was recorded. */
52
+ recordedAt: timestamp('recorded_at', { withTimezone: true }).defaultNow().notNull(),
53
+ }, (table) => [index('revealcoin_price_snapshots_recorded_at_idx').on(table.recordedAt)]);
54
+ //# sourceMappingURL=revealcoin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revealcoin.js","sourceRoot":"","sources":["../../src/schema/revealcoin.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,23 @@ export declare const sites: import("drizzle-orm/pg-core").PgTableWithColumns<{
42
42
  identity: undefined;
43
43
  generated: undefined;
44
44
  }, {}, {}>;
45
+ version: import("drizzle-orm/pg-core").PgColumn<{
46
+ name: "version";
47
+ tableName: "sites";
48
+ dataType: "number";
49
+ columnType: "PgInteger";
50
+ data: number;
51
+ driverParam: string | number;
52
+ notNull: true;
53
+ hasDefault: true;
54
+ isPrimaryKey: false;
55
+ isAutoincrement: false;
56
+ hasRuntimeDefault: false;
57
+ enumValues: undefined;
58
+ baseColumn: never;
59
+ identity: undefined;
60
+ generated: undefined;
61
+ }, {}, {}>;
45
62
  ownerId: import("drizzle-orm/pg-core").PgColumn<{
46
63
  name: "owner_id";
47
64
  tableName: "sites";
@@ -246,6 +263,23 @@ export declare const sites: import("drizzle-orm/pg-core").PgTableWithColumns<{
246
263
  identity: undefined;
247
264
  generated: undefined;
248
265
  }, {}, {}>;
266
+ deletedAt: import("drizzle-orm/pg-core").PgColumn<{
267
+ name: "deleted_at";
268
+ tableName: "sites";
269
+ dataType: "date";
270
+ columnType: "PgTimestamp";
271
+ data: Date;
272
+ driverParam: string;
273
+ notNull: false;
274
+ hasDefault: false;
275
+ isPrimaryKey: false;
276
+ isAutoincrement: false;
277
+ hasRuntimeDefault: false;
278
+ enumValues: undefined;
279
+ baseColumn: never;
280
+ identity: undefined;
281
+ generated: undefined;
282
+ }, {}, {}>;
249
283
  };
250
284
  dialect: "pg";
251
285
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../src/schema/sites.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoChB,CAAA;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB5B,CAAA;AAMF,MAAM,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,YAAY,CAAA;AAC5C,MAAM,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAA;AAC/C,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA;AACpE,MAAM,MAAM,mBAAmB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA"}
1
+ {"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../src/schema/sites.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDjB,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB5B,CAAC;AAMH,MAAM,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC;AAC7C,MAAM,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC;AAChD,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAC"}
@@ -4,7 +4,8 @@
4
4
  * These tables store site configurations and collaborator relationships.
5
5
  * The schema structure mirrors the Zod schemas in @revealui/contracts/entities.
6
6
  */
7
- import { integer, jsonb, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
7
+ import { sql } from 'drizzle-orm';
8
+ import { index, integer, jsonb, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
8
9
  import { users } from './users.js';
9
10
  // =============================================================================
10
11
  // Sites Table
@@ -14,13 +15,15 @@ export const sites = pgTable('sites', {
14
15
  id: text('id').primaryKey(),
15
16
  // Schema versioning for migrations
16
17
  schemaVersion: text('schema_version').notNull().default('1'),
18
+ // Optimistic locking — incremented on each update, checked to detect concurrent edits
19
+ version: integer('version').notNull().default(1),
17
20
  // Ownership
18
21
  ownerId: text('owner_id')
19
22
  .notNull()
20
23
  .references(() => users.id, { onDelete: 'cascade' }),
21
24
  // Basic info
22
25
  name: text('name').notNull(),
23
- slug: text('slug').notNull(),
26
+ slug: text('slug').notNull().unique(),
24
27
  description: text('description'),
25
28
  // Status: draft, published, archived
26
29
  status: text('status').notNull().default('draft'),
@@ -36,7 +39,16 @@ export const sites = pgTable('sites', {
36
39
  createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
37
40
  updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
38
41
  publishedAt: timestamp('published_at', { withTimezone: true }),
39
- });
42
+ // Soft-delete: null = active, timestamp = when deleted
43
+ deletedAt: timestamp('deleted_at', { withTimezone: true }),
44
+ }, (table) => [
45
+ index('sites_deleted_at_idx').on(table.deletedAt),
46
+ index('sites_status_deleted_at_idx').on(table.status, table.deletedAt),
47
+ index('sites_active_slug_idx').on(table.slug).where(sql `deleted_at IS NULL`),
48
+ index('sites_active_owner_id_idx').on(table.ownerId).where(sql `deleted_at IS NULL`),
49
+ index('sites_active_status_idx').on(table.status).where(sql `deleted_at IS NULL`),
50
+ index('sites_owner_id_idx').on(table.ownerId),
51
+ ]);
40
52
  // =============================================================================
41
53
  // Site Collaborators Table (Many-to-Many: Sites <-> Users)
42
54
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"sites.js","sourceRoot":"","sources":["../../src/schema/sites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sites.js","sourceRoot":"","sources":["../../src/schema/sites.ts"],"names":[],"mappings":"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"}