@kurdel/auth-db 0.1.0-beta.5 → 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 +46 -13
  42. package/lib/database-user-service.js +248 -182
  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,6 +276,114 @@ 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() {
263
388
  const apiKeyExpiration = this.db.dialect === 'postgres'
264
389
  ? 'expires_at'
@@ -306,83 +431,9 @@ export class DatabaseUserService {
306
431
  failedAuthenticationsLast24Hours: this.toCount(failures.count),
307
432
  };
308
433
  }
309
- async findById(userId) {
310
- const user = await this.findRecord(userId);
311
- if (!user)
312
- throw new UserNotFoundError(userId);
313
- const roles = await this.loadRoles([userId]);
314
- return this.mapUser(user, roles.get(userId) ?? []);
315
- }
316
- async update(userId, input) {
317
- const existing = await this.findRecord(userId);
318
- if (!existing)
319
- throw new UserNotFoundError(userId);
320
- const roles = input.roles ? await this.resolveRoles(input.roles) : undefined;
321
- const email = input.email ? this.normalizeEmail(input.email) : undefined;
322
- try {
323
- await this.db.transaction(async (transaction) => {
324
- const updates = [];
325
- const params = [];
326
- for (const [column, value] of [
327
- ['name', input.name],
328
- ['email', email],
329
- ['status', input.status],
330
- ]) {
331
- if (value !== undefined) {
332
- updates.push(`${column} = ?`);
333
- params.push(value);
334
- }
335
- }
336
- if (updates.length > 0 || roles) {
337
- updates.push('updated_at = CURRENT_TIMESTAMP');
338
- await transaction.run({
339
- sql: `UPDATE ${this.tables.users} SET ${updates.join(', ')} WHERE id = ?;`,
340
- params: [...params, userId],
341
- });
342
- }
343
- if (roles)
344
- await this.replaceRoles(transaction, userId, roles);
345
- });
346
- }
347
- catch (error) {
348
- this.rethrowEmailConflict(error, email);
349
- }
350
- return this.findById(userId);
351
- }
352
- async delete(userId) {
353
- const existing = await this.findRecord(userId);
354
- if (!existing)
355
- throw new UserNotFoundError(userId);
356
- await this.db.transaction(async (transaction) => {
357
- await transaction.run({
358
- sql: `DELETE FROM ${this.tables.apiKeys} WHERE user_id = ?;`,
359
- params: [userId],
360
- });
361
- await transaction.run({
362
- sql: `DELETE FROM ${this.tables.userRoles} WHERE user_id = ?;`,
363
- params: [userId],
364
- });
365
- await transaction.run({
366
- sql: `DELETE FROM ${this.tables.users} WHERE id = ?;`,
367
- params: [userId],
368
- });
369
- });
370
- }
371
- async findRecord(userId) {
372
- return (await this.db.get({
373
- sql: [
374
- 'SELECT id, name, email, status, created_at, updated_at',
375
- `FROM ${this.tables.users} WHERE id = ?;`,
376
- ].join(' '),
377
- params: [userId],
378
- }));
379
- }
380
- async findRole(roleId) {
381
- return (await this.db.get({
382
- sql: `SELECT id, name FROM ${this.tables.roles} WHERE id = ?;`,
383
- params: [roleId],
384
- }));
385
- }
434
+ // ---------------------------------------------------------------------
435
+ // Validation
436
+ // ---------------------------------------------------------------------
386
437
  async ensureUsersExist(userIds) {
387
438
  if (userIds.length === 0)
388
439
  return;
@@ -425,6 +476,9 @@ export class DatabaseUserService {
425
476
  throw new UnknownPermissionsError(unknown);
426
477
  return uniqueNames.map(name => byName.get(name));
427
478
  }
479
+ // ---------------------------------------------------------------------
480
+ // Loading
481
+ // ---------------------------------------------------------------------
428
482
  async loadRolePermissions(roleIds) {
429
483
  const result = new Map();
430
484
  if (roleIds.length === 0)
@@ -443,18 +497,6 @@ export class DatabaseUserService {
443
497
  }
444
498
  return result;
445
499
  }
446
- async replaceRoles(database, userId, roles) {
447
- await database.run({
448
- sql: `DELETE FROM ${this.tables.userRoles} WHERE user_id = ?;`,
449
- params: [userId],
450
- });
451
- for (const role of roles) {
452
- await database.run({
453
- sql: `INSERT INTO ${this.tables.userRoles} (user_id, role_id) VALUES (?, ?);`,
454
- params: [userId, role.id],
455
- });
456
- }
457
- }
458
500
  async loadRoles(userIds) {
459
501
  const result = new Map();
460
502
  if (userIds.length === 0)
@@ -475,6 +517,24 @@ export class DatabaseUserService {
475
517
  }
476
518
  return result;
477
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
+ // ---------------------------------------------------------------------
478
538
  mapUser(user, roles) {
479
539
  return {
480
540
  id: user.id,
@@ -489,6 +549,9 @@ export class DatabaseUserService {
489
549
  normalizeEmail(email) {
490
550
  return email.toLowerCase();
491
551
  }
552
+ // ---------------------------------------------------------------------
553
+ // Error translation
554
+ // ---------------------------------------------------------------------
492
555
  rethrowEmailConflict(error, email) {
493
556
  if (email && this.isUniqueConstraintError(error, `${this.tables.users}.email`)) {
494
557
  throw new DuplicateUserEmailError(email);
@@ -507,6 +570,9 @@ export class DatabaseUserService {
507
570
  return error.message.includes(sqliteColumn) ||
508
571
  error.code === '23505';
509
572
  }
573
+ // ---------------------------------------------------------------------
574
+ // Utilities
575
+ // ---------------------------------------------------------------------
510
576
  toCount(value) {
511
577
  const count = Number(value ?? 0);
512
578
  if (!Number.isSafeInteger(count) || count < 0) {
@@ -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":"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"}
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;
package/lib/tokens.js 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 const AUTH_DB_TOKENS = {
2
10
  ApiKeyHasher: Symbol('AuthDbApiKeyHasher'),
3
11
  UserService: Symbol('AuthDbUserService'),
package/lib/tokens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IACpD,cAAc,EAAE,MAAM,CAAC,sBAAsB,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC,uBAAuB,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC;CACvC,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IACpD,cAAc,EAAE,MAAM,CAAC,sBAAsB,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC,uBAAuB,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC;CACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kurdel/auth-db",
3
- "version": "0.1.0-beta.5",
3
+ "version": "0.1.0-beta.6",
4
4
  "description": "Database-backed authentication adapters for @kurdel/auth",
5
5
  "type": "module",
6
6
  "exports": {
@@ -45,10 +45,10 @@
45
45
  "tag": "beta"
46
46
  },
47
47
  "dependencies": {
48
- "@kurdel/auth": "0.1.0-beta.5",
49
- "@kurdel/common": "0.1.0-beta.5",
50
- "@kurdel/core": "0.1.0-beta.5",
51
- "@kurdel/db": "0.1.0-beta.5"
48
+ "@kurdel/auth": "0.1.0-beta.6",
49
+ "@kurdel/common": "0.1.0-beta.6",
50
+ "@kurdel/core": "0.1.0-beta.6",
51
+ "@kurdel/db": "0.1.0-beta.6"
52
52
  },
53
53
  "devDependencies": {
54
54
  "rimraf": "^6.0.1",