own-auth 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,648 @@
1
+ export class PostgresAuthStorage {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ async createUser(user) {
7
+ const row = await this.insertOne("own_auth_users", userColumns, user, userReturning);
8
+ return mapUser(row);
9
+ }
10
+ async updateUser(id, patch) {
11
+ const row = await this.updateOne("own_auth_users", userColumns, id, patch, userReturning);
12
+ return row ? mapUser(row) : null;
13
+ }
14
+ async getUserById(id) {
15
+ const row = await this.selectOne(`${userReturning} from own_auth_users where id = $1`, [id]);
16
+ return row ? mapUser(row) : null;
17
+ }
18
+ async getUserByEmail(email) {
19
+ const row = await this.selectOne(`${userReturning} from own_auth_users where lower(email) = lower($1)`, [email]);
20
+ return row ? mapUser(row) : null;
21
+ }
22
+ async getUserByPhone(phone) {
23
+ const row = await this.selectOne(`${userReturning} from own_auth_users where phone = $1`, [phone]);
24
+ return row ? mapUser(row) : null;
25
+ }
26
+ async createAccount(account) {
27
+ const row = await this.insertOne("own_auth_accounts", accountColumns, account, accountReturning);
28
+ return mapAccount(row);
29
+ }
30
+ async getAccountByProvider(provider, providerAccountId) {
31
+ const row = await this.selectOne(`${accountReturning} from own_auth_accounts where provider = $1 and provider_account_id = $2`, [provider, providerAccountId]);
32
+ return row ? mapAccount(row) : null;
33
+ }
34
+ async createSession(session) {
35
+ const row = await this.insertOne("own_auth_sessions", sessionColumns, session, sessionReturning);
36
+ return mapSession(row);
37
+ }
38
+ async getSessionByTokenHash(tokenHash) {
39
+ const row = await this.selectOne(`${sessionReturning} from own_auth_sessions where token_hash = $1`, [tokenHash]);
40
+ return row ? mapSession(row) : null;
41
+ }
42
+ async updateSession(id, patch) {
43
+ const row = await this.updateOne("own_auth_sessions", sessionColumns, id, patch, sessionReturning);
44
+ return row ? mapSession(row) : null;
45
+ }
46
+ async listSessionsByUserId(userId) {
47
+ const result = await this.db.query(`${sessionReturning} from own_auth_sessions where user_id = $1 order by created_at desc`, [userId]);
48
+ return result.rows.map(mapSession);
49
+ }
50
+ async createToken(token) {
51
+ const row = await this.insertOne("own_auth_tokens", tokenColumns, token, tokenReturning);
52
+ return mapToken(row);
53
+ }
54
+ async getTokenByHash(tokenHash, type) {
55
+ const row = type
56
+ ? await this.selectOne(`${tokenReturning} from own_auth_tokens where token_hash = $1 and type = $2`, [tokenHash, type])
57
+ : await this.selectOne(`${tokenReturning} from own_auth_tokens where token_hash = $1`, [
58
+ tokenHash
59
+ ]);
60
+ return row ? mapToken(row) : null;
61
+ }
62
+ async updateToken(id, patch) {
63
+ const row = await this.updateOne("own_auth_tokens", tokenColumns, id, patch, tokenReturning);
64
+ return row ? mapToken(row) : null;
65
+ }
66
+ async createSmsOtp(otp) {
67
+ const row = await this.insertOne("own_auth_sms_otps", smsOtpColumns, otp, smsOtpReturning);
68
+ return mapSmsOtp(row);
69
+ }
70
+ async getLatestSmsOtp(phone, purpose) {
71
+ const row = await this.selectOne(`${smsOtpReturning} from own_auth_sms_otps where phone = $1 and purpose = $2 order by created_at desc limit 1`, [phone, purpose]);
72
+ return row ? mapSmsOtp(row) : null;
73
+ }
74
+ async updateSmsOtp(id, patch) {
75
+ const row = await this.updateOne("own_auth_sms_otps", smsOtpColumns, id, patch, smsOtpReturning);
76
+ return row ? mapSmsOtp(row) : null;
77
+ }
78
+ async createApiKey(apiKey) {
79
+ const row = await this.insertOne("own_auth_api_keys", apiKeyColumns, apiKey, apiKeyReturning);
80
+ return mapApiKey(row);
81
+ }
82
+ async getApiKeyByPrefix(keyPrefix) {
83
+ const row = await this.selectOne(`${apiKeyReturning} from own_auth_api_keys where key_prefix = $1`, [keyPrefix]);
84
+ return row ? mapApiKey(row) : null;
85
+ }
86
+ async updateApiKey(id, patch) {
87
+ const row = await this.updateOne("own_auth_api_keys", apiKeyColumns, id, patch, apiKeyReturning);
88
+ return row ? mapApiKey(row) : null;
89
+ }
90
+ async createOrganisation(organisation) {
91
+ const row = await this.insertOne("own_auth_organisations", organisationColumns, organisation, organisationReturning);
92
+ return mapOrganisation(row);
93
+ }
94
+ async updateOrganisation(id, patch) {
95
+ const row = await this.updateOne("own_auth_organisations", organisationColumns, id, patch, organisationReturning);
96
+ return row ? mapOrganisation(row) : null;
97
+ }
98
+ async getOrganisationById(id) {
99
+ const row = await this.selectOne(`${organisationReturning} from own_auth_organisations where id = $1`, [id]);
100
+ return row ? mapOrganisation(row) : null;
101
+ }
102
+ async getOrganisationBySlug(slug) {
103
+ const row = await this.selectOne(`${organisationReturning} from own_auth_organisations where slug = $1`, [slug]);
104
+ return row ? mapOrganisation(row) : null;
105
+ }
106
+ async createOrganisationMember(member) {
107
+ const row = await this.insertOne("own_auth_organisation_members", organisationMemberColumns, member, organisationMemberReturning);
108
+ return mapOrganisationMember(row);
109
+ }
110
+ async updateOrganisationMember(id, patch) {
111
+ const row = await this.updateOne("own_auth_organisation_members", organisationMemberColumns, id, patch, organisationMemberReturning);
112
+ return row ? mapOrganisationMember(row) : null;
113
+ }
114
+ async getOrganisationMember(organisationId, userId) {
115
+ const row = await this.selectOne(`${organisationMemberReturning} from own_auth_organisation_members where organisation_id = $1 and user_id = $2`, [organisationId, userId]);
116
+ return row ? mapOrganisationMember(row) : null;
117
+ }
118
+ async getOrganisationMemberById(id) {
119
+ const row = await this.selectOne(`${organisationMemberReturning} from own_auth_organisation_members where id = $1`, [id]);
120
+ return row ? mapOrganisationMember(row) : null;
121
+ }
122
+ async listOrganisationMembers(organisationId) {
123
+ const result = await this.db.query(`${organisationMemberReturning} from own_auth_organisation_members where organisation_id = $1 order by created_at asc`, [organisationId]);
124
+ return result.rows.map(mapOrganisationMember);
125
+ }
126
+ async createInvitation(invitation) {
127
+ const row = await this.insertOne("own_auth_invitations", invitationColumns, invitation, invitationReturning);
128
+ return mapInvitation(row);
129
+ }
130
+ async updateInvitation(id, patch) {
131
+ const row = await this.updateOne("own_auth_invitations", invitationColumns, id, patch, invitationReturning);
132
+ return row ? mapInvitation(row) : null;
133
+ }
134
+ async getInvitationById(id) {
135
+ const row = await this.selectOne(`${invitationReturning} from own_auth_invitations where id = $1`, [id]);
136
+ return row ? mapInvitation(row) : null;
137
+ }
138
+ async getPendingInvitationByOrganisationAndEmail(organisationId, email) {
139
+ const row = await this.selectOne(`${invitationReturning} from own_auth_invitations where organisation_id = $1 and lower(email) = lower($2) and status = 'pending' order by created_at desc limit 1`, [organisationId, email]);
140
+ return row ? mapInvitation(row) : null;
141
+ }
142
+ async createAuditEvent(event) {
143
+ const row = await this.insertOne("own_auth_audit_events", auditEventColumns, event, auditEventReturning);
144
+ return mapAuditEvent(row);
145
+ }
146
+ async listAuditEvents(filter) {
147
+ const clauses = [];
148
+ const params = [];
149
+ if (filter?.userId) {
150
+ params.push(filter.userId);
151
+ clauses.push(`(actor_user_id = $${params.length} or target_user_id = $${params.length})`);
152
+ }
153
+ if (filter?.organisationId) {
154
+ params.push(filter.organisationId);
155
+ clauses.push(`organisation_id = $${params.length}`);
156
+ }
157
+ if (filter?.apiKeyId) {
158
+ params.push(filter.apiKeyId);
159
+ clauses.push(`api_key_id = $${params.length}`);
160
+ }
161
+ const where = clauses.length > 0 ? ` where ${clauses.join(" and ")}` : "";
162
+ const result = await this.db.query(`${auditEventReturning} from own_auth_audit_events${where} order by created_at desc`, params);
163
+ return result.rows.map(mapAuditEvent);
164
+ }
165
+ async insertOne(table, columns, entity, returning) {
166
+ const entries = Object.entries(columns).filter(([key]) => entity[key] !== undefined);
167
+ const columnNames = entries.map(([, column]) => column);
168
+ const params = entries.map(([key]) => toPostgresValue(entity[key]));
169
+ const placeholders = params.map((_, index) => `$${index + 1}`);
170
+ const result = await this.db.query(`insert into ${table} (${columnNames.join(", ")}) values (${placeholders.join(", ")}) returning ${returning}`, params);
171
+ return expectOne(result.rows);
172
+ }
173
+ async updateOne(table, columns, id, patch, returning) {
174
+ const entries = Object.entries(columns).filter(([key]) => key !== "id" && patch[key] !== undefined);
175
+ if (entries.length === 0) {
176
+ return this.selectOne(`${returning} from ${table} where id = $1`, [id]);
177
+ }
178
+ const params = entries.map(([key]) => toPostgresValue(patch[key]));
179
+ params.push(id);
180
+ const assignments = entries.map(([, column], index) => `${column} = $${index + 1}`);
181
+ const result = await this.db.query(`update ${table} set ${assignments.join(", ")} where id = $${params.length} returning ${returning}`, params);
182
+ return result.rows[0] ?? null;
183
+ }
184
+ async selectOne(sql, params) {
185
+ const result = await this.db.query(`select ${sql}`, params);
186
+ return result.rows[0] ?? null;
187
+ }
188
+ }
189
+ export function createPostgresAuthStorage(db) {
190
+ return new PostgresAuthStorage(db);
191
+ }
192
+ function expectOne(rows) {
193
+ const row = rows[0];
194
+ if (!row) {
195
+ throw new Error("Postgres query returned no rows");
196
+ }
197
+ return row;
198
+ }
199
+ function toPostgresValue(value) {
200
+ if (value && typeof value === "object" && !(value instanceof Date) && !Array.isArray(value)) {
201
+ return JSON.stringify(value);
202
+ }
203
+ return value;
204
+ }
205
+ function dateValue(value) {
206
+ if (value instanceof Date) {
207
+ return value;
208
+ }
209
+ if (typeof value === "string" || typeof value === "number") {
210
+ return new Date(value);
211
+ }
212
+ throw new Error("Expected Postgres date value");
213
+ }
214
+ function nullableDate(value) {
215
+ return value == null ? null : dateValue(value);
216
+ }
217
+ function nullableString(value) {
218
+ return typeof value === "string" ? value : null;
219
+ }
220
+ function stringValue(value) {
221
+ if (typeof value !== "string") {
222
+ throw new Error("Expected Postgres string value");
223
+ }
224
+ return value;
225
+ }
226
+ function numberValue(value) {
227
+ if (typeof value !== "number") {
228
+ throw new Error("Expected Postgres number value");
229
+ }
230
+ return value;
231
+ }
232
+ function jsonRecord(value) {
233
+ if (!value) {
234
+ return {};
235
+ }
236
+ if (typeof value === "string") {
237
+ return JSON.parse(value);
238
+ }
239
+ if (typeof value === "object" && !Array.isArray(value)) {
240
+ return value;
241
+ }
242
+ return {};
243
+ }
244
+ function stringArray(value) {
245
+ if (!value) {
246
+ return [];
247
+ }
248
+ if (Array.isArray(value)) {
249
+ return value.filter((item) => typeof item === "string");
250
+ }
251
+ return [];
252
+ }
253
+ function mapUser(row) {
254
+ return {
255
+ id: stringValue(row.id),
256
+ email: nullableString(row.email),
257
+ emailVerifiedAt: nullableDate(row.email_verified_at),
258
+ phone: nullableString(row.phone),
259
+ phoneVerifiedAt: nullableDate(row.phone_verified_at),
260
+ passwordHash: nullableString(row.password_hash),
261
+ name: nullableString(row.name),
262
+ imageUrl: nullableString(row.image_url),
263
+ disabledAt: nullableDate(row.disabled_at),
264
+ metadata: jsonRecord(row.metadata),
265
+ createdAt: dateValue(row.created_at),
266
+ updatedAt: dateValue(row.updated_at),
267
+ lastLoginAt: nullableDate(row.last_login_at)
268
+ };
269
+ }
270
+ function mapAccount(row) {
271
+ return {
272
+ id: stringValue(row.id),
273
+ userId: stringValue(row.user_id),
274
+ provider: stringValue(row.provider),
275
+ providerAccountId: stringValue(row.provider_account_id),
276
+ providerEmail: nullableString(row.provider_email),
277
+ providerPhone: nullableString(row.provider_phone),
278
+ createdAt: dateValue(row.created_at),
279
+ updatedAt: dateValue(row.updated_at)
280
+ };
281
+ }
282
+ function mapSession(row) {
283
+ return {
284
+ id: stringValue(row.id),
285
+ userId: stringValue(row.user_id),
286
+ tokenHash: stringValue(row.token_hash),
287
+ createdAt: dateValue(row.created_at),
288
+ lastActiveAt: dateValue(row.last_active_at),
289
+ expiresAt: dateValue(row.expires_at),
290
+ idleExpiresAt: dateValue(row.idle_expires_at),
291
+ ipAddress: nullableString(row.ip_address),
292
+ userAgent: nullableString(row.user_agent),
293
+ revokedAt: nullableDate(row.revoked_at),
294
+ revokeReason: nullableString(row.revoke_reason)
295
+ };
296
+ }
297
+ function mapToken(row) {
298
+ return {
299
+ id: stringValue(row.id),
300
+ tokenHash: stringValue(row.token_hash),
301
+ type: stringValue(row.type),
302
+ userId: nullableString(row.user_id),
303
+ email: nullableString(row.email),
304
+ phone: nullableString(row.phone),
305
+ organisationId: nullableString(row.organisation_id),
306
+ expiresAt: dateValue(row.expires_at),
307
+ usedAt: nullableDate(row.used_at),
308
+ createdAt: dateValue(row.created_at)
309
+ };
310
+ }
311
+ function mapSmsOtp(row) {
312
+ return {
313
+ id: stringValue(row.id),
314
+ phone: stringValue(row.phone),
315
+ userId: nullableString(row.user_id),
316
+ codeHash: stringValue(row.code_hash),
317
+ purpose: stringValue(row.purpose),
318
+ expiresAt: dateValue(row.expires_at),
319
+ attempts: numberValue(row.attempts),
320
+ maxAttempts: numberValue(row.max_attempts),
321
+ consumedAt: nullableDate(row.consumed_at),
322
+ createdAt: dateValue(row.created_at),
323
+ lastSentAt: dateValue(row.last_sent_at)
324
+ };
325
+ }
326
+ function mapApiKey(row) {
327
+ return {
328
+ id: stringValue(row.id),
329
+ keyPrefix: stringValue(row.key_prefix),
330
+ keyHash: stringValue(row.key_hash),
331
+ name: stringValue(row.name),
332
+ userId: nullableString(row.user_id),
333
+ organisationId: nullableString(row.organisation_id),
334
+ scopes: stringArray(row.scopes),
335
+ status: stringValue(row.status),
336
+ expiresAt: nullableDate(row.expires_at),
337
+ lastUsedAt: nullableDate(row.last_used_at),
338
+ createdAt: dateValue(row.created_at),
339
+ revokedAt: nullableDate(row.revoked_at),
340
+ revokedBy: nullableString(row.revoked_by),
341
+ metadata: jsonRecord(row.metadata)
342
+ };
343
+ }
344
+ function mapOrganisation(row) {
345
+ return {
346
+ id: stringValue(row.id),
347
+ name: stringValue(row.name),
348
+ slug: stringValue(row.slug),
349
+ ownerUserId: stringValue(row.owner_user_id),
350
+ metadata: jsonRecord(row.metadata),
351
+ createdAt: dateValue(row.created_at),
352
+ updatedAt: dateValue(row.updated_at),
353
+ disabledAt: nullableDate(row.disabled_at)
354
+ };
355
+ }
356
+ function mapOrganisationMember(row) {
357
+ return {
358
+ id: stringValue(row.id),
359
+ organisationId: stringValue(row.organisation_id),
360
+ userId: stringValue(row.user_id),
361
+ role: stringValue(row.role),
362
+ status: stringValue(row.status),
363
+ joinedAt: nullableDate(row.joined_at),
364
+ removedAt: nullableDate(row.removed_at),
365
+ createdAt: dateValue(row.created_at),
366
+ updatedAt: dateValue(row.updated_at)
367
+ };
368
+ }
369
+ function mapInvitation(row) {
370
+ return {
371
+ id: stringValue(row.id),
372
+ organisationId: stringValue(row.organisation_id),
373
+ email: nullableString(row.email),
374
+ phone: nullableString(row.phone),
375
+ role: stringValue(row.role),
376
+ invitedByUserId: stringValue(row.invited_by_user_id),
377
+ status: stringValue(row.status),
378
+ expiresAt: dateValue(row.expires_at),
379
+ acceptedAt: nullableDate(row.accepted_at),
380
+ revokedAt: nullableDate(row.revoked_at),
381
+ createdAt: dateValue(row.created_at)
382
+ };
383
+ }
384
+ function mapAuditEvent(row) {
385
+ return {
386
+ id: stringValue(row.id),
387
+ eventType: stringValue(row.event_type),
388
+ actorUserId: nullableString(row.actor_user_id),
389
+ targetUserId: nullableString(row.target_user_id),
390
+ organisationId: nullableString(row.organisation_id),
391
+ apiKeyId: nullableString(row.api_key_id),
392
+ ipAddress: nullableString(row.ip_address),
393
+ userAgent: nullableString(row.user_agent),
394
+ metadata: jsonRecord(row.metadata),
395
+ createdAt: dateValue(row.created_at)
396
+ };
397
+ }
398
+ const userColumns = {
399
+ id: "id",
400
+ email: "email",
401
+ emailVerifiedAt: "email_verified_at",
402
+ phone: "phone",
403
+ phoneVerifiedAt: "phone_verified_at",
404
+ passwordHash: "password_hash",
405
+ name: "name",
406
+ imageUrl: "image_url",
407
+ disabledAt: "disabled_at",
408
+ metadata: "metadata",
409
+ createdAt: "created_at",
410
+ updatedAt: "updated_at",
411
+ lastLoginAt: "last_login_at"
412
+ };
413
+ const accountColumns = {
414
+ id: "id",
415
+ userId: "user_id",
416
+ provider: "provider",
417
+ providerAccountId: "provider_account_id",
418
+ providerEmail: "provider_email",
419
+ providerPhone: "provider_phone",
420
+ createdAt: "created_at",
421
+ updatedAt: "updated_at"
422
+ };
423
+ const sessionColumns = {
424
+ id: "id",
425
+ userId: "user_id",
426
+ tokenHash: "token_hash",
427
+ createdAt: "created_at",
428
+ lastActiveAt: "last_active_at",
429
+ expiresAt: "expires_at",
430
+ idleExpiresAt: "idle_expires_at",
431
+ ipAddress: "ip_address",
432
+ userAgent: "user_agent",
433
+ revokedAt: "revoked_at",
434
+ revokeReason: "revoke_reason"
435
+ };
436
+ const tokenColumns = {
437
+ id: "id",
438
+ tokenHash: "token_hash",
439
+ type: "type",
440
+ userId: "user_id",
441
+ email: "email",
442
+ phone: "phone",
443
+ organisationId: "organisation_id",
444
+ expiresAt: "expires_at",
445
+ usedAt: "used_at",
446
+ createdAt: "created_at"
447
+ };
448
+ const smsOtpColumns = {
449
+ id: "id",
450
+ phone: "phone",
451
+ userId: "user_id",
452
+ codeHash: "code_hash",
453
+ purpose: "purpose",
454
+ expiresAt: "expires_at",
455
+ attempts: "attempts",
456
+ maxAttempts: "max_attempts",
457
+ consumedAt: "consumed_at",
458
+ createdAt: "created_at",
459
+ lastSentAt: "last_sent_at"
460
+ };
461
+ const apiKeyColumns = {
462
+ id: "id",
463
+ keyPrefix: "key_prefix",
464
+ keyHash: "key_hash",
465
+ name: "name",
466
+ userId: "user_id",
467
+ organisationId: "organisation_id",
468
+ scopes: "scopes",
469
+ status: "status",
470
+ expiresAt: "expires_at",
471
+ lastUsedAt: "last_used_at",
472
+ createdAt: "created_at",
473
+ revokedAt: "revoked_at",
474
+ revokedBy: "revoked_by",
475
+ metadata: "metadata"
476
+ };
477
+ const organisationColumns = {
478
+ id: "id",
479
+ name: "name",
480
+ slug: "slug",
481
+ ownerUserId: "owner_user_id",
482
+ metadata: "metadata",
483
+ createdAt: "created_at",
484
+ updatedAt: "updated_at",
485
+ disabledAt: "disabled_at"
486
+ };
487
+ const organisationMemberColumns = {
488
+ id: "id",
489
+ organisationId: "organisation_id",
490
+ userId: "user_id",
491
+ role: "role",
492
+ status: "status",
493
+ joinedAt: "joined_at",
494
+ removedAt: "removed_at",
495
+ createdAt: "created_at",
496
+ updatedAt: "updated_at"
497
+ };
498
+ const invitationColumns = {
499
+ id: "id",
500
+ organisationId: "organisation_id",
501
+ email: "email",
502
+ phone: "phone",
503
+ role: "role",
504
+ invitedByUserId: "invited_by_user_id",
505
+ status: "status",
506
+ expiresAt: "expires_at",
507
+ acceptedAt: "accepted_at",
508
+ revokedAt: "revoked_at",
509
+ createdAt: "created_at"
510
+ };
511
+ const auditEventColumns = {
512
+ id: "id",
513
+ eventType: "event_type",
514
+ actorUserId: "actor_user_id",
515
+ targetUserId: "target_user_id",
516
+ organisationId: "organisation_id",
517
+ apiKeyId: "api_key_id",
518
+ ipAddress: "ip_address",
519
+ userAgent: "user_agent",
520
+ metadata: "metadata",
521
+ createdAt: "created_at"
522
+ };
523
+ const userReturning = [
524
+ "id",
525
+ "email",
526
+ "email_verified_at",
527
+ "phone",
528
+ "phone_verified_at",
529
+ "password_hash",
530
+ "name",
531
+ "image_url",
532
+ "disabled_at",
533
+ "metadata",
534
+ "created_at",
535
+ "updated_at",
536
+ "last_login_at"
537
+ ].join(", ");
538
+ const accountReturning = [
539
+ "id",
540
+ "user_id",
541
+ "provider",
542
+ "provider_account_id",
543
+ "provider_email",
544
+ "provider_phone",
545
+ "created_at",
546
+ "updated_at"
547
+ ].join(", ");
548
+ const sessionReturning = [
549
+ "id",
550
+ "user_id",
551
+ "token_hash",
552
+ "created_at",
553
+ "last_active_at",
554
+ "expires_at",
555
+ "idle_expires_at",
556
+ "ip_address",
557
+ "user_agent",
558
+ "revoked_at",
559
+ "revoke_reason"
560
+ ].join(", ");
561
+ const tokenReturning = [
562
+ "id",
563
+ "token_hash",
564
+ "type",
565
+ "user_id",
566
+ "email",
567
+ "phone",
568
+ "organisation_id",
569
+ "expires_at",
570
+ "used_at",
571
+ "created_at"
572
+ ].join(", ");
573
+ const smsOtpReturning = [
574
+ "id",
575
+ "phone",
576
+ "user_id",
577
+ "code_hash",
578
+ "purpose",
579
+ "expires_at",
580
+ "attempts",
581
+ "max_attempts",
582
+ "consumed_at",
583
+ "created_at",
584
+ "last_sent_at"
585
+ ].join(", ");
586
+ const apiKeyReturning = [
587
+ "id",
588
+ "key_prefix",
589
+ "key_hash",
590
+ "name",
591
+ "user_id",
592
+ "organisation_id",
593
+ "scopes",
594
+ "status",
595
+ "expires_at",
596
+ "last_used_at",
597
+ "created_at",
598
+ "revoked_at",
599
+ "revoked_by",
600
+ "metadata"
601
+ ].join(", ");
602
+ const organisationReturning = [
603
+ "id",
604
+ "name",
605
+ "slug",
606
+ "owner_user_id",
607
+ "metadata",
608
+ "created_at",
609
+ "updated_at",
610
+ "disabled_at"
611
+ ].join(", ");
612
+ const organisationMemberReturning = [
613
+ "id",
614
+ "organisation_id",
615
+ "user_id",
616
+ "role",
617
+ "status",
618
+ "joined_at",
619
+ "removed_at",
620
+ "created_at",
621
+ "updated_at"
622
+ ].join(", ");
623
+ const invitationReturning = [
624
+ "id",
625
+ "organisation_id",
626
+ "email",
627
+ "phone",
628
+ "role",
629
+ "invited_by_user_id",
630
+ "status",
631
+ "expires_at",
632
+ "accepted_at",
633
+ "revoked_at",
634
+ "created_at"
635
+ ].join(", ");
636
+ const auditEventReturning = [
637
+ "id",
638
+ "event_type",
639
+ "actor_user_id",
640
+ "target_user_id",
641
+ "organisation_id",
642
+ "api_key_id",
643
+ "ip_address",
644
+ "user_agent",
645
+ "metadata",
646
+ "created_at"
647
+ ].join(", ");
648
+ //# sourceMappingURL=postgres-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-storage.js","sourceRoot":"","sources":["../../src/postgres/postgres-storage.ts"],"names":[],"mappings":"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"}