@holeauth/adapter-drizzle 0.0.1-alpha.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.
@@ -0,0 +1,609 @@
1
+ import * as drizzle_orm from 'drizzle-orm';
2
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
3
+ import { PgTableWithColumns } from 'drizzle-orm/pg-core';
4
+ import { UserAdapter, SessionAdapter, AccountAdapter, VerificationTokenAdapter, AuditLogAdapter, TransactionAdapter } from '@holeauth/core/adapters';
5
+
6
+ /**
7
+ * Caller's users table contract. Must have a string-compatible `id` column.
8
+ * Pass the actual Drizzle pgTable; we read `.id` for foreign keys.
9
+ */
10
+ type PgUsersTable = PgTableWithColumns<any> & {
11
+ id: any;
12
+ };
13
+ interface CreateHoleauthTablesOptions<U extends PgUsersTable> {
14
+ usersTable: U;
15
+ /** Prefix prepended to every holeauth table name. Default: 'holeauth_'. */
16
+ prefix?: string;
17
+ }
18
+ declare function createHoleauthTables<U extends PgUsersTable>(opts: CreateHoleauthTablesOptions<U>): {
19
+ tables: {
20
+ users: U;
21
+ sessions: PgTableWithColumns<{
22
+ name: string;
23
+ schema: undefined;
24
+ columns: {
25
+ id: drizzle_orm_pg_core.PgColumn<{
26
+ name: "id";
27
+ tableName: string;
28
+ dataType: "string";
29
+ columnType: "PgText";
30
+ data: string;
31
+ driverParam: string;
32
+ notNull: true;
33
+ hasDefault: false;
34
+ isPrimaryKey: true;
35
+ isAutoincrement: false;
36
+ hasRuntimeDefault: false;
37
+ enumValues: [string, ...string[]];
38
+ baseColumn: never;
39
+ identity: undefined;
40
+ generated: undefined;
41
+ }, {}, {}>;
42
+ userId: drizzle_orm_pg_core.PgColumn<{
43
+ name: "user_id";
44
+ tableName: string;
45
+ dataType: "string";
46
+ columnType: "PgText";
47
+ data: string;
48
+ driverParam: string;
49
+ notNull: true;
50
+ hasDefault: false;
51
+ isPrimaryKey: false;
52
+ isAutoincrement: false;
53
+ hasRuntimeDefault: false;
54
+ enumValues: [string, ...string[]];
55
+ baseColumn: never;
56
+ identity: undefined;
57
+ generated: undefined;
58
+ }, {}, {}>;
59
+ familyId: drizzle_orm_pg_core.PgColumn<{
60
+ name: "family_id";
61
+ tableName: string;
62
+ dataType: "string";
63
+ columnType: "PgText";
64
+ data: string;
65
+ driverParam: string;
66
+ notNull: true;
67
+ hasDefault: false;
68
+ isPrimaryKey: false;
69
+ isAutoincrement: false;
70
+ hasRuntimeDefault: false;
71
+ enumValues: [string, ...string[]];
72
+ baseColumn: never;
73
+ identity: undefined;
74
+ generated: undefined;
75
+ }, {}, {}>;
76
+ refreshTokenHash: drizzle_orm_pg_core.PgColumn<{
77
+ name: "refresh_token_hash";
78
+ tableName: string;
79
+ dataType: "string";
80
+ columnType: "PgText";
81
+ data: string;
82
+ driverParam: string;
83
+ notNull: true;
84
+ hasDefault: false;
85
+ isPrimaryKey: false;
86
+ isAutoincrement: false;
87
+ hasRuntimeDefault: false;
88
+ enumValues: [string, ...string[]];
89
+ baseColumn: never;
90
+ identity: undefined;
91
+ generated: undefined;
92
+ }, {}, {}>;
93
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
94
+ name: "expires_at";
95
+ tableName: string;
96
+ dataType: "date";
97
+ columnType: "PgTimestamp";
98
+ data: Date;
99
+ driverParam: string;
100
+ notNull: true;
101
+ hasDefault: false;
102
+ isPrimaryKey: false;
103
+ isAutoincrement: false;
104
+ hasRuntimeDefault: false;
105
+ enumValues: undefined;
106
+ baseColumn: never;
107
+ identity: undefined;
108
+ generated: undefined;
109
+ }, {}, {}>;
110
+ createdAt: drizzle_orm_pg_core.PgColumn<{
111
+ name: "created_at";
112
+ tableName: string;
113
+ dataType: "date";
114
+ columnType: "PgTimestamp";
115
+ data: Date;
116
+ driverParam: string;
117
+ notNull: true;
118
+ hasDefault: true;
119
+ isPrimaryKey: false;
120
+ isAutoincrement: false;
121
+ hasRuntimeDefault: false;
122
+ enumValues: undefined;
123
+ baseColumn: never;
124
+ identity: undefined;
125
+ generated: undefined;
126
+ }, {}, {}>;
127
+ revokedAt: drizzle_orm_pg_core.PgColumn<{
128
+ name: "revoked_at";
129
+ tableName: string;
130
+ dataType: "date";
131
+ columnType: "PgTimestamp";
132
+ data: Date;
133
+ driverParam: string;
134
+ notNull: false;
135
+ hasDefault: false;
136
+ isPrimaryKey: false;
137
+ isAutoincrement: false;
138
+ hasRuntimeDefault: false;
139
+ enumValues: undefined;
140
+ baseColumn: never;
141
+ identity: undefined;
142
+ generated: undefined;
143
+ }, {}, {}>;
144
+ userAgent: drizzle_orm_pg_core.PgColumn<{
145
+ name: "user_agent";
146
+ tableName: string;
147
+ dataType: "string";
148
+ columnType: "PgText";
149
+ data: string;
150
+ driverParam: string;
151
+ notNull: false;
152
+ hasDefault: false;
153
+ isPrimaryKey: false;
154
+ isAutoincrement: false;
155
+ hasRuntimeDefault: false;
156
+ enumValues: [string, ...string[]];
157
+ baseColumn: never;
158
+ identity: undefined;
159
+ generated: undefined;
160
+ }, {}, {}>;
161
+ ip: drizzle_orm_pg_core.PgColumn<{
162
+ name: "ip";
163
+ tableName: string;
164
+ dataType: "string";
165
+ columnType: "PgText";
166
+ data: string;
167
+ driverParam: string;
168
+ notNull: false;
169
+ hasDefault: false;
170
+ isPrimaryKey: false;
171
+ isAutoincrement: false;
172
+ hasRuntimeDefault: false;
173
+ enumValues: [string, ...string[]];
174
+ baseColumn: never;
175
+ identity: undefined;
176
+ generated: undefined;
177
+ }, {}, {}>;
178
+ };
179
+ dialect: "pg";
180
+ }>;
181
+ accounts: PgTableWithColumns<{
182
+ name: string;
183
+ schema: undefined;
184
+ columns: {
185
+ id: drizzle_orm_pg_core.PgColumn<{
186
+ name: "id";
187
+ tableName: string;
188
+ dataType: "string";
189
+ columnType: "PgText";
190
+ data: string;
191
+ driverParam: string;
192
+ notNull: true;
193
+ hasDefault: false;
194
+ isPrimaryKey: true;
195
+ isAutoincrement: false;
196
+ hasRuntimeDefault: false;
197
+ enumValues: [string, ...string[]];
198
+ baseColumn: never;
199
+ identity: undefined;
200
+ generated: undefined;
201
+ }, {}, {}>;
202
+ userId: drizzle_orm_pg_core.PgColumn<{
203
+ name: "user_id";
204
+ tableName: string;
205
+ dataType: "string";
206
+ columnType: "PgText";
207
+ data: string;
208
+ driverParam: string;
209
+ notNull: true;
210
+ hasDefault: false;
211
+ isPrimaryKey: false;
212
+ isAutoincrement: false;
213
+ hasRuntimeDefault: false;
214
+ enumValues: [string, ...string[]];
215
+ baseColumn: never;
216
+ identity: undefined;
217
+ generated: undefined;
218
+ }, {}, {}>;
219
+ provider: drizzle_orm_pg_core.PgColumn<{
220
+ name: "provider";
221
+ tableName: string;
222
+ dataType: "string";
223
+ columnType: "PgText";
224
+ data: string;
225
+ driverParam: string;
226
+ notNull: true;
227
+ hasDefault: false;
228
+ isPrimaryKey: false;
229
+ isAutoincrement: false;
230
+ hasRuntimeDefault: false;
231
+ enumValues: [string, ...string[]];
232
+ baseColumn: never;
233
+ identity: undefined;
234
+ generated: undefined;
235
+ }, {}, {}>;
236
+ providerAccountId: drizzle_orm_pg_core.PgColumn<{
237
+ name: "provider_account_id";
238
+ tableName: string;
239
+ dataType: "string";
240
+ columnType: "PgText";
241
+ data: string;
242
+ driverParam: string;
243
+ notNull: true;
244
+ hasDefault: false;
245
+ isPrimaryKey: false;
246
+ isAutoincrement: false;
247
+ hasRuntimeDefault: false;
248
+ enumValues: [string, ...string[]];
249
+ baseColumn: never;
250
+ identity: undefined;
251
+ generated: undefined;
252
+ }, {}, {}>;
253
+ email: drizzle_orm_pg_core.PgColumn<{
254
+ name: "email";
255
+ tableName: string;
256
+ dataType: "string";
257
+ columnType: "PgText";
258
+ data: string;
259
+ driverParam: string;
260
+ notNull: false;
261
+ hasDefault: false;
262
+ isPrimaryKey: false;
263
+ isAutoincrement: false;
264
+ hasRuntimeDefault: false;
265
+ enumValues: [string, ...string[]];
266
+ baseColumn: never;
267
+ identity: undefined;
268
+ generated: undefined;
269
+ }, {}, {}>;
270
+ accessToken: drizzle_orm_pg_core.PgColumn<{
271
+ name: "access_token";
272
+ tableName: string;
273
+ dataType: "string";
274
+ columnType: "PgText";
275
+ data: string;
276
+ driverParam: string;
277
+ notNull: false;
278
+ hasDefault: false;
279
+ isPrimaryKey: false;
280
+ isAutoincrement: false;
281
+ hasRuntimeDefault: false;
282
+ enumValues: [string, ...string[]];
283
+ baseColumn: never;
284
+ identity: undefined;
285
+ generated: undefined;
286
+ }, {}, {}>;
287
+ refreshToken: drizzle_orm_pg_core.PgColumn<{
288
+ name: "refresh_token";
289
+ tableName: string;
290
+ dataType: "string";
291
+ columnType: "PgText";
292
+ data: string;
293
+ driverParam: string;
294
+ notNull: false;
295
+ hasDefault: false;
296
+ isPrimaryKey: false;
297
+ isAutoincrement: false;
298
+ hasRuntimeDefault: false;
299
+ enumValues: [string, ...string[]];
300
+ baseColumn: never;
301
+ identity: undefined;
302
+ generated: undefined;
303
+ }, {}, {}>;
304
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
305
+ name: "expires_at";
306
+ tableName: string;
307
+ dataType: "date";
308
+ columnType: "PgTimestamp";
309
+ data: Date;
310
+ driverParam: string;
311
+ notNull: false;
312
+ hasDefault: false;
313
+ isPrimaryKey: false;
314
+ isAutoincrement: false;
315
+ hasRuntimeDefault: false;
316
+ enumValues: undefined;
317
+ baseColumn: never;
318
+ identity: undefined;
319
+ generated: undefined;
320
+ }, {}, {}>;
321
+ tokenType: drizzle_orm_pg_core.PgColumn<{
322
+ name: "token_type";
323
+ tableName: string;
324
+ dataType: "string";
325
+ columnType: "PgText";
326
+ data: string;
327
+ driverParam: string;
328
+ notNull: false;
329
+ hasDefault: false;
330
+ isPrimaryKey: false;
331
+ isAutoincrement: false;
332
+ hasRuntimeDefault: false;
333
+ enumValues: [string, ...string[]];
334
+ baseColumn: never;
335
+ identity: undefined;
336
+ generated: undefined;
337
+ }, {}, {}>;
338
+ scope: drizzle_orm_pg_core.PgColumn<{
339
+ name: "scope";
340
+ tableName: string;
341
+ dataType: "string";
342
+ columnType: "PgText";
343
+ data: string;
344
+ driverParam: string;
345
+ notNull: false;
346
+ hasDefault: false;
347
+ isPrimaryKey: false;
348
+ isAutoincrement: false;
349
+ hasRuntimeDefault: false;
350
+ enumValues: [string, ...string[]];
351
+ baseColumn: never;
352
+ identity: undefined;
353
+ generated: undefined;
354
+ }, {}, {}>;
355
+ idToken: drizzle_orm_pg_core.PgColumn<{
356
+ name: "id_token";
357
+ tableName: string;
358
+ dataType: "string";
359
+ columnType: "PgText";
360
+ data: string;
361
+ driverParam: string;
362
+ notNull: false;
363
+ hasDefault: false;
364
+ isPrimaryKey: false;
365
+ isAutoincrement: false;
366
+ hasRuntimeDefault: false;
367
+ enumValues: [string, ...string[]];
368
+ baseColumn: never;
369
+ identity: undefined;
370
+ generated: undefined;
371
+ }, {}, {}>;
372
+ };
373
+ dialect: "pg";
374
+ }>;
375
+ verificationTokens: PgTableWithColumns<{
376
+ name: string;
377
+ schema: undefined;
378
+ columns: {
379
+ identifier: drizzle_orm_pg_core.PgColumn<{
380
+ name: "identifier";
381
+ tableName: string;
382
+ dataType: "string";
383
+ columnType: "PgText";
384
+ data: string;
385
+ driverParam: string;
386
+ notNull: true;
387
+ hasDefault: false;
388
+ isPrimaryKey: false;
389
+ isAutoincrement: false;
390
+ hasRuntimeDefault: false;
391
+ enumValues: [string, ...string[]];
392
+ baseColumn: never;
393
+ identity: undefined;
394
+ generated: undefined;
395
+ }, {}, {}>;
396
+ token: drizzle_orm_pg_core.PgColumn<{
397
+ name: "token";
398
+ tableName: string;
399
+ dataType: "string";
400
+ columnType: "PgText";
401
+ data: string;
402
+ driverParam: string;
403
+ notNull: true;
404
+ hasDefault: false;
405
+ isPrimaryKey: false;
406
+ isAutoincrement: false;
407
+ hasRuntimeDefault: false;
408
+ enumValues: [string, ...string[]];
409
+ baseColumn: never;
410
+ identity: undefined;
411
+ generated: undefined;
412
+ }, {}, {}>;
413
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
414
+ name: "expires_at";
415
+ tableName: string;
416
+ dataType: "date";
417
+ columnType: "PgTimestamp";
418
+ data: Date;
419
+ driverParam: string;
420
+ notNull: true;
421
+ hasDefault: false;
422
+ isPrimaryKey: false;
423
+ isAutoincrement: false;
424
+ hasRuntimeDefault: false;
425
+ enumValues: undefined;
426
+ baseColumn: never;
427
+ identity: undefined;
428
+ generated: undefined;
429
+ }, {}, {}>;
430
+ };
431
+ dialect: "pg";
432
+ }>;
433
+ auditLog: PgTableWithColumns<{
434
+ name: string;
435
+ schema: undefined;
436
+ columns: {
437
+ id: drizzle_orm_pg_core.PgColumn<{
438
+ name: "id";
439
+ tableName: string;
440
+ dataType: "string";
441
+ columnType: "PgText";
442
+ data: string;
443
+ driverParam: string;
444
+ notNull: true;
445
+ hasDefault: false;
446
+ isPrimaryKey: true;
447
+ isAutoincrement: false;
448
+ hasRuntimeDefault: false;
449
+ enumValues: [string, ...string[]];
450
+ baseColumn: never;
451
+ identity: undefined;
452
+ generated: undefined;
453
+ }, {}, {}>;
454
+ type: drizzle_orm_pg_core.PgColumn<{
455
+ name: "type";
456
+ tableName: string;
457
+ dataType: "string";
458
+ columnType: "PgText";
459
+ data: string;
460
+ driverParam: string;
461
+ notNull: true;
462
+ hasDefault: false;
463
+ isPrimaryKey: false;
464
+ isAutoincrement: false;
465
+ hasRuntimeDefault: false;
466
+ enumValues: [string, ...string[]];
467
+ baseColumn: never;
468
+ identity: undefined;
469
+ generated: undefined;
470
+ }, {}, {}>;
471
+ userId: drizzle_orm_pg_core.PgColumn<{
472
+ name: "user_id";
473
+ tableName: string;
474
+ dataType: "string";
475
+ columnType: "PgText";
476
+ data: string;
477
+ driverParam: string;
478
+ notNull: false;
479
+ hasDefault: false;
480
+ isPrimaryKey: false;
481
+ isAutoincrement: false;
482
+ hasRuntimeDefault: false;
483
+ enumValues: [string, ...string[]];
484
+ baseColumn: never;
485
+ identity: undefined;
486
+ generated: undefined;
487
+ }, {}, {}>;
488
+ sessionId: drizzle_orm_pg_core.PgColumn<{
489
+ name: "session_id";
490
+ tableName: string;
491
+ dataType: "string";
492
+ columnType: "PgText";
493
+ data: string;
494
+ driverParam: string;
495
+ notNull: false;
496
+ hasDefault: false;
497
+ isPrimaryKey: false;
498
+ isAutoincrement: false;
499
+ hasRuntimeDefault: false;
500
+ enumValues: [string, ...string[]];
501
+ baseColumn: never;
502
+ identity: undefined;
503
+ generated: undefined;
504
+ }, {}, {}>;
505
+ at: drizzle_orm_pg_core.PgColumn<{
506
+ name: "at";
507
+ tableName: string;
508
+ dataType: "date";
509
+ columnType: "PgTimestamp";
510
+ data: Date;
511
+ driverParam: string;
512
+ notNull: true;
513
+ hasDefault: true;
514
+ isPrimaryKey: false;
515
+ isAutoincrement: false;
516
+ hasRuntimeDefault: false;
517
+ enumValues: undefined;
518
+ baseColumn: never;
519
+ identity: undefined;
520
+ generated: undefined;
521
+ }, {}, {}>;
522
+ ip: drizzle_orm_pg_core.PgColumn<{
523
+ name: "ip";
524
+ tableName: string;
525
+ dataType: "string";
526
+ columnType: "PgText";
527
+ data: string;
528
+ driverParam: string;
529
+ notNull: false;
530
+ hasDefault: false;
531
+ isPrimaryKey: false;
532
+ isAutoincrement: false;
533
+ hasRuntimeDefault: false;
534
+ enumValues: [string, ...string[]];
535
+ baseColumn: never;
536
+ identity: undefined;
537
+ generated: undefined;
538
+ }, {}, {}>;
539
+ userAgent: drizzle_orm_pg_core.PgColumn<{
540
+ name: "user_agent";
541
+ tableName: string;
542
+ dataType: "string";
543
+ columnType: "PgText";
544
+ data: string;
545
+ driverParam: string;
546
+ notNull: false;
547
+ hasDefault: false;
548
+ isPrimaryKey: false;
549
+ isAutoincrement: false;
550
+ hasRuntimeDefault: false;
551
+ enumValues: [string, ...string[]];
552
+ baseColumn: never;
553
+ identity: undefined;
554
+ generated: undefined;
555
+ }, {}, {}>;
556
+ data: drizzle_orm_pg_core.PgColumn<{
557
+ name: "data";
558
+ tableName: string;
559
+ dataType: "json";
560
+ columnType: "PgJsonb";
561
+ data: unknown;
562
+ driverParam: unknown;
563
+ notNull: false;
564
+ hasDefault: false;
565
+ isPrimaryKey: false;
566
+ isAutoincrement: false;
567
+ hasRuntimeDefault: false;
568
+ enumValues: undefined;
569
+ baseColumn: never;
570
+ identity: undefined;
571
+ generated: undefined;
572
+ }, {}, {}>;
573
+ };
574
+ dialect: "pg";
575
+ }>;
576
+ };
577
+ relations: {
578
+ sessionsRelations: drizzle_orm.Relations<string, {
579
+ user: drizzle_orm.One<U["_"]["name"], true>;
580
+ }>;
581
+ accountsRelations: drizzle_orm.Relations<string, {
582
+ user: drizzle_orm.One<U["_"]["name"], true>;
583
+ }>;
584
+ auditLogRelations: drizzle_orm.Relations<string, {
585
+ user: drizzle_orm.One<U["_"]["name"], false>;
586
+ }>;
587
+ };
588
+ };
589
+ type HoleauthTables<U extends PgUsersTable> = ReturnType<typeof createHoleauthTables<U>>['tables'];
590
+ type PgDb = any;
591
+ interface CreateHoleauthAdaptersOptions<U extends PgUsersTable> {
592
+ db: PgDb;
593
+ tables: HoleauthTables<U>;
594
+ /** Column on the users table holding the email (default 'email'). */
595
+ userEmailColumn?: string;
596
+ /** Optional id generator. Default: crypto.randomUUID(). */
597
+ generateId?: () => string;
598
+ }
599
+ interface HoleauthAdapterBundle {
600
+ user: UserAdapter;
601
+ session: SessionAdapter;
602
+ account: AccountAdapter;
603
+ verificationToken: VerificationTokenAdapter;
604
+ auditLog: AuditLogAdapter;
605
+ transaction: TransactionAdapter;
606
+ }
607
+ declare function createHoleauthAdapters<U extends PgUsersTable>(opts: CreateHoleauthAdaptersOptions<U>): HoleauthAdapterBundle;
608
+
609
+ export { type CreateHoleauthAdaptersOptions, type CreateHoleauthTablesOptions, type HoleauthAdapterBundle, type PgDb, type PgUsersTable, createHoleauthAdapters, createHoleauthTables };