@korajs/auth 1.0.0-beta.11 → 1.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -47
- package/dist/{create-org-session-RsDj9cl4.d.cts → create-org-session-ChFdulEM.d.cts} +211 -17
- package/dist/{create-org-session-RsDj9cl4.d.ts → create-org-session-ChFdulEM.d.ts} +211 -17
- package/dist/index.cjs +645 -150
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +27 -9
- package/dist/index.d.ts +27 -9
- package/dist/index.js +644 -150
- package/dist/index.js.map +1 -1
- package/dist/{operation-encryptor-DRmKNWpF.d.cts → operation-encryptor-DDdlb9bm.d.cts} +16 -0
- package/dist/{operation-encryptor-DRmKNWpF.d.ts → operation-encryptor-DDdlb9bm.d.ts} +16 -0
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/server.cjs +2852 -1675
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +779 -168
- package/dist/server.d.ts +779 -168
- package/dist/server.js +2831 -1665
- package/dist/server.js.map +1 -1
- package/dist/svelte.cjs +2 -2
- package/dist/svelte.cjs.map +1 -1
- package/dist/svelte.d.cts +2 -2
- package/dist/svelte.d.ts +2 -2
- package/dist/svelte.js +2 -2
- package/dist/svelte.js.map +1 -1
- package/dist/vue.d.cts +1 -1
- package/dist/vue.d.ts +1 -1
- package/package.json +7 -7
- package/src/admin/admin-api.ts +327 -0
- package/src/admin/audit-log.ts +324 -0
- package/src/admin/webhooks.ts +576 -0
- package/src/bindings/create-auth-session.ts +184 -0
- package/src/bindings/create-org-session.ts +130 -0
- package/src/client/auth-client.ts +1592 -0
- package/src/client/auth-sync.ts +213 -0
- package/src/client/device-session.ts +104 -0
- package/src/client/org-client.ts +399 -0
- package/src/client/quickstart.ts +108 -0
- package/src/client/storage.ts +94 -0
- package/src/device/device-identity.ts +330 -0
- package/src/device/device-store.ts +379 -0
- package/src/encryption/auto-lock.ts +170 -0
- package/src/encryption/database-encryption.ts +265 -0
- package/src/encryption/key-derivation.ts +149 -0
- package/src/encryption/operation-encryptor.ts +361 -0
- package/src/index.ts +132 -0
- package/src/mfa/totp.ts +826 -0
- package/src/org/org-routes.ts +758 -0
- package/src/org/org-store.ts +490 -0
- package/src/org/org-types.ts +230 -0
- package/src/passkey/passkey-client.ts +597 -0
- package/src/passkey/passkey-server.ts +779 -0
- package/src/postgres/ensure-schema.ts +65 -0
- package/src/provider/adapter.ts +246 -0
- package/src/provider/built-in/auth-routes.ts +1313 -0
- package/src/provider/built-in/email-verification.ts +303 -0
- package/src/provider/built-in/password-hash.ts +118 -0
- package/src/provider/built-in/password-reset.ts +416 -0
- package/src/provider/built-in/postgres-user-store.ts +328 -0
- package/src/provider/built-in/quickstart-server.ts +760 -0
- package/src/provider/built-in/sqlite-user-store.ts +322 -0
- package/src/provider/built-in/sync-scopes.ts +85 -0
- package/src/provider/built-in/user-store.ts +465 -0
- package/src/provider/external/clerk-adapter.ts +157 -0
- package/src/provider/external/external-jwt-provider.ts +491 -0
- package/src/provider/external/supabase-adapter.ts +163 -0
- package/src/provider/oauth/linked-identity-store.ts +108 -0
- package/src/provider/oauth/oauth-flow.ts +550 -0
- package/src/provider/oauth/oauth-types.ts +184 -0
- package/src/provider/oauth/postgres-oauth-store.ts +296 -0
- package/src/provider/oauth/sqlite-oauth-store.ts +272 -0
- package/src/rbac/rbac-engine.ts +323 -0
- package/src/rbac/rbac-types.ts +210 -0
- package/src/rbac/scope-resolver.ts +140 -0
- package/src/react/AuthProvider.tsx +97 -0
- package/src/react/OrgProvider.tsx +41 -0
- package/src/react/auth-context.ts +26 -0
- package/src/react/hooks.ts +110 -0
- package/src/react/org-hooks.ts +214 -0
- package/src/react.ts +26 -0
- package/src/server.ts +334 -0
- package/src/session/session.ts +401 -0
- package/src/svelte/auth-context.ts +50 -0
- package/src/svelte/org-context.ts +32 -0
- package/src/svelte/org-hooks.ts +201 -0
- package/src/svelte/use-auth.ts +115 -0
- package/src/svelte.ts +25 -0
- package/src/tokens/encrypted-token-store.ts +360 -0
- package/src/tokens/jwt.ts +236 -0
- package/src/tokens/postgres-token-revocation-store.ts +140 -0
- package/src/tokens/sqlite-token-revocation-store.ts +121 -0
- package/src/tokens/token-manager.ts +821 -0
- package/src/tokens/token-store.ts +192 -0
- package/src/types.ts +394 -0
- package/src/vue/auth-context.ts +10 -0
- package/src/vue/auth-provider-types.ts +5 -0
- package/src/vue/auth-provider.ts +76 -0
- package/src/vue/org-hooks.ts +193 -0
- package/src/vue/org-provider.ts +49 -0
- package/src/vue/use-auth.ts +139 -0
- 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 };
|
package/dist/svelte.cjs.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAuC;;;ACuDhC,SAAS,kBAAkB,QAAiC;AAClE,MAAI,QAAmB,OAAO;AAC9B,MAAI,YAAY;AAChB,MAAI,YAA0B;AAC9B,MAAI,YAA2B;AAE/B,QAAM,YAAY,oBAAI,IAAgB;AACtC,MAAI,WAAWA,eAAc;AAE7B,QAAM,kBAAkB,MAAY;AACnC,eAAWA,eAAc;AAAA,EAC1B;AAEA,QAAM,SAAS,MAAY;AAC1B,oBAAgB;AAChB,eAAW,YAAY,WAAW;AACjC,eAAS;AAAA,IACV;AAAA,EACD;AAEA,WAASA,iBAAqC;AAC7C,WAAO;AAAA,MACN;AAAA,MACA,MAAM,OAAO;AAAA,MACb,iBAAiB,UAAU;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACR;AAAA,EACD;AAEA,QAAM,eAAe,CAAC,UAAyB;AAC9C,gBAAY,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACjE,WAAO;AAAA,EACR;AAEA,QAAM,MAAM,OAAO,WAA+C;AACjE,gBAAY;AACZ,QAAI;AACH,YAAM,OAAO;AAAA,IACd,SAAS,OAAO;AACf,mBAAa,KAAK;AAAA,IACnB;AAAA,EACD;AAEA,QAAM,gBAAgB,OAAU,WAAgD;AAC/E,gBAAY;AACZ,QAAI;AACH,aAAO,MAAM,OAAO;AAAA,IACrB,SAAS,OAAO;AACf,mBAAa,KAAK;AAClB,aAAO;AAAA,IACR;AAAA,EACD;AAEA,QAAM,kBAAkB,OAAO,aAAa,CAAC,cAAc;AAC1D,YAAQ;AACR,WAAO;AAAA,EACR,CAAC;AAED,OAAK,OACH,WAAW,EACX,KAAK,MAAM;AACX,YAAQ,OAAO;AACf,gBAAY;AACZ,WAAO;AAAA,EACR,CAAC,EACA,MAAM,CAAC,UAAmB;AAC1B,gBAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AACpE,gBAAY;AACZ,WAAO;AAAA,EACR,CAAC;AAEF,SAAO;AAAA,IACN;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,UAAU,UAAU;AACnB,gBAAU,IAAI,QAAQ;AACtB,aAAO,MAAM;AACZ,kBAAU,OAAO,QAAQ;AAAA,MAC1B;AAAA,IACD;AAAA,IACA,QAAQ,CAAC,WACR,IAAI,YAAY;AACf,YAAM,OAAO,OAAO,MAAM;AAAA,IAC3B,CAAC;AAAA,IACF,QAAQ,CAAC,WACR,IAAI,YAAY;AACf,YAAM,OAAO,OAAO,MAAM;AAAA,IAC3B,CAAC;AAAA,IACF,iBAAiB,OAAO,UAAU,YAAY;AAC7C,kBAAY;AACZ,UAAI;AACH,eAAO,MAAM,OAAO,gBAAgB,UAAU,OAAO;AAAA,MACtD,SAAS,OAAO;AACf,qBAAa,KAAK;AAClB,cAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAC/D;AAAA,IACD;AAAA,IACA,qBAAqB,CAAC,UAAU,WAC/B,IAAI,YAAY;AACf,YAAM,OAAO,oBAAoB,UAAU,MAAM;AAAA,IAClD,CAAC;AAAA,IACF,0BAA0B,OAAO,UAAU,YAAY;AACtD,kBAAY;AACZ,UAAI;AACH,eAAO,MAAM,OAAO,yBAAyB,UAAU,OAAO;AAAA,MAC/D,SAAS,OAAO;AACf,qBAAa,KAAK;AAClB,cAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAC/D;AAAA,IACD;AAAA,IACA,WAAW,CAAC,UAAU,WAAW,cAAc,YAAY,OAAO,UAAU,UAAU,MAAM,CAAC;AAAA,IAC7F,oBAAoB,MACnB,cAAc,YAAY,OAAO,mBAAmB,CAAC,EAAE,KAAK,CAAC,UAAU,SAAS,CAAC,CAAC;AAAA,IACnF,aAAa,CAAC,aACb,IAAI,YAAY;AACf,YAAM,OAAO,YAAY,QAAQ;AAAA,IAClC,CAAC;AAAA,IACF,SAAS,MACR,IAAI,YAAY;AACf,YAAM,OAAO,QAAQ;AAAA,IACtB,CAAC;AAAA,IACF,UAAU;AACT,sBAAgB;AAChB,gBAAU,MAAM;AAAA,IACjB;AAAA,EACD;AACD;;;ADjLA,IAAM,iBAAiB,uBAAO,IAAI,kCAAkC;AAa7D,SAAS,iBAAiB,QAAsC;AACtE,QAAM,UAAU,kBAAkB,MAAM;AAExC,QAAM,QAA0B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA,IAAI,QAAQ;AACX,aAAO,QAAQ,YAAY,EAAE;AAAA,IAC9B;AAAA,IACA,IAAI,YAAY;AACf,aAAO,QAAQ,YAAY,EAAE;AAAA,IAC9B;AAAA,EACD;AAEA,gCAAW,gBAAgB,KAAK;AAChC,SAAO;AACR;AAEO,SAAS,iBAAmC;AAClD,QAAM,cAAU,0BAAyC,cAAc;AACvE,MAAI,CAAC,SAAS;AACb,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAEO,SAAS,oBAAoB,SAAiC;AACpE,UAAQ,QAAQ,QAAQ;AACzB;;;AEjDA,mBAAwC;AAwCjC,SAAS,kBAA2C;AAC1D,QAAM,EAAE,QAAQ,IAAI,eAAe;AAEnC,aAAO,uBAAwB,YAAY,OAAO,GAAG,CAAC,QAAQ;AAC7D,UAAM,OAAO,MAAY;AACxB,UAAI,YAAY,OAAO,CAAC;AAAA,IACzB;AACA,SAAK;AACL,WAAO,QAAQ,UAAU,IAAI;AAAA,EAC9B,CAAC;AACF;AAGO,IAAM,UAAU;AAEvB,SAAS,YAAY,SAAsE;AAC1F,QAAM,WAAW,QAAQ,YAAY;AACrC,SAAO;AAAA,IACN,GAAG;AAAA,IACH,QAAQ,CAAC,WAAW,QAAQ,OAAO,MAAM;AAAA,IACzC,QAAQ,CAAC,WAAW,QAAQ,OAAO,MAAM;AAAA,IACzC,iBAAiB,CAAC,UAAU,YAAY,QAAQ,gBAAgB,UAAU,OAAO;AAAA,IACjF,qBAAqB,CAAC,UAAU,WAAW,QAAQ,oBAAoB,UAAU,MAAM;AAAA,IACvF,0BAA0B,CAAC,UAAU,YACpC,QAAQ,yBAAyB,UAAU,OAAO;AAAA,IACnD,WAAW,CAAC,UAAU,WAAW,QAAQ,UAAU,UAAU,MAAM;AAAA,IACnE,oBAAoB,MAAM,QAAQ,mBAAmB;AAAA,IACrD,aAAa,CAAC,aAAa,QAAQ,YAAY,QAAQ;AAAA,IACvD,SAAS,MAAM,QAAQ,QAAQ;AAAA,EAChC;AACD;AAEO,SAAS,yBAAoD;AACnE,QAAM,EAAE,QAAQ,IAAI,eAAe;AACnC,aAAO,uBAA0B,QAAQ,YAAY,EAAE,MAAM,CAAC,QAAQ;AACrE,UAAM,OAAO,MAAY;AACxB,UAAI,QAAQ,YAAY,EAAE,IAAI;AAAA,IAC/B;AACA,SAAK;AACL,WAAO,QAAQ,UAAU,IAAI;AAAA,EAC9B,CAAC;AACF;AAGO,IAAM,iBAAiB;AAEvB,SAAS,wBAIb;AACF,QAAM,EAAE,QAAQ,IAAI,eAAe;AACnC,aAAO;AAAA,IACN;AAAA,MACC,OAAO,QAAQ,YAAY,EAAE;AAAA,MAC7B,iBAAiB,QAAQ,YAAY,EAAE;AAAA,MACvC,WAAW,QAAQ,YAAY,EAAE;AAAA,IAClC;AAAA,IACA,CAAC,QAAQ;AACR,YAAM,OAAO,MAAY;AACxB,cAAM,WAAW,QAAQ,YAAY;AACrC,YAAI;AAAA,UACH,OAAO,SAAS;AAAA,UAChB,iBAAiB,SAAS;AAAA,UAC1B,WAAW,SAAS;AAAA,QACrB,CAAC;AAAA,MACF;AACA,WAAK;AACL,aAAO,QAAQ,UAAU,IAAI;AAAA,IAC9B;AAAA,EACD;AACD;AAGO,IAAM,gBAAgB;;;AClH7B,IAAAC,iBAAuC;;;ACqBvC,IAAM,cAAsC;AAAA,EAC3C,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AACR;AAEO,SAAS,mBAAmB,aAA4B,cAA+B;AAC7F,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,eAAe,YAAY,WAAW,KAAK;AACjD,QAAM,gBAAgB,YAAY,YAAY,KAAK;AACnD,SAAO,gBAAgB;AACxB;AAKO,SAAS,iBAAiB,QAA+B;AAC/D,MAAI,WAAW,cAAc,MAAM;AACnC,QAAM,YAAY,oBAAI,IAAgB;AAEtC,QAAM,SAAS,MAAY;AAC1B,eAAW,cAAc,MAAM;AAC/B,eAAW,YAAY,WAAW;AACjC,eAAS;AAAA,IACV;AAAA,EACD;AAEA,QAAM,uBAAuB,OAAO,YAAY,MAAM;AAEtD,SAAO;AAAA,IACN;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,UAAU,UAAkC;AAC3C,gBAAU,IAAI,QAAQ;AACtB,aAAO,MAAM;AACZ,kBAAU,OAAO,QAAQ;AAAA,MAC1B;AAAA,IACD;AAAA,IACA,gBAAgB,cAA+B;AAC9C,aAAO,mBAAmB,SAAS,MAAM,YAAY;AAAA,IACtD;AAAA,IACA,UAAgB;AACf,2BAAqB;AACrB,gBAAU,MAAM;AAAA,IACjB;AAAA,EACD;AACD;AAEA,SAAS,cAAc,QAAgC;AACtD,SAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACd,KAAK,OAAO;AAAA,IACZ,MAAM,OAAO;AAAA,EACd;AACD;AAYO,SAAS,wBACf,QACA,OACA,SACuB;AACvB,SAAO;AAAA,IACN,MAAM,UAAyB;AAC9B,YAAM,OAAO,YAAY,KAAK;AAAA,IAC/B;AAAA,IACA,MAAM,OAAO,OAAe,MAAyC;AACpE,UAAI;AACH,eAAO,MAAM,OAAO,aAAa,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,MACxD,SAAS,OAAO;AACf,cAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,gBAAQ,OAAO;AACf,cAAM;AAAA,MACP;AAAA,IACD;AAAA,IACA,MAAM,aAAa,QAA+B;AACjD,UAAI;AACH,cAAM,OAAO,aAAa,OAAO,MAAM;AAAA,MACxC,SAAS,OAAO;AACf,gBAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAC/D;AAAA,IACD;AAAA,IACA,MAAM,WAAW,QAAgB,MAA6B;AAC7D,UAAI;AACH,cAAM,OAAO,iBAAiB,OAAO,QAAQ,IAAI;AAAA,MAClD,SAAS,OAAO;AACf,gBAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAC/D;AAAA,IACD;AAAA,EACD;AACD;AAEA,eAAsB,eACrB,QACA,OAC8B;AAC9B,SAAO,OAAO,YAAY,KAAK;AAChC;;;AD5HA,IAAM,gBAAgB,uBAAO,IAAI,iCAAiC;AAO3D,SAAS,gBAAgB,QAAoC;AACnE,QAAM,UAAU,iBAAiB,MAAM;AACvC,QAAM,QAAyB,EAAE,QAAQ,QAAQ;AACjD,iCAAW,eAAe,KAAK;AAC/B,SAAO;AACR;AAEO,SAAS,gBAAiC;AAChD,QAAM,cAAU,2BAAwC,aAAa;AACrE,MAAI,CAAC,SAAS;AACb,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAEO,SAAS,mBAAmB,SAAgC;AAClE,UAAQ,QAAQ,QAAQ;AACzB;;;AE/BA,IAAAC,gBAAgE;AAsChE,SAAS,yBAIN;AACF,QAAM,EAAE,QAAQ,IAAI,cAAc;AAElC,aAAO,wBAAS,QAAQ,YAAY,GAAG,CAAC,QAAQ;AAC/C,QAAI,QAAQ,YAAY,CAAC;AACzB,WAAO,QAAQ,UAAU,MAAM;AAC9B,UAAI,QAAQ,YAAY,CAAC;AAAA,IAC1B,CAAC;AAAA,EACF,CAAC;AACF;AAEO,SAAS,SAAuB;AACtC,QAAM,EAAE,QAAQ,QAAQ,IAAI,cAAc;AAC1C,QAAM,gBAAgB,uBAAuB;AAC7C,QAAM,YAAQ,wBAAwB,IAAI;AAE1C,QAAM,YAAQ,uBAAQ,CAAC,eAAe,KAAK,GAAG,CAAC,CAAC,UAAU,UAAU,OAAO;AAAA,IAC1E,GAAG;AAAA,IACH,OAAO;AAAA,EACR,EAAE;AAEF,QAAM,YAAY,OAAO,UAAiC;AACzD,UAAM,IAAI,IAAI;AACd,QAAI;AACH,YAAM,OAAO,UAAU,KAAK;AAAA,IAC7B,SAAS,KAAK;AACb,YAAM,IAAI,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAC3D;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,WAGU;AAClC,UAAM,IAAI,IAAI;AACd,QAAI;AACH,aAAO,MAAM,OAAO,UAAU,MAAM;AAAA,IACrC,SAAS,KAAK;AACb,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC/D,YAAM,IAAI,OAAO;AACjB,YAAM;AAAA,IACP;AAAA,EACD;AAEA,QAAM,WAAW,YAA2B;AAC3C,UAAM,YAAQ,mBAAI,aAAa,EAAE;AACjC,QAAI,CAAC,MAAO;AACZ,UAAM,IAAI,IAAI;AACd,QAAI;AACH,YAAM,OAAO,SAAS,KAAK;AAAA,IAC5B,SAAS,KAAK;AACb,YAAM,IAAI,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAC3D;AAAA,EACD;AAEA,QAAM,WAAW,MAAY;AAC5B,WAAO,eAAe;AAAA,EACvB;AAEA,QAAM,WAAW,YAA2C;AAC3D,QAAI;AACH,aAAO,MAAM,OAAO,SAAS;AAAA,IAC9B,SAAS,KAAK;AACb,YAAM,IAAI,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAC1D,aAAO,CAAC;AAAA,IACT;AAAA,EACD;AAEA,SAAO;AAAA,IACN,WAAW,MAAM;AAAA,IACjB,IAAI,MAAM;AACT,iBAAO,mBAAI,aAAa,EAAE;AAAA,IAC3B;AAAA,IACA,IAAI,OAAO;AACV,iBAAO,mBAAI,aAAa,EAAE;AAAA,IAC3B;AAAA,IACA,IAAI,QAAQ;AACX,iBAAO,mBAAI,aAAa,EAAE;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,cAAc,OAAoC;AACjE,QAAM,EAAE,OAAO,IAAI,cAAc;AACjC,QAAM,cAAU,wBAA6B,CAAC,CAAC;AAC/C,QAAM,gBAAY,wBAAS,IAAI;AAC/B,QAAM,YAAQ,wBAAwB,IAAI;AAE1C,QAAM,UAAU,OAAO,gBAAuC;AAC7D,cAAU,IAAI,IAAI;AAClB,UAAM,IAAI,IAAI;AACd,QAAI;AACH,cAAQ,IAAI,MAAM,eAAe,QAAQ,WAAW,CAAC;AAAA,IACtD,SAAS,KAAK;AACb,YAAM,IAAI,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAC3D,UAAE;AACD,gBAAU,IAAI,KAAK;AAAA,IACpB;AAAA,EACD;AAEA,UAAQ,MAAM;AACb,SAAK,QAAQ,KAAK;AAAA,EACnB,CAAC;AAED,QAAM,UAAU,wBAAwB,QAAQ,OAAO,CAAC,YAAY;AACnE,UAAM,IAAI,OAAO;AAAA,EAClB,CAAC;AAED,QAAM,SAAS,OAAO,OAAe,SAA4C;AAChF,UAAM,SAAS,MAAM,QAAQ,OAAO,OAAO,IAAI;AAC/C,UAAM,QAAQ,KAAK;AACnB,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,OAAO,WAAkC;AAC7D,UAAM,QAAQ,aAAa,MAAM;AACjC,UAAM,QAAQ,KAAK;AAAA,EACpB;AAEA,QAAM,aAAa,OAAO,QAAgB,SAAgC;AACzE,UAAM,QAAQ,WAAW,QAAQ,IAAI;AACrC,UAAM,QAAQ,KAAK;AAAA,EACpB;AAEA,QAAM,YAAQ,uBAAQ,CAAC,SAAS,WAAW,KAAK,GAAG,CAAC,CAAC,YAAY,SAAS,UAAU,OAAO;AAAA,IAC1F,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,EACR,EAAE;AAEF,SAAO;AAAA,IACN,WAAW,MAAM;AAAA,IACjB,SAAS,MAAM,QAAQ,KAAK;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,sBAAsB,cAAyC;AAC9E,QAAM,EAAE,QAAQ,IAAI,cAAc;AAElC,aAAO,wBAAS,QAAQ,gBAAgB,YAAY,GAAG,CAAC,QAAQ;AAC/D,QAAI,QAAQ,gBAAgB,YAAY,CAAC;AACzC,WAAO,QAAQ,UAAU,MAAM;AAC9B,UAAI,QAAQ,gBAAgB,YAAY,CAAC;AAAA,IAC1C,CAAC;AAAA,EACF,CAAC;AACF;AAGO,IAAM,gBAAgB;","names":["buildSnapshot","import_svelte","import_store"]}
|
package/dist/svelte.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as AuthClient,
|
|
2
|
-
export {
|
|
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,
|
|
2
|
-
export {
|
|
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 };
|
package/dist/svelte.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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.
|
|
3
|
+
"version": "1.0.0-beta.13",
|
|
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
|
|
67
|
-
"src
|
|
66
|
+
"src",
|
|
67
|
+
"!src/**/*.test.ts"
|
|
68
68
|
],
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@korajs/core": "1.0.0-beta.
|
|
70
|
+
"@korajs/core": "1.0.0-beta.13"
|
|
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/
|
|
82
|
-
"@korajs/
|
|
83
|
-
"@korajs/
|
|
81
|
+
"@korajs/server": "1.0.0-beta.13",
|
|
82
|
+
"@korajs/store": "1.0.0-beta.13",
|
|
83
|
+
"@korajs/sync": "1.0.0-beta.13"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
86
|
"react": "^18.0.0 || ^19.0.0",
|