@kurdel/auth-db 0.1.0-beta.4 → 0.1.0-beta.6

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 (50) hide show
  1. package/README.md +192 -96
  2. package/lib/api-key-hasher.d.ts +15 -0
  3. package/lib/api-key-hasher.js +6 -0
  4. package/lib/api-key-hasher.js.map +1 -1
  5. package/lib/auth-database-module.d.ts +28 -0
  6. package/lib/auth-database-module.js +23 -0
  7. package/lib/auth-database-module.js.map +1 -1
  8. package/lib/auth-database-tables.d.ts +26 -0
  9. package/lib/auth-database-tables.js +28 -1
  10. package/lib/auth-database-tables.js.map +1 -1
  11. package/lib/database-api-key-repository.d.ts +29 -0
  12. package/lib/database-api-key-repository.js +29 -0
  13. package/lib/database-api-key-repository.js.map +1 -1
  14. package/lib/database-api-key-service.d.ts +33 -0
  15. package/lib/database-api-key-service.js +33 -0
  16. package/lib/database-api-key-service.js.map +1 -1
  17. package/lib/database-api-key-usage-recorder.d.ts +25 -1
  18. package/lib/database-api-key-usage-recorder.js +25 -1
  19. package/lib/database-api-key-usage-recorder.js.map +1 -1
  20. package/lib/database-auth-event-sink-provider.d.ts +8 -0
  21. package/lib/database-auth-event-sink-provider.js +15 -0
  22. package/lib/database-auth-event-sink-provider.js.map +1 -0
  23. package/lib/database-auth-event-store.d.ts +28 -1
  24. package/lib/database-auth-event-store.js +37 -1
  25. package/lib/database-auth-event-store.js.map +1 -1
  26. package/lib/database-auth-user-repository.d.ts +28 -0
  27. package/lib/database-auth-user-repository.js +28 -0
  28. package/lib/database-auth-user-repository.js.map +1 -1
  29. package/lib/database-jwt-session-repository.d.ts +27 -1
  30. package/lib/database-jwt-session-repository.js +27 -1
  31. package/lib/database-jwt-session-repository.js.map +1 -1
  32. package/lib/database-jwt-session-service.d.ts +55 -1
  33. package/lib/database-jwt-session-service.js +182 -1
  34. package/lib/database-jwt-session-service.js.map +1 -1
  35. package/lib/database-password-credential-repository.d.ts +27 -0
  36. package/lib/database-password-credential-repository.js +27 -0
  37. package/lib/database-password-credential-repository.js.map +1 -1
  38. package/lib/database-password-service.d.ts +31 -0
  39. package/lib/database-password-service.js +31 -0
  40. package/lib/database-password-service.js.map +1 -1
  41. package/lib/database-user-service.d.ts +47 -13
  42. package/lib/database-user-service.js +273 -190
  43. package/lib/database-user-service.js.map +1 -1
  44. package/lib/index.d.ts +1 -0
  45. package/lib/index.js +1 -0
  46. package/lib/index.js.map +1 -1
  47. package/lib/tokens.d.ts +8 -0
  48. package/lib/tokens.js +8 -0
  49. package/lib/tokens.js.map +1 -1
  50. package/package.json +5 -5
@@ -1,4 +1,7 @@
1
1
  import { resolveAuthDatabaseTables } from './auth-database-tables.js';
2
+ // ---------------------------------------------------------------------
3
+ // Errors
4
+ // ---------------------------------------------------------------------
2
5
  export class UnknownRolesError extends Error {
3
6
  constructor(roles) {
4
7
  super(`Unknown roles: ${roles.join(', ')}`);
@@ -42,104 +45,47 @@ export class RoleInUseError extends Error {
42
45
  this.userCount = userCount;
43
46
  }
44
47
  }
48
+ /**
49
+ * ## DatabaseUserService
50
+ *
51
+ * Application service responsible for user, role and permission management
52
+ * backed by a relational database through the `Database` abstraction.
53
+ *
54
+ * Responsibilities:
55
+ * - manage users and their lifecycle
56
+ * - assign and revoke user roles
57
+ * - manage roles and role permissions
58
+ * - provide paginated user listings
59
+ * - execute bulk user operations
60
+ * - expose dashboard statistics
61
+ *
62
+ * Guarantees:
63
+ * - validates referenced roles and permissions before persisting changes
64
+ * - keeps user-role relationships consistent using database transactions
65
+ * - translates database constraint violations into domain-specific errors
66
+ * - remains database-agnostic (SQLite/PostgreSQL)
67
+ *
68
+ * Non-responsibilities:
69
+ * - authentication
70
+ * - authorization policy evaluation
71
+ * - password management
72
+ * - JWT or API key validation
73
+ * - HTTP request handling
74
+ */
45
75
  export class DatabaseUserService {
76
+ /**
77
+ * Creates a new database-backed user management service.
78
+ *
79
+ * @param db Database abstraction used for all persistence operations.
80
+ * @param tables Optional table name overrides.
81
+ */
46
82
  constructor(db, tables = {}) {
47
83
  this.db = db;
48
84
  this.tables = resolveAuthDatabaseTables(tables);
49
85
  }
50
- async listRoles() {
51
- const roles = (await this.db.all({
52
- sql: `SELECT name FROM ${this.tables.roles} ORDER BY name;`,
53
- params: [],
54
- }));
55
- return roles.map(role => role.name);
56
- }
57
- async listRoleSummaries() {
58
- const records = (await this.db.all({
59
- sql: [
60
- `SELECT r.id, r.name, COUNT(ur.user_id) AS user_count FROM ${this.tables.roles} r`,
61
- `LEFT JOIN ${this.tables.userRoles} ur ON ur.role_id = r.id`,
62
- 'GROUP BY r.id, r.name ORDER BY r.name;',
63
- ].join(' '),
64
- params: [],
65
- }));
66
- const permissions = await this.loadRolePermissions(records.map(role => role.id));
67
- return records.map(role => ({
68
- id: role.id,
69
- name: role.name,
70
- userCount: role.user_count,
71
- permissions: permissions.get(role.id) ?? [],
72
- }));
73
- }
74
- async listPermissions() {
75
- const records = (await this.db.all({
76
- sql: `SELECT name FROM ${this.tables.permissions} ORDER BY name;`,
77
- params: [],
78
- }));
79
- return records.map(permission => permission.name);
80
- }
81
- async setRolePermissions(roleId, names) {
82
- if (!(await this.findRole(roleId)))
83
- throw new RoleNotFoundError(roleId);
84
- const permissions = await this.resolvePermissions(names);
85
- await this.db.transaction(async (transaction) => {
86
- await transaction.run({
87
- sql: `DELETE FROM ${this.tables.rolePermissions} WHERE role_id = ?;`,
88
- params: [roleId],
89
- });
90
- for (const permission of permissions) {
91
- await transaction.run({
92
- sql: `INSERT INTO ${this.tables.rolePermissions} (role_id, permission_id) VALUES (?, ?);`,
93
- params: [roleId, permission.id],
94
- });
95
- }
96
- });
97
- return (await this.listRoleSummaries()).find(role => role.id === roleId);
98
- }
99
- async createRole(name) {
100
- const normalized = name.trim();
101
- try {
102
- const role = (await this.db.get({
103
- sql: `INSERT INTO ${this.tables.roles} (name) VALUES (?) RETURNING id, name;`,
104
- params: [normalized],
105
- }));
106
- return { ...role, userCount: 0, permissions: [] };
107
- }
108
- catch (error) {
109
- this.rethrowRoleConflict(error, normalized);
110
- }
111
- }
112
- async renameRole(roleId, name) {
113
- const existing = await this.findRole(roleId);
114
- if (!existing)
115
- throw new RoleNotFoundError(roleId);
116
- const normalized = name.trim();
117
- try {
118
- await this.db.run({
119
- sql: `UPDATE ${this.tables.roles} SET name = ? WHERE id = ?;`,
120
- params: [normalized, roleId],
121
- });
122
- }
123
- catch (error) {
124
- this.rethrowRoleConflict(error, normalized);
125
- }
126
- return (await this.listRoleSummaries()).find(role => role.id === roleId);
127
- }
128
- async deleteRole(roleId) {
129
- const existing = await this.findRole(roleId);
130
- if (!existing)
131
- throw new RoleNotFoundError(roleId);
132
- const usage = (await this.db.get({
133
- sql: `SELECT COUNT(*) AS count FROM ${this.tables.userRoles} WHERE role_id = ?;`,
134
- params: [roleId],
135
- }));
136
- if (usage.count > 0)
137
- throw new RoleInUseError(roleId, usage.count);
138
- await this.db.run({
139
- sql: `DELETE FROM ${this.tables.roles} WHERE id = ?;`,
140
- params: [roleId],
141
- });
142
- }
86
+ // ---------------------------------------------------------------------
87
+ // User management
88
+ // ---------------------------------------------------------------------
143
89
  async create(input) {
144
90
  const email = this.normalizeEmail(input.email);
145
91
  const roles = await this.resolveRoles(input.roles);
@@ -161,6 +107,77 @@ export class DatabaseUserService {
161
107
  this.rethrowEmailConflict(error, email);
162
108
  }
163
109
  }
110
+ async update(userId, input) {
111
+ const existing = await this.findRecord(userId);
112
+ if (!existing)
113
+ throw new UserNotFoundError(userId);
114
+ const roles = input.roles ? await this.resolveRoles(input.roles) : undefined;
115
+ const email = input.email ? this.normalizeEmail(input.email) : undefined;
116
+ try {
117
+ await this.db.transaction(async (transaction) => {
118
+ const updates = [];
119
+ const params = [];
120
+ for (const [column, value] of [
121
+ ['name', input.name],
122
+ ['email', email],
123
+ ['status', input.status],
124
+ ]) {
125
+ if (value !== undefined) {
126
+ updates.push(`${column} = ?`);
127
+ params.push(value);
128
+ }
129
+ }
130
+ if (updates.length > 0 || roles) {
131
+ updates.push('updated_at = CURRENT_TIMESTAMP');
132
+ await transaction.run({
133
+ sql: `UPDATE ${this.tables.users} SET ${updates.join(', ')} WHERE id = ?;`,
134
+ params: [...params, userId],
135
+ });
136
+ }
137
+ if (roles)
138
+ await this.replaceRoles(transaction, userId, roles);
139
+ });
140
+ }
141
+ catch (error) {
142
+ this.rethrowEmailConflict(error, email);
143
+ }
144
+ return this.findById(userId);
145
+ }
146
+ async delete(userId) {
147
+ const existing = await this.findRecord(userId);
148
+ if (!existing)
149
+ throw new UserNotFoundError(userId);
150
+ await this.db.transaction(async (transaction) => {
151
+ await transaction.run({
152
+ sql: `DELETE FROM ${this.tables.apiKeys} WHERE user_id = ?;`,
153
+ params: [userId],
154
+ });
155
+ await transaction.run({
156
+ sql: `DELETE FROM ${this.tables.userRoles} WHERE user_id = ?;`,
157
+ params: [userId],
158
+ });
159
+ await transaction.run({
160
+ sql: `DELETE FROM ${this.tables.users} WHERE id = ?;`,
161
+ params: [userId],
162
+ });
163
+ });
164
+ }
165
+ async findById(userId) {
166
+ const user = await this.findRecord(userId);
167
+ if (!user)
168
+ throw new UserNotFoundError(userId);
169
+ const roles = await this.loadRoles([userId]);
170
+ return this.mapUser(user, roles.get(userId) ?? []);
171
+ }
172
+ async findRecord(userId) {
173
+ return (await this.db.get({
174
+ sql: [
175
+ 'SELECT id, name, email, status, created_at, updated_at',
176
+ `FROM ${this.tables.users} WHERE id = ?;`,
177
+ ].join(' '),
178
+ params: [userId],
179
+ }));
180
+ }
164
181
  async list(input) {
165
182
  const conditions = [];
166
183
  const params = [];
@@ -259,7 +276,121 @@ export class DatabaseUserService {
259
276
  });
260
277
  });
261
278
  }
279
+ // ---------------------------------------------------------------------
280
+ // Role management
281
+ // ---------------------------------------------------------------------
282
+ async createRole(name) {
283
+ const normalized = name.trim();
284
+ try {
285
+ const role = (await this.db.get({
286
+ sql: `INSERT INTO ${this.tables.roles} (name) VALUES (?) RETURNING id, name;`,
287
+ params: [normalized],
288
+ }));
289
+ return { ...role, userCount: 0, permissions: [] };
290
+ }
291
+ catch (error) {
292
+ this.rethrowRoleConflict(error, normalized);
293
+ }
294
+ }
295
+ async renameRole(roleId, name) {
296
+ const existing = await this.findRole(roleId);
297
+ if (!existing)
298
+ throw new RoleNotFoundError(roleId);
299
+ const normalized = name.trim();
300
+ try {
301
+ await this.db.run({
302
+ sql: `UPDATE ${this.tables.roles} SET name = ? WHERE id = ?;`,
303
+ params: [normalized, roleId],
304
+ });
305
+ }
306
+ catch (error) {
307
+ this.rethrowRoleConflict(error, normalized);
308
+ }
309
+ return (await this.listRoleSummaries()).find(role => role.id === roleId);
310
+ }
311
+ async deleteRole(roleId) {
312
+ const existing = await this.findRole(roleId);
313
+ if (!existing)
314
+ throw new RoleNotFoundError(roleId);
315
+ const usage = (await this.db.get({
316
+ sql: `SELECT COUNT(*) AS count FROM ${this.tables.userRoles} WHERE role_id = ?;`,
317
+ params: [roleId],
318
+ }));
319
+ if (usage.count > 0)
320
+ throw new RoleInUseError(roleId, usage.count);
321
+ await this.db.run({
322
+ sql: `DELETE FROM ${this.tables.roles} WHERE id = ?;`,
323
+ params: [roleId],
324
+ });
325
+ }
326
+ async listRoles() {
327
+ const roles = (await this.db.all({
328
+ sql: `SELECT name FROM ${this.tables.roles} ORDER BY name;`,
329
+ params: [],
330
+ }));
331
+ return roles.map(role => role.name);
332
+ }
333
+ async listRoleSummaries() {
334
+ const records = (await this.db.all({
335
+ sql: [
336
+ `SELECT r.id, r.name, COUNT(ur.user_id) AS user_count FROM ${this.tables.roles} r`,
337
+ `LEFT JOIN ${this.tables.userRoles} ur ON ur.role_id = r.id`,
338
+ 'GROUP BY r.id, r.name ORDER BY r.name;',
339
+ ].join(' '),
340
+ params: [],
341
+ }));
342
+ const permissions = await this.loadRolePermissions(records.map(role => role.id));
343
+ return records.map(role => ({
344
+ id: role.id,
345
+ name: role.name,
346
+ userCount: role.user_count,
347
+ permissions: permissions.get(role.id) ?? [],
348
+ }));
349
+ }
350
+ async findRole(roleId) {
351
+ return (await this.db.get({
352
+ sql: `SELECT id, name FROM ${this.tables.roles} WHERE id = ?;`,
353
+ params: [roleId],
354
+ }));
355
+ }
356
+ // ---------------------------------------------------------------------
357
+ // Permission management
358
+ // ---------------------------------------------------------------------
359
+ async listPermissions() {
360
+ const records = (await this.db.all({
361
+ sql: `SELECT name FROM ${this.tables.permissions} ORDER BY name;`,
362
+ params: [],
363
+ }));
364
+ return records.map(permission => permission.name);
365
+ }
366
+ async setRolePermissions(roleId, names) {
367
+ if (!(await this.findRole(roleId)))
368
+ throw new RoleNotFoundError(roleId);
369
+ const permissions = await this.resolvePermissions(names);
370
+ await this.db.transaction(async (transaction) => {
371
+ await transaction.run({
372
+ sql: `DELETE FROM ${this.tables.rolePermissions} WHERE role_id = ?;`,
373
+ params: [roleId],
374
+ });
375
+ for (const permission of permissions) {
376
+ await transaction.run({
377
+ sql: `INSERT INTO ${this.tables.rolePermissions} (role_id, permission_id) VALUES (?, ?);`,
378
+ params: [roleId, permission.id],
379
+ });
380
+ }
381
+ });
382
+ return (await this.listRoleSummaries()).find(role => role.id === roleId);
383
+ }
384
+ // ---------------------------------------------------------------------
385
+ // Dashboard
386
+ // ---------------------------------------------------------------------
262
387
  async dashboardStats() {
388
+ const apiKeyExpiration = this.db.dialect === 'postgres'
389
+ ? 'expires_at'
390
+ : 'datetime(expires_at)';
391
+ const recentFailure = this.db.dialect === 'postgres'
392
+ ? "occurred_at >= CURRENT_TIMESTAMP - INTERVAL '1 day'"
393
+ : "datetime(occurred_at) >= datetime('now', '-1 day')";
263
394
  const users = (await this.db.get({
264
395
  sql: [
265
396
  'SELECT COUNT(*) AS total,',
@@ -271,9 +402,9 @@ export class DatabaseUserService {
271
402
  }));
272
403
  const apiKeys = (await this.db.get({
273
404
  sql: [
274
- "SELECT SUM(CASE WHEN status = 'active' AND (expires_at IS NULL OR datetime(expires_at) > CURRENT_TIMESTAMP) THEN 1 ELSE 0 END) AS active,",
405
+ `SELECT SUM(CASE WHEN status = 'active' AND (expires_at IS NULL OR ${apiKeyExpiration} > CURRENT_TIMESTAMP) THEN 1 ELSE 0 END) AS active,`,
275
406
  "SUM(CASE WHEN status = 'revoked' THEN 1 ELSE 0 END) AS revoked,",
276
- "SUM(CASE WHEN status = 'active' AND datetime(expires_at) <= CURRENT_TIMESTAMP THEN 1 ELSE 0 END) AS expired",
407
+ `SUM(CASE WHEN status = 'active' AND ${apiKeyExpiration} <= CURRENT_TIMESTAMP THEN 1 ELSE 0 END) AS expired`,
277
408
  `FROM ${this.tables.apiKeys};`,
278
409
  ].join(' '),
279
410
  params: [],
@@ -282,97 +413,27 @@ export class DatabaseUserService {
282
413
  sql: [
283
414
  'SELECT COUNT(*) AS count',
284
415
  `FROM ${this.tables.authEvents}`,
285
- "WHERE type = 'authentication.failed' AND datetime(occurred_at) >= datetime('now', '-1 day');",
416
+ `WHERE type = 'authentication.failed' AND ${recentFailure};`,
286
417
  ].join(' '),
287
418
  params: [],
288
419
  }));
289
420
  return {
290
- users: { total: users.total, active: users.active ?? 0, disabled: users.disabled ?? 0 },
421
+ users: {
422
+ total: this.toCount(users.total),
423
+ active: this.toCount(users.active),
424
+ disabled: this.toCount(users.disabled),
425
+ },
291
426
  apiKeys: {
292
- active: apiKeys.active ?? 0,
293
- revoked: apiKeys.revoked ?? 0,
294
- expired: apiKeys.expired ?? 0,
427
+ active: this.toCount(apiKeys.active),
428
+ revoked: this.toCount(apiKeys.revoked),
429
+ expired: this.toCount(apiKeys.expired),
295
430
  },
296
- failedAuthenticationsLast24Hours: failures.count,
431
+ failedAuthenticationsLast24Hours: this.toCount(failures.count),
297
432
  };
298
433
  }
299
- async findById(userId) {
300
- const user = await this.findRecord(userId);
301
- if (!user)
302
- throw new UserNotFoundError(userId);
303
- const roles = await this.loadRoles([userId]);
304
- return this.mapUser(user, roles.get(userId) ?? []);
305
- }
306
- async update(userId, input) {
307
- const existing = await this.findRecord(userId);
308
- if (!existing)
309
- throw new UserNotFoundError(userId);
310
- const roles = input.roles ? await this.resolveRoles(input.roles) : undefined;
311
- const email = input.email ? this.normalizeEmail(input.email) : undefined;
312
- try {
313
- await this.db.transaction(async (transaction) => {
314
- const updates = [];
315
- const params = [];
316
- for (const [column, value] of [
317
- ['name', input.name],
318
- ['email', email],
319
- ['status', input.status],
320
- ]) {
321
- if (value !== undefined) {
322
- updates.push(`${column} = ?`);
323
- params.push(value);
324
- }
325
- }
326
- if (updates.length > 0 || roles) {
327
- updates.push('updated_at = CURRENT_TIMESTAMP');
328
- await transaction.run({
329
- sql: `UPDATE ${this.tables.users} SET ${updates.join(', ')} WHERE id = ?;`,
330
- params: [...params, userId],
331
- });
332
- }
333
- if (roles)
334
- await this.replaceRoles(transaction, userId, roles);
335
- });
336
- }
337
- catch (error) {
338
- this.rethrowEmailConflict(error, email);
339
- }
340
- return this.findById(userId);
341
- }
342
- async delete(userId) {
343
- const existing = await this.findRecord(userId);
344
- if (!existing)
345
- throw new UserNotFoundError(userId);
346
- await this.db.transaction(async (transaction) => {
347
- await transaction.run({
348
- sql: `DELETE FROM ${this.tables.apiKeys} WHERE user_id = ?;`,
349
- params: [userId],
350
- });
351
- await transaction.run({
352
- sql: `DELETE FROM ${this.tables.userRoles} WHERE user_id = ?;`,
353
- params: [userId],
354
- });
355
- await transaction.run({
356
- sql: `DELETE FROM ${this.tables.users} WHERE id = ?;`,
357
- params: [userId],
358
- });
359
- });
360
- }
361
- async findRecord(userId) {
362
- return (await this.db.get({
363
- sql: [
364
- 'SELECT id, name, email, status, created_at, updated_at',
365
- `FROM ${this.tables.users} WHERE id = ?;`,
366
- ].join(' '),
367
- params: [userId],
368
- }));
369
- }
370
- async findRole(roleId) {
371
- return (await this.db.get({
372
- sql: `SELECT id, name FROM ${this.tables.roles} WHERE id = ?;`,
373
- params: [roleId],
374
- }));
375
- }
434
+ // ---------------------------------------------------------------------
435
+ // Validation
436
+ // ---------------------------------------------------------------------
376
437
  async ensureUsersExist(userIds) {
377
438
  if (userIds.length === 0)
378
439
  return;
@@ -415,6 +476,9 @@ export class DatabaseUserService {
415
476
  throw new UnknownPermissionsError(unknown);
416
477
  return uniqueNames.map(name => byName.get(name));
417
478
  }
479
+ // ---------------------------------------------------------------------
480
+ // Loading
481
+ // ---------------------------------------------------------------------
418
482
  async loadRolePermissions(roleIds) {
419
483
  const result = new Map();
420
484
  if (roleIds.length === 0)
@@ -433,18 +497,6 @@ export class DatabaseUserService {
433
497
  }
434
498
  return result;
435
499
  }
436
- async replaceRoles(database, userId, roles) {
437
- await database.run({
438
- sql: `DELETE FROM ${this.tables.userRoles} WHERE user_id = ?;`,
439
- params: [userId],
440
- });
441
- for (const role of roles) {
442
- await database.run({
443
- sql: `INSERT INTO ${this.tables.userRoles} (user_id, role_id) VALUES (?, ?);`,
444
- params: [userId, role.id],
445
- });
446
- }
447
- }
448
500
  async loadRoles(userIds) {
449
501
  const result = new Map();
450
502
  if (userIds.length === 0)
@@ -465,6 +517,24 @@ export class DatabaseUserService {
465
517
  }
466
518
  return result;
467
519
  }
520
+ // ---------------------------------------------------------------------
521
+ // Persistence
522
+ // ---------------------------------------------------------------------
523
+ async replaceRoles(database, userId, roles) {
524
+ await database.run({
525
+ sql: `DELETE FROM ${this.tables.userRoles} WHERE user_id = ?;`,
526
+ params: [userId],
527
+ });
528
+ for (const role of roles) {
529
+ await database.run({
530
+ sql: `INSERT INTO ${this.tables.userRoles} (user_id, role_id) VALUES (?, ?);`,
531
+ params: [userId, role.id],
532
+ });
533
+ }
534
+ }
535
+ // ---------------------------------------------------------------------
536
+ // Mapping
537
+ // ---------------------------------------------------------------------
468
538
  mapUser(user, roles) {
469
539
  return {
470
540
  id: user.id,
@@ -479,6 +549,9 @@ export class DatabaseUserService {
479
549
  normalizeEmail(email) {
480
550
  return email.toLowerCase();
481
551
  }
552
+ // ---------------------------------------------------------------------
553
+ // Error translation
554
+ // ---------------------------------------------------------------------
482
555
  rethrowEmailConflict(error, email) {
483
556
  if (email && this.isUniqueConstraintError(error, `${this.tables.users}.email`)) {
484
557
  throw new DuplicateUserEmailError(email);
@@ -497,5 +570,15 @@ export class DatabaseUserService {
497
570
  return error.message.includes(sqliteColumn) ||
498
571
  error.code === '23505';
499
572
  }
573
+ // ---------------------------------------------------------------------
574
+ // Utilities
575
+ // ---------------------------------------------------------------------
576
+ toCount(value) {
577
+ const count = Number(value ?? 0);
578
+ if (!Number.isSafeInteger(count) || count < 0) {
579
+ throw new TypeError(`Invalid database aggregate count '${String(value)}'`);
580
+ }
581
+ return count;
582
+ }
500
583
  }
501
584
  //# sourceMappingURL=database-user-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-user-service.js","sourceRoot":"","sources":["../src/database-user-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-user-service.js","sourceRoot":"","sources":["../src/database-user-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAA2B,MAAM,2BAA2B,CAAC;AAmF/F,wEAAwE;AACxE,SAAS;AACT,wEAAwE;AAExE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAqB,KAAe;QAClC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QADzB,UAAK,GAAL,KAAK,CAAU;IAEpC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAqB,WAAqB;QACxC,KAAK,CAAC,wBAAwB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QADrC,gBAAW,GAAX,WAAW,CAAU;IAE1C,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAqB,MAAc;QACjC,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;QADf,WAAM,GAAN,MAAM,CAAQ;IAEnC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAqB,KAAa;QAChC,KAAK,CAAC,qBAAqB,KAAK,iBAAiB,CAAC,CAAC;QADhC,UAAK,GAAL,KAAK,CAAQ;IAElC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAqB,MAAc;QACjC,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAC;QADf,WAAM,GAAN,MAAM,CAAQ;IAEnC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAqB,IAAY;QAC/B,KAAK,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC;QADlB,SAAI,GAAJ,IAAI,CAAQ;IAEjC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YACW,MAAc,EACd,SAAiB;QAE1B,KAAK,CAAC,QAAQ,MAAM,mBAAmB,SAAS,QAAQ,CAAC,CAAC;QAHjD,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAQ;IAG5B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,mBAAmB;IAG9B;;;;;OAKG;IACH,YACmB,EAAY,EAC7B,SAAsC,EAAE;QADvB,OAAE,GAAF,EAAE,CAAU;QAG7B,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,wEAAwE;IACxE,kBAAkB;IAClB,wEAAwE;IACxE,KAAK,CAAC,MAAM,CAAC,KAAsB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBACnD,MAAM,IAAI,GAAG,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC;oBAClC,GAAG,EAAE;wBACH,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,wBAAwB;wBACxD,yBAAyB;wBACzB,4DAA4D;qBAC7D,CAAC,IAAI,CAAC,GAAG,CAAC;oBACX,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;iBAC5B,CAAC,CAAe,CAAC;gBAClB,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC,OAAO,CACjB,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,KAAsB;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAc,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;oBAC5B,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;oBACpB,CAAC,OAAO,EAAE,KAAK,CAAC;oBAChB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;iBAChB,EAAE,CAAC;oBACX,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;oBAChC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;oBAC/C,MAAM,WAAW,CAAC,GAAG,CAAC;wBACpB,GAAG,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB;wBAC1E,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,KAAK;oBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;YAC5C,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,OAAO,qBAAqB;gBAC5D,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,qBAAqB;gBAC9D,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB;gBACrD,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACxB,GAAG,EAAE;gBACH,wDAAwD;gBACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB;aAC1C,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC,CAA2B,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAqB;QAC9B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,WAAW,GAAG;YAClB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,YAAY;SACf,CAAC;QACX,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE;gBACH,wDAAwD;gBACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE;gBACpC,YAAY,UAAU,IAAI,aAAa,6BAA6B;aACrE,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;SAC/C,CAAC,CAAiB,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAC/B,GAAG,EAAE,iCAAiC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG;YACnE,MAAM;SACP,CAAC,CAAgB,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjE,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAA2B;QAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;YAC5C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,WAAW,CAAC,GAAG,CAAC;oBACpB,GAAG,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,gEAAgE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACrI,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM,WAAW,CAAC,GAAG,CAAC;wBACpB,GAAG,EAAE;4BACH,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,mCAAmC;4BACvE,4CAA4C;yBAC7C,CAAC,IAAI,CAAC,GAAG,CAAC;wBACX,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,MAAM,WAAW,CAAC,GAAG,CAAC;wBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,qCAAqC;wBAC9E,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;qBAC1B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAiB;QAChC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;YAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,OAAO,sBAAsB,YAAY,IAAI;gBAC7E,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,sBAAsB,YAAY,IAAI;gBAC/E,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,YAAY,IAAI;gBACtE,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,kBAAkB;IAClB,wEAAwE;IACxE,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;gBAC9B,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,wCAAwC;gBAC7E,MAAM,EAAE,CAAC,UAAU,CAAC;aACrB,CAAC,CAAe,CAAC;YAClB,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,IAAY;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,6BAA6B;gBAC7D,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAC/B,GAAG,EAAE,iCAAiC,IAAI,CAAC,MAAM,CAAC,SAAS,qBAAqB;YAChF,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC,CAAgB,CAAC;QACnB,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB;YACrD,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAC/B,GAAG,EAAE,oBAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB;YAC3D,MAAM,EAAE,EAAE;SACX,CAAC,CAA4B,CAAC;QAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE;gBACH,6DAA6D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;gBAClF,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,0BAA0B;gBAC5D,wCAAwC;aACzC,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,EAAE;SACX,CAAC,CAA4D,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;SAC5C,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAc;QACnC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACxB,GAAG,EAAE,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB;YAC9D,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC,CAA2B,CAAC;IAChC,CAAC;IAED,wEAAwE;IACxE,wBAAwB;IACxB,wEAAwE;IACxE,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,iBAAiB;YACjE,MAAM,EAAE,EAAE;SACX,CAAC,CAA4B,CAAC;QAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,KAAe;QACtD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;YAC5C,MAAM,WAAW,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,eAAe,qBAAqB;gBACpE,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB,CAAC,CAAC;YACH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,WAAW,CAAC,GAAG,CAAC;oBACpB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,eAAe,0CAA0C;oBACzF,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;IAC5E,CAAC;IAED,wEAAwE;IACxE,YAAY;IACZ,wEAAwE;IACxE,KAAK,CAAC,cAAc;QAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,UAAU;YACrD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,sBAAsB,CAAC;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,UAAU;YAClD,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,oDAAoD,CAAC;QACzD,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAC/B,GAAG,EAAE;gBACH,2BAA2B;gBAC3B,+DAA+D;gBAC/D,kEAAkE;gBAClE,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;aAC7B,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,EAAE;SACX,CAAC,CAAgF,CAAC;QACnF,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE;gBACH,qEAAqE,gBAAgB,qDAAqD;gBAC1I,iEAAiE;gBACjE,uCAAuC,gBAAgB,qDAAqD;gBAC5G,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG;aAC/B,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,EAAE;SACX,CAAC,CAAiF,CAAC;QACpF,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAClC,GAAG,EAAE;gBACH,0BAA0B;gBAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBAChC,4CAA4C,aAAa,GAAG;aAC7D,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,EAAE;SACX,CAAC,CAAyB,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;aACvC;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;aACvC;YACD,gCAAgC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,aAAa;IACb,wEAAwE;IAEhE,KAAK,CAAC,gBAAgB,CAAC,OAAiB;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YAChC,GAAG,EAAE,iCAAiC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC7G,MAAM,EAAE,OAAO;SAChB,CAAC,CAAgB,CAAC;QACnB,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM;YAAE,OAAO;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAe;QACxC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,mBAAmB,YAAY,IAAI;YACjF,MAAM,EAAE,WAAW;SACpB,CAAC,CAAiB,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,KAAe;QAC9C,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE,wBAAwB,IAAI,CAAC,MAAM,CAAC,WAAW,mBAAmB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAChH,MAAM,EAAE,WAAW;SACpB,CAAC,CAAuB,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;IACpD,CAAC;IAED,wEAAwE;IACxE,UAAU;IACV,wEAAwE;IAEhE,KAAK,CAAC,mBAAmB,CAAC,OAAiB;QACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE;gBACH,kCAAkC,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK;gBAClE,cAAc,IAAI,CAAC,MAAM,CAAC,WAAW,+BAA+B;gBACpE,wBAAwB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC5D,kBAAkB;aACnB,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,OAAO;SAChB,CAAC,CAA6C,CAAC;QAChD,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,OAAiB;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE;gBACH,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO;gBACpE,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC/B,cAAc,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,UAAU;gBAC/D,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,gBAAgB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAClF,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ;aACtC,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,OAAO;SAChB,CAAC,CAA6C,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,cAAc;IACd,wEAAwE;IAEhE,KAAK,CAAC,YAAY,CACxB,QAAyB,EACzB,MAAc,EACd,KAAmB;QAEnB,MAAM,QAAQ,CAAC,GAAG,CAAC;YACjB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,qBAAqB;YAC9D,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,CAAC,GAAG,CAAC;gBACjB,GAAG,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,oCAAoC;gBAC7E,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,UAAU;IACV,wEAAwE;IAEhE,OAAO,CAAC,IAAgB,EAAE,KAAe;QAC/C,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED,wEAAwE;IACxE,oBAAoB;IACpB,wEAAwE;IAEhE,oBAAoB,CAAC,KAAc,EAAE,KAAc;QACzD,IAAI,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,KAAc,EAAE,IAAY;QACtD,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAEO,uBAAuB,CAAC,KAAc,EAAE,YAAoB;QAClE,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxC,KAAmC,CAAC,IAAI,KAAK,OAAO,CAAC;IAC1D,CAAC;IAED,wEAAwE;IACxE,YAAY;IACZ,wEAAwE;IAEhE,OAAO,CAAC,KAAqB;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,SAAS,CAAC,qCAAqC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
package/lib/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './database-api-key-service.js';
6
6
  export * from './database-api-key-usage-recorder.js';
7
7
  export * from './database-auth-user-repository.js';
8
8
  export * from './database-auth-event-store.js';
9
+ export * from './database-auth-event-sink-provider.js';
9
10
  export * from './database-jwt-session-repository.js';
10
11
  export * from './database-jwt-session-service.js';
11
12
  export * from './database-password-credential-repository.js';
package/lib/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './database-api-key-service.js';
6
6
  export * from './database-api-key-usage-recorder.js';
7
7
  export * from './database-auth-user-repository.js';
8
8
  export * from './database-auth-event-store.js';
9
+ export * from './database-auth-event-sink-provider.js';
9
10
  export * from './database-jwt-session-repository.js';
10
11
  export * from './database-jwt-session-service.js';
11
12
  export * from './database-password-credential-repository.js';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC"}
package/lib/tokens.d.ts CHANGED
@@ -1,3 +1,11 @@
1
+ /**
2
+ * ## AUTH_DB_TOKENS
3
+ *
4
+ * Dependency injection tokens exported by `@kurdel/auth-db`.
5
+ *
6
+ * These tokens identify infrastructure services provided by
7
+ * `AuthDatabaseModule`.
8
+ */
1
9
  export declare const AUTH_DB_TOKENS: {
2
10
  ApiKeyHasher: symbol;
3
11
  UserService: symbol;