@gauts/auth 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +103 -59
  2. package/SECURITY.md +1 -3
  3. package/dist/adapters/hono/index.d.ts +12 -6
  4. package/dist/adapters/hono/index.d.ts.map +1 -1
  5. package/dist/adapters/hono/index.js +72 -17
  6. package/dist/adapters/hono/index.js.map +1 -1
  7. package/dist/adapters/redis/index.d.ts +5 -1
  8. package/dist/adapters/redis/index.d.ts.map +1 -1
  9. package/dist/adapters/redis/index.js +16 -7
  10. package/dist/adapters/redis/index.js.map +1 -1
  11. package/dist/auth.d.ts +3 -3
  12. package/dist/auth.d.ts.map +1 -1
  13. package/dist/auth.js +21 -15
  14. package/dist/auth.js.map +1 -1
  15. package/dist/client/index.d.ts +8 -6
  16. package/dist/client/index.d.ts.map +1 -1
  17. package/dist/client/index.js +4 -11
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/config.d.ts +10 -4
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +118 -19
  22. package/dist/config.js.map +1 -1
  23. package/dist/errors.d.ts +7 -2
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +1 -1
  26. package/dist/errors.js.map +1 -1
  27. package/dist/index.d.ts +4 -5
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/password/index.d.ts +4 -1
  32. package/dist/password/index.d.ts.map +1 -1
  33. package/dist/password/index.js +16 -9
  34. package/dist/password/index.js.map +1 -1
  35. package/dist/session/schema.d.ts.map +1 -1
  36. package/dist/session/schema.js +19 -10
  37. package/dist/session/schema.js.map +1 -1
  38. package/dist/session/service.d.ts +3 -3
  39. package/dist/session/service.d.ts.map +1 -1
  40. package/dist/session/service.js +128 -67
  41. package/dist/session/service.js.map +1 -1
  42. package/dist/session/token.d.ts.map +1 -1
  43. package/dist/session/token.js +6 -2
  44. package/dist/session/token.js.map +1 -1
  45. package/dist/session/types.d.ts +52 -25
  46. package/dist/session/types.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/session/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA0B,EAAE,CAClE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,YAAY,GAAG,CAAC,KAAc,EAAmB,EAAE,CACvD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAElE,MAAM,QAAQ,GAAG,CAAC,KAAc,EAA0B,EAAE,CAC1D,QAAQ,CAAC,KAAK,CAAC;IACf,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;IAC/B,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1B,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;IAChC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAuB,OAA6B,EAAU,EAAE;IAC3F,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAC,sBAAsB,EAAE,yCAAyC,EAAE,KAAK,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAuB,GAAW,EAA+B,EAAE;IAC7F,IAAI,KAAc,CAAC;IAEnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACrB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACvB,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAA6B,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAuB,MAA4B,EAAkB,EAAE,CAAC,CAAC;IAChG,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;CACtC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/session/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA0B,EAAE;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAmB,EAAE;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAA0B,EAAE;IAC1D,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAClC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA6B,EACrB,EAAE;IACV,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAC;YAChB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAW,EACkB,EAAE;IAC/B,IAAI,KAAc,CAAC;IAEnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACrB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACvB,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAA6B,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAA4B,EACZ,EAAE,CAAC,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;CACtC,CAAC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import type { ResolvedSessionConfig } from "../config.js";
2
- import type { RedisSessionStore, SessionAudit, SessionService } from "./types.js";
2
+ import type { RedisSessionStore, SessionRecords, SessionService } from "./types.js";
3
3
  type SessionDeps = {
4
- audit: SessionAudit;
5
4
  config: ResolvedSessionConfig;
6
5
  now?: () => Date;
6
+ records: SessionRecords;
7
7
  redis: RedisSessionStore;
8
8
  };
9
- export declare const createSessionService: <TData extends object>({ audit, config, now, redis, }: SessionDeps) => SessionService<TData>;
9
+ export declare const createSessionService: <TData extends object>({ config, now, records, redis, }: SessionDeps) => SessionService<TData>;
10
10
  export {};
11
11
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/session/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAI1D,OAAO,KAAK,EAGV,iBAAiB,EACjB,YAAY,EACZ,cAAc,EAEf,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAYF,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,EAAE,gCAKxD,WAAW,KAAG,cAAc,CAAC,KAAK,CA4QpC,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/session/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAI1D,OAAO,KAAK,EAEV,iBAAiB,EAGjB,cAAc,EACd,cAAc,EAEf,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAuBF,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,EAAE,kCAKxD,WAAW,KAAG,cAAc,CAAC,KAAK,CAiWpC,CAAC"}
@@ -1,18 +1,18 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { matchesClient, normalizeClient, normalizeIdentity } from "../client/index.js";
2
+ import { matchesClient, normalizeClient } from "../client/index.js";
3
3
  import { createError, isAuthError } from "../errors.js";
4
4
  import { encodeSession, parseSession, toSession } from "./schema.js";
5
5
  import { createToken, hashToken, tokenPattern } from "./token.js";
6
6
  const toActiveSession = (session) => ({
7
+ accountId: session.accountId,
7
8
  client: session.client,
8
9
  createdAt: session.createdAt,
9
10
  expiresAt: session.expiresAt,
10
11
  id: session.id,
11
12
  revokedAt: session.revokedAt,
12
- subjectId: session.subjectId,
13
13
  updatedAt: session.updatedAt,
14
14
  });
15
- export const createSessionService = ({ audit, config, now = () => new Date(), redis, }) => {
15
+ export const createSessionService = ({ config, now = () => new Date(), records, redis, }) => {
16
16
  const runRedis = async (operation) => {
17
17
  try {
18
18
  return await operation();
@@ -21,10 +21,14 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
21
21
  if (isAuthError(error)) {
22
22
  throw error;
23
23
  }
24
- throw createError("REDIS_UNAVAILABLE", "Authentication service unavailable.", error);
24
+ throw createError({
25
+ cause: error,
26
+ code: "REDIS_UNAVAILABLE",
27
+ message: "Authentication service unavailable.",
28
+ });
25
29
  }
26
30
  };
27
- const runAudit = async (operation) => {
31
+ const runRecords = async (operation) => {
28
32
  try {
29
33
  return await operation();
30
34
  }
@@ -32,35 +36,88 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
32
36
  if (isAuthError(error)) {
33
37
  throw error;
34
38
  }
35
- throw createError("AUDIT_UNAVAILABLE", "Session audit service unavailable.", error);
39
+ throw createError({
40
+ cause: error,
41
+ code: "RECORDS_UNAVAILABLE",
42
+ message: "Session records service unavailable.",
43
+ });
36
44
  }
37
45
  };
38
- const getActive = async (subjectId) => {
46
+ const getActive = async (accountId) => {
39
47
  const current = now();
40
- const rows = await runAudit(() => audit.findActive(subjectId, current));
48
+ const rows = await runRecords(() => records.findActive({ accountId, now: current }));
41
49
  const valid = rows.filter((row) => row.revokedAt === null && row.expiresAt.getTime() > current.getTime());
42
50
  if (valid.length === 0) {
43
51
  return [];
44
52
  }
45
53
  const active = await runRedis(() => redis.exists(valid.map((row) => row.tokenHash)));
46
54
  if (active.length !== valid.length) {
47
- throw createError("REDIS_UNAVAILABLE", "Authentication service returned invalid data.");
55
+ throw createError({
56
+ code: "REDIS_UNAVAILABLE",
57
+ message: "Authentication service returned invalid data.",
58
+ });
48
59
  }
49
60
  return valid.filter((_, index) => active[index]);
50
61
  };
51
- const revokeRows = async (rows, revokedAt) => {
62
+ const revokeRows = async ({ revokedAt, rows, }) => {
52
63
  if (rows.length === 0) {
53
64
  return [];
54
65
  }
55
66
  await runRedis(() => redis.delete(rows.map((row) => row.tokenHash)));
56
67
  const ids = rows.map((row) => row.id);
57
- await runAudit(() => audit.revoke(ids, revokedAt));
68
+ await runRecords(() => records.revoke({ revokedAt, sessionIds: ids }));
58
69
  return ids;
59
70
  };
71
+ const validateSession = async (input) => {
72
+ if (!tokenPattern.test(input.token)) {
73
+ return null;
74
+ }
75
+ const tokenHash = hashToken(input.token);
76
+ const raw = await runRedis(() => redis.get(tokenHash));
77
+ if (!raw) {
78
+ return null;
79
+ }
80
+ const stored = parseSession(raw);
81
+ if (!stored) {
82
+ await runRedis(() => redis.delete([tokenHash]));
83
+ return null;
84
+ }
85
+ const current = now();
86
+ if (Date.parse(stored.expiresAt) <= current.getTime()) {
87
+ await runRedis(() => redis.delete([tokenHash]));
88
+ return null;
89
+ }
90
+ const client = normalizeClient(input.client);
91
+ if (!matchesClient({
92
+ current: client,
93
+ stored: stored.client,
94
+ 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
+ }
107
+ throw createError({
108
+ code: "SESSION_CLIENT_MISMATCH",
109
+ message: "Session client identity changed and the session was revoked.",
110
+ });
111
+ }
112
+ return { current, stored, tokenHash };
113
+ };
60
114
  return {
61
115
  create: async (input) => {
62
- if (!input.subjectId) {
63
- throw createError("SESSION_DATA_INVALID", "Session subject ID is required.");
116
+ if (!input.accountId) {
117
+ throw createError({
118
+ code: "SESSION_DATA_INVALID",
119
+ message: "Session account ID is required.",
120
+ });
64
121
  }
65
122
  const client = normalizeClient(input.client);
66
123
  const createdAt = now();
@@ -69,36 +126,43 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
69
126
  const tokenHash = hashToken(token);
70
127
  const id = randomUUID();
71
128
  const stored = {
129
+ accountId: input.accountId,
72
130
  client,
73
131
  createdAt: createdAt.toISOString(),
74
132
  data: input.data,
75
133
  expiresAt: expiresAt.toISOString(),
76
134
  id,
77
- subjectId: input.subjectId,
78
135
  touchedAt: createdAt.toISOString(),
79
136
  };
80
137
  const value = encodeSession(stored);
81
- const active = await getActive(input.subjectId);
138
+ const active = await getActive(input.accountId);
82
139
  if (active.length >= config.max) {
83
- throw createError("SESSION_LIMIT_REACHED", `Maximum active sessions reached (${String(config.max)}).`);
140
+ throw createError({
141
+ code: "SESSION_LIMIT_REACHED",
142
+ message: `Maximum active sessions reached (${String(config.max)}).`,
143
+ });
84
144
  }
85
- await runAudit(() => audit.create({
145
+ await runRecords(() => records.create({
146
+ accountId: input.accountId,
86
147
  client,
87
148
  createdAt,
88
149
  expiresAt,
89
150
  id,
90
- subjectId: input.subjectId,
91
151
  tokenHash,
92
152
  }));
93
153
  try {
94
- await runRedis(() => redis.create(tokenHash, value, config.ttl));
154
+ await runRedis(() => redis.create({ tokenHash, ttl: config.ttl, value }));
95
155
  }
96
156
  catch (error) {
97
157
  try {
98
- await runAudit(() => audit.revoke([id], now()));
158
+ await runRecords(() => records.revoke({ revokedAt: now(), sessionIds: [id] }));
99
159
  }
100
- catch (auditError) {
101
- throw createError("AUDIT_UNAVAILABLE", "Session creation and audit compensation failed.", new AggregateError([error, auditError]));
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
+ });
102
166
  }
103
167
  throw error;
104
168
  }
@@ -108,37 +172,13 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
108
172
  };
109
173
  },
110
174
  resolve: async (input) => {
111
- if (!tokenPattern.test(input.token)) {
175
+ const validated = await validateSession(input);
176
+ if (!validated) {
112
177
  return null;
113
178
  }
114
- const tokenHash = hashToken(input.token);
115
- const raw = await runRedis(() => redis.get(tokenHash));
116
- if (!raw) {
117
- return null;
118
- }
119
- const stored = parseSession(raw);
120
- if (!stored) {
121
- await runRedis(() => redis.delete([tokenHash]));
122
- return null;
123
- }
124
- const current = now();
125
- if (Date.parse(stored.expiresAt) <= current.getTime()) {
126
- await runRedis(() => redis.delete([tokenHash]));
127
- return null;
128
- }
129
- const identity = normalizeIdentity(input.client);
130
- if (!matchesClient(stored.client, identity)) {
131
- await runRedis(() => redis.delete([tokenHash]));
132
- try {
133
- await runAudit(() => audit.revoke([stored.id], current));
134
- }
135
- catch (error) {
136
- throw createError("SESSION_CLIENT_MISMATCH", "Session client identity changed and the session was revoked.", error);
137
- }
138
- throw createError("SESSION_CLIENT_MISMATCH", "Session client identity changed and the session was revoked.");
139
- }
140
- const due = input.renew !== false &&
141
- current.getTime() - Date.parse(stored.touchedAt) >= config.touchAfter * 1000;
179
+ const { current, stored, tokenHash } = validated;
180
+ const due = current.getTime() - Date.parse(stored.touchedAt) >=
181
+ config.renewInterval * 1000;
142
182
  if (!due) {
143
183
  return { renewed: false, session: toSession(stored) };
144
184
  }
@@ -148,10 +188,22 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
148
188
  expiresAt: expiresAt.toISOString(),
149
189
  touchedAt: current.toISOString(),
150
190
  };
151
- await runAudit(() => audit.touch(stored.id, expiresAt, current));
152
- const updated = await runRedis(() => redis.update(tokenHash, encodeSession(renewed), config.ttl));
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
+ }));
153
201
  return updated ? { renewed: true, session: toSession(renewed) } : null;
154
202
  },
203
+ validate: async (input) => {
204
+ const validated = await validateSession(input);
205
+ return validated ? toSession(validated.stored) : null;
206
+ },
155
207
  revokeToken: async (token) => {
156
208
  if (!tokenPattern.test(token)) {
157
209
  return [];
@@ -166,31 +218,37 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
166
218
  if (!stored) {
167
219
  return [];
168
220
  }
169
- await runAudit(() => audit.revoke([stored.id], now()));
221
+ await runRecords(() => records.revoke({ revokedAt: now(), sessionIds: [stored.id] }));
170
222
  return [stored.id];
171
223
  },
172
- revoke: async ({ sessionId, subjectId }) => {
173
- const row = await runAudit(() => audit.findForRevoke(subjectId, sessionId));
224
+ revoke: async ({ accountId, sessionId }) => {
225
+ const row = await runRecords(() => records.find({ accountId, sessionId }));
174
226
  if (row?.revokedAt !== null) {
175
- throw createError("SESSION_NOT_FOUND", "Session not found.");
227
+ throw createError({
228
+ code: "SESSION_NOT_FOUND",
229
+ message: "Session not found.",
230
+ });
176
231
  }
177
- return revokeRows([row], now());
232
+ return revokeRows({ revokedAt: now(), rows: [row] });
178
233
  },
179
- revokeSubject: async (subjectId) => {
180
- return revokeRows(await getActive(subjectId), now());
234
+ revokeAccount: async (accountId) => {
235
+ return revokeRows({ revokedAt: now(), rows: await getActive(accountId) });
181
236
  },
182
- list: async (subjectId) => {
183
- return (await getActive(subjectId)).map(toActiveSession);
237
+ list: async (accountId) => {
238
+ return (await getActive(accountId)).map(toActiveSession);
184
239
  },
185
- sync: async (subjectId, data) => {
186
- const rows = await getActive(subjectId);
240
+ sync: async ({ accountId, data }) => {
241
+ const rows = await getActive(accountId);
187
242
  if (rows.length === 0) {
188
243
  return;
189
244
  }
190
245
  const hashes = rows.map((row) => row.tokenHash);
191
246
  const values = await runRedis(() => redis.getMany(hashes));
192
247
  if (values.length !== hashes.length) {
193
- throw createError("REDIS_UNAVAILABLE", "Authentication service returned invalid data.");
248
+ throw createError({
249
+ code: "REDIS_UNAVAILABLE",
250
+ message: "Authentication service returned invalid data.",
251
+ });
194
252
  }
195
253
  await Promise.all(values.map(async (raw, index) => {
196
254
  if (!raw) {
@@ -198,13 +256,16 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
198
256
  }
199
257
  const stored = parseSession(raw);
200
258
  const tokenHash = hashes[index];
201
- if (!stored || !tokenHash || stored.subjectId !== subjectId) {
259
+ if (!stored || !tokenHash || stored.accountId !== accountId) {
202
260
  if (tokenHash) {
203
261
  await runRedis(() => redis.delete([tokenHash]));
204
262
  }
205
263
  return;
206
264
  }
207
- await runRedis(() => redis.keep(tokenHash, encodeSession({ ...stored, data })));
265
+ await runRedis(() => redis.keep({
266
+ tokenHash,
267
+ value: encodeSession({ ...stored, data }),
268
+ }));
208
269
  }));
209
270
  },
210
271
  };
@@ -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.d.ts","sourceRoot":"","sources":["../../src/session/token.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,QAAwB,CAAC;AAElD,eAAO,MAAM,WAAW,QAAO,MAA+C,CAAC;AAE/E,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MACQ,CAAC"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/session/token.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,QAAwB,CAAC;AAElD,eAAO,MAAM,WAAW,QAAO,MAE9B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAEzC,CAAC"}
@@ -1,5 +1,9 @@
1
1
  import { createHash, randomBytes } from "node:crypto";
2
2
  export const tokenPattern = /^[A-Za-z0-9_-]{43}$/;
3
- export const createToken = () => randomBytes(32).toString("base64url");
4
- export const hashToken = (token) => createHash("sha256").update(token).digest("hex");
3
+ export const createToken = () => {
4
+ return randomBytes(32).toString("base64url");
5
+ };
6
+ export const hashToken = (token) => {
7
+ return createHash("sha256").update(token).digest("hex");
8
+ };
5
9
  //# sourceMappingURL=token.js.map
@@ -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,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CACjD,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,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;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,21 +1,21 @@
1
- import type { SessionClient, SessionClientInput, SessionIdentityInput } from "../client/index.js";
1
+ import type { SessionClient, SessionClientInput } from "../client/index.js";
2
2
  export type SessionData = Record<string, unknown>;
3
3
  export type StoredSession<TData extends object> = {
4
+ accountId: string;
4
5
  client: SessionClient;
5
6
  createdAt: string;
6
7
  data: TData;
7
8
  expiresAt: string;
8
9
  id: string;
9
- subjectId: string;
10
10
  touchedAt: string;
11
11
  };
12
12
  export type Session<TData extends object> = {
13
+ accountId: string;
13
14
  client: SessionClient;
14
15
  createdAt: Date;
15
16
  data: TData;
16
17
  expiresAt: Date;
17
18
  id: string;
18
- subjectId: string;
19
19
  touchedAt: Date;
20
20
  };
21
21
  export type CreatedSession<TData extends object> = {
@@ -27,53 +27,80 @@ export type ResolvedSession<TData extends object> = {
27
27
  session: Session<TData>;
28
28
  };
29
29
  export type CreateSession<TData extends object> = {
30
+ accountId: string;
30
31
  client: SessionClientInput;
31
32
  data: TData;
32
- subjectId: string;
33
33
  };
34
- export type ResolveSession = {
35
- client: SessionIdentityInput;
36
- renew?: boolean;
34
+ export type SessionInput = {
35
+ client: SessionClientInput;
37
36
  token: string;
38
37
  };
39
- export type AuditSession = {
38
+ export type SessionRecord = {
39
+ accountId: string;
40
40
  client: SessionClient;
41
41
  createdAt: Date;
42
42
  expiresAt: Date;
43
43
  id: string;
44
44
  revokedAt: Date | null;
45
- subjectId: string;
46
45
  tokenHash: string;
47
46
  updatedAt: Date | null;
48
47
  };
49
- export type CreateAuditSession = Omit<AuditSession, "revokedAt" | "updatedAt">;
50
- export type ActiveSession = Omit<AuditSession, "tokenHash">;
51
- export type SessionAudit = {
52
- create(session: CreateAuditSession): Promise<void>;
53
- findActive(subjectId: string, now: Date): Promise<AuditSession[]>;
54
- findForRevoke(subjectId: string, sessionId: string): Promise<AuditSession | null>;
55
- revoke(sessionIds: string[], revokedAt: Date): Promise<void>;
56
- touch(sessionId: string, expiresAt: Date, updatedAt: Date): Promise<void>;
48
+ export type CreateSessionRecord = Omit<SessionRecord, "revokedAt" | "updatedAt">;
49
+ export type ActiveSession = Omit<SessionRecord, "tokenHash">;
50
+ export type SessionRecords = {
51
+ create(session: CreateSessionRecord): Promise<void>;
52
+ find(input: {
53
+ accountId: string;
54
+ sessionId: string;
55
+ }): Promise<SessionRecord | null>;
56
+ findActive(input: {
57
+ accountId: string;
58
+ now: Date;
59
+ }): Promise<SessionRecord[]>;
60
+ revoke(input: {
61
+ revokedAt: Date;
62
+ sessionIds: string[];
63
+ }): Promise<void>;
64
+ updateExpiry(input: {
65
+ expiresAt: Date;
66
+ sessionId: string;
67
+ updatedAt: Date;
68
+ }): Promise<void>;
57
69
  };
58
70
  export type RedisSessionStore = {
59
- create(tokenHash: string, value: string, ttl: number): Promise<void>;
71
+ create(input: {
72
+ tokenHash: string;
73
+ ttl: number;
74
+ value: string;
75
+ }): Promise<void>;
60
76
  delete(tokenHashes: string[]): Promise<void>;
61
77
  exists(tokenHashes: string[]): Promise<boolean[]>;
62
78
  get(tokenHash: string): Promise<string | null>;
63
79
  getMany(tokenHashes: string[]): Promise<(string | null)[]>;
64
- keep(tokenHash: string, value: string): Promise<boolean>;
65
- update(tokenHash: string, value: string, ttl: number): Promise<boolean>;
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>;
66
89
  };
67
90
  export type SessionService<TData extends object> = {
68
91
  create(input: CreateSession<TData>): Promise<CreatedSession<TData>>;
69
- list(subjectId: string): Promise<ActiveSession[]>;
70
- resolve(input: ResolveSession): Promise<ResolvedSession<TData> | null>;
92
+ list(accountId: string): Promise<ActiveSession[]>;
93
+ resolve(input: SessionInput): Promise<ResolvedSession<TData> | null>;
94
+ validate(input: SessionInput): Promise<Session<TData> | null>;
71
95
  revoke(input: {
96
+ accountId: string;
72
97
  sessionId: string;
73
- subjectId: string;
74
98
  }): Promise<string[]>;
75
- revokeSubject(subjectId: string): Promise<string[]>;
99
+ revokeAccount(accountId: string): Promise<string[]>;
76
100
  revokeToken(token: string): Promise<string[]>;
77
- sync(subjectId: string, data: TData): Promise<void>;
101
+ sync(input: {
102
+ accountId: string;
103
+ data: TData;
104
+ }): Promise<void>;
78
105
  };
79
106
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gauts/auth",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "description": "Framework-agnostic password and server-side session authentication for Node.js.",
5
5
  "license": "MIT",
6
6
  "author": "GVALFER",