@ghostly-solutions/auth 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/auth-endpoints.ts","../src/constants/http-status.ts","../src/errors/auth-sdk-error.ts","../src/types/auth-error-code.ts","../src/core/object-guards.ts","../src/core/session-parser.ts","../src/adapters/next/server-session.ts","../src/adapters/next/auth-kit.ts","../src/constants/auth-keys.ts","../src/core/broadcast-sync.ts","../src/core/callback-url.ts","../src/core/http-client.ts","../src/core/runtime.ts","../src/core/return-to-storage.ts","../src/core/session-store.ts","../src/core/auth-client.ts","../src/adapters/next/client-guard.ts"],"names":["request","createPendingRedirectPromise"],"mappings":"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","file":"next.js","sourcesContent":["const authApiPrefix = \"/v1/auth\";\n\nexport const authEndpoints = {\n loginStart: `${authApiPrefix}/keycloak/login`,\n validateKeycloakToken: `${authApiPrefix}/keycloak/validate`,\n session: `${authApiPrefix}/me`,\n logout: `${authApiPrefix}/logout`,\n} as const;\n","export const httpStatus = {\n ok: 200,\n found: 302,\n noContent: 204,\n badRequest: 400,\n unauthorized: 401,\n} as const;\n","import type { AuthErrorCode } from \"../types/auth-error-code\";\n\nexport interface AuthSdkErrorPayload {\n code: AuthErrorCode;\n details: unknown;\n message: string;\n status: number | null;\n}\n\nexport class AuthSdkError extends Error {\n readonly code: AuthErrorCode;\n readonly details: unknown;\n readonly status: number | null;\n\n constructor(payload: AuthSdkErrorPayload) {\n super(payload.message);\n this.name = \"AuthSdkError\";\n this.code = payload.code;\n this.details = payload.details;\n this.status = payload.status;\n }\n}\n","export const authErrorCode = {\n callbackMissingToken: \"callback_missing_token\",\n callbackInvalidToken: \"callback_invalid_token\",\n callbackValidationFailed: \"callback_validation_failed\",\n unauthorized: \"unauthorized\",\n networkError: \"network_error\",\n apiError: \"api_error\",\n broadcastChannelUnsupported: \"broadcast_channel_unsupported\",\n serverOriginResolutionFailed: \"server_origin_resolution_failed\",\n} as const;\n\nexport type AuthErrorCode = (typeof authErrorCode)[keyof typeof authErrorCode];\n","export function isObjectRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function isStringValue(value: unknown): value is string {\n return typeof value === \"string\";\n}\n","import type { GhostlySession } from \"../types/ghostly-session\";\nimport { isObjectRecord, isStringValue } from \"./object-guards\";\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every((entry) => isStringValue(entry));\n}\n\nexport function isGhostlySession(value: unknown): value is GhostlySession {\n if (!isObjectRecord(value)) {\n return false;\n }\n\n return (\n isStringValue(value.id) &&\n isStringValue(value.username) &&\n (value.firstName === null || isStringValue(value.firstName)) &&\n (value.lastName === null || isStringValue(value.lastName)) &&\n isStringValue(value.email) &&\n isStringValue(value.role) &&\n isStringArray(value.permissions)\n );\n}\n","import { authEndpoints } from \"../../constants/auth-endpoints\";\nimport { httpStatus } from \"../../constants/http-status\";\nimport { isGhostlySession } from \"../../core/session-parser\";\nimport { AuthSdkError } from \"../../errors/auth-sdk-error\";\nimport { authErrorCode } from \"../../types/auth-error-code\";\nimport type { GhostlySession } from \"../../types/ghostly-session\";\n\nconst hostHeaderName = \"x-forwarded-host\";\nconst fallbackHostHeaderName = \"host\";\nconst forwardedProtoHeaderName = \"x-forwarded-proto\";\nconst defaultProtocol = \"https\";\nconst protocolSeparator = \"://\";\n\nconst forwardedSessionHeaderNames = [\"cookie\", \"authorization\", \"x-request-id\"] as const;\n\nexport interface ServerSessionOptions {\n fetchImplementation?: typeof fetch;\n headers: Headers;\n protocol?: string;\n}\n\nfunction resolveServerOrigin(options: ServerSessionOptions): string {\n const host = options.headers.get(hostHeaderName) ?? options.headers.get(fallbackHostHeaderName);\n\n if (!host) {\n throw new AuthSdkError({\n code: authErrorCode.serverOriginResolutionFailed,\n details: null,\n message: \"Cannot resolve server origin from request headers.\",\n status: null,\n });\n }\n\n const protocol =\n options.protocol ?? options.headers.get(forwardedProtoHeaderName) ?? defaultProtocol;\n\n return `${protocol}${protocolSeparator}${host}`;\n}\n\nfunction forwardSessionHeaders(headers: Headers): Headers {\n const forwarded = new Headers();\n\n for (const headerName of forwardedSessionHeaderNames) {\n const value = headers.get(headerName);\n\n if (value) {\n forwarded.set(headerName, value);\n }\n }\n\n return forwarded;\n}\n\nfunction parseSessionPayload(payload: unknown): GhostlySession | null {\n if (payload === null) {\n return null;\n }\n\n if (!isGhostlySession(payload)) {\n throw new AuthSdkError({\n code: authErrorCode.apiError,\n details: payload,\n message: \"Session payload has invalid shape.\",\n status: null,\n });\n }\n\n return payload;\n}\n\nexport async function getServerSession(\n options: ServerSessionOptions,\n): Promise<GhostlySession | null> {\n const fetchImplementation = options.fetchImplementation ?? fetch;\n const origin = resolveServerOrigin(options);\n const response = await fetchImplementation(`${origin}${authEndpoints.session}`, {\n cache: \"no-store\",\n credentials: \"include\",\n headers: forwardSessionHeaders(options.headers),\n method: \"GET\",\n });\n\n if (response.status === httpStatus.ok) {\n const payload = await response.json();\n return parseSessionPayload(payload);\n }\n\n if (response.status === httpStatus.unauthorized) {\n throw new AuthSdkError({\n code: authErrorCode.unauthorized,\n details: null,\n message: \"Unauthorized server session request.\",\n status: response.status,\n });\n }\n\n throw new AuthSdkError({\n code: authErrorCode.apiError,\n details: null,\n message: \"Unexpected server session response.\",\n status: response.status,\n });\n}\n\nexport async function requireServerSession(options: ServerSessionOptions): Promise<GhostlySession> {\n const session = await getServerSession(options);\n\n if (session) {\n return session;\n }\n\n throw new AuthSdkError({\n code: authErrorCode.unauthorized,\n details: null,\n message: \"Authenticated session is required.\",\n status: httpStatus.unauthorized,\n });\n}\n","import { authEndpoints } from \"../../constants/auth-endpoints\";\nimport { httpStatus } from \"../../constants/http-status\";\nimport { AuthSdkError } from \"../../errors/auth-sdk-error\";\nimport type { AuthErrorPayload, KeycloakValidateResponse } from \"../../types/auth-api-contract\";\nimport { authErrorCode } from \"../../types/auth-error-code\";\nimport type { GhostlySession } from \"../../types/ghostly-session\";\nimport { getServerSession } from \"./server-session\";\n\nconst defaultCallbackToken = \"mock-keycloak-token\";\nconst defaultCookieName = \"gs_auth_session\";\nconst defaultCookieValue = \"mock-session-super-admin\";\nconst defaultFrontendCallbackPath = \"/auth/callback\";\nconst callbackCodePrefix = \"mock_code_\";\nconst callbackStatePrefix = \"mock_state_\";\nconst clearCookieDate = \"Thu, 01 Jan 1970 00:00:00 GMT\";\nconst proxyForwardedHeaderNames = [\n \"accept-language\",\n \"authorization\",\n \"cookie\",\n \"content-type\",\n \"x-request-id\",\n] as const;\n\ntype CookieSecureMode = \"auto\" | boolean;\n\nfunction defaultMockSessionFactory(): GhostlySession {\n return {\n id: \"123\",\n username: \"john_doe\",\n firstName: \"John\",\n lastName: \"Doe\",\n email: \"john.doe@ghostlysolutions.ae\",\n role: \"superAdmin\",\n permissions: [\n \"users:view\",\n \"tasks:view\",\n \"analytics:view\",\n \"settings:view\",\n \"audit-logs:view\",\n \"admins:view\",\n ],\n };\n}\n\nfunction createErrorPayload(\n code: string,\n message: string,\n details: unknown = null,\n): AuthErrorPayload {\n return { code, message, details };\n}\n\nfunction toJsonResponse(payload: unknown, status: number): Response {\n return new Response(JSON.stringify(payload), {\n status,\n headers: {\n \"content-type\": \"application/json\",\n },\n });\n}\n\nfunction parseCookieValue(cookieHeader: string | null, cookieName: string): string | null {\n if (!cookieHeader) {\n return null;\n }\n\n const prefix = `${cookieName}=`;\n const pairs = cookieHeader.split(\";\").map((pair) => pair.trim());\n const match = pairs.find((pair) => pair.startsWith(prefix));\n\n return match ? match.slice(prefix.length) : null;\n}\n\nfunction shouldForwardBody(method: string): boolean {\n const normalized = method.toUpperCase();\n return normalized !== \"GET\" && normalized !== \"HEAD\";\n}\n\nfunction resolveSecureCookie(requestUrl: URL, secureMode: CookieSecureMode): boolean {\n if (typeof secureMode === \"boolean\") {\n return secureMode;\n }\n\n if (requestUrl.protocol !== \"https:\") {\n return false;\n }\n\n const hostname = requestUrl.hostname.toLowerCase();\n return hostname !== \"localhost\" && hostname !== \"127.0.0.1\";\n}\n\nfunction toSetCookieHeader(options: {\n cookieName: string;\n cookieValue: string;\n secure: boolean;\n clear?: boolean;\n}): string {\n const attributes = [\"Path=/\", \"HttpOnly\", \"SameSite=Lax\"];\n\n if (options.secure) {\n attributes.push(\"Secure\");\n }\n\n if (options.clear) {\n attributes.push(\"Max-Age=0\");\n attributes.push(`Expires=${clearCookieDate}`);\n }\n\n return `${options.cookieName}=${options.cookieValue}; ${attributes.join(\"; \")}`;\n}\n\nasync function proxyRequest(baseUrl: string, request: Request): Promise<Response> {\n const incomingUrl = new URL(request.url);\n const targetUrl = new URL(incomingUrl.pathname + incomingUrl.search, baseUrl);\n const proxyHeaders = new Headers();\n\n for (const headerName of proxyForwardedHeaderNames) {\n const value = request.headers.get(headerName);\n if (value) {\n proxyHeaders.set(headerName, value);\n }\n }\n\n const body = shouldForwardBody(request.method) ? await request.text() : undefined;\n const upstreamResponse = await fetch(targetUrl, {\n method: request.method,\n headers: proxyHeaders,\n cache: \"no-store\",\n redirect: \"manual\",\n ...(body !== undefined ? { body } : {}),\n });\n\n const responseHeaders = new Headers();\n for (const [headerName, headerValue] of upstreamResponse.headers.entries()) {\n responseHeaders.set(headerName, headerValue);\n }\n\n return new Response(upstreamResponse.body, {\n status: upstreamResponse.status,\n headers: responseHeaders,\n });\n}\n\nasync function resolveNextHeaders(): Promise<Headers> {\n try {\n const importNextHeaders = new Function(\"return import('next/headers')\") as () => Promise<{\n headers: () => Headers | Promise<Headers>;\n }>;\n const nextHeaders = await importNextHeaders();\n const resolved = await nextHeaders.headers();\n return resolved;\n } catch (error) {\n throw new AuthSdkError({\n code: authErrorCode.serverOriginResolutionFailed,\n details: error,\n message: \"Unable to resolve Next request headers.\",\n status: null,\n });\n }\n}\n\nfunction resolveNextProtocol(headers: Headers, explicitProtocol?: string): string {\n if (explicitProtocol) {\n return explicitProtocol;\n }\n\n const forwarded = headers.get(\"x-forwarded-proto\");\n if (forwarded) {\n return forwarded;\n }\n\n const host = headers.get(\"x-forwarded-host\") ?? headers.get(\"host\");\n if (!host) {\n return \"https\";\n }\n\n const normalizedHost = host.toLowerCase();\n return normalizedHost.includes(\"localhost\") || normalizedHost.includes(\"127.0.0.1\")\n ? \"http\"\n : \"https\";\n}\n\nfunction normalizeMockToken(payload: unknown): string | null {\n if (typeof payload !== \"object\" || payload === null || Array.isArray(payload)) {\n return null;\n }\n\n const recordPayload = payload as Record<string, unknown>;\n const keys = Object.keys(recordPayload);\n if (keys.length !== 1 || !keys.includes(\"token\")) {\n return null;\n }\n\n const tokenValue = recordPayload.token;\n if (typeof tokenValue !== \"string\") {\n return null;\n }\n\n const normalized = tokenValue.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nexport interface NextServerSessionRuntimeOptions {\n fetchImplementation?: typeof fetch;\n headers?: Headers;\n protocol?: string;\n}\n\nexport async function getNextServerSession(\n options: NextServerSessionRuntimeOptions = {},\n): Promise<GhostlySession | null> {\n const headers = options.headers ?? (await resolveNextHeaders());\n const protocol = resolveNextProtocol(headers, options.protocol);\n\n return getServerSession({\n headers,\n protocol,\n ...(options.fetchImplementation ? { fetchImplementation: options.fetchImplementation } : {}),\n });\n}\n\nexport async function tryGetNextServerSession(\n options: NextServerSessionRuntimeOptions = {},\n): Promise<GhostlySession | null> {\n try {\n return await getNextServerSession(options);\n } catch {\n return null;\n }\n}\n\nexport async function requireNextServerSession(\n options: NextServerSessionRuntimeOptions = {},\n): Promise<GhostlySession> {\n const session = await getNextServerSession(options);\n if (session) {\n return session;\n }\n\n throw new AuthSdkError({\n code: authErrorCode.unauthorized,\n details: null,\n message: \"Authenticated session is required.\",\n status: httpStatus.unauthorized,\n });\n}\n\nexport interface NextProxyRouteHandlersOptions {\n baseUrl: string;\n}\n\nexport interface NextMockRouteHandlersOptions {\n callbackToken?: string;\n cookieName?: string;\n cookieSecure?: CookieSecureMode;\n cookieValue?: string;\n createSession?: () => GhostlySession;\n frontendCallbackPath?: string;\n}\n\nexport interface NextAuthRouteHandlersOptions {\n mock?: NextMockRouteHandlersOptions;\n mode: \"mock\" | \"proxy\";\n proxy?: NextProxyRouteHandlersOptions;\n}\n\nexport interface NextAuthRouteHandlers {\n keycloakCallbackGet: (request: Request) => Promise<Response>;\n keycloakLoginGet: (request: Request) => Promise<Response>;\n keycloakValidatePost: (request: Request) => Promise<Response>;\n meGet: (request: Request) => Promise<Response>;\n logoutPost: (request: Request) => Promise<Response>;\n}\n\nexport function createNextAuthRouteHandlers(\n options: NextAuthRouteHandlersOptions,\n): NextAuthRouteHandlers {\n const callbackToken = options.mock?.callbackToken ?? defaultCallbackToken;\n const cookieName = options.mock?.cookieName ?? defaultCookieName;\n const cookieValue = options.mock?.cookieValue ?? defaultCookieValue;\n const cookieSecure = options.mock?.cookieSecure ?? \"auto\";\n const frontendCallbackPath = options.mock?.frontendCallbackPath ?? defaultFrontendCallbackPath;\n const createSession = options.mock?.createSession ?? defaultMockSessionFactory;\n\n const proxyOptions = options.proxy;\n if (options.mode === \"proxy\" && !proxyOptions?.baseUrl) {\n throw new AuthSdkError({\n code: authErrorCode.apiError,\n details: null,\n message: \"proxy.baseUrl is required in proxy mode.\",\n status: null,\n });\n }\n\n const proxyIfNeeded = async (request: Request): Promise<Response | null> => {\n if (options.mode !== \"proxy\") {\n return null;\n }\n\n return proxyRequest(proxyOptions?.baseUrl ?? \"\", request);\n };\n\n return {\n keycloakLoginGet: async (request: Request) => {\n const proxied = await proxyIfNeeded(request);\n if (proxied) {\n return proxied;\n }\n\n const code = `${callbackCodePrefix}${crypto.randomUUID()}`;\n const state = `${callbackStatePrefix}${crypto.randomUUID()}`;\n const redirectTarget = `${authEndpoints.loginStart.replace(\"/login\", \"/callback\")}?code=${encodeURIComponent(code)}&state=${encodeURIComponent(state)}`;\n\n return new Response(null, {\n status: httpStatus.found,\n headers: {\n location: redirectTarget,\n },\n });\n },\n\n keycloakCallbackGet: async (request: Request) => {\n const proxied = await proxyIfNeeded(request);\n if (proxied) {\n return proxied;\n }\n\n const requestUrl = new URL(request.url);\n const code = requestUrl.searchParams.get(\"code\")?.trim();\n const state = requestUrl.searchParams.get(\"state\")?.trim();\n\n if (!(code && state)) {\n return toJsonResponse(\n createErrorPayload(\"bad_request\", \"code and state are required.\"),\n httpStatus.badRequest,\n );\n }\n\n const callbackUrl = `${frontendCallbackPath}?token=${encodeURIComponent(callbackToken)}`;\n\n return new Response(null, {\n status: httpStatus.found,\n headers: {\n location: callbackUrl,\n },\n });\n },\n\n keycloakValidatePost: async (request: Request) => {\n const proxied = await proxyIfNeeded(request);\n if (proxied) {\n return proxied;\n }\n\n let payload: unknown;\n try {\n payload = await request.json();\n } catch {\n return toJsonResponse(\n createErrorPayload(\"bad_request\", \"Request payload must be valid JSON.\"),\n httpStatus.badRequest,\n );\n }\n\n const token = normalizeMockToken(payload);\n if (!token) {\n return toJsonResponse(\n createErrorPayload(\n \"bad_request\",\n \"Request payload must contain only non-empty token field.\",\n ),\n httpStatus.badRequest,\n );\n }\n\n if (token !== callbackToken) {\n return toJsonResponse(\n createErrorPayload(\"unauthorized\", \"Callback token is invalid or expired.\"),\n httpStatus.unauthorized,\n );\n }\n\n const session = createSession();\n const responsePayload: KeycloakValidateResponse = { session };\n const secure = resolveSecureCookie(new URL(request.url), cookieSecure);\n\n return new Response(JSON.stringify(responsePayload), {\n status: httpStatus.ok,\n headers: {\n \"content-type\": \"application/json\",\n \"set-cookie\": toSetCookieHeader({\n cookieName,\n cookieValue,\n secure,\n }),\n },\n });\n },\n\n meGet: async (request: Request) => {\n const proxied = await proxyIfNeeded(request);\n if (proxied) {\n return proxied;\n }\n\n const cookie = request.headers.get(\"cookie\");\n const session = parseCookieValue(cookie, cookieName) === cookieValue ? createSession() : null;\n\n return toJsonResponse(session, httpStatus.ok);\n },\n\n logoutPost: async (request: Request) => {\n const proxied = await proxyIfNeeded(request);\n if (proxied) {\n return proxied;\n }\n\n const secure = resolveSecureCookie(new URL(request.url), cookieSecure);\n\n return new Response(null, {\n status: httpStatus.noContent,\n headers: {\n \"set-cookie\": toSetCookieHeader({\n cookieName,\n cookieValue: \"\",\n secure,\n clear: true,\n }),\n },\n });\n },\n };\n}\n","export const authQueryKeys = {\n token: \"token\",\n} as const;\n\nexport const authStorageKeys = {\n returnTo: \"ghostly-auth:return-to\",\n} as const;\n\nexport const authBroadcast = {\n channelName: \"ghostly-auth-channel\",\n sessionUpdatedEvent: \"session-updated\",\n} as const;\n\nexport const authRoutes = {\n root: \"/\",\n callback: \"/auth/callback\",\n} as const;\n","import { authBroadcast } from \"../constants/auth-keys\";\nimport { AuthSdkError } from \"../errors/auth-sdk-error\";\nimport { authErrorCode } from \"../types/auth-error-code\";\nimport type { GhostlySession } from \"../types/ghostly-session\";\nimport { isObjectRecord, isStringValue } from \"./object-guards\";\nimport { isGhostlySession } from \"./session-parser\";\n\ninterface SessionUpdatedMessage {\n session: GhostlySession | null;\n type: typeof authBroadcast.sessionUpdatedEvent;\n}\n\nexport interface BroadcastSync {\n close(): void;\n publishSession(session: GhostlySession | null): void;\n}\n\ninterface CreateBroadcastSyncOptions {\n onSessionUpdated: (session: GhostlySession | null) => void;\n}\n\nfunction isSessionUpdatedMessage(value: unknown): value is SessionUpdatedMessage {\n if (!isObjectRecord(value)) {\n return false;\n }\n\n if (!isStringValue(value.type)) {\n return false;\n }\n\n if (value.type !== authBroadcast.sessionUpdatedEvent) {\n return false;\n }\n\n return value.session === null || isGhostlySession(value.session);\n}\n\nfunction createUnsupportedBroadcastChannelError(): AuthSdkError {\n return new AuthSdkError({\n code: authErrorCode.broadcastChannelUnsupported,\n details: null,\n message: \"BroadcastChannel is unavailable in this runtime.\",\n status: null,\n });\n}\n\nexport function createBroadcastSync(options: CreateBroadcastSyncOptions): BroadcastSync {\n if (typeof BroadcastChannel === \"undefined\") {\n throw createUnsupportedBroadcastChannelError();\n }\n\n const channel = new BroadcastChannel(authBroadcast.channelName);\n\n const onMessage: EventListener = (event) => {\n const messageEvent = event as MessageEvent<unknown>;\n\n if (!isSessionUpdatedMessage(messageEvent.data)) {\n return;\n }\n\n options.onSessionUpdated(messageEvent.data.session);\n };\n\n channel.addEventListener(\"message\", onMessage);\n\n return {\n close() {\n channel.removeEventListener(\"message\", onMessage);\n channel.close();\n },\n publishSession(session) {\n const payload: SessionUpdatedMessage = {\n session,\n type: authBroadcast.sessionUpdatedEvent,\n };\n\n channel.postMessage(payload);\n },\n };\n}\n","import { authQueryKeys } from \"../constants/auth-keys\";\n\nexport function readCallbackToken(url: URL): string | null {\n return url.searchParams.get(authQueryKeys.token);\n}\n\nexport function removeCallbackToken(url: URL): URL {\n const nextUrl = new URL(url.toString());\n nextUrl.searchParams.delete(authQueryKeys.token);\n return nextUrl;\n}\n\nexport function replaceBrowserHistory(url: URL): void {\n window.history.replaceState(null, \"\", url.toString());\n}\n","import { httpStatus } from \"../constants/http-status\";\nimport { AuthSdkError } from \"../errors/auth-sdk-error\";\nimport { authErrorCode } from \"../types/auth-error-code\";\nimport { isObjectRecord, isStringValue } from \"./object-guards\";\n\nconst jsonContentType = \"application/json\";\nconst jsonHeaderName = \"content-type\";\nconst includeCredentials: RequestCredentials = \"include\";\nconst noStoreCache: RequestCache = \"no-store\";\n\ninterface RequestOptions<TBody> {\n body?: TBody;\n expectedStatus?: number;\n method: \"GET\" | \"POST\";\n path: string;\n}\n\ninterface ParsedErrorPayload {\n code: string | null;\n details: unknown;\n message: string | null;\n}\n\nfunction toTypedValue<TValue>(value: unknown): TValue {\n return value as TValue;\n}\n\nfunction mapHttpStatusToAuthErrorCode(status: number) {\n if (status === httpStatus.unauthorized) {\n return authErrorCode.unauthorized;\n }\n\n return authErrorCode.apiError;\n}\n\nasync function parseJsonPayload(response: Response): Promise<unknown> {\n try {\n return await response.json();\n } catch {\n return null;\n }\n}\n\nasync function parseErrorPayload(response: Response): Promise<ParsedErrorPayload> {\n const payload = await parseJsonPayload(response);\n\n if (!isObjectRecord(payload)) {\n return {\n code: null,\n details: null,\n message: null,\n };\n }\n\n const maybeCode = payload.code;\n const maybeMessage = payload.message;\n\n return {\n code: isStringValue(maybeCode) ? maybeCode : null,\n details: \"details\" in payload ? payload.details : null,\n message: isStringValue(maybeMessage) ? maybeMessage : null,\n };\n}\n\nfunction buildApiErrorMessage(method: RequestOptions<unknown>[\"method\"], path: string): string {\n return `Auth API request failed: ${method} ${path}`;\n}\n\nfunction buildNetworkErrorMessage(method: RequestOptions<unknown>[\"method\"], path: string): string {\n return `Auth API network failure: ${method} ${path}`;\n}\n\nasync function request<TResponse, TBody = undefined>(\n options: RequestOptions<TBody>,\n): Promise<TResponse> {\n const expectedStatus = options.expectedStatus ?? httpStatus.ok;\n const headers = new Headers();\n const hasBody = typeof options.body !== \"undefined\";\n\n if (hasBody) {\n headers.set(jsonHeaderName, jsonContentType);\n }\n\n const requestInit: RequestInit = {\n cache: noStoreCache,\n credentials: includeCredentials,\n headers,\n method: options.method,\n };\n\n if (hasBody) {\n requestInit.body = JSON.stringify(options.body);\n }\n\n let response: Response;\n\n try {\n response = await fetch(options.path, requestInit);\n } catch (error) {\n throw new AuthSdkError({\n code: authErrorCode.networkError,\n details: error,\n message: buildNetworkErrorMessage(options.method, options.path),\n status: null,\n });\n }\n\n if (response.status !== expectedStatus) {\n const parsed = await parseErrorPayload(response);\n\n throw new AuthSdkError({\n code: mapHttpStatusToAuthErrorCode(response.status),\n details: {\n apiCode: parsed.code,\n apiDetails: parsed.details,\n },\n message: parsed.message ?? buildApiErrorMessage(options.method, options.path),\n status: response.status,\n });\n }\n\n if (response.status === httpStatus.noContent) {\n return toTypedValue<TResponse>(null);\n }\n\n const payload = await parseJsonPayload(response);\n return toTypedValue<TResponse>(payload);\n}\n\nexport function getJson<TResponse>(path: string): Promise<TResponse> {\n return request<TResponse>({\n method: \"GET\",\n path,\n });\n}\n\nexport function postJson<TResponse, TBody>(path: string, body: TBody): Promise<TResponse> {\n return request<TResponse, TBody>({\n body,\n method: \"POST\",\n path,\n });\n}\n\nexport function postEmpty(path: string): Promise<null> {\n return request<null>({\n expectedStatus: httpStatus.noContent,\n method: \"POST\",\n path,\n });\n}\n","import { AuthSdkError } from \"../errors/auth-sdk-error\";\nimport { authErrorCode } from \"../types/auth-error-code\";\n\nconst browserRuntimeErrorMessage = \"Browser runtime is required for this auth operation.\";\n\nexport function isBrowserRuntime(): boolean {\n return typeof window !== \"undefined\";\n}\n\nexport function assertBrowserRuntime(): void {\n if (isBrowserRuntime()) {\n return;\n }\n\n throw new AuthSdkError({\n code: authErrorCode.apiError,\n details: null,\n message: browserRuntimeErrorMessage,\n status: null,\n });\n}\n","import { authRoutes, authStorageKeys } from \"../constants/auth-keys\";\nimport { assertBrowserRuntime } from \"./runtime\";\n\nfunction sanitizeReturnTo(value: string | null | undefined): string {\n if (!value) {\n return authRoutes.root;\n }\n\n if (!value.startsWith(authRoutes.root)) {\n return authRoutes.root;\n }\n\n const protocolRelativePrefix = \"//\";\n\n if (value.startsWith(protocolRelativePrefix)) {\n return authRoutes.root;\n }\n\n return value;\n}\n\nfunction getCurrentBrowserPath(): string {\n return `${window.location.pathname}${window.location.search}${window.location.hash}`;\n}\n\nexport function saveReturnToPath(returnTo: string | undefined): string {\n assertBrowserRuntime();\n\n const fallbackPath = getCurrentBrowserPath();\n const sanitized = sanitizeReturnTo(returnTo ?? fallbackPath);\n window.sessionStorage.setItem(authStorageKeys.returnTo, sanitized);\n return sanitized;\n}\n\nexport function consumeReturnToPath(): string {\n assertBrowserRuntime();\n\n const value = window.sessionStorage.getItem(authStorageKeys.returnTo);\n window.sessionStorage.removeItem(authStorageKeys.returnTo);\n return sanitizeReturnTo(value);\n}\n","import type { SessionListener } from \"../types/auth-client\";\nimport type { GhostlySession } from \"../types/ghostly-session\";\n\ntype SessionResolveState = \"pending\" | \"resolved\";\n\nexport class SessionStore {\n private listeners = new Set<SessionListener>();\n private resolvedSession: GhostlySession | null = null;\n private resolveState: SessionResolveState = \"pending\";\n\n getSessionIfResolved(): GhostlySession | null {\n if (this.resolveState === \"pending\") {\n return null;\n }\n\n return this.resolvedSession;\n }\n\n hasResolvedSession(): boolean {\n return this.resolveState === \"resolved\";\n }\n\n setSession(session: GhostlySession | null): void {\n this.resolveState = \"resolved\";\n this.resolvedSession = session;\n\n for (const listener of this.listeners) {\n listener(session);\n }\n }\n\n subscribe(listener: SessionListener): () => void {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n}\n","import { authEndpoints } from \"../constants/auth-endpoints\";\nimport { httpStatus } from \"../constants/http-status\";\nimport { AuthSdkError } from \"../errors/auth-sdk-error\";\nimport type {\n AuthClient,\n LoginOptions,\n ProcessCallbackResult,\n SessionRequestOptions,\n} from \"../types/auth-client\";\nimport { authErrorCode } from \"../types/auth-error-code\";\nimport type { GhostlySession } from \"../types/ghostly-session\";\nimport type { BroadcastSync } from \"./broadcast-sync\";\nimport { createBroadcastSync } from \"./broadcast-sync\";\nimport { readCallbackToken, removeCallbackToken, replaceBrowserHistory } from \"./callback-url\";\nimport { getJson, postEmpty, postJson } from \"./http-client\";\nimport { consumeReturnToPath, saveReturnToPath } from \"./return-to-storage\";\nimport { assertBrowserRuntime } from \"./runtime\";\nimport { isGhostlySession } from \"./session-parser\";\nimport { SessionStore } from \"./session-store\";\n\ninterface ValidateTokenRequest {\n token: string;\n}\n\ninterface ValidateTokenResponse {\n session: unknown;\n}\n\nfunction createPendingRedirectPromise<TValue>(): Promise<TValue> {\n return new Promise(() => {\n // Location redirect never resolves within current runtime execution.\n });\n}\n\nfunction createInvalidSessionPayloadError(path: string): AuthSdkError {\n return new AuthSdkError({\n code: authErrorCode.apiError,\n details: null,\n message: `Auth API response has invalid session shape: ${path}`,\n status: null,\n });\n}\n\nfunction toValidatedSession(payload: unknown, path: string): GhostlySession {\n if (!isGhostlySession(payload)) {\n throw createInvalidSessionPayloadError(path);\n }\n\n return payload;\n}\n\nfunction toCallbackFailure(error: unknown): AuthSdkError {\n if (error instanceof AuthSdkError) {\n if (error.status === httpStatus.unauthorized) {\n return new AuthSdkError({\n code: authErrorCode.callbackInvalidToken,\n details: error.details,\n message: \"Callback JWT is invalid or expired.\",\n status: error.status,\n });\n }\n\n return new AuthSdkError({\n code: authErrorCode.callbackValidationFailed,\n details: error.details,\n message: \"Keycloak callback validation failed.\",\n status: error.status,\n });\n }\n\n return new AuthSdkError({\n code: authErrorCode.callbackValidationFailed,\n details: error,\n message: \"Keycloak callback validation failed.\",\n status: null,\n });\n}\n\nfunction createNoopBroadcastSync(): BroadcastSync {\n return {\n close() {},\n publishSession() {},\n };\n}\n\nfunction createSafeBroadcastSync(\n onSessionUpdated: (session: GhostlySession | null) => void,\n): BroadcastSync {\n try {\n return createBroadcastSync({\n onSessionUpdated,\n });\n } catch (error) {\n if (error instanceof AuthSdkError && error.code === authErrorCode.broadcastChannelUnsupported) {\n return createNoopBroadcastSync();\n }\n\n throw error;\n }\n}\n\nasync function fetchCurrentSessionFromApi(): Promise<GhostlySession | null> {\n const payload = await getJson<unknown>(authEndpoints.session);\n\n if (payload === null) {\n return null;\n }\n\n return toValidatedSession(payload, authEndpoints.session);\n}\n\nexport function createAuthClient(): AuthClient {\n assertBrowserRuntime();\n\n const sessionStore = new SessionStore();\n const broadcastSync = createSafeBroadcastSync((session) => {\n sessionStore.setSession(session);\n });\n\n const getSession = async (options?: SessionRequestOptions): Promise<GhostlySession | null> => {\n const forceRefresh = options?.forceRefresh ?? false;\n\n if (sessionStore.hasResolvedSession() && !forceRefresh) {\n return sessionStore.getSessionIfResolved();\n }\n\n const session = await fetchCurrentSessionFromApi();\n sessionStore.setSession(session);\n broadcastSync.publishSession(session);\n\n return session;\n };\n\n const requireSession = async (): Promise<GhostlySession> => {\n const session = await getSession();\n\n if (session) {\n return session;\n }\n\n throw new AuthSdkError({\n code: authErrorCode.unauthorized,\n details: null,\n message: \"Authenticated session is required.\",\n status: httpStatus.unauthorized,\n });\n };\n\n const login = (options?: LoginOptions): void => {\n saveReturnToPath(options?.returnTo);\n window.location.assign(authEndpoints.loginStart);\n };\n\n const processCallback = async (): Promise<ProcessCallbackResult> => {\n const currentUrl = new URL(window.location.href);\n const token = readCallbackToken(currentUrl);\n\n if (!token) {\n throw new AuthSdkError({\n code: authErrorCode.callbackMissingToken,\n details: null,\n message: \"Missing callback token query parameter.\",\n status: httpStatus.badRequest,\n });\n }\n\n const cleanedUrl = removeCallbackToken(currentUrl);\n replaceBrowserHistory(cleanedUrl);\n\n try {\n const payload = await postJson<ValidateTokenResponse, ValidateTokenRequest>(\n authEndpoints.validateKeycloakToken,\n { token },\n );\n\n const session = toValidatedSession(payload.session, authEndpoints.validateKeycloakToken);\n sessionStore.setSession(session);\n broadcastSync.publishSession(session);\n\n return {\n redirectTo: consumeReturnToPath(),\n session,\n };\n } catch (error) {\n throw toCallbackFailure(error);\n }\n };\n\n const completeCallbackRedirect = async (): Promise<never> => {\n const result = await processCallback();\n window.location.replace(result.redirectTo);\n return createPendingRedirectPromise<never>();\n };\n\n const logout = async (): Promise<void> => {\n await postEmpty(authEndpoints.logout);\n sessionStore.setSession(null);\n broadcastSync.publishSession(null);\n };\n\n const subscribe = sessionStore.subscribe.bind(sessionStore);\n\n return {\n completeCallbackRedirect,\n getSession,\n login,\n logout,\n processCallback,\n requireSession,\n subscribe,\n };\n}\n","import { createAuthClient } from \"../../core/auth-client\";\nimport { AuthSdkError } from \"../../errors/auth-sdk-error\";\nimport type { AuthClient } from \"../../types/auth-client\";\nimport { authErrorCode } from \"../../types/auth-error-code\";\nimport type { GhostlySession } from \"../../types/ghostly-session\";\n\nfunction createPendingRedirectPromise<TValue>(): Promise<TValue> {\n return new Promise(() => {\n // Location redirect never resolves within current runtime execution.\n });\n}\n\nexport async function ensureClientAuthenticated(client?: AuthClient): Promise<GhostlySession> {\n const authClient = client ?? createAuthClient();\n\n try {\n return await authClient.requireSession();\n } catch (error) {\n if (error instanceof AuthSdkError && error.code === authErrorCode.unauthorized) {\n authClient.login();\n return createPendingRedirectPromise<GhostlySession>();\n }\n\n throw error;\n }\n}\n"]}
@@ -0,0 +1,50 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ReactNode } from 'react';
4
+ import { a as AuthSdkError } from './auth-sdk-error-DKM7PyKC.js';
5
+ import { A as AuthClient, L as LoginOptions, G as GhostlySession } from './auth-client-CAHMjodm.js';
6
+
7
+ type AuthCallbackStatus = "processing" | "failed";
8
+ interface UseAuthCallbackRedirectOptions {
9
+ client?: AuthClient;
10
+ }
11
+ interface UseAuthCallbackRedirectResult {
12
+ error: AuthSdkError | null;
13
+ status: AuthCallbackStatus;
14
+ }
15
+ declare function useAuthCallbackRedirect(options?: UseAuthCallbackRedirectOptions): UseAuthCallbackRedirectResult;
16
+ interface AuthCallbackHandlerProps {
17
+ client?: AuthClient;
18
+ processing: ReactNode;
19
+ renderError: (error: AuthSdkError) => ReactNode;
20
+ }
21
+ declare function AuthCallbackHandler(props: AuthCallbackHandlerProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
22
+
23
+ interface AuthContextValue {
24
+ error: AuthSdkError | null;
25
+ isLoading: boolean;
26
+ login: (options?: LoginOptions) => void;
27
+ logout: () => Promise<void>;
28
+ refresh: () => Promise<GhostlySession | null>;
29
+ session: GhostlySession | null;
30
+ }
31
+
32
+ interface AuthProviderProps {
33
+ children: ReactNode;
34
+ client?: AuthClient;
35
+ }
36
+ declare function AuthProvider(props: AuthProviderProps): react_jsx_runtime.JSX.Element;
37
+
38
+ interface UnauthorizedRenderProps {
39
+ login: (options?: LoginOptions) => void;
40
+ }
41
+ interface AuthSessionGateProps {
42
+ authorized: (session: GhostlySession) => ReactNode;
43
+ loading?: ReactNode;
44
+ unauthorized: ReactNode | ((props: UnauthorizedRenderProps) => ReactNode);
45
+ }
46
+ declare function AuthSessionGate(props: AuthSessionGateProps): react_jsx_runtime.JSX.Element;
47
+
48
+ declare function useAuth(): AuthContextValue;
49
+
50
+ export { AuthCallbackHandler, type AuthCallbackHandlerProps, type AuthCallbackStatus, type AuthContextValue, AuthProvider, type AuthProviderProps, AuthSessionGate, type AuthSessionGateProps, type UseAuthCallbackRedirectOptions, type UseAuthCallbackRedirectResult, useAuth, useAuthCallbackRedirect };