@gauts/auth 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +592 -186
  2. package/SECURITY.md +44 -1
  3. package/dist/adapters/hono/index.d.ts +40 -18
  4. package/dist/adapters/hono/index.d.ts.map +1 -1
  5. package/dist/adapters/hono/index.js +151 -54
  6. package/dist/adapters/hono/index.js.map +1 -1
  7. package/dist/adapters/next/index.d.ts +24 -0
  8. package/dist/adapters/next/index.d.ts.map +1 -0
  9. package/dist/adapters/next/index.js +90 -0
  10. package/dist/adapters/next/index.js.map +1 -0
  11. package/dist/adapters/prisma/index.d.ts +39 -0
  12. package/dist/adapters/prisma/index.d.ts.map +1 -0
  13. package/dist/adapters/prisma/index.js +205 -0
  14. package/dist/adapters/prisma/index.js.map +1 -0
  15. package/dist/auth.d.ts +9 -7
  16. package/dist/auth.d.ts.map +1 -1
  17. package/dist/auth.js +11 -13
  18. package/dist/auth.js.map +1 -1
  19. package/dist/client/index.d.ts +8 -3
  20. package/dist/client/index.d.ts.map +1 -1
  21. package/dist/client/index.js +23 -7
  22. package/dist/client/index.js.map +1 -1
  23. package/dist/config.d.ts +3 -3
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js +12 -18
  26. package/dist/config.js.map +1 -1
  27. package/dist/errors.d.ts +2 -2
  28. package/dist/errors.d.ts.map +1 -1
  29. package/dist/errors.js +7 -5
  30. package/dist/errors.js.map +1 -1
  31. package/dist/index.d.ts +2 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/password/index.d.ts.map +1 -1
  34. package/dist/password/index.js +2 -4
  35. package/dist/password/index.js.map +1 -1
  36. package/dist/session/cache.d.ts +32 -0
  37. package/dist/session/cache.d.ts.map +1 -0
  38. package/dist/session/cache.js +136 -0
  39. package/dist/session/cache.js.map +1 -0
  40. package/dist/session/cookie.d.ts +15 -0
  41. package/dist/session/cookie.d.ts.map +1 -0
  42. package/dist/session/cookie.js +31 -0
  43. package/dist/session/cookie.js.map +1 -0
  44. package/dist/session/guards.d.ts +6 -0
  45. package/dist/session/guards.d.ts.map +1 -0
  46. package/dist/session/guards.js +23 -0
  47. package/dist/session/guards.js.map +1 -0
  48. package/dist/session/service.d.ts +3 -4
  49. package/dist/session/service.d.ts.map +1 -1
  50. package/dist/session/service.js +148 -187
  51. package/dist/session/service.js.map +1 -1
  52. package/dist/session/token.js.map +1 -1
  53. package/dist/session/types.d.ts +65 -74
  54. package/dist/session/types.d.ts.map +1 -1
  55. package/package.json +91 -92
  56. package/dist/adapters/redis/index.d.ts +0 -11
  57. package/dist/adapters/redis/index.d.ts.map +0 -1
  58. package/dist/adapters/redis/index.js +0 -62
  59. package/dist/adapters/redis/index.js.map +0 -1
  60. package/dist/session/schema.d.ts +0 -5
  61. package/dist/session/schema.d.ts.map +0 -1
  62. package/dist/session/schema.js +0 -56
  63. package/dist/session/schema.js.map +0 -1
@@ -1,19 +1,20 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { matchesClient, normalizeClient } from "../client/index.js";
2
+ import { hasClientFields, matchesClient, normalizeClient } from "../client/index.js";
3
3
  import { createError, isAuthError } from "../errors.js";
4
- import { encodeSession, parseSession, toSession } from "./schema.js";
5
4
  import { createToken, hashToken, tokenPattern } from "./token.js";
6
- const toActiveSession = (session) => ({
7
- accountId: session.accountId,
8
- client: session.client,
9
- createdAt: session.createdAt,
10
- expiresAt: session.expiresAt,
11
- id: session.id,
12
- revokedAt: session.revokedAt,
13
- updatedAt: session.updatedAt,
5
+ const toActiveSession = (row) => ({
6
+ account_id: row.account_id,
7
+ agent: row.agent,
8
+ created_at: row.created_at,
9
+ expires_at: row.expires_at,
10
+ id: row.id,
11
+ ip: row.ip,
12
+ platform: row.platform,
13
+ revoked_at: row.revoked_at,
14
+ updated_at: row.updated_at,
14
15
  });
15
- export const createSessionService = ({ config, now = () => new Date(), records, redis, }) => {
16
- const runRedis = async (operation) => {
16
+ export const createSessionService = ({ config, db, now = () => new Date(), }) => {
17
+ const runDb = async (operation) => {
17
18
  try {
18
19
  return await operation();
19
20
  }
@@ -23,152 +24,138 @@ export const createSessionService = ({ config, now = () => new Date(), records,
23
24
  }
24
25
  throw createError({
25
26
  cause: error,
26
- code: "REDIS_UNAVAILABLE",
27
- message: "Authentication service unavailable.",
27
+ code: "DB_UNAVAILABLE",
28
+ message: "Session database unavailable.",
28
29
  });
29
30
  }
30
31
  };
31
- const runRecords = async (operation) => {
32
- try {
33
- return await operation();
34
- }
35
- catch (error) {
36
- if (isAuthError(error)) {
37
- throw error;
38
- }
39
- throw createError({
40
- cause: error,
41
- code: "RECORDS_UNAVAILABLE",
42
- message: "Session records service unavailable.",
43
- });
44
- }
32
+ const getMaxExpiresAt = (created_at) => {
33
+ return new Date(created_at.getTime() + config.maxLifetime * 1000);
34
+ };
35
+ const getRenewAt = (row) => {
36
+ const renewed_at = row.updated_at ?? row.created_at;
37
+ return new Date(Math.min(renewed_at.getTime() + config.renewInterval * 1000, getMaxExpiresAt(row.created_at).getTime()));
38
+ };
39
+ const toSession = (row) => {
40
+ const expires_at = new Date(Math.min(row.expires_at.getTime(), getMaxExpiresAt(row.created_at).getTime()));
41
+ return {
42
+ account_id: row.account_id,
43
+ client: {
44
+ agent: row.agent,
45
+ ip: row.ip,
46
+ platform: row.platform,
47
+ },
48
+ created_at: row.created_at,
49
+ expires_at,
50
+ id: row.id,
51
+ renew_at: getRenewAt(row),
52
+ };
45
53
  };
46
- const getActive = async (accountId) => {
54
+ const getActive = async (account_id) => {
47
55
  const current = now();
48
- const rows = await runRecords(() => records.findActive({ accountId, now: current }));
49
- const valid = rows.filter((row) => row.revokedAt === null && row.expiresAt.getTime() > current.getTime());
50
- if (valid.length === 0) {
51
- return [];
52
- }
53
- const active = await runRedis(() => redis.exists(valid.map((row) => row.tokenHash)));
54
- if (active.length !== valid.length) {
55
- throw createError({
56
- code: "REDIS_UNAVAILABLE",
57
- message: "Authentication service returned invalid data.",
58
- });
59
- }
60
- return valid.filter((_, index) => active[index]);
56
+ const rows = await runDb(() => db.findActive({ account_id, now: current }));
57
+ return rows.filter((row) => row.revoked_at === null &&
58
+ row.expires_at.getTime() > current.getTime() &&
59
+ getMaxExpiresAt(row.created_at).getTime() > current.getTime());
61
60
  };
62
- const revokeRows = async ({ revokedAt, rows, }) => {
61
+ const revokeRows = async ({ revoked_at, rows }) => {
63
62
  if (rows.length === 0) {
64
63
  return [];
65
64
  }
66
- await runRedis(() => redis.delete(rows.map((row) => row.tokenHash)));
67
- const ids = rows.map((row) => row.id);
68
- await runRecords(() => records.revoke({ revokedAt, sessionIds: ids }));
69
- return ids;
65
+ const session_ids = rows.map((row) => row.id);
66
+ await runDb(() => db.revoke({ revoked_at, session_ids }));
67
+ return session_ids;
70
68
  };
71
69
  const validateSession = async (input) => {
72
70
  if (!tokenPattern.test(input.token)) {
73
71
  return null;
74
72
  }
75
- const tokenHash = hashToken(input.token);
76
- const raw = await runRedis(() => redis.get(tokenHash));
77
- if (!raw) {
73
+ const row = await runDb(() => db.findToken(hashToken(input.token)));
74
+ if (row?.revoked_at !== null) {
78
75
  return null;
79
76
  }
80
- const stored = parseSession(raw);
81
- if (!stored) {
82
- await runRedis(() => redis.delete([tokenHash]));
77
+ const current = now();
78
+ if (row.expires_at.getTime() <= current.getTime() ||
79
+ getMaxExpiresAt(row.created_at).getTime() <= current.getTime()) {
83
80
  return null;
84
81
  }
85
- const current = now();
86
- if (Date.parse(stored.expiresAt) <= current.getTime()) {
87
- await runRedis(() => redis.delete([tokenHash]));
82
+ if (!row.allowed) {
83
+ await runDb(() => db.revoke({ revoked_at: current, session_ids: [row.id] }));
88
84
  return null;
89
85
  }
90
86
  const client = normalizeClient(input.client);
91
- if (!matchesClient({
87
+ const stored = {
88
+ agent: row.agent,
89
+ ip: row.ip,
90
+ platform: row.platform,
91
+ };
92
+ const matches = matchesClient({
92
93
  current: client,
93
- stored: stored.client,
94
+ stored,
94
95
  validation: config.validation,
95
- })) {
96
- await runRedis(() => redis.delete([tokenHash]));
97
- try {
98
- await runRecords(() => records.revoke({ revokedAt: current, sessionIds: [stored.id] }));
99
- }
100
- catch (error) {
101
- throw createError({
102
- cause: error,
103
- code: "SESSION_CLIENT_MISMATCH",
104
- message: "Session client identity changed and the session was revoked.",
105
- });
106
- }
96
+ });
97
+ if (!matches) {
98
+ await runDb(() => db.revoke({ revoked_at: current, session_ids: [row.id] }));
107
99
  throw createError({
108
100
  code: "SESSION_CLIENT_MISMATCH",
109
101
  message: "Session client identity changed and the session was revoked.",
110
102
  });
111
103
  }
112
- return { current, stored, tokenHash };
104
+ return { current, row };
113
105
  };
114
106
  return {
115
107
  create: async (input) => {
116
- if (!input.accountId) {
108
+ if (!input.account_id) {
117
109
  throw createError({
118
110
  code: "SESSION_DATA_INVALID",
119
111
  message: "Session account ID is required.",
120
112
  });
121
113
  }
122
114
  const client = normalizeClient(input.client);
123
- const createdAt = now();
124
- const expiresAt = new Date(createdAt.getTime() + config.ttl * 1000);
125
- const token = createToken();
126
- const tokenHash = hashToken(token);
127
- const id = randomUUID();
128
- const stored = {
129
- accountId: input.accountId,
130
- client,
131
- createdAt: createdAt.toISOString(),
132
- data: input.data,
133
- expiresAt: expiresAt.toISOString(),
134
- id,
135
- touchedAt: createdAt.toISOString(),
136
- };
137
- const value = encodeSession(stored);
138
- const active = await getActive(input.accountId);
139
- if (active.length >= config.max) {
115
+ if (!hasClientFields({ client, validation: config.validation })) {
140
116
  throw createError({
141
- code: "SESSION_LIMIT_REACHED",
142
- message: `Maximum active sessions reached (${String(config.max)}).`,
117
+ code: "SESSION_DATA_INVALID",
118
+ message: "Configured session client fields are required.",
143
119
  });
144
120
  }
145
- await runRecords(() => records.create({
146
- accountId: input.accountId,
147
- client,
148
- createdAt,
149
- expiresAt,
150
- id,
151
- tokenHash,
121
+ const created_at = now();
122
+ const expires_at = new Date(Math.min(created_at.getTime() + config.ttl * 1000, getMaxExpiresAt(created_at).getTime()));
123
+ const token = createToken();
124
+ const row = {
125
+ account_id: input.account_id,
126
+ agent: client.agent,
127
+ created_at,
128
+ expires_at,
129
+ id: randomUUID(),
130
+ ip: client.ip,
131
+ platform: client.platform,
132
+ revoked_at: null,
133
+ token_hash: hashToken(token),
134
+ updated_at: null,
135
+ };
136
+ await runDb(() => db.create({
137
+ account_id: row.account_id,
138
+ agent: row.agent,
139
+ created_at: row.created_at,
140
+ expires_at: row.expires_at,
141
+ id: row.id,
142
+ ip: row.ip,
143
+ platform: row.platform,
144
+ token_hash: row.token_hash,
152
145
  }));
153
- try {
154
- await runRedis(() => redis.create({ tokenHash, ttl: config.ttl, value }));
155
- }
156
- catch (error) {
157
- try {
158
- await runRecords(() => records.revoke({ revokedAt: now(), sessionIds: [id] }));
159
- }
160
- catch (recordsError) {
161
- throw createError({
162
- cause: new AggregateError([error, recordsError]),
163
- code: "RECORDS_UNAVAILABLE",
164
- message: "Session creation and records compensation failed.",
165
- });
166
- }
167
- throw error;
146
+ const stored = await runDb(() => db.findToken(row.token_hash));
147
+ if (!stored?.allowed) {
148
+ await runDb(() => db.revoke({ revoked_at: created_at, session_ids: [row.id] }));
149
+ throw createError({
150
+ code: "SESSION_INVALID",
151
+ message: "Account is not allowed to authenticate.",
152
+ });
168
153
  }
169
154
  return {
170
- session: toSession(stored),
155
+ account: stored.account,
156
+ session: toSession(row),
171
157
  token,
158
+ user: stored.account.user,
172
159
  };
173
160
  },
174
161
  resolve: async (input) => {
@@ -176,97 +163,71 @@ export const createSessionService = ({ config, now = () => new Date(), records,
176
163
  if (!validated) {
177
164
  return null;
178
165
  }
179
- const { current, stored, tokenHash } = validated;
180
- const due = current.getTime() - Date.parse(stored.touchedAt) >=
181
- config.renewInterval * 1000;
182
- if (!due) {
183
- return { renewed: false, session: toSession(stored) };
184
- }
185
- const expiresAt = new Date(current.getTime() + config.ttl * 1000);
186
- const renewed = {
187
- ...stored,
188
- expiresAt: expiresAt.toISOString(),
189
- touchedAt: current.toISOString(),
166
+ return {
167
+ account: validated.row.account,
168
+ session: toSession(validated.row),
169
+ user: validated.row.account.user,
190
170
  };
191
- await runRecords(() => records.updateExpiry({
192
- expiresAt,
193
- sessionId: stored.id,
194
- updatedAt: current,
195
- }));
196
- const updated = await runRedis(() => redis.update({
197
- tokenHash,
198
- ttl: config.ttl,
199
- value: encodeSession(renewed),
200
- }));
201
- return updated ? { renewed: true, session: toSession(renewed) } : null;
202
171
  },
203
- validate: async (input) => {
172
+ renew: async (input) => {
204
173
  const validated = await validateSession(input);
205
- return validated ? toSession(validated.stored) : null;
174
+ if (!validated) {
175
+ return null;
176
+ }
177
+ const { current, row } = validated;
178
+ if (current.getTime() < getRenewAt(row).getTime()) {
179
+ return {
180
+ account: row.account,
181
+ renewed: false,
182
+ session: toSession(row),
183
+ user: row.account.user,
184
+ };
185
+ }
186
+ const expires_at = new Date(Math.min(current.getTime() + config.ttl * 1000, getMaxExpiresAt(row.created_at).getTime()));
187
+ await runDb(() => db.updateExpiry({
188
+ expires_at,
189
+ session_id: row.id,
190
+ updated_at: current,
191
+ }));
192
+ return {
193
+ account: row.account,
194
+ renewed: true,
195
+ session: toSession({
196
+ ...row,
197
+ expires_at,
198
+ updated_at: current,
199
+ }),
200
+ user: row.account.user,
201
+ };
206
202
  },
207
203
  revokeToken: async (token) => {
208
204
  if (!tokenPattern.test(token)) {
209
205
  return [];
210
206
  }
211
- const tokenHash = hashToken(token);
212
- const raw = await runRedis(() => redis.get(tokenHash));
213
- if (!raw) {
207
+ const row = await runDb(() => db.findToken(hashToken(token)));
208
+ if (row?.revoked_at !== null) {
214
209
  return [];
215
210
  }
216
- const stored = parseSession(raw);
217
- await runRedis(() => redis.delete([tokenHash]));
218
- if (!stored) {
219
- return [];
220
- }
221
- await runRecords(() => records.revoke({ revokedAt: now(), sessionIds: [stored.id] }));
222
- return [stored.id];
211
+ return revokeRows({ revoked_at: now(), rows: [row] });
223
212
  },
224
- revoke: async ({ accountId, sessionId }) => {
225
- const row = await runRecords(() => records.find({ accountId, sessionId }));
226
- if (row?.revokedAt !== null) {
213
+ revoke: async ({ account_id, session_id }) => {
214
+ const row = await runDb(() => db.find({ account_id, session_id }));
215
+ if (row?.revoked_at !== null) {
227
216
  throw createError({
228
217
  code: "SESSION_NOT_FOUND",
229
218
  message: "Session not found.",
230
219
  });
231
220
  }
232
- return revokeRows({ revokedAt: now(), rows: [row] });
233
- },
234
- revokeAccount: async (accountId) => {
235
- return revokeRows({ revokedAt: now(), rows: await getActive(accountId) });
221
+ return revokeRows({ revoked_at: now(), rows: [row] });
236
222
  },
237
- list: async (accountId) => {
238
- return (await getActive(accountId)).map(toActiveSession);
223
+ revokeAccount: async (account_id) => {
224
+ return revokeRows({
225
+ revoked_at: now(),
226
+ rows: await getActive(account_id),
227
+ });
239
228
  },
240
- sync: async ({ accountId, data }) => {
241
- const rows = await getActive(accountId);
242
- if (rows.length === 0) {
243
- return;
244
- }
245
- const hashes = rows.map((row) => row.tokenHash);
246
- const values = await runRedis(() => redis.getMany(hashes));
247
- if (values.length !== hashes.length) {
248
- throw createError({
249
- code: "REDIS_UNAVAILABLE",
250
- message: "Authentication service returned invalid data.",
251
- });
252
- }
253
- await Promise.all(values.map(async (raw, index) => {
254
- if (!raw) {
255
- return;
256
- }
257
- const stored = parseSession(raw);
258
- const tokenHash = hashes[index];
259
- if (!stored || !tokenHash || stored.accountId !== accountId) {
260
- if (tokenHash) {
261
- await runRedis(() => redis.delete([tokenHash]));
262
- }
263
- return;
264
- }
265
- await runRedis(() => redis.keep({
266
- tokenHash,
267
- value: encodeSession({ ...stored, data }),
268
- }));
269
- }));
229
+ list: async (account_id) => {
230
+ return (await getActive(account_id)).map(toActiveSession);
270
231
  },
271
232
  };
272
233
  };
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/session/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/session/service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/session/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE;IACtC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE;IACjD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC,CAAC"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/session/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE;IACpC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC,CAAC"}
@@ -1,106 +1,97 @@
1
1
  import type { SessionClient, SessionClientInput } from "../client/index.js";
2
- export type SessionData = Record<string, unknown>;
3
- export type StoredSession<TData extends object> = {
4
- accountId: string;
5
- client: SessionClient;
6
- createdAt: string;
7
- data: TData;
8
- expiresAt: string;
2
+ export type AuthUser = {
3
+ id: string;
4
+ role: string;
5
+ status: string;
6
+ };
7
+ export type AuthAccount = {
8
+ email: string;
9
+ id: string;
10
+ name: string;
11
+ role: string;
12
+ status: string;
13
+ timezone: string | null;
14
+ user: AuthUser;
15
+ };
16
+ export type SessionRecord = {
17
+ account_id: string;
18
+ agent: string | null;
19
+ created_at: Date;
20
+ expires_at: Date;
9
21
  id: string;
10
- touchedAt: string;
22
+ ip: string | null;
23
+ platform: string | null;
24
+ revoked_at: Date | null;
25
+ token_hash: string;
26
+ updated_at: Date | null;
11
27
  };
12
- export type Session<TData extends object> = {
13
- accountId: string;
28
+ export type AuthSessionRecord = SessionRecord & {
29
+ account: AuthAccount;
30
+ allowed: boolean;
31
+ };
32
+ export type CreateSessionRecord = Omit<SessionRecord, "revoked_at" | "updated_at">;
33
+ export type ActiveSession = Omit<SessionRecord, "token_hash">;
34
+ export type Session = {
35
+ account_id: string;
14
36
  client: SessionClient;
15
- createdAt: Date;
16
- data: TData;
17
- expiresAt: Date;
37
+ created_at: Date;
38
+ expires_at: Date;
18
39
  id: string;
19
- touchedAt: Date;
40
+ renew_at: Date;
20
41
  };
21
- export type CreatedSession<TData extends object> = {
22
- session: Session<TData>;
42
+ export type CreatedSession = {
43
+ account: AuthAccount;
44
+ session: Session;
23
45
  token: string;
46
+ user: AuthUser;
47
+ };
48
+ export type ResolvedSession = {
49
+ account: AuthAccount;
50
+ session: Session;
51
+ user: AuthUser;
24
52
  };
25
- export type ResolvedSession<TData extends object> = {
53
+ export type RenewedSession = ResolvedSession & {
26
54
  renewed: boolean;
27
- session: Session<TData>;
28
55
  };
29
- export type CreateSession<TData extends object> = {
30
- accountId: string;
56
+ export type CreateSession = {
57
+ account_id: string;
31
58
  client: SessionClientInput;
32
- data: TData;
33
59
  };
34
60
  export type SessionInput = {
35
61
  client: SessionClientInput;
36
62
  token: string;
37
63
  };
38
- export type SessionRecord = {
39
- accountId: string;
40
- client: SessionClient;
41
- createdAt: Date;
42
- expiresAt: Date;
43
- id: string;
44
- revokedAt: Date | null;
45
- tokenHash: string;
46
- updatedAt: Date | null;
47
- };
48
- export type CreateSessionRecord = Omit<SessionRecord, "revokedAt" | "updatedAt">;
49
- export type ActiveSession = Omit<SessionRecord, "tokenHash">;
50
- export type SessionRecords = {
64
+ export type DbAdapter = {
51
65
  create(session: CreateSessionRecord): Promise<void>;
52
66
  find(input: {
53
- accountId: string;
54
- sessionId: string;
67
+ account_id: string;
68
+ session_id: string;
55
69
  }): Promise<SessionRecord | null>;
56
70
  findActive(input: {
57
- accountId: string;
71
+ account_id: string;
58
72
  now: Date;
59
73
  }): Promise<SessionRecord[]>;
74
+ findToken(token_hash: string): Promise<AuthSessionRecord | null>;
60
75
  revoke(input: {
61
- revokedAt: Date;
62
- sessionIds: string[];
76
+ revoked_at: Date;
77
+ session_ids: string[];
63
78
  }): Promise<void>;
64
79
  updateExpiry(input: {
65
- expiresAt: Date;
66
- sessionId: string;
67
- updatedAt: Date;
80
+ expires_at: Date;
81
+ session_id: string;
82
+ updated_at: Date;
68
83
  }): Promise<void>;
69
84
  };
70
- export type RedisSessionStore = {
71
- create(input: {
72
- tokenHash: string;
73
- ttl: number;
74
- value: string;
75
- }): Promise<void>;
76
- delete(tokenHashes: string[]): Promise<void>;
77
- exists(tokenHashes: string[]): Promise<boolean[]>;
78
- get(tokenHash: string): Promise<string | null>;
79
- getMany(tokenHashes: string[]): Promise<(string | null)[]>;
80
- keep(input: {
81
- tokenHash: string;
82
- value: string;
83
- }): Promise<boolean>;
84
- update(input: {
85
- tokenHash: string;
86
- ttl: number;
87
- value: string;
88
- }): Promise<boolean>;
89
- };
90
- export type SessionService<TData extends object> = {
91
- create(input: CreateSession<TData>): Promise<CreatedSession<TData>>;
92
- list(accountId: string): Promise<ActiveSession[]>;
93
- resolve(input: SessionInput): Promise<ResolvedSession<TData> | null>;
94
- validate(input: SessionInput): Promise<Session<TData> | null>;
85
+ export type SessionService = {
86
+ create(input: CreateSession): Promise<CreatedSession>;
87
+ list(account_id: string): Promise<ActiveSession[]>;
88
+ renew(input: SessionInput): Promise<RenewedSession | null>;
89
+ resolve(input: SessionInput): Promise<ResolvedSession | null>;
95
90
  revoke(input: {
96
- accountId: string;
97
- sessionId: string;
91
+ account_id: string;
92
+ session_id: string;
98
93
  }): Promise<string[]>;
99
- revokeAccount(accountId: string): Promise<string[]>;
94
+ revokeAccount(account_id: string): Promise<string[]>;
100
95
  revokeToken(token: string): Promise<string[]>;
101
- sync(input: {
102
- accountId: string;
103
- data: TData;
104
- }): Promise<void>;
105
96
  };
106
97
  //# sourceMappingURL=types.d.ts.map