{"version":3,"sources":["../src/auth/scopes.ts","../src/auth/management-session.ts"],"sourcesContent":["/**\n * All available Contentstack OAuth scopes.\n *\n * Sourced from the Developer Hub API (`/manifests/oauth/scopes` endpoint).\n *\n * Use `OAUTH_SCOPE_DESCRIPTIONS` for human-readable explanations of each scope.\n * Use `OAUTH_SCOPE_PRESETS` for common scope combinations.\n *\n * @see https://www.contentstack.com/docs/developers/developer-hub/oauth-scopes\n */\nexport type ContentstackOAuthScope =\n  // ── Developer Hub (Apps) ────────────────────────────────────────────\n  | \"app.manifests:read\"\n  | \"app.manifest:read\"\n  | \"app.manifest:write\"\n  | \"app.hosting:read\"\n  | \"app.hosting:write\"\n  | \"app.installations:read\"\n  | \"app.installations.management:read\"\n  | \"app.installations.management:write\"\n  | \"app.authorizations:manage\"\n  | \"app.authorizations.management:write\"\n  | \"app.requests:write\"\n  | \"app.requests.management:write\"\n\n  // ── SCIM ────────────────────────────────────────────────────────────\n  | \"scim:manage\"\n\n  // ── User ────────────────────────────────────────────────────────────\n  | \"user.profile:read\"\n  | \"user:read\"\n  | \"user:write\"\n  | \"user.tfa:write\"\n  | \"user.assignments:read\"\n  | \"user.assignments:write\"\n  | \"user.notifications:read\"\n  | \"user.notifications:write\"\n\n  // ── Organization ────────────────────────────────────────────────────\n  | \"organizations:read\"\n  | \"organization:read\"\n  | \"organization.roles:read\"\n  | \"organization.share:read\"\n  | \"organization.share:write\"\n  | \"organization.ownership:write\"\n  | \"organization.settings:write\"\n  | \"organization.logs:read\"\n  | \"organization.usage:read\"\n  | \"organization.jobs:read\"\n  | \"organization.jobs:write\"\n\n  // ── Stack management ────────────────────────────────────────────────\n  | \"cm.stacks.management:read\"\n  | \"cm.stacks.management:write\"\n  | \"cm.stack.management:read\"\n  | \"cm.stack.management:write\"\n  | \"cm.stack.settings:read\"\n  | \"cm.stack.settings:write\"\n  | \"cm.stack:share\"\n  | \"cm.stack:unshare\"\n  | \"cm.stack.users:read\"\n  | \"cm.stack.users:write\"\n\n  // ── Tokens ──────────────────────────────────────────────────────────\n  | \"cm.stack.delivery-tokens:read\"\n  | \"cm.stack.delivery-tokens:write\"\n  | \"cm.stack.management-tokens:read\"\n  | \"cm.stack.management-tokens:write\"\n\n  // ── Content types ───────────────────────────────────────────────────\n  | \"cm.content-types.management:read\"\n  | \"cm.content-types.management:write\"\n  | \"cm.content-types:import\"\n  | \"cm.content-types:export\"\n  | \"cm.content-type:read\"\n  | \"cm.content-type:write\"\n  | \"cm.content-type:copy\"\n\n  // ── Global fields ───────────────────────────────────────────────────\n  | \"cm.global-fields.management:read\"\n  | \"cm.global-fields.management:write\"\n  | \"cm.global-fields:import\"\n  | \"cm.global-fields:export\"\n\n  // ── Entries ──────────────────────────────────────────────────────────\n  | \"cm.entries.management:read\"\n  | \"cm.entries.management:write\"\n  | \"cm.entries:import\"\n  | \"cm.entries:export\"\n  | \"cm.entry:read\"\n  | \"cm.entry:write\"\n  | \"cm.entry:publish\"\n  | \"cm.entry:unpublish\"\n  | \"cm.entry.workflow:write\"\n\n  // ── Webhooks ────────────────────────────────────────────────────────\n  | \"cm.webhooks.management:read\"\n  | \"cm.webhooks.management:write\"\n  | \"cm.webhooks:import\"\n  | \"cm.webhooks:export\"\n  | \"cm.webhook:read\"\n  | \"cm.webhook:write\"\n\n  // ── Assets ──────────────────────────────────────────────────────────\n  | \"cm.assets.management:read\"\n  | \"cm.assets.management:write\"\n  | \"cm.assets.rt:read\"\n  | \"cm.assets.rt:write\"\n  | \"cm.assets:download\"\n  | \"cm.asset:read\"\n  | \"cm.asset:write\"\n  | \"cm.asset:publish\"\n  | \"cm.asset:unpublish\"\n\n  // ── Workflows ───────────────────────────────────────────────────────\n  | \"cm.workflows.management:read\"\n  | \"cm.workflows.management:write\"\n  | \"cm.workflows.publishing-rules:read\"\n  | \"cm.workflows.publishing-rules:write\"\n\n  // ── Environments ────────────────────────────────────────────────────\n  | \"cm.environments.management:read\"\n  | \"cm.environments.management:write\"\n\n  // ── Extensions ──────────────────────────────────────────────────────\n  | \"cm.extensions.management:read\"\n  | \"cm.extensions.management:write\"\n\n  // ── Languages ───────────────────────────────────────────────────────\n  | \"cm.languages.management:read\"\n  | \"cm.languages.management:write\"\n\n  // ── Labels ──────────────────────────────────────────────────────────\n  | \"cm.labels.management:read\"\n  | \"cm.labels.management:write\"\n\n  // ── Bulk operations ─────────────────────────────────────────────────\n  | \"cm.bulk-operations:publish\"\n  | \"cm.bulk-operations:unpublish\"\n  | \"cm.bulk-operations:add-to-release\"\n  | \"cm.bulk-operations:delete\"\n  | \"cm.bulk-operations:move-to-folder\"\n  | \"cm.bulk-operations:workflow\"\n\n  // ── Releases ────────────────────────────────────────────────────────\n  | \"cm.releases.management:read\"\n  | \"cm.releases.management:write\"\n  | \"cm.release:read\"\n  | \"cm.release:write\"\n  | \"cm.release:clone\"\n  | \"cm.release:deploy\"\n\n  // ── Roles ───────────────────────────────────────────────────────────\n  | \"cm.roles.management:read\"\n  | \"cm.roles.management:write\"\n\n  // ── Audit & publish queue ───────────────────────────────────────────\n  | \"cm.audit-logs:read\"\n  | \"cm.publish-queue.management:read\"\n  | \"cm.publish-queue.management:write\"\n\n  // ── Personalization ─────────────────────────────────────────────────\n  | \"personalize:read\"\n  | \"personalize:manage\"\n\n  // ── Taxonomies ──────────────────────────────────────────────────────\n  | \"cm.taxonomies.management:read\"\n  | \"cm.taxonomies.management:write\"\n  | \"cm.taxonomy.terms:read\"\n  | \"cm.taxonomy.terms:write\"\n\n  // ── Branches ────────────────────────────────────────────────────────\n  | \"cm.branches.management:read\"\n  | \"cm.branches.management:write\"\n  | \"cm.branches:compare-merge\"\n  | \"cm.branch-aliases.management:read\"\n  | \"cm.branch-aliases.management:write\"\n\n  // ── Launch ──────────────────────────────────────────────────────────\n  | \"launch:manage\"\n  | \"launch.projects:read\"\n  | \"launch.projects:write\"\n  | \"launch.projects:delete\"\n  | \"launch.gitproviders:manage\"\n\n  // ── Automation Hub ──────────────────────────────────────────────────\n  | \"automationhub.projects.management:read\"\n  | \"automationhub.projects.management:write\"\n  | \"automationhub.automations:read\"\n  | \"automationhub.automations:write\"\n  | \"automationhub.executions:read\"\n  | \"automationhub.audit-logs:read\"\n  | \"automationhub.variables:read\"\n  | \"automationhub.variables:write\"\n  | \"automationhub.accounts:read\"\n\n  // ── Brand Kit ───────────────────────────────────────────────────────\n  | \"brand-kits:read\"\n  | \"brand-kits:manage\"\n\n  // ── Variants ────────────────────────────────────────────────────────\n  | \"cm.variant:read\"\n  | \"cm.variant:write\"\n\n  // ── Analytics & Audit ───────────────────────────────────────────────\n  | \"analytics:read\"\n  | \"auditlogs:read\"\n\n  // ── Teams ───────────────────────────────────────────────────────────\n  | \"teams:read\"\n  | \"teams:write\"\n\n/**\n * Human-readable descriptions for every Contentstack OAuth scope.\n *\n * Sourced from the Developer Hub API (`/manifests/oauth/scopes` endpoint).\n *\n * @example\n * ```ts\n * import { OAUTH_SCOPE_DESCRIPTIONS } from \"@timbenniks/contentstack-platform-sdk/auth\"\n *\n * // Get description for a scope\n * console.log(OAUTH_SCOPE_DESCRIPTIONS[\"cm.entries.management:read\"])\n * // → \"View all entries\"\n * ```\n */\nexport const OAUTH_SCOPE_DESCRIPTIONS: Record<ContentstackOAuthScope, string> = {\n  // Developer Hub (Apps)\n  \"app.manifests:read\": \"View all manifests\",\n  \"app.manifest:read\": \"View manifest details\",\n  \"app.manifest:write\": \"Create, update, remove manifests\",\n  \"app.hosting:read\": \"View hosting\",\n  \"app.hosting:write\": \"Create, update, remove hosting\",\n  \"app.installations:read\": \"View all installations\",\n  \"app.installations.management:read\": \"View installation details\",\n  \"app.installations.management:write\": \"Create, update, remove installations\",\n  \"app.authorizations:manage\": \"Manage all authorizations\",\n  \"app.authorizations.management:write\": \"Revoke all authorizations\",\n  \"app.requests:write\": \"Create app request\",\n  \"app.requests.management:write\": \"Revoke app request\",\n\n  // SCIM\n  \"scim:manage\": \"Manage users and groups using SCIM\",\n\n  // User\n  \"user.profile:read\": \"View user profile\",\n  \"user:read\": \"View user details\",\n  \"user:write\": \"Update user details\",\n  \"user.tfa:write\": \"Verify, enable, disable and cancel user two-factor authentication\",\n  \"user.assignments:read\": \"View user assignments\",\n  \"user.assignments:write\": \"Update, remove user assignments\",\n  \"user.notifications:read\": \"View user notifications\",\n  \"user.notifications:write\": \"Update, remove user notifications\",\n\n  // Organization\n  \"organizations:read\": \"View details of organizations associated with the user\",\n  \"organization:read\": \"View details of an organization\",\n  \"organization.roles:read\": \"View organization level roles\",\n  \"organization.share:read\": \"View details of organization invitations shared with users\",\n  \"organization.share:write\": \"Update, remove organization invitation shares\",\n  \"organization.ownership:write\": \"Create, update of organization ownership transfer\",\n  \"organization.settings:write\": \"Update organization settings\",\n  \"organization.logs:read\": \"View organization logs\",\n  \"organization.usage:read\": \"View organization usage details\",\n  \"organization.jobs:read\": \"View organization job details\",\n  \"organization.jobs:write\": \"Remove, retry organization jobs\",\n\n  // Stack management\n  \"cm.stacks.management:read\": \"View all stacks\",\n  \"cm.stacks.management:write\": \"Create, update, remove stacks\",\n  \"cm.stack.management:read\": \"View a single stack details\",\n  \"cm.stack.management:write\": \"Update stack management properties\",\n  \"cm.stack.settings:read\": \"View stack settings details\",\n  \"cm.stack.settings:write\": \"Update stack settings\",\n  \"cm.stack:share\": \"Share stack invitation with users\",\n  \"cm.stack:unshare\": \"Unshare stack invitations\",\n  \"cm.stack.users:read\": \"View users associated with a stack\",\n  \"cm.stack.users:write\": \"Update user roles and user associations with a stack\",\n\n  // Tokens\n  \"cm.stack.delivery-tokens:read\": \"View delivery tokens associated with a stack\",\n  \"cm.stack.delivery-tokens:write\": \"Create, update, remove delivery tokens in a stack\",\n  \"cm.stack.management-tokens:read\": \"View management tokens associated with a stack\",\n  \"cm.stack.management-tokens:write\": \"Create, update, remove management tokens in a stack\",\n\n  // Content types\n  \"cm.content-types.management:read\": \"View all content types\",\n  \"cm.content-types.management:write\": \"Create, update, remove content types\",\n  \"cm.content-types:import\": \"Import content types\",\n  \"cm.content-types:export\": \"Export content types\",\n  \"cm.content-type:read\": \"View content type details\",\n  \"cm.content-type:write\": \"Update content type details\",\n  \"cm.content-type:copy\": \"Copy a content type\",\n\n  // Global fields\n  \"cm.global-fields.management:read\": \"View all global fields\",\n  \"cm.global-fields.management:write\": \"Create, update, remove global fields\",\n  \"cm.global-fields:import\": \"Import global fields\",\n  \"cm.global-fields:export\": \"Export global fields\",\n\n  // Entries\n  \"cm.entries.management:read\": \"View all entries\",\n  \"cm.entries.management:write\": \"Create, update, remove entries\",\n  \"cm.entries:import\": \"Import entries\",\n  \"cm.entries:export\": \"Export entries\",\n  \"cm.entry:read\": \"View details associated with an entry\",\n  \"cm.entry:write\": \"Update details associated with an entry\",\n  \"cm.entry:publish\": \"Publish an entry\",\n  \"cm.entry:unpublish\": \"Unpublish an entry\",\n  \"cm.entry.workflow:write\": \"Create a workflow for an entry\",\n\n  // Webhooks\n  \"cm.webhooks.management:read\": \"View all webhooks\",\n  \"cm.webhooks.management:write\": \"Create, update, remove webhooks\",\n  \"cm.webhooks:import\": \"Import webhooks\",\n  \"cm.webhooks:export\": \"Export webhooks\",\n  \"cm.webhook:read\": \"View webhook details\",\n  \"cm.webhook:write\": \"Update webhook details\",\n\n  // Assets\n  \"cm.assets.management:read\": \"View all assets\",\n  \"cm.assets.management:write\": \"Create, update, remove assets\",\n  \"cm.assets.rt:read\": \"View all RTE assets\",\n  \"cm.assets.rt:write\": \"Create, update, remove RTE assets\",\n  \"cm.assets:download\": \"Download assets\",\n  \"cm.asset:read\": \"View asset details\",\n  \"cm.asset:write\": \"Update asset details\",\n  \"cm.asset:publish\": \"Publish an asset\",\n  \"cm.asset:unpublish\": \"Unpublish an asset\",\n\n  // Workflows\n  \"cm.workflows.management:read\": \"View all workflows\",\n  \"cm.workflows.management:write\": \"Create, update, remove workflows\",\n  \"cm.workflows.publishing-rules:read\": \"View all workflow publishing rules\",\n  \"cm.workflows.publishing-rules:write\": \"Create, update, remove workflow publishing rules\",\n\n  // Environments\n  \"cm.environments.management:read\": \"View all environments\",\n  \"cm.environments.management:write\": \"Create, update, remove environments\",\n\n  // Extensions\n  \"cm.extensions.management:read\": \"View all extensions\",\n  \"cm.extensions.management:write\": \"Create, update, remove extensions\",\n\n  // Languages\n  \"cm.languages.management:read\": \"View all languages\",\n  \"cm.languages.management:write\": \"Create, update, remove languages\",\n\n  // Labels\n  \"cm.labels.management:read\": \"View all labels\",\n  \"cm.labels.management:write\": \"Create, update, remove labels\",\n\n  // Bulk operations\n  \"cm.bulk-operations:publish\": \"Publish bulk operations\",\n  \"cm.bulk-operations:unpublish\": \"Unpublish bulk operations\",\n  \"cm.bulk-operations:add-to-release\": \"Add to release bulk operations\",\n  \"cm.bulk-operations:delete\": \"Delete bulk operations\",\n  \"cm.bulk-operations:move-to-folder\": \"Move to folder bulk operations\",\n  \"cm.bulk-operations:workflow\": \"Workflow bulk operations\",\n\n  // Releases\n  \"cm.releases.management:read\": \"View all releases\",\n  \"cm.releases.management:write\": \"Create, update, remove releases\",\n  \"cm.release:read\": \"View details associated with a release\",\n  \"cm.release:write\": \"Update details associated with a release\",\n  \"cm.release:clone\": \"Clone a release\",\n  \"cm.release:deploy\": \"Deploy a release\",\n\n  // Roles\n  \"cm.roles.management:read\": \"View all roles\",\n  \"cm.roles.management:write\": \"Create, update, remove roles\",\n\n  // Audit & publish queue\n  \"cm.audit-logs:read\": \"View all audit logs\",\n  \"cm.publish-queue.management:read\": \"View all publish queues\",\n  \"cm.publish-queue.management:write\": \"Create, update, remove publish queues\",\n\n  // Personalization\n  \"personalize:read\": \"View all resources in a project\",\n  \"personalize:manage\": \"Create, update and delete resources in a project\",\n\n  // Taxonomies\n  \"cm.taxonomies.management:read\": \"View all taxonomies\",\n  \"cm.taxonomies.management:write\": \"Create, update, delete taxonomies\",\n  \"cm.taxonomy.terms:read\": \"View all terms of a taxonomy\",\n  \"cm.taxonomy.terms:write\": \"Create, update, move, delete term(s) of a taxonomy\",\n\n  // Branches\n  \"cm.branches.management:read\": \"View all branches\",\n  \"cm.branches.management:write\": \"Create, delete branches\",\n  \"cm.branches:compare-merge\": \"Compare, merge branches\",\n  \"cm.branch-aliases.management:read\": \"View all branch aliases\",\n  \"cm.branch-aliases.management:write\": \"Assign, delete branch aliases\",\n\n  // Launch\n  \"launch:manage\": \"Manage Contentstack Launch projects\",\n  \"launch.projects:read\": \"View all projects\",\n  \"launch.projects:write\": \"Create and update projects\",\n  \"launch.projects:delete\": \"Delete projects\",\n  \"launch.gitproviders:manage\": \"Manage External Git providers in Launch\",\n\n  // Automation Hub\n  \"automationhub.projects.management:read\": \"View all organization projects\",\n  \"automationhub.projects.management:write\": \"Create, update and remove projects\",\n  \"automationhub.automations:read\": \"View all automations in a project\",\n  \"automationhub.automations:write\": \"Update automation settings\",\n  \"automationhub.executions:read\": \"View all execution logs\",\n  \"automationhub.audit-logs:read\": \"View all audit logs\",\n  \"automationhub.variables:read\": \"View all project variables\",\n  \"automationhub.variables:write\": \"Create, update, remove variables\",\n  \"automationhub.accounts:read\": \"View all connected apps\",\n\n  // Brand Kit\n  \"brand-kits:read\": \"View all brand kits\",\n  \"brand-kits:manage\": \"Create, read, update, and delete brand kits\",\n\n  // Variants\n  \"cm.variant:read\": \"View all variant groups and its variants\",\n  \"cm.variant:write\": \"Create, update and remove variant groups and its variants\",\n\n  // Analytics & Audit\n  \"analytics:read\": \"View organization analytics\",\n  \"auditlogs:read\": \"View organization auditlog\",\n\n  // Teams\n  \"teams:read\": \"View all teams\",\n  \"teams:write\": \"Create, update and delete teams\",\n} as const\n\n/**\n * Pre-built scope combinations for common use cases.\n *\n * Each preset includes `user:read` as a baseline since it is required\n * for all OAuth flows that need user profile information.\n *\n * @example\n * ```ts\n * import { OAUTH_SCOPE_PRESETS } from \"@timbenniks/contentstack-platform-sdk/auth\"\n *\n * const config: OAuthConfig = {\n *   scopes: OAUTH_SCOPE_PRESETS.cmsAuthoring,\n *   // ...\n * }\n * ```\n */\nexport const OAUTH_SCOPE_PRESETS = {\n  /** Minimal: only read the authenticated user's profile. */\n  readOnly: [\"user:read\"] as const,\n\n  /** Read content types, entries, and assets. */\n  contentReader: [\n    \"user:read\",\n    \"cm.content-types.management:read\",\n    \"cm.entries.management:read\",\n    \"cm.assets.management:read\",\n  ] as const,\n\n  /** Read and write entries and assets; read content types. */\n  cmsAuthoring: [\n    \"user:read\",\n    \"cm.content-types.management:read\",\n    \"cm.entries.management:read\",\n    \"cm.entries.management:write\",\n    \"cm.entry:publish\",\n    \"cm.entry:unpublish\",\n    \"cm.assets.management:read\",\n    \"cm.assets.management:write\",\n    \"cm.asset:publish\",\n    \"cm.asset:unpublish\",\n  ] as const,\n\n  /** CMS authoring plus taxonomy management. */\n  cmsAuthoringWithTaxonomies: [\n    \"user:read\",\n    \"cm.content-types.management:read\",\n    \"cm.entries.management:read\",\n    \"cm.entries.management:write\",\n    \"cm.entry:publish\",\n    \"cm.entry:unpublish\",\n    \"cm.assets.management:read\",\n    \"cm.assets.management:write\",\n    \"cm.asset:publish\",\n    \"cm.asset:unpublish\",\n    \"cm.taxonomies.management:read\",\n    \"cm.taxonomies.management:write\",\n    \"cm.taxonomy.terms:read\",\n    \"cm.taxonomy.terms:write\",\n  ] as const,\n\n  /** Brand Kit: read and manage voice profiles and knowledge vault. */\n  brandKit: [\"user:read\", \"brand-kits:read\", \"brand-kits:manage\"] as const,\n\n  /** Launch: manage projects and deployments. */\n  launch: [\n    \"user:read\",\n    \"launch:manage\",\n    \"launch.projects:read\",\n    \"launch.projects:write\",\n    \"launch.projects:delete\",\n  ] as const,\n\n  /** Personalization: read and manage experiences. */\n  personalization: [\"user:read\", \"personalize:read\", \"personalize:manage\"] as const,\n\n  /** Developer Hub: read and manage apps, installations, authorizations, and hosting. */\n  developerHub: [\n    \"user:read\",\n    \"app.manifests:read\",\n    \"app.manifest:read\",\n    \"app.manifest:write\",\n    \"app.hosting:read\",\n    \"app.hosting:write\",\n    \"app.installations:read\",\n    \"app.installations.management:read\",\n    \"app.installations.management:write\",\n    \"app.authorizations:manage\",\n    \"app.authorizations.management:write\",\n    \"app.requests:write\",\n    \"app.requests.management:write\",\n  ] as const,\n\n  /** Automation Hub: manage automations and variables. */\n  automationHub: [\n    \"user:read\",\n    \"automationhub.projects.management:read\",\n    \"automationhub.projects.management:write\",\n    \"automationhub.automations:read\",\n    \"automationhub.automations:write\",\n    \"automationhub.executions:read\",\n    \"automationhub.variables:read\",\n    \"automationhub.variables:write\",\n    \"automationhub.accounts:read\",\n  ] as const,\n} satisfies Record<string, readonly ContentstackOAuthScope[]>\n","import { ContentstackHttpClient } from \"../http/client.js\"\nimport {\n  ContentstackAuthError,\n  ContentstackConfigError,\n  ContentstackError,\n} from \"../http/errors.js\"\nimport type { ContentstackRegion } from \"../regions/index.js\"\nimport { resolveEndpoints } from \"../regions/index.js\"\nimport type {\n  AuthHttpOptions,\n  ContentstackCredentials,\n  ContentstackCredentialsSession,\n  ContentstackUser,\n} from \"./types.js\"\n\ntype SessionAuth = { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n\nfunction mapUser(user: Record<string, unknown>): ContentstackUser {\n  return {\n    uid: user.uid as string,\n    email: user.email as string,\n    firstName: (user.first_name as string) ?? undefined,\n    lastName: (user.last_name as string) ?? undefined,\n    username: (user.username as string) ?? undefined,\n    profileImage: (user.profile_image as string) ?? undefined,\n  }\n}\n\nfunction createCMAHttpClient(\n  region: ContentstackRegion,\n  options?: AuthHttpOptions,\n  headers?: Record<string, string>,\n): ContentstackHttpClient {\n  const endpoints = resolveEndpoints(region)\n\n  return new ContentstackHttpClient({\n    ...options,\n    baseUrl: `${endpoints.cma}/v3`,\n    headers,\n  })\n}\n\nfunction resolveTfaToken(credentials: ContentstackCredentials): string | undefined {\n  return credentials.otp ?? credentials.tfaToken\n}\n\nexport async function loginWithCredentials(\n  region: ContentstackRegion,\n  credentials: ContentstackCredentials,\n  options?: { httpOptions?: AuthHttpOptions },\n): Promise<ContentstackCredentialsSession> {\n  if (!credentials.email) {\n    throw new ContentstackConfigError(\"email is required for credentials login\")\n  }\n\n  if (!credentials.password) {\n    throw new ContentstackConfigError(\"password is required for credentials login\")\n  }\n\n  const client = createCMAHttpClient(region, options?.httpOptions)\n  const tfaToken = resolveTfaToken(credentials)\n\n  try {\n    const { data } = await client.post<{\n      notice?: string\n      user?: Record<string, unknown> & { authtoken?: string }\n    }>(\"/user-session\", {\n      user: {\n        email: credentials.email,\n        password: credentials.password,\n        ...(tfaToken ? { tfa_token: tfaToken } : {}),\n      },\n    })\n\n    const authtoken = data.user?.authtoken\n    if (!data.user || !authtoken) {\n      throw new ContentstackAuthError(\"Credentials login did not return an authtoken\", {\n        requestPath: \"/user-session\",\n      })\n    }\n\n    return {\n      authtoken,\n      user: mapUser(data.user),\n      notice: data.notice,\n    }\n  } catch (error) {\n    if (error instanceof ContentstackError) {\n      throw error\n    }\n\n    throw new ContentstackAuthError(\"Failed to log in with Contentstack credentials\", {\n      requestPath: \"/user-session\",\n      cause: error instanceof Error ? error : undefined,\n    })\n  }\n}\n\nexport async function logoutUserSession(\n  region: ContentstackRegion,\n  authtoken: string,\n  options?: { httpOptions?: AuthHttpOptions },\n): Promise<void> {\n  if (!authtoken) {\n    throw new ContentstackConfigError(\"authtoken is required to log out a user session\")\n  }\n\n  const client = createCMAHttpClient(region, options?.httpOptions, { authtoken })\n  await client.delete(\"/user-session\")\n}\n\nexport async function getCurrentUser(\n  region: ContentstackRegion,\n  auth: SessionAuth,\n  options?: { httpOptions?: AuthHttpOptions },\n): Promise<ContentstackUser> {\n  const headers: Record<string, string> = {}\n\n  if (auth.type === \"oauth\") {\n    headers.Authorization = `Bearer ${auth.accessToken}`\n  } else {\n    headers.authtoken = auth.token\n  }\n\n  const client = createCMAHttpClient(region, options?.httpOptions, headers)\n\n  try {\n    const { data } = await client.get<{ user: Record<string, unknown> }>(\"/user\")\n    return mapUser(data.user)\n  } catch (error) {\n    if (error instanceof ContentstackError) {\n      throw new ContentstackAuthError(error.message || \"Failed to fetch user profile\", {\n        status: error.status,\n        requestPath: \"/user\",\n        cause: error,\n      })\n    }\n\n    throw new ContentstackAuthError(\"Failed to fetch user profile\", {\n      requestPath: \"/user\",\n      cause: error instanceof Error ? error : undefined,\n    })\n  }\n}\n"],"mappings":"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","names":[]}