@korajs/auth 1.0.0-beta.12 → 1.0.0-beta.14

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.
Files changed (101) hide show
  1. package/README.md +52 -47
  2. package/dist/{create-org-session-RsDj9cl4.d.cts → create-org-session-ChFdulEM.d.cts} +211 -17
  3. package/dist/{create-org-session-RsDj9cl4.d.ts → create-org-session-ChFdulEM.d.ts} +211 -17
  4. package/dist/index.cjs +645 -150
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.cts +27 -9
  7. package/dist/index.d.ts +27 -9
  8. package/dist/index.js +644 -150
  9. package/dist/index.js.map +1 -1
  10. package/dist/{operation-encryptor-DRmKNWpF.d.cts → operation-encryptor-DDdlb9bm.d.cts} +16 -0
  11. package/dist/{operation-encryptor-DRmKNWpF.d.ts → operation-encryptor-DDdlb9bm.d.ts} +16 -0
  12. package/dist/react.d.cts +2 -2
  13. package/dist/react.d.ts +2 -2
  14. package/dist/server.cjs +2880 -1667
  15. package/dist/server.cjs.map +1 -1
  16. package/dist/server.d.cts +810 -169
  17. package/dist/server.d.ts +810 -169
  18. package/dist/server.js +2848 -1646
  19. package/dist/server.js.map +1 -1
  20. package/dist/svelte.cjs +2 -2
  21. package/dist/svelte.cjs.map +1 -1
  22. package/dist/svelte.d.cts +2 -2
  23. package/dist/svelte.d.ts +2 -2
  24. package/dist/svelte.js +2 -2
  25. package/dist/svelte.js.map +1 -1
  26. package/dist/vue.d.cts +1 -1
  27. package/dist/vue.d.ts +1 -1
  28. package/package.json +7 -7
  29. package/src/admin/admin-api.ts +327 -0
  30. package/src/admin/audit-log.ts +324 -0
  31. package/src/admin/webhooks.ts +576 -0
  32. package/src/bindings/create-auth-session.ts +184 -0
  33. package/src/bindings/create-org-session.ts +130 -0
  34. package/src/client/auth-client.ts +1592 -0
  35. package/src/client/auth-sync.ts +213 -0
  36. package/src/client/device-session.ts +104 -0
  37. package/src/client/org-client.ts +399 -0
  38. package/src/client/quickstart.ts +108 -0
  39. package/src/client/storage.ts +94 -0
  40. package/src/device/device-identity.ts +330 -0
  41. package/src/device/device-store.ts +379 -0
  42. package/src/encryption/auto-lock.ts +170 -0
  43. package/src/encryption/database-encryption.ts +265 -0
  44. package/src/encryption/key-derivation.ts +149 -0
  45. package/src/encryption/operation-encryptor.ts +361 -0
  46. package/src/index.ts +132 -0
  47. package/src/mfa/totp.ts +826 -0
  48. package/src/org/org-routes.ts +758 -0
  49. package/src/org/org-store.ts +490 -0
  50. package/src/org/org-types.ts +230 -0
  51. package/src/passkey/passkey-client.ts +597 -0
  52. package/src/passkey/passkey-server.ts +779 -0
  53. package/src/postgres/ensure-schema.ts +65 -0
  54. package/src/provider/adapter.ts +246 -0
  55. package/src/provider/built-in/auth-routes.ts +1313 -0
  56. package/src/provider/built-in/email-verification.ts +303 -0
  57. package/src/provider/built-in/password-hash.ts +118 -0
  58. package/src/provider/built-in/password-reset.ts +416 -0
  59. package/src/provider/built-in/postgres-user-store.ts +365 -0
  60. package/src/provider/built-in/quickstart-server.ts +760 -0
  61. package/src/provider/built-in/sqlite-user-store.ts +335 -0
  62. package/src/provider/built-in/sync-scopes.ts +85 -0
  63. package/src/provider/built-in/user-store.ts +465 -0
  64. package/src/provider/external/clerk-adapter.ts +157 -0
  65. package/src/provider/external/external-jwt-provider.ts +491 -0
  66. package/src/provider/external/supabase-adapter.ts +163 -0
  67. package/src/provider/oauth/linked-identity-store.ts +108 -0
  68. package/src/provider/oauth/oauth-flow.ts +550 -0
  69. package/src/provider/oauth/oauth-types.ts +184 -0
  70. package/src/provider/oauth/postgres-oauth-store.ts +296 -0
  71. package/src/provider/oauth/sqlite-oauth-store.ts +285 -0
  72. package/src/rbac/rbac-engine.ts +323 -0
  73. package/src/rbac/rbac-types.ts +210 -0
  74. package/src/rbac/scope-resolver.ts +140 -0
  75. package/src/react/AuthProvider.tsx +97 -0
  76. package/src/react/OrgProvider.tsx +41 -0
  77. package/src/react/auth-context.ts +26 -0
  78. package/src/react/hooks.ts +110 -0
  79. package/src/react/org-hooks.ts +214 -0
  80. package/src/react.ts +26 -0
  81. package/src/server.ts +338 -0
  82. package/src/session/session.ts +401 -0
  83. package/src/svelte/auth-context.ts +50 -0
  84. package/src/svelte/org-context.ts +32 -0
  85. package/src/svelte/org-hooks.ts +201 -0
  86. package/src/svelte/use-auth.ts +115 -0
  87. package/src/svelte.ts +25 -0
  88. package/src/tokens/encrypted-token-store.ts +360 -0
  89. package/src/tokens/jwt.ts +236 -0
  90. package/src/tokens/postgres-token-revocation-store.ts +140 -0
  91. package/src/tokens/sqlite-token-revocation-store.ts +121 -0
  92. package/src/tokens/token-manager.ts +821 -0
  93. package/src/tokens/token-store.ts +192 -0
  94. package/src/types.ts +394 -0
  95. package/src/vue/auth-context.ts +10 -0
  96. package/src/vue/auth-provider-types.ts +5 -0
  97. package/src/vue/auth-provider.ts +76 -0
  98. package/src/vue/org-hooks.ts +193 -0
  99. package/src/vue/org-provider.ts +49 -0
  100. package/src/vue/use-auth.ts +139 -0
  101. package/src/vue.ts +10 -0
package/dist/svelte.cjs CHANGED
@@ -156,7 +156,7 @@ function createAuthSession(client) {
156
156
  }
157
157
 
158
158
  // src/svelte/auth-context.ts
159
- var authContextKey = /* @__PURE__ */ Symbol("korajs-auth-context");
159
+ var authContextKey = /* @__PURE__ */ Symbol.for("@korajs/auth:svelte-auth-context");
160
160
  function initAuthProvider(client) {
161
161
  const session = createAuthSession(client);
162
162
  const value = {
@@ -335,7 +335,7 @@ async function loadOrgMembers(client, orgId) {
335
335
  }
336
336
 
337
337
  // src/svelte/org-context.ts
338
- var orgContextKey = /* @__PURE__ */ Symbol("korajs-org-context");
338
+ var orgContextKey = /* @__PURE__ */ Symbol.for("@korajs/auth:svelte-org-context");
339
339
  function initOrgProvider(client) {
340
340
  const session = createOrgSession(client);
341
341
  const value = { client, session };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/svelte.ts","../src/svelte/auth-context.ts","../src/bindings/create-auth-session.ts","../src/svelte/use-auth.ts","../src/svelte/org-context.ts","../src/bindings/create-org-session.ts","../src/svelte/org-hooks.ts"],"sourcesContent":["export {\n\tdestroyAuthProvider,\n\tgetAuthContext,\n\tinitAuthProvider,\n} from './svelte/auth-context'\nexport type { AuthContextValue } from './svelte/auth-context'\nexport {\n\tcreateAuthStore,\n\tcreateAuthStatusStore,\n\tcreateCurrentUserStore,\n\tuseAuth,\n\tuseAuthStatus,\n\tuseCurrentUser,\n} from './svelte/use-auth'\nexport type { UseAuthResult } from './svelte/use-auth'\nexport { destroyOrgProvider, getOrgContext, initOrgProvider } from './svelte/org-context'\nexport type { OrgContextValue } from './svelte/org-context'\nexport {\n\tcreatePermissionStore,\n\tuseOrg,\n\tuseOrgMembers,\n\tusePermission,\n\tcheckOrgPermission,\n} from './svelte/org-hooks'\nexport type { UseOrgResult, UseOrgMembersResult } from './svelte/org-hooks'\n","import { getContext, setContext } from 'svelte'\nimport { type AuthSession, createAuthSession } from '../bindings/create-auth-session'\nimport type { AuthClient, AuthState } from '../client/auth-client'\n\nconst authContextKey = Symbol('korajs-auth-context')\n\nexport interface AuthContextValue {\n\tclient: AuthClient\n\tsession: AuthSession\n\tget state(): AuthState\n\tget isLoading(): boolean\n}\n\n/**\n * Initialize auth context inside a Svelte component (root layout).\n * Must be called during component initialization before children render.\n */\nexport function initAuthProvider(client: AuthClient): AuthContextValue {\n\tconst session = createAuthSession(client)\n\n\tconst value: AuthContextValue = {\n\t\tclient,\n\t\tsession,\n\t\tget state() {\n\t\t\treturn session.getSnapshot().state\n\t\t},\n\t\tget isLoading() {\n\t\t\treturn session.getSnapshot().isLoading\n\t\t},\n\t}\n\n\tsetContext(authContextKey, value)\n\treturn value\n}\n\nexport function getAuthContext(): AuthContextValue {\n\tconst context = getContext<AuthContextValue | undefined>(authContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Auth context missing. Call initAuthProvider(client) in your root layout component.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyAuthProvider(context: AuthContextValue): void {\n\tcontext.session.destroy()\n}\n","import type {\n\tAuthClient,\n\tAuthState,\n\tAuthUser,\n\tLinkedOAuthAccount,\n\tOAuthAuthorizationOptions,\n\tOAuthAuthorizationResult,\n\tOAuthCallbackParams,\n} from '../client/auth-client'\n\nexport interface AuthSessionSnapshot {\n\tstate: AuthState\n\tuser: AuthUser | null\n\tisAuthenticated: boolean\n\tisLoading: boolean\n\tinitError: Error | null\n\terror: string | null\n}\n\nexport interface AuthSession {\n\treadonly client: AuthClient\n\tgetSnapshot(): AuthSessionSnapshot\n\tsubscribe(listener: () => void): () => void\n\tsignUp(params: {\n\t\temail: string\n\t\tpassword: string\n\t\tname?: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}): Promise<void>\n\tsignIn(params: {\n\t\temail: string\n\t\tpassword: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}): Promise<void>\n\tsignInWithOAuth(\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t): Promise<OAuthAuthorizationResult>\n\tcompleteOAuthSignIn(provider: string, params: OAuthCallbackParams): Promise<void>\n\tgetOAuthAuthorizationUrl(\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t): Promise<OAuthAuthorizationResult>\n\tlinkOAuth(provider: string, params: OAuthCallbackParams): Promise<LinkedOAuthAccount | null>\n\tlistLinkedAccounts(): Promise<LinkedOAuthAccount[]>\n\tunlinkOAuth(provider: string): Promise<void>\n\tsignOut(): Promise<void>\n\tdestroy(): void\n}\n\n/**\n * Framework-agnostic auth session: initialization, reactive snapshot, and client methods.\n */\nexport function createAuthSession(client: AuthClient): AuthSession {\n\tlet state: AuthState = client.state\n\tlet isLoading = true\n\tlet initError: Error | null = null\n\tlet lastError: string | null = null\n\n\tconst listeners = new Set<() => void>()\n\tlet snapshot = buildSnapshot()\n\n\tconst refreshSnapshot = (): void => {\n\t\tsnapshot = buildSnapshot()\n\t}\n\n\tconst notify = (): void => {\n\t\trefreshSnapshot()\n\t\tfor (const listener of listeners) {\n\t\t\tlistener()\n\t\t}\n\t}\n\n\tfunction buildSnapshot(): AuthSessionSnapshot {\n\t\treturn {\n\t\t\tstate,\n\t\t\tuser: client.currentUser,\n\t\t\tisAuthenticated: state === 'authenticated',\n\t\t\tisLoading,\n\t\t\tinitError,\n\t\t\terror: lastError,\n\t\t}\n\t}\n\n\tconst captureError = (error: unknown): void => {\n\t\tlastError = error instanceof Error ? error.message : String(error)\n\t\tnotify()\n\t}\n\n\tconst run = async (action: () => Promise<void>): Promise<void> => {\n\t\tlastError = null\n\t\ttry {\n\t\t\tawait action()\n\t\t} catch (error) {\n\t\t\tcaptureError(error)\n\t\t}\n\t}\n\n\tconst runWithResult = async <T>(action: () => Promise<T>): Promise<T | null> => {\n\t\tlastError = null\n\t\ttry {\n\t\t\treturn await action()\n\t\t} catch (error) {\n\t\t\tcaptureError(error)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tconst unsubscribeAuth = client.onAuthChange((nextState) => {\n\t\tstate = nextState\n\t\tnotify()\n\t})\n\n\tvoid client\n\t\t.initialize()\n\t\t.then(() => {\n\t\t\tstate = client.state\n\t\t\tisLoading = false\n\t\t\tnotify()\n\t\t})\n\t\t.catch((error: unknown) => {\n\t\t\tinitError = error instanceof Error ? error : new Error(String(error))\n\t\t\tisLoading = false\n\t\t\tnotify()\n\t\t})\n\n\treturn {\n\t\tclient,\n\t\tgetSnapshot: () => snapshot,\n\t\tsubscribe(listener) {\n\t\t\tlisteners.add(listener)\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener)\n\t\t\t}\n\t\t},\n\t\tsignUp: (params) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.signUp(params)\n\t\t\t}),\n\t\tsignIn: (params) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.signIn(params)\n\t\t\t}),\n\t\tsignInWithOAuth: async (provider, options) => {\n\t\t\tlastError = null\n\t\t\ttry {\n\t\t\t\treturn await client.signInWithOAuth(provider, options)\n\t\t\t} catch (error) {\n\t\t\t\tcaptureError(error)\n\t\t\t\tthrow error instanceof Error ? error : new Error(String(error))\n\t\t\t}\n\t\t},\n\t\tcompleteOAuthSignIn: (provider, params) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.completeOAuthSignIn(provider, params)\n\t\t\t}),\n\t\tgetOAuthAuthorizationUrl: async (provider, options) => {\n\t\t\tlastError = null\n\t\t\ttry {\n\t\t\t\treturn await client.getOAuthAuthorizationUrl(provider, options)\n\t\t\t} catch (error) {\n\t\t\t\tcaptureError(error)\n\t\t\t\tthrow error instanceof Error ? error : new Error(String(error))\n\t\t\t}\n\t\t},\n\t\tlinkOAuth: (provider, params) => runWithResult(async () => client.linkOAuth(provider, params)),\n\t\tlistLinkedAccounts: () =>\n\t\t\trunWithResult(async () => client.listLinkedAccounts()).then((value) => value ?? []),\n\t\tunlinkOAuth: (provider) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.unlinkOAuth(provider)\n\t\t\t}),\n\t\tsignOut: () =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.signOut()\n\t\t\t}),\n\t\tdestroy() {\n\t\t\tunsubscribeAuth()\n\t\t\tlisteners.clear()\n\t\t},\n\t}\n}\n","import { type Readable, readable } from 'svelte/store'\nimport type { AuthSessionSnapshot } from '../bindings/create-auth-session'\nimport type {\n\tAuthUser,\n\tLinkedOAuthAccount,\n\tOAuthAuthorizationOptions,\n\tOAuthAuthorizationResult,\n\tOAuthCallbackParams,\n} from '../client/auth-client'\nimport { getAuthContext } from './auth-context'\n\nexport interface UseAuthResult extends AuthSessionSnapshot {\n\tsignUp: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tname?: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignIn: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignInWithOAuth: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tcompleteOAuthSignIn: (provider: string, params: OAuthCallbackParams) => Promise<void>\n\tgetOAuthAuthorizationUrl: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tlinkOAuth: (provider: string, params: OAuthCallbackParams) => Promise<LinkedOAuthAccount | null>\n\tlistLinkedAccounts: () => Promise<LinkedOAuthAccount[]>\n\tunlinkOAuth: (provider: string) => Promise<void>\n\tsignOut: () => Promise<void>\n}\n\nexport function createAuthStore(): Readable<UseAuthResult> {\n\tconst { session } = getAuthContext()\n\n\treturn readable<UseAuthResult>(buildResult(session), (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(buildResult(session))\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createAuthStore */\nexport const useAuth = createAuthStore\n\nfunction buildResult(session: ReturnType<typeof getAuthContext>['session']): UseAuthResult {\n\tconst snapshot = session.getSnapshot()\n\treturn {\n\t\t...snapshot,\n\t\tsignUp: (params) => session.signUp(params),\n\t\tsignIn: (params) => session.signIn(params),\n\t\tsignInWithOAuth: (provider, options) => session.signInWithOAuth(provider, options),\n\t\tcompleteOAuthSignIn: (provider, params) => session.completeOAuthSignIn(provider, params),\n\t\tgetOAuthAuthorizationUrl: (provider, options) =>\n\t\t\tsession.getOAuthAuthorizationUrl(provider, options),\n\t\tlinkOAuth: (provider, params) => session.linkOAuth(provider, params),\n\t\tlistLinkedAccounts: () => session.listLinkedAccounts(),\n\t\tunlinkOAuth: (provider) => session.unlinkOAuth(provider),\n\t\tsignOut: () => session.signOut(),\n\t}\n}\n\nexport function createCurrentUserStore(): Readable<AuthUser | null> {\n\tconst { session } = getAuthContext()\n\treturn readable<AuthUser | null>(session.getSnapshot().user, (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(session.getSnapshot().user)\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createCurrentUserStore */\nexport const useCurrentUser = createCurrentUserStore\n\nexport function createAuthStatusStore(): Readable<{\n\tstate: AuthSessionSnapshot['state']\n\tisAuthenticated: boolean\n\tisLoading: boolean\n}> {\n\tconst { session } = getAuthContext()\n\treturn readable(\n\t\t{\n\t\t\tstate: session.getSnapshot().state,\n\t\t\tisAuthenticated: session.getSnapshot().isAuthenticated,\n\t\t\tisLoading: session.getSnapshot().isLoading,\n\t\t},\n\t\t(set) => {\n\t\t\tconst sync = (): void => {\n\t\t\t\tconst snapshot = session.getSnapshot()\n\t\t\t\tset({\n\t\t\t\t\tstate: snapshot.state,\n\t\t\t\t\tisAuthenticated: snapshot.isAuthenticated,\n\t\t\t\t\tisLoading: snapshot.isLoading,\n\t\t\t\t})\n\t\t\t}\n\t\t\tsync()\n\t\t\treturn session.subscribe(sync)\n\t\t},\n\t)\n}\n\n/** @alias createAuthStatusStore */\nexport const useAuthStatus = createAuthStatusStore\n","import { getContext, setContext } from 'svelte'\nimport { type OrgSession, createOrgSession } from '../bindings/create-org-session'\nimport type { OrgClient } from '../client/org-client'\n\nconst orgContextKey = Symbol('korajs-org-context')\n\nexport interface OrgContextValue {\n\tclient: OrgClient\n\tsession: OrgSession\n}\n\nexport function initOrgProvider(client: OrgClient): OrgContextValue {\n\tconst session = createOrgSession(client)\n\tconst value: OrgContextValue = { client, session }\n\tsetContext(orgContextKey, value)\n\treturn value\n}\n\nexport function getOrgContext(): OrgContextValue {\n\tconst context = getContext<OrgContextValue | undefined>(orgContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Org context missing. Wrap your app with <OrgProvider client={orgClient}> from @korajs/auth/svelte.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyOrgProvider(context: OrgContextValue): void {\n\tcontext.session.destroy()\n}\n","import type {\n\tClientInvitation,\n\tClientMembership,\n\tClientOrganization,\n\tOrgClient,\n} from '../client/org-client'\n\nexport interface OrgSnapshot {\n\torgId: string | null\n\torg: ClientOrganization | null\n\trole: string | null\n}\n\nexport interface OrgSession {\n\treadonly client: OrgClient\n\tgetSnapshot(): OrgSnapshot\n\tsubscribe(listener: () => void): () => void\n\tcheckPermission(requiredRole: string): boolean\n\tdestroy(): void\n}\n\nconst ROLE_LEVELS: Record<string, number> = {\n\tviewer: 10,\n\tbilling: 15,\n\tmember: 20,\n\tadmin: 30,\n\towner: 40,\n}\n\nexport function checkOrgPermission(currentRole: string | null, requiredRole: string): boolean {\n\tif (!currentRole) return false\n\tconst currentLevel = ROLE_LEVELS[currentRole] ?? 0\n\tconst requiredLevel = ROLE_LEVELS[requiredRole] ?? 0\n\treturn currentLevel >= requiredLevel\n}\n\n/**\n * Framework-agnostic org session with reactive snapshot subscription.\n */\nexport function createOrgSession(client: OrgClient): OrgSession {\n\tlet snapshot = buildSnapshot(client)\n\tconst listeners = new Set<() => void>()\n\n\tconst notify = (): void => {\n\t\tsnapshot = buildSnapshot(client)\n\t\tfor (const listener of listeners) {\n\t\t\tlistener()\n\t\t}\n\t}\n\n\tconst unsubscribeOrgChange = client.onOrgChange(notify)\n\n\treturn {\n\t\tclient,\n\t\tgetSnapshot: () => snapshot,\n\t\tsubscribe(listener: () => void): () => void {\n\t\t\tlisteners.add(listener)\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener)\n\t\t\t}\n\t\t},\n\t\tcheckPermission(requiredRole: string): boolean {\n\t\t\treturn checkOrgPermission(snapshot.role, requiredRole)\n\t\t},\n\t\tdestroy(): void {\n\t\t\tunsubscribeOrgChange()\n\t\t\tlisteners.clear()\n\t\t},\n\t}\n}\n\nfunction buildSnapshot(client: OrgClient): OrgSnapshot {\n\treturn {\n\t\torgId: client.activeOrgId,\n\t\torg: client.activeOrg,\n\t\trole: client.activeRole,\n\t}\n}\n\nexport interface UseOrgMembersActions {\n\trefresh: () => Promise<void>\n\tinvite: (email: string, role: string) => Promise<ClientInvitation>\n\tremoveMember: (userId: string) => Promise<void>\n\tupdateRole: (userId: string, role: string) => Promise<void>\n}\n\n/**\n * Shared org member management actions (loading state remains framework-specific).\n */\nexport function createOrgMembersActions(\n\tclient: OrgClient,\n\torgId: string,\n\tonError: (message: string) => void,\n): UseOrgMembersActions {\n\treturn {\n\t\tasync refresh(): Promise<void> {\n\t\t\tawait client.listMembers(orgId)\n\t\t},\n\t\tasync invite(email: string, role: string): Promise<ClientInvitation> {\n\t\t\ttry {\n\t\t\t\treturn await client.inviteMember(orgId, { email, role })\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error)\n\t\t\t\tonError(message)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\t\tasync removeMember(userId: string): Promise<void> {\n\t\t\ttry {\n\t\t\t\tawait client.removeMember(orgId, userId)\n\t\t\t} catch (error) {\n\t\t\t\tonError(error instanceof Error ? error.message : String(error))\n\t\t\t}\n\t\t},\n\t\tasync updateRole(userId: string, role: string): Promise<void> {\n\t\t\ttry {\n\t\t\t\tawait client.updateMemberRole(orgId, userId, role)\n\t\t\t} catch (error) {\n\t\t\t\tonError(error instanceof Error ? error.message : String(error))\n\t\t\t}\n\t\t},\n\t}\n}\n\nexport async function loadOrgMembers(\n\tclient: OrgClient,\n\torgId: string,\n): Promise<ClientMembership[]> {\n\treturn client.listMembers(orgId)\n}\n","import { type Readable, derived, get, readable, writable } from 'svelte/store'\nimport {\n\tcheckOrgPermission,\n\tcreateOrgMembersActions,\n\tloadOrgMembers,\n} from '../bindings/create-org-session'\nimport type { ClientInvitation, ClientMembership, ClientOrganization } from '../client/org-client'\nimport { getOrgContext } from './org-context'\n\nexport interface UseOrgResult {\n\tsubscribe: Readable<{\n\t\torg: ClientOrganization | null\n\t\trole: string | null\n\t\torgId: string | null\n\t\terror: string | null\n\t}>['subscribe']\n\tget org(): ClientOrganization | null\n\tget role(): string | null\n\tget orgId(): string | null\n\tswitchOrg: (orgId: string) => Promise<void>\n\tcreateOrg: (params: { name: string; slug?: string }) => Promise<ClientOrganization>\n\tleaveOrg: () => Promise<void>\n\tclearOrg: () => void\n\tlistOrgs: () => Promise<ClientOrganization[]>\n}\n\nexport interface UseOrgMembersResult {\n\tsubscribe: Readable<{\n\t\tmembers: ClientMembership[]\n\t\tisLoading: boolean\n\t\terror: string | null\n\t}>['subscribe']\n\trefresh: () => Promise<void>\n\tinvite: (email: string, role: string) => Promise<ClientInvitation>\n\tremoveMember: (userId: string) => Promise<void>\n\tupdateRole: (userId: string, role: string) => Promise<void>\n}\n\nfunction createOrgSnapshotStore(): Readable<{\n\torg: ClientOrganization | null\n\trole: string | null\n\torgId: string | null\n}> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.getSnapshot(), (set) => {\n\t\tset(session.getSnapshot())\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.getSnapshot())\n\t\t})\n\t})\n}\n\nexport function useOrg(): UseOrgResult {\n\tconst { client, session } = getOrgContext()\n\tconst snapshotStore = createOrgSnapshotStore()\n\tconst error = writable<string | null>(null)\n\n\tconst store = derived([snapshotStore, error], ([snapshot, errorValue]) => ({\n\t\t...snapshot,\n\t\terror: errorValue,\n\t}))\n\n\tconst switchOrg = async (orgId: string): Promise<void> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.switchOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst createOrg = async (params: {\n\t\tname: string\n\t\tslug?: string\n\t}): Promise<ClientOrganization> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\treturn await client.createOrg(params)\n\t\t} catch (err) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err)\n\t\t\terror.set(message)\n\t\t\tthrow err\n\t\t}\n\t}\n\n\tconst leaveOrg = async (): Promise<void> => {\n\t\tconst orgId = get(snapshotStore).orgId\n\t\tif (!orgId) return\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.leaveOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst clearOrg = (): void => {\n\t\tclient.clearActiveOrg()\n\t}\n\n\tconst listOrgs = async (): Promise<ClientOrganization[]> => {\n\t\ttry {\n\t\t\treturn await client.listOrgs()\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t\treturn []\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\tget org() {\n\t\t\treturn get(snapshotStore).org\n\t\t},\n\t\tget role() {\n\t\t\treturn get(snapshotStore).role\n\t\t},\n\t\tget orgId() {\n\t\t\treturn get(snapshotStore).orgId\n\t\t},\n\t\tswitchOrg,\n\t\tcreateOrg,\n\t\tleaveOrg,\n\t\tclearOrg,\n\t\tlistOrgs,\n\t}\n}\n\nexport function useOrgMembers(orgId: string): UseOrgMembersResult {\n\tconst { client } = getOrgContext()\n\tconst members = writable<ClientMembership[]>([])\n\tconst isLoading = writable(true)\n\tconst error = writable<string | null>(null)\n\n\tconst refresh = async (targetOrgId: string): Promise<void> => {\n\t\tisLoading.set(true)\n\t\terror.set(null)\n\t\ttry {\n\t\t\tmembers.set(await loadOrgMembers(client, targetOrgId))\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t} finally {\n\t\t\tisLoading.set(false)\n\t\t}\n\t}\n\n\t$effect(() => {\n\t\tvoid refresh(orgId)\n\t})\n\n\tconst actions = createOrgMembersActions(client, orgId, (message) => {\n\t\terror.set(message)\n\t})\n\n\tconst invite = async (email: string, role: string): Promise<ClientInvitation> => {\n\t\tconst result = await actions.invite(email, role)\n\t\tawait refresh(orgId)\n\t\treturn result\n\t}\n\n\tconst removeMember = async (userId: string): Promise<void> => {\n\t\tawait actions.removeMember(userId)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst updateRole = async (userId: string, role: string): Promise<void> => {\n\t\tawait actions.updateRole(userId, role)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst store = derived([members, isLoading, error], ([memberList, loading, errorValue]) => ({\n\t\tmembers: memberList,\n\t\tisLoading: loading,\n\t\terror: errorValue,\n\t}))\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\trefresh: () => refresh(orgId),\n\t\tinvite,\n\t\tremoveMember,\n\t\tupdateRole,\n\t}\n}\n\nexport function createPermissionStore(requiredRole: string): Readable<boolean> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.checkPermission(requiredRole), (set) => {\n\t\tset(session.checkPermission(requiredRole))\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.checkPermission(requiredRole))\n\t\t})\n\t})\n}\n\n/** Alias for {@link createPermissionStore}. */\nexport const usePermission = createPermissionStore\n\nexport { checkOrgPermission }\n"],"mappings":"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","names":["buildSnapshot","import_svelte","import_store"]}
1
+ {"version":3,"sources":["../src/svelte.ts","../src/svelte/auth-context.ts","../src/bindings/create-auth-session.ts","../src/svelte/use-auth.ts","../src/svelte/org-context.ts","../src/bindings/create-org-session.ts","../src/svelte/org-hooks.ts"],"sourcesContent":["export {\n\tdestroyAuthProvider,\n\tgetAuthContext,\n\tinitAuthProvider,\n} from './svelte/auth-context'\nexport type { AuthContextValue } from './svelte/auth-context'\nexport {\n\tcreateAuthStore,\n\tcreateAuthStatusStore,\n\tcreateCurrentUserStore,\n\tuseAuth,\n\tuseAuthStatus,\n\tuseCurrentUser,\n} from './svelte/use-auth'\nexport type { UseAuthResult } from './svelte/use-auth'\nexport { destroyOrgProvider, getOrgContext, initOrgProvider } from './svelte/org-context'\nexport type { OrgContextValue } from './svelte/org-context'\nexport {\n\tcreatePermissionStore,\n\tuseOrg,\n\tuseOrgMembers,\n\tusePermission,\n\tcheckOrgPermission,\n} from './svelte/org-hooks'\nexport type { UseOrgResult, UseOrgMembersResult } from './svelte/org-hooks'\n","import { getContext, setContext } from 'svelte'\nimport { type AuthSession, createAuthSession } from '../bindings/create-auth-session'\nimport type { AuthClient, AuthState } from '../client/auth-client'\n\n// Registered key: AuthProvider.svelte is compiled from src/ while useAuth comes from dist/,\n// so two copies of this module exist in an app and must share the key.\nconst authContextKey = Symbol.for('@korajs/auth:svelte-auth-context')\n\nexport interface AuthContextValue {\n\tclient: AuthClient\n\tsession: AuthSession\n\tget state(): AuthState\n\tget isLoading(): boolean\n}\n\n/**\n * Initialize auth context inside a Svelte component (root layout).\n * Must be called during component initialization before children render.\n */\nexport function initAuthProvider(client: AuthClient): AuthContextValue {\n\tconst session = createAuthSession(client)\n\n\tconst value: AuthContextValue = {\n\t\tclient,\n\t\tsession,\n\t\tget state() {\n\t\t\treturn session.getSnapshot().state\n\t\t},\n\t\tget isLoading() {\n\t\t\treturn session.getSnapshot().isLoading\n\t\t},\n\t}\n\n\tsetContext(authContextKey, value)\n\treturn value\n}\n\nexport function getAuthContext(): AuthContextValue {\n\tconst context = getContext<AuthContextValue | undefined>(authContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Auth context missing. Call initAuthProvider(client) in your root layout component.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyAuthProvider(context: AuthContextValue): void {\n\tcontext.session.destroy()\n}\n","import type {\n\tAuthClient,\n\tAuthState,\n\tAuthUser,\n\tLinkedOAuthAccount,\n\tOAuthAuthorizationOptions,\n\tOAuthAuthorizationResult,\n\tOAuthCallbackParams,\n} from '../client/auth-client'\n\nexport interface AuthSessionSnapshot {\n\tstate: AuthState\n\tuser: AuthUser | null\n\tisAuthenticated: boolean\n\tisLoading: boolean\n\tinitError: Error | null\n\terror: string | null\n}\n\nexport interface AuthSession {\n\treadonly client: AuthClient\n\tgetSnapshot(): AuthSessionSnapshot\n\tsubscribe(listener: () => void): () => void\n\tsignUp(params: {\n\t\temail: string\n\t\tpassword: string\n\t\tname?: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}): Promise<void>\n\tsignIn(params: {\n\t\temail: string\n\t\tpassword: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}): Promise<void>\n\tsignInWithOAuth(\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t): Promise<OAuthAuthorizationResult>\n\tcompleteOAuthSignIn(provider: string, params: OAuthCallbackParams): Promise<void>\n\tgetOAuthAuthorizationUrl(\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t): Promise<OAuthAuthorizationResult>\n\tlinkOAuth(provider: string, params: OAuthCallbackParams): Promise<LinkedOAuthAccount | null>\n\tlistLinkedAccounts(): Promise<LinkedOAuthAccount[]>\n\tunlinkOAuth(provider: string): Promise<void>\n\tsignOut(): Promise<void>\n\tdestroy(): void\n}\n\n/**\n * Framework-agnostic auth session: initialization, reactive snapshot, and client methods.\n */\nexport function createAuthSession(client: AuthClient): AuthSession {\n\tlet state: AuthState = client.state\n\tlet isLoading = true\n\tlet initError: Error | null = null\n\tlet lastError: string | null = null\n\n\tconst listeners = new Set<() => void>()\n\tlet snapshot = buildSnapshot()\n\n\tconst refreshSnapshot = (): void => {\n\t\tsnapshot = buildSnapshot()\n\t}\n\n\tconst notify = (): void => {\n\t\trefreshSnapshot()\n\t\tfor (const listener of listeners) {\n\t\t\tlistener()\n\t\t}\n\t}\n\n\tfunction buildSnapshot(): AuthSessionSnapshot {\n\t\treturn {\n\t\t\tstate,\n\t\t\tuser: client.currentUser,\n\t\t\tisAuthenticated: state === 'authenticated',\n\t\t\tisLoading,\n\t\t\tinitError,\n\t\t\terror: lastError,\n\t\t}\n\t}\n\n\tconst captureError = (error: unknown): void => {\n\t\tlastError = error instanceof Error ? error.message : String(error)\n\t\tnotify()\n\t}\n\n\tconst run = async (action: () => Promise<void>): Promise<void> => {\n\t\tlastError = null\n\t\ttry {\n\t\t\tawait action()\n\t\t} catch (error) {\n\t\t\tcaptureError(error)\n\t\t}\n\t}\n\n\tconst runWithResult = async <T>(action: () => Promise<T>): Promise<T | null> => {\n\t\tlastError = null\n\t\ttry {\n\t\t\treturn await action()\n\t\t} catch (error) {\n\t\t\tcaptureError(error)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tconst unsubscribeAuth = client.onAuthChange((nextState) => {\n\t\tstate = nextState\n\t\tnotify()\n\t})\n\n\tvoid client\n\t\t.initialize()\n\t\t.then(() => {\n\t\t\tstate = client.state\n\t\t\tisLoading = false\n\t\t\tnotify()\n\t\t})\n\t\t.catch((error: unknown) => {\n\t\t\tinitError = error instanceof Error ? error : new Error(String(error))\n\t\t\tisLoading = false\n\t\t\tnotify()\n\t\t})\n\n\treturn {\n\t\tclient,\n\t\tgetSnapshot: () => snapshot,\n\t\tsubscribe(listener) {\n\t\t\tlisteners.add(listener)\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener)\n\t\t\t}\n\t\t},\n\t\tsignUp: (params) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.signUp(params)\n\t\t\t}),\n\t\tsignIn: (params) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.signIn(params)\n\t\t\t}),\n\t\tsignInWithOAuth: async (provider, options) => {\n\t\t\tlastError = null\n\t\t\ttry {\n\t\t\t\treturn await client.signInWithOAuth(provider, options)\n\t\t\t} catch (error) {\n\t\t\t\tcaptureError(error)\n\t\t\t\tthrow error instanceof Error ? error : new Error(String(error))\n\t\t\t}\n\t\t},\n\t\tcompleteOAuthSignIn: (provider, params) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.completeOAuthSignIn(provider, params)\n\t\t\t}),\n\t\tgetOAuthAuthorizationUrl: async (provider, options) => {\n\t\t\tlastError = null\n\t\t\ttry {\n\t\t\t\treturn await client.getOAuthAuthorizationUrl(provider, options)\n\t\t\t} catch (error) {\n\t\t\t\tcaptureError(error)\n\t\t\t\tthrow error instanceof Error ? error : new Error(String(error))\n\t\t\t}\n\t\t},\n\t\tlinkOAuth: (provider, params) => runWithResult(async () => client.linkOAuth(provider, params)),\n\t\tlistLinkedAccounts: () =>\n\t\t\trunWithResult(async () => client.listLinkedAccounts()).then((value) => value ?? []),\n\t\tunlinkOAuth: (provider) =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.unlinkOAuth(provider)\n\t\t\t}),\n\t\tsignOut: () =>\n\t\t\trun(async () => {\n\t\t\t\tawait client.signOut()\n\t\t\t}),\n\t\tdestroy() {\n\t\t\tunsubscribeAuth()\n\t\t\tlisteners.clear()\n\t\t},\n\t}\n}\n","import { type Readable, readable } from 'svelte/store'\nimport type { AuthSessionSnapshot } from '../bindings/create-auth-session'\nimport type {\n\tAuthUser,\n\tLinkedOAuthAccount,\n\tOAuthAuthorizationOptions,\n\tOAuthAuthorizationResult,\n\tOAuthCallbackParams,\n} from '../client/auth-client'\nimport { getAuthContext } from './auth-context'\n\nexport interface UseAuthResult extends AuthSessionSnapshot {\n\tsignUp: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tname?: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignIn: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignInWithOAuth: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tcompleteOAuthSignIn: (provider: string, params: OAuthCallbackParams) => Promise<void>\n\tgetOAuthAuthorizationUrl: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tlinkOAuth: (provider: string, params: OAuthCallbackParams) => Promise<LinkedOAuthAccount | null>\n\tlistLinkedAccounts: () => Promise<LinkedOAuthAccount[]>\n\tunlinkOAuth: (provider: string) => Promise<void>\n\tsignOut: () => Promise<void>\n}\n\nexport function createAuthStore(): Readable<UseAuthResult> {\n\tconst { session } = getAuthContext()\n\n\treturn readable<UseAuthResult>(buildResult(session), (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(buildResult(session))\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createAuthStore */\nexport const useAuth = createAuthStore\n\nfunction buildResult(session: ReturnType<typeof getAuthContext>['session']): UseAuthResult {\n\tconst snapshot = session.getSnapshot()\n\treturn {\n\t\t...snapshot,\n\t\tsignUp: (params) => session.signUp(params),\n\t\tsignIn: (params) => session.signIn(params),\n\t\tsignInWithOAuth: (provider, options) => session.signInWithOAuth(provider, options),\n\t\tcompleteOAuthSignIn: (provider, params) => session.completeOAuthSignIn(provider, params),\n\t\tgetOAuthAuthorizationUrl: (provider, options) =>\n\t\t\tsession.getOAuthAuthorizationUrl(provider, options),\n\t\tlinkOAuth: (provider, params) => session.linkOAuth(provider, params),\n\t\tlistLinkedAccounts: () => session.listLinkedAccounts(),\n\t\tunlinkOAuth: (provider) => session.unlinkOAuth(provider),\n\t\tsignOut: () => session.signOut(),\n\t}\n}\n\nexport function createCurrentUserStore(): Readable<AuthUser | null> {\n\tconst { session } = getAuthContext()\n\treturn readable<AuthUser | null>(session.getSnapshot().user, (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(session.getSnapshot().user)\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createCurrentUserStore */\nexport const useCurrentUser = createCurrentUserStore\n\nexport function createAuthStatusStore(): Readable<{\n\tstate: AuthSessionSnapshot['state']\n\tisAuthenticated: boolean\n\tisLoading: boolean\n}> {\n\tconst { session } = getAuthContext()\n\treturn readable(\n\t\t{\n\t\t\tstate: session.getSnapshot().state,\n\t\t\tisAuthenticated: session.getSnapshot().isAuthenticated,\n\t\t\tisLoading: session.getSnapshot().isLoading,\n\t\t},\n\t\t(set) => {\n\t\t\tconst sync = (): void => {\n\t\t\t\tconst snapshot = session.getSnapshot()\n\t\t\t\tset({\n\t\t\t\t\tstate: snapshot.state,\n\t\t\t\t\tisAuthenticated: snapshot.isAuthenticated,\n\t\t\t\t\tisLoading: snapshot.isLoading,\n\t\t\t\t})\n\t\t\t}\n\t\t\tsync()\n\t\t\treturn session.subscribe(sync)\n\t\t},\n\t)\n}\n\n/** @alias createAuthStatusStore */\nexport const useAuthStatus = createAuthStatusStore\n","import { getContext, setContext } from 'svelte'\nimport { type OrgSession, createOrgSession } from '../bindings/create-org-session'\nimport type { OrgClient } from '../client/org-client'\n\n// Registered key: OrgProvider.svelte (src/) and the org hooks (dist/) must share it.\nconst orgContextKey = Symbol.for('@korajs/auth:svelte-org-context')\n\nexport interface OrgContextValue {\n\tclient: OrgClient\n\tsession: OrgSession\n}\n\nexport function initOrgProvider(client: OrgClient): OrgContextValue {\n\tconst session = createOrgSession(client)\n\tconst value: OrgContextValue = { client, session }\n\tsetContext(orgContextKey, value)\n\treturn value\n}\n\nexport function getOrgContext(): OrgContextValue {\n\tconst context = getContext<OrgContextValue | undefined>(orgContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Org context missing. Wrap your app with <OrgProvider client={orgClient}> from @korajs/auth/svelte.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyOrgProvider(context: OrgContextValue): void {\n\tcontext.session.destroy()\n}\n","import type {\n\tClientInvitation,\n\tClientMembership,\n\tClientOrganization,\n\tOrgClient,\n} from '../client/org-client'\n\nexport interface OrgSnapshot {\n\torgId: string | null\n\torg: ClientOrganization | null\n\trole: string | null\n}\n\nexport interface OrgSession {\n\treadonly client: OrgClient\n\tgetSnapshot(): OrgSnapshot\n\tsubscribe(listener: () => void): () => void\n\tcheckPermission(requiredRole: string): boolean\n\tdestroy(): void\n}\n\nconst ROLE_LEVELS: Record<string, number> = {\n\tviewer: 10,\n\tbilling: 15,\n\tmember: 20,\n\tadmin: 30,\n\towner: 40,\n}\n\nexport function checkOrgPermission(currentRole: string | null, requiredRole: string): boolean {\n\tif (!currentRole) return false\n\tconst currentLevel = ROLE_LEVELS[currentRole] ?? 0\n\tconst requiredLevel = ROLE_LEVELS[requiredRole] ?? 0\n\treturn currentLevel >= requiredLevel\n}\n\n/**\n * Framework-agnostic org session with reactive snapshot subscription.\n */\nexport function createOrgSession(client: OrgClient): OrgSession {\n\tlet snapshot = buildSnapshot(client)\n\tconst listeners = new Set<() => void>()\n\n\tconst notify = (): void => {\n\t\tsnapshot = buildSnapshot(client)\n\t\tfor (const listener of listeners) {\n\t\t\tlistener()\n\t\t}\n\t}\n\n\tconst unsubscribeOrgChange = client.onOrgChange(notify)\n\n\treturn {\n\t\tclient,\n\t\tgetSnapshot: () => snapshot,\n\t\tsubscribe(listener: () => void): () => void {\n\t\t\tlisteners.add(listener)\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener)\n\t\t\t}\n\t\t},\n\t\tcheckPermission(requiredRole: string): boolean {\n\t\t\treturn checkOrgPermission(snapshot.role, requiredRole)\n\t\t},\n\t\tdestroy(): void {\n\t\t\tunsubscribeOrgChange()\n\t\t\tlisteners.clear()\n\t\t},\n\t}\n}\n\nfunction buildSnapshot(client: OrgClient): OrgSnapshot {\n\treturn {\n\t\torgId: client.activeOrgId,\n\t\torg: client.activeOrg,\n\t\trole: client.activeRole,\n\t}\n}\n\nexport interface UseOrgMembersActions {\n\trefresh: () => Promise<void>\n\tinvite: (email: string, role: string) => Promise<ClientInvitation>\n\tremoveMember: (userId: string) => Promise<void>\n\tupdateRole: (userId: string, role: string) => Promise<void>\n}\n\n/**\n * Shared org member management actions (loading state remains framework-specific).\n */\nexport function createOrgMembersActions(\n\tclient: OrgClient,\n\torgId: string,\n\tonError: (message: string) => void,\n): UseOrgMembersActions {\n\treturn {\n\t\tasync refresh(): Promise<void> {\n\t\t\tawait client.listMembers(orgId)\n\t\t},\n\t\tasync invite(email: string, role: string): Promise<ClientInvitation> {\n\t\t\ttry {\n\t\t\t\treturn await client.inviteMember(orgId, { email, role })\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error)\n\t\t\t\tonError(message)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\t\tasync removeMember(userId: string): Promise<void> {\n\t\t\ttry {\n\t\t\t\tawait client.removeMember(orgId, userId)\n\t\t\t} catch (error) {\n\t\t\t\tonError(error instanceof Error ? error.message : String(error))\n\t\t\t}\n\t\t},\n\t\tasync updateRole(userId: string, role: string): Promise<void> {\n\t\t\ttry {\n\t\t\t\tawait client.updateMemberRole(orgId, userId, role)\n\t\t\t} catch (error) {\n\t\t\t\tonError(error instanceof Error ? error.message : String(error))\n\t\t\t}\n\t\t},\n\t}\n}\n\nexport async function loadOrgMembers(\n\tclient: OrgClient,\n\torgId: string,\n): Promise<ClientMembership[]> {\n\treturn client.listMembers(orgId)\n}\n","import { type Readable, derived, get, readable, writable } from 'svelte/store'\nimport {\n\tcheckOrgPermission,\n\tcreateOrgMembersActions,\n\tloadOrgMembers,\n} from '../bindings/create-org-session'\nimport type { ClientInvitation, ClientMembership, ClientOrganization } from '../client/org-client'\nimport { getOrgContext } from './org-context'\n\nexport interface UseOrgResult {\n\tsubscribe: Readable<{\n\t\torg: ClientOrganization | null\n\t\trole: string | null\n\t\torgId: string | null\n\t\terror: string | null\n\t}>['subscribe']\n\tget org(): ClientOrganization | null\n\tget role(): string | null\n\tget orgId(): string | null\n\tswitchOrg: (orgId: string) => Promise<void>\n\tcreateOrg: (params: { name: string; slug?: string }) => Promise<ClientOrganization>\n\tleaveOrg: () => Promise<void>\n\tclearOrg: () => void\n\tlistOrgs: () => Promise<ClientOrganization[]>\n}\n\nexport interface UseOrgMembersResult {\n\tsubscribe: Readable<{\n\t\tmembers: ClientMembership[]\n\t\tisLoading: boolean\n\t\terror: string | null\n\t}>['subscribe']\n\trefresh: () => Promise<void>\n\tinvite: (email: string, role: string) => Promise<ClientInvitation>\n\tremoveMember: (userId: string) => Promise<void>\n\tupdateRole: (userId: string, role: string) => Promise<void>\n}\n\nfunction createOrgSnapshotStore(): Readable<{\n\torg: ClientOrganization | null\n\trole: string | null\n\torgId: string | null\n}> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.getSnapshot(), (set) => {\n\t\tset(session.getSnapshot())\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.getSnapshot())\n\t\t})\n\t})\n}\n\nexport function useOrg(): UseOrgResult {\n\tconst { client, session } = getOrgContext()\n\tconst snapshotStore = createOrgSnapshotStore()\n\tconst error = writable<string | null>(null)\n\n\tconst store = derived([snapshotStore, error], ([snapshot, errorValue]) => ({\n\t\t...snapshot,\n\t\terror: errorValue,\n\t}))\n\n\tconst switchOrg = async (orgId: string): Promise<void> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.switchOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst createOrg = async (params: {\n\t\tname: string\n\t\tslug?: string\n\t}): Promise<ClientOrganization> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\treturn await client.createOrg(params)\n\t\t} catch (err) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err)\n\t\t\terror.set(message)\n\t\t\tthrow err\n\t\t}\n\t}\n\n\tconst leaveOrg = async (): Promise<void> => {\n\t\tconst orgId = get(snapshotStore).orgId\n\t\tif (!orgId) return\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.leaveOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst clearOrg = (): void => {\n\t\tclient.clearActiveOrg()\n\t}\n\n\tconst listOrgs = async (): Promise<ClientOrganization[]> => {\n\t\ttry {\n\t\t\treturn await client.listOrgs()\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t\treturn []\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\tget org() {\n\t\t\treturn get(snapshotStore).org\n\t\t},\n\t\tget role() {\n\t\t\treturn get(snapshotStore).role\n\t\t},\n\t\tget orgId() {\n\t\t\treturn get(snapshotStore).orgId\n\t\t},\n\t\tswitchOrg,\n\t\tcreateOrg,\n\t\tleaveOrg,\n\t\tclearOrg,\n\t\tlistOrgs,\n\t}\n}\n\nexport function useOrgMembers(orgId: string): UseOrgMembersResult {\n\tconst { client } = getOrgContext()\n\tconst members = writable<ClientMembership[]>([])\n\tconst isLoading = writable(true)\n\tconst error = writable<string | null>(null)\n\n\tconst refresh = async (targetOrgId: string): Promise<void> => {\n\t\tisLoading.set(true)\n\t\terror.set(null)\n\t\ttry {\n\t\t\tmembers.set(await loadOrgMembers(client, targetOrgId))\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t} finally {\n\t\t\tisLoading.set(false)\n\t\t}\n\t}\n\n\t$effect(() => {\n\t\tvoid refresh(orgId)\n\t})\n\n\tconst actions = createOrgMembersActions(client, orgId, (message) => {\n\t\terror.set(message)\n\t})\n\n\tconst invite = async (email: string, role: string): Promise<ClientInvitation> => {\n\t\tconst result = await actions.invite(email, role)\n\t\tawait refresh(orgId)\n\t\treturn result\n\t}\n\n\tconst removeMember = async (userId: string): Promise<void> => {\n\t\tawait actions.removeMember(userId)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst updateRole = async (userId: string, role: string): Promise<void> => {\n\t\tawait actions.updateRole(userId, role)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst store = derived([members, isLoading, error], ([memberList, loading, errorValue]) => ({\n\t\tmembers: memberList,\n\t\tisLoading: loading,\n\t\terror: errorValue,\n\t}))\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\trefresh: () => refresh(orgId),\n\t\tinvite,\n\t\tremoveMember,\n\t\tupdateRole,\n\t}\n}\n\nexport function createPermissionStore(requiredRole: string): Readable<boolean> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.checkPermission(requiredRole), (set) => {\n\t\tset(session.checkPermission(requiredRole))\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.checkPermission(requiredRole))\n\t\t})\n\t})\n}\n\n/** Alias for {@link createPermissionStore}. */\nexport const usePermission = createPermissionStore\n\nexport { checkOrgPermission }\n"],"mappings":"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","names":["buildSnapshot","import_svelte","import_store"]}
package/dist/svelte.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { d as AuthClient, i as AuthSession, e as AuthState, j as AuthSessionSnapshot, O as OAuthAuthorizationOptions, q as OAuthAuthorizationResult, r as OAuthCallbackParams, L as LinkedOAuthAccount, l as AuthUser, s as OrgClient, v as OrgSession, m as ClientMembership, C as ClientInvitation, n as ClientOrganization } from './create-org-session-RsDj9cl4.cjs';
2
- export { x as checkOrgPermission } from './create-org-session-RsDj9cl4.cjs';
1
+ import { d as AuthClient, j as AuthSession, e as AuthState, k as AuthSessionSnapshot, O as OAuthAuthorizationOptions, s as OAuthAuthorizationResult, t as OAuthCallbackParams, L as LinkedOAuthAccount, n as AuthUser, u as OrgClient, x as OrgSession, o as ClientMembership, C as ClientInvitation, p as ClientOrganization } from './create-org-session-ChFdulEM.cjs';
2
+ export { z as checkOrgPermission } from './create-org-session-ChFdulEM.cjs';
3
3
  import { Readable } from 'svelte/store';
4
4
  import '@korajs/core';
5
5
 
package/dist/svelte.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { d as AuthClient, i as AuthSession, e as AuthState, j as AuthSessionSnapshot, O as OAuthAuthorizationOptions, q as OAuthAuthorizationResult, r as OAuthCallbackParams, L as LinkedOAuthAccount, l as AuthUser, s as OrgClient, v as OrgSession, m as ClientMembership, C as ClientInvitation, n as ClientOrganization } from './create-org-session-RsDj9cl4.js';
2
- export { x as checkOrgPermission } from './create-org-session-RsDj9cl4.js';
1
+ import { d as AuthClient, j as AuthSession, e as AuthState, k as AuthSessionSnapshot, O as OAuthAuthorizationOptions, s as OAuthAuthorizationResult, t as OAuthCallbackParams, L as LinkedOAuthAccount, n as AuthUser, u as OrgClient, x as OrgSession, o as ClientMembership, C as ClientInvitation, p as ClientOrganization } from './create-org-session-ChFdulEM.js';
2
+ export { z as checkOrgPermission } from './create-org-session-ChFdulEM.js';
3
3
  import { Readable } from 'svelte/store';
4
4
  import '@korajs/core';
5
5
 
package/dist/svelte.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
 
9
9
  // src/svelte/auth-context.ts
10
10
  import { getContext, setContext } from "svelte";
11
- var authContextKey = /* @__PURE__ */ Symbol("korajs-auth-context");
11
+ var authContextKey = /* @__PURE__ */ Symbol.for("@korajs/auth:svelte-auth-context");
12
12
  function initAuthProvider(client) {
13
13
  const session = createAuthSession(client);
14
14
  const value = {
@@ -102,7 +102,7 @@ var useAuthStatus = createAuthStatusStore;
102
102
 
103
103
  // src/svelte/org-context.ts
104
104
  import { getContext as getContext2, setContext as setContext2 } from "svelte";
105
- var orgContextKey = /* @__PURE__ */ Symbol("korajs-org-context");
105
+ var orgContextKey = /* @__PURE__ */ Symbol.for("@korajs/auth:svelte-org-context");
106
106
  function initOrgProvider(client) {
107
107
  const session = createOrgSession(client);
108
108
  const value = { client, session };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/svelte/auth-context.ts","../src/svelte/use-auth.ts","../src/svelte/org-context.ts","../src/svelte/org-hooks.ts"],"sourcesContent":["import { getContext, setContext } from 'svelte'\nimport { type AuthSession, createAuthSession } from '../bindings/create-auth-session'\nimport type { AuthClient, AuthState } from '../client/auth-client'\n\nconst authContextKey = Symbol('korajs-auth-context')\n\nexport interface AuthContextValue {\n\tclient: AuthClient\n\tsession: AuthSession\n\tget state(): AuthState\n\tget isLoading(): boolean\n}\n\n/**\n * Initialize auth context inside a Svelte component (root layout).\n * Must be called during component initialization before children render.\n */\nexport function initAuthProvider(client: AuthClient): AuthContextValue {\n\tconst session = createAuthSession(client)\n\n\tconst value: AuthContextValue = {\n\t\tclient,\n\t\tsession,\n\t\tget state() {\n\t\t\treturn session.getSnapshot().state\n\t\t},\n\t\tget isLoading() {\n\t\t\treturn session.getSnapshot().isLoading\n\t\t},\n\t}\n\n\tsetContext(authContextKey, value)\n\treturn value\n}\n\nexport function getAuthContext(): AuthContextValue {\n\tconst context = getContext<AuthContextValue | undefined>(authContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Auth context missing. Call initAuthProvider(client) in your root layout component.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyAuthProvider(context: AuthContextValue): void {\n\tcontext.session.destroy()\n}\n","import { type Readable, readable } from 'svelte/store'\nimport type { AuthSessionSnapshot } from '../bindings/create-auth-session'\nimport type {\n\tAuthUser,\n\tLinkedOAuthAccount,\n\tOAuthAuthorizationOptions,\n\tOAuthAuthorizationResult,\n\tOAuthCallbackParams,\n} from '../client/auth-client'\nimport { getAuthContext } from './auth-context'\n\nexport interface UseAuthResult extends AuthSessionSnapshot {\n\tsignUp: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tname?: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignIn: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignInWithOAuth: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tcompleteOAuthSignIn: (provider: string, params: OAuthCallbackParams) => Promise<void>\n\tgetOAuthAuthorizationUrl: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tlinkOAuth: (provider: string, params: OAuthCallbackParams) => Promise<LinkedOAuthAccount | null>\n\tlistLinkedAccounts: () => Promise<LinkedOAuthAccount[]>\n\tunlinkOAuth: (provider: string) => Promise<void>\n\tsignOut: () => Promise<void>\n}\n\nexport function createAuthStore(): Readable<UseAuthResult> {\n\tconst { session } = getAuthContext()\n\n\treturn readable<UseAuthResult>(buildResult(session), (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(buildResult(session))\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createAuthStore */\nexport const useAuth = createAuthStore\n\nfunction buildResult(session: ReturnType<typeof getAuthContext>['session']): UseAuthResult {\n\tconst snapshot = session.getSnapshot()\n\treturn {\n\t\t...snapshot,\n\t\tsignUp: (params) => session.signUp(params),\n\t\tsignIn: (params) => session.signIn(params),\n\t\tsignInWithOAuth: (provider, options) => session.signInWithOAuth(provider, options),\n\t\tcompleteOAuthSignIn: (provider, params) => session.completeOAuthSignIn(provider, params),\n\t\tgetOAuthAuthorizationUrl: (provider, options) =>\n\t\t\tsession.getOAuthAuthorizationUrl(provider, options),\n\t\tlinkOAuth: (provider, params) => session.linkOAuth(provider, params),\n\t\tlistLinkedAccounts: () => session.listLinkedAccounts(),\n\t\tunlinkOAuth: (provider) => session.unlinkOAuth(provider),\n\t\tsignOut: () => session.signOut(),\n\t}\n}\n\nexport function createCurrentUserStore(): Readable<AuthUser | null> {\n\tconst { session } = getAuthContext()\n\treturn readable<AuthUser | null>(session.getSnapshot().user, (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(session.getSnapshot().user)\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createCurrentUserStore */\nexport const useCurrentUser = createCurrentUserStore\n\nexport function createAuthStatusStore(): Readable<{\n\tstate: AuthSessionSnapshot['state']\n\tisAuthenticated: boolean\n\tisLoading: boolean\n}> {\n\tconst { session } = getAuthContext()\n\treturn readable(\n\t\t{\n\t\t\tstate: session.getSnapshot().state,\n\t\t\tisAuthenticated: session.getSnapshot().isAuthenticated,\n\t\t\tisLoading: session.getSnapshot().isLoading,\n\t\t},\n\t\t(set) => {\n\t\t\tconst sync = (): void => {\n\t\t\t\tconst snapshot = session.getSnapshot()\n\t\t\t\tset({\n\t\t\t\t\tstate: snapshot.state,\n\t\t\t\t\tisAuthenticated: snapshot.isAuthenticated,\n\t\t\t\t\tisLoading: snapshot.isLoading,\n\t\t\t\t})\n\t\t\t}\n\t\t\tsync()\n\t\t\treturn session.subscribe(sync)\n\t\t},\n\t)\n}\n\n/** @alias createAuthStatusStore */\nexport const useAuthStatus = createAuthStatusStore\n","import { getContext, setContext } from 'svelte'\nimport { type OrgSession, createOrgSession } from '../bindings/create-org-session'\nimport type { OrgClient } from '../client/org-client'\n\nconst orgContextKey = Symbol('korajs-org-context')\n\nexport interface OrgContextValue {\n\tclient: OrgClient\n\tsession: OrgSession\n}\n\nexport function initOrgProvider(client: OrgClient): OrgContextValue {\n\tconst session = createOrgSession(client)\n\tconst value: OrgContextValue = { client, session }\n\tsetContext(orgContextKey, value)\n\treturn value\n}\n\nexport function getOrgContext(): OrgContextValue {\n\tconst context = getContext<OrgContextValue | undefined>(orgContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Org context missing. Wrap your app with <OrgProvider client={orgClient}> from @korajs/auth/svelte.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyOrgProvider(context: OrgContextValue): void {\n\tcontext.session.destroy()\n}\n","import { type Readable, derived, get, readable, writable } from 'svelte/store'\nimport {\n\tcheckOrgPermission,\n\tcreateOrgMembersActions,\n\tloadOrgMembers,\n} from '../bindings/create-org-session'\nimport type { ClientInvitation, ClientMembership, ClientOrganization } from '../client/org-client'\nimport { getOrgContext } from './org-context'\n\nexport interface UseOrgResult {\n\tsubscribe: Readable<{\n\t\torg: ClientOrganization | null\n\t\trole: string | null\n\t\torgId: string | null\n\t\terror: string | null\n\t}>['subscribe']\n\tget org(): ClientOrganization | null\n\tget role(): string | null\n\tget orgId(): string | null\n\tswitchOrg: (orgId: string) => Promise<void>\n\tcreateOrg: (params: { name: string; slug?: string }) => Promise<ClientOrganization>\n\tleaveOrg: () => Promise<void>\n\tclearOrg: () => void\n\tlistOrgs: () => Promise<ClientOrganization[]>\n}\n\nexport interface UseOrgMembersResult {\n\tsubscribe: Readable<{\n\t\tmembers: ClientMembership[]\n\t\tisLoading: boolean\n\t\terror: string | null\n\t}>['subscribe']\n\trefresh: () => Promise<void>\n\tinvite: (email: string, role: string) => Promise<ClientInvitation>\n\tremoveMember: (userId: string) => Promise<void>\n\tupdateRole: (userId: string, role: string) => Promise<void>\n}\n\nfunction createOrgSnapshotStore(): Readable<{\n\torg: ClientOrganization | null\n\trole: string | null\n\torgId: string | null\n}> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.getSnapshot(), (set) => {\n\t\tset(session.getSnapshot())\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.getSnapshot())\n\t\t})\n\t})\n}\n\nexport function useOrg(): UseOrgResult {\n\tconst { client, session } = getOrgContext()\n\tconst snapshotStore = createOrgSnapshotStore()\n\tconst error = writable<string | null>(null)\n\n\tconst store = derived([snapshotStore, error], ([snapshot, errorValue]) => ({\n\t\t...snapshot,\n\t\terror: errorValue,\n\t}))\n\n\tconst switchOrg = async (orgId: string): Promise<void> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.switchOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst createOrg = async (params: {\n\t\tname: string\n\t\tslug?: string\n\t}): Promise<ClientOrganization> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\treturn await client.createOrg(params)\n\t\t} catch (err) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err)\n\t\t\terror.set(message)\n\t\t\tthrow err\n\t\t}\n\t}\n\n\tconst leaveOrg = async (): Promise<void> => {\n\t\tconst orgId = get(snapshotStore).orgId\n\t\tif (!orgId) return\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.leaveOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst clearOrg = (): void => {\n\t\tclient.clearActiveOrg()\n\t}\n\n\tconst listOrgs = async (): Promise<ClientOrganization[]> => {\n\t\ttry {\n\t\t\treturn await client.listOrgs()\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t\treturn []\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\tget org() {\n\t\t\treturn get(snapshotStore).org\n\t\t},\n\t\tget role() {\n\t\t\treturn get(snapshotStore).role\n\t\t},\n\t\tget orgId() {\n\t\t\treturn get(snapshotStore).orgId\n\t\t},\n\t\tswitchOrg,\n\t\tcreateOrg,\n\t\tleaveOrg,\n\t\tclearOrg,\n\t\tlistOrgs,\n\t}\n}\n\nexport function useOrgMembers(orgId: string): UseOrgMembersResult {\n\tconst { client } = getOrgContext()\n\tconst members = writable<ClientMembership[]>([])\n\tconst isLoading = writable(true)\n\tconst error = writable<string | null>(null)\n\n\tconst refresh = async (targetOrgId: string): Promise<void> => {\n\t\tisLoading.set(true)\n\t\terror.set(null)\n\t\ttry {\n\t\t\tmembers.set(await loadOrgMembers(client, targetOrgId))\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t} finally {\n\t\t\tisLoading.set(false)\n\t\t}\n\t}\n\n\t$effect(() => {\n\t\tvoid refresh(orgId)\n\t})\n\n\tconst actions = createOrgMembersActions(client, orgId, (message) => {\n\t\terror.set(message)\n\t})\n\n\tconst invite = async (email: string, role: string): Promise<ClientInvitation> => {\n\t\tconst result = await actions.invite(email, role)\n\t\tawait refresh(orgId)\n\t\treturn result\n\t}\n\n\tconst removeMember = async (userId: string): Promise<void> => {\n\t\tawait actions.removeMember(userId)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst updateRole = async (userId: string, role: string): Promise<void> => {\n\t\tawait actions.updateRole(userId, role)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst store = derived([members, isLoading, error], ([memberList, loading, errorValue]) => ({\n\t\tmembers: memberList,\n\t\tisLoading: loading,\n\t\terror: errorValue,\n\t}))\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\trefresh: () => refresh(orgId),\n\t\tinvite,\n\t\tremoveMember,\n\t\tupdateRole,\n\t}\n}\n\nexport function createPermissionStore(requiredRole: string): Readable<boolean> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.checkPermission(requiredRole), (set) => {\n\t\tset(session.checkPermission(requiredRole))\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.checkPermission(requiredRole))\n\t\t})\n\t})\n}\n\n/** Alias for {@link createPermissionStore}. */\nexport const usePermission = createPermissionStore\n\nexport { checkOrgPermission }\n"],"mappings":"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","names":["getContext","setContext","setContext","getContext","readable","readable"]}
1
+ {"version":3,"sources":["../src/svelte/auth-context.ts","../src/svelte/use-auth.ts","../src/svelte/org-context.ts","../src/svelte/org-hooks.ts"],"sourcesContent":["import { getContext, setContext } from 'svelte'\nimport { type AuthSession, createAuthSession } from '../bindings/create-auth-session'\nimport type { AuthClient, AuthState } from '../client/auth-client'\n\n// Registered key: AuthProvider.svelte is compiled from src/ while useAuth comes from dist/,\n// so two copies of this module exist in an app and must share the key.\nconst authContextKey = Symbol.for('@korajs/auth:svelte-auth-context')\n\nexport interface AuthContextValue {\n\tclient: AuthClient\n\tsession: AuthSession\n\tget state(): AuthState\n\tget isLoading(): boolean\n}\n\n/**\n * Initialize auth context inside a Svelte component (root layout).\n * Must be called during component initialization before children render.\n */\nexport function initAuthProvider(client: AuthClient): AuthContextValue {\n\tconst session = createAuthSession(client)\n\n\tconst value: AuthContextValue = {\n\t\tclient,\n\t\tsession,\n\t\tget state() {\n\t\t\treturn session.getSnapshot().state\n\t\t},\n\t\tget isLoading() {\n\t\t\treturn session.getSnapshot().isLoading\n\t\t},\n\t}\n\n\tsetContext(authContextKey, value)\n\treturn value\n}\n\nexport function getAuthContext(): AuthContextValue {\n\tconst context = getContext<AuthContextValue | undefined>(authContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Auth context missing. Call initAuthProvider(client) in your root layout component.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyAuthProvider(context: AuthContextValue): void {\n\tcontext.session.destroy()\n}\n","import { type Readable, readable } from 'svelte/store'\nimport type { AuthSessionSnapshot } from '../bindings/create-auth-session'\nimport type {\n\tAuthUser,\n\tLinkedOAuthAccount,\n\tOAuthAuthorizationOptions,\n\tOAuthAuthorizationResult,\n\tOAuthCallbackParams,\n} from '../client/auth-client'\nimport { getAuthContext } from './auth-context'\n\nexport interface UseAuthResult extends AuthSessionSnapshot {\n\tsignUp: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tname?: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignIn: (params: {\n\t\temail: string\n\t\tpassword: string\n\t\tdeviceId?: string\n\t\tdevicePublicKey?: string\n\t}) => Promise<void>\n\tsignInWithOAuth: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tcompleteOAuthSignIn: (provider: string, params: OAuthCallbackParams) => Promise<void>\n\tgetOAuthAuthorizationUrl: (\n\t\tprovider: string,\n\t\toptions?: OAuthAuthorizationOptions,\n\t) => Promise<OAuthAuthorizationResult>\n\tlinkOAuth: (provider: string, params: OAuthCallbackParams) => Promise<LinkedOAuthAccount | null>\n\tlistLinkedAccounts: () => Promise<LinkedOAuthAccount[]>\n\tunlinkOAuth: (provider: string) => Promise<void>\n\tsignOut: () => Promise<void>\n}\n\nexport function createAuthStore(): Readable<UseAuthResult> {\n\tconst { session } = getAuthContext()\n\n\treturn readable<UseAuthResult>(buildResult(session), (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(buildResult(session))\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createAuthStore */\nexport const useAuth = createAuthStore\n\nfunction buildResult(session: ReturnType<typeof getAuthContext>['session']): UseAuthResult {\n\tconst snapshot = session.getSnapshot()\n\treturn {\n\t\t...snapshot,\n\t\tsignUp: (params) => session.signUp(params),\n\t\tsignIn: (params) => session.signIn(params),\n\t\tsignInWithOAuth: (provider, options) => session.signInWithOAuth(provider, options),\n\t\tcompleteOAuthSignIn: (provider, params) => session.completeOAuthSignIn(provider, params),\n\t\tgetOAuthAuthorizationUrl: (provider, options) =>\n\t\t\tsession.getOAuthAuthorizationUrl(provider, options),\n\t\tlinkOAuth: (provider, params) => session.linkOAuth(provider, params),\n\t\tlistLinkedAccounts: () => session.listLinkedAccounts(),\n\t\tunlinkOAuth: (provider) => session.unlinkOAuth(provider),\n\t\tsignOut: () => session.signOut(),\n\t}\n}\n\nexport function createCurrentUserStore(): Readable<AuthUser | null> {\n\tconst { session } = getAuthContext()\n\treturn readable<AuthUser | null>(session.getSnapshot().user, (set) => {\n\t\tconst sync = (): void => {\n\t\t\tset(session.getSnapshot().user)\n\t\t}\n\t\tsync()\n\t\treturn session.subscribe(sync)\n\t})\n}\n\n/** @alias createCurrentUserStore */\nexport const useCurrentUser = createCurrentUserStore\n\nexport function createAuthStatusStore(): Readable<{\n\tstate: AuthSessionSnapshot['state']\n\tisAuthenticated: boolean\n\tisLoading: boolean\n}> {\n\tconst { session } = getAuthContext()\n\treturn readable(\n\t\t{\n\t\t\tstate: session.getSnapshot().state,\n\t\t\tisAuthenticated: session.getSnapshot().isAuthenticated,\n\t\t\tisLoading: session.getSnapshot().isLoading,\n\t\t},\n\t\t(set) => {\n\t\t\tconst sync = (): void => {\n\t\t\t\tconst snapshot = session.getSnapshot()\n\t\t\t\tset({\n\t\t\t\t\tstate: snapshot.state,\n\t\t\t\t\tisAuthenticated: snapshot.isAuthenticated,\n\t\t\t\t\tisLoading: snapshot.isLoading,\n\t\t\t\t})\n\t\t\t}\n\t\t\tsync()\n\t\t\treturn session.subscribe(sync)\n\t\t},\n\t)\n}\n\n/** @alias createAuthStatusStore */\nexport const useAuthStatus = createAuthStatusStore\n","import { getContext, setContext } from 'svelte'\nimport { type OrgSession, createOrgSession } from '../bindings/create-org-session'\nimport type { OrgClient } from '../client/org-client'\n\n// Registered key: OrgProvider.svelte (src/) and the org hooks (dist/) must share it.\nconst orgContextKey = Symbol.for('@korajs/auth:svelte-org-context')\n\nexport interface OrgContextValue {\n\tclient: OrgClient\n\tsession: OrgSession\n}\n\nexport function initOrgProvider(client: OrgClient): OrgContextValue {\n\tconst session = createOrgSession(client)\n\tconst value: OrgContextValue = { client, session }\n\tsetContext(orgContextKey, value)\n\treturn value\n}\n\nexport function getOrgContext(): OrgContextValue {\n\tconst context = getContext<OrgContextValue | undefined>(orgContextKey)\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'Org context missing. Wrap your app with <OrgProvider client={orgClient}> from @korajs/auth/svelte.',\n\t\t)\n\t}\n\treturn context\n}\n\nexport function destroyOrgProvider(context: OrgContextValue): void {\n\tcontext.session.destroy()\n}\n","import { type Readable, derived, get, readable, writable } from 'svelte/store'\nimport {\n\tcheckOrgPermission,\n\tcreateOrgMembersActions,\n\tloadOrgMembers,\n} from '../bindings/create-org-session'\nimport type { ClientInvitation, ClientMembership, ClientOrganization } from '../client/org-client'\nimport { getOrgContext } from './org-context'\n\nexport interface UseOrgResult {\n\tsubscribe: Readable<{\n\t\torg: ClientOrganization | null\n\t\trole: string | null\n\t\torgId: string | null\n\t\terror: string | null\n\t}>['subscribe']\n\tget org(): ClientOrganization | null\n\tget role(): string | null\n\tget orgId(): string | null\n\tswitchOrg: (orgId: string) => Promise<void>\n\tcreateOrg: (params: { name: string; slug?: string }) => Promise<ClientOrganization>\n\tleaveOrg: () => Promise<void>\n\tclearOrg: () => void\n\tlistOrgs: () => Promise<ClientOrganization[]>\n}\n\nexport interface UseOrgMembersResult {\n\tsubscribe: Readable<{\n\t\tmembers: ClientMembership[]\n\t\tisLoading: boolean\n\t\terror: string | null\n\t}>['subscribe']\n\trefresh: () => Promise<void>\n\tinvite: (email: string, role: string) => Promise<ClientInvitation>\n\tremoveMember: (userId: string) => Promise<void>\n\tupdateRole: (userId: string, role: string) => Promise<void>\n}\n\nfunction createOrgSnapshotStore(): Readable<{\n\torg: ClientOrganization | null\n\trole: string | null\n\torgId: string | null\n}> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.getSnapshot(), (set) => {\n\t\tset(session.getSnapshot())\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.getSnapshot())\n\t\t})\n\t})\n}\n\nexport function useOrg(): UseOrgResult {\n\tconst { client, session } = getOrgContext()\n\tconst snapshotStore = createOrgSnapshotStore()\n\tconst error = writable<string | null>(null)\n\n\tconst store = derived([snapshotStore, error], ([snapshot, errorValue]) => ({\n\t\t...snapshot,\n\t\terror: errorValue,\n\t}))\n\n\tconst switchOrg = async (orgId: string): Promise<void> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.switchOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst createOrg = async (params: {\n\t\tname: string\n\t\tslug?: string\n\t}): Promise<ClientOrganization> => {\n\t\terror.set(null)\n\t\ttry {\n\t\t\treturn await client.createOrg(params)\n\t\t} catch (err) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err)\n\t\t\terror.set(message)\n\t\t\tthrow err\n\t\t}\n\t}\n\n\tconst leaveOrg = async (): Promise<void> => {\n\t\tconst orgId = get(snapshotStore).orgId\n\t\tif (!orgId) return\n\t\terror.set(null)\n\t\ttry {\n\t\t\tawait client.leaveOrg(orgId)\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t}\n\t}\n\n\tconst clearOrg = (): void => {\n\t\tclient.clearActiveOrg()\n\t}\n\n\tconst listOrgs = async (): Promise<ClientOrganization[]> => {\n\t\ttry {\n\t\t\treturn await client.listOrgs()\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t\treturn []\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\tget org() {\n\t\t\treturn get(snapshotStore).org\n\t\t},\n\t\tget role() {\n\t\t\treturn get(snapshotStore).role\n\t\t},\n\t\tget orgId() {\n\t\t\treturn get(snapshotStore).orgId\n\t\t},\n\t\tswitchOrg,\n\t\tcreateOrg,\n\t\tleaveOrg,\n\t\tclearOrg,\n\t\tlistOrgs,\n\t}\n}\n\nexport function useOrgMembers(orgId: string): UseOrgMembersResult {\n\tconst { client } = getOrgContext()\n\tconst members = writable<ClientMembership[]>([])\n\tconst isLoading = writable(true)\n\tconst error = writable<string | null>(null)\n\n\tconst refresh = async (targetOrgId: string): Promise<void> => {\n\t\tisLoading.set(true)\n\t\terror.set(null)\n\t\ttry {\n\t\t\tmembers.set(await loadOrgMembers(client, targetOrgId))\n\t\t} catch (err) {\n\t\t\terror.set(err instanceof Error ? err.message : String(err))\n\t\t} finally {\n\t\t\tisLoading.set(false)\n\t\t}\n\t}\n\n\t$effect(() => {\n\t\tvoid refresh(orgId)\n\t})\n\n\tconst actions = createOrgMembersActions(client, orgId, (message) => {\n\t\terror.set(message)\n\t})\n\n\tconst invite = async (email: string, role: string): Promise<ClientInvitation> => {\n\t\tconst result = await actions.invite(email, role)\n\t\tawait refresh(orgId)\n\t\treturn result\n\t}\n\n\tconst removeMember = async (userId: string): Promise<void> => {\n\t\tawait actions.removeMember(userId)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst updateRole = async (userId: string, role: string): Promise<void> => {\n\t\tawait actions.updateRole(userId, role)\n\t\tawait refresh(orgId)\n\t}\n\n\tconst store = derived([members, isLoading, error], ([memberList, loading, errorValue]) => ({\n\t\tmembers: memberList,\n\t\tisLoading: loading,\n\t\terror: errorValue,\n\t}))\n\n\treturn {\n\t\tsubscribe: store.subscribe,\n\t\trefresh: () => refresh(orgId),\n\t\tinvite,\n\t\tremoveMember,\n\t\tupdateRole,\n\t}\n}\n\nexport function createPermissionStore(requiredRole: string): Readable<boolean> {\n\tconst { session } = getOrgContext()\n\n\treturn readable(session.checkPermission(requiredRole), (set) => {\n\t\tset(session.checkPermission(requiredRole))\n\t\treturn session.subscribe(() => {\n\t\t\tset(session.checkPermission(requiredRole))\n\t\t})\n\t})\n}\n\n/** Alias for {@link createPermissionStore}. */\nexport const usePermission = createPermissionStore\n\nexport { checkOrgPermission }\n"],"mappings":"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","names":["getContext","setContext","setContext","getContext","readable","readable"]}
package/dist/vue.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as vue from 'vue';
2
2
  import { PropType, VNode } from 'vue';
3
- import { d as AuthClient, e as AuthState, i as AuthSession, l as AuthUser, O as OAuthAuthorizationOptions, q as OAuthAuthorizationResult, r as OAuthCallbackParams, L as LinkedOAuthAccount, s as OrgClient, v as OrgSession, m as ClientMembership, C as ClientInvitation, n as ClientOrganization } from './create-org-session-RsDj9cl4.cjs';
3
+ import { d as AuthClient, e as AuthState, j as AuthSession, n as AuthUser, O as OAuthAuthorizationOptions, s as OAuthAuthorizationResult, t as OAuthCallbackParams, L as LinkedOAuthAccount, u as OrgClient, x as OrgSession, o as ClientMembership, C as ClientInvitation, p as ClientOrganization } from './create-org-session-ChFdulEM.cjs';
4
4
  import '@korajs/core';
5
5
 
6
6
  interface AuthContextValue {
package/dist/vue.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as vue from 'vue';
2
2
  import { PropType, VNode } from 'vue';
3
- import { d as AuthClient, e as AuthState, i as AuthSession, l as AuthUser, O as OAuthAuthorizationOptions, q as OAuthAuthorizationResult, r as OAuthCallbackParams, L as LinkedOAuthAccount, s as OrgClient, v as OrgSession, m as ClientMembership, C as ClientInvitation, n as ClientOrganization } from './create-org-session-RsDj9cl4.js';
3
+ import { d as AuthClient, e as AuthState, j as AuthSession, n as AuthUser, O as OAuthAuthorizationOptions, s as OAuthAuthorizationResult, t as OAuthCallbackParams, L as LinkedOAuthAccount, u as OrgClient, x as OrgSession, o as ClientMembership, C as ClientInvitation, p as ClientOrganization } from './create-org-session-ChFdulEM.js';
4
4
  import '@korajs/core';
5
5
 
6
6
  interface AuthContextValue {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korajs/auth",
3
- "version": "1.0.0-beta.12",
3
+ "version": "1.0.0-beta.14",
4
4
  "description": "Offline-first authentication for Kora.js",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -63,11 +63,11 @@
63
63
  },
64
64
  "files": [
65
65
  "dist",
66
- "src/svelte/AuthProvider.svelte",
67
- "src/svelte/OrgProvider.svelte"
66
+ "src",
67
+ "!src/**/*.test.ts"
68
68
  ],
69
69
  "dependencies": {
70
- "@korajs/core": "1.0.0-beta.12"
70
+ "@korajs/core": "1.0.0-beta.14"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@types/better-sqlite3": "^7.6.13",
@@ -78,9 +78,9 @@
78
78
  "typescript": "^5.7.0",
79
79
  "vitest": "^3.0.0",
80
80
  "vue": "^3.5.0",
81
- "@korajs/sync": "1.0.0-beta.12",
82
- "@korajs/server": "1.0.0-beta.12",
83
- "@korajs/store": "1.0.0-beta.12"
81
+ "@korajs/server": "1.0.0-beta.14",
82
+ "@korajs/sync": "1.0.0-beta.14",
83
+ "@korajs/store": "1.0.0-beta.14"
84
84
  },
85
85
  "peerDependencies": {
86
86
  "react": "^18.0.0 || ^19.0.0",