@absolutejs/auth 0.27.0-beta.0 → 0.27.0-beta.2

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,507 @@
1
+ import { type AnyPgDatabase } from '../stores/postgres';
2
+ import type { AccessTokenStore, ApiClientStore, ApiKeyStore } from './types';
3
+ export declare const accessTokensTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
4
+ name: "auth_access_tokens";
5
+ schema: undefined;
6
+ columns: {
7
+ client_id: import("drizzle-orm/pg-core").PgColumn<{
8
+ name: "client_id";
9
+ tableName: "auth_access_tokens";
10
+ dataType: "string";
11
+ columnType: "PgVarchar";
12
+ data: string;
13
+ driverParam: string;
14
+ notNull: true;
15
+ hasDefault: false;
16
+ isPrimaryKey: false;
17
+ isAutoincrement: false;
18
+ hasRuntimeDefault: false;
19
+ enumValues: [string, ...string[]];
20
+ baseColumn: never;
21
+ identity: undefined;
22
+ generated: undefined;
23
+ }, {}, {
24
+ length: 255;
25
+ }>;
26
+ created_at_ms: import("drizzle-orm/pg-core").PgColumn<{
27
+ name: "created_at_ms";
28
+ tableName: "auth_access_tokens";
29
+ dataType: "number";
30
+ columnType: "PgBigInt53";
31
+ data: number;
32
+ driverParam: string | number;
33
+ notNull: true;
34
+ hasDefault: false;
35
+ isPrimaryKey: false;
36
+ isAutoincrement: false;
37
+ hasRuntimeDefault: false;
38
+ enumValues: undefined;
39
+ baseColumn: never;
40
+ identity: undefined;
41
+ generated: undefined;
42
+ }, {}, {}>;
43
+ expires_at_ms: import("drizzle-orm/pg-core").PgColumn<{
44
+ name: "expires_at_ms";
45
+ tableName: "auth_access_tokens";
46
+ dataType: "number";
47
+ columnType: "PgBigInt53";
48
+ data: number;
49
+ driverParam: string | number;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: undefined;
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {}>;
60
+ hashed_token: import("drizzle-orm/pg-core").PgColumn<{
61
+ name: "hashed_token";
62
+ tableName: "auth_access_tokens";
63
+ dataType: "string";
64
+ columnType: "PgVarchar";
65
+ data: string;
66
+ driverParam: string;
67
+ notNull: true;
68
+ hasDefault: false;
69
+ isPrimaryKey: false;
70
+ isAutoincrement: false;
71
+ hasRuntimeDefault: false;
72
+ enumValues: [string, ...string[]];
73
+ baseColumn: never;
74
+ identity: undefined;
75
+ generated: undefined;
76
+ }, {}, {
77
+ length: 255;
78
+ }>;
79
+ owner_id: import("drizzle-orm/pg-core").PgColumn<{
80
+ name: "owner_id";
81
+ tableName: "auth_access_tokens";
82
+ dataType: "string";
83
+ columnType: "PgVarchar";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: false;
87
+ hasDefault: false;
88
+ isPrimaryKey: false;
89
+ isAutoincrement: false;
90
+ hasRuntimeDefault: false;
91
+ enumValues: [string, ...string[]];
92
+ baseColumn: never;
93
+ identity: undefined;
94
+ generated: undefined;
95
+ }, {}, {
96
+ length: 255;
97
+ }>;
98
+ scopes: import("drizzle-orm/pg-core").PgColumn<{
99
+ name: "scopes";
100
+ tableName: "auth_access_tokens";
101
+ dataType: "array";
102
+ columnType: "PgArray";
103
+ data: string[];
104
+ driverParam: string | string[];
105
+ notNull: true;
106
+ hasDefault: false;
107
+ isPrimaryKey: false;
108
+ isAutoincrement: false;
109
+ hasRuntimeDefault: false;
110
+ enumValues: [string, ...string[]];
111
+ baseColumn: import("drizzle-orm").Column<{
112
+ name: "scopes";
113
+ tableName: "auth_access_tokens";
114
+ dataType: "string";
115
+ columnType: "PgText";
116
+ data: string;
117
+ driverParam: string;
118
+ notNull: false;
119
+ hasDefault: false;
120
+ isPrimaryKey: false;
121
+ isAutoincrement: false;
122
+ hasRuntimeDefault: false;
123
+ enumValues: [string, ...string[]];
124
+ baseColumn: never;
125
+ identity: undefined;
126
+ generated: undefined;
127
+ }, {}, {}>;
128
+ identity: undefined;
129
+ generated: undefined;
130
+ }, {}, {
131
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
132
+ name: "scopes";
133
+ dataType: "string";
134
+ columnType: "PgText";
135
+ data: string;
136
+ enumValues: [string, ...string[]];
137
+ driverParam: string;
138
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
139
+ size: undefined;
140
+ }>;
141
+ token_id: import("drizzle-orm/pg-core").PgColumn<{
142
+ name: "token_id";
143
+ tableName: "auth_access_tokens";
144
+ dataType: "string";
145
+ columnType: "PgVarchar";
146
+ data: string;
147
+ driverParam: string;
148
+ notNull: true;
149
+ hasDefault: false;
150
+ isPrimaryKey: true;
151
+ isAutoincrement: false;
152
+ hasRuntimeDefault: false;
153
+ enumValues: [string, ...string[]];
154
+ baseColumn: never;
155
+ identity: undefined;
156
+ generated: undefined;
157
+ }, {}, {
158
+ length: 255;
159
+ }>;
160
+ };
161
+ dialect: "pg";
162
+ }>;
163
+ export declare const apiClientsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
164
+ name: "auth_api_clients";
165
+ schema: undefined;
166
+ columns: {
167
+ client_id: import("drizzle-orm/pg-core").PgColumn<{
168
+ name: "client_id";
169
+ tableName: "auth_api_clients";
170
+ dataType: "string";
171
+ columnType: "PgVarchar";
172
+ data: string;
173
+ driverParam: string;
174
+ notNull: true;
175
+ hasDefault: false;
176
+ isPrimaryKey: true;
177
+ isAutoincrement: false;
178
+ hasRuntimeDefault: false;
179
+ enumValues: [string, ...string[]];
180
+ baseColumn: never;
181
+ identity: undefined;
182
+ generated: undefined;
183
+ }, {}, {
184
+ length: 255;
185
+ }>;
186
+ created_at_ms: import("drizzle-orm/pg-core").PgColumn<{
187
+ name: "created_at_ms";
188
+ tableName: "auth_api_clients";
189
+ dataType: "number";
190
+ columnType: "PgBigInt53";
191
+ data: number;
192
+ driverParam: string | number;
193
+ notNull: true;
194
+ hasDefault: false;
195
+ isPrimaryKey: false;
196
+ isAutoincrement: false;
197
+ hasRuntimeDefault: false;
198
+ enumValues: undefined;
199
+ baseColumn: never;
200
+ identity: undefined;
201
+ generated: undefined;
202
+ }, {}, {}>;
203
+ hashed_secret: import("drizzle-orm/pg-core").PgColumn<{
204
+ name: "hashed_secret";
205
+ tableName: "auth_api_clients";
206
+ dataType: "string";
207
+ columnType: "PgVarchar";
208
+ data: string;
209
+ driverParam: string;
210
+ notNull: true;
211
+ hasDefault: false;
212
+ isPrimaryKey: false;
213
+ isAutoincrement: false;
214
+ hasRuntimeDefault: false;
215
+ enumValues: [string, ...string[]];
216
+ baseColumn: never;
217
+ identity: undefined;
218
+ generated: undefined;
219
+ }, {}, {
220
+ length: 255;
221
+ }>;
222
+ name: import("drizzle-orm/pg-core").PgColumn<{
223
+ name: "name";
224
+ tableName: "auth_api_clients";
225
+ dataType: "string";
226
+ columnType: "PgVarchar";
227
+ data: string;
228
+ driverParam: string;
229
+ notNull: true;
230
+ hasDefault: false;
231
+ isPrimaryKey: false;
232
+ isAutoincrement: false;
233
+ hasRuntimeDefault: false;
234
+ enumValues: [string, ...string[]];
235
+ baseColumn: never;
236
+ identity: undefined;
237
+ generated: undefined;
238
+ }, {}, {
239
+ length: 255;
240
+ }>;
241
+ owner_id: import("drizzle-orm/pg-core").PgColumn<{
242
+ name: "owner_id";
243
+ tableName: "auth_api_clients";
244
+ dataType: "string";
245
+ columnType: "PgVarchar";
246
+ data: string;
247
+ driverParam: string;
248
+ notNull: false;
249
+ hasDefault: false;
250
+ isPrimaryKey: false;
251
+ isAutoincrement: false;
252
+ hasRuntimeDefault: false;
253
+ enumValues: [string, ...string[]];
254
+ baseColumn: never;
255
+ identity: undefined;
256
+ generated: undefined;
257
+ }, {}, {
258
+ length: 255;
259
+ }>;
260
+ scopes: import("drizzle-orm/pg-core").PgColumn<{
261
+ name: "scopes";
262
+ tableName: "auth_api_clients";
263
+ dataType: "array";
264
+ columnType: "PgArray";
265
+ data: string[];
266
+ driverParam: string | string[];
267
+ notNull: true;
268
+ hasDefault: false;
269
+ isPrimaryKey: false;
270
+ isAutoincrement: false;
271
+ hasRuntimeDefault: false;
272
+ enumValues: [string, ...string[]];
273
+ baseColumn: import("drizzle-orm").Column<{
274
+ name: "scopes";
275
+ tableName: "auth_api_clients";
276
+ dataType: "string";
277
+ columnType: "PgText";
278
+ data: string;
279
+ driverParam: string;
280
+ notNull: false;
281
+ hasDefault: false;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: [string, ...string[]];
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ identity: undefined;
291
+ generated: undefined;
292
+ }, {}, {
293
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
294
+ name: "scopes";
295
+ dataType: "string";
296
+ columnType: "PgText";
297
+ data: string;
298
+ enumValues: [string, ...string[]];
299
+ driverParam: string;
300
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
301
+ size: undefined;
302
+ }>;
303
+ };
304
+ dialect: "pg";
305
+ }>;
306
+ export declare const apiKeysTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
307
+ name: "auth_api_keys";
308
+ schema: undefined;
309
+ columns: {
310
+ created_at_ms: import("drizzle-orm/pg-core").PgColumn<{
311
+ name: "created_at_ms";
312
+ tableName: "auth_api_keys";
313
+ dataType: "number";
314
+ columnType: "PgBigInt53";
315
+ data: number;
316
+ driverParam: string | number;
317
+ notNull: true;
318
+ hasDefault: false;
319
+ isPrimaryKey: false;
320
+ isAutoincrement: false;
321
+ hasRuntimeDefault: false;
322
+ enumValues: undefined;
323
+ baseColumn: never;
324
+ identity: undefined;
325
+ generated: undefined;
326
+ }, {}, {}>;
327
+ expires_at_ms: import("drizzle-orm/pg-core").PgColumn<{
328
+ name: "expires_at_ms";
329
+ tableName: "auth_api_keys";
330
+ dataType: "number";
331
+ columnType: "PgBigInt53";
332
+ data: number;
333
+ driverParam: string | number;
334
+ notNull: false;
335
+ hasDefault: false;
336
+ isPrimaryKey: false;
337
+ isAutoincrement: false;
338
+ hasRuntimeDefault: false;
339
+ enumValues: undefined;
340
+ baseColumn: never;
341
+ identity: undefined;
342
+ generated: undefined;
343
+ }, {}, {}>;
344
+ hashed_key: import("drizzle-orm/pg-core").PgColumn<{
345
+ name: "hashed_key";
346
+ tableName: "auth_api_keys";
347
+ dataType: "string";
348
+ columnType: "PgVarchar";
349
+ data: string;
350
+ driverParam: string;
351
+ notNull: true;
352
+ hasDefault: false;
353
+ isPrimaryKey: false;
354
+ isAutoincrement: false;
355
+ hasRuntimeDefault: false;
356
+ enumValues: [string, ...string[]];
357
+ baseColumn: never;
358
+ identity: undefined;
359
+ generated: undefined;
360
+ }, {}, {
361
+ length: 255;
362
+ }>;
363
+ key_id: import("drizzle-orm/pg-core").PgColumn<{
364
+ name: "key_id";
365
+ tableName: "auth_api_keys";
366
+ dataType: "string";
367
+ columnType: "PgVarchar";
368
+ data: string;
369
+ driverParam: string;
370
+ notNull: true;
371
+ hasDefault: false;
372
+ isPrimaryKey: true;
373
+ isAutoincrement: false;
374
+ hasRuntimeDefault: false;
375
+ enumValues: [string, ...string[]];
376
+ baseColumn: never;
377
+ identity: undefined;
378
+ generated: undefined;
379
+ }, {}, {
380
+ length: 255;
381
+ }>;
382
+ last_used_at_ms: import("drizzle-orm/pg-core").PgColumn<{
383
+ name: "last_used_at_ms";
384
+ tableName: "auth_api_keys";
385
+ dataType: "number";
386
+ columnType: "PgBigInt53";
387
+ data: number;
388
+ driverParam: string | number;
389
+ notNull: false;
390
+ hasDefault: false;
391
+ isPrimaryKey: false;
392
+ isAutoincrement: false;
393
+ hasRuntimeDefault: false;
394
+ enumValues: undefined;
395
+ baseColumn: never;
396
+ identity: undefined;
397
+ generated: undefined;
398
+ }, {}, {}>;
399
+ name: import("drizzle-orm/pg-core").PgColumn<{
400
+ name: "name";
401
+ tableName: "auth_api_keys";
402
+ dataType: "string";
403
+ columnType: "PgVarchar";
404
+ data: string;
405
+ driverParam: string;
406
+ notNull: true;
407
+ hasDefault: false;
408
+ isPrimaryKey: false;
409
+ isAutoincrement: false;
410
+ hasRuntimeDefault: false;
411
+ enumValues: [string, ...string[]];
412
+ baseColumn: never;
413
+ identity: undefined;
414
+ generated: undefined;
415
+ }, {}, {
416
+ length: 255;
417
+ }>;
418
+ owner_id: import("drizzle-orm/pg-core").PgColumn<{
419
+ name: "owner_id";
420
+ tableName: "auth_api_keys";
421
+ dataType: "string";
422
+ columnType: "PgVarchar";
423
+ data: string;
424
+ driverParam: string;
425
+ notNull: false;
426
+ hasDefault: false;
427
+ isPrimaryKey: false;
428
+ isAutoincrement: false;
429
+ hasRuntimeDefault: false;
430
+ enumValues: [string, ...string[]];
431
+ baseColumn: never;
432
+ identity: undefined;
433
+ generated: undefined;
434
+ }, {}, {
435
+ length: 255;
436
+ }>;
437
+ prefix: import("drizzle-orm/pg-core").PgColumn<{
438
+ name: "prefix";
439
+ tableName: "auth_api_keys";
440
+ dataType: "string";
441
+ columnType: "PgVarchar";
442
+ data: string;
443
+ driverParam: string;
444
+ notNull: true;
445
+ hasDefault: false;
446
+ isPrimaryKey: false;
447
+ isAutoincrement: false;
448
+ hasRuntimeDefault: false;
449
+ enumValues: [string, ...string[]];
450
+ baseColumn: never;
451
+ identity: undefined;
452
+ generated: undefined;
453
+ }, {}, {
454
+ length: 255;
455
+ }>;
456
+ scopes: import("drizzle-orm/pg-core").PgColumn<{
457
+ name: "scopes";
458
+ tableName: "auth_api_keys";
459
+ dataType: "array";
460
+ columnType: "PgArray";
461
+ data: string[];
462
+ driverParam: string | string[];
463
+ notNull: true;
464
+ hasDefault: false;
465
+ isPrimaryKey: false;
466
+ isAutoincrement: false;
467
+ hasRuntimeDefault: false;
468
+ enumValues: [string, ...string[]];
469
+ baseColumn: import("drizzle-orm").Column<{
470
+ name: "scopes";
471
+ tableName: "auth_api_keys";
472
+ dataType: "string";
473
+ columnType: "PgText";
474
+ data: string;
475
+ driverParam: string;
476
+ notNull: false;
477
+ hasDefault: false;
478
+ isPrimaryKey: false;
479
+ isAutoincrement: false;
480
+ hasRuntimeDefault: false;
481
+ enumValues: [string, ...string[]];
482
+ baseColumn: never;
483
+ identity: undefined;
484
+ generated: undefined;
485
+ }, {}, {}>;
486
+ identity: undefined;
487
+ generated: undefined;
488
+ }, {}, {
489
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
490
+ name: "scopes";
491
+ dataType: "string";
492
+ columnType: "PgText";
493
+ data: string;
494
+ enumValues: [string, ...string[]];
495
+ driverParam: string;
496
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
497
+ size: undefined;
498
+ }>;
499
+ };
500
+ dialect: "pg";
501
+ }>;
502
+ export declare const createNeonAccessTokenStore: (databaseUrl: string) => AccessTokenStore;
503
+ export declare const createNeonApiClientStore: (databaseUrl: string) => ApiClientStore;
504
+ export declare const createNeonApiKeyStore: (databaseUrl: string) => ApiKeyStore;
505
+ export declare const createPostgresAccessTokenStore: (db: AnyPgDatabase) => AccessTokenStore;
506
+ export declare const createPostgresApiClientStore: (db: AnyPgDatabase) => ApiClientStore;
507
+ export declare const createPostgresApiKeyStore: (db: AnyPgDatabase) => ApiKeyStore;
@@ -0,0 +1,83 @@
1
+ import { Elysia } from 'elysia';
2
+ import { type ApiKeysConfig } from './config';
3
+ export declare const apiKeysRoutes: ({ accessTokenStore, accessTokenTtlMs, apiClientStore, tokenRoute }: ApiKeysConfig) => Elysia<"", {
4
+ decorator: {};
5
+ store: {};
6
+ derive: {};
7
+ resolve: {};
8
+ }, {
9
+ typebox: {};
10
+ error: {};
11
+ }, {
12
+ schema: {};
13
+ standaloneSchema: {};
14
+ macro: {};
15
+ macroFn: {};
16
+ parser: {};
17
+ response: {};
18
+ }, {}, {
19
+ derive: {};
20
+ resolve: {};
21
+ schema: {};
22
+ standaloneSchema: {};
23
+ response: {};
24
+ }, {
25
+ derive: {};
26
+ resolve: {};
27
+ schema: {};
28
+ standaloneSchema: {};
29
+ response: {};
30
+ }> | Elysia<"", {
31
+ decorator: {};
32
+ store: {};
33
+ derive: {};
34
+ resolve: {};
35
+ }, {
36
+ typebox: {};
37
+ error: {};
38
+ }, {
39
+ schema: {};
40
+ standaloneSchema: {};
41
+ macro: {};
42
+ macroFn: {};
43
+ parser: {};
44
+ response: {};
45
+ }, {
46
+ [x: string]: {
47
+ post: {
48
+ body: {
49
+ client_id?: string | undefined;
50
+ client_secret?: string | undefined;
51
+ grant_type?: string | undefined;
52
+ scope?: string | undefined;
53
+ };
54
+ params: {};
55
+ query: unknown;
56
+ headers: unknown;
57
+ response: {
58
+ 200: Response;
59
+ 422: {
60
+ type: "validation";
61
+ on: string;
62
+ summary?: string;
63
+ message?: string;
64
+ found?: unknown;
65
+ property?: string;
66
+ expected?: string;
67
+ };
68
+ };
69
+ };
70
+ };
71
+ }, {
72
+ derive: {};
73
+ resolve: {};
74
+ schema: {};
75
+ standaloneSchema: {};
76
+ response: {};
77
+ }, {
78
+ derive: {};
79
+ resolve: {};
80
+ schema: {};
81
+ standaloneSchema: {};
82
+ response: {};
83
+ }>;
@@ -0,0 +1,53 @@
1
+ export type ApiKey = {
2
+ createdAt: number;
3
+ expiresAt?: number;
4
+ hashedKey: string;
5
+ keyId: string;
6
+ lastUsedAt?: number;
7
+ name: string;
8
+ ownerId?: string;
9
+ prefix: string;
10
+ scopes: string[];
11
+ };
12
+ export type ApiKeyStore = {
13
+ deleteKey: (keyId: string) => Promise<void>;
14
+ findByHashedKey: (hashedKey: string) => Promise<ApiKey | undefined>;
15
+ listKeys: (ownerId?: string) => Promise<ApiKey[]>;
16
+ saveKey: (key: ApiKey) => Promise<void>;
17
+ touchKey: (keyId: string, lastUsedAt: number) => Promise<void>;
18
+ };
19
+ export type ApiClient = {
20
+ clientId: string;
21
+ createdAt: number;
22
+ hashedSecret: string;
23
+ name: string;
24
+ ownerId?: string;
25
+ scopes: string[];
26
+ };
27
+ export type ApiClientStore = {
28
+ deleteClient: (clientId: string) => Promise<void>;
29
+ findClient: (clientId: string) => Promise<ApiClient | undefined>;
30
+ listClients: (ownerId?: string) => Promise<ApiClient[]>;
31
+ saveClient: (client: ApiClient) => Promise<void>;
32
+ };
33
+ export type AccessToken = {
34
+ clientId: string;
35
+ createdAt: number;
36
+ expiresAt: number;
37
+ hashedToken: string;
38
+ ownerId?: string;
39
+ scopes: string[];
40
+ tokenId: string;
41
+ };
42
+ export type AccessTokenStore = {
43
+ deleteExpired: (now: number) => Promise<void>;
44
+ deleteToken: (tokenId: string) => Promise<void>;
45
+ findByHashedToken: (hashedToken: string) => Promise<AccessToken | undefined>;
46
+ saveToken: (token: AccessToken) => Promise<void>;
47
+ };
48
+ export type ApiPrincipal = {
49
+ id: string;
50
+ kind: 'access_token' | 'api_key';
51
+ ownerId?: string;
52
+ scopes: string[];
53
+ };