@opensaas/stack-auth 0.1.5 → 0.1.6

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @opensaas/stack-auth@0.1.5 build /home/runner/work/stack/stack/packages/auth
2
+ > @opensaas/stack-auth@0.1.6 build /home/runner/work/stack/stack/packages/auth
3
3
  > tsc
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @opensaas/stack-auth
2
2
 
3
+ ## 0.1.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 39996ca: Add plugin mechanism
8
+ - Updated dependencies [39996ca]
9
+ - Updated dependencies [39996ca]
10
+ - @opensaas/stack-core@0.1.6
11
+
3
12
  ## 0.1.5
4
13
 
5
14
  ### Patch Changes
package/README.md CHANGED
@@ -396,7 +396,7 @@ Access the session in server components or actions:
396
396
  import { getContext } from '@/.opensaas/context'
397
397
 
398
398
  async function myServerAction() {
399
- const context = getContext()
399
+ const context = await getContext()
400
400
 
401
401
  if (!context.session) {
402
402
  throw new Error('Not authenticated')
@@ -1,50 +1,8 @@
1
- import type { OpenSaasConfig } from '@opensaas/stack-core';
2
1
  import type { AuthConfig, NormalizedAuthConfig } from './types.js';
3
2
  /**
4
3
  * Normalize auth configuration with defaults
5
4
  */
6
5
  export declare function normalizeAuthConfig(config: AuthConfig): NormalizedAuthConfig;
7
- /**
8
- * Auth configuration builder
9
- * Use this to create an auth configuration object
10
- *
11
- * @example
12
- * ```typescript
13
- * import { authConfig } from '@opensaas/stack-auth'
14
- *
15
- * const auth = authConfig({
16
- * emailAndPassword: { enabled: true },
17
- * emailVerification: { enabled: true },
18
- * socialProviders: {
19
- * github: { clientId: '...', clientSecret: '...' }
20
- * }
21
- * })
22
- * ```
23
- */
24
- export declare function authConfig(config: AuthConfig): AuthConfig;
25
- /**
26
- * Wrap an OpenSaas config with better-auth integration
27
- * This merges the auth lists into the user's config and sets up session handling
28
- *
29
- * @example
30
- * ```typescript
31
- * import { config } from '@opensaas/stack-core'
32
- * import { withAuth, authConfig } from '@opensaas/stack-auth'
33
- *
34
- * export default withAuth(
35
- * config({
36
- * db: { provider: 'sqlite', url: 'file:./dev.db' },
37
- * lists: {
38
- * Post: list({ ... })
39
- * }
40
- * }),
41
- * authConfig({
42
- * emailAndPassword: { enabled: true }
43
- * })
44
- * )
45
- * ```
46
- */
47
- export declare function withAuth(opensaasConfig: OpenSaasConfig, authConfig: AuthConfig): OpenSaasConfig;
48
6
  export type { AuthConfig, NormalizedAuthConfig };
49
7
  export * from './types.js';
50
8
  //# sourceMappingURL=index.d.ts.map
@@ -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;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EAIrB,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAwD5E;AAED,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
@@ -1,5 +1,3 @@
1
- import { getAuthLists } from '../lists/index.js';
2
- import { convertBetterAuthSchema } from '../server/schema-converter.js';
3
1
  /**
4
2
  * Normalize auth configuration with defaults
5
3
  */
@@ -52,86 +50,5 @@ export function normalizeAuthConfig(config) {
52
50
  betterAuthPlugins: config.betterAuthPlugins || [],
53
51
  };
54
52
  }
55
- /**
56
- * Auth configuration builder
57
- * Use this to create an auth configuration object
58
- *
59
- * @example
60
- * ```typescript
61
- * import { authConfig } from '@opensaas/stack-auth'
62
- *
63
- * const auth = authConfig({
64
- * emailAndPassword: { enabled: true },
65
- * emailVerification: { enabled: true },
66
- * socialProviders: {
67
- * github: { clientId: '...', clientSecret: '...' }
68
- * }
69
- * })
70
- * ```
71
- */
72
- export function authConfig(config) {
73
- return config;
74
- }
75
- /**
76
- * Wrap an OpenSaas config with better-auth integration
77
- * This merges the auth lists into the user's config and sets up session handling
78
- *
79
- * @example
80
- * ```typescript
81
- * import { config } from '@opensaas/stack-core'
82
- * import { withAuth, authConfig } from '@opensaas/stack-auth'
83
- *
84
- * export default withAuth(
85
- * config({
86
- * db: { provider: 'sqlite', url: 'file:./dev.db' },
87
- * lists: {
88
- * Post: list({ ... })
89
- * }
90
- * }),
91
- * authConfig({
92
- * emailAndPassword: { enabled: true }
93
- * })
94
- * )
95
- * ```
96
- */
97
- export function withAuth(opensaasConfig, authConfig) {
98
- const normalized = normalizeAuthConfig(authConfig);
99
- // Get auth lists from plugins
100
- const authLists = getAuthListsFromPlugins(normalized);
101
- // Merge auth lists with user lists (auth lists take priority)
102
- const mergedLists = {
103
- ...opensaasConfig.lists,
104
- ...authLists,
105
- };
106
- // Return merged config with auth config attached
107
- // Note: Session integration happens in the generator/context
108
- const result = {
109
- ...opensaasConfig,
110
- lists: mergedLists,
111
- };
112
- // Store auth config for internal use
113
- result.__authConfig = normalized;
114
- return result;
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
- }
136
53
  export * from './types.js';
137
54
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,EAAE,OAAO;QACvD,CAAC,CAAC;YACE,OAAO,EAAE,IAAa;YACtB,iBAAiB,EAAG,MAAM,CAAC,gBAAwC,CAAC,iBAAiB,IAAI,CAAC;YAC1F,mBAAmB,EAChB,MAAM,CAAC,gBAAwC,CAAC,mBAAmB,IAAI,IAAI;SAC/E;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,iBAAiB,EAAE,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAA;IAEhF,8BAA8B;IAC9B,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,EAAE,OAAO;QACzD,CAAC,CAAC;YACE,OAAO,EAAE,IAAa;YACtB,YAAY,EAAG,MAAM,CAAC,iBAA6C,CAAC,YAAY,IAAI,IAAI;YACxF,eAAe,EACZ,MAAM,CAAC,iBAA6C,CAAC,eAAe,IAAI,KAAK;SACjF;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAA;IAE3E,0BAA0B;IAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,OAAO;QACjD,CAAC,CAAC;YACE,OAAO,EAAE,IAAa;YACtB,eAAe,EAAG,MAAM,CAAC,aAAqC,CAAC,eAAe,IAAI,IAAI;SACvF;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,eAAe,EAAE,IAAI,EAAE,CAAA;IAEtD,mBAAmB;IACnB,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,SAAS;QACzD,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI;KAC7C,CAAA;IAED,0BAA0B;IAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,EAAE;QAC7C,OAAO;QACP,aAAa;QACb,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;QAC3C,SAAS,EACP,MAAM,CAAC,SAAS;YAChB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBACxB,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;YAC9B,CAAC,CAAC;QACJ,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;KAClD,CAAA;AACH,CAAC;AAGD,cAAc,YAAY,CAAA"}
@@ -0,0 +1,25 @@
1
+ import type { Plugin } from '@opensaas/stack-core';
2
+ import type { AuthConfig } from './types.js';
3
+ /**
4
+ * Auth plugin for OpenSaas Stack
5
+ * Provides Better-auth integration with automatic list generation and session management
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { config } from '@opensaas/stack-core'
10
+ * import { authPlugin } from '@opensaas/stack-auth'
11
+ *
12
+ * export default config({
13
+ * plugins: [
14
+ * authPlugin({
15
+ * emailAndPassword: { enabled: true },
16
+ * sessionFields: ['userId', 'email', 'name', 'role']
17
+ * })
18
+ * ],
19
+ * db: { provider: 'sqlite', url: 'file:./dev.db' },
20
+ * lists: { Post: list({...}) }
21
+ * })
22
+ * ```
23
+ */
24
+ export declare function authPlugin(config: AuthConfig): Plugin;
25
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAKlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0DrD"}
@@ -0,0 +1,80 @@
1
+ import { normalizeAuthConfig } from './index.js';
2
+ import { getAuthLists } from '../lists/index.js';
3
+ import { convertBetterAuthSchema } from '../server/schema-converter.js';
4
+ /**
5
+ * Auth plugin for OpenSaas Stack
6
+ * Provides Better-auth integration with automatic list generation and session management
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { config } from '@opensaas/stack-core'
11
+ * import { authPlugin } from '@opensaas/stack-auth'
12
+ *
13
+ * export default config({
14
+ * plugins: [
15
+ * authPlugin({
16
+ * emailAndPassword: { enabled: true },
17
+ * sessionFields: ['userId', 'email', 'name', 'role']
18
+ * })
19
+ * ],
20
+ * db: { provider: 'sqlite', url: 'file:./dev.db' },
21
+ * lists: { Post: list({...}) }
22
+ * })
23
+ * ```
24
+ */
25
+ export function authPlugin(config) {
26
+ const normalized = normalizeAuthConfig(config);
27
+ return {
28
+ name: 'auth',
29
+ version: '0.1.0',
30
+ init: async (context) => {
31
+ // Get auth lists from base Better Auth schema
32
+ const authLists = getAuthLists(normalized.extendUserList);
33
+ // Extract additional lists from Better Auth plugins
34
+ for (const plugin of normalized.betterAuthPlugins) {
35
+ if (plugin && typeof plugin === 'object' && 'schema' in plugin) {
36
+ // Plugin has schema property - convert to OpenSaaS lists
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Plugin schema types are dynamic
38
+ const pluginSchema = plugin.schema;
39
+ const pluginLists = convertBetterAuthSchema(pluginSchema);
40
+ // Add or extend lists from plugin
41
+ for (const [listName, listConfig] of Object.entries(pluginLists)) {
42
+ if (context.config.lists[listName]) {
43
+ // List exists, extend it
44
+ context.extendList(listName, {
45
+ fields: listConfig.fields,
46
+ hooks: listConfig.hooks,
47
+ access: listConfig.access,
48
+ mcp: listConfig.mcp,
49
+ });
50
+ }
51
+ else {
52
+ // List doesn't exist, add it
53
+ context.addList(listName, listConfig);
54
+ }
55
+ }
56
+ }
57
+ }
58
+ // Add all auth lists
59
+ for (const [listName, listConfig] of Object.entries(authLists)) {
60
+ if (context.config.lists[listName]) {
61
+ // If user defined a User list, extend it with auth fields
62
+ context.extendList(listName, {
63
+ fields: listConfig.fields,
64
+ hooks: listConfig.hooks,
65
+ access: listConfig.access,
66
+ mcp: listConfig.mcp,
67
+ });
68
+ }
69
+ else {
70
+ // Otherwise, add the auth list
71
+ context.addList(listName, listConfig);
72
+ }
73
+ }
74
+ // Store auth config for runtime access
75
+ // Access at runtime via: config._pluginData.auth
76
+ context.setPluginData('auth', normalized);
77
+ },
78
+ };
79
+ }
80
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAEA,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,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtB,8CAA8C;YAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;YAEzD,oDAAoD;YACpD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAClD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;oBAC/D,yDAAyD;oBACzD,iGAAiG;oBACjG,MAAM,YAAY,GAAG,MAAM,CAAC,MAAa,CAAA;oBACzC,MAAM,WAAW,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAA;oBAEzD,kCAAkC;oBAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBACjE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACnC,yBAAyB;4BACzB,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;gCAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;gCACzB,KAAK,EAAE,UAAU,CAAC,KAAK;gCACvB,MAAM,EAAE,UAAU,CAAC,MAAM;gCACzB,GAAG,EAAE,UAAU,CAAC,GAAG;6BACpB,CAAC,CAAA;wBACJ,CAAC;6BAAM,CAAC;4BACN,6BAA6B;4BAC7B,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,0DAA0D;oBAC1D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,GAAG,EAAE,UAAU,CAAC,GAAG;qBACpB,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,+BAA+B;oBAC/B,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,iDAAiD;YACjD,OAAO,CAAC,aAAa,CAAuB,MAAM,EAAE,UAAU,CAAC,CAAA;QACjE,CAAC;KACF,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,27 +7,28 @@
7
7
  * - Auto-generated User, Session, Account, Verification lists
8
8
  * - Session integration with OpenSaas access control
9
9
  * - Pre-built auth UI components (SignIn, SignUp, ForgotPassword)
10
- * - Easy configuration with withAuth() wrapper
10
+ * - Easy configuration with authPlugin()
11
11
  *
12
12
  * @example
13
13
  * ```typescript
14
14
  * // opensaas.config.ts
15
15
  * import { config } from '@opensaas/stack-core'
16
- * import { withAuth, authConfig } from '@opensaas/stack-auth'
16
+ * import { authPlugin } from '@opensaas/stack-auth'
17
17
  *
18
- * export default withAuth(
19
- * config({
20
- * db: { provider: 'sqlite', url: 'file:./dev.db' },
21
- * lists: { ... }
22
- * }),
23
- * authConfig({
24
- * emailAndPassword: { enabled: true },
25
- * emailVerification: { enabled: true },
26
- * })
27
- * )
18
+ * export default config({
19
+ * plugins: [
20
+ * authPlugin({
21
+ * emailAndPassword: { enabled: true },
22
+ * emailVerification: { enabled: true },
23
+ * })
24
+ * ],
25
+ * db: { provider: 'sqlite', url: 'file:./dev.db' },
26
+ * lists: { ... }
27
+ * })
28
28
  * ```
29
29
  */
30
- export { withAuth, authConfig, normalizeAuthConfig } from './config/index.js';
30
+ export { normalizeAuthConfig } from './config/index.js';
31
+ export { authPlugin } from './config/plugin.js';
31
32
  export type { AuthConfig, NormalizedAuthConfig } from './config/index.js';
32
33
  export type * from './config/types.js';
33
34
  export { getAuthLists, createUserList, createSessionList, createAccountList, createVerificationList, } from './lists/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC7E,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACzE,mBAAmB,mBAAmB,CAAA;AAGtC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACzE,mBAAmB,mBAAmB,CAAA;AAGtC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -7,28 +7,29 @@
7
7
  * - Auto-generated User, Session, Account, Verification lists
8
8
  * - Session integration with OpenSaas access control
9
9
  * - Pre-built auth UI components (SignIn, SignUp, ForgotPassword)
10
- * - Easy configuration with withAuth() wrapper
10
+ * - Easy configuration with authPlugin()
11
11
  *
12
12
  * @example
13
13
  * ```typescript
14
14
  * // opensaas.config.ts
15
15
  * import { config } from '@opensaas/stack-core'
16
- * import { withAuth, authConfig } from '@opensaas/stack-auth'
16
+ * import { authPlugin } from '@opensaas/stack-auth'
17
17
  *
18
- * export default withAuth(
19
- * config({
20
- * db: { provider: 'sqlite', url: 'file:./dev.db' },
21
- * lists: { ... }
22
- * }),
23
- * authConfig({
24
- * emailAndPassword: { enabled: true },
25
- * emailVerification: { enabled: true },
26
- * })
27
- * )
18
+ * export default config({
19
+ * plugins: [
20
+ * authPlugin({
21
+ * emailAndPassword: { enabled: true },
22
+ * emailVerification: { enabled: true },
23
+ * })
24
+ * ],
25
+ * db: { provider: 'sqlite', url: 'file:./dev.db' },
26
+ * lists: { ... }
27
+ * })
28
28
  * ```
29
29
  */
30
30
  // Config exports
31
- export { withAuth, authConfig, normalizeAuthConfig } from './config/index.js';
31
+ export { normalizeAuthConfig } from './config/index.js';
32
+ export { authPlugin } from './config/plugin.js';
32
33
  // List generators (for advanced use cases)
33
34
  export { getAuthLists, createUserList, createSessionList, createAccountList, createVerificationList, } from './lists/index.js';
34
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAI7E,2CAA2C;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAI/C,2CAA2C;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA"}
@@ -59,7 +59,7 @@ export declare function withMcpAuth(auth: BetterAuthInstance, handler: (req: Req
59
59
  * @example
60
60
  * ```typescript
61
61
  * const mcpSession = await auth.api.getMcpSession({ headers: req.headers })
62
- * const context = getContext(mcpSessionToContextSession(mcpSession))
62
+ * const context = await getContext(mcpSessionToContextSession(mcpSession))
63
63
  * const posts = await context.db.post.findMany()
64
64
  * ```
65
65
  */
@@ -72,7 +72,7 @@ export function withMcpAuth(auth, handler) {
72
72
  * @example
73
73
  * ```typescript
74
74
  * const mcpSession = await auth.api.getMcpSession({ headers: req.headers })
75
- * const context = getContext(mcpSessionToContextSession(mcpSession))
75
+ * const context = await getContext(mcpSessionToContextSession(mcpSession))
76
76
  * const posts = await context.db.post.findMany()
77
77
  * ```
78
78
  */
@@ -1,7 +1,6 @@
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
- import type { NormalizedAuthConfig } from '../config/types.js';
5
4
  /**
6
5
  * Create a better-auth instance from OpenSaas config
7
6
  * This should be called once at app startup
@@ -11,13 +10,12 @@ import type { NormalizedAuthConfig } from '../config/types.js';
11
10
  * // lib/auth.ts
12
11
  * import { createAuth } from '@opensaas/stack-auth/server'
13
12
  * import config from '../opensaas.config'
13
+ * import { rawOpensaasContext } from '@/.opensaas/context'
14
14
  *
15
- * export const auth = createAuth(config)
15
+ * export const auth = createAuth(config, rawOpensaasContext)
16
16
  * ```
17
17
  */
18
- export declare function createAuth(opensaasConfig: OpenSaasConfig & {
19
- __authConfig?: NormalizedAuthConfig;
20
- }, context: AccessContext): import("better-auth").Auth<BetterAuthOptions>;
18
+ export declare function createAuth(opensaasConfig: OpenSaasConfig | Promise<OpenSaasConfig>, context: AccessContext | Promise<AccessContext>): import("better-auth").Auth<BetterAuthOptions>;
21
19
  /**
22
20
  * Get session from better-auth and transform it to OpenSaas session format
23
21
  * This is used internally by the generated context
@@ -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,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"}
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;AAezF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,EACxD,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,iDA6FhD;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"}
@@ -17,49 +17,85 @@ function getDatabaseConfig(dbConfig, context) {
17
17
  * // lib/auth.ts
18
18
  * import { createAuth } from '@opensaas/stack-auth/server'
19
19
  * import config from '../opensaas.config'
20
+ * import { rawOpensaasContext } from '@/.opensaas/context'
20
21
  *
21
- * export const auth = createAuth(config)
22
+ * export const auth = createAuth(config, rawOpensaasContext)
22
23
  * ```
23
24
  */
24
25
  export function createAuth(opensaasConfig, context) {
25
- // Extract auth config (added by withAuth)
26
- const authConfig = opensaasConfig.__authConfig;
27
- if (!authConfig) {
28
- throw new Error('Auth config not found. Make sure to wrap your config with withAuth() in opensaas.config.ts');
26
+ // Resolve config and context asynchronously
27
+ const configPromise = Promise.resolve(opensaasConfig);
28
+ const contextPromise = Promise.resolve(context);
29
+ // Create auth instance lazily when needed
30
+ let authInstance = null;
31
+ let authPromise = null;
32
+ async function getAuthInstance() {
33
+ if (authInstance)
34
+ return authInstance;
35
+ if (!authPromise) {
36
+ authPromise = (async () => {
37
+ const resolvedConfig = await configPromise;
38
+ const resolvedContext = await contextPromise;
39
+ // Extract auth config from plugin data
40
+ const authConfig = resolvedConfig._pluginData?.auth;
41
+ if (!authConfig) {
42
+ throw new Error('Auth config not found. Make sure to use authPlugin() in your opensaas.config.ts');
43
+ }
44
+ // Build better-auth configuration
45
+ const betterAuthConfig = {
46
+ database: getDatabaseConfig(resolvedConfig.db, resolvedContext),
47
+ // Enable email and password if configured
48
+ emailAndPassword: authConfig.emailAndPassword.enabled
49
+ ? {
50
+ enabled: true,
51
+ requireEmailVerification: authConfig.emailVerification.enabled,
52
+ }
53
+ : undefined,
54
+ // Configure session
55
+ session: {
56
+ expiresIn: authConfig.session.expiresIn || 604800,
57
+ updateAge: authConfig.session.updateAge
58
+ ? (authConfig.session.expiresIn || 604800) / 10
59
+ : 0,
60
+ },
61
+ // Trust host (required for production)
62
+ trustedOrigins: process.env.BETTER_AUTH_TRUSTED_ORIGINS?.split(',') || [],
63
+ // Social providers
64
+ socialProviders: Object.entries(authConfig.socialProviders)
65
+ .filter(([_, config]) => config?.enabled !== false)
66
+ .reduce((acc, [provider, config]) => {
67
+ if (config) {
68
+ acc[provider] = {
69
+ clientId: config.clientId,
70
+ clientSecret: config.clientSecret,
71
+ };
72
+ }
73
+ return acc;
74
+ }, {}),
75
+ // Pass through any additional Better Auth plugins
76
+ plugins: authConfig.betterAuthPlugins || [],
77
+ };
78
+ authInstance = betterAuth(betterAuthConfig);
79
+ return authInstance;
80
+ })();
81
+ }
82
+ return authPromise;
29
83
  }
30
- // Build better-auth configuration
31
- const betterAuthConfig = {
32
- database: getDatabaseConfig(opensaasConfig.db, context),
33
- // Enable email and password if configured
34
- emailAndPassword: authConfig.emailAndPassword.enabled
35
- ? {
36
- enabled: true,
37
- requireEmailVerification: authConfig.emailVerification.enabled,
38
- }
39
- : undefined,
40
- // Configure session
41
- session: {
42
- expiresIn: authConfig.session.expiresIn || 604800,
43
- updateAge: authConfig.session.updateAge ? (authConfig.session.expiresIn || 604800) / 10 : 0,
84
+ // Return a proxy that lazily initializes the auth instance
85
+ return new Proxy({}, {
86
+ get(_, prop) {
87
+ return (...args) => {
88
+ return (async () => {
89
+ const instance = await getAuthInstance();
90
+ const value = instance[prop];
91
+ if (typeof value === 'function') {
92
+ return value.apply(instance, args);
93
+ }
94
+ return value;
95
+ })();
96
+ };
44
97
  },
45
- // Trust host (required for production)
46
- trustedOrigins: process.env.BETTER_AUTH_TRUSTED_ORIGINS?.split(',') || [],
47
- // Social providers
48
- socialProviders: Object.entries(authConfig.socialProviders)
49
- .filter(([_, config]) => config?.enabled !== false)
50
- .reduce((acc, [provider, config]) => {
51
- if (config) {
52
- acc[provider] = {
53
- clientId: config.clientId,
54
- clientSecret: config.clientSecret,
55
- };
56
- }
57
- return acc;
58
- }, {}),
59
- // Pass through any additional Better Auth plugins
60
- plugins: authConfig.betterAuthPlugins || [],
61
- };
62
- return betterAuth(betterAuthConfig);
98
+ });
63
99
  }
64
100
  /**
65
101
  * Get session from better-auth and transform it to OpenSaas session format
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
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;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CACxB,cAAwD,EACxD,OAA+C;IAE/C,4CAA4C;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACrD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE/C,0CAA0C;IAC1C,IAAI,YAAY,GAAyC,IAAI,CAAA;IAC7D,IAAI,WAAW,GAAkD,IAAI,CAAA;IAErE,KAAK,UAAU,eAAe;QAC5B,IAAI,YAAY;YAAE,OAAO,YAAY,CAAA;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;gBACxB,MAAM,cAAc,GAAG,MAAM,aAAa,CAAA;gBAC1C,MAAM,eAAe,GAAG,MAAM,cAAc,CAAA;gBAE5C,uCAAuC;gBACvC,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,IAAwC,CAAA;gBAEvF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAA;gBACH,CAAC;gBAED,kCAAkC;gBAClC,MAAM,gBAAgB,GAAsB;oBAC1C,QAAQ,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC;oBAE/D,0CAA0C;oBAC1C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,OAAO;wBACnD,CAAC,CAAC;4BACE,OAAO,EAAE,IAAI;4BACb,wBAAwB,EAAE,UAAU,CAAC,iBAAiB,CAAC,OAAO;yBAC/D;wBACH,CAAC,CAAC,SAAS;oBAEb,oBAAoB;oBACpB,OAAO,EAAE;wBACP,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM;wBACjD,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS;4BACrC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,EAAE;4BAC/C,CAAC,CAAC,CAAC;qBACN;oBAED,uCAAuC;oBACvC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;oBAEzE,mBAAmB;oBACnB,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;yBACxD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;yBAClD,MAAM,CACL,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;wBAC1B,IAAI,MAAM,EAAE,CAAC;4BACX,GAAG,CAAC,QAAQ,CAAC,GAAG;gCACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,YAAY,EAAE,MAAM,CAAC,YAAY;6BAClC,CAAA;wBACH,CAAC;wBACD,OAAO,GAAG,CAAA;oBACZ,CAAC,EACD,EAAgE,CACjE;oBAEH,kDAAkD;oBAClD,OAAO,EAAE,UAAU,CAAC,iBAAiB,IAAI,EAAE;iBAC5C,CAAA;gBAED,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBAC3C,OAAO,YAAY,CAAA;YACrB,CAAC,CAAC,EAAE,CAAA;QACN,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,2DAA2D;IAC3D,OAAO,IAAI,KAAK,CAAC,EAAmC,EAAE;QACpD,GAAG,CAAC,CAAC,EAAE,IAAI;YACT,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,OAAO,CAAC,KAAK,IAAI,EAAE;oBACjB,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;oBACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAA6B,CAAC,CAAA;oBACrD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;wBAChC,OAAQ,KAAyC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBACzE,CAAC;oBACD,OAAO,KAAK,CAAA;gBACd,CAAC,CAAC,EAAE,CAAA;YACN,CAAC,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAmC,EACnC,aAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACxC,OAAO,EAAE,IAAI,OAAO,EAAE;SACvB,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,6CAA6C;QAC7C,MAAM,MAAM,GAA4B,EAAE,CAAA;QAE1C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;YACjC,CAAC;iBAAM,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAkC,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensaas/stack-auth",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Better-auth integration for OpenSaas Stack",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,7 +52,7 @@
52
52
  "better-auth": "^1.3.29",
53
53
  "react": "^18.0.0 || ^19.0.0",
54
54
  "next": "^15.0.0 || ^16.0.0",
55
- "@opensaas/stack-core": "0.1.5"
55
+ "@opensaas/stack-core": "0.1.6"
56
56
  },
57
57
  "dependencies": {},
58
58
  "devDependencies": {
@@ -65,7 +65,7 @@
65
65
  "react": "^19.2.0",
66
66
  "typescript": "^5.9.3",
67
67
  "vitest": "^4.0.0",
68
- "@opensaas/stack-core": "0.1.5"
68
+ "@opensaas/stack-core": "0.1.6"
69
69
  },
70
70
  "scripts": {
71
71
  "build": "tsc",