@opensaas/stack-auth 0.1.0 → 0.1.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +17 -0
- package/CLAUDE.md +196 -0
- package/LICENSE +21 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +24 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +16 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/schema-converter.d.ts +40 -0
- package/dist/server/schema-converter.d.ts.map +1 -0
- package/dist/server/schema-converter.js +250 -0
- package/dist/server/schema-converter.js.map +1 -0
- package/package.json +14 -4
- package/src/config/index.ts +28 -2
- package/src/config/types.ts +19 -1
- package/src/plugins/index.ts +7 -0
- package/src/server/index.ts +3 -0
- package/src/server/schema-converter.ts +299 -0
- package/tests/config.test.ts +270 -0
- package/tests/lists.test.ts +356 -0
- package/tests/schema-converter.test.ts +304 -0
- package/tsconfig.test.json +7 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +27 -0
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @opensaas/stack-auth
|
|
2
|
+
|
|
3
|
+
## 0.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @opensaas/stack-core@0.1.2
|
|
8
|
+
|
|
9
|
+
## 0.1.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- f8ebc0e: Add base mcp server
|
|
14
|
+
- Updated dependencies [9a3fda5]
|
|
15
|
+
- Updated dependencies [f8ebc0e]
|
|
16
|
+
- Updated dependencies [045c071]
|
|
17
|
+
- @opensaas/stack-core@0.1.1
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# @opensaas/stack-auth
|
|
2
|
+
|
|
3
|
+
Better-auth integration for OpenSaas Stack providing authentication, session management, and pre-built UI components.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Adds complete authentication to OpenSaas Stack apps with minimal configuration. Wraps Better-auth to provide:
|
|
8
|
+
|
|
9
|
+
- Auto-generated auth tables (User, Session, Account, Verification)
|
|
10
|
+
- Automatic session integration with access control
|
|
11
|
+
- Pre-built UI components (sign in, sign up, password reset)
|
|
12
|
+
- OAuth provider support (GitHub, Google, etc.)
|
|
13
|
+
|
|
14
|
+
## Key Files & Exports
|
|
15
|
+
|
|
16
|
+
### Config (`src/config/index.ts`)
|
|
17
|
+
|
|
18
|
+
- `withAuth(config, authConfig)` - Wraps OpenSaas config, merges auth lists
|
|
19
|
+
- `authConfig({ ... })` - Configures Better-auth plugins and session
|
|
20
|
+
|
|
21
|
+
### Lists (`src/lists/index.ts`)
|
|
22
|
+
|
|
23
|
+
Auto-generated lists:
|
|
24
|
+
|
|
25
|
+
- `User` - Core user model (email, name, emailVerified, image)
|
|
26
|
+
- `Session` - Active sessions (token, expiresAt, ipAddress, userAgent)
|
|
27
|
+
- `Account` - OAuth accounts (providerId, accessToken, refreshToken, password)
|
|
28
|
+
- `Verification` - Email verification tokens
|
|
29
|
+
|
|
30
|
+
### Server (`src/server/index.ts`)
|
|
31
|
+
|
|
32
|
+
- `createAuth(config, rawContext?)` - Creates Better-auth instance with MCP plugin support
|
|
33
|
+
- Returns `{ handler, signIn, signOut, ... }` - Better-auth methods
|
|
34
|
+
|
|
35
|
+
### Client (`src/client/index.ts`)
|
|
36
|
+
|
|
37
|
+
- `createClient({ baseURL })` - Better-auth client for React hooks
|
|
38
|
+
- Returns hooks: `useSession()`, `signIn()`, `signOut()`, etc.
|
|
39
|
+
|
|
40
|
+
### UI (`src/ui/index.ts`)
|
|
41
|
+
|
|
42
|
+
Pre-built forms (client components):
|
|
43
|
+
|
|
44
|
+
- `SignInForm` - Email/password + OAuth sign in
|
|
45
|
+
- `SignUpForm` - Create account with password confirmation
|
|
46
|
+
- `ForgotPasswordForm` - Request password reset email
|
|
47
|
+
|
|
48
|
+
### Plugins (`src/plugins/index.ts`)
|
|
49
|
+
|
|
50
|
+
- Better-auth MCP plugin for OAuth authentication with AI assistants
|
|
51
|
+
|
|
52
|
+
## Architecture Patterns
|
|
53
|
+
|
|
54
|
+
### Config Merging
|
|
55
|
+
|
|
56
|
+
`withAuth()` merges auth lists into your config:
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
withAuth(
|
|
60
|
+
config({ lists: { Post: list({...}) } }),
|
|
61
|
+
authConfig({ emailAndPassword: { enabled: true } })
|
|
62
|
+
)
|
|
63
|
+
// Result: { lists: { User, Session, Account, Verification, Post } }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Session Provider
|
|
67
|
+
|
|
68
|
+
Better-auth provides session to context via custom `prismaClientConstructor`:
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// Generated .opensaas/context.ts uses this pattern:
|
|
72
|
+
const session = await auth.api.getSession({ headers })
|
|
73
|
+
const context = createContext(config, prisma, session)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Session Fields Configuration
|
|
77
|
+
|
|
78
|
+
Control which User fields appear in session:
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
authConfig({ sessionFields: ['userId', 'email', 'name', 'role'] })
|
|
82
|
+
// Access in access control:
|
|
83
|
+
access: {
|
|
84
|
+
operation: {
|
|
85
|
+
create: ({ session }) => session?.role === 'admin'
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Extending User List
|
|
91
|
+
|
|
92
|
+
Add custom fields to User:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
authConfig({
|
|
96
|
+
extendUserList: {
|
|
97
|
+
fields: {
|
|
98
|
+
role: select({ options: [{ label: 'User', value: 'user' }] }),
|
|
99
|
+
company: text(),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
})
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Integration Points
|
|
106
|
+
|
|
107
|
+
### With @opensaas/stack-core
|
|
108
|
+
|
|
109
|
+
- Merges auth lists into core config
|
|
110
|
+
- Session flows through context to all access control functions
|
|
111
|
+
- Generator creates Prisma schema with auth tables
|
|
112
|
+
|
|
113
|
+
### With @opensaas/stack-mcp
|
|
114
|
+
|
|
115
|
+
- MCP plugin enables OAuth for AI assistants
|
|
116
|
+
- Requires `rawOpensaasContext` from `.opensaas/context.ts`:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import { rawOpensaasContext } from '@/.opensaas/context'
|
|
120
|
+
export const auth = createAuth(config, rawOpensaasContext)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### With Better-auth
|
|
124
|
+
|
|
125
|
+
- Direct wrapper around Better-auth core
|
|
126
|
+
- Uses Better-auth's plugin system (MCP, OAuth providers)
|
|
127
|
+
- Schema converter maps OpenSaas lists to Better-auth schema format
|
|
128
|
+
|
|
129
|
+
## Common Patterns
|
|
130
|
+
|
|
131
|
+
### Basic Setup
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
// 1. Config
|
|
135
|
+
export default withAuth(
|
|
136
|
+
config({ db: {...}, lists: {...} }),
|
|
137
|
+
authConfig({ emailAndPassword: { enabled: true } })
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
// 2. Server (lib/auth.ts)
|
|
141
|
+
export const auth = createAuth(config)
|
|
142
|
+
|
|
143
|
+
// 3. Route (app/api/auth/[...all]/route.ts)
|
|
144
|
+
export { GET, POST } from '@/lib/auth'
|
|
145
|
+
|
|
146
|
+
// 4. Client (lib/auth-client.ts)
|
|
147
|
+
export const authClient = createClient({ baseURL: process.env.NEXT_PUBLIC_APP_URL })
|
|
148
|
+
|
|
149
|
+
// 5. UI (app/sign-in/page.tsx)
|
|
150
|
+
<SignInForm authClient={authClient} redirectTo="/admin" />
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Access Control with Session
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
Post: list({
|
|
157
|
+
access: {
|
|
158
|
+
operation: {
|
|
159
|
+
create: ({ session }) => !!session,
|
|
160
|
+
update: ({ session, item }) => session?.userId === item.authorId,
|
|
161
|
+
},
|
|
162
|
+
fields: {
|
|
163
|
+
internalNotes: {
|
|
164
|
+
read: ({ session }) => session?.role === 'admin',
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
})
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### OAuth Providers
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
authConfig({
|
|
175
|
+
socialProviders: {
|
|
176
|
+
github: {
|
|
177
|
+
clientId: process.env.GITHUB_CLIENT_ID!,
|
|
178
|
+
clientSecret: process.env.GITHUB_CLIENT_SECRET!
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
// UI
|
|
184
|
+
<SignInForm socialProviders={['github', 'google']} />
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Type Safety
|
|
188
|
+
|
|
189
|
+
Session type is inferred from `sessionFields`:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
authConfig({ sessionFields: ['userId', 'email', 'role'] })
|
|
193
|
+
// session: { userId: string, email: string, role: string } | null
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
All auth operations use Better-auth's type-safe client.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 OpenSaas Stack Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EAIrB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EAIrB,MAAM,YAAY,CAAA;AAInB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAwD5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAEzD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,cAAc,CAuB/F;AA0BD,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
|
package/dist/config/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getAuthLists } from '../lists/index.js';
|
|
2
|
+
import { convertBetterAuthSchema } from '../server/schema-converter.js';
|
|
2
3
|
/**
|
|
3
4
|
* Normalize auth configuration with defaults
|
|
4
5
|
*/
|
|
@@ -48,6 +49,7 @@ export function normalizeAuthConfig(config) {
|
|
|
48
49
|
console.log(`Subject: ${subject}`);
|
|
49
50
|
console.log(`Body: ${html}`);
|
|
50
51
|
}),
|
|
52
|
+
betterAuthPlugins: config.betterAuthPlugins || [],
|
|
51
53
|
};
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
@@ -94,8 +96,8 @@ export function authConfig(config) {
|
|
|
94
96
|
*/
|
|
95
97
|
export function withAuth(opensaasConfig, authConfig) {
|
|
96
98
|
const normalized = normalizeAuthConfig(authConfig);
|
|
97
|
-
// Get auth lists
|
|
98
|
-
const authLists =
|
|
99
|
+
// Get auth lists from plugins
|
|
100
|
+
const authLists = getAuthListsFromPlugins(normalized);
|
|
99
101
|
// Merge auth lists with user lists (auth lists take priority)
|
|
100
102
|
const mergedLists = {
|
|
101
103
|
...opensaasConfig.lists,
|
|
@@ -111,5 +113,25 @@ export function withAuth(opensaasConfig, authConfig) {
|
|
|
111
113
|
result.__authConfig = normalized;
|
|
112
114
|
return result;
|
|
113
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Get auth lists by extracting schemas from Better Auth plugins
|
|
118
|
+
* This inspects the plugin objects directly without requiring a database connection
|
|
119
|
+
*/
|
|
120
|
+
function getAuthListsFromPlugins(authConfig) {
|
|
121
|
+
// Start with base Better Auth tables (always required)
|
|
122
|
+
const authLists = getAuthLists(authConfig.extendUserList);
|
|
123
|
+
// Extract additional tables from plugins
|
|
124
|
+
for (const plugin of authConfig.betterAuthPlugins) {
|
|
125
|
+
if (plugin && typeof plugin === 'object' && 'schema' in plugin) {
|
|
126
|
+
// Plugin has schema property - convert to OpenSaaS lists
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Plugin schema types are dynamic
|
|
128
|
+
const pluginSchema = plugin.schema;
|
|
129
|
+
// Convert plugin schema to OpenSaaS lists and merge
|
|
130
|
+
const pluginLists = convertBetterAuthSchema(pluginSchema);
|
|
131
|
+
Object.assign(authLists, pluginLists);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return authLists;
|
|
135
|
+
}
|
|
114
136
|
export * from './types.js';
|
|
115
137
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -147,14 +147,29 @@ export type AuthConfig = {
|
|
|
147
147
|
subject: string;
|
|
148
148
|
html: string;
|
|
149
149
|
}) => Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Additional Better Auth plugins to enable
|
|
152
|
+
* Allows integrating any Better Auth plugin (MCP, 2FA, etc.)
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* import { mcp } from 'better-auth/plugins'
|
|
157
|
+
*
|
|
158
|
+
* betterAuthPlugins: [
|
|
159
|
+
* mcp({ loginPage: '/sign-in' })
|
|
160
|
+
* ]
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
betterAuthPlugins?: any[];
|
|
150
164
|
};
|
|
151
165
|
/**
|
|
152
166
|
* Internal normalized auth configuration
|
|
153
167
|
* Used after parsing user config
|
|
154
168
|
*/
|
|
155
|
-
export type NormalizedAuthConfig = Required<Omit<AuthConfig, 'emailAndPassword' | 'emailVerification' | 'passwordReset'>> & {
|
|
169
|
+
export type NormalizedAuthConfig = Required<Omit<AuthConfig, 'emailAndPassword' | 'emailVerification' | 'passwordReset' | 'betterAuthPlugins'>> & {
|
|
156
170
|
emailAndPassword: Required<EmailPasswordConfig>;
|
|
157
171
|
emailVerification: Required<EmailVerificationConfig>;
|
|
158
172
|
passwordReset: Required<PasswordResetConfig>;
|
|
173
|
+
betterAuthPlugins: any[];
|
|
159
174
|
};
|
|
160
175
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,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;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,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;CACzB,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;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,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;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IAEvB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IAExB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAA;IAErC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,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;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,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;CACzB,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;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,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;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IAEvB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IAExB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAA;IAErC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAEpF;;;;;;;;;;;;OAYG;IAEH,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CACzC,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,CAAC,CACnG,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;IAE5C,iBAAiB,EAAE,GAAG,EAAE,CAAA;CACzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -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;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAc9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,cAAc,GAAG;IAAE,YAAY,CAAC,EAAE,oBAAoB,CAAA;CAAE,EACxE,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAc9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,cAAc,GAAG;IAAE,YAAY,CAAC,EAAE,oBAAoB,CAAA;CAAE,EACxE,OAAO,EAAE,aAAa,iDAqDvB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,EACnC,aAAa,EAAE,MAAM,EAAE,2CA0BxB;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/server/index.js
CHANGED
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAK3D;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAwB,EACxB,OAAsB;IAEtB,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,cAAwE,EACxE,OAAsB;IAEtB,0CAA0C;IAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAA;IAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAA;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,gBAAgB,GAAsB;QAC1C,QAAQ,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC;QAEvD,0CAA0C;QAC1C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,OAAO;YACnD,CAAC,CAAC;gBACE,OAAO,EAAE,IAAI;gBACb,wBAAwB,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO;aAC/D;YACH,CAAC,CAAC,SAAS;QAEb,oBAAoB;QACpB,OAAO,EAAE;YACP,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM;YACjD,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5F;QAED,uCAAuC;QACvC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QAEzE,mBAAmB;QACnB,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;aAClD,MAAM,CACL,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;YAC1B,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,QAAQ,CAAC,GAAG;oBACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAA;YACH,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAAgE,CACjE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert Better Auth database schema to OpenSaaS list configs
|
|
3
|
+
* Allows dynamic list generation from Better Auth plugins
|
|
4
|
+
*/
|
|
5
|
+
import type { ListConfig } from '@opensaas/stack-core';
|
|
6
|
+
/**
|
|
7
|
+
* Better Auth field attribute structure
|
|
8
|
+
* Inferred from better-auth internal types
|
|
9
|
+
*/
|
|
10
|
+
type BetterAuthFieldAttribute = {
|
|
11
|
+
type: string;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
unique?: boolean;
|
|
14
|
+
references?: {
|
|
15
|
+
model: string;
|
|
16
|
+
field: string;
|
|
17
|
+
onDelete?: 'cascade' | 'set null' | 'restrict';
|
|
18
|
+
};
|
|
19
|
+
defaultValue?: unknown;
|
|
20
|
+
returned?: boolean;
|
|
21
|
+
input?: boolean;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Better Auth table schema structure
|
|
25
|
+
*/
|
|
26
|
+
type BetterAuthTableSchema = {
|
|
27
|
+
modelName: string;
|
|
28
|
+
fields: Record<string, BetterAuthFieldAttribute>;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Convert Better Auth table schema to OpenSaaS ListConfig
|
|
32
|
+
*/
|
|
33
|
+
export declare function convertTableToList(tableName: string, tableSchema: BetterAuthTableSchema): ListConfig;
|
|
34
|
+
/**
|
|
35
|
+
* Convert all Better Auth tables to OpenSaaS list configs
|
|
36
|
+
* This is called by withAuth() to generate lists from Better Auth + plugins
|
|
37
|
+
*/
|
|
38
|
+
export declare function convertBetterAuthSchema(tables: Record<string, BetterAuthTableSchema>): Record<string, ListConfig>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=schema-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../src/server/schema-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAA;AAEnE;;;GAGG;AACH,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;KAC/C,CAAA;IACD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;CACjD,CAAA;AAsMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,qBAAqB,GACjC,UAAU,CAgCZ;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAU5B"}
|