@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":"licenses.js","sourceRoot":"","sources":["../../src/schema/licenses.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAC7B,UAAU,EACV;IACE,+BAA+B;IAC/B,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE3B,iCAAiC;IACjC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEtD,iCAAiC;IACjC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IAEzC,sCAAsC;IACtC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAE5B,yDAAyD;IACzD,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAEvC,yBAAyB;IACzB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IAEzC,qBAAqB;IACrB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAElD,mCAAmC;IACnC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IAEjF,wCAAwC;IACxC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IAEjF,8CAA8C;IAC9C,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;CAC3D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACtD,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9C,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7C,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;CAC/D,CACF,CAAA"}
1
+ {"version":3,"file":"licenses.js","sourceRoot":"","sources":["../../src/schema/licenses.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAC7B,UAAU,EACV;IACE,+BAA+B;IAC/B,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE3B,iCAAiC;IACjC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEtD,iCAAiC;IACjC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IAEzC,sCAAsC;IACtC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAE5B,yDAAyD;IACzD,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAEvC,yBAAyB;IACzB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;IAEzC,qBAAqB;IACrB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAElD,mCAAmC;IACnC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IAEjF,wCAAwC;IACxC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IAEjF,qEAAqE;IACrE,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAE1D,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAExD,4DAA4D;IAC5D,gBAAgB,EAAE,SAAS,CAAC,oBAAoB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAEzE,0EAA0E;IAC1E,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;CACxC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACtD,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9C,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7C,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;CAC/D,CACF,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Magic Links table
3
+ *
4
+ * Stores single-use, time-limited tokens for passwordless email authentication.
5
+ * Token values are stored as HMAC-SHA256 hashes with a per-token salt
6
+ * for protection against rainbow table attacks on DB breach.
7
+ */
8
+ export declare const magicLinks: import("drizzle-orm/pg-core").PgTableWithColumns<{
9
+ name: "magic_links";
10
+ schema: undefined;
11
+ columns: {
12
+ id: import("drizzle-orm/pg-core").PgColumn<{
13
+ name: "id";
14
+ tableName: "magic_links";
15
+ dataType: "string";
16
+ columnType: "PgText";
17
+ data: string;
18
+ driverParam: string;
19
+ notNull: true;
20
+ hasDefault: false;
21
+ isPrimaryKey: true;
22
+ isAutoincrement: false;
23
+ hasRuntimeDefault: false;
24
+ enumValues: [string, ...string[]];
25
+ baseColumn: never;
26
+ identity: undefined;
27
+ generated: undefined;
28
+ }, {}, {}>;
29
+ userId: import("drizzle-orm/pg-core").PgColumn<{
30
+ name: "user_id";
31
+ tableName: "magic_links";
32
+ dataType: "string";
33
+ columnType: "PgText";
34
+ data: string;
35
+ driverParam: string;
36
+ notNull: true;
37
+ hasDefault: false;
38
+ isPrimaryKey: false;
39
+ isAutoincrement: false;
40
+ hasRuntimeDefault: false;
41
+ enumValues: [string, ...string[]];
42
+ baseColumn: never;
43
+ identity: undefined;
44
+ generated: undefined;
45
+ }, {}, {}>;
46
+ tokenHash: import("drizzle-orm/pg-core").PgColumn<{
47
+ name: "token_hash";
48
+ tableName: "magic_links";
49
+ dataType: "string";
50
+ columnType: "PgText";
51
+ data: string;
52
+ driverParam: string;
53
+ notNull: true;
54
+ hasDefault: false;
55
+ isPrimaryKey: false;
56
+ isAutoincrement: false;
57
+ hasRuntimeDefault: false;
58
+ enumValues: [string, ...string[]];
59
+ baseColumn: never;
60
+ identity: undefined;
61
+ generated: undefined;
62
+ }, {}, {}>;
63
+ tokenSalt: import("drizzle-orm/pg-core").PgColumn<{
64
+ name: "token_salt";
65
+ tableName: "magic_links";
66
+ dataType: "string";
67
+ columnType: "PgText";
68
+ data: string;
69
+ driverParam: string;
70
+ notNull: true;
71
+ hasDefault: false;
72
+ isPrimaryKey: false;
73
+ isAutoincrement: false;
74
+ hasRuntimeDefault: false;
75
+ enumValues: [string, ...string[]];
76
+ baseColumn: never;
77
+ identity: undefined;
78
+ generated: undefined;
79
+ }, {}, {}>;
80
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
81
+ name: "expires_at";
82
+ tableName: "magic_links";
83
+ dataType: "date";
84
+ columnType: "PgTimestamp";
85
+ data: Date;
86
+ driverParam: string;
87
+ notNull: true;
88
+ hasDefault: false;
89
+ isPrimaryKey: false;
90
+ isAutoincrement: false;
91
+ hasRuntimeDefault: false;
92
+ enumValues: undefined;
93
+ baseColumn: never;
94
+ identity: undefined;
95
+ generated: undefined;
96
+ }, {}, {}>;
97
+ usedAt: import("drizzle-orm/pg-core").PgColumn<{
98
+ name: "used_at";
99
+ tableName: "magic_links";
100
+ dataType: "date";
101
+ columnType: "PgTimestamp";
102
+ data: Date;
103
+ driverParam: string;
104
+ notNull: false;
105
+ hasDefault: false;
106
+ isPrimaryKey: false;
107
+ isAutoincrement: false;
108
+ hasRuntimeDefault: false;
109
+ enumValues: undefined;
110
+ baseColumn: never;
111
+ identity: undefined;
112
+ generated: undefined;
113
+ }, {}, {}>;
114
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
115
+ name: "created_at";
116
+ tableName: "magic_links";
117
+ dataType: "date";
118
+ columnType: "PgTimestamp";
119
+ data: Date;
120
+ driverParam: string;
121
+ notNull: true;
122
+ hasDefault: true;
123
+ isPrimaryKey: false;
124
+ isAutoincrement: false;
125
+ hasRuntimeDefault: false;
126
+ enumValues: undefined;
127
+ baseColumn: never;
128
+ identity: undefined;
129
+ generated: undefined;
130
+ }, {}, {}>;
131
+ };
132
+ dialect: "pg";
133
+ }>;
134
+ export type MagicLink = typeof magicLinks.$inferSelect;
135
+ export type NewMagicLink = typeof magicLinks.$inferInsert;
136
+ //# sourceMappingURL=magic-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magic-links.d.ts","sourceRoot":"","sources":["../../src/schema/magic-links.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BtB,CAAC;AAMF,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Magic Links table
3
+ *
4
+ * Stores single-use, time-limited tokens for passwordless email authentication.
5
+ * Token values are stored as HMAC-SHA256 hashes with a per-token salt
6
+ * for protection against rainbow table attacks on DB breach.
7
+ */
8
+ import { index, pgTable, text, timestamp, uniqueIndex } from 'drizzle-orm/pg-core';
9
+ import { users } from './users.js';
10
+ // =============================================================================
11
+ // Magic Links Table
12
+ // =============================================================================
13
+ export const magicLinks = pgTable('magic_links', {
14
+ id: text('id').primaryKey(),
15
+ userId: text('user_id')
16
+ .notNull()
17
+ .references(() => users.id, { onDelete: 'cascade' }),
18
+ // HMAC-SHA256 hash of the raw token sent in the email link
19
+ tokenHash: text('token_hash').notNull(),
20
+ // Per-token random salt used in HMAC-SHA256 hashing (16 bytes hex = 32 chars)
21
+ tokenSalt: text('token_salt').notNull(),
22
+ // Expiry and usage tracking
23
+ expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
24
+ usedAt: timestamp('used_at', { withTimezone: true }),
25
+ // Timestamps
26
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
27
+ }, (table) => [
28
+ index('magic_links_user_id_idx').on(table.userId),
29
+ uniqueIndex('magic_links_token_hash_idx').on(table.tokenHash),
30
+ index('magic_links_expires_at_idx').on(table.expiresAt),
31
+ ]);
32
+ //# sourceMappingURL=magic-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magic-links.js","sourceRoot":"","sources":["../../src/schema/magic-links.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,aAAa,EACb;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAE3B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;SACpB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEtD,2DAA2D;IAC3D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,8EAA8E;IAC9E,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAEvC,4BAA4B;IAC5B,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACpE,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAEpD,aAAa;IACb,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,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,WAAW,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7D,KAAK,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CACxD,CACF,CAAC"}
@@ -0,0 +1,496 @@
1
+ /**
2
+ * MCP Marketplace Tables (Phase 5.5)
3
+ *
4
+ * Community developers publish MCP servers with a per-call price.
5
+ * RevealUI acts as a payment proxy: callers pay via x402 (USDC on Base),
6
+ * RevealUI takes 20%, developer earns 80%.
7
+ *
8
+ * Payment batching: individual USDC micropayments accumulate in
9
+ * marketplace_transactions. Stripe Connect transfers are batched
10
+ * (daily/weekly) rather than immediate — Stripe's minimum transfer is $0.50
11
+ * which exceeds typical per-call amounts.
12
+ */
13
+ /**
14
+ * Registry of community-published MCP servers available through the marketplace.
15
+ * Each server has a per-call price in USDC; callers pay via x402.
16
+ */
17
+ export declare const marketplaceServers: import("drizzle-orm/pg-core").PgTableWithColumns<{
18
+ name: "marketplace_servers";
19
+ schema: undefined;
20
+ columns: {
21
+ id: import("drizzle-orm/pg-core").PgColumn<{
22
+ name: "id";
23
+ tableName: "marketplace_servers";
24
+ dataType: "string";
25
+ columnType: "PgText";
26
+ data: string;
27
+ driverParam: string;
28
+ notNull: true;
29
+ hasDefault: false;
30
+ isPrimaryKey: true;
31
+ isAutoincrement: false;
32
+ hasRuntimeDefault: false;
33
+ enumValues: [string, ...string[]];
34
+ baseColumn: never;
35
+ identity: undefined;
36
+ generated: undefined;
37
+ }, {}, {}>;
38
+ name: import("drizzle-orm/pg-core").PgColumn<{
39
+ name: "name";
40
+ tableName: "marketplace_servers";
41
+ dataType: "string";
42
+ columnType: "PgText";
43
+ data: string;
44
+ driverParam: string;
45
+ notNull: true;
46
+ hasDefault: false;
47
+ isPrimaryKey: false;
48
+ isAutoincrement: false;
49
+ hasRuntimeDefault: false;
50
+ enumValues: [string, ...string[]];
51
+ baseColumn: never;
52
+ identity: undefined;
53
+ generated: undefined;
54
+ }, {}, {}>;
55
+ description: import("drizzle-orm/pg-core").PgColumn<{
56
+ name: "description";
57
+ tableName: "marketplace_servers";
58
+ dataType: "string";
59
+ columnType: "PgText";
60
+ data: string;
61
+ driverParam: string;
62
+ notNull: true;
63
+ hasDefault: false;
64
+ isPrimaryKey: false;
65
+ isAutoincrement: false;
66
+ hasRuntimeDefault: false;
67
+ enumValues: [string, ...string[]];
68
+ baseColumn: never;
69
+ identity: undefined;
70
+ generated: undefined;
71
+ }, {}, {}>;
72
+ url: import("drizzle-orm/pg-core").PgColumn<{
73
+ name: "url";
74
+ tableName: "marketplace_servers";
75
+ dataType: "string";
76
+ columnType: "PgText";
77
+ data: string;
78
+ driverParam: string;
79
+ notNull: true;
80
+ hasDefault: false;
81
+ isPrimaryKey: false;
82
+ isAutoincrement: false;
83
+ hasRuntimeDefault: false;
84
+ enumValues: [string, ...string[]];
85
+ baseColumn: never;
86
+ identity: undefined;
87
+ generated: undefined;
88
+ }, {}, {}>;
89
+ category: import("drizzle-orm/pg-core").PgColumn<{
90
+ name: "category";
91
+ tableName: "marketplace_servers";
92
+ dataType: "string";
93
+ columnType: "PgText";
94
+ data: string;
95
+ driverParam: string;
96
+ notNull: true;
97
+ hasDefault: true;
98
+ isPrimaryKey: false;
99
+ isAutoincrement: false;
100
+ hasRuntimeDefault: false;
101
+ enumValues: [string, ...string[]];
102
+ baseColumn: never;
103
+ identity: undefined;
104
+ generated: undefined;
105
+ }, {}, {}>;
106
+ tags: import("drizzle-orm/pg-core").PgColumn<{
107
+ name: "tags";
108
+ tableName: "marketplace_servers";
109
+ dataType: "array";
110
+ columnType: "PgArray";
111
+ data: string[];
112
+ driverParam: string | string[];
113
+ notNull: true;
114
+ hasDefault: true;
115
+ isPrimaryKey: false;
116
+ isAutoincrement: false;
117
+ hasRuntimeDefault: false;
118
+ enumValues: [string, ...string[]];
119
+ baseColumn: import("drizzle-orm").Column<{
120
+ name: "tags";
121
+ tableName: "marketplace_servers";
122
+ dataType: "string";
123
+ columnType: "PgText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: false;
127
+ hasDefault: false;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {}>;
136
+ identity: undefined;
137
+ generated: undefined;
138
+ }, {}, {
139
+ $type: string[];
140
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
141
+ name: "tags";
142
+ dataType: "string";
143
+ columnType: "PgText";
144
+ data: string;
145
+ enumValues: [string, ...string[]];
146
+ driverParam: string;
147
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
148
+ size: undefined;
149
+ }>;
150
+ pricePerCallUsdc: import("drizzle-orm/pg-core").PgColumn<{
151
+ name: "price_per_call_usdc";
152
+ tableName: "marketplace_servers";
153
+ dataType: "string";
154
+ columnType: "PgText";
155
+ data: string;
156
+ driverParam: string;
157
+ notNull: true;
158
+ hasDefault: true;
159
+ isPrimaryKey: false;
160
+ isAutoincrement: false;
161
+ hasRuntimeDefault: false;
162
+ enumValues: [string, ...string[]];
163
+ baseColumn: never;
164
+ identity: undefined;
165
+ generated: undefined;
166
+ }, {}, {}>;
167
+ developerId: import("drizzle-orm/pg-core").PgColumn<{
168
+ name: "developer_id";
169
+ tableName: "marketplace_servers";
170
+ dataType: "string";
171
+ columnType: "PgText";
172
+ data: string;
173
+ driverParam: string;
174
+ notNull: true;
175
+ hasDefault: false;
176
+ isPrimaryKey: false;
177
+ isAutoincrement: false;
178
+ hasRuntimeDefault: false;
179
+ enumValues: [string, ...string[]];
180
+ baseColumn: never;
181
+ identity: undefined;
182
+ generated: undefined;
183
+ }, {}, {}>;
184
+ stripeAccountId: import("drizzle-orm/pg-core").PgColumn<{
185
+ name: "stripe_account_id";
186
+ tableName: "marketplace_servers";
187
+ dataType: "string";
188
+ columnType: "PgText";
189
+ data: string;
190
+ driverParam: string;
191
+ notNull: false;
192
+ hasDefault: false;
193
+ isPrimaryKey: false;
194
+ isAutoincrement: false;
195
+ hasRuntimeDefault: false;
196
+ enumValues: [string, ...string[]];
197
+ baseColumn: never;
198
+ identity: undefined;
199
+ generated: undefined;
200
+ }, {}, {}>;
201
+ status: import("drizzle-orm/pg-core").PgColumn<{
202
+ name: "status";
203
+ tableName: "marketplace_servers";
204
+ dataType: "string";
205
+ columnType: "PgText";
206
+ data: string;
207
+ driverParam: string;
208
+ notNull: true;
209
+ hasDefault: true;
210
+ isPrimaryKey: false;
211
+ isAutoincrement: false;
212
+ hasRuntimeDefault: false;
213
+ enumValues: [string, ...string[]];
214
+ baseColumn: never;
215
+ identity: undefined;
216
+ generated: undefined;
217
+ }, {}, {}>;
218
+ callCount: import("drizzle-orm/pg-core").PgColumn<{
219
+ name: "call_count";
220
+ tableName: "marketplace_servers";
221
+ dataType: "number";
222
+ columnType: "PgInteger";
223
+ data: number;
224
+ driverParam: string | number;
225
+ notNull: true;
226
+ hasDefault: true;
227
+ isPrimaryKey: false;
228
+ isAutoincrement: false;
229
+ hasRuntimeDefault: false;
230
+ enumValues: undefined;
231
+ baseColumn: never;
232
+ identity: undefined;
233
+ generated: undefined;
234
+ }, {}, {}>;
235
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
236
+ name: "metadata";
237
+ tableName: "marketplace_servers";
238
+ dataType: "json";
239
+ columnType: "PgJsonb";
240
+ data: Record<string, unknown>;
241
+ driverParam: unknown;
242
+ notNull: false;
243
+ hasDefault: true;
244
+ isPrimaryKey: false;
245
+ isAutoincrement: false;
246
+ hasRuntimeDefault: false;
247
+ enumValues: undefined;
248
+ baseColumn: never;
249
+ identity: undefined;
250
+ generated: undefined;
251
+ }, {}, {
252
+ $type: Record<string, unknown>;
253
+ }>;
254
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
255
+ name: "created_at";
256
+ tableName: "marketplace_servers";
257
+ dataType: "date";
258
+ columnType: "PgTimestamp";
259
+ data: Date;
260
+ driverParam: string;
261
+ notNull: true;
262
+ hasDefault: true;
263
+ isPrimaryKey: false;
264
+ isAutoincrement: false;
265
+ hasRuntimeDefault: false;
266
+ enumValues: undefined;
267
+ baseColumn: never;
268
+ identity: undefined;
269
+ generated: undefined;
270
+ }, {}, {}>;
271
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
272
+ name: "updated_at";
273
+ tableName: "marketplace_servers";
274
+ dataType: "date";
275
+ columnType: "PgTimestamp";
276
+ data: Date;
277
+ driverParam: string;
278
+ notNull: true;
279
+ hasDefault: true;
280
+ isPrimaryKey: false;
281
+ isAutoincrement: false;
282
+ hasRuntimeDefault: false;
283
+ enumValues: undefined;
284
+ baseColumn: never;
285
+ identity: undefined;
286
+ generated: undefined;
287
+ }, {}, {}>;
288
+ };
289
+ dialect: "pg";
290
+ }>;
291
+ /**
292
+ * Per-call payment ledger.
293
+ * One row per successful marketplace invocation.
294
+ * Used for developer earnings dashboards, payout calculations, and auditing.
295
+ */
296
+ export declare const marketplaceTransactions: import("drizzle-orm/pg-core").PgTableWithColumns<{
297
+ name: "marketplace_transactions";
298
+ schema: undefined;
299
+ columns: {
300
+ id: import("drizzle-orm/pg-core").PgColumn<{
301
+ name: "id";
302
+ tableName: "marketplace_transactions";
303
+ dataType: "string";
304
+ columnType: "PgText";
305
+ data: string;
306
+ driverParam: string;
307
+ notNull: true;
308
+ hasDefault: false;
309
+ isPrimaryKey: true;
310
+ isAutoincrement: false;
311
+ hasRuntimeDefault: false;
312
+ enumValues: [string, ...string[]];
313
+ baseColumn: never;
314
+ identity: undefined;
315
+ generated: undefined;
316
+ }, {}, {}>;
317
+ serverId: import("drizzle-orm/pg-core").PgColumn<{
318
+ name: "server_id";
319
+ tableName: "marketplace_transactions";
320
+ dataType: "string";
321
+ columnType: "PgText";
322
+ data: string;
323
+ driverParam: string;
324
+ notNull: true;
325
+ hasDefault: false;
326
+ isPrimaryKey: false;
327
+ isAutoincrement: false;
328
+ hasRuntimeDefault: false;
329
+ enumValues: [string, ...string[]];
330
+ baseColumn: never;
331
+ identity: undefined;
332
+ generated: undefined;
333
+ }, {}, {}>;
334
+ callerId: import("drizzle-orm/pg-core").PgColumn<{
335
+ name: "caller_id";
336
+ tableName: "marketplace_transactions";
337
+ dataType: "string";
338
+ columnType: "PgText";
339
+ data: string;
340
+ driverParam: string;
341
+ notNull: false;
342
+ hasDefault: false;
343
+ isPrimaryKey: false;
344
+ isAutoincrement: false;
345
+ hasRuntimeDefault: false;
346
+ enumValues: [string, ...string[]];
347
+ baseColumn: never;
348
+ identity: undefined;
349
+ generated: undefined;
350
+ }, {}, {}>;
351
+ amountUsdc: import("drizzle-orm/pg-core").PgColumn<{
352
+ name: "amount_usdc";
353
+ tableName: "marketplace_transactions";
354
+ dataType: "string";
355
+ columnType: "PgText";
356
+ data: string;
357
+ driverParam: string;
358
+ notNull: true;
359
+ hasDefault: false;
360
+ isPrimaryKey: false;
361
+ isAutoincrement: false;
362
+ hasRuntimeDefault: false;
363
+ enumValues: [string, ...string[]];
364
+ baseColumn: never;
365
+ identity: undefined;
366
+ generated: undefined;
367
+ }, {}, {}>;
368
+ platformFeeUsdc: import("drizzle-orm/pg-core").PgColumn<{
369
+ name: "platform_fee_usdc";
370
+ tableName: "marketplace_transactions";
371
+ dataType: "string";
372
+ columnType: "PgText";
373
+ data: string;
374
+ driverParam: string;
375
+ notNull: true;
376
+ hasDefault: false;
377
+ isPrimaryKey: false;
378
+ isAutoincrement: false;
379
+ hasRuntimeDefault: false;
380
+ enumValues: [string, ...string[]];
381
+ baseColumn: never;
382
+ identity: undefined;
383
+ generated: undefined;
384
+ }, {}, {}>;
385
+ developerAmountUsdc: import("drizzle-orm/pg-core").PgColumn<{
386
+ name: "developer_amount_usdc";
387
+ tableName: "marketplace_transactions";
388
+ dataType: "string";
389
+ columnType: "PgText";
390
+ data: string;
391
+ driverParam: string;
392
+ notNull: true;
393
+ hasDefault: false;
394
+ isPrimaryKey: false;
395
+ isAutoincrement: false;
396
+ hasRuntimeDefault: false;
397
+ enumValues: [string, ...string[]];
398
+ baseColumn: never;
399
+ identity: undefined;
400
+ generated: undefined;
401
+ }, {}, {}>;
402
+ stripeTransferId: import("drizzle-orm/pg-core").PgColumn<{
403
+ name: "stripe_transfer_id";
404
+ tableName: "marketplace_transactions";
405
+ dataType: "string";
406
+ columnType: "PgText";
407
+ data: string;
408
+ driverParam: string;
409
+ notNull: false;
410
+ hasDefault: false;
411
+ isPrimaryKey: false;
412
+ isAutoincrement: false;
413
+ hasRuntimeDefault: false;
414
+ enumValues: [string, ...string[]];
415
+ baseColumn: never;
416
+ identity: undefined;
417
+ generated: undefined;
418
+ }, {}, {}>;
419
+ paymentMethod: import("drizzle-orm/pg-core").PgColumn<{
420
+ name: "payment_method";
421
+ tableName: "marketplace_transactions";
422
+ dataType: "string";
423
+ columnType: "PgText";
424
+ data: string;
425
+ driverParam: string;
426
+ notNull: true;
427
+ hasDefault: true;
428
+ isPrimaryKey: false;
429
+ isAutoincrement: false;
430
+ hasRuntimeDefault: false;
431
+ enumValues: [string, ...string[]];
432
+ baseColumn: never;
433
+ identity: undefined;
434
+ generated: undefined;
435
+ }, {}, {}>;
436
+ status: import("drizzle-orm/pg-core").PgColumn<{
437
+ name: "status";
438
+ tableName: "marketplace_transactions";
439
+ dataType: "string";
440
+ columnType: "PgText";
441
+ data: string;
442
+ driverParam: string;
443
+ notNull: true;
444
+ hasDefault: true;
445
+ isPrimaryKey: false;
446
+ isAutoincrement: false;
447
+ hasRuntimeDefault: false;
448
+ enumValues: [string, ...string[]];
449
+ baseColumn: never;
450
+ identity: undefined;
451
+ generated: undefined;
452
+ }, {}, {}>;
453
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
454
+ name: "metadata";
455
+ tableName: "marketplace_transactions";
456
+ dataType: "json";
457
+ columnType: "PgJsonb";
458
+ data: Record<string, unknown>;
459
+ driverParam: unknown;
460
+ notNull: false;
461
+ hasDefault: true;
462
+ isPrimaryKey: false;
463
+ isAutoincrement: false;
464
+ hasRuntimeDefault: false;
465
+ enumValues: undefined;
466
+ baseColumn: never;
467
+ identity: undefined;
468
+ generated: undefined;
469
+ }, {}, {
470
+ $type: Record<string, unknown>;
471
+ }>;
472
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
473
+ name: "created_at";
474
+ tableName: "marketplace_transactions";
475
+ dataType: "date";
476
+ columnType: "PgTimestamp";
477
+ data: Date;
478
+ driverParam: string;
479
+ notNull: true;
480
+ hasDefault: true;
481
+ isPrimaryKey: false;
482
+ isAutoincrement: false;
483
+ hasRuntimeDefault: false;
484
+ enumValues: undefined;
485
+ baseColumn: never;
486
+ identity: undefined;
487
+ generated: undefined;
488
+ }, {}, {}>;
489
+ };
490
+ dialect: "pg";
491
+ }>;
492
+ export type MarketplaceServer = typeof marketplaceServers.$inferSelect;
493
+ export type NewMarketplaceServer = typeof marketplaceServers.$inferInsert;
494
+ export type MarketplaceTransaction = typeof marketplaceTransactions.$inferSelect;
495
+ export type NewMarketplaceTransaction = typeof marketplaceTransactions.$inferInsert;
496
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/schema/marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD7B,CAAC;AAMH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ClC,CAAC;AAMH,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAC;AACjF,MAAM,MAAM,yBAAyB,GAAG,OAAO,uBAAuB,CAAC,YAAY,CAAC"}