{"version":3,"sources":["../src/cma/assets.ts","../src/cma/base-client.ts","../src/cma/audit-log.ts","../src/cma/auth.ts","../src/cma/branch-aliases.ts","../src/cma/branches.ts","../src/cma/bulk.ts","../src/cma/content-types.ts","../src/cma/entries.ts","../src/cma/environments.ts","../src/cma/extensions.ts","../src/cma/global-fields.ts","../src/cma/labels.ts","../src/cma/locales.ts","../src/cma/publish-rules.ts","../src/cma/releases.ts","../src/cma/roles.ts","../src/cma/taxonomies.ts","../src/cma/tokens.ts","../src/cma/webhooks.ts","../src/cma/workflows.ts","../src/cma/client.ts","../src/cma/request-builders.ts"],"sourcesContent":["// @timbenniks/contentstack-platform-sdk — CMA AssetsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\nimport type { Asset, AssetFolder, BasePublishAction } from \"./types.js\"\n\nexport type AssetPublishAction = BasePublishAction\n\nexport class AssetsClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  list(opts?: { limit?: number; folder?: string }): AsyncIterable<Asset> {\n    return paginate<Asset>(\n      async (skip, limit) => {\n        const params: Record<string, string> = {\n          skip: String(skip),\n          limit: String(limit),\n        }\n        if (opts?.folder) params.folder = opts.folder\n\n        const response = await this.http.get<{ assets: Asset[]; count?: number }>(\"/assets\", params)\n        return { items: response.data.assets ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAll(opts?: { limit?: number; folder?: string }): Promise<Asset[]> {\n    return collectAll(this.list(opts))\n  }\n\n  async get(uid: string): Promise<Asset> {\n    const response = await this.http.get<{ asset: Asset }>(`/assets/${uid}`)\n    return response.data.asset\n  }\n\n  async upload(form: FormData): Promise<Asset> {\n    const response = await this.http.upload<{ asset: Asset }>(\"/assets\", form)\n    return response.data.asset\n  }\n\n  async update(uid: string, data: Partial<Asset>): Promise<Asset> {\n    const response = await this.http.put<{ asset: Asset }>(`/assets/${uid}`, { asset: data })\n    return response.data.asset\n  }\n\n  async delete(uid: string): Promise<void> {\n    await this.http.delete(`/assets/${uid}`)\n  }\n\n  async publish(uid: string, data: AssetPublishAction): Promise<void> {\n    await this.http.post(`/assets/${uid}/publish`, { asset: data })\n  }\n\n  async unpublish(uid: string, data: AssetPublishAction): Promise<void> {\n    await this.http.post(`/assets/${uid}/unpublish`, { asset: data })\n  }\n\n  // ─── Folders ──────────────────────────────────────────────────────\n\n  async listFolders(opts?: { limit?: number }): Promise<AssetFolder[]> {\n    const response = await this.http.get<{ assets: AssetFolder[] }>(\"/assets/folders\", {\n      limit: String(opts?.limit ?? 100),\n    })\n    return response.data.assets ?? []\n  }\n\n  async getFolder(uid: string): Promise<AssetFolder> {\n    const response = await this.http.get<{ asset: AssetFolder }>(`/assets/folders/${uid}`)\n    return response.data.asset\n  }\n\n  async createFolder(data: { name: string; parent_uid?: string }): Promise<AssetFolder> {\n    const response = await this.http.post<{ asset: AssetFolder }>(\"/assets/folders\", {\n      asset: data,\n    })\n    return response.data.asset\n  }\n\n  async updateFolder(uid: string, data: { name: string }): Promise<AssetFolder> {\n    const response = await this.http.put<{ asset: AssetFolder }>(`/assets/folders/${uid}`, {\n      asset: data,\n    })\n    return response.data.asset\n  }\n\n  async deleteFolder(uid: string): Promise<void> {\n    await this.http.delete(`/assets/folders/${uid}`)\n  }\n\n  // ─── Additional Operations ──────────────────────────────────────\n\n  async replace(uid: string, form: FormData): Promise<Asset> {\n    const response = await this.http.upload<{ asset: Asset }>(`/assets/${uid}`, form)\n    return response.data.asset\n  }\n\n  async getReferences(uid: string): Promise<unknown[]> {\n    const response = await this.http.get<{ references: unknown[] }>(`/assets/${uid}/references`)\n    return response.data.references ?? []\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA base CRUD client\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\n\nexport interface CrudConfig {\n  basePath: string\n  singularKey: string\n  pluralKey: string\n}\n\nexport class CrudClient<T> {\n  constructor(\n    protected readonly http: ContentstackHttpClient,\n    protected readonly config: CrudConfig,\n  ) {}\n\n  list(opts?: { limit?: number }): AsyncIterable<T> {\n    return paginate<T>(\n      async (skip, limit) => {\n        const response = await this.http.get<Record<string, unknown>>(this.config.basePath, {\n          skip: String(skip),\n          limit: String(limit),\n        })\n        const items = (response.data[this.config.pluralKey] as T[]) ?? []\n        return { items, count: response.data.count as number | undefined }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAll(opts?: { limit?: number }): Promise<T[]> {\n    return collectAll(this.list(opts))\n  }\n\n  async get(uid: string): Promise<T> {\n    const response = await this.http.get<Record<string, unknown>>(`${this.config.basePath}/${uid}`)\n    return response.data[this.config.singularKey] as T\n  }\n\n  async create(data: Partial<T>): Promise<T> {\n    const response = await this.http.post<Record<string, unknown>>(this.config.basePath, {\n      [this.config.singularKey]: data,\n    })\n    return response.data[this.config.singularKey] as T\n  }\n\n  async update(uid: string, data: Partial<T>): Promise<T> {\n    const response = await this.http.put<Record<string, unknown>>(\n      `${this.config.basePath}/${uid}`,\n      { [this.config.singularKey]: data },\n    )\n    return response.data[this.config.singularKey] as T\n  }\n\n  async delete(uid: string): Promise<void> {\n    await this.http.delete(`${this.config.basePath}/${uid}`)\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA AuditLogClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { AuditLogEntry } from \"./types.js\"\n\nexport class AuditLogClient extends CrudClient<AuditLogEntry> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/audit-logs\", singularKey: \"audit_log\", pluralKey: \"audit_logs\" })\n  }\n}\n","import { exchangeCode, loginWithCredentials, refreshToken } from \"../auth/index.js\"\nimport type {\n  AuthHttpOptions,\n  ContentstackCredentials,\n  OAuthConfig,\n  OAuthTokens,\n} from \"../auth/types.js\"\nimport { ContentstackConfigError } from \"../http/errors.js\"\nimport type { HttpHeadersResolver } from \"../http/types.js\"\nimport type { ContentstackRegion } from \"../regions/resolver.js\"\n\nconst DEFAULT_OAUTH_REFRESH_THRESHOLD_MS = 60_000\n\nexport interface CMAClientManagementTokenAuth {\n  type: \"management-token\"\n  token: string\n}\n\nexport interface CMAClientOAuthAuth {\n  type: \"oauth\"\n  accessToken?: string\n  getAccessToken?: () => string | Promise<string>\n}\n\nexport interface CMAClientAuthtokenAuth {\n  type: \"authtoken\"\n  token: string\n}\n\nexport interface CMAClientCredentialsAuth extends ContentstackCredentials {\n  type: \"credentials\"\n}\n\nexport interface CMAClientOAuthFlowAuth {\n  type: \"oauth-flow\"\n  config: OAuthConfig\n  tokens?: OAuthTokens\n  code?: string\n  codeVerifier?: string\n  obtainedAt?: number\n  refreshThresholdMs?: number\n  onTokens?: (tokens: OAuthTokens & { obtainedAt: number }) => void | Promise<void>\n}\n\nexport type CMAClientAuth =\n  | CMAClientManagementTokenAuth\n  | CMAClientOAuthAuth\n  | CMAClientAuthtokenAuth\n  | CMAClientCredentialsAuth\n  | CMAClientOAuthFlowAuth\n\ninterface StoredOAuthTokens extends OAuthTokens {\n  obtainedAt: number\n}\n\nfunction getStoredTokens(auth: CMAClientOAuthFlowAuth): StoredOAuthTokens | undefined {\n  if (!auth.tokens) {\n    return undefined\n  }\n\n  return {\n    ...auth.tokens,\n    obtainedAt: auth.obtainedAt ?? Date.now(),\n  }\n}\n\nfunction isTokenExpired(tokens: StoredOAuthTokens, refreshThresholdMs: number): boolean {\n  return Date.now() >= tokens.obtainedAt + tokens.expiresIn * 1000 - refreshThresholdMs\n}\n\nexport function createCMAAuthResolver(\n  region: ContentstackRegion,\n  auth: CMAClientAuth,\n  httpOptions?: AuthHttpOptions,\n): HttpHeadersResolver {\n  switch (auth.type) {\n    case \"management-token\":\n      return () => ({ authorization: auth.token })\n    case \"authtoken\":\n      return () => ({ authtoken: auth.token })\n    case \"oauth\":\n      return async () => {\n        const accessToken = auth.accessToken ?? (await auth.getAccessToken?.())\n        if (!accessToken) {\n          throw new ContentstackConfigError(\"OAuth auth requires accessToken or getAccessToken()\")\n        }\n\n        return { authorization: `Bearer ${accessToken}` }\n      }\n    case \"credentials\": {\n      let authtoken: string | undefined\n      let loginPromise: Promise<string> | undefined\n\n      return async () => {\n        if (authtoken) {\n          return { authtoken }\n        }\n\n        if (!loginPromise) {\n          loginPromise = loginWithCredentials(\n            region,\n            {\n              email: auth.email,\n              password: auth.password,\n              otp: auth.otp,\n              tfaToken: auth.tfaToken,\n            },\n            { httpOptions },\n          )\n            .then((session) => {\n              authtoken = session.authtoken\n              return authtoken\n            })\n            .finally(() => {\n              loginPromise = undefined\n            })\n        }\n\n        return { authtoken: await loginPromise }\n      }\n    }\n    case \"oauth-flow\": {\n      let currentTokens = getStoredTokens(auth)\n      let tokenPromise: Promise<StoredOAuthTokens> | undefined\n      const refreshThresholdMs = auth.refreshThresholdMs ?? DEFAULT_OAUTH_REFRESH_THRESHOLD_MS\n\n      const persistTokens = async (tokens: OAuthTokens): Promise<StoredOAuthTokens> => {\n        currentTokens = {\n          ...tokens,\n          obtainedAt: Date.now(),\n        }\n        await auth.onTokens?.(currentTokens)\n        return currentTokens\n      }\n\n      const ensureTokens = async (): Promise<StoredOAuthTokens> => {\n        if (currentTokens && !isTokenExpired(currentTokens, refreshThresholdMs)) {\n          return currentTokens\n        }\n\n        if (!tokenPromise) {\n          tokenPromise = (async () => {\n            if (!currentTokens) {\n              if (!auth.code) {\n                throw new ContentstackConfigError(\n                  \"OAuth flow auth requires tokens or an authorization code\",\n                )\n              }\n\n              return persistTokens(\n                await exchangeCode(auth.config, auth.code, {\n                  codeVerifier: auth.codeVerifier,\n                  httpOptions,\n                }),\n              )\n            }\n\n            return persistTokens(\n              await refreshToken(auth.config, currentTokens.refreshToken, {\n                httpOptions,\n              }),\n            )\n          })().finally(() => {\n            tokenPromise = undefined\n          })\n        }\n\n        return tokenPromise\n      }\n\n      return async () => {\n        const tokens = await ensureTokens()\n        return { authorization: `Bearer ${tokens.accessToken}` }\n      }\n    }\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA BranchAliasesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type { BranchAlias } from \"./types.js\"\n\nexport class BranchAliasesClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  async list(): Promise<BranchAlias[]> {\n    const response = await this.http.get<{ branch_aliases: BranchAlias[] }>(\n      \"/stacks/branch_aliases\",\n    )\n    return response.data.branch_aliases ?? []\n  }\n\n  async get(uid: string): Promise<BranchAlias> {\n    const response = await this.http.get<{ branch_alias: BranchAlias }>(\n      `/stacks/branch_aliases/${uid}`,\n    )\n    return response.data.branch_alias\n  }\n\n  async createOrUpdate(uid: string, targetBranch: string): Promise<BranchAlias> {\n    const response = await this.http.put<{ branch_alias: BranchAlias }>(\n      `/stacks/branch_aliases/${uid}`,\n      { branch_alias: { target_branch: targetBranch } },\n    )\n    return response.data.branch_alias\n  }\n\n  async delete(uid: string): Promise<void> {\n    await this.http.delete(`/stacks/branch_aliases/${uid}`)\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA BranchesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\nimport type { Branch, MergeJob } from \"./types.js\"\n\nexport interface MergeRequest {\n  base_branch: string\n  compare_branch: string\n  default_merge_strategy:\n    | \"merge_prefer_base\"\n    | \"merge_prefer_compare\"\n    | \"overwrite_with_compare\"\n    | \"merge_new_only\"\n    | \"ignore\"\n  merge_comment?: string\n  item_merge_strategies?: Record<string, string>\n}\n\nexport class BranchesClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  list(opts?: { limit?: number }): AsyncIterable<Branch> {\n    return paginate<Branch>(\n      async (skip, limit) => {\n        const response = await this.http.get<{ branches: Branch[]; count?: number }>(\n          \"/stacks/branches\",\n          { skip: String(skip), limit: String(limit) },\n        )\n        return { items: response.data.branches ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAll(opts?: { limit?: number }): Promise<Branch[]> {\n    return collectAll(this.list(opts))\n  }\n\n  async get(uid: string): Promise<Branch> {\n    const response = await this.http.get<{ branch: Branch }>(`/stacks/branches/${uid}`)\n    return response.data.branch\n  }\n\n  async create(data: { uid: string; source: string }): Promise<Branch> {\n    const response = await this.http.post<{ branch: Branch }>(\"/stacks/branches\", {\n      branch: data,\n    })\n    return response.data.branch\n  }\n\n  async delete(uid: string): Promise<void> {\n    await this.http.delete(`/stacks/branches/${uid}`)\n  }\n\n  async compare(baseBranch: string, compareBranch: string): Promise<unknown> {\n    const response = await this.http.get<unknown>(\"/stacks/branches_compare\", {\n      base_branch: baseBranch,\n      compare_branch: compareBranch,\n    })\n    return response.data\n  }\n\n  async merge(data: MergeRequest): Promise<MergeJob> {\n    const response = await this.http.post<{ merge_job: MergeJob }>(\"/stacks/branches_merge\", data)\n    return response.data.merge_job\n  }\n\n  async listMergeJobs(): Promise<MergeJob[]> {\n    const response = await this.http.get<{ merge_jobs: MergeJob[] }>(\"/stacks/branches_queue\")\n    return response.data.merge_jobs ?? []\n  }\n\n  async getMergeJob(uid: string): Promise<MergeJob> {\n    const response = await this.http.get<{ merge_job: MergeJob }>(`/stacks/branches_queue/${uid}`)\n    return response.data.merge_job\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA BulkOperationsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type { BasePublishAction } from \"./types.js\"\n\nexport interface BulkEntry {\n  uid: string\n  content_type: string\n  locale: string\n  version?: number\n}\n\nexport interface BulkPublishAction extends BasePublishAction {\n  entries?: BulkEntry[]\n  assets?: Array<{ uid: string }>\n}\n\nexport interface BulkWorkflowAction {\n  entries: Array<{\n    uid: string\n    content_type: string\n    locale: string\n  }>\n  workflow_stage: {\n    uid: string\n    comment?: string\n  }\n}\n\nexport class BulkOperationsClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  async publish(data: BulkPublishAction): Promise<void> {\n    await this.http.post(\"/bulk/publish\", data)\n  }\n\n  async unpublish(data: BulkPublishAction): Promise<void> {\n    await this.http.post(\"/bulk/unpublish\", data)\n  }\n\n  async delete(data: {\n    entries?: Array<{ uid: string; content_type: string; locale: string }>\n    assets?: Array<{ uid: string }>\n  }): Promise<void> {\n    await this.http.post(\"/bulk/delete\", data)\n  }\n\n  async updateWorkflow(data: BulkWorkflowAction): Promise<void> {\n    await this.http.post(\"/bulk/workflow\", data)\n  }\n\n  async addItems(data: Record<string, unknown>): Promise<void> {\n    await this.http.post(\"/bulk/add\", data)\n  }\n\n  async updateItems(data: Record<string, unknown>): Promise<void> {\n    await this.http.post(\"/bulk/update\", data)\n  }\n\n  async jobStatus(jobId: string): Promise<unknown> {\n    const response = await this.http.get<{ job: unknown }>(`/bulk/jobs/${jobId}`)\n    return response.data.job\n  }\n\n  async getJobItems(jobId: string, opts?: { limit?: number; skip?: number }): Promise<unknown[]> {\n    const params: Record<string, string> = {}\n    if (opts?.limit) params.limit = String(opts.limit)\n    if (opts?.skip) params.skip = String(opts.skip)\n    const response = await this.http.get<{ items: unknown[] }>(\n      `/bulk/jobs/${jobId}/items`,\n      Object.keys(params).length > 0 ? params : undefined,\n    )\n    return response.data.items ?? []\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA ContentTypesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\nimport type { ContentType } from \"./types.js\"\n\nexport class ContentTypesClient extends CrudClient<ContentType> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, {\n      basePath: \"/content_types\",\n      singularKey: \"content_type\",\n      pluralKey: \"content_types\",\n    })\n  }\n\n  override list(opts?: { limit?: number; include_count?: boolean }): AsyncIterable<ContentType> {\n    return paginate<ContentType>(\n      async (skip, limit) => {\n        const params: Record<string, string> = {\n          skip: String(skip),\n          limit: String(limit),\n        }\n        if (opts?.include_count) params.include_count = \"true\"\n\n        const response = await this.http.get<{\n          content_types: ContentType[]\n          count?: number\n        }>(\"/content_types\", params)\n        return { items: response.data.content_types ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  override async listAll(opts?: { limit?: number; include_count?: boolean }): Promise<\n    ContentType[]\n  > {\n    return collectAll(this.list(opts))\n  }\n\n  async export(uid: string): Promise<ContentType> {\n    const response = await this.http.get<{ content_type: ContentType }>(\n      `/content_types/${uid}/export`,\n    )\n    return response.data.content_type\n  }\n\n  async import(data: Record<string, unknown>): Promise<ContentType> {\n    const response = await this.http.post<{ content_type: ContentType }>(\n      \"/content_types/import\",\n      data,\n    )\n    return response.data.content_type\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA EntriesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\nimport type { BasePublishAction, Entry } from \"./types.js\"\n\nexport interface EntryListOptions {\n  locale?: string\n  include_publish_details?: boolean\n  include_workflow?: boolean\n  include_count?: boolean\n  query?: Record<string, unknown>\n  asc?: string\n  desc?: string\n  limit?: number\n}\n\nexport interface EntryGetOptions {\n  locale?: string\n  include_publish_details?: boolean\n  include_workflow?: boolean\n  version?: number\n}\n\nexport type PublishAction = BasePublishAction\n\nexport interface WorkflowStageAction {\n  workflow_stage: {\n    uid: string\n    comment?: string\n    due_date?: string\n    assigned_to?: Array<{ uid: string; name: string; email: string }>\n    notify?: boolean\n  }\n}\n\nexport class EntriesClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  private basePath(ctUid: string): string {\n    return `/content_types/${ctUid}/entries`\n  }\n\n  list(ctUid: string, opts?: EntryListOptions): AsyncIterable<Entry> {\n    return paginate<Entry>(\n      async (skip, limit) => {\n        const params: Record<string, string> = {\n          skip: String(skip),\n          limit: String(limit),\n        }\n        if (opts?.locale) params.locale = opts.locale\n        if (opts?.include_publish_details) params.include_publish_details = \"true\"\n        if (opts?.include_workflow) params.include_workflow = \"true\"\n        if (opts?.include_count) params.include_count = \"true\"\n        if (opts?.query) params.query = JSON.stringify(opts.query)\n        if (opts?.asc) params.asc = opts.asc\n        if (opts?.desc) params.desc = opts.desc\n\n        const response = await this.http.get<{ entries: Entry[]; count?: number }>(\n          this.basePath(ctUid),\n          params,\n        )\n        return { items: response.data.entries ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAll(ctUid: string, opts?: EntryListOptions): Promise<Entry[]> {\n    return collectAll(this.list(ctUid, opts))\n  }\n\n  async get(ctUid: string, entryUid: string, opts?: EntryGetOptions): Promise<Entry> {\n    const params: Record<string, string> = {}\n    if (opts?.locale) params.locale = opts.locale\n    if (opts?.include_publish_details) params.include_publish_details = \"true\"\n    if (opts?.include_workflow) params.include_workflow = \"true\"\n    if (opts?.version) params.version = String(opts.version)\n\n    const response = await this.http.get<{ entry: Entry }>(\n      `${this.basePath(ctUid)}/${entryUid}`,\n      Object.keys(params).length > 0 ? params : undefined,\n    )\n    return response.data.entry\n  }\n\n  async create(ctUid: string, data: Partial<Entry>): Promise<Entry> {\n    const response = await this.http.post<{ entry: Entry }>(this.basePath(ctUid), { entry: data })\n    return response.data.entry\n  }\n\n  async update(ctUid: string, entryUid: string, data: Partial<Entry>): Promise<Entry> {\n    const response = await this.http.put<{ entry: Entry }>(`${this.basePath(ctUid)}/${entryUid}`, {\n      entry: data,\n    })\n    return response.data.entry\n  }\n\n  async delete(ctUid: string, entryUid: string, opts?: { locale?: string }): Promise<void> {\n    let path = `${this.basePath(ctUid)}/${entryUid}`\n    if (opts?.locale) path += `?locale=${encodeURIComponent(opts.locale)}`\n    await this.http.delete(path)\n  }\n\n  async publish(ctUid: string, entryUid: string, data: PublishAction): Promise<void> {\n    await this.http.post(`${this.basePath(ctUid)}/${entryUid}/publish`, { entry: data })\n  }\n\n  async unpublish(ctUid: string, entryUid: string, data: PublishAction): Promise<void> {\n    await this.http.post(`${this.basePath(ctUid)}/${entryUid}/unpublish`, { entry: data })\n  }\n\n  async localize(ctUid: string, entryUid: string, data: Record<string, unknown>): Promise<Entry> {\n    const response = await this.http.post<{ entry: Entry }>(\n      `${this.basePath(ctUid)}/${entryUid}/localize`,\n      { entry: data },\n    )\n    return response.data.entry\n  }\n\n  async setWorkflowStage(\n    ctUid: string,\n    entryUid: string,\n    data: WorkflowStageAction,\n  ): Promise<void> {\n    await this.http.post(`${this.basePath(ctUid)}/${entryUid}/workflow`, data)\n  }\n\n  async references(ctUid: string, entryUid: string): Promise<unknown[]> {\n    const response = await this.http.get<{ references: unknown[] }>(\n      `${this.basePath(ctUid)}/${entryUid}/references`,\n    )\n    return response.data.references ?? []\n  }\n\n  async languages(ctUid: string, entryUid: string): Promise<unknown[]> {\n    const response = await this.http.get<{ locales: unknown[] }>(\n      `${this.basePath(ctUid)}/${entryUid}/languages`,\n    )\n    return response.data.locales ?? []\n  }\n\n  async versions(ctUid: string, entryUid: string): Promise<unknown[]> {\n    const response = await this.http.get<{ versions: unknown[] }>(\n      `${this.basePath(ctUid)}/${entryUid}/versions`,\n    )\n    return response.data.versions ?? []\n  }\n\n  async import(\n    ctUid: string,\n    data: Record<string, unknown>,\n    opts?: { locale?: string; overwrite?: boolean },\n  ): Promise<Entry> {\n    let path = `${this.basePath(ctUid)}/import`\n    const params: string[] = []\n    if (opts?.locale) params.push(`locale=${encodeURIComponent(opts.locale)}`)\n    if (opts?.overwrite) params.push(\"overwrite=true\")\n    if (params.length > 0) path += `?${params.join(\"&\")}`\n\n    const response = await this.http.post<{ entry: Entry }>(path, data)\n    return response.data.entry\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA EnvironmentsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Environment } from \"./types.js\"\n\nexport class EnvironmentsClient extends CrudClient<Environment> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, {\n      basePath: \"/environments\",\n      singularKey: \"environment\",\n      pluralKey: \"environments\",\n    })\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA ExtensionsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Extension } from \"./types.js\"\n\nexport class ExtensionsClient extends CrudClient<Extension> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/extensions\", singularKey: \"extension\", pluralKey: \"extensions\" })\n  }\n\n  async upload(form: FormData): Promise<Extension> {\n    const response = await this.http.upload<{ extension: Extension }>(\"/extensions\", form)\n    return response.data.extension\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA GlobalFieldsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { GlobalField } from \"./types.js\"\n\nexport class GlobalFieldsClient extends CrudClient<GlobalField> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, {\n      basePath: \"/global_fields\",\n      singularKey: \"global_field\",\n      pluralKey: \"global_fields\",\n    })\n  }\n\n  async export(uid: string): Promise<GlobalField> {\n    const response = await this.http.get<{ global_field: GlobalField }>(\n      `/global_fields/${uid}/export`,\n    )\n    return response.data.global_field\n  }\n\n  async import(data: Record<string, unknown>): Promise<GlobalField> {\n    const response = await this.http.post<{ global_field: GlobalField }>(\n      \"/global_fields/import\",\n      data,\n    )\n    return response.data.global_field\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA LabelsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Label } from \"./types.js\"\n\nexport class LabelsClient extends CrudClient<Label> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/labels\", singularKey: \"label\", pluralKey: \"labels\" })\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA LocalesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Locale } from \"./types.js\"\n\nexport class LocalesClient extends CrudClient<Locale> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/locales\", singularKey: \"locale\", pluralKey: \"locales\" })\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA PublishRulesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { PublishRule } from \"./types.js\"\n\nexport class PublishRulesClient extends CrudClient<PublishRule> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, {\n      basePath: \"/workflows/publishing_rules\",\n      singularKey: \"publishing_rule\",\n      pluralKey: \"publishing_rules\",\n    })\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA ReleasesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\nimport type { BasePublishAction, Release, ReleaseItem } from \"./types.js\"\n\nexport interface DeployAction extends BasePublishAction {\n  action?: \"publish\" | \"unpublish\"\n}\n\nexport class ReleasesClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  list(opts?: { limit?: number; include_count?: boolean }): AsyncIterable<Release> {\n    return paginate<Release>(\n      async (skip, limit) => {\n        const params: Record<string, string> = {\n          skip: String(skip),\n          limit: String(limit),\n        }\n        if (opts?.include_count) params.include_count = \"true\"\n\n        const response = await this.http.get<{ releases: Release[]; count?: number }>(\n          \"/releases\",\n          params,\n        )\n        return { items: response.data.releases ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAll(opts?: { limit?: number }): Promise<Release[]> {\n    return collectAll(this.list(opts))\n  }\n\n  async get(uid: string): Promise<Release> {\n    const response = await this.http.get<{ release: Release }>(`/releases/${uid}`)\n    return response.data.release\n  }\n\n  async create(data: Partial<Release>): Promise<Release> {\n    const response = await this.http.post<{ release: Release }>(\"/releases\", { release: data })\n    return response.data.release\n  }\n\n  async update(uid: string, data: Partial<Release>): Promise<Release> {\n    const response = await this.http.put<{ release: Release }>(`/releases/${uid}`, {\n      release: data,\n    })\n    return response.data.release\n  }\n\n  async delete(uid: string): Promise<void> {\n    await this.http.delete(`/releases/${uid}`)\n  }\n\n  async deploy(uid: string, data: DeployAction): Promise<void> {\n    await this.http.post(`/releases/${uid}/deploy`, { release: data })\n  }\n\n  // ─── Items ──────────────────────────────────────────────────────\n\n  async listItems(uid: string): Promise<ReleaseItem[]> {\n    const response = await this.http.get<{ items: ReleaseItem[] }>(`/releases/${uid}/items`)\n    return response.data.items ?? []\n  }\n\n  async addItem(uid: string, item: Partial<ReleaseItem>): Promise<void> {\n    await this.http.post(`/releases/${uid}/items`, { item })\n  }\n\n  async removeItem(\n    uid: string,\n    item: {\n      uid: string\n      content_type_uid: string\n      locale: string\n      version: number\n      action: string\n    },\n  ): Promise<void> {\n    await this.http.post(`/releases/${uid}/items/delete`, { item })\n  }\n\n  async clone(uid: string, data: { name: string; description?: string }): Promise<Release> {\n    const response = await this.http.post<{ release: Release }>(`/releases/${uid}/clone`, {\n      release: data,\n    })\n    return response.data.release\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA RolesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Role } from \"./types.js\"\n\nexport class RolesClient extends CrudClient<Role> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/roles\", singularKey: \"role\", pluralKey: \"roles\" })\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA TaxonomiesClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { collectAll, paginate } from \"./pagination.js\"\nimport type { Taxonomy, TaxonomyTerm } from \"./types.js\"\n\nexport class TaxonomiesClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  // ─── Taxonomies ───────────────────────────────────────────────────\n\n  list(opts?: { limit?: number }): AsyncIterable<Taxonomy> {\n    return paginate<Taxonomy>(\n      async (skip, limit) => {\n        const response = await this.http.get<{ taxonomies: Taxonomy[]; count?: number }>(\n          \"/taxonomies\",\n          { skip: String(skip), limit: String(limit) },\n        )\n        return { items: response.data.taxonomies ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAll(opts?: { limit?: number }): Promise<Taxonomy[]> {\n    return collectAll(this.list(opts))\n  }\n\n  async get(uid: string): Promise<Taxonomy> {\n    const response = await this.http.get<{ taxonomy: Taxonomy }>(`/taxonomies/${uid}`)\n    return response.data.taxonomy\n  }\n\n  async create(data: Partial<Taxonomy>): Promise<Taxonomy> {\n    const response = await this.http.post<{ taxonomy: Taxonomy }>(\"/taxonomies\", {\n      taxonomy: data,\n    })\n    return response.data.taxonomy\n  }\n\n  async update(uid: string, data: Partial<Taxonomy>): Promise<Taxonomy> {\n    const response = await this.http.put<{ taxonomy: Taxonomy }>(`/taxonomies/${uid}`, {\n      taxonomy: data,\n    })\n    return response.data.taxonomy\n  }\n\n  async delete(uid: string): Promise<void> {\n    await this.http.delete(`/taxonomies/${uid}`)\n  }\n\n  // ─── Terms ────────────────────────────────────────────────────────\n\n  listTerms(taxonomyUid: string, opts?: { limit?: number }): AsyncIterable<TaxonomyTerm> {\n    return paginate<TaxonomyTerm>(\n      async (skip, limit) => {\n        const response = await this.http.get<{ terms: TaxonomyTerm[]; count?: number }>(\n          `/taxonomies/${taxonomyUid}/terms`,\n          { skip: String(skip), limit: String(limit) },\n        )\n        return { items: response.data.terms ?? [], count: response.data.count }\n      },\n      { limit: opts?.limit },\n    )\n  }\n\n  async listAllTerms(taxonomyUid: string, opts?: { limit?: number }): Promise<TaxonomyTerm[]> {\n    return collectAll(this.listTerms(taxonomyUid, opts))\n  }\n\n  async getTerm(taxonomyUid: string, termUid: string): Promise<TaxonomyTerm> {\n    const response = await this.http.get<{ term: TaxonomyTerm }>(\n      `/taxonomies/${taxonomyUid}/terms/${termUid}`,\n    )\n    return response.data.term\n  }\n\n  async createTerm(taxonomyUid: string, data: Partial<TaxonomyTerm>): Promise<TaxonomyTerm> {\n    const response = await this.http.post<{ term: TaxonomyTerm }>(\n      `/taxonomies/${taxonomyUid}/terms`,\n      { term: data },\n    )\n    return response.data.term\n  }\n\n  async updateTerm(\n    taxonomyUid: string,\n    termUid: string,\n    data: Partial<TaxonomyTerm>,\n  ): Promise<TaxonomyTerm> {\n    const response = await this.http.put<{ term: TaxonomyTerm }>(\n      `/taxonomies/${taxonomyUid}/terms/${termUid}`,\n      { term: data },\n    )\n    return response.data.term\n  }\n\n  async deleteTerm(taxonomyUid: string, termUid: string): Promise<void> {\n    await this.http.delete(`/taxonomies/${taxonomyUid}/terms/${termUid}`)\n  }\n\n  async ancestors(taxonomyUid: string, termUid: string): Promise<TaxonomyTerm[]> {\n    const response = await this.http.get<{ terms: TaxonomyTerm[] }>(\n      `/taxonomies/${taxonomyUid}/terms/${termUid}/ancestors`,\n    )\n    return response.data.terms ?? []\n  }\n\n  async descendants(taxonomyUid: string, termUid: string): Promise<TaxonomyTerm[]> {\n    const response = await this.http.get<{ terms: TaxonomyTerm[] }>(\n      `/taxonomies/${taxonomyUid}/terms/${termUid}/descendants`,\n    )\n    return response.data.terms ?? []\n  }\n\n  async moveTerm(\n    taxonomyUid: string,\n    termUid: string,\n    data: { parent_uid?: string; order: number },\n  ): Promise<TaxonomyTerm> {\n    const response = await this.http.put<{ term: TaxonomyTerm }>(\n      `/taxonomies/${taxonomyUid}/terms/${termUid}/move`,\n      { term: data },\n    )\n    return response.data.term\n  }\n\n  // ─── Import / Export ──────────────────────────────────────────────\n\n  async export(uid: string): Promise<Taxonomy> {\n    const response = await this.http.get<{ taxonomy: Taxonomy }>(`/taxonomies/${uid}/export`)\n    return response.data.taxonomy\n  }\n\n  async import(data: Record<string, unknown>): Promise<Taxonomy> {\n    const response = await this.http.post<{ taxonomy: Taxonomy }>(\"/taxonomies/import\", data)\n    return response.data.taxonomy\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA TokensClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type { DeliveryToken, ManagementToken, PreviewToken } from \"./types.js\"\n\nfunction tokenCrud<T>(http: ContentstackHttpClient, basePath: string) {\n  return {\n    async list(): Promise<T[]> {\n      const response = await http.get<{ tokens: T[] }>(basePath)\n      return response.data.tokens ?? []\n    },\n    async get(uid: string): Promise<T> {\n      const response = await http.get<{ token: T }>(`${basePath}/${uid}`)\n      return response.data.token\n    },\n    async create(data: Partial<T>): Promise<T> {\n      const response = await http.post<{ token: T }>(basePath, { token: data })\n      return response.data.token\n    },\n    async update(uid: string, data: Partial<T>): Promise<T> {\n      const response = await http.put<{ token: T }>(`${basePath}/${uid}`, { token: data })\n      return response.data.token\n    },\n    async delete(uid: string): Promise<void> {\n      await http.delete(`${basePath}/${uid}`)\n    },\n  }\n}\n\nexport class TokensClient {\n  private management: ReturnType<typeof tokenCrud<ManagementToken>>\n  private delivery: ReturnType<typeof tokenCrud<DeliveryToken>>\n  private preview: ReturnType<typeof tokenCrud<PreviewToken>>\n\n  constructor(http: ContentstackHttpClient) {\n    this.management = tokenCrud<ManagementToken>(http, \"/stacks/management_tokens\")\n    this.delivery = tokenCrud<DeliveryToken>(http, \"/stacks/delivery_tokens\")\n    this.preview = tokenCrud<PreviewToken>(http, \"/stacks/preview_tokens\")\n  }\n\n  // ─── Management Tokens ────────────────────────────────────────────\n\n  listManagementTokens() {\n    return this.management.list()\n  }\n  getManagementToken(uid: string) {\n    return this.management.get(uid)\n  }\n  createManagementToken(data: Partial<ManagementToken>) {\n    return this.management.create(data)\n  }\n  updateManagementToken(uid: string, data: Partial<ManagementToken>) {\n    return this.management.update(uid, data)\n  }\n  deleteManagementToken(uid: string) {\n    return this.management.delete(uid)\n  }\n\n  // ─── Delivery Tokens ──────────────────────────────────────────────\n\n  listDeliveryTokens() {\n    return this.delivery.list()\n  }\n  getDeliveryToken(uid: string) {\n    return this.delivery.get(uid)\n  }\n  createDeliveryToken(data: Partial<DeliveryToken>) {\n    return this.delivery.create(data)\n  }\n  updateDeliveryToken(uid: string, data: Partial<DeliveryToken>) {\n    return this.delivery.update(uid, data)\n  }\n  deleteDeliveryToken(uid: string) {\n    return this.delivery.delete(uid)\n  }\n\n  // ─── Preview Tokens ──────────────────────────────────────────────\n\n  listPreviewTokens() {\n    return this.preview.list()\n  }\n  getPreviewToken(uid: string) {\n    return this.preview.get(uid)\n  }\n  createPreviewToken(data: Partial<PreviewToken>) {\n    return this.preview.create(data)\n  }\n  updatePreviewToken(uid: string, data: Partial<PreviewToken>) {\n    return this.preview.update(uid, data)\n  }\n  deletePreviewToken(uid: string) {\n    return this.preview.delete(uid)\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA WebhooksClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Webhook } from \"./types.js\"\n\nexport class WebhooksClient extends CrudClient<Webhook> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/webhooks\", singularKey: \"webhook\", pluralKey: \"webhooks\" })\n  }\n\n  async logs(uid: string): Promise<unknown[]> {\n    const response = await this.http.get<{ logs: unknown[] }>(`/webhooks/${uid}/logs`)\n    return response.data.logs ?? []\n  }\n\n  async retry(uid: string, executionUid: string): Promise<void> {\n    await this.http.post(`/webhooks/${uid}/retry/${executionUid}`, {})\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA WorkflowsClient\n\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { CrudClient } from \"./base-client.js\"\nimport type { Workflow } from \"./types.js\"\n\nexport class WorkflowsClient extends CrudClient<Workflow> {\n  constructor(http: ContentstackHttpClient) {\n    super(http, { basePath: \"/workflows\", singularKey: \"workflow\", pluralKey: \"workflows\" })\n  }\n}\n","// @timbenniks/contentstack-platform-sdk — CMA client factory\n\nimport { ContentstackHttpClient } from \"../http/client.js\"\nimport type { HttpClientConfig } from \"../http/types.js\"\nimport type { ContentstackRegion } from \"../regions/resolver.js\"\nimport { resolveEndpoints } from \"../regions/resolver.js\"\nimport { AssetsClient } from \"./assets.js\"\nimport { AuditLogClient } from \"./audit-log.js\"\nimport { createCMAAuthResolver } from \"./auth.js\"\nimport type { CMAClientAuth } from \"./auth.js\"\nimport { BranchAliasesClient } from \"./branch-aliases.js\"\nimport { BranchesClient } from \"./branches.js\"\nimport { BulkOperationsClient } from \"./bulk.js\"\nimport { ContentTypesClient } from \"./content-types.js\"\nimport { EntriesClient } from \"./entries.js\"\nimport { EnvironmentsClient } from \"./environments.js\"\nimport { ExtensionsClient } from \"./extensions.js\"\nimport { GlobalFieldsClient } from \"./global-fields.js\"\nimport { LabelsClient } from \"./labels.js\"\nimport { LocalesClient } from \"./locales.js\"\nimport { PublishRulesClient } from \"./publish-rules.js\"\nimport { ReleasesClient } from \"./releases.js\"\nimport { RolesClient } from \"./roles.js\"\nimport { TaxonomiesClient } from \"./taxonomies.js\"\nimport { TokensClient } from \"./tokens.js\"\nimport { WebhooksClient } from \"./webhooks.js\"\nimport { WorkflowsClient } from \"./workflows.js\"\n\nexport interface CMAClientConfig {\n  region: ContentstackRegion\n  apiKey: string\n  auth: CMAClientAuth\n  branch?: string\n  httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface CMAClient {\n  entries: EntriesClient\n  contentTypes: ContentTypesClient\n  assets: AssetsClient\n  environments: EnvironmentsClient\n  locales: LocalesClient\n  globalFields: GlobalFieldsClient\n  webhooks: WebhooksClient\n  workflows: WorkflowsClient\n  releases: ReleasesClient\n  branches: BranchesClient\n  branchAliases: BranchAliasesClient\n  taxonomies: TaxonomiesClient\n  bulk: BulkOperationsClient\n  tokens: TokensClient\n  labels: LabelsClient\n  roles: RolesClient\n  auditLog: AuditLogClient\n  extensions: ExtensionsClient\n  publishRules: PublishRulesClient\n  onBranch(branchUid: string): CMAClient\n}\n\nexport function createCMAClient(config: CMAClientConfig): CMAClient {\n  const endpoints = resolveEndpoints(config.region)\n\n  const headers: Record<string, string> = { api_key: config.apiKey }\n\n  if (config.branch) {\n    headers.branch = config.branch\n  }\n\n  const authResolver = createCMAAuthResolver(config.region, config.auth, config.httpOptions)\n\n  const http = new ContentstackHttpClient({\n    ...config.httpOptions,\n    baseUrl: config.httpOptions?.baseUrl ?? `${endpoints.cma}/v3`,\n    headers: {\n      ...config.httpOptions?.headers,\n      ...headers,\n    },\n    resolveHeaders: async () => {\n      const extraHeaders = await config.httpOptions?.resolveHeaders?.()\n      const authHeaders = await authResolver()\n      return {\n        ...extraHeaders,\n        ...authHeaders,\n      }\n    },\n  })\n\n  return {\n    entries: new EntriesClient(http),\n    contentTypes: new ContentTypesClient(http),\n    assets: new AssetsClient(http),\n    environments: new EnvironmentsClient(http),\n    locales: new LocalesClient(http),\n    globalFields: new GlobalFieldsClient(http),\n    webhooks: new WebhooksClient(http),\n    workflows: new WorkflowsClient(http),\n    releases: new ReleasesClient(http),\n    branches: new BranchesClient(http),\n    branchAliases: new BranchAliasesClient(http),\n    taxonomies: new TaxonomiesClient(http),\n    bulk: new BulkOperationsClient(http),\n    tokens: new TokensClient(http),\n    labels: new LabelsClient(http),\n    roles: new RolesClient(http),\n    auditLog: new AuditLogClient(http),\n    extensions: new ExtensionsClient(http),\n    publishRules: new PublishRulesClient(http),\n    onBranch(branchUid: string): CMAClient {\n      return createCMAClient({ ...config, branch: branchUid })\n    },\n  }\n}\n","/**\n * Framework-agnostic request builders for CMA operations.\n *\n * These pure functions build paths, query parameters, and request bodies\n * for Contentstack CMA endpoints. Both React hooks and Vue composables\n * use them to avoid duplicating request construction logic.\n */\n\n// ── Query parameter types ───────────────────────────────────────────────────\n\nexport interface EntryQueryParams {\n  locale?: string\n  version?: number\n  includePublishDetails?: boolean\n}\n\nexport interface EntriesQueryParams {\n  locale?: string\n  limit?: number\n  skip?: number\n  includePublishDetails?: boolean\n  query?: Record<string, unknown>\n}\n\nexport interface AssetsQueryParams {\n  folder?: string\n  limit?: number\n  skip?: number\n}\n\n// ── Mutation variable types ─────────────────────────────────────────────────\n\nexport interface CreateEntryVariables {\n  contentTypeUid: string\n  entry: Record<string, unknown>\n  locale?: string\n}\n\nexport interface UpdateEntryVariables {\n  contentTypeUid: string\n  entryUid: string\n  entry: Record<string, unknown>\n  locale?: string\n}\n\nexport interface DeleteEntryVariables {\n  contentTypeUid: string\n  entryUid: string\n  locale?: string\n  deleteAllLocalized?: boolean\n}\n\nexport interface PublishEntryVariables {\n  contentTypeUid: string\n  entryUid: string\n  environments: string[]\n  locales: string[]\n  scheduledAt?: string\n}\n\n// ── Param builders ──────────────────────────────────────────────────────────\n\nfunction nonEmptyParams(params: Record<string, string>): Record<string, string> | undefined {\n  return Object.keys(params).length > 0 ? params : undefined\n}\n\nexport function buildEntryParams(options?: EntryQueryParams): Record<string, string> | undefined {\n  if (!options) return undefined\n  const params: Record<string, string> = {}\n  if (options.locale) params.locale = options.locale\n  if (options.version !== undefined) params.version = String(options.version)\n  if (options.includePublishDetails) params.include_publish_details = \"true\"\n  return nonEmptyParams(params)\n}\n\nexport function buildEntriesParams(\n  options?: EntriesQueryParams,\n): Record<string, string> | undefined {\n  if (!options) return undefined\n  const params: Record<string, string> = {}\n  if (options.locale) params.locale = options.locale\n  if (options.limit !== undefined) params.limit = String(options.limit)\n  if (options.skip !== undefined) params.skip = String(options.skip)\n  if (options.includePublishDetails) params.include_publish_details = \"true\"\n  if (options.query) params.query = JSON.stringify(options.query)\n  return nonEmptyParams(params)\n}\n\nexport function buildAssetsParams(options?: AssetsQueryParams): Record<string, string> | undefined {\n  if (!options) return undefined\n  const params: Record<string, string> = {}\n  if (options.folder) params.folder = options.folder\n  if (options.limit !== undefined) params.limit = String(options.limit)\n  if (options.skip !== undefined) params.skip = String(options.skip)\n  return nonEmptyParams(params)\n}\n\n// ── Request builders (for mutations) ────────────────────────────────────────\n\nfunction appendQueryString(path: string, params: URLSearchParams): string {\n  const query = params.toString()\n  return query ? `${path}?${query}` : path\n}\n\nexport function buildCreateEntryRequest(vars: CreateEntryVariables): {\n  path: string\n  body: unknown\n} {\n  const params = new URLSearchParams()\n  if (vars.locale) params.set(\"locale\", vars.locale)\n  return {\n    path: appendQueryString(`/content_types/${vars.contentTypeUid}/entries`, params),\n    body: { entry: vars.entry },\n  }\n}\n\nexport function buildUpdateEntryRequest(vars: UpdateEntryVariables): {\n  path: string\n  body: unknown\n} {\n  const params = new URLSearchParams()\n  if (vars.locale) params.set(\"locale\", vars.locale)\n  return {\n    path: appendQueryString(\n      `/content_types/${vars.contentTypeUid}/entries/${vars.entryUid}`,\n      params,\n    ),\n    body: { entry: vars.entry },\n  }\n}\n\nexport function buildDeleteEntryRequest(vars: DeleteEntryVariables): { path: string } {\n  const params = new URLSearchParams()\n  if (vars.locale) params.set(\"locale\", vars.locale)\n  if (vars.deleteAllLocalized) params.set(\"delete_all_localized\", \"true\")\n  return {\n    path: appendQueryString(\n      `/content_types/${vars.contentTypeUid}/entries/${vars.entryUid}`,\n      params,\n    ),\n  }\n}\n\nexport function buildPublishEntryRequest(vars: PublishEntryVariables): {\n  path: string\n  body: unknown\n} {\n  return {\n    path: `/content_types/${vars.contentTypeUid}/entries/${vars.entryUid}/publish`,\n    body: {\n      entry: {\n        environments: vars.environments,\n        locales: vars.locales,\n        ...(vars.scheduledAt ? { scheduled_at: vars.scheduledAt } : {}),\n      },\n    },\n  }\n}\n"],"mappings":"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","names":[]}