@gauts/auth 0.8.1 → 0.9.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 +292 -66
- package/dist/adapters/drizzle/config.d.ts +11 -0
- package/dist/adapters/drizzle/config.d.ts.map +1 -0
- package/dist/adapters/drizzle/config.js +147 -0
- package/dist/adapters/drizzle/config.js.map +1 -0
- package/dist/adapters/drizzle/index.d.ts +4 -0
- package/dist/adapters/drizzle/index.d.ts.map +1 -0
- package/dist/adapters/drizzle/index.js +156 -0
- package/dist/adapters/drizzle/index.js.map +1 -0
- package/dist/adapters/drizzle/model.d.ts +21 -0
- package/dist/adapters/drizzle/model.d.ts.map +1 -0
- package/dist/adapters/drizzle/model.js +61 -0
- package/dist/adapters/drizzle/model.js.map +1 -0
- package/dist/adapters/drizzle/schema.d.ts +311 -0
- package/dist/adapters/drizzle/schema.d.ts.map +1 -0
- package/dist/adapters/drizzle/schema.js +37 -0
- package/dist/adapters/drizzle/schema.js.map +1 -0
- package/dist/adapters/drizzle/types.d.ts +109 -0
- package/dist/adapters/drizzle/types.d.ts.map +1 -0
- package/dist/adapters/drizzle/types.js +2 -0
- package/dist/adapters/drizzle/types.js.map +1 -0
- package/dist/adapters/express/index.d.ts +83 -0
- package/dist/adapters/express/index.d.ts.map +1 -0
- package/dist/adapters/express/index.js +72 -0
- package/dist/adapters/express/index.js.map +1 -0
- package/dist/adapters/express/social.d.ts +29 -0
- package/dist/adapters/express/social.d.ts.map +1 -0
- package/dist/adapters/express/social.js +44 -0
- package/dist/adapters/express/social.js.map +1 -0
- package/dist/adapters/fastify/index.d.ts +85 -0
- package/dist/adapters/fastify/index.d.ts.map +1 -0
- package/dist/adapters/fastify/index.js +100 -0
- package/dist/adapters/fastify/index.js.map +1 -0
- package/dist/adapters/fastify/social.d.ts +27 -0
- package/dist/adapters/fastify/social.d.ts.map +1 -0
- package/dist/adapters/fastify/social.js +48 -0
- package/dist/adapters/fastify/social.js.map +1 -0
- package/dist/adapters/hono/index.d.ts +4 -11
- package/dist/adapters/hono/index.d.ts.map +1 -1
- package/dist/adapters/hono/index.js +31 -223
- package/dist/adapters/hono/index.js.map +1 -1
- package/dist/adapters/hono/social.d.ts +4 -10
- package/dist/adapters/hono/social.d.ts.map +1 -1
- package/dist/adapters/hono/social.js +25 -221
- package/dist/adapters/hono/social.js.map +1 -1
- package/dist/adapters/model.d.ts +33 -0
- package/dist/adapters/model.d.ts.map +1 -0
- package/dist/adapters/model.js +87 -0
- package/dist/adapters/model.js.map +1 -0
- package/dist/adapters/prisma/config.d.ts.map +1 -1
- package/dist/adapters/prisma/config.js +1 -4
- package/dist/adapters/prisma/config.js.map +1 -1
- package/dist/adapters/prisma/model.d.ts +7 -8
- package/dist/adapters/prisma/model.d.ts.map +1 -1
- package/dist/adapters/prisma/model.js +11 -79
- package/dist/adapters/prisma/model.js.map +1 -1
- package/dist/adapters/utils/cookie.d.ts +17 -0
- package/dist/adapters/utils/cookie.d.ts.map +1 -0
- package/dist/adapters/utils/cookie.js +59 -0
- package/dist/adapters/utils/cookie.js.map +1 -0
- package/dist/adapters/utils/session.d.ts +4 -0
- package/dist/adapters/utils/session.d.ts.map +1 -0
- package/dist/adapters/utils/session.js +216 -0
- package/dist/adapters/utils/session.js.map +1 -0
- package/dist/adapters/utils/social.d.ts +51 -0
- package/dist/adapters/utils/social.d.ts.map +1 -0
- package/dist/adapters/utils/social.js +278 -0
- package/dist/adapters/utils/social.js.map +1 -0
- package/dist/adapters/utils/types.d.ts +67 -0
- package/dist/adapters/utils/types.d.ts.map +1 -0
- package/dist/adapters/utils/types.js +2 -0
- package/dist/adapters/utils/types.js.map +1 -0
- package/package.json +40 -3
- package/src/adapters/drizzle/schema.ts +47 -0
- package/src/adapters/prisma/schema.prisma +38 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { getTableColumns, getTableName, isTable } from "drizzle-orm";
|
|
2
|
+
import { createError } from "../../errors.js";
|
|
3
|
+
import { isRecord } from "../../session/guards.js";
|
|
4
|
+
import { isPrivateField } from "../model.js";
|
|
5
|
+
export const DRIZZLE_FIELDS = {
|
|
6
|
+
accounts: ["id", "email", "user_id"],
|
|
7
|
+
sessions: [
|
|
8
|
+
"account_id",
|
|
9
|
+
"agent",
|
|
10
|
+
"country",
|
|
11
|
+
"created_at",
|
|
12
|
+
"expires_at",
|
|
13
|
+
"id",
|
|
14
|
+
"ip",
|
|
15
|
+
"platform",
|
|
16
|
+
"revoked_at",
|
|
17
|
+
"token_hash",
|
|
18
|
+
"updated_at",
|
|
19
|
+
],
|
|
20
|
+
socials: ["account_id", "created_at", "id", "provider", "provider_id"],
|
|
21
|
+
users: ["id", "name"],
|
|
22
|
+
};
|
|
23
|
+
const DRIZZLE_SELECT = {
|
|
24
|
+
accounts: ["id", "email"],
|
|
25
|
+
users: ["id", "name"],
|
|
26
|
+
};
|
|
27
|
+
const isAuthScalar = (value) => {
|
|
28
|
+
return (value === null ||
|
|
29
|
+
typeof value === "boolean" ||
|
|
30
|
+
typeof value === "string" ||
|
|
31
|
+
(typeof value === "number" && Number.isFinite(value)));
|
|
32
|
+
};
|
|
33
|
+
const isAccessValue = (value) => {
|
|
34
|
+
return Array.isArray(value)
|
|
35
|
+
? value.length > 0 && value.every(isAuthScalar)
|
|
36
|
+
: isAuthScalar(value);
|
|
37
|
+
};
|
|
38
|
+
const requireTable = ({ fields, input, path }) => {
|
|
39
|
+
if (!isTable(input)) {
|
|
40
|
+
throw createError({
|
|
41
|
+
code: "AUTH_CONFIG_INVALID",
|
|
42
|
+
message: `${path}.table must be a Drizzle MySQL table.`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const columns = getTableColumns(input);
|
|
46
|
+
const missing = fields.filter((field) => !(field in columns));
|
|
47
|
+
if (missing.length > 0) {
|
|
48
|
+
throw createError({
|
|
49
|
+
code: "AUTH_CONFIG_INVALID",
|
|
50
|
+
message: `${path}.table is missing required columns: ${missing.join(", ")}.`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return input;
|
|
54
|
+
};
|
|
55
|
+
const resolveSelect = ({ columns, defaults, input, path, }) => {
|
|
56
|
+
if (input === undefined) {
|
|
57
|
+
return defaults;
|
|
58
|
+
}
|
|
59
|
+
if (!Array.isArray(input) ||
|
|
60
|
+
input.some((field) => typeof field !== "string" || !field.trim()) ||
|
|
61
|
+
new Set(input).size !== input.length ||
|
|
62
|
+
input.some((field) => typeof field === "string" && isPrivateField(field)) ||
|
|
63
|
+
input.some((field) => typeof field === "string" && !(field in columns))) {
|
|
64
|
+
throw createError({
|
|
65
|
+
code: "AUTH_CONFIG_INVALID",
|
|
66
|
+
message: `${path}.select must contain unique public scalar column names.`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return [...new Set([...defaults, ...input])];
|
|
70
|
+
};
|
|
71
|
+
const resolveAccess = ({ columns, input, path, }) => {
|
|
72
|
+
if (input === undefined) {
|
|
73
|
+
return {};
|
|
74
|
+
}
|
|
75
|
+
if (!isRecord(input) ||
|
|
76
|
+
Object.keys(input).some(isPrivateField) ||
|
|
77
|
+
Object.keys(input).some((field) => !(field in columns)) ||
|
|
78
|
+
Object.values(input).some((value) => !isAccessValue(value))) {
|
|
79
|
+
throw createError({
|
|
80
|
+
code: "AUTH_CONFIG_INVALID",
|
|
81
|
+
message: `${path}.access contains an invalid condition.`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return input;
|
|
85
|
+
};
|
|
86
|
+
const resolveDataModel = ({ defaults, fields, input, path, }) => {
|
|
87
|
+
if (!isRecord(input)) {
|
|
88
|
+
throw createError({
|
|
89
|
+
code: "AUTH_CONFIG_INVALID",
|
|
90
|
+
message: `${path} model configuration is invalid.`,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const table = requireTable({ fields, input: input.table, path });
|
|
94
|
+
const columns = getTableColumns(table);
|
|
95
|
+
return {
|
|
96
|
+
access: resolveAccess({ columns, input: input.access, path }),
|
|
97
|
+
select: resolveSelect({ columns, defaults, input: input.select, path }),
|
|
98
|
+
table,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
const resolveTableModel = ({ fields, input, path }) => {
|
|
102
|
+
if (!isRecord(input)) {
|
|
103
|
+
throw createError({
|
|
104
|
+
code: "AUTH_CONFIG_INVALID",
|
|
105
|
+
message: `${path} model configuration is invalid.`,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return requireTable({ fields, input: input.table, path });
|
|
109
|
+
};
|
|
110
|
+
export const resolveDrizzleModels = (input) => {
|
|
111
|
+
if (!isRecord(input)) {
|
|
112
|
+
throw createError({
|
|
113
|
+
code: "AUTH_CONFIG_INVALID",
|
|
114
|
+
message: "Drizzle models configuration is invalid.",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
accounts: resolveDataModel({
|
|
119
|
+
defaults: DRIZZLE_SELECT.accounts,
|
|
120
|
+
fields: DRIZZLE_FIELDS.accounts,
|
|
121
|
+
input: input.accounts,
|
|
122
|
+
path: "models.accounts",
|
|
123
|
+
}),
|
|
124
|
+
sessions: resolveTableModel({
|
|
125
|
+
fields: DRIZZLE_FIELDS.sessions,
|
|
126
|
+
input: input.sessions,
|
|
127
|
+
path: "models.sessions",
|
|
128
|
+
}),
|
|
129
|
+
socials: input.socials === undefined
|
|
130
|
+
? null
|
|
131
|
+
: resolveTableModel({
|
|
132
|
+
fields: DRIZZLE_FIELDS.socials,
|
|
133
|
+
input: input.socials,
|
|
134
|
+
path: "models.socials",
|
|
135
|
+
}),
|
|
136
|
+
users: resolveDataModel({
|
|
137
|
+
defaults: DRIZZLE_SELECT.users,
|
|
138
|
+
fields: DRIZZLE_FIELDS.users,
|
|
139
|
+
input: input.users,
|
|
140
|
+
path: "models.users",
|
|
141
|
+
}),
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
export const getDrizzleSource = (table) => {
|
|
145
|
+
return getTableName(table);
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/adapters/drizzle/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CreateDrizzleAdapter } from "./types.js";
|
|
2
|
+
export type { DrizzleAccount, DrizzleAdapterInput, DrizzleDataModelConfig, DrizzleModelsConfig, DrizzleTableModelConfig, DrizzleUser, } from "./types.js";
|
|
3
|
+
export declare const createDrizzleAdapter: CreateDrizzleAdapter;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/drizzle/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACR,oBAAoB,EAMvB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACR,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,GACd,MAAM,YAAY,CAAC;AAkCpB,eAAO,MAAM,oBAAoB,EAAE,oBAoLlC,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { and, desc, eq, getTableColumns, gt, inArray, isNull } from "drizzle-orm";
|
|
3
|
+
import { createError } from "../../errors.js";
|
|
4
|
+
import { isRecord } from "../../session/guards.js";
|
|
5
|
+
import { DRIZZLE_FIELDS, resolveDrizzleModels } from "./config.js";
|
|
6
|
+
import { createModelSelect, createSessionSelect, readAccount, requireAuthRow, requireRow, requireRows, } from "./model.js";
|
|
7
|
+
const requireClient = (value) => {
|
|
8
|
+
if (!isRecord(value) ||
|
|
9
|
+
typeof value.insert !== "function" ||
|
|
10
|
+
typeof value.select !== "function" ||
|
|
11
|
+
typeof value.transaction !== "function" ||
|
|
12
|
+
typeof value.update !== "function") {
|
|
13
|
+
throw createError({
|
|
14
|
+
code: "AUTH_CONFIG_INVALID",
|
|
15
|
+
message: "Drizzle MySQL client is invalid.",
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
};
|
|
20
|
+
const getColumns = ({ fields, table, }) => {
|
|
21
|
+
const columns = getTableColumns(table);
|
|
22
|
+
return Object.fromEntries(fields.map((field) => [field, columns[field]]));
|
|
23
|
+
};
|
|
24
|
+
export const createDrizzleAdapter = (input) => {
|
|
25
|
+
const client = requireClient(input.client);
|
|
26
|
+
const models = resolveDrizzleModels(input.models);
|
|
27
|
+
const accountColumns = getColumns({
|
|
28
|
+
fields: DRIZZLE_FIELDS.accounts,
|
|
29
|
+
table: models.accounts.table,
|
|
30
|
+
});
|
|
31
|
+
const sessionColumns = getColumns({
|
|
32
|
+
fields: DRIZZLE_FIELDS.sessions,
|
|
33
|
+
table: models.sessions,
|
|
34
|
+
});
|
|
35
|
+
const userColumns = getColumns({
|
|
36
|
+
fields: DRIZZLE_FIELDS.users,
|
|
37
|
+
table: models.users.table,
|
|
38
|
+
});
|
|
39
|
+
const accountSelect = createModelSelect({ model: models.accounts });
|
|
40
|
+
const sessionSelect = createSessionSelect(models);
|
|
41
|
+
const userSelect = createModelSelect({ model: models.users });
|
|
42
|
+
const readSocialAccount = (value) => {
|
|
43
|
+
const resolved = readAccount({ models, value });
|
|
44
|
+
return {
|
|
45
|
+
account: resolved.account,
|
|
46
|
+
allowed: resolved.allowed,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const findAccount = async (where) => {
|
|
50
|
+
const rows = await client
|
|
51
|
+
.select({ account: accountSelect, user: userSelect })
|
|
52
|
+
.from(models.accounts.table)
|
|
53
|
+
.innerJoin(models.users.table, eq(accountColumns.user_id, userColumns.id))
|
|
54
|
+
.where(where)
|
|
55
|
+
.limit(1);
|
|
56
|
+
return rows[0] === undefined ? null : readSocialAccount(rows[0]);
|
|
57
|
+
};
|
|
58
|
+
const db = {
|
|
59
|
+
create: async (session) => {
|
|
60
|
+
await client.insert(models.sessions).values(session);
|
|
61
|
+
},
|
|
62
|
+
find: async ({ account_id, session_id }) => {
|
|
63
|
+
const rows = await client
|
|
64
|
+
.select(sessionSelect)
|
|
65
|
+
.from(models.sessions)
|
|
66
|
+
.where(and(eq(sessionColumns.account_id, account_id), eq(sessionColumns.id, session_id)))
|
|
67
|
+
.limit(1);
|
|
68
|
+
return rows[0] === undefined ? null : requireRow(rows[0]);
|
|
69
|
+
},
|
|
70
|
+
findActive: async ({ account_id, now }) => {
|
|
71
|
+
const rows = await client
|
|
72
|
+
.select(sessionSelect)
|
|
73
|
+
.from(models.sessions)
|
|
74
|
+
.where(and(eq(sessionColumns.account_id, account_id), gt(sessionColumns.expires_at, now), isNull(sessionColumns.revoked_at)))
|
|
75
|
+
.orderBy(desc(sessionColumns.created_at));
|
|
76
|
+
return requireRows(rows);
|
|
77
|
+
},
|
|
78
|
+
findToken: async (token_hash) => {
|
|
79
|
+
const rows = await client
|
|
80
|
+
.select({
|
|
81
|
+
account: accountSelect,
|
|
82
|
+
session: sessionSelect,
|
|
83
|
+
user: userSelect,
|
|
84
|
+
})
|
|
85
|
+
.from(models.sessions)
|
|
86
|
+
.innerJoin(models.accounts.table, eq(sessionColumns.account_id, accountColumns.id))
|
|
87
|
+
.innerJoin(models.users.table, eq(accountColumns.user_id, userColumns.id))
|
|
88
|
+
.where(eq(sessionColumns.token_hash, token_hash))
|
|
89
|
+
.limit(1);
|
|
90
|
+
return rows[0] === undefined
|
|
91
|
+
? null
|
|
92
|
+
: requireAuthRow({ models, value: rows[0] });
|
|
93
|
+
},
|
|
94
|
+
revoke: async ({ revoked_at, session_ids }) => {
|
|
95
|
+
if (session_ids.length === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
await client
|
|
99
|
+
.update(models.sessions)
|
|
100
|
+
.set({
|
|
101
|
+
revoked_at,
|
|
102
|
+
updated_at: revoked_at,
|
|
103
|
+
})
|
|
104
|
+
.where(and(inArray(sessionColumns.id, session_ids), isNull(sessionColumns.revoked_at)));
|
|
105
|
+
},
|
|
106
|
+
updateExpiry: async ({ expires_at, session_id, updated_at }) => {
|
|
107
|
+
await client
|
|
108
|
+
.update(models.sessions)
|
|
109
|
+
.set({ expires_at, updated_at })
|
|
110
|
+
.where(eq(sessionColumns.id, session_id));
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const socialTable = models.socials;
|
|
114
|
+
if (socialTable === null) {
|
|
115
|
+
return db;
|
|
116
|
+
}
|
|
117
|
+
const socialColumns = getColumns({
|
|
118
|
+
fields: DRIZZLE_FIELDS.socials,
|
|
119
|
+
table: socialTable,
|
|
120
|
+
});
|
|
121
|
+
const social = {
|
|
122
|
+
createAccount: async ({ email, name }) => {
|
|
123
|
+
return client.transaction(async (transaction) => {
|
|
124
|
+
const accountId = randomUUID();
|
|
125
|
+
const userId = randomUUID();
|
|
126
|
+
await transaction.insert(models.users.table).values({
|
|
127
|
+
id: userId,
|
|
128
|
+
name,
|
|
129
|
+
});
|
|
130
|
+
await transaction.insert(models.accounts.table).values({
|
|
131
|
+
email,
|
|
132
|
+
id: accountId,
|
|
133
|
+
user_id: userId,
|
|
134
|
+
});
|
|
135
|
+
return accountId;
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
createSocial: async (socialRecord) => {
|
|
139
|
+
await client.insert(socialTable).values(socialRecord);
|
|
140
|
+
},
|
|
141
|
+
findAccount: async (account_id) => findAccount(eq(accountColumns.id, account_id)),
|
|
142
|
+
findEmail: async (email) => findAccount(eq(accountColumns.email, email)),
|
|
143
|
+
findSocial: async ({ provider, provider_id }) => {
|
|
144
|
+
const rows = await client
|
|
145
|
+
.select({ account: accountSelect, user: userSelect })
|
|
146
|
+
.from(socialTable)
|
|
147
|
+
.innerJoin(models.accounts.table, eq(socialColumns.account_id, accountColumns.id))
|
|
148
|
+
.innerJoin(models.users.table, eq(accountColumns.user_id, userColumns.id))
|
|
149
|
+
.where(and(eq(socialColumns.provider, provider), eq(socialColumns.provider_id, provider_id)))
|
|
150
|
+
.limit(1);
|
|
151
|
+
return rows[0] === undefined ? null : readSocialAccount(rows[0]);
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
return { ...db, ...social };
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/drizzle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SelectedFieldsFlat } from "drizzle-orm/mysql-core";
|
|
2
|
+
import type { AuthSessionRecord, SessionRecord } from "../../session/types.js";
|
|
3
|
+
import type { ResolvedDrizzleDataModel, ResolvedDrizzleModels } from "./types.js";
|
|
4
|
+
type ReadAccountInput = {
|
|
5
|
+
models: ResolvedDrizzleModels;
|
|
6
|
+
value: unknown;
|
|
7
|
+
};
|
|
8
|
+
type CreateModelSelectInput = {
|
|
9
|
+
model: ResolvedDrizzleDataModel;
|
|
10
|
+
};
|
|
11
|
+
export declare const createModelSelect: ({ model }: CreateModelSelectInput) => SelectedFieldsFlat;
|
|
12
|
+
export declare const createSessionSelect: (models: ResolvedDrizzleModels) => SelectedFieldsFlat;
|
|
13
|
+
export declare const readAccount: ({ models, value }: ReadAccountInput) => {
|
|
14
|
+
account: import("../../session/types.js").AuthAccount;
|
|
15
|
+
allowed: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare const requireRow: (value: unknown) => SessionRecord;
|
|
18
|
+
export declare const requireRows: (value: unknown) => SessionRecord[];
|
|
19
|
+
export declare const requireAuthRow: ({ models, value }: ReadAccountInput) => AuthSessionRecord;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/adapters/drizzle/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAElF,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,KAAK,EAAE,wBAAwB,CAAC;CACnC,CAAC;AAaF,eAAO,MAAM,iBAAiB,GAAI,WAAW,sBAAsB,KAAG,kBAKrE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,qBAAqB,KAAG,kBASnE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,mBAAmB,gBAAgB;;;CAkB9D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,aAE3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,aAAa,EAEzD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,mBAAmB,gBAAgB,KAAG,iBAapE,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getTableColumns } from "drizzle-orm";
|
|
2
|
+
import { isRecord } from "../../session/guards.js";
|
|
3
|
+
import { readAdapterAccount, requireSessionRecord, requireSessionRecords } from "../model.js";
|
|
4
|
+
import { DRIZZLE_FIELDS, getDrizzleSource } from "./config.js";
|
|
5
|
+
const pickColumns = ({ fields, model }) => {
|
|
6
|
+
const columns = getTableColumns(model.table);
|
|
7
|
+
return Object.fromEntries(fields.map((field) => [field, columns[field]]));
|
|
8
|
+
};
|
|
9
|
+
export const createModelSelect = ({ model }) => {
|
|
10
|
+
return pickColumns({
|
|
11
|
+
fields: [...new Set([...model.select, ...Object.keys(model.access)])],
|
|
12
|
+
model,
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
export const createSessionSelect = (models) => {
|
|
16
|
+
return pickColumns({
|
|
17
|
+
fields: DRIZZLE_FIELDS.sessions.filter((field) => field !== "country"),
|
|
18
|
+
model: {
|
|
19
|
+
access: {},
|
|
20
|
+
select: [],
|
|
21
|
+
table: models.sessions,
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export const readAccount = ({ models, value }) => {
|
|
26
|
+
if (!isRecord(value)) {
|
|
27
|
+
throw new Error("Drizzle account relation returned invalid data.");
|
|
28
|
+
}
|
|
29
|
+
return readAdapterAccount({
|
|
30
|
+
account: value.account,
|
|
31
|
+
accounts: {
|
|
32
|
+
...models.accounts,
|
|
33
|
+
source: getDrizzleSource(models.accounts.table),
|
|
34
|
+
},
|
|
35
|
+
adapter: "Drizzle",
|
|
36
|
+
user: value.user,
|
|
37
|
+
users: {
|
|
38
|
+
...models.users,
|
|
39
|
+
source: getDrizzleSource(models.users.table),
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
export const requireRow = (value) => {
|
|
44
|
+
return requireSessionRecord({ adapter: "Drizzle", value });
|
|
45
|
+
};
|
|
46
|
+
export const requireRows = (value) => {
|
|
47
|
+
return requireSessionRecords({ adapter: "Drizzle", value });
|
|
48
|
+
};
|
|
49
|
+
export const requireAuthRow = ({ models, value }) => {
|
|
50
|
+
if (!isRecord(value)) {
|
|
51
|
+
throw new Error("Drizzle session table returned invalid data.");
|
|
52
|
+
}
|
|
53
|
+
const session = requireRow(value.session);
|
|
54
|
+
const resolved = readAccount({ models, value });
|
|
55
|
+
return {
|
|
56
|
+
...session,
|
|
57
|
+
account: resolved.account,
|
|
58
|
+
allowed: resolved.allowed,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/adapters/drizzle/model.ts"],"names":[],"mappings":"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"}
|