@revealui/db 0.2.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 (191) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +137 -0
  3. package/dist/audit-store.d.ts +56 -0
  4. package/dist/audit-store.d.ts.map +1 -0
  5. package/dist/audit-store.js +120 -0
  6. package/dist/audit-store.js.map +1 -0
  7. package/dist/client/index.d.ts +214 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +396 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/types.d.ts +109 -0
  12. package/dist/client/types.d.ts.map +1 -0
  13. package/dist/client/types.js +10 -0
  14. package/dist/client/types.js.map +1 -0
  15. package/dist/crypto.d.ts +27 -0
  16. package/dist/crypto.d.ts.map +1 -0
  17. package/dist/crypto.js +68 -0
  18. package/dist/crypto.js.map +1 -0
  19. package/dist/index.d.ts +29 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +31 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/log-transport.d.ts +20 -0
  24. package/dist/log-transport.d.ts.map +1 -0
  25. package/dist/log-transport.js +49 -0
  26. package/dist/log-transport.js.map +1 -0
  27. package/dist/pool.d.ts +36 -0
  28. package/dist/pool.d.ts.map +1 -0
  29. package/dist/pool.js +218 -0
  30. package/dist/pool.js.map +1 -0
  31. package/dist/queries/boards.d.ts +138 -0
  32. package/dist/queries/boards.d.ts.map +1 -0
  33. package/dist/queries/boards.js +87 -0
  34. package/dist/queries/boards.js.map +1 -0
  35. package/dist/queries/code-provenance.d.ts +250 -0
  36. package/dist/queries/code-provenance.d.ts.map +1 -0
  37. package/dist/queries/code-provenance.js +130 -0
  38. package/dist/queries/code-provenance.js.map +1 -0
  39. package/dist/queries/optimized-queries.d.ts +89 -0
  40. package/dist/queries/optimized-queries.d.ts.map +1 -0
  41. package/dist/queries/optimized-queries.js +371 -0
  42. package/dist/queries/optimized-queries.js.map +1 -0
  43. package/dist/queries/ticket-comments.d.ts +37 -0
  44. package/dist/queries/ticket-comments.d.ts.map +1 -0
  45. package/dist/queries/ticket-comments.js +52 -0
  46. package/dist/queries/ticket-comments.js.map +1 -0
  47. package/dist/queries/ticket-labels.d.ts +69 -0
  48. package/dist/queries/ticket-labels.d.ts.map +1 -0
  49. package/dist/queries/ticket-labels.js +51 -0
  50. package/dist/queries/ticket-labels.js.map +1 -0
  51. package/dist/queries/tickets.d.ts +301 -0
  52. package/dist/queries/tickets.d.ts.map +1 -0
  53. package/dist/queries/tickets.js +89 -0
  54. package/dist/queries/tickets.js.map +1 -0
  55. package/dist/queries/todos.d.ts +37 -0
  56. package/dist/queries/todos.d.ts.map +1 -0
  57. package/dist/queries/todos.js +37 -0
  58. package/dist/queries/todos.js.map +1 -0
  59. package/dist/schema/agents.d.ts +1413 -0
  60. package/dist/schema/agents.d.ts.map +1 -0
  61. package/dist/schema/agents.js +207 -0
  62. package/dist/schema/agents.js.map +1 -0
  63. package/dist/schema/api-keys.d.ts +298 -0
  64. package/dist/schema/api-keys.d.ts.map +1 -0
  65. package/dist/schema/api-keys.js +53 -0
  66. package/dist/schema/api-keys.js.map +1 -0
  67. package/dist/schema/app-logs.d.ts +168 -0
  68. package/dist/schema/app-logs.d.ts.map +1 -0
  69. package/dist/schema/app-logs.js +25 -0
  70. package/dist/schema/app-logs.js.map +1 -0
  71. package/dist/schema/audit-log.d.ts +174 -0
  72. package/dist/schema/audit-log.d.ts.map +1 -0
  73. package/dist/schema/audit-log.js +37 -0
  74. package/dist/schema/audit-log.js.map +1 -0
  75. package/dist/schema/cms.d.ts +1015 -0
  76. package/dist/schema/cms.d.ts.map +1 -0
  77. package/dist/schema/cms.js +137 -0
  78. package/dist/schema/cms.js.map +1 -0
  79. package/dist/schema/code-provenance.d.ts +488 -0
  80. package/dist/schema/code-provenance.d.ts.map +1 -0
  81. package/dist/schema/code-provenance.js +72 -0
  82. package/dist/schema/code-provenance.js.map +1 -0
  83. package/dist/schema/collab-edits.d.ts +165 -0
  84. package/dist/schema/collab-edits.d.ts.map +1 -0
  85. package/dist/schema/collab-edits.js +21 -0
  86. package/dist/schema/collab-edits.js.map +1 -0
  87. package/dist/schema/crdt-operations.d.ts +153 -0
  88. package/dist/schema/crdt-operations.d.ts.map +1 -0
  89. package/dist/schema/crdt-operations.js +30 -0
  90. package/dist/schema/crdt-operations.js.map +1 -0
  91. package/dist/schema/error-events.d.ts +223 -0
  92. package/dist/schema/error-events.d.ts.map +1 -0
  93. package/dist/schema/error-events.js +44 -0
  94. package/dist/schema/error-events.js.map +1 -0
  95. package/dist/schema/index.d.ts +130 -0
  96. package/dist/schema/index.d.ts.map +1 -0
  97. package/dist/schema/index.js +310 -0
  98. package/dist/schema/index.js.map +1 -0
  99. package/dist/schema/licenses.d.ts +189 -0
  100. package/dist/schema/licenses.d.ts.map +1 -0
  101. package/dist/schema/licenses.js +39 -0
  102. package/dist/schema/licenses.js.map +1 -0
  103. package/dist/schema/node-ids.d.ts +122 -0
  104. package/dist/schema/node-ids.d.ts.map +1 -0
  105. package/dist/schema/node-ids.js +25 -0
  106. package/dist/schema/node-ids.js.map +1 -0
  107. package/dist/schema/pages.d.ts +488 -0
  108. package/dist/schema/pages.d.ts.map +1 -0
  109. package/dist/schema/pages.js +70 -0
  110. package/dist/schema/pages.js.map +1 -0
  111. package/dist/schema/password-reset-tokens.d.ts +137 -0
  112. package/dist/schema/password-reset-tokens.d.ts.map +1 -0
  113. package/dist/schema/password-reset-tokens.js +26 -0
  114. package/dist/schema/password-reset-tokens.js.map +1 -0
  115. package/dist/schema/query.d.ts +11 -0
  116. package/dist/schema/query.d.ts.map +1 -0
  117. package/dist/schema/query.js +11 -0
  118. package/dist/schema/query.js.map +1 -0
  119. package/dist/schema/rate-limits.d.ts +212 -0
  120. package/dist/schema/rate-limits.d.ts.map +1 -0
  121. package/dist/schema/rate-limits.js +38 -0
  122. package/dist/schema/rate-limits.js.map +1 -0
  123. package/dist/schema/rest.d.ts +31 -0
  124. package/dist/schema/rest.d.ts.map +1 -0
  125. package/dist/schema/rest.js +37 -0
  126. package/dist/schema/rest.js.map +1 -0
  127. package/dist/schema/sites.d.ts +365 -0
  128. package/dist/schema/sites.d.ts.map +1 -0
  129. package/dist/schema/sites.js +62 -0
  130. package/dist/schema/sites.js.map +1 -0
  131. package/dist/schema/tickets.d.ts +1118 -0
  132. package/dist/schema/tickets.d.ts.map +1 -0
  133. package/dist/schema/tickets.js +150 -0
  134. package/dist/schema/tickets.js.map +1 -0
  135. package/dist/schema/todos.d.ts +98 -0
  136. package/dist/schema/todos.d.ts.map +1 -0
  137. package/dist/schema/todos.js +12 -0
  138. package/dist/schema/todos.js.map +1 -0
  139. package/dist/schema/users.d.ts +503 -0
  140. package/dist/schema/users.d.ts.map +1 -0
  141. package/dist/schema/users.js +75 -0
  142. package/dist/schema/users.js.map +1 -0
  143. package/dist/schema/vector.d.ts +9 -0
  144. package/dist/schema/vector.d.ts.map +1 -0
  145. package/dist/schema/vector.js +9 -0
  146. package/dist/schema/vector.js.map +1 -0
  147. package/dist/schema/waitlist.d.ts +151 -0
  148. package/dist/schema/waitlist.d.ts.map +1 -0
  149. package/dist/schema/waitlist.js +17 -0
  150. package/dist/schema/waitlist.js.map +1 -0
  151. package/dist/schema/yjs-documents.d.ts +116 -0
  152. package/dist/schema/yjs-documents.d.ts.map +1 -0
  153. package/dist/schema/yjs-documents.js +15 -0
  154. package/dist/schema/yjs-documents.js.map +1 -0
  155. package/dist/types/database.d.ts +740 -0
  156. package/dist/types/database.d.ts.map +1 -0
  157. package/dist/types/database.js +151 -0
  158. package/dist/types/database.js.map +1 -0
  159. package/dist/types/discover.d.ts +83 -0
  160. package/dist/types/discover.d.ts.map +1 -0
  161. package/dist/types/discover.js +271 -0
  162. package/dist/types/discover.js.map +1 -0
  163. package/dist/types/extract-relationships.d.ts +115 -0
  164. package/dist/types/extract-relationships.d.ts.map +1 -0
  165. package/dist/types/extract-relationships.js +455 -0
  166. package/dist/types/extract-relationships.js.map +1 -0
  167. package/dist/types/generate-contracts.d.ts +19 -0
  168. package/dist/types/generate-contracts.d.ts.map +1 -0
  169. package/dist/types/generate-contracts.js +128 -0
  170. package/dist/types/generate-contracts.js.map +1 -0
  171. package/dist/types/generate-zod-schemas.d.ts +20 -0
  172. package/dist/types/generate-zod-schemas.d.ts.map +1 -0
  173. package/dist/types/generate-zod-schemas.js +128 -0
  174. package/dist/types/generate-zod-schemas.js.map +1 -0
  175. package/dist/types/generate.d.ts +17 -0
  176. package/dist/types/generate.d.ts.map +1 -0
  177. package/dist/types/generate.js +298 -0
  178. package/dist/types/generate.js.map +1 -0
  179. package/dist/types/index.d.ts +19 -0
  180. package/dist/types/index.d.ts.map +1 -0
  181. package/dist/types/index.js +19 -0
  182. package/dist/types/index.js.map +1 -0
  183. package/dist/types/introspect.d.ts +75 -0
  184. package/dist/types/introspect.d.ts.map +1 -0
  185. package/dist/types/introspect.js +187 -0
  186. package/dist/types/introspect.js.map +1 -0
  187. package/dist/types/stripe-schema.d.ts +893 -0
  188. package/dist/types/stripe-schema.d.ts.map +1 -0
  189. package/dist/types/stripe-schema.js +112 -0
  190. package/dist/types/stripe-schema.js.map +1 -0
  191. package/package.json +154 -0
@@ -0,0 +1,310 @@
1
+ /**
2
+ * @revealui/db/schema - Database Schema (Schema/Server-side)
3
+ *
4
+ * Drizzle ORM table definitions derived from @revealui/contracts Zod schemas.
5
+ * Designed for Neon Postgres with pgvector extension for embeddings.
6
+ *
7
+ * The tables mirror the following Zod schemas:
8
+ * - UserSchema, SessionSchema → users, sessions
9
+ * - SiteSchema → sites, siteCollaborators
10
+ * - PageSchema → pages, pageRevisions
11
+ * - AgentContextSchema, AgentMemorySchema, etc. → agent tables
12
+ *
13
+ * This file re-exports both REST and Vector schemas for backward compatibility.
14
+ * For dual database architecture, use:
15
+ * - `@revealui/db/schema/rest` for REST API schemas (NeonDB)
16
+ * - `@revealui/db/schema/vector` for Vector schemas (Supabase)
17
+ */
18
+ // Re-export everything for backward compatibility
19
+ export * from './rest.js';
20
+ export * from './vector.js';
21
+ // Note: We don't export * from './agents.js' to avoid duplicate agentMemories export
22
+ // agentMemories is already exported via './vector'
23
+ // Other agent tables and types are exported via './rest'
24
+ // If you need AgentMemory types, import from '@revealui/db/schema/vector' or '@revealui/contracts/agents'
25
+ // =============================================================================
26
+ // Relations (defined separately to avoid circular imports)
27
+ // =============================================================================
28
+ import { relations } from 'drizzle-orm';
29
+ import { agentActions, agentContexts, agentMemories, conversations } from './agents.js';
30
+ import { tenantProviderConfigs, userApiKeys } from './api-keys.js';
31
+ import { appLogs } from './app-logs.js';
32
+ import { auditLog } from './audit-log.js';
33
+ import { media, posts } from './cms.js';
34
+ import { codeProvenance, codeReviews } from './code-provenance.js';
35
+ import { collabEdits } from './collab-edits.js';
36
+ import { errorEvents } from './error-events.js';
37
+ import { licenses } from './licenses.js';
38
+ import { pageRevisions, pages } from './pages.js';
39
+ import { passwordResetTokens } from './password-reset-tokens.js';
40
+ import { siteCollaborators, sites } from './sites.js';
41
+ import { boardColumns, boards, ticketComments, ticketLabelAssignments, ticketLabels, tickets, } from './tickets.js';
42
+ import { sessions, users } from './users.js';
43
+ import { yjsDocuments } from './yjs-documents.js';
44
+ // User relations
45
+ export const usersRelations = relations(users, ({ many }) => ({
46
+ sessions: many(sessions),
47
+ ownedSites: many(sites),
48
+ collaborations: many(siteCollaborators),
49
+ pageRevisions: many(pageRevisions),
50
+ conversations: many(conversations),
51
+ apiKeys: many(userApiKeys),
52
+ providerConfigs: many(tenantProviderConfigs),
53
+ }));
54
+ // BYOK API key relations
55
+ export const userApiKeysRelations = relations(userApiKeys, ({ one }) => ({
56
+ user: one(users, {
57
+ fields: [userApiKeys.userId],
58
+ references: [users.id],
59
+ }),
60
+ }));
61
+ export const tenantProviderConfigsRelations = relations(tenantProviderConfigs, ({ one }) => ({
62
+ user: one(users, {
63
+ fields: [tenantProviderConfigs.userId],
64
+ references: [users.id],
65
+ }),
66
+ }));
67
+ // Session relations
68
+ export const sessionsRelations = relations(sessions, ({ one }) => ({
69
+ user: one(users, {
70
+ fields: [sessions.userId],
71
+ references: [users.id],
72
+ }),
73
+ }));
74
+ // Password reset token relations
75
+ export const passwordResetTokensRelations = relations(passwordResetTokens, ({ one }) => ({
76
+ user: one(users, {
77
+ fields: [passwordResetTokens.userId],
78
+ references: [users.id],
79
+ }),
80
+ }));
81
+ // Site relations
82
+ // Note: memories relation removed - agentMemories is in vector database (Supabase)
83
+ // Use VectorMemoryService to query memories by siteId
84
+ export const sitesRelations = relations(sites, ({ one, many }) => ({
85
+ owner: one(users, {
86
+ fields: [sites.ownerId],
87
+ references: [users.id],
88
+ }),
89
+ collaborators: many(siteCollaborators),
90
+ pages: many(pages),
91
+ }));
92
+ // Site collaborator relations
93
+ export const siteCollaboratorsRelations = relations(siteCollaborators, ({ one }) => ({
94
+ site: one(sites, {
95
+ fields: [siteCollaborators.siteId],
96
+ references: [sites.id],
97
+ }),
98
+ user: one(users, {
99
+ fields: [siteCollaborators.userId],
100
+ references: [users.id],
101
+ }),
102
+ addedByUser: one(users, {
103
+ fields: [siteCollaborators.addedBy],
104
+ references: [users.id],
105
+ }),
106
+ }));
107
+ // Page relations
108
+ export const pagesRelations = relations(pages, ({ one, many }) => ({
109
+ site: one(sites, {
110
+ fields: [pages.siteId],
111
+ references: [sites.id],
112
+ }),
113
+ parent: one(pages, {
114
+ fields: [pages.parentId],
115
+ references: [pages.id],
116
+ relationName: 'parent',
117
+ }),
118
+ children: many(pages, {
119
+ relationName: 'parent',
120
+ }),
121
+ revisions: many(pageRevisions),
122
+ }));
123
+ // Page revision relations
124
+ export const pageRevisionsRelations = relations(pageRevisions, ({ one }) => ({
125
+ page: one(pages, {
126
+ fields: [pageRevisions.pageId],
127
+ references: [pages.id],
128
+ }),
129
+ createdByUser: one(users, {
130
+ fields: [pageRevisions.createdBy],
131
+ references: [users.id],
132
+ }),
133
+ }));
134
+ // Agent context relations
135
+ export const agentContextsRelations = relations(agentContexts, () => ({
136
+ // Contexts are loosely coupled via sessionId/agentId strings
137
+ }));
138
+ // Agent memory relations
139
+ export const agentMemoriesRelations = relations(agentMemories, ({ one }) => ({
140
+ site: one(sites, {
141
+ fields: [agentMemories.siteId],
142
+ references: [sites.id],
143
+ }),
144
+ verifiedByUser: one(users, {
145
+ fields: [agentMemories.verifiedBy],
146
+ references: [users.id],
147
+ }),
148
+ }));
149
+ // Conversation relations
150
+ export const conversationsRelations = relations(conversations, ({ one, many }) => ({
151
+ user: one(users, {
152
+ fields: [conversations.userId],
153
+ references: [users.id],
154
+ }),
155
+ actions: many(agentActions),
156
+ }));
157
+ // Agent action relations
158
+ export const agentActionsRelations = relations(agentActions, ({ one }) => ({
159
+ conversation: one(conversations, {
160
+ fields: [agentActions.conversationId],
161
+ references: [conversations.id],
162
+ }),
163
+ }));
164
+ // =============================================================================
165
+ // CMS Relations
166
+ // =============================================================================
167
+ // Post relations
168
+ export const postsRelations = relations(posts, ({ one }) => ({
169
+ author: one(users, {
170
+ fields: [posts.authorId],
171
+ references: [users.id],
172
+ }),
173
+ featuredImage: one(media, {
174
+ fields: [posts.featuredImageId],
175
+ references: [media.id],
176
+ }),
177
+ }));
178
+ // Media relations
179
+ export const mediaRelations = relations(media, ({ one }) => ({
180
+ uploadedByUser: one(users, {
181
+ fields: [media.uploadedBy],
182
+ references: [users.id],
183
+ }),
184
+ }));
185
+ // =============================================================================
186
+ // License Relations
187
+ // =============================================================================
188
+ export const licensesRelations = relations(licenses, ({ one }) => ({
189
+ user: one(users, {
190
+ fields: [licenses.userId],
191
+ references: [users.id],
192
+ }),
193
+ }));
194
+ // =============================================================================
195
+ // Audit Log Relations
196
+ // =============================================================================
197
+ // Audit log entries are standalone — no foreign keys by design.
198
+ // The agentId, taskId, and sessionId are stored as plain text for
199
+ // decoupling the audit trail from agent lifecycle tables.
200
+ export const auditLogRelations = relations(auditLog, () => ({}));
201
+ // App logs are standalone — no foreign keys by design.
202
+ // Append-only structured log store (warn+ in production).
203
+ export const appLogsRelations = relations(appLogs, () => ({}));
204
+ // Error events are standalone — no foreign keys by design.
205
+ // userId is stored as plain text so errors outlive user deletion.
206
+ export const errorEventsRelations = relations(errorEvents, () => ({}));
207
+ // =============================================================================
208
+ // Collaborative Editing Relations
209
+ // =============================================================================
210
+ export const yjsDocumentsRelations = relations(yjsDocuments, ({ many }) => ({
211
+ edits: many(collabEdits),
212
+ }));
213
+ export const collabEditsRelations = relations(collabEdits, ({ one }) => ({
214
+ document: one(yjsDocuments, {
215
+ fields: [collabEdits.documentId],
216
+ references: [yjsDocuments.id],
217
+ }),
218
+ }));
219
+ // =============================================================================
220
+ // Ticketing System Relations
221
+ // =============================================================================
222
+ export const boardsRelations = relations(boards, ({ one, many }) => ({
223
+ owner: one(users, {
224
+ fields: [boards.ownerId],
225
+ references: [users.id],
226
+ }),
227
+ columns: many(boardColumns),
228
+ tickets: many(tickets),
229
+ }));
230
+ export const boardColumnsRelations = relations(boardColumns, ({ one, many }) => ({
231
+ board: one(boards, {
232
+ fields: [boardColumns.boardId],
233
+ references: [boards.id],
234
+ }),
235
+ tickets: many(tickets),
236
+ }));
237
+ export const ticketsRelations = relations(tickets, ({ one, many }) => ({
238
+ board: one(boards, {
239
+ fields: [tickets.boardId],
240
+ references: [boards.id],
241
+ }),
242
+ column: one(boardColumns, {
243
+ fields: [tickets.columnId],
244
+ references: [boardColumns.id],
245
+ }),
246
+ assignee: one(users, {
247
+ fields: [tickets.assigneeId],
248
+ references: [users.id],
249
+ relationName: 'assignedTickets',
250
+ }),
251
+ reporter: one(users, {
252
+ fields: [tickets.reporterId],
253
+ references: [users.id],
254
+ relationName: 'reportedTickets',
255
+ }),
256
+ parent: one(tickets, {
257
+ fields: [tickets.parentTicketId],
258
+ references: [tickets.id],
259
+ relationName: 'subtasks',
260
+ }),
261
+ children: many(tickets, {
262
+ relationName: 'subtasks',
263
+ }),
264
+ comments: many(ticketComments),
265
+ labelAssignments: many(ticketLabelAssignments),
266
+ }));
267
+ export const ticketCommentsRelations = relations(ticketComments, ({ one }) => ({
268
+ ticket: one(tickets, {
269
+ fields: [ticketComments.ticketId],
270
+ references: [tickets.id],
271
+ }),
272
+ author: one(users, {
273
+ fields: [ticketComments.authorId],
274
+ references: [users.id],
275
+ }),
276
+ }));
277
+ export const ticketLabelsRelations = relations(ticketLabels, ({ many }) => ({
278
+ assignments: many(ticketLabelAssignments),
279
+ }));
280
+ export const ticketLabelAssignmentsRelations = relations(ticketLabelAssignments, ({ one }) => ({
281
+ ticket: one(tickets, {
282
+ fields: [ticketLabelAssignments.ticketId],
283
+ references: [tickets.id],
284
+ }),
285
+ label: one(ticketLabels, {
286
+ fields: [ticketLabelAssignments.labelId],
287
+ references: [ticketLabels.id],
288
+ }),
289
+ }));
290
+ // =============================================================================
291
+ // Code Provenance Relations
292
+ // =============================================================================
293
+ export const codeProvenanceRelations = relations(codeProvenance, ({ one, many }) => ({
294
+ reviewer: one(users, {
295
+ fields: [codeProvenance.reviewedBy],
296
+ references: [users.id],
297
+ }),
298
+ reviews: many(codeReviews),
299
+ }));
300
+ export const codeReviewsRelations = relations(codeReviews, ({ one }) => ({
301
+ provenance: one(codeProvenance, {
302
+ fields: [codeReviews.provenanceId],
303
+ references: [codeProvenance.id],
304
+ }),
305
+ reviewer: one(users, {
306
+ fields: [codeReviews.reviewerId],
307
+ references: [users.id],
308
+ }),
309
+ }));
310
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,kDAAkD;AAClD,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAE3B,qFAAqF;AACrF,mDAAmD;AACnD,yDAAyD;AACzD,0GAA0G;AAE1G,gFAAgF;AAChF,2DAA2D;AAC3D,gFAAgF;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EACL,YAAY,EACZ,MAAM,EACN,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,OAAO,GACR,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;IACxB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;IACvB,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACvC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;IAClC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;IAClC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IAC1B,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC;CAC7C,CAAC,CAAC,CAAA;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3F,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACtC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,oBAAoB;AACpB,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,iCAAiC;AACjC,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACvF,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACpC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,iBAAiB;AACjB,mFAAmF;AACnF,sDAAsD;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;QAChB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;QACvB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;CACnB,CAAC,CAAC,CAAA;AAEH,8BAA8B;AAC9B,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACnF,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAClC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAClC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACnC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QACtB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE;QACjB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;QACxB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,YAAY,EAAE,QAAQ;KACvB,CAAC;IACF,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;QACpB,YAAY,EAAE,QAAQ;KACvB,CAAC;IACF,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;CAC/B,CAAC,CAAC,CAAA;AAEH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE;QACxB,MAAM,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;QACjC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;AACpE,6DAA6D;CAC9D,CAAC,CAAC,CAAA;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,cAAc,EAAE,GAAG,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC;QAClC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjF,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;CAC5B,CAAC,CAAC,CAAA;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE;QAC/B,MAAM,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;QACrC,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;KAC/B,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE;QACjB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;QACxB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE;QACxB,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;QAC/B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,kBAAkB;AAClB,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,cAAc,EAAE,GAAG,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,gEAAgE;AAChE,kEAAkE;AAClE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhE,uDAAuD;AACvD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAE9D,2DAA2D;AAC3D,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEtE,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;CACzB,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE;QAC1B,MAAM,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;QAChC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;KAC9B,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;QAChB,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QACxB,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;IAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;CACvB,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/E,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9B,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KACxB,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;CACvB,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QACzB,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE;QACxB,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1B,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;QAC5B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,YAAY,EAAE,iBAAiB;KAChC,CAAC;IACF,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;QAC5B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,YAAY,EAAE,iBAAiB;KAChC,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE;QACnB,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;QAChC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,YAAY,EAAE,UAAU;KACzB,CAAC;IACF,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;QACtB,YAAY,EAAE,UAAU;KACzB,CAAC;IACF,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;IAC9B,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC;CAC/C,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE;QACjB,MAAM,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC;CAC1C,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE;QACnB,MAAM,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QACzC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACzB,CAAC;IACF,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE;QACvB,MAAM,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC;QACxC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;KAC9B,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnF,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;CAC3B,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE;QAC9B,MAAM,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC;QAClC,UAAU,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;KAChC,CAAC;IACF,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;QAChC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACvB,CAAC;CACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Licenses Table - Stores generated license keys for Pro/Enterprise customers.
3
+ *
4
+ * License keys are JWTs signed with the REVEALUI_LICENSE_PRIVATE_KEY.
5
+ * Generated on Stripe checkout.session.completed and stored here for
6
+ * retrieval, auditing, and revocation.
7
+ */
8
+ export declare const licenses: import("drizzle-orm/pg-core").PgTableWithColumns<{
9
+ name: "licenses";
10
+ schema: undefined;
11
+ columns: {
12
+ id: import("drizzle-orm/pg-core").PgColumn<{
13
+ name: "id";
14
+ tableName: "licenses";
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: "licenses";
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
+ licenseKey: import("drizzle-orm/pg-core").PgColumn<{
47
+ name: "license_key";
48
+ tableName: "licenses";
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
+ tier: import("drizzle-orm/pg-core").PgColumn<{
64
+ name: "tier";
65
+ tableName: "licenses";
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
+ subscriptionId: import("drizzle-orm/pg-core").PgColumn<{
81
+ name: "subscription_id";
82
+ tableName: "licenses";
83
+ dataType: "string";
84
+ columnType: "PgText";
85
+ data: string;
86
+ driverParam: string;
87
+ notNull: false;
88
+ hasDefault: false;
89
+ isPrimaryKey: false;
90
+ isAutoincrement: false;
91
+ hasRuntimeDefault: false;
92
+ enumValues: [string, ...string[]];
93
+ baseColumn: never;
94
+ identity: undefined;
95
+ generated: undefined;
96
+ }, {}, {}>;
97
+ customerId: import("drizzle-orm/pg-core").PgColumn<{
98
+ name: "customer_id";
99
+ tableName: "licenses";
100
+ dataType: "string";
101
+ columnType: "PgText";
102
+ data: string;
103
+ driverParam: string;
104
+ notNull: true;
105
+ hasDefault: false;
106
+ isPrimaryKey: false;
107
+ isAutoincrement: false;
108
+ hasRuntimeDefault: false;
109
+ enumValues: [string, ...string[]];
110
+ baseColumn: never;
111
+ identity: undefined;
112
+ generated: undefined;
113
+ }, {}, {}>;
114
+ status: import("drizzle-orm/pg-core").PgColumn<{
115
+ name: "status";
116
+ tableName: "licenses";
117
+ dataType: "string";
118
+ columnType: "PgText";
119
+ data: string;
120
+ driverParam: string;
121
+ notNull: true;
122
+ hasDefault: true;
123
+ isPrimaryKey: false;
124
+ isAutoincrement: false;
125
+ hasRuntimeDefault: false;
126
+ enumValues: [string, ...string[]];
127
+ baseColumn: never;
128
+ identity: undefined;
129
+ generated: undefined;
130
+ }, {}, {}>;
131
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
132
+ name: "created_at";
133
+ tableName: "licenses";
134
+ dataType: "date";
135
+ columnType: "PgTimestamp";
136
+ data: Date;
137
+ driverParam: string;
138
+ notNull: true;
139
+ hasDefault: true;
140
+ isPrimaryKey: false;
141
+ isAutoincrement: false;
142
+ hasRuntimeDefault: false;
143
+ enumValues: undefined;
144
+ baseColumn: never;
145
+ identity: undefined;
146
+ generated: undefined;
147
+ }, {}, {}>;
148
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
149
+ name: "updated_at";
150
+ tableName: "licenses";
151
+ dataType: "date";
152
+ columnType: "PgTimestamp";
153
+ data: Date;
154
+ driverParam: string;
155
+ notNull: true;
156
+ hasDefault: true;
157
+ isPrimaryKey: false;
158
+ isAutoincrement: false;
159
+ hasRuntimeDefault: false;
160
+ enumValues: undefined;
161
+ baseColumn: never;
162
+ identity: undefined;
163
+ generated: undefined;
164
+ }, {}, {}>;
165
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
166
+ name: "expires_at";
167
+ tableName: "licenses";
168
+ dataType: "date";
169
+ columnType: "PgTimestamp";
170
+ data: Date;
171
+ driverParam: string;
172
+ notNull: false;
173
+ hasDefault: false;
174
+ isPrimaryKey: false;
175
+ isAutoincrement: false;
176
+ hasRuntimeDefault: false;
177
+ enumValues: undefined;
178
+ baseColumn: never;
179
+ identity: undefined;
180
+ generated: undefined;
181
+ }, {}, {}>;
182
+ };
183
+ dialect: "pg";
184
+ }>;
185
+ /** Row type for select queries */
186
+ export type LicensesRow = typeof licenses.$inferSelect;
187
+ /** Insert type for new records */
188
+ export type LicensesInsert = typeof licenses.$inferInsert;
189
+ //# sourceMappingURL=licenses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"licenses.d.ts","sourceRoot":"","sources":["../../src/schema/licenses.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCpB,CAAA;AAED,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAA;AAEtD,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Licenses Table - Stores generated license keys for Pro/Enterprise customers.
3
+ *
4
+ * License keys are JWTs signed with the REVEALUI_LICENSE_PRIVATE_KEY.
5
+ * Generated on Stripe checkout.session.completed and stored here for
6
+ * retrieval, auditing, and revocation.
7
+ */
8
+ import { index, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
9
+ // =============================================================================
10
+ // Licenses Table
11
+ // =============================================================================
12
+ export const licenses = pgTable('licenses', {
13
+ /** Unique license ID (UUID) */
14
+ id: text('id').primaryKey(),
15
+ /** User who owns this license */
16
+ userId: text('user_id').notNull(),
17
+ /** The signed JWT license key */
18
+ licenseKey: text('license_key').notNull(),
19
+ /** License tier: pro or enterprise */
20
+ tier: text('tier').notNull(),
21
+ /** Stripe subscription ID that generated this license */
22
+ subscriptionId: text('subscription_id'),
23
+ /** Stripe customer ID */
24
+ customerId: text('customer_id').notNull(),
25
+ /** License status */
26
+ status: text('status').notNull().default('active'),
27
+ /** When the license was created */
28
+ createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
29
+ /** When the license was last updated */
30
+ updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
31
+ /** When the license expires (null = never) */
32
+ expiresAt: timestamp('expires_at', { withTimezone: true }),
33
+ }, (table) => [
34
+ index('licenses_customer_id_idx').on(table.customerId),
35
+ index('licenses_user_id_idx').on(table.userId),
36
+ index('licenses_status_idx').on(table.status),
37
+ index('licenses_subscription_id_idx').on(table.subscriptionId),
38
+ ]);
39
+ //# sourceMappingURL=licenses.js.map
@@ -0,0 +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;AAErE,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,CAAC,OAAO,EAAE;IAEjC,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"}