{"version":3,"file":"identity-base-angular-organizations.mjs","sources":["../../src/tokens.ts","../../src/services/ActiveOrganizationService.ts","../../src/services/OrganizationsService.ts","../../src/providers.ts","../../src/http/OrganizationContextInterceptor.ts","../../src/identity-base-angular-organizations.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\nimport type { IdentityAngularOrganizationsConfig } from './public-types'\n\nexport const IDENTITY_ORGANIZATIONS_CONFIG = new InjectionToken<IdentityAngularOrganizationsConfig>('IDENTITY_ORGANIZATIONS_CONFIG')\n\n","import { Injectable } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\n\n@Injectable()\nexport class ActiveOrganizationService {\n  private readonly organizationIdSubject = new BehaviorSubject<string | null>(null)\n  readonly organizationId$ = this.organizationIdSubject.asObservable()\n\n  get organizationId(): string | null {\n    return this.organizationIdSubject.getValue()\n  }\n\n  setOrganizationId(organizationId: string | null): void {\n    this.organizationIdSubject.next(organizationId)\n  }\n\n  clear(): void {\n    this.organizationIdSubject.next(null)\n  }\n}\n\n","import { Inject, Injectable } from '@angular/core'\nimport { createError, type ApiError } from '@identity-base/client-core'\nimport { IdentityAuthService } from '@identity-base/angular-client'\nimport type { IdentityAngularOrganizationsConfig } from '../public-types'\nimport { IDENTITY_ORGANIZATIONS_CONFIG } from '../tokens'\nimport { ActiveOrganizationService } from './ActiveOrganizationService'\nimport type {\n  AddMembershipRequest,\n  ClaimInvitationResponse,\n  ClaimOrganizationInvitationRequest,\n  CreateOrganizationInvitationRequest,\n  CreateOrganizationRequest,\n  CreateOrganizationRoleRequest,\n  InvitationListQuery,\n  InvitationListResponse,\n  MemberListQuery,\n  MemberListResponse,\n  MembershipListQuery,\n  MembershipListResponse,\n  OrganizationDto,\n  OrganizationInvitationPreviewDto,\n  OrganizationListQuery,\n  OrganizationListResponse,\n  OrganizationRoleDto,\n  OrganizationRolePermissionsResponse,\n  RoleListQuery,\n  RoleListResponse,\n  UpdateMembershipRequest,\n  UpdateOrganizationRequest,\n  UpdateOrganizationRolePermissionsRequest,\n} from '../types'\n\n@Injectable()\nexport class OrganizationsService {\n  constructor(\n    private readonly auth: IdentityAuthService,\n    private readonly activeOrg: ActiveOrganizationService,\n    @Inject(IDENTITY_ORGANIZATIONS_CONFIG) private readonly config: IdentityAngularOrganizationsConfig,\n  ) {}\n\n  readonly invitations = {\n    preview: async (code: string): Promise<OrganizationInvitationPreviewDto> => {\n      const encoded = encodeURIComponent(code)\n      return await this.request<OrganizationInvitationPreviewDto>(`/invitations/${encoded}`, { method: 'GET', auth: false })\n    },\n    claim: async (payload: ClaimOrganizationInvitationRequest): Promise<ClaimInvitationResponse> => {\n      return await this.request<ClaimInvitationResponse>('/invitations/claim', { method: 'POST', body: payload })\n    },\n  }\n\n  readonly user = {\n    organizations: {\n      list: async (query: MembershipListQuery = {}): Promise<MembershipListResponse> => {\n        const qs = toQueryString(query)\n        return await this.request<MembershipListResponse>(qs ? `/users/me/organizations?${qs}` : '/users/me/organizations', { method: 'GET' })\n      },\n      create: async (payload: CreateOrganizationRequest): Promise<OrganizationDto> => {\n        return await this.request<OrganizationDto>('/users/me/organizations', { method: 'POST', body: toOrganizationRequest(payload) })\n      },\n      get: async (organizationId: string): Promise<OrganizationDto> => {\n        const id = encodeURIComponent(organizationId)\n        return await this.request<OrganizationDto>(`/users/me/organizations/${id}`, { method: 'GET' })\n      },\n      patch: async (organizationId: string, payload: UpdateOrganizationRequest): Promise<OrganizationDto> => {\n        const id = encodeURIComponent(organizationId)\n        return await this.request<OrganizationDto>(`/users/me/organizations/${id}`, { method: 'PATCH', body: toOrganizationRequest(payload) })\n      },\n    },\n    members: {\n      list: async (organizationId: string, query: MemberListQuery = {}): Promise<MemberListResponse> => {\n        const id = encodeURIComponent(organizationId)\n        const qs = toQueryString(query)\n        const path = qs ? `/users/me/organizations/${id}/members?${qs}` : `/users/me/organizations/${id}/members`\n        return await this.request<MemberListResponse>(path, { method: 'GET' })\n      },\n      add: async (organizationId: string, payload: AddMembershipRequest) => {\n        const id = encodeURIComponent(organizationId)\n        return await this.request(`/users/me/organizations/${id}/members`, { method: 'POST', body: payload })\n      },\n      update: async (organizationId: string, userId: string, payload: UpdateMembershipRequest) => {\n        const org = encodeURIComponent(organizationId)\n        const user = encodeURIComponent(userId)\n        return await this.request(`/users/me/organizations/${org}/members/${user}`, { method: 'PUT', body: payload })\n      },\n      remove: async (organizationId: string, userId: string) => {\n        const org = encodeURIComponent(organizationId)\n        const user = encodeURIComponent(userId)\n        return await this.request(`/users/me/organizations/${org}/members/${user}`, { method: 'DELETE' })\n      },\n    },\n    roles: {\n      list: async (organizationId: string, query: RoleListQuery = {}): Promise<RoleListResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const qs = toQueryString(query)\n        const path = qs ? `/users/me/organizations/${org}/roles?${qs}` : `/users/me/organizations/${org}/roles`\n        return await this.request<RoleListResponse>(path, { method: 'GET' })\n      },\n      create: async (organizationId: string, payload: CreateOrganizationRoleRequest): Promise<OrganizationRoleDto> => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request<OrganizationRoleDto>(`/users/me/organizations/${org}/roles`, { method: 'POST', body: payload })\n      },\n      delete: async (organizationId: string, roleId: string) => {\n        const org = encodeURIComponent(organizationId)\n        const role = encodeURIComponent(roleId)\n        return await this.request(`/users/me/organizations/${org}/roles/${role}`, { method: 'DELETE' })\n      },\n      getPermissions: async (organizationId: string, roleId: string): Promise<OrganizationRolePermissionsResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const role = encodeURIComponent(roleId)\n        return await this.request<OrganizationRolePermissionsResponse>(`/users/me/organizations/${org}/roles/${role}/permissions`, { method: 'GET' })\n      },\n      updatePermissions: async (organizationId: string, roleId: string, payload: UpdateOrganizationRolePermissionsRequest) => {\n        const org = encodeURIComponent(organizationId)\n        const role = encodeURIComponent(roleId)\n        return await this.request(`/users/me/organizations/${org}/roles/${role}/permissions`, { method: 'PUT', body: payload })\n      },\n    },\n    invitations: {\n      list: async (organizationId: string, query: InvitationListQuery = {}): Promise<InvitationListResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const qs = toQueryString(query)\n        const path = qs ? `/users/me/organizations/${org}/invitations?${qs}` : `/users/me/organizations/${org}/invitations`\n        return await this.request<InvitationListResponse>(path, { method: 'GET' })\n      },\n      create: async (organizationId: string, payload: CreateOrganizationInvitationRequest) => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request(`/users/me/organizations/${org}/invitations`, { method: 'POST', body: payload })\n      },\n      revoke: async (organizationId: string, code: string) => {\n        const org = encodeURIComponent(organizationId)\n        const invite = encodeURIComponent(code)\n        return await this.request(`/users/me/organizations/${org}/invitations/${invite}`, { method: 'DELETE' })\n      },\n    },\n  }\n\n  readonly admin = {\n    organizations: {\n      list: async (query: OrganizationListQuery = {}): Promise<OrganizationListResponse> => {\n        const qs = toQueryString(query)\n        return await this.request<OrganizationListResponse>(qs ? `/admin/organizations?${qs}` : '/admin/organizations', { method: 'GET' })\n      },\n      create: async (payload: CreateOrganizationRequest): Promise<OrganizationDto> => {\n        return await this.request<OrganizationDto>('/admin/organizations', { method: 'POST', body: toOrganizationRequest(payload) })\n      },\n      get: async (organizationId: string): Promise<OrganizationDto> => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request<OrganizationDto>(`/admin/organizations/${org}`, { method: 'GET' })\n      },\n      patch: async (organizationId: string, payload: UpdateOrganizationRequest): Promise<OrganizationDto> => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request<OrganizationDto>(`/admin/organizations/${org}`, { method: 'PATCH', body: toOrganizationRequest(payload) })\n      },\n      delete: async (organizationId: string) => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request(`/admin/organizations/${org}`, { method: 'DELETE' })\n      },\n    },\n    members: {\n      list: async (organizationId: string, query: MemberListQuery = {}): Promise<MemberListResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const qs = toQueryString(query)\n        const path = qs ? `/admin/organizations/${org}/members?${qs}` : `/admin/organizations/${org}/members`\n        return await this.request<MemberListResponse>(path, { method: 'GET' })\n      },\n      add: async (organizationId: string, payload: AddMembershipRequest) => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request(`/admin/organizations/${org}/members`, { method: 'POST', body: payload })\n      },\n      update: async (organizationId: string, userId: string, payload: UpdateMembershipRequest) => {\n        const org = encodeURIComponent(organizationId)\n        const user = encodeURIComponent(userId)\n        return await this.request(`/admin/organizations/${org}/members/${user}`, { method: 'PUT', body: payload })\n      },\n      remove: async (organizationId: string, userId: string) => {\n        const org = encodeURIComponent(organizationId)\n        const user = encodeURIComponent(userId)\n        return await this.request(`/admin/organizations/${org}/members/${user}`, { method: 'DELETE' })\n      },\n    },\n    roles: {\n      list: async (organizationId: string, query: RoleListQuery = {}): Promise<RoleListResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const qs = toQueryString(query)\n        const path = qs ? `/admin/organizations/${org}/roles?${qs}` : `/admin/organizations/${org}/roles`\n        return await this.request<RoleListResponse>(path, { method: 'GET' })\n      },\n      create: async (organizationId: string, payload: CreateOrganizationRoleRequest): Promise<OrganizationRoleDto> => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request<OrganizationRoleDto>(`/admin/organizations/${org}/roles`, { method: 'POST', body: payload })\n      },\n      delete: async (organizationId: string, roleId: string) => {\n        const org = encodeURIComponent(organizationId)\n        const role = encodeURIComponent(roleId)\n        return await this.request(`/admin/organizations/${org}/roles/${role}`, { method: 'DELETE' })\n      },\n      getPermissions: async (organizationId: string, roleId: string): Promise<OrganizationRolePermissionsResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const role = encodeURIComponent(roleId)\n        return await this.request<OrganizationRolePermissionsResponse>(`/admin/organizations/${org}/roles/${role}/permissions`, { method: 'GET' })\n      },\n      updatePermissions: async (organizationId: string, roleId: string, payload: UpdateOrganizationRolePermissionsRequest) => {\n        const org = encodeURIComponent(organizationId)\n        const role = encodeURIComponent(roleId)\n        return await this.request(`/admin/organizations/${org}/roles/${role}/permissions`, { method: 'PUT', body: payload })\n      },\n    },\n    invitations: {\n      list: async (organizationId: string, query: InvitationListQuery = {}): Promise<InvitationListResponse> => {\n        const org = encodeURIComponent(organizationId)\n        const qs = toQueryString(query)\n        const path = qs ? `/admin/organizations/${org}/invitations?${qs}` : `/admin/organizations/${org}/invitations`\n        return await this.request<InvitationListResponse>(path, { method: 'GET' })\n      },\n      create: async (organizationId: string, payload: CreateOrganizationInvitationRequest) => {\n        const org = encodeURIComponent(organizationId)\n        return await this.request(`/admin/organizations/${org}/invitations`, { method: 'POST', body: payload })\n      },\n      revoke: async (organizationId: string, code: string) => {\n        const org = encodeURIComponent(organizationId)\n        const invite = encodeURIComponent(code)\n        return await this.request(`/admin/organizations/${org}/invitations/${invite}`, { method: 'DELETE' })\n      },\n    },\n  }\n\n  private async request<T = unknown>(\n    path: string,\n    options: { method: string; body?: unknown; auth?: boolean } = { method: 'GET' },\n  ): Promise<T> {\n    const requireAuth = options.auth !== false\n\n    const headers = new Headers()\n    headers.set('Content-Type', 'application/json')\n\n    if (requireAuth) {\n      const token = await this.auth.getAccessToken()\n      if (token) {\n        headers.set('Authorization', `Bearer ${token}`)\n      }\n    }\n\n    const orgId = this.activeOrg.organizationId\n    const headerName = this.config.organizationHeader?.headerName ?? 'X-Organization-Id'\n    if (orgId && shouldAttachHeader(`${this.config.apiBase}${path}`, this.config)) {\n      headers.set(headerName, orgId)\n    }\n\n    const controller = new AbortController()\n    const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs ?? 10000)\n\n    try {\n      const response = await fetch(`${this.config.apiBase}${path}`, {\n        method: options.method,\n        credentials: 'include',\n        headers,\n        signal: controller.signal,\n        body: options.body === undefined ? undefined : JSON.stringify(options.body),\n      })\n\n      clearTimeout(timeoutId)\n\n      if (!response.ok) {\n        const errorBody = await readResponseBody(response)\n\n        const error: ApiError = typeof errorBody === 'string' ? { detail: errorBody } : errorBody ?? {}\n        error.status = response.status\n        throw createError(error)\n      }\n\n      if (response.status === 204) {\n        return undefined as T\n      }\n\n      const raw = await response.text()\n      if (!raw) {\n        return undefined as T\n      }\n\n      try {\n        return JSON.parse(raw) as T\n      } catch {\n        throw createError({ status: response.status, detail: raw })\n      }\n    } catch (error: any) {\n      clearTimeout(timeoutId)\n      if (error?.name === 'AbortError') {\n        throw createError('Request timeout')\n      }\n      throw createError(error)\n    }\n  }\n}\n\nasync function readResponseBody(response: Response): Promise<ApiError | string | null> {\n  const rawBody = await response.text()\n  if (!rawBody) {\n    return null\n  }\n\n  try {\n    return JSON.parse(rawBody) as ApiError\n  } catch {\n    return rawBody\n  }\n}\n\nfunction toQueryString(query: object): string {\n  const params = new URLSearchParams()\n  for (const [key, value] of Object.entries(query as Record<string, unknown>)) {\n    if (value === undefined || value === null) continue\n    if (Array.isArray(value)) {\n      for (const v of value) {\n        const trimmed = `${v}`.trim()\n        if (trimmed.length > 0) params.append(key, trimmed)\n      }\n      continue\n    }\n    const trimmed = `${value}`.trim()\n    if (trimmed.length > 0) params.set(key, trimmed)\n  }\n  return params.toString()\n}\n\nfunction toOrganizationRequest(payload: CreateOrganizationRequest | UpdateOrganizationRequest): Record<string, unknown> {\n  const { metadata, ...rest } = payload\n  return metadata === undefined\n    ? rest\n    : { ...rest, metadata: { values: metadata } }\n}\n\nfunction shouldAttachHeader(url: string, config: IdentityAngularOrganizationsConfig): boolean {\n  const include = config.organizationHeader?.include\n  const exclude = config.organizationHeader?.exclude\n\n  if (exclude?.some(rule => matchesRule(url, rule))) {\n    return false\n  }\n\n  if (!include || include.length === 0) {\n    return typeof config.apiBase === 'string' && url.startsWith(config.apiBase)\n  }\n\n  return include.some(rule => matchesRule(url, rule))\n}\n\nfunction matchesRule(url: string, rule: any): boolean {\n  if (typeof rule === 'string') {\n    return url.startsWith(rule)\n  }\n  if (rule instanceof RegExp) {\n    return rule.test(url)\n  }\n  return rule(url)\n}\n","import type { Provider } from '@angular/core'\nimport type { IdentityAngularOrganizationsConfig } from './public-types'\nimport { IDENTITY_ORGANIZATIONS_CONFIG } from './tokens'\nimport { ActiveOrganizationService } from './services/ActiveOrganizationService'\nimport { OrganizationsService } from './services/OrganizationsService'\n\nfunction normalizeConfig(config: IdentityAngularOrganizationsConfig): IdentityAngularOrganizationsConfig {\n  return {\n    timeoutMs: 10000,\n    organizationHeader: {\n      headerName: 'X-Organization-Id',\n      exclude: [\n        `${config.apiBase}/connect/`,\n        `${config.apiBase}/auth/`,\n        `${config.apiBase}/healthz`,\n      ],\n    },\n    ...config,\n  }\n}\n\nexport function provideIdentityOrganizations(config: IdentityAngularOrganizationsConfig): Provider[] {\n  return [\n    { provide: IDENTITY_ORGANIZATIONS_CONFIG, useValue: normalizeConfig(config) },\n    ActiveOrganizationService,\n    OrganizationsService,\n  ]\n}\n\n","import { Inject, Injectable } from '@angular/core'\nimport type { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'\nimport { Observable } from 'rxjs'\nimport type { IdentityAngularOrganizationsConfig, OrganizationHeaderRule } from '../public-types'\nimport { IDENTITY_ORGANIZATIONS_CONFIG } from '../tokens'\nimport { ActiveOrganizationService } from '../services/ActiveOrganizationService'\n\n@Injectable()\nexport class OrganizationContextInterceptor implements HttpInterceptor {\n  constructor(\n    private readonly activeOrg: ActiveOrganizationService,\n    @Inject(IDENTITY_ORGANIZATIONS_CONFIG) private readonly config: IdentityAngularOrganizationsConfig,\n  ) {}\n\n  intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n    const organizationId = this.activeOrg.organizationId\n    if (!organizationId) {\n      return next.handle(req)\n    }\n\n    const headerName = this.config.organizationHeader?.headerName ?? 'X-Organization-Id'\n    if (req.headers.has(headerName)) {\n      return next.handle(req)\n    }\n\n    if (!shouldAttachHeader(req.url, this.config)) {\n      return next.handle(req)\n    }\n\n    return next.handle(req.clone({ setHeaders: { [headerName]: organizationId } }))\n  }\n}\n\nfunction shouldAttachHeader(url: string, config: IdentityAngularOrganizationsConfig): boolean {\n  const include = config.organizationHeader?.include\n  const exclude = config.organizationHeader?.exclude\n\n  if (exclude?.some(rule => matchesRule(url, rule))) {\n    return false\n  }\n\n  if (!include || include.length === 0) {\n    return typeof config.apiBase === 'string' && url.startsWith(config.apiBase)\n  }\n\n  return include.some(rule => matchesRule(url, rule))\n}\n\nfunction matchesRule(url: string, rule: OrganizationHeaderRule): boolean {\n  if (typeof rule === 'string') {\n    return url.startsWith(rule)\n  }\n  if (rule instanceof RegExp) {\n    return rule.test(url)\n  }\n  return rule(url)\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["shouldAttachHeader","matchesRule"],"mappings":"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"}