@gauts/auth 0.2.0 → 0.2.2
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 +559 -169
- package/dist/adapters/hono/index.d.ts +11 -3
- package/dist/adapters/hono/index.d.ts.map +1 -1
- package/dist/adapters/hono/index.js +28 -10
- package/dist/adapters/hono/index.js.map +1 -1
- package/dist/adapters/prisma/index.d.ts +31 -0
- package/dist/adapters/prisma/index.d.ts.map +1 -0
- package/dist/adapters/prisma/index.js +119 -0
- package/dist/adapters/prisma/index.js.map +1 -0
- package/dist/adapters/redis/index.d.ts +5 -5
- package/dist/adapters/redis/index.d.ts.map +1 -1
- package/dist/adapters/redis/index.js +19 -19
- package/dist/adapters/redis/index.js.map +1 -1
- package/dist/auth.d.ts +4 -4
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +5 -5
- package/dist/auth.js.map +1 -1
- package/dist/client/index.d.ts +3 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +17 -6
- package/dist/client/index.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -11
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/password/index.d.ts.map +1 -1
- package/dist/password/index.js +2 -4
- package/dist/password/index.js.map +1 -1
- package/dist/session/schema.d.ts.map +1 -1
- package/dist/session/schema.js +10 -10
- package/dist/session/schema.js.map +1 -1
- package/dist/session/service.d.ts +4 -4
- package/dist/session/service.d.ts.map +1 -1
- package/dist/session/service.js +130 -112
- package/dist/session/service.js.map +1 -1
- package/dist/session/token.js.map +1 -1
- package/dist/session/types.d.ts +45 -42
- package/dist/session/types.d.ts.map +1 -1
- package/package.json +92 -92
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Context, Env, MiddlewareHandler } from "hono";
|
|
2
|
-
import type
|
|
2
|
+
import { type Auth, type AuthDeps } from "../../auth.js";
|
|
3
3
|
import type { Session } from "../../session/types.js";
|
|
4
4
|
export type HonoAuthVariables<TData extends object> = {
|
|
5
|
+
account: TData;
|
|
5
6
|
session: Session<TData>;
|
|
6
7
|
};
|
|
7
8
|
export type HonoAuthEnv<TData extends object> = Env & {
|
|
@@ -14,13 +15,18 @@ export type HonoCookieConfig = {
|
|
|
14
15
|
sameSite?: "Strict" | "Lax" | "None";
|
|
15
16
|
secure?: boolean;
|
|
16
17
|
};
|
|
18
|
+
export type HonoGetIp = (c: Context) => Promise<string | null | undefined> | string | null | undefined;
|
|
17
19
|
export type HonoAdapterConfig<TData extends object> = {
|
|
18
20
|
auth: Auth<TData>;
|
|
19
21
|
cookie?: HonoCookieConfig;
|
|
20
|
-
getIp:
|
|
22
|
+
getIp: HonoGetIp;
|
|
23
|
+
};
|
|
24
|
+
export type HonoAuthConfig = AuthDeps & {
|
|
25
|
+
cookie?: HonoCookieConfig;
|
|
26
|
+
getIp: HonoGetIp;
|
|
21
27
|
};
|
|
22
28
|
type CreateSessionInput<TData extends object> = {
|
|
23
|
-
|
|
29
|
+
account_id: string;
|
|
24
30
|
context: Context;
|
|
25
31
|
data: TData;
|
|
26
32
|
};
|
|
@@ -32,6 +38,8 @@ export type HonoAdapter<TData extends object> = {
|
|
|
32
38
|
resolveSession(c: Context): Promise<Session<TData>>;
|
|
33
39
|
revokeSession(c: Context): Promise<string[]>;
|
|
34
40
|
};
|
|
41
|
+
export type HonoAuth<TData extends object> = Auth<TData> & HonoAdapter<TData>;
|
|
35
42
|
export declare const createHonoAdapter: <TData extends object>({ auth, cookie, getIp, }: HonoAdapterConfig<TData>) => HonoAdapter<TData>;
|
|
43
|
+
export declare const createHonoAuth: <TData extends object = Record<string, unknown>>({ cookie, db, getIp, password, redis, session, }: HonoAuthConfig) => HonoAuth<TData>;
|
|
36
44
|
export {};
|
|
37
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,MAAM,IAAI;IAClD,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,IAAI,GAAG,GAAG;IAClD,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACpB,CAAC,EAAE,OAAO,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,MAAM,IAAI;IAClD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IACpC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAAI;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,IAAI;IAC5C,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAyD9E,eAAO,MAAM,iBAAiB,GAAI,KAAK,SAAS,MAAM,EAAE,0BAIrD,iBAAiB,CAAC,KAAK,CAAC,KAAG,WAAW,CAAC,KAAK,CAiI9C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,kDAO5E,cAAc,KAAG,QAAQ,CAAC,KAAK,CAgBjC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { deleteCookie, getCookie, setCookie } from "hono/cookie";
|
|
2
|
+
import { createAuth } from "../../auth.js";
|
|
2
3
|
import { createError, isAuthError } from "../../errors.js";
|
|
3
4
|
const COOKIE_NAME_PATTERN = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
|
|
4
5
|
const resolveCookie = (config = {}) => {
|
|
@@ -18,8 +19,7 @@ const resolveCookie = (config = {}) => {
|
|
|
18
19
|
message: "Session cookie path must start with /.",
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
|
-
if (name.startsWith("__Host-") &&
|
|
22
|
-
(!secure || path !== "/" || config.domain)) {
|
|
22
|
+
if (name.startsWith("__Host-") && (!secure || path !== "/" || config.domain)) {
|
|
23
23
|
throw createError({
|
|
24
24
|
code: "AUTH_CONFIG_INVALID",
|
|
25
25
|
message: "__Host- cookies require secure=true, path=/, and no domain.",
|
|
@@ -57,32 +57,32 @@ export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
|
|
|
57
57
|
}
|
|
58
58
|
const resolved = resolveCookie(cookie);
|
|
59
59
|
const getSessionClient = async (c) => ({
|
|
60
|
+
agent: c.req.header("user-agent") ?? null,
|
|
60
61
|
ip: (await getIp(c)) ?? null,
|
|
61
62
|
platform: c.req.header("sec-ch-ua-platform") ?? null,
|
|
62
|
-
userAgent: c.req.header("user-agent") ?? null,
|
|
63
63
|
});
|
|
64
64
|
const getToken = (c) => {
|
|
65
65
|
const token = getCookie(c, resolved.name)?.trim();
|
|
66
66
|
return token?.length ? token : null;
|
|
67
67
|
};
|
|
68
|
-
const setToken = ({ context,
|
|
68
|
+
const setToken = ({ context, expires_at, token, }) => {
|
|
69
69
|
setCookie(context, resolved.name, token, {
|
|
70
70
|
...resolved.options,
|
|
71
|
-
expires:
|
|
71
|
+
expires: expires_at,
|
|
72
72
|
});
|
|
73
73
|
};
|
|
74
74
|
const clearSession = (c) => {
|
|
75
75
|
deleteCookie(c, resolved.name, resolved.options);
|
|
76
76
|
};
|
|
77
|
-
const createSession = async ({
|
|
77
|
+
const createSession = async ({ account_id, context, data, }) => {
|
|
78
78
|
const created = await auth.session.create({
|
|
79
|
-
|
|
79
|
+
account_id,
|
|
80
80
|
client: await getSessionClient(context),
|
|
81
81
|
data,
|
|
82
82
|
});
|
|
83
83
|
setToken({
|
|
84
84
|
context,
|
|
85
|
-
|
|
85
|
+
expires_at: created.session.expires_at,
|
|
86
86
|
token: created.token,
|
|
87
87
|
});
|
|
88
88
|
return created.session;
|
|
@@ -118,14 +118,16 @@ export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
|
|
|
118
118
|
if (resolvedSession.renewed) {
|
|
119
119
|
setToken({
|
|
120
120
|
context: c,
|
|
121
|
-
|
|
121
|
+
expires_at: resolvedSession.session.expires_at,
|
|
122
122
|
token,
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
return resolvedSession.session;
|
|
126
126
|
};
|
|
127
127
|
const requireSession = async (c, next) => {
|
|
128
|
-
|
|
128
|
+
const session = await resolveSession(c);
|
|
129
|
+
c.set("session", session);
|
|
130
|
+
c.set("account", session.data);
|
|
129
131
|
await next();
|
|
130
132
|
};
|
|
131
133
|
const revokeSession = async (c) => {
|
|
@@ -143,4 +145,20 @@ export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
|
|
|
143
145
|
revokeSession,
|
|
144
146
|
};
|
|
145
147
|
};
|
|
148
|
+
export const createHonoAuth = ({ cookie, db, getIp, password, redis, session, }) => {
|
|
149
|
+
const auth = createAuth({
|
|
150
|
+
db,
|
|
151
|
+
redis,
|
|
152
|
+
...(password === undefined ? {} : { password }),
|
|
153
|
+
...(session === undefined ? {} : { session }),
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
...auth,
|
|
157
|
+
...createHonoAdapter({
|
|
158
|
+
auth,
|
|
159
|
+
getIp,
|
|
160
|
+
...(cookie === undefined ? {} : { cookie }),
|
|
161
|
+
}),
|
|
162
|
+
};
|
|
163
|
+
};
|
|
146
164
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DbAdapter, SessionRecord } from "../../session/types.js";
|
|
2
|
+
declare const DEFAULT_TABLE = "auth_sessions";
|
|
3
|
+
type DelegateMeta<T> = T[Extract<keyof T, symbol>];
|
|
4
|
+
type DelegateRow<T> = DelegateMeta<T> extends {
|
|
5
|
+
types: {
|
|
6
|
+
payload: {
|
|
7
|
+
scalars: infer Result;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
} ? Result : never;
|
|
11
|
+
type IsSessionTable<T> = [DelegateRow<T>] extends [never] ? false : DelegateRow<T> extends SessionRecord ? true : false;
|
|
12
|
+
export type PrismaSessionTable<Client> = {
|
|
13
|
+
[Key in keyof Client]: IsSessionTable<Client[Key]> extends true ? Key : never;
|
|
14
|
+
}[keyof Client] & string;
|
|
15
|
+
export type PrismaAdapterConfig<Client> = {
|
|
16
|
+
table?: PrismaSessionTable<Client>;
|
|
17
|
+
};
|
|
18
|
+
type DefaultPrismaAdapterInput<Client extends object> = {
|
|
19
|
+
client: Client;
|
|
20
|
+
config?: PrismaAdapterConfig<Client>;
|
|
21
|
+
};
|
|
22
|
+
type CustomPrismaAdapterInput<Client extends object> = {
|
|
23
|
+
client: Client;
|
|
24
|
+
config: PrismaAdapterConfig<Client> & {
|
|
25
|
+
table: PrismaSessionTable<Client>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type PrismaAdapterInput<Client extends object> = typeof DEFAULT_TABLE extends PrismaSessionTable<Client> ? DefaultPrismaAdapterInput<Client> : CustomPrismaAdapterInput<Client>;
|
|
29
|
+
export declare const createDbAdapter: <Client extends object>(input: PrismaAdapterInput<Client>) => DbAdapter;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvE,QAAA,MAAM,aAAa,kBAAkB,CAAC;AAEtC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnD,KAAK,WAAW,CAAC,CAAC,IACd,YAAY,CAAC,CAAC,CAAC,SAAS;IACpB,KAAK,EAAE;QACH,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,MAAM,CAAA;SAAE,CAAC;KACtC,CAAC;CACL,GACK,MAAM,GACN,KAAK,CAAC;AAEhB,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACnD,KAAK,GACL,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,GAClC,IAAI,GACJ,KAAK,CAAC;AAEd,MAAM,MAAM,kBAAkB,CAAC,MAAM,IAAI;KACpC,GAAG,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,GAAG,GAAG,KAAK;CAChF,CAAC,MAAM,MAAM,CAAC,GACX,MAAM,CAAC;AAEX,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI;IACtC,KAAK,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,yBAAyB,CAAC,MAAM,SAAS,MAAM,IAAI;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,KAAK,wBAAwB,CAAC,MAAM,SAAS,MAAM,IAAI;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG;QAClC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;KACrC,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,MAAM,IAChD,OAAO,aAAa,SAAS,kBAAkB,CAAC,MAAM,CAAC,GACjD,yBAAyB,CAAC,MAAM,CAAC,GACjC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AA8E3C,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,MAAM,EACjD,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAClC,SAsEF,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { createError } from "../../errors.js";
|
|
2
|
+
const DEFAULT_TABLE = "auth_sessions";
|
|
3
|
+
const select = {
|
|
4
|
+
account_id: true,
|
|
5
|
+
agent: true,
|
|
6
|
+
created_at: true,
|
|
7
|
+
expires_at: true,
|
|
8
|
+
id: true,
|
|
9
|
+
ip: true,
|
|
10
|
+
platform: true,
|
|
11
|
+
revoked_at: true,
|
|
12
|
+
token_hash: true,
|
|
13
|
+
updated_at: true,
|
|
14
|
+
};
|
|
15
|
+
const isRecord = (value) => {
|
|
16
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
17
|
+
};
|
|
18
|
+
const isNullableString = (value) => {
|
|
19
|
+
return typeof value === "string" || value === null;
|
|
20
|
+
};
|
|
21
|
+
const isNullableDate = (value) => {
|
|
22
|
+
return value instanceof Date || value === null;
|
|
23
|
+
};
|
|
24
|
+
const isDelegate = (value) => {
|
|
25
|
+
return (isRecord(value) &&
|
|
26
|
+
typeof value.create === "function" &&
|
|
27
|
+
typeof value.findFirst === "function" &&
|
|
28
|
+
typeof value.findMany === "function" &&
|
|
29
|
+
typeof value.update === "function" &&
|
|
30
|
+
typeof value.updateMany === "function");
|
|
31
|
+
};
|
|
32
|
+
const isSessionRecord = (value) => {
|
|
33
|
+
return (isRecord(value) &&
|
|
34
|
+
typeof value.account_id === "string" &&
|
|
35
|
+
isNullableString(value.agent) &&
|
|
36
|
+
value.created_at instanceof Date &&
|
|
37
|
+
value.expires_at instanceof Date &&
|
|
38
|
+
typeof value.id === "string" &&
|
|
39
|
+
isNullableString(value.ip) &&
|
|
40
|
+
isNullableString(value.platform) &&
|
|
41
|
+
isNullableDate(value.revoked_at) &&
|
|
42
|
+
typeof value.token_hash === "string" &&
|
|
43
|
+
isNullableDate(value.updated_at));
|
|
44
|
+
};
|
|
45
|
+
const requireRow = (value) => {
|
|
46
|
+
if (!isSessionRecord(value)) {
|
|
47
|
+
throw new Error("Prisma session table returned invalid data.");
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
};
|
|
51
|
+
const requireRows = (value) => {
|
|
52
|
+
if (!Array.isArray(value)) {
|
|
53
|
+
throw new Error("Prisma session table returned invalid data.");
|
|
54
|
+
}
|
|
55
|
+
return value.map(requireRow);
|
|
56
|
+
};
|
|
57
|
+
export const createDbAdapter = (input) => {
|
|
58
|
+
const config = "config" in input ? input.config : undefined;
|
|
59
|
+
const table_name = config?.table ?? DEFAULT_TABLE;
|
|
60
|
+
const table = isRecord(input.client) ? input.client[table_name] : undefined;
|
|
61
|
+
if (!isDelegate(table)) {
|
|
62
|
+
throw createError({
|
|
63
|
+
code: "AUTH_CONFIG_INVALID",
|
|
64
|
+
message: `Prisma session table ${table_name} is invalid.`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
create: async (session) => {
|
|
69
|
+
await table.create({ data: session });
|
|
70
|
+
},
|
|
71
|
+
find: async ({ account_id, session_id }) => {
|
|
72
|
+
const row = await table.findFirst({
|
|
73
|
+
select,
|
|
74
|
+
where: {
|
|
75
|
+
account_id,
|
|
76
|
+
id: session_id,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
return row === null ? null : requireRow(row);
|
|
80
|
+
},
|
|
81
|
+
findActive: async ({ account_id, now }) => {
|
|
82
|
+
const rows = await table.findMany({
|
|
83
|
+
orderBy: { created_at: "desc" },
|
|
84
|
+
select,
|
|
85
|
+
where: {
|
|
86
|
+
account_id,
|
|
87
|
+
expires_at: { gt: now },
|
|
88
|
+
revoked_at: null,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
return requireRows(rows);
|
|
92
|
+
},
|
|
93
|
+
revoke: async ({ revoked_at, session_ids }) => {
|
|
94
|
+
if (session_ids.length === 0) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
await table.updateMany({
|
|
98
|
+
data: {
|
|
99
|
+
revoked_at,
|
|
100
|
+
updated_at: revoked_at,
|
|
101
|
+
},
|
|
102
|
+
where: {
|
|
103
|
+
id: { in: session_ids },
|
|
104
|
+
revoked_at: null,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
updateExpiry: async ({ expires_at, session_id, updated_at }) => {
|
|
109
|
+
await table.update({
|
|
110
|
+
data: {
|
|
111
|
+
expires_at,
|
|
112
|
+
updated_at,
|
|
113
|
+
},
|
|
114
|
+
where: { id: session_id },
|
|
115
|
+
});
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/prisma/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RedisClientType } from "redis";
|
|
2
|
-
import type {
|
|
3
|
-
export type
|
|
2
|
+
import type { RedisAdapter } from "../../session/types.js";
|
|
3
|
+
export type RedisAdapterConfig = {
|
|
4
4
|
prefix?: string;
|
|
5
5
|
};
|
|
6
|
-
export type
|
|
6
|
+
export type RedisAdapterInput = {
|
|
7
7
|
client: RedisClientType;
|
|
8
|
-
config?:
|
|
8
|
+
config?: RedisAdapterConfig;
|
|
9
9
|
};
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const createRedisAdapter: ({ client, config }: RedisAdapterInput) => RedisAdapter;
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/redis/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/redis/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAgBF,eAAO,MAAM,kBAAkB,GAAI,oBAAyB,iBAAiB,KAAG,YA4D/E,CAAC"}
|
|
@@ -10,12 +10,12 @@ const getPrefix = (input) => {
|
|
|
10
10
|
}
|
|
11
11
|
return prefix.replace(/:+$/g, "");
|
|
12
12
|
};
|
|
13
|
-
export const
|
|
13
|
+
export const createRedisAdapter = ({ client, config = {} }) => {
|
|
14
14
|
const prefix = getPrefix(config.prefix);
|
|
15
|
-
const getKey = (
|
|
15
|
+
const getKey = (token_hash) => `${prefix}:session:${token_hash}`;
|
|
16
16
|
return {
|
|
17
|
-
create: async ({
|
|
18
|
-
const result = await client.set(getKey(
|
|
17
|
+
create: async ({ token_hash, ttl, value }) => {
|
|
18
|
+
const result = await client.set(getKey(token_hash), value, {
|
|
19
19
|
EX: ttl,
|
|
20
20
|
NX: true,
|
|
21
21
|
});
|
|
@@ -23,38 +23,38 @@ export const createRedisStore = ({ client, config = {}, }) => {
|
|
|
23
23
|
throw new Error("Redis session key already exists.");
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
|
-
get: async (
|
|
27
|
-
return client.get(getKey(
|
|
26
|
+
get: async (token_hash) => {
|
|
27
|
+
return client.get(getKey(token_hash));
|
|
28
28
|
},
|
|
29
|
-
getMany: async (
|
|
30
|
-
return
|
|
29
|
+
getMany: async (token_hashes) => {
|
|
30
|
+
return token_hashes.length === 0
|
|
31
31
|
? []
|
|
32
|
-
: client.mGet(
|
|
32
|
+
: client.mGet(token_hashes.map((token_hash) => getKey(token_hash)));
|
|
33
33
|
},
|
|
34
|
-
update: async ({
|
|
35
|
-
const result = await client.set(getKey(
|
|
34
|
+
update: async ({ token_hash, ttl, value }) => {
|
|
35
|
+
const result = await client.set(getKey(token_hash), value, {
|
|
36
36
|
EX: ttl,
|
|
37
37
|
XX: true,
|
|
38
38
|
});
|
|
39
39
|
return result === "OK";
|
|
40
40
|
},
|
|
41
|
-
keep: async ({
|
|
42
|
-
const result = await client.set(getKey(
|
|
41
|
+
keep: async ({ token_hash, value }) => {
|
|
42
|
+
const result = await client.set(getKey(token_hash), value, {
|
|
43
43
|
KEEPTTL: true,
|
|
44
44
|
XX: true,
|
|
45
45
|
});
|
|
46
46
|
return result === "OK";
|
|
47
47
|
},
|
|
48
|
-
delete: async (
|
|
49
|
-
if (
|
|
50
|
-
await client.del(
|
|
48
|
+
delete: async (token_hashes) => {
|
|
49
|
+
if (token_hashes.length > 0) {
|
|
50
|
+
await client.del(token_hashes.map((token_hash) => getKey(token_hash)));
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
|
-
exists: async (
|
|
54
|
-
if (
|
|
53
|
+
exists: async (token_hashes) => {
|
|
54
|
+
if (token_hashes.length === 0) {
|
|
55
55
|
return [];
|
|
56
56
|
}
|
|
57
|
-
const values = await client.mGet(
|
|
57
|
+
const values = await client.mGet(token_hashes.map((token_hash) => getKey(token_hash)));
|
|
58
58
|
return values.map((value) => value !== null);
|
|
59
59
|
},
|
|
60
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/redis/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAY9C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/redis/index.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { PasswordConfig, SessionConfig } from "./config.js";
|
|
2
2
|
import { type PasswordService } from "./password/index.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { DbAdapter, RedisAdapter, SessionService } from "./session/types.js";
|
|
4
4
|
export type AuthConfig = {
|
|
5
5
|
password?: PasswordConfig;
|
|
6
6
|
session?: SessionConfig;
|
|
7
7
|
};
|
|
8
8
|
export type AuthDeps = AuthConfig & {
|
|
9
|
-
|
|
10
|
-
redis:
|
|
9
|
+
db: DbAdapter;
|
|
10
|
+
redis: RedisAdapter;
|
|
11
11
|
};
|
|
12
12
|
export type Auth<TData extends object> = {
|
|
13
13
|
password: PasswordService;
|
|
14
14
|
session: SessionService<TData>;
|
|
15
15
|
};
|
|
16
|
-
export declare const createAuth: <TData extends object = Record<string, unknown>>({
|
|
16
|
+
export declare const createAuth: <TData extends object = Record<string, unknown>>({ db, password, redis, session, }: AuthDeps) => Auth<TData>;
|
|
17
17
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElF,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAChC,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,MAAM,IAAI;IACrC,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;CAClC,CAAC;AA0BF,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,mCAKxE,QAAQ,KAAG,IAAI,CAAC,KAAK,CAoBvB,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -2,7 +2,7 @@ import { resolvePasswordConfig, resolveSessionConfig } from "./config.js";
|
|
|
2
2
|
import { createError } from "./errors.js";
|
|
3
3
|
import { createPassword } from "./password/index.js";
|
|
4
4
|
import { createSessionService } from "./session/service.js";
|
|
5
|
-
const requireMethods = ({ methods, name, value
|
|
5
|
+
const requireMethods = ({ methods, name, value }) => {
|
|
6
6
|
if (typeof value !== "object" || value === null) {
|
|
7
7
|
throw createError({
|
|
8
8
|
code: "AUTH_CONFIG_INVALID",
|
|
@@ -17,7 +17,7 @@ const requireMethods = ({ methods, name, value, }) => {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
export const createAuth = ({
|
|
20
|
+
export const createAuth = ({ db, password, redis, session, }) => {
|
|
21
21
|
requireMethods({
|
|
22
22
|
methods: ["create", "delete", "exists", "get", "getMany", "keep", "update"],
|
|
23
23
|
name: "Redis",
|
|
@@ -25,14 +25,14 @@ export const createAuth = ({ password, records, redis, session, }) => {
|
|
|
25
25
|
});
|
|
26
26
|
requireMethods({
|
|
27
27
|
methods: ["create", "find", "findActive", "revoke", "updateExpiry"],
|
|
28
|
-
name: "
|
|
29
|
-
value:
|
|
28
|
+
name: "DB",
|
|
29
|
+
value: db,
|
|
30
30
|
});
|
|
31
31
|
return {
|
|
32
32
|
password: createPassword(resolvePasswordConfig(password)),
|
|
33
33
|
session: createSessionService({
|
|
34
34
|
config: resolveSessionConfig(session),
|
|
35
|
-
|
|
35
|
+
db,
|
|
36
36
|
redis,
|
|
37
37
|
}),
|
|
38
38
|
};
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAwB5D,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAuB,EAAQ,EAAE;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,WAAW,CAAC;YACd,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,GAAG,IAAI,sBAAsB;SACzC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,OAAO,GAAG,KAAgC,CAAC;IAEjD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QAClE,MAAM,WAAW,CAAC;YACd,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,GAAG,IAAI,sBAAsB;SACzC,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAiD,EACvE,EAAE,EACF,QAAQ,EACR,KAAK,EACL,OAAO,GACA,EAAe,EAAE;IACxB,cAAc,CAAC;QACX,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3E,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,KAAK;KACf,CAAC,CAAC;IACH,cAAc,CAAC;QACX,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC;QACnE,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,OAAO;QACH,QAAQ,EAAE,cAAc,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,EAAE,oBAAoB,CAAC;YAC1B,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC;YACrC,EAAE;YACF,KAAK;SACR,CAAC;KACL,CAAC;AACN,CAAC,CAAC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { SessionValidation } from "../config.js";
|
|
2
2
|
export type SessionClientInput = {
|
|
3
|
+
agent?: string | null;
|
|
3
4
|
ip?: string | null;
|
|
4
5
|
platform?: string | null;
|
|
5
|
-
userAgent?: string | null;
|
|
6
6
|
};
|
|
7
7
|
export type SessionClient = {
|
|
8
|
+
agent: string | null;
|
|
8
9
|
ip: string | null;
|
|
9
10
|
platform: string | null;
|
|
10
|
-
userAgent: string | null;
|
|
11
11
|
};
|
|
12
12
|
type MatchesClientProps = {
|
|
13
13
|
current: SessionClient;
|
|
@@ -16,6 +16,6 @@ type MatchesClientProps = {
|
|
|
16
16
|
};
|
|
17
17
|
export declare const normalizeIp: (input?: string | null) => string | null;
|
|
18
18
|
export declare const normalizeClient: (input: SessionClientInput) => SessionClient;
|
|
19
|
-
export declare const matchesClient: ({ current, stored, validation
|
|
19
|
+
export declare const matchesClient: ({ current, stored, validation }: MatchesClientProps) => boolean;
|
|
20
20
|
export {};
|
|
21
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAgC5D,CAAC;AASF,eAAO,MAAM,eAAe,GAAI,OAAO,kBAAkB,KAAG,aAI1D,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,iCAAiC,kBAAkB,KAAG,OAEnF,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isIP, SocketAddress } from "node:net";
|
|
2
2
|
export const normalizeIp = (input) => {
|
|
3
3
|
let value = input?.trim();
|
|
4
4
|
if (!value) {
|
|
@@ -7,23 +7,34 @@ export const normalizeIp = (input) => {
|
|
|
7
7
|
if (value.startsWith("[") && value.endsWith("]")) {
|
|
8
8
|
value = value.slice(1, -1);
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
const version = isIP(value);
|
|
11
|
+
if (version === 4) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
if (version !== 6 || value.includes("%")) {
|
|
11
15
|
return null;
|
|
12
16
|
}
|
|
13
|
-
const normalized =
|
|
17
|
+
const normalized = new SocketAddress({
|
|
18
|
+
address: value,
|
|
19
|
+
family: "ipv6",
|
|
20
|
+
port: 0,
|
|
21
|
+
}).address;
|
|
22
|
+
if (normalized.startsWith("::ffff:")) {
|
|
23
|
+
return normalized.slice(7);
|
|
24
|
+
}
|
|
14
25
|
return normalized === "::1" ? "127.0.0.1" : normalized;
|
|
15
26
|
};
|
|
16
27
|
const normalizePlatform = (input) => {
|
|
17
28
|
const value = input?.replace(/^"+|"+$/g, "").trim();
|
|
18
29
|
return value ? value.slice(0, 255) : null;
|
|
19
30
|
};
|
|
20
|
-
const
|
|
31
|
+
const normalizeAgent = (input) => (input?.length ? input : null);
|
|
21
32
|
export const normalizeClient = (input) => ({
|
|
33
|
+
agent: normalizeAgent(input.agent),
|
|
22
34
|
ip: normalizeIp(input.ip),
|
|
23
35
|
platform: normalizePlatform(input.platform),
|
|
24
|
-
userAgent: normalizeUserAgent(input.userAgent),
|
|
25
36
|
});
|
|
26
|
-
export const matchesClient = ({ current, stored, validation
|
|
37
|
+
export const matchesClient = ({ current, stored, validation }) => {
|
|
27
38
|
return validation.every((field) => stored[field] === current[field]);
|
|
28
39
|
};
|
|
29
40
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAqB/C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAqB,EAAiB,EAAE;IAChE,IAAI,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAE5B,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,CAAC;KACV,CAAC,CAAC,OAAO,CAAC;IAEX,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAqB,EAAiB,EAAE;IAC/D,MAAM,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAiB,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAyB,EAAiB,EAAE,CAAC,CAAC;IAC1E,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;IAClC,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAsB,EAAW,EAAE;IAC1F,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export type BcryptConfig = {
|
|
|
13
13
|
verifyMaxBytes?: number;
|
|
14
14
|
};
|
|
15
15
|
export type PasswordConfig = Argon2idConfig | BcryptConfig;
|
|
16
|
-
export type SessionValidation = "
|
|
16
|
+
export type SessionValidation = "agent" | "ip" | "platform";
|
|
17
17
|
export type SessionConfig = {
|
|
18
18
|
max?: number;
|
|
19
19
|
renewInterval?: number;
|