@gauts/auth 0.1.2 → 0.2.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.
- package/README.md +105 -62
- package/SECURITY.md +1 -3
- package/dist/adapters/hono/index.d.ts +12 -6
- package/dist/adapters/hono/index.d.ts.map +1 -1
- package/dist/adapters/hono/index.js +72 -17
- package/dist/adapters/hono/index.js.map +1 -1
- package/dist/adapters/redis/index.d.ts +5 -1
- package/dist/adapters/redis/index.d.ts.map +1 -1
- package/dist/adapters/redis/index.js +16 -7
- package/dist/adapters/redis/index.js.map +1 -1
- package/dist/auth.d.ts +3 -3
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +21 -15
- package/dist/auth.js.map +1 -1
- package/dist/client/index.d.ts +8 -6
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -11
- package/dist/client/index.js.map +1 -1
- package/dist/config.d.ts +12 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +119 -18
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +7 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/password/index.d.ts +4 -1
- package/dist/password/index.d.ts.map +1 -1
- package/dist/password/index.js +16 -9
- package/dist/password/index.js.map +1 -1
- package/dist/session/schema.d.ts.map +1 -1
- package/dist/session/schema.js +19 -10
- package/dist/session/schema.js.map +1 -1
- package/dist/session/service.d.ts +3 -3
- package/dist/session/service.d.ts.map +1 -1
- package/dist/session/service.js +94 -45
- package/dist/session/service.js.map +1 -1
- package/dist/session/token.d.ts.map +1 -1
- package/dist/session/token.js +6 -2
- package/dist/session/token.js.map +1 -1
- package/dist/session/types.d.ts +49 -23
- package/dist/session/types.d.ts.map +1 -1
- 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,
|
|
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,
|
|
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>({
|
|
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,
|
|
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,EAEjB,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;AAiBF,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,EAAE,kCAKxD,WAAW,KAAG,cAAc,CAAC,KAAK,CA8UpC,CAAC"}
|
package/dist/session/service.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { matchesClient, normalizeClient
|
|
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 = ({
|
|
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(
|
|
24
|
+
throw createError({
|
|
25
|
+
cause: error,
|
|
26
|
+
code: "REDIS_UNAVAILABLE",
|
|
27
|
+
message: "Authentication service unavailable.",
|
|
28
|
+
});
|
|
25
29
|
}
|
|
26
30
|
};
|
|
27
|
-
const
|
|
31
|
+
const runRecords = async (operation) => {
|
|
28
32
|
try {
|
|
29
33
|
return await operation();
|
|
30
34
|
}
|
|
@@ -32,35 +36,45 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
|
|
|
32
36
|
if (isAuthError(error)) {
|
|
33
37
|
throw error;
|
|
34
38
|
}
|
|
35
|
-
throw createError(
|
|
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 (
|
|
46
|
+
const getActive = async (accountId) => {
|
|
39
47
|
const current = now();
|
|
40
|
-
const rows = await
|
|
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(
|
|
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,
|
|
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
|
|
68
|
+
await runRecords(() => records.revoke({ revokedAt, sessionIds: ids }));
|
|
58
69
|
return ids;
|
|
59
70
|
};
|
|
60
71
|
return {
|
|
61
72
|
create: async (input) => {
|
|
62
|
-
if (!input.
|
|
63
|
-
throw createError(
|
|
73
|
+
if (!input.accountId) {
|
|
74
|
+
throw createError({
|
|
75
|
+
code: "SESSION_DATA_INVALID",
|
|
76
|
+
message: "Session account ID is required.",
|
|
77
|
+
});
|
|
64
78
|
}
|
|
65
79
|
const client = normalizeClient(input.client);
|
|
66
80
|
const createdAt = now();
|
|
@@ -69,36 +83,43 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
|
|
|
69
83
|
const tokenHash = hashToken(token);
|
|
70
84
|
const id = randomUUID();
|
|
71
85
|
const stored = {
|
|
86
|
+
accountId: input.accountId,
|
|
72
87
|
client,
|
|
73
88
|
createdAt: createdAt.toISOString(),
|
|
74
89
|
data: input.data,
|
|
75
90
|
expiresAt: expiresAt.toISOString(),
|
|
76
91
|
id,
|
|
77
|
-
subjectId: input.subjectId,
|
|
78
92
|
touchedAt: createdAt.toISOString(),
|
|
79
93
|
};
|
|
80
94
|
const value = encodeSession(stored);
|
|
81
|
-
const active = await getActive(input.
|
|
95
|
+
const active = await getActive(input.accountId);
|
|
82
96
|
if (active.length >= config.max) {
|
|
83
|
-
throw createError(
|
|
97
|
+
throw createError({
|
|
98
|
+
code: "SESSION_LIMIT_REACHED",
|
|
99
|
+
message: `Maximum active sessions reached (${String(config.max)}).`,
|
|
100
|
+
});
|
|
84
101
|
}
|
|
85
|
-
await
|
|
102
|
+
await runRecords(() => records.create({
|
|
103
|
+
accountId: input.accountId,
|
|
86
104
|
client,
|
|
87
105
|
createdAt,
|
|
88
106
|
expiresAt,
|
|
89
107
|
id,
|
|
90
|
-
subjectId: input.subjectId,
|
|
91
108
|
tokenHash,
|
|
92
109
|
}));
|
|
93
110
|
try {
|
|
94
|
-
await runRedis(() => redis.create(tokenHash,
|
|
111
|
+
await runRedis(() => redis.create({ tokenHash, ttl: config.ttl, value }));
|
|
95
112
|
}
|
|
96
113
|
catch (error) {
|
|
97
114
|
try {
|
|
98
|
-
await
|
|
115
|
+
await runRecords(() => records.revoke({ revokedAt: now(), sessionIds: [id] }));
|
|
99
116
|
}
|
|
100
|
-
catch (
|
|
101
|
-
throw createError(
|
|
117
|
+
catch (recordsError) {
|
|
118
|
+
throw createError({
|
|
119
|
+
cause: new AggregateError([error, recordsError]),
|
|
120
|
+
code: "RECORDS_UNAVAILABLE",
|
|
121
|
+
message: "Session creation and records compensation failed.",
|
|
122
|
+
});
|
|
102
123
|
}
|
|
103
124
|
throw error;
|
|
104
125
|
}
|
|
@@ -126,19 +147,30 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
|
|
|
126
147
|
await runRedis(() => redis.delete([tokenHash]));
|
|
127
148
|
return null;
|
|
128
149
|
}
|
|
129
|
-
const
|
|
130
|
-
if (!matchesClient(
|
|
150
|
+
const client = normalizeClient(input.client);
|
|
151
|
+
if (!matchesClient({
|
|
152
|
+
current: client,
|
|
153
|
+
stored: stored.client,
|
|
154
|
+
validation: config.validation,
|
|
155
|
+
})) {
|
|
131
156
|
await runRedis(() => redis.delete([tokenHash]));
|
|
132
157
|
try {
|
|
133
|
-
await
|
|
158
|
+
await runRecords(() => records.revoke({ revokedAt: current, sessionIds: [stored.id] }));
|
|
134
159
|
}
|
|
135
160
|
catch (error) {
|
|
136
|
-
throw createError(
|
|
161
|
+
throw createError({
|
|
162
|
+
cause: error,
|
|
163
|
+
code: "SESSION_CLIENT_MISMATCH",
|
|
164
|
+
message: "Session client identity changed and the session was revoked.",
|
|
165
|
+
});
|
|
137
166
|
}
|
|
138
|
-
throw createError(
|
|
167
|
+
throw createError({
|
|
168
|
+
code: "SESSION_CLIENT_MISMATCH",
|
|
169
|
+
message: "Session client identity changed and the session was revoked.",
|
|
170
|
+
});
|
|
139
171
|
}
|
|
140
|
-
const due =
|
|
141
|
-
|
|
172
|
+
const due = current.getTime() - Date.parse(stored.touchedAt) >=
|
|
173
|
+
config.renewInterval * 1000;
|
|
142
174
|
if (!due) {
|
|
143
175
|
return { renewed: false, session: toSession(stored) };
|
|
144
176
|
}
|
|
@@ -148,8 +180,16 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
|
|
|
148
180
|
expiresAt: expiresAt.toISOString(),
|
|
149
181
|
touchedAt: current.toISOString(),
|
|
150
182
|
};
|
|
151
|
-
await
|
|
152
|
-
|
|
183
|
+
await runRecords(() => records.updateExpiry({
|
|
184
|
+
expiresAt,
|
|
185
|
+
sessionId: stored.id,
|
|
186
|
+
updatedAt: current,
|
|
187
|
+
}));
|
|
188
|
+
const updated = await runRedis(() => redis.update({
|
|
189
|
+
tokenHash,
|
|
190
|
+
ttl: config.ttl,
|
|
191
|
+
value: encodeSession(renewed),
|
|
192
|
+
}));
|
|
153
193
|
return updated ? { renewed: true, session: toSession(renewed) } : null;
|
|
154
194
|
},
|
|
155
195
|
revokeToken: async (token) => {
|
|
@@ -166,31 +206,37 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
|
|
|
166
206
|
if (!stored) {
|
|
167
207
|
return [];
|
|
168
208
|
}
|
|
169
|
-
await
|
|
209
|
+
await runRecords(() => records.revoke({ revokedAt: now(), sessionIds: [stored.id] }));
|
|
170
210
|
return [stored.id];
|
|
171
211
|
},
|
|
172
|
-
revoke: async ({
|
|
173
|
-
const row = await
|
|
212
|
+
revoke: async ({ accountId, sessionId }) => {
|
|
213
|
+
const row = await runRecords(() => records.find({ accountId, sessionId }));
|
|
174
214
|
if (row?.revokedAt !== null) {
|
|
175
|
-
throw createError(
|
|
215
|
+
throw createError({
|
|
216
|
+
code: "SESSION_NOT_FOUND",
|
|
217
|
+
message: "Session not found.",
|
|
218
|
+
});
|
|
176
219
|
}
|
|
177
|
-
return revokeRows([row]
|
|
220
|
+
return revokeRows({ revokedAt: now(), rows: [row] });
|
|
178
221
|
},
|
|
179
|
-
|
|
180
|
-
return revokeRows(
|
|
222
|
+
revokeAccount: async (accountId) => {
|
|
223
|
+
return revokeRows({ revokedAt: now(), rows: await getActive(accountId) });
|
|
181
224
|
},
|
|
182
|
-
list: async (
|
|
183
|
-
return (await getActive(
|
|
225
|
+
list: async (accountId) => {
|
|
226
|
+
return (await getActive(accountId)).map(toActiveSession);
|
|
184
227
|
},
|
|
185
|
-
sync: async (
|
|
186
|
-
const rows = await getActive(
|
|
228
|
+
sync: async ({ accountId, data }) => {
|
|
229
|
+
const rows = await getActive(accountId);
|
|
187
230
|
if (rows.length === 0) {
|
|
188
231
|
return;
|
|
189
232
|
}
|
|
190
233
|
const hashes = rows.map((row) => row.tokenHash);
|
|
191
234
|
const values = await runRedis(() => redis.getMany(hashes));
|
|
192
235
|
if (values.length !== hashes.length) {
|
|
193
|
-
throw createError(
|
|
236
|
+
throw createError({
|
|
237
|
+
code: "REDIS_UNAVAILABLE",
|
|
238
|
+
message: "Authentication service returned invalid data.",
|
|
239
|
+
});
|
|
194
240
|
}
|
|
195
241
|
await Promise.all(values.map(async (raw, index) => {
|
|
196
242
|
if (!raw) {
|
|
@@ -198,13 +244,16 @@ export const createSessionService = ({ audit, config, now = () => new Date(), re
|
|
|
198
244
|
}
|
|
199
245
|
const stored = parseSession(raw);
|
|
200
246
|
const tokenHash = hashes[index];
|
|
201
|
-
if (!stored || !tokenHash || stored.
|
|
247
|
+
if (!stored || !tokenHash || stored.accountId !== accountId) {
|
|
202
248
|
if (tokenHash) {
|
|
203
249
|
await runRedis(() => redis.delete([tokenHash]));
|
|
204
250
|
}
|
|
205
251
|
return;
|
|
206
252
|
}
|
|
207
|
-
await runRedis(() => redis.keep(
|
|
253
|
+
await runRedis(() => redis.keep({
|
|
254
|
+
tokenHash,
|
|
255
|
+
value: encodeSession({ ...stored, data }),
|
|
256
|
+
}));
|
|
208
257
|
}));
|
|
209
258
|
},
|
|
210
259
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/session/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,
|
|
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,
|
|
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"}
|
package/dist/session/token.js
CHANGED
|
@@ -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 = () =>
|
|
4
|
-
|
|
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,
|
|
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"}
|
package/dist/session/types.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import type { SessionClient, SessionClientInput
|
|
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,79 @@ 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
34
|
export type ResolveSession = {
|
|
35
|
-
client:
|
|
36
|
-
renew?: boolean;
|
|
35
|
+
client: SessionClientInput;
|
|
37
36
|
token: string;
|
|
38
37
|
};
|
|
39
|
-
export type
|
|
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
|
|
50
|
-
export type ActiveSession = Omit<
|
|
51
|
-
export type
|
|
52
|
-
create(session:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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(
|
|
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(
|
|
65
|
-
|
|
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(
|
|
92
|
+
list(accountId: string): Promise<ActiveSession[]>;
|
|
70
93
|
resolve(input: ResolveSession): Promise<ResolvedSession<TData> | null>;
|
|
71
94
|
revoke(input: {
|
|
95
|
+
accountId: string;
|
|
72
96
|
sessionId: string;
|
|
73
|
-
subjectId: string;
|
|
74
97
|
}): Promise<string[]>;
|
|
75
|
-
|
|
98
|
+
revokeAccount(accountId: string): Promise<string[]>;
|
|
76
99
|
revokeToken(token: string): Promise<string[]>;
|
|
77
|
-
sync(
|
|
100
|
+
sync(input: {
|
|
101
|
+
accountId: string;
|
|
102
|
+
data: TData;
|
|
103
|
+
}): Promise<void>;
|
|
78
104
|
};
|
|
79
105
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"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"}
|