@opensaas/stack-auth 0.36.0 → 0.37.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +109 -0
- package/CLAUDE.md +104 -7
- package/README.md +18 -7
- package/dist/config/adopt-better-auth-tables.d.ts +47 -0
- package/dist/config/adopt-better-auth-tables.d.ts.map +1 -1
- package/dist/config/adopt-better-auth-tables.js +29 -1
- package/dist/config/adopt-better-auth-tables.js.map +1 -1
- package/dist/config/derive-auth-lists.d.ts +7 -5
- package/dist/config/derive-auth-lists.d.ts.map +1 -1
- package/dist/config/derive-auth-lists.js +33 -34
- package/dist/config/derive-auth-lists.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +41 -11
- package/dist/config/index.js.map +1 -1
- package/dist/config/plugin.d.ts.map +1 -1
- package/dist/config/plugin.js +39 -27
- package/dist/config/plugin.js.map +1 -1
- package/dist/config/types.d.ts +126 -24
- package/dist/config/types.d.ts.map +1 -1
- package/dist/server/index.d.ts +29 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +193 -66
- package/dist/server/index.js.map +1 -1
- package/package.json +3 -3
- package/src/config/adopt-better-auth-tables.ts +70 -1
- package/src/config/derive-auth-lists.ts +37 -38
- package/src/config/index.ts +47 -12
- package/src/config/plugin.ts +39 -27
- package/src/config/types.ts +127 -21
- package/src/server/index.ts +244 -80
- package/tests/adopt-better-auth-tables.test.ts +99 -0
- package/tests/config.test.ts +66 -8
- package/tests/derive-auth-lists.test.ts +79 -5
- package/tests/generated-fk-shape.test.ts +65 -0
- package/tests/plugin-derived-keys.test.ts +48 -0
- package/tests/server.test.ts +517 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-auth-lists.js","sourceRoot":"","sources":["../../src/config/derive-auth-lists.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"derive-auth-lists.js","sourceRoot":"","sources":["../../src/config/derive-auth-lists.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,oBAAoB,EAOrB,MAAM,YAAY,CAAA;AA4EnB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAyE5E;AAED,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
|
package/dist/config/index.js
CHANGED
|
@@ -14,10 +14,20 @@ const DEFAULT_MODEL_NAMES = {
|
|
|
14
14
|
* falling back to the better-auth default model name and an empty column map.
|
|
15
15
|
* The model's Postgres schema is the per-model `schema` override when present,
|
|
16
16
|
* otherwise the plugin-level `schema` default (or `undefined` for `public`).
|
|
17
|
+
*
|
|
18
|
+
* `tableName` defaults to today's behaviour when not explicitly set: it
|
|
19
|
+
* follows `modelName` when that differs from the better-auth default (so a
|
|
20
|
+
* renamed list still pins its table via `@@map`), otherwise it stays unset.
|
|
21
|
+
* An explicit `tableName` is independent of `modelName` — it lets a renamed
|
|
22
|
+
* list key adopt a differently-named live table (e.g. better-auth's own
|
|
23
|
+
* default lowercase table names).
|
|
17
24
|
*/
|
|
18
25
|
function normalizeModelConfig(config, defaultModelName, defaultSchema) {
|
|
26
|
+
const modelName = config?.modelName || defaultModelName;
|
|
27
|
+
const tableName = config?.tableName ?? (modelName !== defaultModelName ? modelName : undefined);
|
|
19
28
|
return {
|
|
20
|
-
modelName
|
|
29
|
+
modelName,
|
|
30
|
+
tableName,
|
|
21
31
|
fields: config?.fields || {},
|
|
22
32
|
schema: config?.schema ?? defaultSchema,
|
|
23
33
|
};
|
|
@@ -36,6 +46,18 @@ function normalizeAuthModels(config) {
|
|
|
36
46
|
verification: normalizeModelConfig(config.verification, DEFAULT_MODEL_NAMES.verification, defaultSchema),
|
|
37
47
|
};
|
|
38
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Default `sendResetPassword`/`sendVerificationEmail` — logs to console
|
|
51
|
+
* instead of sending, matching the pre-existing "no sendEmail configured"
|
|
52
|
+
* behavior for apps that haven't wired a real email provider yet.
|
|
53
|
+
*/
|
|
54
|
+
function defaultSendAuthEmail(kind) {
|
|
55
|
+
return async ({ user, url }) => {
|
|
56
|
+
console.log(`[Auth] ${kind[0].toUpperCase()}${kind.slice(1)} email not sent (no callback configured):`);
|
|
57
|
+
console.log(`To: ${user.email}`);
|
|
58
|
+
console.log(`URL: ${url}`);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
39
61
|
/**
|
|
40
62
|
* Normalize auth configuration with defaults
|
|
41
63
|
*/
|
|
@@ -46,16 +68,30 @@ export function normalizeAuthConfig(config) {
|
|
|
46
68
|
enabled: true,
|
|
47
69
|
minPasswordLength: config.emailAndPassword.minPasswordLength ?? 8,
|
|
48
70
|
requireConfirmation: config.emailAndPassword.requireConfirmation ?? true,
|
|
71
|
+
sendResetPassword: config.emailAndPassword.sendResetPassword ??
|
|
72
|
+
defaultSendAuthEmail('password reset'),
|
|
49
73
|
}
|
|
50
|
-
: {
|
|
74
|
+
: {
|
|
75
|
+
enabled: false,
|
|
76
|
+
minPasswordLength: 8,
|
|
77
|
+
requireConfirmation: true,
|
|
78
|
+
sendResetPassword: defaultSendAuthEmail('password reset'),
|
|
79
|
+
};
|
|
51
80
|
// Email verification defaults
|
|
52
81
|
const emailVerification = config.emailVerification?.enabled
|
|
53
82
|
? {
|
|
54
83
|
enabled: true,
|
|
55
84
|
sendOnSignUp: config.emailVerification.sendOnSignUp ?? true,
|
|
56
85
|
tokenExpiration: config.emailVerification.tokenExpiration ?? 86400,
|
|
86
|
+
sendVerificationEmail: config.emailVerification.sendVerificationEmail ??
|
|
87
|
+
defaultSendAuthEmail('verification'),
|
|
57
88
|
}
|
|
58
|
-
: {
|
|
89
|
+
: {
|
|
90
|
+
enabled: false,
|
|
91
|
+
sendOnSignUp: true,
|
|
92
|
+
tokenExpiration: 86400,
|
|
93
|
+
sendVerificationEmail: defaultSendAuthEmail('verification'),
|
|
94
|
+
};
|
|
59
95
|
// Password reset defaults
|
|
60
96
|
const passwordReset = config.passwordReset?.enabled
|
|
61
97
|
? {
|
|
@@ -66,7 +102,7 @@ export function normalizeAuthConfig(config) {
|
|
|
66
102
|
// Session defaults
|
|
67
103
|
const session = {
|
|
68
104
|
expiresIn: config.session?.expiresIn || 604800, // 7 days
|
|
69
|
-
updateAge: config.session?.updateAge ??
|
|
105
|
+
updateAge: config.session?.updateAge ?? 86400, // 1 day, matching better-auth's own default
|
|
70
106
|
};
|
|
71
107
|
// Session fields defaults
|
|
72
108
|
const sessionFields = config.sessionFields || ['userId', 'email', 'name'];
|
|
@@ -84,15 +120,9 @@ export function normalizeAuthConfig(config) {
|
|
|
84
120
|
sessionFields,
|
|
85
121
|
extendUserList: config.extendUserList || {},
|
|
86
122
|
access: config.access || {},
|
|
87
|
-
sendEmail: config.sendEmail ||
|
|
88
|
-
(async ({ to, subject, html }) => {
|
|
89
|
-
console.log('[Auth] Email not sent (no sendEmail configured):');
|
|
90
|
-
console.log(`To: ${to}`);
|
|
91
|
-
console.log(`Subject: ${subject}`);
|
|
92
|
-
console.log(`Body: ${html}`);
|
|
93
|
-
}),
|
|
94
123
|
betterAuthPlugins: config.betterAuthPlugins || [],
|
|
95
124
|
rateLimit: config.rateLimit,
|
|
125
|
+
betterAuthOptions: config.betterAuthOptions || {},
|
|
96
126
|
};
|
|
97
127
|
}
|
|
98
128
|
export * from './types.js';
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAKlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAKlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAwLrD"}
|
package/dist/config/plugin.js
CHANGED
|
@@ -50,33 +50,13 @@ export function authPlugin(config) {
|
|
|
50
50
|
account: normalized.models.account.modelName,
|
|
51
51
|
verification: normalized.models.verification.modelName,
|
|
52
52
|
};
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
for (const [listName, listConfig] of Object.entries(pluginLists)) {
|
|
61
|
-
if (context.config.lists[listName]) {
|
|
62
|
-
// List already exists — merge fields/hooks/mcp in only. Access
|
|
63
|
-
// control belongs to whoever owns the list; per ADR-0013 an
|
|
64
|
-
// extension must never carry operation-level access for a
|
|
65
|
-
// pre-existing list (the plugin engine throws if it does).
|
|
66
|
-
context.extendList(listName, {
|
|
67
|
-
fields: listConfig.fields,
|
|
68
|
-
hooks: listConfig.hooks,
|
|
69
|
-
mcp: listConfig.mcp,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
// List doesn't exist, add it
|
|
74
|
-
context.addList(listName, listConfig);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Add all auth lists.
|
|
53
|
+
// Add all auth lists FIRST, before any better-auth plugin schema
|
|
54
|
+
// extension is processed. This must happen before the betterAuthPlugins
|
|
55
|
+
// loop below so a base-model extension (e.g. a plugin's `schema: {
|
|
56
|
+
// user: { fields: … } }`) always finds the real derived list already
|
|
57
|
+
// registered under its key and takes the merge (`extendList`) path
|
|
58
|
+
// against it — instead of pre-empting that key with a bare
|
|
59
|
+
// `list({ fields })` that carries no `db`/`access` (see #861).
|
|
80
60
|
//
|
|
81
61
|
// The plugin only ever touches its OWN derived keys. When a developer
|
|
82
62
|
// renames the auth user model (e.g. user.modelName: 'AuthUser'), the
|
|
@@ -102,6 +82,38 @@ export function authPlugin(config) {
|
|
|
102
82
|
context.addList(listName, listConfig);
|
|
103
83
|
}
|
|
104
84
|
}
|
|
85
|
+
// Extract additional lists from Better Auth plugins. Because the auth
|
|
86
|
+
// lists above are already registered, a schema extension of a base
|
|
87
|
+
// model (user/session/account/verification) always finds its resolved
|
|
88
|
+
// key occupied by the real derived list and merges via `extendList` —
|
|
89
|
+
// its `db`/`access` are preserved. Non-base plugin tables (e.g.
|
|
90
|
+
// `oauth_application`, `passkey`) still register as new lists via
|
|
91
|
+
// `addList`, same as before.
|
|
92
|
+
for (const plugin of normalized.betterAuthPlugins) {
|
|
93
|
+
if (plugin && typeof plugin === 'object' && 'schema' in plugin) {
|
|
94
|
+
// Plugin has schema property - convert to OpenSaaS lists
|
|
95
|
+
const pluginSchema = plugin.schema;
|
|
96
|
+
const pluginLists = convertBetterAuthSchema(pluginSchema, baseModelKeys);
|
|
97
|
+
// Add or extend lists from plugin
|
|
98
|
+
for (const [listName, listConfig] of Object.entries(pluginLists)) {
|
|
99
|
+
if (context.config.lists[listName]) {
|
|
100
|
+
// List already exists — merge fields/hooks/mcp in only. Access
|
|
101
|
+
// control belongs to whoever owns the list; per ADR-0013 an
|
|
102
|
+
// extension must never carry operation-level access for a
|
|
103
|
+
// pre-existing list (the plugin engine throws if it does).
|
|
104
|
+
context.extendList(listName, {
|
|
105
|
+
fields: listConfig.fields,
|
|
106
|
+
hooks: listConfig.hooks,
|
|
107
|
+
mcp: listConfig.mcp,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// List doesn't exist, add it
|
|
112
|
+
context.addList(listName, listConfig);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
105
117
|
// Store auth config for runtime access
|
|
106
118
|
// Access at runtime via: config._pluginData.auth
|
|
107
119
|
context.setPluginData('auth', normalized);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAE9C,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAEhB,mBAAmB,EAAE;YACnB,MAAM,EAAE,iEAAiE;YACzE,QAAQ,EAAE,qBAAqB;SAChC;QAED,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtB,uEAAuE;YACvE,mEAAmE;YACnE,+DAA+D;YAC/D,uEAAuE;YACvE,iDAAiD;YACjD,MAAM,SAAS,GAAG,YAAY,CAC5B,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,MAAM,CAClB,CAAA;YAED,wEAAwE;YACxE,kEAAkE;YAClE,oEAAoE;YACpE,gEAAgE;YAChE,+DAA+D;YAC/D,MAAM,aAAa,GAAG;gBACpB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;gBACtC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;gBAC5C,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;gBAC5C,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS;aACvD,CAAA;YAED,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { ListConfig } from '@opensaas/stack-core';
|
|
2
|
+
import type { BetterAuthOptions, User } from 'better-auth';
|
|
2
3
|
import type { ExtendUserListConfig } from '../lists/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* better-auth's own callback shape for `sendVerificationEmail`/
|
|
6
|
+
* `sendResetPassword` — `data` is exactly what better-auth passes (no stack
|
|
7
|
+
* abstraction layered on top), and `request` is the raw request that
|
|
8
|
+
* triggered it.
|
|
9
|
+
*/
|
|
10
|
+
export type SendAuthEmail = (data: {
|
|
11
|
+
user: User;
|
|
12
|
+
url: string;
|
|
13
|
+
token: string;
|
|
14
|
+
}, request?: Request) => Promise<void>;
|
|
3
15
|
/**
|
|
4
16
|
* OAuth provider configuration
|
|
5
17
|
*/
|
|
@@ -29,10 +41,36 @@ export type EmailPasswordConfig = {
|
|
|
29
41
|
*/
|
|
30
42
|
minPasswordLength?: number;
|
|
31
43
|
/**
|
|
32
|
-
* Require password confirmation
|
|
44
|
+
* Require password confirmation (a second "confirm password" field).
|
|
45
|
+
*
|
|
46
|
+
* There is no better-auth server-side equivalent — this is purely a UI
|
|
47
|
+
* concern. `createAuth()` does not read it. Pass it directly to the
|
|
48
|
+
* pre-built forms instead: `<SignUpForm requirePasswordConfirmation={...} />`
|
|
49
|
+
* / `<ResetPasswordForm requirePasswordConfirmation={...} />` (both default
|
|
50
|
+
* to `true`). Setting it here has no effect and `createAuth()` warns if it
|
|
51
|
+
* is configured.
|
|
52
|
+
*
|
|
33
53
|
* @default true
|
|
34
54
|
*/
|
|
35
55
|
requireConfirmation?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Send a password reset email. Passed straight through to better-auth's own
|
|
58
|
+
* `emailAndPassword.sendResetPassword` — the stack does not wrap or
|
|
59
|
+
* reshape it. If not provided, reset emails are logged to console instead
|
|
60
|
+
* of sent.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* sendResetPassword: async ({ user, url }) => {
|
|
65
|
+
* await resend.emails.send({
|
|
66
|
+
* to: user.email,
|
|
67
|
+
* subject: 'Reset your password',
|
|
68
|
+
* html: `<a href="${url}">Reset your password</a>`,
|
|
69
|
+
* })
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
sendResetPassword?: SendAuthEmail;
|
|
36
74
|
};
|
|
37
75
|
/**
|
|
38
76
|
* Email verification configuration
|
|
@@ -49,6 +87,24 @@ export type EmailVerificationConfig = {
|
|
|
49
87
|
* @default 86400 (24 hours)
|
|
50
88
|
*/
|
|
51
89
|
tokenExpiration?: number;
|
|
90
|
+
/**
|
|
91
|
+
* Send a verification email. Passed straight through to better-auth's own
|
|
92
|
+
* `emailVerification.sendVerificationEmail` — the stack does not wrap or
|
|
93
|
+
* reshape it. If not provided, verification emails are logged to console
|
|
94
|
+
* instead of sent.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* sendVerificationEmail: async ({ user, url }) => {
|
|
99
|
+
* await resend.emails.send({
|
|
100
|
+
* to: user.email,
|
|
101
|
+
* subject: 'Verify your email',
|
|
102
|
+
* html: `<a href="${url}">Verify your email</a>`,
|
|
103
|
+
* })
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
sendVerificationEmail?: SendAuthEmail;
|
|
52
108
|
};
|
|
53
109
|
/**
|
|
54
110
|
* Password reset configuration
|
|
@@ -71,10 +127,12 @@ export type SessionConfig = {
|
|
|
71
127
|
*/
|
|
72
128
|
expiresIn?: number;
|
|
73
129
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
130
|
+
* How often the session should be refreshed, in seconds. Passed straight
|
|
131
|
+
* through to better-auth's own `session.updateAge`. Set `false` to disable
|
|
132
|
+
* refresh entirely (the session expiry is then fixed at creation time).
|
|
133
|
+
* @default 86400 (1 day, matching better-auth's own default)
|
|
76
134
|
*/
|
|
77
|
-
updateAge?:
|
|
135
|
+
updateAge?: number | false;
|
|
78
136
|
};
|
|
79
137
|
/**
|
|
80
138
|
* Per-model better-auth configuration block.
|
|
@@ -138,10 +196,30 @@ export type AuthAccessConfig = {
|
|
|
138
196
|
export type AuthModelConfig = {
|
|
139
197
|
/**
|
|
140
198
|
* The table/list name for this model.
|
|
141
|
-
* Becomes the OpenSaaS list key
|
|
199
|
+
* Becomes the OpenSaaS list key and Prisma model name.
|
|
142
200
|
* @default the default better-auth model name (e.g. 'User', 'Session')
|
|
143
201
|
*/
|
|
144
202
|
modelName?: string;
|
|
203
|
+
/**
|
|
204
|
+
* The physical database table name for this model, independent of
|
|
205
|
+
* `modelName`. Generates a `@@map("...")` on the derived list.
|
|
206
|
+
*
|
|
207
|
+
* Lets a renamed list key (e.g. `modelName: 'AuthUser'`, to avoid colliding
|
|
208
|
+
* with an app's own domain `User`) still adopt a live table under a
|
|
209
|
+
* different name — most commonly better-auth's own default lowercase
|
|
210
|
+
* table names (`user`, `session`, `account`, `verification`).
|
|
211
|
+
*
|
|
212
|
+
* @default `modelName` when it differs from the better-auth default model
|
|
213
|
+
* name, otherwise unset (no `@@map`) — i.e. today's behaviour when this
|
|
214
|
+
* option is not set.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* // List key AuthUser, but the live table is still called `user`.
|
|
219
|
+
* user: { modelName: 'AuthUser', tableName: 'user' }
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
tableName?: string;
|
|
145
223
|
/**
|
|
146
224
|
* Map better-auth field names to database column names.
|
|
147
225
|
* Each entry generates a `@map("column")` on the derived field.
|
|
@@ -284,22 +362,6 @@ export type AuthConfig = {
|
|
|
284
362
|
* narrower, User-specific override.
|
|
285
363
|
*/
|
|
286
364
|
access?: AuthAccessConfig;
|
|
287
|
-
/**
|
|
288
|
-
* Custom email sending function for verification and password reset
|
|
289
|
-
* If not provided, emails will be logged to console
|
|
290
|
-
*
|
|
291
|
-
* @example
|
|
292
|
-
* ```typescript
|
|
293
|
-
* sendEmail: async ({ to, subject, html }) => {
|
|
294
|
-
* await resend.emails.send({ to, subject, html })
|
|
295
|
-
* }
|
|
296
|
-
* ```
|
|
297
|
-
*/
|
|
298
|
-
sendEmail?: (params: {
|
|
299
|
-
to: string;
|
|
300
|
-
subject: string;
|
|
301
|
-
html: string;
|
|
302
|
-
}) => Promise<void>;
|
|
303
365
|
/**
|
|
304
366
|
* Additional Better Auth plugins to enable
|
|
305
367
|
* Allows integrating any Better Auth plugin (MCP, 2FA, etc.)
|
|
@@ -346,16 +408,56 @@ export type AuthConfig = {
|
|
|
346
408
|
*/
|
|
347
409
|
max?: number;
|
|
348
410
|
};
|
|
411
|
+
/**
|
|
412
|
+
* Escape hatch for better-auth options the stack doesn't model — typed as
|
|
413
|
+
* better-auth's own `BetterAuthOptions` so it stays in step with
|
|
414
|
+
* better-auth's surface without the stack re-declaring it. Deep-merged into
|
|
415
|
+
* the options `createAuth()` builds, applied LAST: a plain-object value at a
|
|
416
|
+
* given key merges recursively with whatever the stack already set there
|
|
417
|
+
* (so e.g. `session: { cookieCache: {...} }` adds alongside the stack's own
|
|
418
|
+
* `session.expiresIn`/`updateAge` rather than clobbering them); any other
|
|
419
|
+
* value (including arrays) replaces the stack's value outright. On a genuine
|
|
420
|
+
* key collision, this option wins.
|
|
421
|
+
*
|
|
422
|
+
* `database` and `plugins` are rejected — they're already the dedicated
|
|
423
|
+
* seams (the stack's `db` config, and `betterAuthPlugins` respectively) and
|
|
424
|
+
* accepting them here would create two unranked ways to set the same thing.
|
|
425
|
+
* So is `additionalFields` under `user`/`session`/`account`/`verification` —
|
|
426
|
+
* it has schema consequences (new columns) that a passthrough can't also
|
|
427
|
+
* apply to the generated Prisma schema; add fields to the derived list
|
|
428
|
+
* instead (`extendUserList` for the user model, or declare the list
|
|
429
|
+
* yourself for the others — see `packages/auth/CLAUDE.md`).
|
|
430
|
+
*
|
|
431
|
+
* The same options object is available standalone via
|
|
432
|
+
* `buildBetterAuthOptions()` (`@opensaas/stack-auth/server`) for apps that
|
|
433
|
+
* still need to hand-wire their own `betterAuth()` instance.
|
|
434
|
+
*
|
|
435
|
+
* @example
|
|
436
|
+
* ```typescript
|
|
437
|
+
* authPlugin({
|
|
438
|
+
* betterAuthOptions: {
|
|
439
|
+
* databaseHooks: { user: { create: { after: syncDomainUser } } },
|
|
440
|
+
* session: { cookieCache: { enabled: true, maxAge: 300 } },
|
|
441
|
+
* verification: { storeIdentifier: 'hashed' },
|
|
442
|
+
* baseURL: process.env.BETTER_AUTH_URL,
|
|
443
|
+
* },
|
|
444
|
+
* })
|
|
445
|
+
* ```
|
|
446
|
+
*/
|
|
447
|
+
betterAuthOptions?: Partial<BetterAuthOptions>;
|
|
349
448
|
};
|
|
350
449
|
/**
|
|
351
450
|
* Resolved per-model auth configuration after normalization.
|
|
352
451
|
* Always carries a concrete `modelName` (the developer's override or the
|
|
353
|
-
* better-auth default) and a (possibly empty) `fields` column map. `
|
|
354
|
-
*
|
|
355
|
-
* the
|
|
452
|
+
* better-auth default) and a (possibly empty) `fields` column map. `tableName`
|
|
453
|
+
* is the resolved physical table name — `undefined` means no `@@map` is
|
|
454
|
+
* emitted (the list key doubles as the table name). `schema` carries the
|
|
455
|
+
* resolved Postgres schema for the model (per-model override, else the
|
|
456
|
+
* plugin-level schema, else `undefined` for the default `public` schema).
|
|
356
457
|
*/
|
|
357
458
|
export type NormalizedAuthModelConfig = {
|
|
358
459
|
modelName: string;
|
|
460
|
+
tableName?: string;
|
|
359
461
|
fields: Record<string, string>;
|
|
360
462
|
schema?: string;
|
|
361
463
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE7D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAChD,OAAO,CAAC,EAAE,OAAO,KACd,OAAO,CAAC,IAAI,CAAC,CAAA;AAElB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CAAC,EAAE,aAAa,CAAA;CAClC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;;;;;;;OAgBG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAA;CACtC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAE7B,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEhC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEnC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEnC,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,mBAAmB,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAA;IAE1D;;OAEG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAA;IAE/D;;OAEG;IACH,aAAa,CAAC,EAAE,mBAAmB,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAA;IAEvD;;OAEG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAA;IAEvC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,eAAe,CAAA;IAEzC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAA;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAA;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IAExB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAA;IAErC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAEzB;;;;;;;;;;;;OAYG;IAEH,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAA;IAEzB;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAA;QAChB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QACf;;;WAGG;QACH,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC/C,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAA;IAC/B,OAAO,EAAE,yBAAyB,CAAA;IAClC,OAAO,EAAE,yBAAyB,CAAA;IAClC,YAAY,EAAE,yBAAyB,CAAA;CACxC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CACzC,IAAI,CACF,UAAU,EACR,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,mBAAmB,GACnB,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,cAAc,GACd,QAAQ,CACX,CACF,GAAG;IACF,gBAAgB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAC/C,iBAAiB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACpD,aAAa,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IAC5C,oFAAoF;IACpF,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAChC,sGAAsG;IACtG,MAAM,EAAE,oBAAoB,CAAA;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,iBAAiB,EAAE,GAAG,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;CACF,CAAA"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
import { betterAuth } from 'better-auth';
|
|
2
2
|
import type { BetterAuthOptions } from 'better-auth';
|
|
3
3
|
import type { OpenSaasConfig, AccessContext } from '@opensaas/stack-core';
|
|
4
|
+
/**
|
|
5
|
+
* Build the `BetterAuthOptions` a better-auth instance for this OpenSaas
|
|
6
|
+
* config should be constructed with — the same options `createAuth()` uses
|
|
7
|
+
* internally, available standalone for an app that still needs to hand-wire
|
|
8
|
+
* its own `betterAuth()` instance (e.g. a third-party contract that requires
|
|
9
|
+
* a resolved instance at module-init time). Keeps the auth plugin
|
|
10
|
+
* authoritative for everything it models; the app's additions on top become
|
|
11
|
+
* an explicit, reviewable diff instead of a parallel, hand-duplicated config.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { betterAuth } from 'better-auth'
|
|
16
|
+
* import { buildBetterAuthOptions } from '@opensaas/stack-auth/server'
|
|
17
|
+
*
|
|
18
|
+
* export const auth = betterAuth({
|
|
19
|
+
* ...(await buildBetterAuthOptions(config, context)),
|
|
20
|
+
* databaseHooks: { user: { create: { after: syncDomainUser } } },
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildBetterAuthOptions(opensaasConfig: OpenSaasConfig | Promise<OpenSaasConfig>, context: AccessContext | Promise<AccessContext>): Promise<BetterAuthOptions>;
|
|
4
25
|
/**
|
|
5
26
|
* Create a better-auth instance from OpenSaas config
|
|
6
27
|
* This should be called once at app startup
|
|
@@ -17,9 +38,14 @@ import type { OpenSaasConfig, AccessContext } from '@opensaas/stack-core';
|
|
|
17
38
|
*/
|
|
18
39
|
export declare function createAuth(opensaasConfig: OpenSaasConfig | Promise<OpenSaasConfig>, context: AccessContext | Promise<AccessContext>): import("better-auth").Auth<BetterAuthOptions>;
|
|
19
40
|
/**
|
|
20
|
-
* Get session from better-auth and transform it to OpenSaas session format
|
|
21
|
-
*
|
|
41
|
+
* Get session from better-auth and transform it to OpenSaas session format.
|
|
42
|
+
*
|
|
43
|
+
* Not called by any generated code today — apps currently hand-roll this same
|
|
44
|
+
* transform against `auth.api.getSession({ headers: await headers() })` (see
|
|
45
|
+
* `examples/starter-auth/lib/auth.ts`). Exported as a reusable helper for that
|
|
46
|
+
* pattern; pass the caller's request headers (e.g. Next.js `await headers()`
|
|
47
|
+
* in a Server Component/action) so a session cookie can actually be resolved.
|
|
22
48
|
*/
|
|
23
|
-
export declare function getSessionFromAuth(auth: ReturnType<typeof betterAuth>, sessionFields: string[]): Promise<Record<string, unknown> | null>;
|
|
49
|
+
export declare function getSessionFromAuth(auth: ReturnType<typeof betterAuth>, sessionFields: string[], headers: Headers): Promise<Record<string, unknown> | null>;
|
|
24
50
|
export type { BetterAuthOptions };
|
|
25
51
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAkHzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,EACxD,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,GAC9C,OAAO,CAAC,iBAAiB,CAAC,CA+H5B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,EACxD,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,iDAoEhD;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,EACnC,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,EAAE,OAAO,2CAwBjB;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
|