@timbenniks/contentstack-platform-sdk 0.1.4 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +11 -11
  2. package/dist/auth/index.cjs +179 -0
  3. package/dist/auth/index.cjs.map +1 -1
  4. package/dist/auth/index.d.cts +2 -1
  5. package/dist/auth/index.d.ts +2 -1
  6. package/dist/auth/index.mjs +5 -1
  7. package/dist/{chunk-2BOUGPJ5.mjs → chunk-DTMY6LNR.mjs} +4 -4
  8. package/dist/{chunk-OGTRGKYK.mjs → chunk-G4JKXIL2.mjs} +4 -4
  9. package/dist/chunk-K3QIVKGD.mjs +430 -0
  10. package/dist/chunk-K3QIVKGD.mjs.map +1 -0
  11. package/dist/{chunk-NKLOZ5VI.mjs → chunk-V33LD4WS.mjs} +1 -1
  12. package/dist/chunk-V33LD4WS.mjs.map +1 -0
  13. package/dist/{chunk-SU5QEKYW.mjs → chunk-VLZEA5NW.mjs} +3 -3
  14. package/dist/chunk-VLZEA5NW.mjs.map +1 -0
  15. package/dist/{chunk-3C6J2BDB.mjs → chunk-WFPYU6CJ.mjs} +1 -1
  16. package/dist/chunk-WFPYU6CJ.mjs.map +1 -0
  17. package/dist/index.cjs +179 -0
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.mjs +8 -4
  22. package/dist/react/auth/index.cjs.map +1 -1
  23. package/dist/react/auth/index.d.cts +2 -2
  24. package/dist/react/auth/index.d.ts +2 -2
  25. package/dist/react/auth/index.mjs +1 -1
  26. package/dist/react/hooks/index.mjs +3 -3
  27. package/dist/react/index.cjs.map +1 -1
  28. package/dist/react/index.d.cts +1 -1
  29. package/dist/react/index.d.ts +1 -1
  30. package/dist/react/index.mjs +4 -4
  31. package/dist/server/index.cjs +1 -1
  32. package/dist/server/index.cjs.map +1 -1
  33. package/dist/server/index.d.cts +1 -1
  34. package/dist/server/index.d.ts +1 -1
  35. package/dist/server/index.mjs +3 -3
  36. package/dist/server/middleware/index.cjs +1 -1
  37. package/dist/server/middleware/index.cjs.map +1 -1
  38. package/dist/server/middleware/index.d.cts +3 -2
  39. package/dist/server/middleware/index.d.ts +3 -2
  40. package/dist/server/middleware/index.mjs +3 -3
  41. package/dist/server/proxy/index.mjs +2 -2
  42. package/dist/server/webhooks/index.mjs +2 -2
  43. package/dist/types-BPoq1WOf.d.cts +83 -0
  44. package/dist/types-CUCWv0Vp.d.ts +83 -0
  45. package/dist/vue/auth/index.cjs.map +1 -1
  46. package/dist/vue/auth/index.d.cts +4 -4
  47. package/dist/vue/auth/index.d.ts +4 -4
  48. package/dist/vue/auth/index.mjs +1 -1
  49. package/dist/vue/composables/index.mjs +3 -3
  50. package/dist/vue/index.cjs.map +1 -1
  51. package/dist/vue/index.d.cts +1 -1
  52. package/dist/vue/index.d.ts +1 -1
  53. package/dist/vue/index.mjs +7 -7
  54. package/package.json +10 -3
  55. package/dist/chunk-3C6J2BDB.mjs.map +0 -1
  56. package/dist/chunk-NKLOZ5VI.mjs.map +0 -1
  57. package/dist/chunk-SU5QEKYW.mjs.map +0 -1
  58. package/dist/chunk-VW7DD6HV.mjs +0 -253
  59. package/dist/chunk-VW7DD6HV.mjs.map +0 -1
  60. package/dist/types-6D9VR7pT.d.cts +0 -26
  61. package/dist/types-Bu5yCgmw.d.ts +0 -26
  62. /package/dist/{chunk-2BOUGPJ5.mjs.map → chunk-DTMY6LNR.mjs.map} +0 -0
  63. /package/dist/{chunk-OGTRGKYK.mjs.map → chunk-G4JKXIL2.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/vue/index.ts","../../src/vue/provider/ContentstackProvider.ts","../../src/vue/provider/context.ts","../../src/vue/auth/useContentstackUser.ts","../../src/vue/auth/ContentstackLoginButton.ts","../../src/vue/auth/ContentstackLogoutButton.ts","../../src/vue/auth/ContentstackAuthGuard.ts","../../src/vue/composables/useEntries.ts","../../src/http/errors.ts","../../src/regions/endpoints.ts","../../src/regions/resolver.ts","../../src/http/parse-error.ts","../../src/http/client.ts","../../src/cma/pagination.ts","../../src/cma/assets.ts","../../src/cma/base-client.ts","../../src/cma/audit-log.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","../../src/launch/response.ts","../../src/launch/deployments.ts","../../src/launch/environments.ts","../../src/launch/projects.ts","../../src/launch/client.ts","../../src/brandkit/brand-kits.ts","../../src/brandkit/voice-profiles.ts","../../src/brandkit/client.ts","../../src/knowledge-vault/items.ts","../../src/knowledge-vault/client.ts","../../src/generative-ai/client.ts","../../src/vue/composables/shared/useQuery.ts","../../src/vue/composables/useEntry.ts","../../src/vue/composables/useAssets.ts","../../src/vue/composables/useContentTypes.ts","../../src/vue/composables/useCMA.ts","../../src/vue/composables/useLaunch.ts","../../src/vue/composables/useBrandKit.ts","../../src/vue/composables/useKnowledgeVault.ts","../../src/vue/composables/useGenerativeAI.ts","../../src/vue/composables/shared/useMutation.ts","../../src/vue/composables/usePublishEntry.ts","../../src/vue/composables/useCreateEntry.ts","../../src/vue/composables/useUpdateEntry.ts","../../src/vue/composables/useDeleteEntry.ts","../../src/vue/content/ContentstackRichText.ts"],"sourcesContent":["export * from \"./provider\"\nexport * from \"./auth\"\nexport * from \"./composables\"\nexport * from \"./content\"\n","import { type PropType, defineComponent, h, provide } from \"vue\"\nimport type { ContentstackRegion } from \"../../index.js\"\nimport { CONTENTSTACK_KEY, type ContentstackContextValue } from \"./context\"\n\nexport const ContentstackProvider = defineComponent({\n name: \"ContentstackProvider\",\n props: {\n region: {\n type: String as PropType<ContentstackRegion>,\n required: true,\n },\n proxyBasePath: {\n type: String,\n default: \"/api/cma\",\n },\n apiKey: {\n type: String,\n default: undefined,\n },\n organizationUid: {\n type: String,\n default: undefined,\n },\n brandKitUid: {\n type: String,\n default: undefined,\n },\n launchProxyBasePath: {\n type: String,\n default: \"/api/launch\",\n },\n brandKitProxyBasePath: {\n type: String,\n default: \"/api/brandkit\",\n },\n },\n setup(props, { slots }) {\n provide<ContentstackContextValue>(CONTENTSTACK_KEY, {\n region: props.region,\n proxyBasePath: props.proxyBasePath,\n apiKey: props.apiKey,\n organizationUid: props.organizationUid,\n brandKitUid: props.brandKitUid,\n launchProxyBasePath: props.launchProxyBasePath,\n brandKitProxyBasePath: props.brandKitProxyBasePath,\n })\n\n return () => slots.default?.()\n },\n})\n","import type { InjectionKey } from \"vue\"\nimport { inject } from \"vue\"\nimport type { ContentstackRegion } from \"../../index.js\"\n\nexport interface ContentstackContextValue {\n region: ContentstackRegion\n proxyBasePath: string\n apiKey?: string\n organizationUid?: string\n brandKitUid?: string\n launchProxyBasePath?: string\n brandKitProxyBasePath?: string\n}\n\nexport const CONTENTSTACK_KEY: InjectionKey<ContentstackContextValue> = Symbol(\"contentstack\")\n\n/**\n * Composable to access the Contentstack context.\n * Throws a clear error if used outside of ContentstackProvider.\n */\nexport function useContentstackContext(): ContentstackContextValue {\n const ctx = inject(CONTENTSTACK_KEY)\n if (!ctx) {\n throw new Error(\n \"useContentstackContext must be used within a <ContentstackProvider>. \" +\n 'Wrap your app with <ContentstackProvider :region=\"...\" proxy-base-path=\"/api/cma\">.',\n )\n }\n return ctx\n}\n","import { type Ref, computed, onMounted, ref } from \"vue\"\nimport type { ContentstackUser } from \"../../index.js\"\n\nexport interface UseContentstackUserReturn {\n user: Ref<ContentstackUser | null>\n loading: Ref<boolean>\n isAuthenticated: Ref<boolean>\n}\n\nexport function useContentstackUser(): UseContentstackUserReturn {\n const user = ref<ContentstackUser | null>(null)\n const loading = ref(true)\n const isAuthenticated = computed(() => user.value !== null)\n\n async function fetchSession() {\n loading.value = true\n try {\n const res = await fetch(\"/api/auth/session\")\n if (!res.ok) {\n user.value = null\n return\n }\n const data = await res.json()\n if (data?.user) {\n user.value = {\n uid: data.user.uid ?? data.user.id ?? \"\",\n email: data.user.email ?? \"\",\n firstName: data.user.firstName ?? data.user.name?.split(\" \")[0],\n lastName: data.user.lastName ?? data.user.name?.split(\" \").slice(1).join(\" \"),\n username: data.user.username,\n profileImage: data.user.profileImage ?? data.user.image,\n }\n } else {\n user.value = null\n }\n } catch {\n user.value = null\n } finally {\n loading.value = false\n }\n }\n\n onMounted(() => {\n fetchSession()\n })\n\n return { user, loading, isAuthenticated }\n}\n","import { type PropType, defineComponent, h } from \"vue\"\n\nexport const ContentstackLoginButton = defineComponent({\n name: \"ContentstackLoginButton\",\n props: {\n scopes: {\n type: Array as PropType<string[]>,\n default: undefined,\n },\n redirectTo: {\n type: String,\n default: undefined,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n return () =>\n h(\"form\", { action: \"/api/auth/signin/contentstack\", method: \"POST\" }, [\n props.redirectTo\n ? h(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: props.redirectTo })\n : null,\n h(\n \"button\",\n { type: \"submit\", class: props.class },\n slots.default?.() ?? \"Sign in with Contentstack\",\n ),\n ])\n },\n})\n","import { defineComponent, h } from \"vue\"\n\nexport const ContentstackLogoutButton = defineComponent({\n name: \"ContentstackLogoutButton\",\n props: {\n redirectTo: {\n type: String,\n default: undefined,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n return () =>\n h(\"form\", { action: \"/api/auth/signout\", method: \"POST\" }, [\n props.redirectTo\n ? h(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: props.redirectTo })\n : null,\n h(\"button\", { type: \"submit\", class: props.class }, slots.default?.() ?? \"Sign out\"),\n ])\n },\n})\n","import { defineComponent, h } from \"vue\"\nimport { ContentstackLoginButton } from \"./ContentstackLoginButton\"\nimport { useContentstackUser } from \"./useContentstackUser\"\n\nexport const ContentstackAuthGuard = defineComponent({\n name: \"ContentstackAuthGuard\",\n setup(_props, { slots }) {\n const { isAuthenticated, loading } = useContentstackUser()\n\n return () => {\n if (loading.value) return slots.loading?.() ?? null\n if (isAuthenticated.value) return slots.default?.()\n return slots.fallback?.() ?? h(ContentstackLoginButton)\n }\n },\n})\n","import { type MaybeRef, type Ref, computed, toValue } from \"vue\"\nimport { type Entry, buildEntriesParams } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport interface UseEntriesOptions extends UseQueryOptions {\n locale?: string\n limit?: number\n skip?: number\n includePublishDetails?: boolean\n query?: Record<string, unknown>\n}\n\nexport interface UseEntriesResult extends Omit<UseQueryResult<Entry[]>, \"data\"> {\n data: Ref<Entry[] | undefined>\n count: Ref<number | undefined>\n}\n\nexport function useEntries(\n contentTypeUid: MaybeRef<string>,\n options?: UseEntriesOptions,\n): UseEntriesResult {\n const params = computed(() => buildEntriesParams(options))\n\n const path = computed(() => `/content_types/${toValue(contentTypeUid)}/entries`)\n\n const result = useQuery<{ entries: Entry[]; count?: number }>(path, params, options)\n\n const data = computed(() => result.data.value?.entries)\n const count = computed(() => result.data.value?.count)\n\n return {\n ...result,\n data,\n count,\n }\n}\n","/**\n * Base error class for all Contentstack SDK errors.\n * Every error includes an actionable message and relevant context.\n */\nexport class ContentstackError extends Error {\n override readonly name: string = \"ContentstackError\"\n readonly status?: number\n readonly errorCode?: number\n readonly errors?: Record<string, string[]>\n readonly requestPath?: string\n\n constructor(\n message: string,\n options?: {\n status?: number\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n },\n ) {\n super(message, options?.cause ? { cause: options.cause } : undefined)\n this.status = options?.status\n this.errorCode = options?.errorCode\n this.errors = options?.errors\n this.requestPath = options?.requestPath\n }\n}\n\nexport class ContentstackAuthError extends ContentstackError {\n override readonly name = \"ContentstackAuthError\"\n override readonly status = 401\n}\n\nexport class ContentstackForbiddenError extends ContentstackError {\n override readonly name = \"ContentstackForbiddenError\"\n override readonly status = 403\n}\n\nexport class ContentstackNotFoundError extends ContentstackError {\n override readonly name = \"ContentstackNotFoundError\"\n override readonly status = 404\n}\n\nexport class ContentstackValidationError extends ContentstackError {\n override readonly name = \"ContentstackValidationError\"\n override readonly status: number\n\n constructor(\n message: string,\n options?: {\n status?: number\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n },\n ) {\n super(message, options)\n this.status = options?.status ?? 400\n }\n}\n\nexport class ContentstackInvalidApiKeyError extends ContentstackError {\n override readonly name = \"ContentstackInvalidApiKeyError\"\n override readonly status = 412\n}\n\nexport class ContentstackRateLimitError extends ContentstackError {\n override readonly name = \"ContentstackRateLimitError\"\n override readonly status = 429\n readonly retryAfter?: number\n\n constructor(\n message: string,\n options?: {\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n retryAfter?: number\n },\n ) {\n super(message, { ...options, status: 429 })\n this.retryAfter = options?.retryAfter\n }\n}\n\nexport class ContentstackServerError extends ContentstackError {\n override readonly name = \"ContentstackServerError\"\n}\n\nexport class ContentstackConfigError extends ContentstackError {\n override readonly name = \"ContentstackConfigError\"\n}\n","import {\n type ContentstackEndpoints as UpstreamEndpoints,\n getContentstackEndpoints,\n getRegionForString,\n} from \"@timbenniks/contentstack-endpoints\"\nimport type { ContentstackEndpoints, ContentstackRegion } from \"./resolver.js\"\n\n/** Brand Kit endpoints not available in upstream package — maintained locally */\nconst BRAND_KIT_URLS: Record<ContentstackRegion, { brandKit: string; brandKitAI: string }> = {\n us: {\n brandKit: \"https://brand-kits-api.contentstack.com\",\n brandKitAI: \"https://ai.contentstack.com/brand-kits\",\n },\n eu: {\n brandKit: \"https://eu-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://eu-ai.contentstack.com/brand-kits\",\n },\n au: {\n brandKit: \"https://au-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://au-ai.contentstack.com/brand-kits\",\n },\n \"azure-na\": {\n brandKit: \"https://azure-na-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://azure-na-ai.contentstack.com/brand-kits\",\n },\n \"azure-eu\": {\n brandKit: \"https://azure-eu-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://azure-eu-ai.contentstack.com/brand-kits\",\n },\n \"gcp-na\": {\n brandKit: \"https://gcp-na-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://gcp-na-ai.contentstack.com/brand-kits\",\n },\n \"gcp-eu\": {\n brandKit: \"https://gcp-eu-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://gcp-eu-ai.contentstack.com/brand-kits\",\n },\n}\n\nfunction mapEndpoints(\n upstream: UpstreamEndpoints,\n region: ContentstackRegion,\n hostsOnly: boolean,\n): ContentstackEndpoints {\n const bk = BRAND_KIT_URLS[region]\n const stripProtocol = (url: string) => url.replace(/^https?:\\/\\//, \"\")\n\n return Object.freeze({\n cma: upstream.contentManagement ?? \"\",\n cda: upstream.contentDelivery ?? \"\",\n graphql: upstream.graphqlDelivery ?? \"\",\n images: upstream.images ?? \"\",\n app: upstream.application ?? \"\",\n preview: upstream.preview ?? \"\",\n graphqlPreview: upstream.graphqlPreview ?? \"\",\n launch: upstream.launch ?? \"\",\n personalizeEdge: upstream.personalizeEdge ?? \"\",\n brandKit: hostsOnly ? stripProtocol(bk.brandKit) : bk.brandKit,\n brandKitAI: hostsOnly ? stripProtocol(bk.brandKitAI) : bk.brandKitAI,\n })\n}\n\nconst ALL_REGIONS: ContentstackRegion[] = [\n \"us\",\n \"eu\",\n \"au\",\n \"azure-na\",\n \"azure-eu\",\n \"gcp-na\",\n \"gcp-eu\",\n]\n\nfunction buildEndpointMap(): Record<ContentstackRegion, ContentstackEndpoints> {\n const map = {} as Record<ContentstackRegion, ContentstackEndpoints>\n for (const region of ALL_REGIONS) {\n map[region] = mapEndpoints(getContentstackEndpoints(region), region, false)\n }\n return Object.freeze(map)\n}\n\nfunction buildHostMap(): Record<ContentstackRegion, ContentstackEndpoints> {\n const map = {} as Record<ContentstackRegion, ContentstackEndpoints>\n for (const region of ALL_REGIONS) {\n map[region] = mapEndpoints(getContentstackEndpoints(region, true), region, true)\n }\n return Object.freeze(map)\n}\n\nexport const ENDPOINT_MAP = buildEndpointMap()\nexport const HOST_MAP = buildHostMap()\n\n/** Check if a string is a valid region via the upstream package */\nexport function isValidRegion(input: string): boolean {\n return getRegionForString(input) !== undefined\n}\n\n/** Map of extra aliases our SDK supports beyond what the upstream package handles */\nexport const EXTRA_ALIASES: Record<string, ContentstackRegion> = {\n \"north-america\": \"us\",\n europe: \"eu\",\n australia: \"au\",\n}\n","import { ContentstackConfigError } from \"../http/errors.js\"\nimport { ENDPOINT_MAP, EXTRA_ALIASES, HOST_MAP, isValidRegion } from \"./endpoints.js\"\n\n/** All 7 Contentstack regions */\nexport type ContentstackRegion = \"us\" | \"eu\" | \"au\" | \"azure-na\" | \"azure-eu\" | \"gcp-na\" | \"gcp-eu\"\n\n/** Resolved endpoint URLs for a region */\nexport interface ContentstackEndpoints {\n /** CMA base URL, e.g. \"https://api.contentstack.io\" */\n cma: string\n /** CDA REST base URL, e.g. \"https://cdn.contentstack.io\" */\n cda: string\n /** GraphQL CDA endpoint */\n graphql: string\n /** Asset/image delivery base URL */\n images: string\n /** Application URL (for OAuth), e.g. \"https://app.contentstack.com\" */\n app: string\n /** Preview API base URL */\n preview: string\n /** GraphQL preview endpoint */\n graphqlPreview: string\n /** Launch API base URL */\n launch: string\n /** Personalize edge endpoint */\n personalizeEdge: string\n /** Brand Kit Management API base URL */\n brandKit: string\n /** Brand Kit GenAI and Knowledge Vault base URL */\n brandKitAI: string\n}\n\nconst VALID_REGIONS = new Set<string>(Object.keys(ENDPOINT_MAP))\n\n/**\n * Resolve all API endpoints for a Contentstack region.\n *\n * @example\n * ```ts\n * const endpoints = resolveEndpoints(\"eu\");\n * // endpoints.cma === \"https://eu-api.contentstack.com\"\n * // endpoints.app === \"https://eu-app.contentstack.com\"\n * ```\n */\nexport function resolveEndpoints(region: ContentstackRegion): ContentstackEndpoints {\n return ENDPOINT_MAP[region]\n}\n\n/**\n * Resolve endpoints with https:// stripped (for SDK host parameters).\n *\n * @example\n * ```ts\n * const hosts = resolveHosts(\"eu\");\n * // hosts.cda === \"eu-cdn.contentstack.com\"\n * ```\n */\nexport function resolveHosts(region: ContentstackRegion): ContentstackEndpoints {\n return HOST_MAP[region]\n}\n\n/**\n * Normalize region aliases: \"na\" → \"us\", \"NA\" → \"us\", etc.\n * Case-insensitive. Throws ContentstackConfigError for unknown regions.\n */\nexport function normalizeRegion(input: string): ContentstackRegion {\n const lower = input.toLowerCase().trim()\n\n if (VALID_REGIONS.has(lower)) {\n return lower as ContentstackRegion\n }\n\n // Check extra aliases our SDK supports (north-america, europe, australia)\n const extraAlias = EXTRA_ALIASES[lower]\n if (extraAlias) {\n return extraAlias\n }\n\n // Check aliases handled by the upstream package (na, us, aws-na, etc.)\n if (isValidRegion(lower)) {\n // The upstream package recognized it — map back to our canonical region\n // \"na\" and \"us\" both map to the NA region which we call \"us\"\n if (lower === \"na\" || lower === \"aws-na\" || lower === \"aws_na\") return \"us\"\n if (lower === \"aws-eu\" || lower === \"aws_eu\") return \"eu\"\n if (lower === \"aws-au\" || lower === \"aws_au\") return \"au\"\n if (lower === \"azure_na\") return \"azure-na\"\n if (lower === \"azure_eu\") return \"azure-eu\"\n if (lower === \"gcp_na\") return \"gcp-na\"\n if (lower === \"gcp_eu\") return \"gcp-eu\"\n }\n\n const validRegions = [...VALID_REGIONS].join(\", \")\n const validAliases = [...Object.keys(EXTRA_ALIASES), \"na\", \"aws-na\", \"aws-eu\", \"aws-au\"].join(\n \", \",\n )\n throw new ContentstackConfigError(\n `Unknown region \"${input}\". Valid regions: ${validRegions}. Aliases: ${validAliases}.`,\n )\n}\n\nexport { ContentstackConfigError }\n","import { ContentstackError } from \"./errors.js\"\n\n/**\n * Parse a non-ok fetch Response into a ContentstackError.\n *\n * Handles the Contentstack API error format (error_message, error_code, errors)\n * and falls back to the HTTP status text when the body is not parseable.\n *\n * This is a shared utility used by React hooks and Vue composables to avoid\n * duplicating error-parsing logic across frameworks.\n */\nexport async function parseErrorResponse(\n response: Response,\n path: string,\n): Promise<ContentstackError> {\n try {\n const body = await response.json()\n return new ContentstackError(body.error_message ?? body.message ?? response.statusText, {\n status: response.status,\n errorCode: body.error_code,\n errors: body.errors,\n requestPath: path,\n })\n } catch {\n return new ContentstackError(response.statusText, {\n status: response.status,\n requestPath: path,\n })\n }\n}\n","import {\n ContentstackAuthError,\n ContentstackError,\n ContentstackForbiddenError,\n ContentstackInvalidApiKeyError,\n ContentstackNotFoundError,\n ContentstackRateLimitError,\n ContentstackServerError,\n ContentstackValidationError,\n} from \"./errors.js\"\nimport type { HttpClientConfig, HttpResponse } from \"./types.js\"\n\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_RETRY_LIMIT = 5\nconst DEFAULT_RETRY_DELAY = 300\nconst MAX_JITTER = 100\n\nexport class ContentstackHttpClient {\n private readonly config: Required<\n Pick<HttpClientConfig, \"baseUrl\" | \"timeout\" | \"retryOnError\" | \"retryLimit\" | \"retryDelay\">\n > & {\n headers: Record<string, string>\n fetch: typeof globalThis.fetch\n }\n\n constructor(config: HttpClientConfig) {\n this.config = {\n baseUrl: config.baseUrl,\n headers: config.headers ?? {},\n timeout: config.timeout ?? DEFAULT_TIMEOUT,\n retryOnError: config.retryOnError ?? true,\n retryLimit: config.retryLimit ?? DEFAULT_RETRY_LIMIT,\n retryDelay: config.retryDelay ?? DEFAULT_RETRY_DELAY,\n fetch: config.fetch ?? globalThis.fetch.bind(globalThis),\n }\n }\n\n async get<T>(path: string, params?: Record<string, string>): Promise<HttpResponse<T>> {\n let url = `${this.config.baseUrl}${path}`\n if (params) {\n const searchParams = new URLSearchParams(params)\n url += `?${searchParams.toString()}`\n }\n return this.request<T>(url, { method: \"GET\" }, path)\n }\n\n async post<T>(path: string, body?: unknown): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n },\n path,\n )\n }\n\n async put<T>(path: string, body?: unknown): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n },\n path,\n )\n }\n\n async patch<T>(path: string, body?: unknown): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n },\n path,\n )\n }\n\n async delete<T>(path: string): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(url, { method: \"DELETE\" }, path)\n }\n\n async postForm<T>(path: string, params: URLSearchParams): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: params.toString(),\n },\n path,\n )\n }\n\n async upload<T>(path: string, form: FormData): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(url, { method: \"POST\", body: form }, path)\n }\n\n /** Return a new client with additional headers merged */\n withHeaders(headers: Record<string, string>): ContentstackHttpClient {\n return new ContentstackHttpClient({\n ...this.config,\n headers: { ...this.config.headers, ...headers },\n })\n }\n\n /** Return a new client with a different base URL */\n withBaseUrl(baseUrl: string): ContentstackHttpClient {\n return new ContentstackHttpClient({\n ...this.config,\n baseUrl,\n })\n }\n\n private async request<T>(url: string, init: RequestInit, path: string): Promise<HttpResponse<T>> {\n const headers = new Headers(this.config.headers)\n\n if (init.headers) {\n const initHeaders =\n init.headers instanceof Headers\n ? init.headers\n : new Headers(init.headers as Record<string, string>)\n initHeaders.forEach((value, key) => headers.set(key, value))\n }\n\n let lastError: Error | undefined\n const maxAttempts = this.config.retryOnError ? this.config.retryLimit + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout)\n\n try {\n const response = await this.config.fetch(url, {\n ...init,\n headers,\n signal: controller.signal,\n })\n\n if (response.ok) {\n const data = (await response.json().catch(() => ({}))) as T\n return { data, status: response.status, headers: response.headers }\n }\n\n // Check if retryable\n const isRetryable = response.status === 429 || response.status >= 500\n if (isRetryable && this.config.retryOnError && attempt < maxAttempts - 1) {\n const delay = this.calculateDelay(response, attempt)\n await sleep(delay)\n lastError = await this.createError(response, path)\n continue\n }\n\n throw await this.createError(response, path)\n } catch (error) {\n if (error instanceof ContentstackError) {\n throw error\n }\n\n if (error instanceof DOMException && error.name === \"AbortError\") {\n throw new ContentstackError(`Request timed out after ${this.config.timeout}ms`, {\n requestPath: path,\n cause: error,\n })\n }\n\n throw new ContentstackError(\"Network request failed\", {\n requestPath: path,\n cause: error instanceof Error ? error : new Error(String(error)),\n })\n } finally {\n clearTimeout(timeoutId)\n }\n }\n\n // Should not reach here, but just in case\n throw lastError ?? new ContentstackError(\"Request failed after retries\", { requestPath: path })\n }\n\n private calculateDelay(response: Response, attempt: number): number {\n const retryAfter = response.headers.get(\"Retry-After\")\n if (retryAfter) {\n const seconds = Number.parseFloat(retryAfter)\n if (!Number.isNaN(seconds)) {\n return seconds * 1000\n }\n }\n\n const jitter = Math.random() * MAX_JITTER\n return this.config.retryDelay * 2 ** attempt + jitter\n }\n\n private async createError(response: Response, path: string): Promise<ContentstackError> {\n let body: Record<string, unknown> = {}\n try {\n body = (await response.json()) as Record<string, unknown>\n } catch {\n // Response body may not be JSON\n }\n\n const message =\n (body.error_message as string | undefined) ??\n (body.error_description as string | undefined) ??\n (body.message as string | undefined) ??\n `HTTP ${response.status} error`\n const errorCode = body.error_code as number | undefined\n const errors = body.errors as Record<string, string[]> | undefined\n const retryAfter = response.headers.get(\"Retry-After\")\n\n const opts = { status: response.status, errorCode, errors, requestPath: path }\n\n switch (response.status) {\n case 400:\n return new ContentstackValidationError(message, { ...opts, status: 400 })\n case 401:\n return new ContentstackAuthError(message, opts)\n case 403:\n return new ContentstackForbiddenError(message, opts)\n case 404:\n return new ContentstackNotFoundError(message, opts)\n case 412:\n return new ContentstackInvalidApiKeyError(message, opts)\n case 422:\n return new ContentstackValidationError(message, { ...opts, status: 422 })\n case 429:\n return new ContentstackRateLimitError(message, {\n ...opts,\n retryAfter: retryAfter ? Number.parseFloat(retryAfter) : undefined,\n })\n default:\n if (response.status >= 500) {\n return new ContentstackServerError(message, opts)\n }\n return new ContentstackError(message, opts)\n }\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","// @timbenniks/contentstack-platform-sdk — CMA pagination helper\n\nconst DEFAULT_PAGE_SIZE = 25\n\n/**\n * Create an AsyncIterable that lazily paginates through CMA results.\n * Pages are fetched on demand — only when items are consumed.\n */\nexport function paginate<T>(\n fetchPage: (skip: number, limit: number) => Promise<{ items: T[]; count?: number }>,\n options?: { limit?: number },\n): AsyncIterable<T> {\n const pageSize = options?.limit ?? DEFAULT_PAGE_SIZE\n\n return {\n [Symbol.asyncIterator]() {\n let skip = 0\n let done = false\n let buffer: T[] = []\n let bufferIndex = 0\n let totalCount: number | undefined\n\n return {\n async next(): Promise<IteratorResult<T>> {\n if (bufferIndex < buffer.length) {\n return { value: buffer[bufferIndex++] as T, done: false }\n }\n\n if (done) {\n return { value: undefined as unknown as T, done: true }\n }\n\n const page = await fetchPage(skip, pageSize)\n buffer = page.items\n bufferIndex = 0\n skip += page.items.length\n\n if (typeof page.count === \"number\") {\n totalCount = page.count\n }\n\n if (page.items.length === 0) {\n done = true\n return { value: undefined as unknown as T, done: true }\n }\n\n if (typeof totalCount === \"number\" && skip >= totalCount) {\n done = true\n }\n\n return { value: buffer[bufferIndex++] as T, done: false }\n },\n }\n },\n }\n}\n\n/**\n * Collect all items from an AsyncIterable into an array.\n * Replaces the repeated listAll() pattern across sub-clients.\n */\nexport async function collectAll<T>(iterable: AsyncIterable<T>): Promise<T[]> {\n const items: T[] = []\n for await (const item of iterable) {\n items.push(item)\n }\n return items\n}\n","// @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","// @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 { 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:\n | { type: \"management-token\"; token: string }\n | { type: \"oauth\"; accessToken: string }\n | { type: \"authtoken\"; token: string }\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 switch (config.auth.type) {\n case \"management-token\":\n headers.authorization = config.auth.token\n break\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n if (config.branch) {\n headers.branch = config.branch\n }\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 })\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","/**\n * Launch API response helpers.\n *\n * The Launch API returns responses in the format:\n * { pagination: { count, limit, skip }, [key]: [...] }\n *\n * For example, listing projects returns:\n * { pagination: { count: 7, limit: 25, skip: null }, projects: [...] }\n *\n * These helpers normalise the response into the shape the paginator expects.\n */\n\n/**\n * Extract a list from a Launch API response.\n *\n * Handles:\n * - `{ pagination: { count }, [key]: [...] }` — real Launch API format\n * - `{ data: T[], count? }` — legacy / fallback\n * - Plain arrays `T[]`\n */\nexport function extractList<T>(body: unknown, key: string): { items: T[]; count?: number } {\n if (Array.isArray(body)) {\n return { items: body as T[] }\n }\n\n if (body && typeof body === \"object\") {\n const obj = body as Record<string, unknown>\n\n // Launch API format: { pagination: { count }, [key]: [...] }\n if (key in obj && Array.isArray(obj[key])) {\n const pagination = obj.pagination as { count?: number } | undefined\n return { items: obj[key] as T[], count: pagination?.count }\n }\n\n // Fallback: { data: [...], count? }\n if (\"data\" in obj && Array.isArray(obj.data)) {\n return { items: obj.data as T[], count: (obj as { count?: number }).count }\n }\n }\n\n return { items: [] }\n}\n\n/** Extract a single item from a response that may be a plain object or `{ data: T }`. */\nexport function extractItem<T>(body: unknown): T {\n if (body && typeof body === \"object\" && \"data\" in body) {\n return (body as { data: T }).data\n }\n\n return body as T\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n CreateDeploymentData,\n DeploymentLog,\n DeploymentLogOptions,\n LaunchDeployment,\n ListDeploymentsOptions,\n ServerLog,\n ServerLogOptions,\n SignedUploadUrl,\n} from \"./types.js\"\n\nexport class DeploymentsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n private basePath(projectUid: string, environmentUid: string): string {\n return `/projects/${projectUid}/environments/${environmentUid}/deployments`\n }\n\n list(\n projectUid: string,\n environmentUid: string,\n options?: ListDeploymentsOptions,\n ): AsyncIterable<LaunchDeployment> {\n return paginate<LaunchDeployment>(\n async (skip, limit) => {\n const params: Record<string, string> = {\n skip: String(skip),\n limit: String(limit),\n }\n const response = await this.http.get<unknown>(\n this.basePath(projectUid, environmentUid),\n params,\n )\n return extractList<LaunchDeployment>(response.data, \"deployments\")\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(\n projectUid: string,\n environmentUid: string,\n options?: ListDeploymentsOptions,\n ): Promise<LaunchDeployment[]> {\n return collectAll(this.list(projectUid, environmentUid, options))\n }\n\n async get(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n ): Promise<LaunchDeployment> {\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}`,\n )\n return extractItem<LaunchDeployment>(response.data)\n }\n\n async create(\n projectUid: string,\n environmentUid: string,\n data: CreateDeploymentData,\n ): Promise<LaunchDeployment> {\n const response = await this.http.post<unknown>(this.basePath(projectUid, environmentUid), data)\n return extractItem<LaunchDeployment>(response.data)\n }\n\n async getDeploymentLogs(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n options?: DeploymentLogOptions,\n ): Promise<DeploymentLog[]> {\n const params: Record<string, string> = {}\n if (options?.timestamp) params.timestamp = options.timestamp\n\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}/logs/deployment-logs`,\n Object.keys(params).length > 0 ? params : undefined,\n )\n return extractList<DeploymentLog>(response.data, \"logs\").items\n }\n\n async getServerLogs(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n options?: ServerLogOptions,\n ): Promise<ServerLog[]> {\n const params: Record<string, string> = {}\n if (options?.startTime !== undefined) params.startTime = String(options.startTime)\n if (options?.endTime !== undefined) params.endTime = String(options.endTime)\n\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}/logs/server-logs`,\n Object.keys(params).length > 0 ? params : undefined,\n )\n return extractList<ServerLog>(response.data, \"logs\").items\n }\n\n async getUploadUrl(projectUid: string, environmentUid: string): Promise<SignedUploadUrl> {\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/upload/signed_url`,\n )\n return extractItem<SignedUploadUrl>(response.data)\n }\n\n async getDownloadUrl(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n ): Promise<string> {\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}/download/signed_url`,\n )\n const item = extractItem<{ downloadUrl: string }>(response.data)\n return item.downloadUrl\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n CreateEnvironmentData,\n LaunchEnvironment,\n RevalidateCDNData,\n SignedUploadUrl,\n UpdateEnvironmentData,\n} from \"./types.js\"\n\nexport class EnvironmentsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(projectUid: string): AsyncIterable<LaunchEnvironment> {\n return paginate<LaunchEnvironment>(async (skip, limit) => {\n const response = await this.http.get<unknown>(`/projects/${projectUid}/environments`, {\n skip: String(skip),\n limit: String(limit),\n })\n return extractList<LaunchEnvironment>(response.data, \"environments\")\n })\n }\n\n async listAll(projectUid: string): Promise<LaunchEnvironment[]> {\n return collectAll(this.list(projectUid))\n }\n\n async get(projectUid: string, envUid: string): Promise<LaunchEnvironment> {\n const response = await this.http.get<unknown>(`/projects/${projectUid}/environments/${envUid}`)\n return extractItem<LaunchEnvironment>(response.data)\n }\n\n async create(projectUid: string, data: CreateEnvironmentData): Promise<LaunchEnvironment> {\n const response = await this.http.post<unknown>(`/projects/${projectUid}/environments`, data)\n return extractItem<LaunchEnvironment>(response.data)\n }\n\n async update(\n projectUid: string,\n envUid: string,\n data: UpdateEnvironmentData,\n ): Promise<LaunchEnvironment> {\n const response = await this.http.put<unknown>(\n `/projects/${projectUid}/environments/${envUid}`,\n data,\n )\n return extractItem<LaunchEnvironment>(response.data)\n }\n\n async delete(projectUid: string, envUid: string): Promise<void> {\n await this.http.delete(`/projects/${projectUid}/environments/${envUid}`)\n }\n\n async revalidateCDNCache(\n projectUid: string,\n envUid: string,\n data: RevalidateCDNData,\n ): Promise<void> {\n await this.http.post(\n `/projects/${projectUid}/environments/${envUid}/revalidate-cdn-cache`,\n data,\n )\n }\n\n async getUploadUrl(projectUid: string): Promise<SignedUploadUrl> {\n const response = await this.http.get<unknown>(\n `/projects/${projectUid}/environments/upload/signed_url`,\n )\n return extractItem<SignedUploadUrl>(response.data)\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n CreateProjectData,\n LaunchProject,\n ListProjectsOptions,\n SignedUploadUrl,\n TransferGitRepositoryData,\n UpdateProjectData,\n} from \"./types.js\"\n\nexport class ProjectsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(options?: ListProjectsOptions): AsyncIterable<LaunchProject> {\n return paginate<LaunchProject>(\n async (skip, limit) => {\n const response = await this.http.get<unknown>(\"/projects\", {\n skip: String(skip),\n limit: String(limit),\n })\n return extractList<LaunchProject>(response.data, \"projects\")\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(options?: ListProjectsOptions): Promise<LaunchProject[]> {\n return collectAll(this.list(options))\n }\n\n async get(projectUid: string): Promise<LaunchProject> {\n const response = await this.http.get<unknown>(`/projects/${projectUid}`)\n return extractItem<LaunchProject>(response.data)\n }\n\n async create(data: CreateProjectData): Promise<LaunchProject> {\n const response = await this.http.post<unknown>(\"/projects\", data)\n return extractItem<LaunchProject>(response.data)\n }\n\n async update(projectUid: string, data: UpdateProjectData): Promise<LaunchProject> {\n const response = await this.http.put<unknown>(`/projects/${projectUid}`, data)\n return extractItem<LaunchProject>(response.data)\n }\n\n async delete(projectUid: string): Promise<void> {\n await this.http.delete(`/projects/${projectUid}`)\n }\n\n async transferGitRepository(projectUid: string, data: TransferGitRepositoryData): Promise<void> {\n await this.http.patch(`/projects/${projectUid}/git-repository`, data)\n }\n\n async getUploadUrl(): Promise<SignedUploadUrl> {\n const response = await this.http.get<unknown>(\"/projects/upload/signed_url\")\n return extractItem<SignedUploadUrl>(response.data)\n }\n}\n","import { 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 { DeploymentsClient } from \"./deployments.js\"\nimport { EnvironmentsClient } from \"./environments.js\"\nimport { ProjectsClient } from \"./projects.js\"\n\nexport interface LaunchClientConfig {\n region: ContentstackRegion\n organizationUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface LaunchClient {\n projects: ProjectsClient\n environments: EnvironmentsClient\n deployments: DeploymentsClient\n}\n\nexport function createLaunchClient(config: LaunchClientConfig): LaunchClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.launch,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n projects: new ProjectsClient(http),\n environments: new EnvironmentsClient(http),\n deployments: new DeploymentsClient(http),\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type {\n BrandKit,\n CreateBrandKitData,\n ListBrandKitsOptions,\n UpdateBrandKitData,\n} from \"./types.js\"\n\nexport class BrandKitsSubClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(options?: ListBrandKitsOptions): AsyncIterable<BrandKit> {\n return paginate<BrandKit>(\n async (skip, limit) => {\n const response = await this.http.get<{ data: BrandKit[]; count?: number }>(\n \"/v1/brand-kits\",\n {\n skip: String(skip),\n limit: String(limit),\n },\n )\n return { items: response.data.data ?? [], count: response.data.count }\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(options?: ListBrandKitsOptions): Promise<BrandKit[]> {\n return collectAll(this.list(options))\n }\n\n async get(brandKitUid: string): Promise<BrandKit> {\n const response = await this.http.get<{ data: BrandKit }>(`/v1/brand-kits/${brandKitUid}`)\n return response.data.data\n }\n\n async create(data: CreateBrandKitData): Promise<BrandKit> {\n const response = await this.http.post<{ data: BrandKit }>(\"/v1/brand-kits\", data)\n return response.data.data\n }\n\n async update(brandKitUid: string, data: UpdateBrandKitData): Promise<BrandKit> {\n const response = await this.http.put<{ data: BrandKit }>(`/v1/brand-kits/${brandKitUid}`, data)\n return response.data.data\n }\n\n async delete(brandKitUid: string): Promise<void> {\n await this.http.delete(`/v1/brand-kits/${brandKitUid}`)\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type {\n CreateVoiceProfileData,\n ListVoiceProfilesOptions,\n UpdateVoiceProfileData,\n VoiceProfile,\n} from \"./types.js\"\n\nexport class VoiceProfilesSubClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(brandKitUid: string, options?: ListVoiceProfilesOptions): AsyncIterable<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n return paginate<VoiceProfile>(\n async (skip, limit) => {\n const response = await scoped.get<{ data: VoiceProfile[]; count?: number }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles`,\n { skip: String(skip), limit: String(limit) },\n )\n return { items: response.data.data ?? [], count: response.data.count }\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(brandKitUid: string, options?: ListVoiceProfilesOptions): Promise<VoiceProfile[]> {\n return collectAll(this.list(brandKitUid, options))\n }\n\n async get(brandKitUid: string, voiceProfileUid: string): Promise<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n const response = await scoped.get<{ data: VoiceProfile }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles/${voiceProfileUid}`,\n )\n return response.data.data\n }\n\n async create(brandKitUid: string, data: CreateVoiceProfileData): Promise<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n const response = await scoped.post<{ data: VoiceProfile }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles`,\n data,\n )\n return response.data.data\n }\n\n async update(\n brandKitUid: string,\n voiceProfileUid: string,\n data: UpdateVoiceProfileData,\n ): Promise<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n const response = await scoped.put<{ data: VoiceProfile }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles/${voiceProfileUid}`,\n data,\n )\n return response.data.data\n }\n\n async delete(brandKitUid: string, voiceProfileUid: string): Promise<void> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n await scoped.delete(`/v1/brand-kits/${brandKitUid}/voice-profiles/${voiceProfileUid}`)\n }\n}\n","import { 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 { BrandKitsSubClient } from \"./brand-kits.js\"\nimport { VoiceProfilesSubClient } from \"./voice-profiles.js\"\n\nexport interface BrandKitClientConfig {\n region: ContentstackRegion\n organizationUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface BrandKitClient {\n brandKits: BrandKitsSubClient\n voiceProfiles: VoiceProfilesSubClient\n}\n\nexport function createBrandKitClient(config: BrandKitClientConfig): BrandKitClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.brandKit,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n brandKits: new BrandKitsSubClient(http),\n voiceProfiles: new VoiceProfilesSubClient(http),\n }\n}\n","import type { ContentstackHttpClient } from \"../http/client.js\"\nimport type {\n IngestContentData,\n KnowledgeVaultItem,\n KnowledgeVaultUsage,\n UpdateContentData,\n} from \"./types.js\"\n\nexport class KnowledgeVaultItemsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n async ingest(data: IngestContentData): Promise<KnowledgeVaultItem> {\n const response = await this.http.post<{ data: KnowledgeVaultItem }>(\"/v1/knowledge-vault\", data)\n return response.data.data\n }\n\n async update(itemUid: string, data: UpdateContentData): Promise<KnowledgeVaultItem> {\n const response = await this.http.put<{ data: KnowledgeVaultItem }>(\n `/v1/knowledge-vault/${itemUid}`,\n data,\n )\n return response.data.data\n }\n\n async delete(itemUid: string): Promise<void> {\n await this.http.delete(`/v1/knowledge-vault/${itemUid}`)\n }\n\n async getUsage(): Promise<KnowledgeVaultUsage> {\n const response = await this.http.get<{ data: KnowledgeVaultUsage }>(\"/v1/knowledge-vault/usage\")\n return response.data.data\n }\n}\n","import { 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 { KnowledgeVaultItemsClient } from \"./items.js\"\n\nexport interface KnowledgeVaultClientConfig {\n region: ContentstackRegion\n organizationUid: string\n brandKitUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface KnowledgeVaultClient {\n items: KnowledgeVaultItemsClient\n}\n\nexport function createKnowledgeVaultClient(\n config: KnowledgeVaultClientConfig,\n): KnowledgeVaultClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n brand_kit_uid: config.brandKitUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.brandKitAI,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n items: new KnowledgeVaultItemsClient(http),\n }\n}\n","import { 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 type { GenerateContentData, GenerateContentResult } from \"./types.js\"\n\nexport interface GenerativeAIClientConfig {\n region: ContentstackRegion\n organizationUid: string\n brandKitUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface GenerativeAIClient {\n generate(data: GenerateContentData): Promise<GenerateContentResult>\n}\n\nexport function createGenerativeAIClient(config: GenerativeAIClientConfig): GenerativeAIClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n brand_kit_uid: config.brandKitUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.brandKitAI,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n async generate(data: GenerateContentData): Promise<GenerateContentResult> {\n const body: Record<string, unknown> = { prompt: data.prompt }\n if (data.voiceProfileUid) {\n body.voice_profile_uid = data.voiceProfileUid\n }\n if (data.useKnowledgeVault !== undefined) {\n body.knowledge_vault = data.useKnowledgeVault\n }\n const response = await http.post<{ data: GenerateContentResult }>(\n \"/v1/generative-ai/generate\",\n body,\n )\n return response.data.data\n },\n }\n}\n","import { type MaybeRef, type Ref, onUnmounted, ref, toValue, watch } from \"vue\"\nimport { ContentstackError, parseErrorResponse } from \"../../../index.js\"\nimport { useContentstackContext } from \"../../provider/context\"\n\nexport interface UseQueryOptions {\n enabled?: MaybeRef<boolean>\n refetchInterval?: number\n}\n\nexport interface UseQueryResult<T> {\n data: Ref<T | undefined>\n loading: Ref<boolean>\n error: Ref<ContentstackError | null>\n refetch: () => Promise<void>\n}\n\nexport function useQuery<T>(\n path: MaybeRef<string>,\n params?: MaybeRef<Record<string, string> | undefined>,\n options?: UseQueryOptions,\n): UseQueryResult<T> {\n const { proxyBasePath } = useContentstackContext()\n const data = ref<T | undefined>(undefined) as Ref<T | undefined>\n const loading = ref(false)\n const error = ref<ContentstackError | null>(null)\n let abortController: AbortController | null = null\n let intervalId: ReturnType<typeof setInterval> | null = null\n\n const isClient = typeof window !== \"undefined\"\n const enabled = options?.enabled ?? true\n const refetchInterval = options?.refetchInterval ?? 0\n\n async function fetchData(signal?: AbortSignal) {\n loading.value = true\n error.value = null\n\n const currentPath = toValue(path)\n const currentParams = toValue(params)\n const search = currentParams ? `?${new URLSearchParams(currentParams).toString()}` : \"\"\n const url = `${proxyBasePath}${currentPath}${search}`\n\n try {\n const response = await fetch(url, { signal })\n\n if (signal?.aborted) return\n\n if (!response.ok) {\n const err = await parseErrorResponse(response, currentPath)\n error.value = err\n data.value = undefined\n return\n }\n\n const json = await response.json()\n data.value = json as T\n } catch (err) {\n if (err instanceof DOMException && err.name === \"AbortError\") return\n error.value = new ContentstackError(err instanceof Error ? err.message : \"Network error\", {\n requestPath: currentPath,\n cause: err instanceof Error ? err : undefined,\n })\n data.value = undefined\n } finally {\n if (!signal?.aborted) {\n loading.value = false\n }\n }\n }\n\n function doFetch() {\n abortController?.abort()\n const controller = new AbortController()\n abortController = controller\n fetchData(controller.signal)\n }\n\n async function refetch(): Promise<void> {\n abortController?.abort()\n const controller = new AbortController()\n abortController = controller\n await fetchData(controller.signal)\n }\n\n // Watch reactive inputs and refetch when they change\n watch(\n () => ({ path: toValue(path), params: toValue(params), enabled: toValue(enabled) }),\n (newVal) => {\n if (!newVal.enabled || !isClient) return\n doFetch()\n },\n { immediate: true, deep: true },\n )\n\n // Handle refetch interval\n watch(\n () => ({ enabled: toValue(enabled), refetchInterval }),\n (newVal) => {\n if (intervalId) {\n clearInterval(intervalId)\n intervalId = null\n }\n if (isClient && newVal.enabled && newVal.refetchInterval > 0) {\n intervalId = setInterval(() => {\n doFetch()\n }, newVal.refetchInterval)\n }\n },\n { immediate: true },\n )\n\n onUnmounted(() => {\n abortController?.abort()\n if (intervalId) {\n clearInterval(intervalId)\n }\n })\n\n return { data, loading, error, refetch }\n}\n","import { type MaybeRef, type Ref, computed, toValue } from \"vue\"\nimport { type Entry, buildEntryParams } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport interface UseEntryOptions extends UseQueryOptions {\n locale?: string\n version?: number\n includePublishDetails?: boolean\n}\n\nexport function useEntry(\n contentTypeUid: MaybeRef<string>,\n entryUid: MaybeRef<string>,\n options?: UseEntryOptions,\n): UseQueryResult<Entry> {\n const params = computed(() => buildEntryParams(options))\n\n const path = computed(\n () => `/content_types/${toValue(contentTypeUid)}/entries/${toValue(entryUid)}`,\n )\n\n const result = useQuery<{ entry: Entry }>(path, params, options)\n\n const data = computed(() => result.data.value?.entry) as Ref<Entry | undefined>\n\n return {\n ...result,\n data,\n }\n}\n","import { type Ref, computed } from \"vue\"\nimport { type Asset, buildAssetsParams } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport interface UseAssetsOptions extends UseQueryOptions {\n folder?: string\n limit?: number\n skip?: number\n}\n\nexport function useAssets(options?: UseAssetsOptions): UseQueryResult<Asset[]> {\n const params = computed(() => buildAssetsParams(options))\n\n const result = useQuery<{ assets: Asset[] }>(\"/assets\", params, options)\n\n const data = computed(() => result.data.value?.assets) as Ref<Asset[] | undefined>\n\n return {\n ...result,\n data,\n }\n}\n","import { type Ref, computed } from \"vue\"\nimport type { ContentType } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport function useContentTypes(options?: UseQueryOptions): UseQueryResult<ContentType[]> {\n const result = useQuery<{ content_types: ContentType[] }>(\"/content_types\", undefined, options)\n\n const data = computed(() => result.data.value?.content_types) as Ref<ContentType[] | undefined>\n\n return {\n ...result,\n data,\n }\n}\n","import { computed } from \"vue\"\nimport { type CMAClient, createCMAClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useCMA(): CMAClient {\n const { proxyBasePath, region, apiKey } = useContentstackContext()\n\n const client = computed(() =>\n createCMAClient({\n region,\n apiKey: apiKey ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: proxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type LaunchClient, createLaunchClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useLaunch(): LaunchClient {\n const { launchProxyBasePath = \"/api/launch\", region, organizationUid } = useContentstackContext()\n\n const client = computed(() =>\n createLaunchClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: launchProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type BrandKitClient, createBrandKitClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useBrandKit(): BrandKitClient {\n const {\n brandKitProxyBasePath = \"/api/brandkit\",\n region,\n organizationUid,\n } = useContentstackContext()\n\n const client = computed(() =>\n createBrandKitClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: brandKitProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type KnowledgeVaultClient, createKnowledgeVaultClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useKnowledgeVault(): KnowledgeVaultClient {\n const {\n brandKitProxyBasePath = \"/api/brandkit\",\n region,\n organizationUid,\n brandKitUid,\n } = useContentstackContext()\n\n const client = computed(() =>\n createKnowledgeVaultClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n brandKitUid: brandKitUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: brandKitProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type GenerativeAIClient, createGenerativeAIClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useGenerativeAI(): GenerativeAIClient {\n const {\n brandKitProxyBasePath = \"/api/brandkit\",\n region,\n organizationUid,\n brandKitUid,\n } = useContentstackContext()\n\n const client = computed(() =>\n createGenerativeAIClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n brandKitUid: brandKitUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: brandKitProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { type Ref, ref } from \"vue\"\nimport { ContentstackError, parseErrorResponse } from \"../../../index.js\"\nimport { useContentstackContext } from \"../../provider/context\"\n\nexport interface UseMutationResult<TData, TVariables> {\n mutate: (variables: TVariables) => Promise<TData>\n loading: Ref<boolean>\n error: Ref<ContentstackError | null>\n data: Ref<TData | undefined>\n reset: () => void\n}\n\nexport function useMutation<TData, TVariables>(\n method: \"POST\" | \"PUT\" | \"DELETE\",\n buildRequest: (variables: TVariables) => { path: string; body?: unknown },\n): UseMutationResult<TData, TVariables> {\n const { proxyBasePath } = useContentstackContext()\n const data = ref<TData | undefined>(undefined) as Ref<TData | undefined>\n const loading = ref(false)\n const error = ref<ContentstackError | null>(null)\n\n const currentBuildRequest = buildRequest\n\n async function mutate(variables: TVariables): Promise<TData> {\n const { path, body } = currentBuildRequest(variables)\n const url = `${proxyBasePath}${path}`\n\n loading.value = true\n error.value = null\n\n try {\n const response = await fetch(url, {\n method,\n headers: body !== undefined ? { \"Content-Type\": \"application/json\" } : undefined,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n })\n\n if (!response.ok) {\n const err = await parseErrorResponse(response, path)\n error.value = err\n data.value = undefined\n throw err\n }\n\n let json: TData | undefined\n try {\n json = (await response.json()) as TData\n } catch {\n // Support successful 204/empty-body mutation responses.\n json = undefined\n }\n data.value = json\n return json as TData\n } catch (err) {\n if (err instanceof ContentstackError) throw err\n const csError = new ContentstackError(err instanceof Error ? err.message : \"Network error\", {\n requestPath: path,\n cause: err instanceof Error ? err : undefined,\n })\n error.value = csError\n data.value = undefined\n throw csError\n } finally {\n loading.value = false\n }\n }\n\n function reset() {\n data.value = undefined\n error.value = null\n }\n\n return { mutate, loading, error, data, reset }\n}\n","import { type PublishEntryVariables, buildPublishEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function usePublishEntry(): UseMutationResult<void, PublishEntryVariables> {\n return useMutation<void, PublishEntryVariables>(\"POST\", buildPublishEntryRequest)\n}\n","import { type Ref, computed } from \"vue\"\nimport { type CreateEntryVariables, type Entry, buildCreateEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function useCreateEntry(): UseMutationResult<Entry, CreateEntryVariables> {\n const result = useMutation<{ entry: Entry }, CreateEntryVariables>(\n \"POST\",\n buildCreateEntryRequest,\n )\n\n const data = computed(() => result.data.value?.entry) as Ref<Entry | undefined>\n\n async function mutate(variables: CreateEntryVariables): Promise<Entry> {\n const raw = await result.mutate(variables)\n return raw.entry\n }\n\n return {\n ...result,\n data,\n mutate,\n }\n}\n","import { type Ref, computed } from \"vue\"\nimport { type Entry, type UpdateEntryVariables, buildUpdateEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function useUpdateEntry(): UseMutationResult<Entry, UpdateEntryVariables> {\n const result = useMutation<{ entry: Entry }, UpdateEntryVariables>(\"PUT\", buildUpdateEntryRequest)\n\n const data = computed(() => result.data.value?.entry) as Ref<Entry | undefined>\n\n async function mutate(variables: UpdateEntryVariables): Promise<Entry> {\n const raw = await result.mutate(variables)\n return raw.entry\n }\n\n return {\n ...result,\n data,\n mutate,\n }\n}\n","import { type DeleteEntryVariables, buildDeleteEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function useDeleteEntry(): UseMutationResult<void, DeleteEntryVariables> {\n return useMutation<void, DeleteEntryVariables>(\"DELETE\", buildDeleteEntryRequest)\n}\n","import { type PropType, type VNode, defineComponent, h } from \"vue\"\nimport type { RTEDocNode, RTENode, RTETextNode } from \"../../index.js\"\n\nexport type RichTextNodeRenderer = (node: RTENode, children: VNode[]) => VNode | null\n\nexport interface RichTextRenderers {\n nodes?: Partial<Record<string, RichTextNodeRenderer>>\n renderEntry?: (attrs: Record<string, unknown>, node: RTENode) => VNode | null\n renderAsset?: (attrs: Record<string, unknown>, node: RTENode) => VNode | null\n}\n\nconst EMPTY_RENDERERS: RichTextRenderers = {}\n\nfunction isTextNode(node: RTENode | RTETextNode): node is RTETextNode {\n return \"text\" in node\n}\n\nfunction renderTextNode(node: RTETextNode, index: number): VNode | string | null {\n if (!node.text) return null\n let content: VNode | string = node.text\n\n if (node.bold) content = h(\"strong\", { key: `mark-b-${index}` }, content)\n if (node.italic) content = h(\"em\", { key: `mark-i-${index}` }, content)\n if (node.underline) content = h(\"u\", { key: `mark-u-${index}` }, content)\n if (node.strikethrough) content = h(\"s\", { key: `mark-s-${index}` }, content)\n if (node.code) content = h(\"code\", { key: `mark-c-${index}` }, content)\n if (node.superscript) content = h(\"sup\", { key: `mark-sup-${index}` }, content)\n if (node.subscript) content = h(\"sub\", { key: `mark-sub-${index}` }, content)\n\n return content\n}\n\nconst DEFAULT_RENDERERS: Record<string, (node: RTENode, children: VNode[]) => VNode> = {\n doc: (_node, children) => h(\"div\", { style: \"display:contents\" }, children),\n p: (node, children) => h(\"p\", { key: node.uid }, children),\n h1: (node, children) => h(\"h1\", { key: node.uid }, children),\n h2: (node, children) => h(\"h2\", { key: node.uid }, children),\n h3: (node, children) => h(\"h3\", { key: node.uid }, children),\n h4: (node, children) => h(\"h4\", { key: node.uid }, children),\n h5: (node, children) => h(\"h5\", { key: node.uid }, children),\n h6: (node, children) => h(\"h6\", { key: node.uid }, children),\n blockquote: (node, children) => h(\"blockquote\", { key: node.uid }, children),\n ol: (node, children) => h(\"ol\", { key: node.uid }, children),\n ul: (node, children) => h(\"ul\", { key: node.uid }, children),\n li: (node, children) => h(\"li\", { key: node.uid }, children),\n hr: (node) => h(\"hr\", { key: node.uid }),\n img: (node) =>\n h(\"img\", {\n key: node.uid,\n src: node.attrs?.src as string,\n alt: (node.attrs?.alt as string) ?? \"\",\n }),\n a: (node, children) =>\n h(\n \"a\",\n {\n key: node.uid,\n href: node.attrs?.href as string,\n target: node.attrs?.target as string,\n },\n children,\n ),\n code: (node, children) => h(\"pre\", { key: node.uid }, [h(\"code\", null, children)]),\n table: (node, children) => h(\"table\", { key: node.uid }, children),\n thead: (node, children) => h(\"thead\", { key: node.uid }, children),\n tbody: (node, children) => h(\"tbody\", { key: node.uid }, children),\n tr: (node, children) => h(\"tr\", { key: node.uid }, children),\n th: (node, children) => h(\"th\", { key: node.uid }, children),\n td: (node, children) => h(\"td\", { key: node.uid }, children),\n}\n\nfunction renderNode(\n node: RTENode | RTETextNode,\n renderers: RichTextRenderers,\n index: number,\n): VNode | string | null {\n if (isTextNode(node)) {\n return renderTextNode(node, index)\n }\n\n if (node.type === \"reference\" && node.attrs) {\n if (node.attrs.type === \"entry\" && renderers.renderEntry) {\n return renderers.renderEntry(node.attrs, node)\n }\n if (node.attrs.type === \"asset\" && renderers.renderAsset) {\n return renderers.renderAsset(node.attrs, node)\n }\n return null\n }\n\n const childElements = node.children?.map((child, i) => renderNode(child, renderers, i)) ?? []\n const children = childElements.filter((c): c is VNode | string => c !== null)\n\n const customRenderer = renderers.nodes?.[node.type]\n if (customRenderer) {\n return customRenderer(node, children as VNode[])\n }\n\n const defaultRenderer = DEFAULT_RENDERERS[node.type]\n if (defaultRenderer) {\n return defaultRenderer(node, children as VNode[])\n }\n\n return children.length > 0 ? h(\"span\", null, children) : null\n}\n\nexport const ContentstackRichText = defineComponent({\n name: \"ContentstackRichText\",\n props: {\n document: {\n type: Object as PropType<RTEDocNode | null | undefined>,\n default: undefined,\n },\n renderers: {\n type: Object as PropType<RichTextRenderers>,\n default: () => EMPTY_RENDERERS,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n return () => {\n if (!props.document) {\n return slots.fallback?.() ?? null\n }\n\n const children =\n props.document.children?.map((child, i) =>\n renderNode(child, props.renderers ?? EMPTY_RENDERERS, i),\n ) ?? []\n const filtered = children.filter((c): c is VNode | string => c !== null)\n\n if (props.class) {\n return h(\"div\", { class: props.class }, filtered)\n }\n\n return filtered.length > 0 ? h(\"div\", { style: \"display:contents\" }, filtered) : null\n }\n },\n})\n"],"mappings":"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","names":["import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","EnvironmentsClient","EnvironmentsClient","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue"]}
1
+ {"version":3,"sources":["../../src/vue/index.ts","../../src/vue/provider/ContentstackProvider.ts","../../src/vue/provider/context.ts","../../src/vue/auth/useContentstackUser.ts","../../src/vue/auth/ContentstackLoginButton.ts","../../src/vue/auth/ContentstackLogoutButton.ts","../../src/vue/auth/ContentstackAuthGuard.ts","../../src/vue/composables/useEntries.ts","../../src/http/errors.ts","../../src/regions/endpoints.ts","../../src/regions/resolver.ts","../../src/http/parse-error.ts","../../src/http/client.ts","../../src/cma/pagination.ts","../../src/cma/assets.ts","../../src/cma/base-client.ts","../../src/cma/audit-log.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","../../src/launch/response.ts","../../src/launch/deployments.ts","../../src/launch/environments.ts","../../src/launch/projects.ts","../../src/launch/client.ts","../../src/brandkit/brand-kits.ts","../../src/brandkit/voice-profiles.ts","../../src/brandkit/client.ts","../../src/knowledge-vault/items.ts","../../src/knowledge-vault/client.ts","../../src/generative-ai/client.ts","../../src/vue/composables/shared/useQuery.ts","../../src/vue/composables/useEntry.ts","../../src/vue/composables/useAssets.ts","../../src/vue/composables/useContentTypes.ts","../../src/vue/composables/useCMA.ts","../../src/vue/composables/useLaunch.ts","../../src/vue/composables/useBrandKit.ts","../../src/vue/composables/useKnowledgeVault.ts","../../src/vue/composables/useGenerativeAI.ts","../../src/vue/composables/shared/useMutation.ts","../../src/vue/composables/usePublishEntry.ts","../../src/vue/composables/useCreateEntry.ts","../../src/vue/composables/useUpdateEntry.ts","../../src/vue/composables/useDeleteEntry.ts","../../src/vue/content/ContentstackRichText.ts"],"sourcesContent":["export * from \"./provider\"\nexport * from \"./auth\"\nexport * from \"./composables\"\nexport * from \"./content\"\n","import { type PropType, defineComponent, h, provide } from \"vue\"\nimport type { ContentstackRegion } from \"../../index.js\"\nimport { CONTENTSTACK_KEY, type ContentstackContextValue } from \"./context\"\n\nexport const ContentstackProvider = defineComponent({\n name: \"ContentstackProvider\",\n props: {\n region: {\n type: String as PropType<ContentstackRegion>,\n required: true,\n },\n proxyBasePath: {\n type: String,\n default: \"/api/cma\",\n },\n apiKey: {\n type: String,\n default: undefined,\n },\n organizationUid: {\n type: String,\n default: undefined,\n },\n brandKitUid: {\n type: String,\n default: undefined,\n },\n launchProxyBasePath: {\n type: String,\n default: \"/api/launch\",\n },\n brandKitProxyBasePath: {\n type: String,\n default: \"/api/brandkit\",\n },\n },\n setup(props, { slots }) {\n provide<ContentstackContextValue>(CONTENTSTACK_KEY, {\n region: props.region,\n proxyBasePath: props.proxyBasePath,\n apiKey: props.apiKey,\n organizationUid: props.organizationUid,\n brandKitUid: props.brandKitUid,\n launchProxyBasePath: props.launchProxyBasePath,\n brandKitProxyBasePath: props.brandKitProxyBasePath,\n })\n\n return () => slots.default?.()\n },\n})\n","import type { InjectionKey } from \"vue\"\nimport { inject } from \"vue\"\nimport type { ContentstackRegion } from \"../../index.js\"\n\nexport interface ContentstackContextValue {\n region: ContentstackRegion\n proxyBasePath: string\n apiKey?: string\n organizationUid?: string\n brandKitUid?: string\n launchProxyBasePath?: string\n brandKitProxyBasePath?: string\n}\n\nexport const CONTENTSTACK_KEY: InjectionKey<ContentstackContextValue> = Symbol(\"contentstack\")\n\n/**\n * Composable to access the Contentstack context.\n * Throws a clear error if used outside of ContentstackProvider.\n */\nexport function useContentstackContext(): ContentstackContextValue {\n const ctx = inject(CONTENTSTACK_KEY)\n if (!ctx) {\n throw new Error(\n \"useContentstackContext must be used within a <ContentstackProvider>. \" +\n 'Wrap your app with <ContentstackProvider :region=\"...\" proxy-base-path=\"/api/cma\">.',\n )\n }\n return ctx\n}\n","import { type Ref, computed, onMounted, ref } from \"vue\"\nimport type { ContentstackUser } from \"../../index.js\"\n\nexport interface UseContentstackUserReturn {\n user: Ref<ContentstackUser | null>\n loading: Ref<boolean>\n isAuthenticated: Ref<boolean>\n}\n\nexport function useContentstackUser(): UseContentstackUserReturn {\n const user = ref<ContentstackUser | null>(null)\n const loading = ref(true)\n const isAuthenticated = computed(() => user.value !== null)\n\n async function fetchSession() {\n loading.value = true\n try {\n const res = await fetch(\"/api/auth/session\")\n if (!res.ok) {\n user.value = null\n return\n }\n const data = await res.json()\n if (data?.user) {\n user.value = {\n uid: data.user.uid ?? data.user.id ?? \"\",\n email: data.user.email ?? \"\",\n firstName: data.user.firstName ?? data.user.name?.split(\" \")[0],\n lastName: data.user.lastName ?? data.user.name?.split(\" \").slice(1).join(\" \"),\n username: data.user.username,\n profileImage: data.user.profileImage ?? data.user.image,\n }\n } else {\n user.value = null\n }\n } catch {\n user.value = null\n } finally {\n loading.value = false\n }\n }\n\n onMounted(() => {\n fetchSession()\n })\n\n return { user, loading, isAuthenticated }\n}\n","import { type PropType, defineComponent, h } from \"vue\"\nimport type { ContentstackOAuthScope } from \"../../auth/scopes.js\"\n\nexport const ContentstackLoginButton = defineComponent({\n name: \"ContentstackLoginButton\",\n props: {\n scopes: {\n type: Array as PropType<ContentstackOAuthScope[]>,\n default: undefined,\n },\n redirectTo: {\n type: String,\n default: undefined,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n return () =>\n h(\"form\", { action: \"/api/auth/signin/contentstack\", method: \"POST\" }, [\n props.redirectTo\n ? h(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: props.redirectTo })\n : null,\n h(\n \"button\",\n { type: \"submit\", class: props.class },\n slots.default?.() ?? \"Sign in with Contentstack\",\n ),\n ])\n },\n})\n","import { defineComponent, h } from \"vue\"\n\nexport const ContentstackLogoutButton = defineComponent({\n name: \"ContentstackLogoutButton\",\n props: {\n redirectTo: {\n type: String,\n default: undefined,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n return () =>\n h(\"form\", { action: \"/api/auth/signout\", method: \"POST\" }, [\n props.redirectTo\n ? h(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: props.redirectTo })\n : null,\n h(\"button\", { type: \"submit\", class: props.class }, slots.default?.() ?? \"Sign out\"),\n ])\n },\n})\n","import { defineComponent, h } from \"vue\"\nimport { ContentstackLoginButton } from \"./ContentstackLoginButton\"\nimport { useContentstackUser } from \"./useContentstackUser\"\n\nexport const ContentstackAuthGuard = defineComponent({\n name: \"ContentstackAuthGuard\",\n setup(_props, { slots }) {\n const { isAuthenticated, loading } = useContentstackUser()\n\n return () => {\n if (loading.value) return slots.loading?.() ?? null\n if (isAuthenticated.value) return slots.default?.()\n return slots.fallback?.() ?? h(ContentstackLoginButton)\n }\n },\n})\n","import { type MaybeRef, type Ref, computed, toValue } from \"vue\"\nimport { type Entry, buildEntriesParams } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport interface UseEntriesOptions extends UseQueryOptions {\n locale?: string\n limit?: number\n skip?: number\n includePublishDetails?: boolean\n query?: Record<string, unknown>\n}\n\nexport interface UseEntriesResult extends Omit<UseQueryResult<Entry[]>, \"data\"> {\n data: Ref<Entry[] | undefined>\n count: Ref<number | undefined>\n}\n\nexport function useEntries(\n contentTypeUid: MaybeRef<string>,\n options?: UseEntriesOptions,\n): UseEntriesResult {\n const params = computed(() => buildEntriesParams(options))\n\n const path = computed(() => `/content_types/${toValue(contentTypeUid)}/entries`)\n\n const result = useQuery<{ entries: Entry[]; count?: number }>(path, params, options)\n\n const data = computed(() => result.data.value?.entries)\n const count = computed(() => result.data.value?.count)\n\n return {\n ...result,\n data,\n count,\n }\n}\n","/**\n * Base error class for all Contentstack SDK errors.\n * Every error includes an actionable message and relevant context.\n */\nexport class ContentstackError extends Error {\n override readonly name: string = \"ContentstackError\"\n readonly status?: number\n readonly errorCode?: number\n readonly errors?: Record<string, string[]>\n readonly requestPath?: string\n\n constructor(\n message: string,\n options?: {\n status?: number\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n },\n ) {\n super(message, options?.cause ? { cause: options.cause } : undefined)\n this.status = options?.status\n this.errorCode = options?.errorCode\n this.errors = options?.errors\n this.requestPath = options?.requestPath\n }\n}\n\nexport class ContentstackAuthError extends ContentstackError {\n override readonly name = \"ContentstackAuthError\"\n override readonly status = 401\n}\n\nexport class ContentstackForbiddenError extends ContentstackError {\n override readonly name = \"ContentstackForbiddenError\"\n override readonly status = 403\n}\n\nexport class ContentstackNotFoundError extends ContentstackError {\n override readonly name = \"ContentstackNotFoundError\"\n override readonly status = 404\n}\n\nexport class ContentstackValidationError extends ContentstackError {\n override readonly name = \"ContentstackValidationError\"\n override readonly status: number\n\n constructor(\n message: string,\n options?: {\n status?: number\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n },\n ) {\n super(message, options)\n this.status = options?.status ?? 400\n }\n}\n\nexport class ContentstackInvalidApiKeyError extends ContentstackError {\n override readonly name = \"ContentstackInvalidApiKeyError\"\n override readonly status = 412\n}\n\nexport class ContentstackRateLimitError extends ContentstackError {\n override readonly name = \"ContentstackRateLimitError\"\n override readonly status = 429\n readonly retryAfter?: number\n\n constructor(\n message: string,\n options?: {\n errorCode?: number\n errors?: Record<string, string[]>\n requestPath?: string\n cause?: Error\n retryAfter?: number\n },\n ) {\n super(message, { ...options, status: 429 })\n this.retryAfter = options?.retryAfter\n }\n}\n\nexport class ContentstackServerError extends ContentstackError {\n override readonly name = \"ContentstackServerError\"\n}\n\nexport class ContentstackConfigError extends ContentstackError {\n override readonly name = \"ContentstackConfigError\"\n}\n","import {\n type ContentstackEndpoints as UpstreamEndpoints,\n getContentstackEndpoints,\n getRegionForString,\n} from \"@timbenniks/contentstack-endpoints\"\nimport type { ContentstackEndpoints, ContentstackRegion } from \"./resolver.js\"\n\n/** Brand Kit endpoints not available in upstream package — maintained locally */\nconst BRAND_KIT_URLS: Record<ContentstackRegion, { brandKit: string; brandKitAI: string }> = {\n us: {\n brandKit: \"https://brand-kits-api.contentstack.com\",\n brandKitAI: \"https://ai.contentstack.com/brand-kits\",\n },\n eu: {\n brandKit: \"https://eu-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://eu-ai.contentstack.com/brand-kits\",\n },\n au: {\n brandKit: \"https://au-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://au-ai.contentstack.com/brand-kits\",\n },\n \"azure-na\": {\n brandKit: \"https://azure-na-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://azure-na-ai.contentstack.com/brand-kits\",\n },\n \"azure-eu\": {\n brandKit: \"https://azure-eu-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://azure-eu-ai.contentstack.com/brand-kits\",\n },\n \"gcp-na\": {\n brandKit: \"https://gcp-na-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://gcp-na-ai.contentstack.com/brand-kits\",\n },\n \"gcp-eu\": {\n brandKit: \"https://gcp-eu-brand-kits-api.contentstack.com\",\n brandKitAI: \"https://gcp-eu-ai.contentstack.com/brand-kits\",\n },\n}\n\nfunction mapEndpoints(\n upstream: UpstreamEndpoints,\n region: ContentstackRegion,\n hostsOnly: boolean,\n): ContentstackEndpoints {\n const bk = BRAND_KIT_URLS[region]\n const stripProtocol = (url: string) => url.replace(/^https?:\\/\\//, \"\")\n\n return Object.freeze({\n cma: upstream.contentManagement ?? \"\",\n cda: upstream.contentDelivery ?? \"\",\n graphql: upstream.graphqlDelivery ?? \"\",\n images: upstream.images ?? \"\",\n app: upstream.application ?? \"\",\n preview: upstream.preview ?? \"\",\n graphqlPreview: upstream.graphqlPreview ?? \"\",\n launch: upstream.launch ?? \"\",\n personalizeEdge: upstream.personalizeEdge ?? \"\",\n brandKit: hostsOnly ? stripProtocol(bk.brandKit) : bk.brandKit,\n brandKitAI: hostsOnly ? stripProtocol(bk.brandKitAI) : bk.brandKitAI,\n })\n}\n\nconst ALL_REGIONS: ContentstackRegion[] = [\n \"us\",\n \"eu\",\n \"au\",\n \"azure-na\",\n \"azure-eu\",\n \"gcp-na\",\n \"gcp-eu\",\n]\n\nfunction buildEndpointMap(): Record<ContentstackRegion, ContentstackEndpoints> {\n const map = {} as Record<ContentstackRegion, ContentstackEndpoints>\n for (const region of ALL_REGIONS) {\n map[region] = mapEndpoints(getContentstackEndpoints(region), region, false)\n }\n return Object.freeze(map)\n}\n\nfunction buildHostMap(): Record<ContentstackRegion, ContentstackEndpoints> {\n const map = {} as Record<ContentstackRegion, ContentstackEndpoints>\n for (const region of ALL_REGIONS) {\n map[region] = mapEndpoints(getContentstackEndpoints(region, true), region, true)\n }\n return Object.freeze(map)\n}\n\nexport const ENDPOINT_MAP = buildEndpointMap()\nexport const HOST_MAP = buildHostMap()\n\n/** Check if a string is a valid region via the upstream package */\nexport function isValidRegion(input: string): boolean {\n return getRegionForString(input) !== undefined\n}\n\n/** Map of extra aliases our SDK supports beyond what the upstream package handles */\nexport const EXTRA_ALIASES: Record<string, ContentstackRegion> = {\n \"north-america\": \"us\",\n europe: \"eu\",\n australia: \"au\",\n}\n","import { ContentstackConfigError } from \"../http/errors.js\"\nimport { ENDPOINT_MAP, EXTRA_ALIASES, HOST_MAP, isValidRegion } from \"./endpoints.js\"\n\n/** All 7 Contentstack regions */\nexport type ContentstackRegion = \"us\" | \"eu\" | \"au\" | \"azure-na\" | \"azure-eu\" | \"gcp-na\" | \"gcp-eu\"\n\n/** Resolved endpoint URLs for a region */\nexport interface ContentstackEndpoints {\n /** CMA base URL, e.g. \"https://api.contentstack.io\" */\n cma: string\n /** CDA REST base URL, e.g. \"https://cdn.contentstack.io\" */\n cda: string\n /** GraphQL CDA endpoint */\n graphql: string\n /** Asset/image delivery base URL */\n images: string\n /** Application URL (for OAuth), e.g. \"https://app.contentstack.com\" */\n app: string\n /** Preview API base URL */\n preview: string\n /** GraphQL preview endpoint */\n graphqlPreview: string\n /** Launch API base URL */\n launch: string\n /** Personalize edge endpoint */\n personalizeEdge: string\n /** Brand Kit Management API base URL */\n brandKit: string\n /** Brand Kit GenAI and Knowledge Vault base URL */\n brandKitAI: string\n}\n\nconst VALID_REGIONS = new Set<string>(Object.keys(ENDPOINT_MAP))\n\n/**\n * Resolve all API endpoints for a Contentstack region.\n *\n * @example\n * ```ts\n * const endpoints = resolveEndpoints(\"eu\");\n * // endpoints.cma === \"https://eu-api.contentstack.com\"\n * // endpoints.app === \"https://eu-app.contentstack.com\"\n * ```\n */\nexport function resolveEndpoints(region: ContentstackRegion): ContentstackEndpoints {\n return ENDPOINT_MAP[region]\n}\n\n/**\n * Resolve endpoints with https:// stripped (for SDK host parameters).\n *\n * @example\n * ```ts\n * const hosts = resolveHosts(\"eu\");\n * // hosts.cda === \"eu-cdn.contentstack.com\"\n * ```\n */\nexport function resolveHosts(region: ContentstackRegion): ContentstackEndpoints {\n return HOST_MAP[region]\n}\n\n/**\n * Normalize region aliases: \"na\" → \"us\", \"NA\" → \"us\", etc.\n * Case-insensitive. Throws ContentstackConfigError for unknown regions.\n */\nexport function normalizeRegion(input: string): ContentstackRegion {\n const lower = input.toLowerCase().trim()\n\n if (VALID_REGIONS.has(lower)) {\n return lower as ContentstackRegion\n }\n\n // Check extra aliases our SDK supports (north-america, europe, australia)\n const extraAlias = EXTRA_ALIASES[lower]\n if (extraAlias) {\n return extraAlias\n }\n\n // Check aliases handled by the upstream package (na, us, aws-na, etc.)\n if (isValidRegion(lower)) {\n // The upstream package recognized it — map back to our canonical region\n // \"na\" and \"us\" both map to the NA region which we call \"us\"\n if (lower === \"na\" || lower === \"aws-na\" || lower === \"aws_na\") return \"us\"\n if (lower === \"aws-eu\" || lower === \"aws_eu\") return \"eu\"\n if (lower === \"aws-au\" || lower === \"aws_au\") return \"au\"\n if (lower === \"azure_na\") return \"azure-na\"\n if (lower === \"azure_eu\") return \"azure-eu\"\n if (lower === \"gcp_na\") return \"gcp-na\"\n if (lower === \"gcp_eu\") return \"gcp-eu\"\n }\n\n const validRegions = [...VALID_REGIONS].join(\", \")\n const validAliases = [...Object.keys(EXTRA_ALIASES), \"na\", \"aws-na\", \"aws-eu\", \"aws-au\"].join(\n \", \",\n )\n throw new ContentstackConfigError(\n `Unknown region \"${input}\". Valid regions: ${validRegions}. Aliases: ${validAliases}.`,\n )\n}\n\nexport { ContentstackConfigError }\n","import { ContentstackError } from \"./errors.js\"\n\n/**\n * Parse a non-ok fetch Response into a ContentstackError.\n *\n * Handles the Contentstack API error format (error_message, error_code, errors)\n * and falls back to the HTTP status text when the body is not parseable.\n *\n * This is a shared utility used by React hooks and Vue composables to avoid\n * duplicating error-parsing logic across frameworks.\n */\nexport async function parseErrorResponse(\n response: Response,\n path: string,\n): Promise<ContentstackError> {\n try {\n const body = await response.json()\n return new ContentstackError(body.error_message ?? body.message ?? response.statusText, {\n status: response.status,\n errorCode: body.error_code,\n errors: body.errors,\n requestPath: path,\n })\n } catch {\n return new ContentstackError(response.statusText, {\n status: response.status,\n requestPath: path,\n })\n }\n}\n","import {\n ContentstackAuthError,\n ContentstackError,\n ContentstackForbiddenError,\n ContentstackInvalidApiKeyError,\n ContentstackNotFoundError,\n ContentstackRateLimitError,\n ContentstackServerError,\n ContentstackValidationError,\n} from \"./errors.js\"\nimport type { HttpClientConfig, HttpResponse } from \"./types.js\"\n\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_RETRY_LIMIT = 5\nconst DEFAULT_RETRY_DELAY = 300\nconst MAX_JITTER = 100\n\nexport class ContentstackHttpClient {\n private readonly config: Required<\n Pick<HttpClientConfig, \"baseUrl\" | \"timeout\" | \"retryOnError\" | \"retryLimit\" | \"retryDelay\">\n > & {\n headers: Record<string, string>\n fetch: typeof globalThis.fetch\n }\n\n constructor(config: HttpClientConfig) {\n this.config = {\n baseUrl: config.baseUrl,\n headers: config.headers ?? {},\n timeout: config.timeout ?? DEFAULT_TIMEOUT,\n retryOnError: config.retryOnError ?? true,\n retryLimit: config.retryLimit ?? DEFAULT_RETRY_LIMIT,\n retryDelay: config.retryDelay ?? DEFAULT_RETRY_DELAY,\n fetch: config.fetch ?? globalThis.fetch.bind(globalThis),\n }\n }\n\n async get<T>(path: string, params?: Record<string, string>): Promise<HttpResponse<T>> {\n let url = `${this.config.baseUrl}${path}`\n if (params) {\n const searchParams = new URLSearchParams(params)\n url += `?${searchParams.toString()}`\n }\n return this.request<T>(url, { method: \"GET\" }, path)\n }\n\n async post<T>(path: string, body?: unknown): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n },\n path,\n )\n }\n\n async put<T>(path: string, body?: unknown): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n },\n path,\n )\n }\n\n async patch<T>(path: string, body?: unknown): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n },\n path,\n )\n }\n\n async delete<T>(path: string): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(url, { method: \"DELETE\" }, path)\n }\n\n async postForm<T>(path: string, params: URLSearchParams): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(\n url,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: params.toString(),\n },\n path,\n )\n }\n\n async upload<T>(path: string, form: FormData): Promise<HttpResponse<T>> {\n const url = `${this.config.baseUrl}${path}`\n return this.request<T>(url, { method: \"POST\", body: form }, path)\n }\n\n /** Return a new client with additional headers merged */\n withHeaders(headers: Record<string, string>): ContentstackHttpClient {\n return new ContentstackHttpClient({\n ...this.config,\n headers: { ...this.config.headers, ...headers },\n })\n }\n\n /** Return a new client with a different base URL */\n withBaseUrl(baseUrl: string): ContentstackHttpClient {\n return new ContentstackHttpClient({\n ...this.config,\n baseUrl,\n })\n }\n\n private async request<T>(url: string, init: RequestInit, path: string): Promise<HttpResponse<T>> {\n const headers = new Headers(this.config.headers)\n\n if (init.headers) {\n const initHeaders =\n init.headers instanceof Headers\n ? init.headers\n : new Headers(init.headers as Record<string, string>)\n initHeaders.forEach((value, key) => headers.set(key, value))\n }\n\n let lastError: Error | undefined\n const maxAttempts = this.config.retryOnError ? this.config.retryLimit + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout)\n\n try {\n const response = await this.config.fetch(url, {\n ...init,\n headers,\n signal: controller.signal,\n })\n\n if (response.ok) {\n const data = (await response.json().catch(() => ({}))) as T\n return { data, status: response.status, headers: response.headers }\n }\n\n // Check if retryable\n const isRetryable = response.status === 429 || response.status >= 500\n if (isRetryable && this.config.retryOnError && attempt < maxAttempts - 1) {\n const delay = this.calculateDelay(response, attempt)\n await sleep(delay)\n lastError = await this.createError(response, path)\n continue\n }\n\n throw await this.createError(response, path)\n } catch (error) {\n if (error instanceof ContentstackError) {\n throw error\n }\n\n if (error instanceof DOMException && error.name === \"AbortError\") {\n throw new ContentstackError(`Request timed out after ${this.config.timeout}ms`, {\n requestPath: path,\n cause: error,\n })\n }\n\n throw new ContentstackError(\"Network request failed\", {\n requestPath: path,\n cause: error instanceof Error ? error : new Error(String(error)),\n })\n } finally {\n clearTimeout(timeoutId)\n }\n }\n\n // Should not reach here, but just in case\n throw lastError ?? new ContentstackError(\"Request failed after retries\", { requestPath: path })\n }\n\n private calculateDelay(response: Response, attempt: number): number {\n const retryAfter = response.headers.get(\"Retry-After\")\n if (retryAfter) {\n const seconds = Number.parseFloat(retryAfter)\n if (!Number.isNaN(seconds)) {\n return seconds * 1000\n }\n }\n\n const jitter = Math.random() * MAX_JITTER\n return this.config.retryDelay * 2 ** attempt + jitter\n }\n\n private async createError(response: Response, path: string): Promise<ContentstackError> {\n let body: Record<string, unknown> = {}\n try {\n body = (await response.json()) as Record<string, unknown>\n } catch {\n // Response body may not be JSON\n }\n\n const message =\n (body.error_message as string | undefined) ??\n (body.error_description as string | undefined) ??\n (body.message as string | undefined) ??\n `HTTP ${response.status} error`\n const errorCode = body.error_code as number | undefined\n const errors = body.errors as Record<string, string[]> | undefined\n const retryAfter = response.headers.get(\"Retry-After\")\n\n const opts = { status: response.status, errorCode, errors, requestPath: path }\n\n switch (response.status) {\n case 400:\n return new ContentstackValidationError(message, { ...opts, status: 400 })\n case 401:\n return new ContentstackAuthError(message, opts)\n case 403:\n return new ContentstackForbiddenError(message, opts)\n case 404:\n return new ContentstackNotFoundError(message, opts)\n case 412:\n return new ContentstackInvalidApiKeyError(message, opts)\n case 422:\n return new ContentstackValidationError(message, { ...opts, status: 422 })\n case 429:\n return new ContentstackRateLimitError(message, {\n ...opts,\n retryAfter: retryAfter ? Number.parseFloat(retryAfter) : undefined,\n })\n default:\n if (response.status >= 500) {\n return new ContentstackServerError(message, opts)\n }\n return new ContentstackError(message, opts)\n }\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","// @timbenniks/contentstack-platform-sdk — CMA pagination helper\n\nconst DEFAULT_PAGE_SIZE = 25\n\n/**\n * Create an AsyncIterable that lazily paginates through CMA results.\n * Pages are fetched on demand — only when items are consumed.\n */\nexport function paginate<T>(\n fetchPage: (skip: number, limit: number) => Promise<{ items: T[]; count?: number }>,\n options?: { limit?: number },\n): AsyncIterable<T> {\n const pageSize = options?.limit ?? DEFAULT_PAGE_SIZE\n\n return {\n [Symbol.asyncIterator]() {\n let skip = 0\n let done = false\n let buffer: T[] = []\n let bufferIndex = 0\n let totalCount: number | undefined\n\n return {\n async next(): Promise<IteratorResult<T>> {\n if (bufferIndex < buffer.length) {\n return { value: buffer[bufferIndex++] as T, done: false }\n }\n\n if (done) {\n return { value: undefined as unknown as T, done: true }\n }\n\n const page = await fetchPage(skip, pageSize)\n buffer = page.items\n bufferIndex = 0\n skip += page.items.length\n\n if (typeof page.count === \"number\") {\n totalCount = page.count\n }\n\n if (page.items.length === 0) {\n done = true\n return { value: undefined as unknown as T, done: true }\n }\n\n if (typeof totalCount === \"number\" && skip >= totalCount) {\n done = true\n }\n\n return { value: buffer[bufferIndex++] as T, done: false }\n },\n }\n },\n }\n}\n\n/**\n * Collect all items from an AsyncIterable into an array.\n * Replaces the repeated listAll() pattern across sub-clients.\n */\nexport async function collectAll<T>(iterable: AsyncIterable<T>): Promise<T[]> {\n const items: T[] = []\n for await (const item of iterable) {\n items.push(item)\n }\n return items\n}\n","// @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","// @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 { 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:\n | { type: \"management-token\"; token: string }\n | { type: \"oauth\"; accessToken: string }\n | { type: \"authtoken\"; token: string }\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 switch (config.auth.type) {\n case \"management-token\":\n headers.authorization = config.auth.token\n break\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n if (config.branch) {\n headers.branch = config.branch\n }\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 })\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","/**\n * Launch API response helpers.\n *\n * The Launch API returns responses in the format:\n * { pagination: { count, limit, skip }, [key]: [...] }\n *\n * For example, listing projects returns:\n * { pagination: { count: 7, limit: 25, skip: null }, projects: [...] }\n *\n * These helpers normalise the response into the shape the paginator expects.\n */\n\n/**\n * Extract a list from a Launch API response.\n *\n * Handles:\n * - `{ pagination: { count }, [key]: [...] }` — real Launch API format\n * - `{ data: T[], count? }` — legacy / fallback\n * - Plain arrays `T[]`\n */\nexport function extractList<T>(body: unknown, key: string): { items: T[]; count?: number } {\n if (Array.isArray(body)) {\n return { items: body as T[] }\n }\n\n if (body && typeof body === \"object\") {\n const obj = body as Record<string, unknown>\n\n // Launch API format: { pagination: { count }, [key]: [...] }\n if (key in obj && Array.isArray(obj[key])) {\n const pagination = obj.pagination as { count?: number } | undefined\n return { items: obj[key] as T[], count: pagination?.count }\n }\n\n // Fallback: { data: [...], count? }\n if (\"data\" in obj && Array.isArray(obj.data)) {\n return { items: obj.data as T[], count: (obj as { count?: number }).count }\n }\n }\n\n return { items: [] }\n}\n\n/** Extract a single item from a response that may be a plain object or `{ data: T }`. */\nexport function extractItem<T>(body: unknown): T {\n if (body && typeof body === \"object\" && \"data\" in body) {\n return (body as { data: T }).data\n }\n\n return body as T\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n CreateDeploymentData,\n DeploymentLog,\n DeploymentLogOptions,\n LaunchDeployment,\n ListDeploymentsOptions,\n ServerLog,\n ServerLogOptions,\n SignedUploadUrl,\n} from \"./types.js\"\n\nexport class DeploymentsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n private basePath(projectUid: string, environmentUid: string): string {\n return `/projects/${projectUid}/environments/${environmentUid}/deployments`\n }\n\n list(\n projectUid: string,\n environmentUid: string,\n options?: ListDeploymentsOptions,\n ): AsyncIterable<LaunchDeployment> {\n return paginate<LaunchDeployment>(\n async (skip, limit) => {\n const params: Record<string, string> = {\n skip: String(skip),\n limit: String(limit),\n }\n const response = await this.http.get<unknown>(\n this.basePath(projectUid, environmentUid),\n params,\n )\n return extractList<LaunchDeployment>(response.data, \"deployments\")\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(\n projectUid: string,\n environmentUid: string,\n options?: ListDeploymentsOptions,\n ): Promise<LaunchDeployment[]> {\n return collectAll(this.list(projectUid, environmentUid, options))\n }\n\n async get(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n ): Promise<LaunchDeployment> {\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}`,\n )\n return extractItem<LaunchDeployment>(response.data)\n }\n\n async create(\n projectUid: string,\n environmentUid: string,\n data: CreateDeploymentData,\n ): Promise<LaunchDeployment> {\n const response = await this.http.post<unknown>(this.basePath(projectUid, environmentUid), data)\n return extractItem<LaunchDeployment>(response.data)\n }\n\n async getDeploymentLogs(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n options?: DeploymentLogOptions,\n ): Promise<DeploymentLog[]> {\n const params: Record<string, string> = {}\n if (options?.timestamp) params.timestamp = options.timestamp\n\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}/logs/deployment-logs`,\n Object.keys(params).length > 0 ? params : undefined,\n )\n return extractList<DeploymentLog>(response.data, \"logs\").items\n }\n\n async getServerLogs(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n options?: ServerLogOptions,\n ): Promise<ServerLog[]> {\n const params: Record<string, string> = {}\n if (options?.startTime !== undefined) params.startTime = String(options.startTime)\n if (options?.endTime !== undefined) params.endTime = String(options.endTime)\n\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}/logs/server-logs`,\n Object.keys(params).length > 0 ? params : undefined,\n )\n return extractList<ServerLog>(response.data, \"logs\").items\n }\n\n async getUploadUrl(projectUid: string, environmentUid: string): Promise<SignedUploadUrl> {\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/upload/signed_url`,\n )\n return extractItem<SignedUploadUrl>(response.data)\n }\n\n async getDownloadUrl(\n projectUid: string,\n environmentUid: string,\n deploymentUid: string,\n ): Promise<string> {\n const response = await this.http.get<unknown>(\n `${this.basePath(projectUid, environmentUid)}/${deploymentUid}/download/signed_url`,\n )\n const item = extractItem<{ downloadUrl: string }>(response.data)\n return item.downloadUrl\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n CreateEnvironmentData,\n LaunchEnvironment,\n RevalidateCDNData,\n SignedUploadUrl,\n UpdateEnvironmentData,\n} from \"./types.js\"\n\nexport class EnvironmentsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(projectUid: string): AsyncIterable<LaunchEnvironment> {\n return paginate<LaunchEnvironment>(async (skip, limit) => {\n const response = await this.http.get<unknown>(`/projects/${projectUid}/environments`, {\n skip: String(skip),\n limit: String(limit),\n })\n return extractList<LaunchEnvironment>(response.data, \"environments\")\n })\n }\n\n async listAll(projectUid: string): Promise<LaunchEnvironment[]> {\n return collectAll(this.list(projectUid))\n }\n\n async get(projectUid: string, envUid: string): Promise<LaunchEnvironment> {\n const response = await this.http.get<unknown>(`/projects/${projectUid}/environments/${envUid}`)\n return extractItem<LaunchEnvironment>(response.data)\n }\n\n async create(projectUid: string, data: CreateEnvironmentData): Promise<LaunchEnvironment> {\n const response = await this.http.post<unknown>(`/projects/${projectUid}/environments`, data)\n return extractItem<LaunchEnvironment>(response.data)\n }\n\n async update(\n projectUid: string,\n envUid: string,\n data: UpdateEnvironmentData,\n ): Promise<LaunchEnvironment> {\n const response = await this.http.put<unknown>(\n `/projects/${projectUid}/environments/${envUid}`,\n data,\n )\n return extractItem<LaunchEnvironment>(response.data)\n }\n\n async delete(projectUid: string, envUid: string): Promise<void> {\n await this.http.delete(`/projects/${projectUid}/environments/${envUid}`)\n }\n\n async revalidateCDNCache(\n projectUid: string,\n envUid: string,\n data: RevalidateCDNData,\n ): Promise<void> {\n await this.http.post(\n `/projects/${projectUid}/environments/${envUid}/revalidate-cdn-cache`,\n data,\n )\n }\n\n async getUploadUrl(projectUid: string): Promise<SignedUploadUrl> {\n const response = await this.http.get<unknown>(\n `/projects/${projectUid}/environments/upload/signed_url`,\n )\n return extractItem<SignedUploadUrl>(response.data)\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n CreateProjectData,\n LaunchProject,\n ListProjectsOptions,\n SignedUploadUrl,\n TransferGitRepositoryData,\n UpdateProjectData,\n} from \"./types.js\"\n\nexport class ProjectsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(options?: ListProjectsOptions): AsyncIterable<LaunchProject> {\n return paginate<LaunchProject>(\n async (skip, limit) => {\n const response = await this.http.get<unknown>(\"/projects\", {\n skip: String(skip),\n limit: String(limit),\n })\n return extractList<LaunchProject>(response.data, \"projects\")\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(options?: ListProjectsOptions): Promise<LaunchProject[]> {\n return collectAll(this.list(options))\n }\n\n async get(projectUid: string): Promise<LaunchProject> {\n const response = await this.http.get<unknown>(`/projects/${projectUid}`)\n return extractItem<LaunchProject>(response.data)\n }\n\n async create(data: CreateProjectData): Promise<LaunchProject> {\n const response = await this.http.post<unknown>(\"/projects\", data)\n return extractItem<LaunchProject>(response.data)\n }\n\n async update(projectUid: string, data: UpdateProjectData): Promise<LaunchProject> {\n const response = await this.http.put<unknown>(`/projects/${projectUid}`, data)\n return extractItem<LaunchProject>(response.data)\n }\n\n async delete(projectUid: string): Promise<void> {\n await this.http.delete(`/projects/${projectUid}`)\n }\n\n async transferGitRepository(projectUid: string, data: TransferGitRepositoryData): Promise<void> {\n await this.http.patch(`/projects/${projectUid}/git-repository`, data)\n }\n\n async getUploadUrl(): Promise<SignedUploadUrl> {\n const response = await this.http.get<unknown>(\"/projects/upload/signed_url\")\n return extractItem<SignedUploadUrl>(response.data)\n }\n}\n","import { 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 { DeploymentsClient } from \"./deployments.js\"\nimport { EnvironmentsClient } from \"./environments.js\"\nimport { ProjectsClient } from \"./projects.js\"\n\nexport interface LaunchClientConfig {\n region: ContentstackRegion\n organizationUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface LaunchClient {\n projects: ProjectsClient\n environments: EnvironmentsClient\n deployments: DeploymentsClient\n}\n\nexport function createLaunchClient(config: LaunchClientConfig): LaunchClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.launch,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n projects: new ProjectsClient(http),\n environments: new EnvironmentsClient(http),\n deployments: new DeploymentsClient(http),\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type {\n BrandKit,\n CreateBrandKitData,\n ListBrandKitsOptions,\n UpdateBrandKitData,\n} from \"./types.js\"\n\nexport class BrandKitsSubClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(options?: ListBrandKitsOptions): AsyncIterable<BrandKit> {\n return paginate<BrandKit>(\n async (skip, limit) => {\n const response = await this.http.get<{ data: BrandKit[]; count?: number }>(\n \"/v1/brand-kits\",\n {\n skip: String(skip),\n limit: String(limit),\n },\n )\n return { items: response.data.data ?? [], count: response.data.count }\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(options?: ListBrandKitsOptions): Promise<BrandKit[]> {\n return collectAll(this.list(options))\n }\n\n async get(brandKitUid: string): Promise<BrandKit> {\n const response = await this.http.get<{ data: BrandKit }>(`/v1/brand-kits/${brandKitUid}`)\n return response.data.data\n }\n\n async create(data: CreateBrandKitData): Promise<BrandKit> {\n const response = await this.http.post<{ data: BrandKit }>(\"/v1/brand-kits\", data)\n return response.data.data\n }\n\n async update(brandKitUid: string, data: UpdateBrandKitData): Promise<BrandKit> {\n const response = await this.http.put<{ data: BrandKit }>(`/v1/brand-kits/${brandKitUid}`, data)\n return response.data.data\n }\n\n async delete(brandKitUid: string): Promise<void> {\n await this.http.delete(`/v1/brand-kits/${brandKitUid}`)\n }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport type {\n CreateVoiceProfileData,\n ListVoiceProfilesOptions,\n UpdateVoiceProfileData,\n VoiceProfile,\n} from \"./types.js\"\n\nexport class VoiceProfilesSubClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n list(brandKitUid: string, options?: ListVoiceProfilesOptions): AsyncIterable<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n return paginate<VoiceProfile>(\n async (skip, limit) => {\n const response = await scoped.get<{ data: VoiceProfile[]; count?: number }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles`,\n { skip: String(skip), limit: String(limit) },\n )\n return { items: response.data.data ?? [], count: response.data.count }\n },\n { limit: options?.limit },\n )\n }\n\n async listAll(brandKitUid: string, options?: ListVoiceProfilesOptions): Promise<VoiceProfile[]> {\n return collectAll(this.list(brandKitUid, options))\n }\n\n async get(brandKitUid: string, voiceProfileUid: string): Promise<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n const response = await scoped.get<{ data: VoiceProfile }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles/${voiceProfileUid}`,\n )\n return response.data.data\n }\n\n async create(brandKitUid: string, data: CreateVoiceProfileData): Promise<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n const response = await scoped.post<{ data: VoiceProfile }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles`,\n data,\n )\n return response.data.data\n }\n\n async update(\n brandKitUid: string,\n voiceProfileUid: string,\n data: UpdateVoiceProfileData,\n ): Promise<VoiceProfile> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n const response = await scoped.put<{ data: VoiceProfile }>(\n `/v1/brand-kits/${brandKitUid}/voice-profiles/${voiceProfileUid}`,\n data,\n )\n return response.data.data\n }\n\n async delete(brandKitUid: string, voiceProfileUid: string): Promise<void> {\n const scoped = this.http.withHeaders({ brand_kit_uid: brandKitUid })\n await scoped.delete(`/v1/brand-kits/${brandKitUid}/voice-profiles/${voiceProfileUid}`)\n }\n}\n","import { 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 { BrandKitsSubClient } from \"./brand-kits.js\"\nimport { VoiceProfilesSubClient } from \"./voice-profiles.js\"\n\nexport interface BrandKitClientConfig {\n region: ContentstackRegion\n organizationUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface BrandKitClient {\n brandKits: BrandKitsSubClient\n voiceProfiles: VoiceProfilesSubClient\n}\n\nexport function createBrandKitClient(config: BrandKitClientConfig): BrandKitClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.brandKit,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n brandKits: new BrandKitsSubClient(http),\n voiceProfiles: new VoiceProfilesSubClient(http),\n }\n}\n","import type { ContentstackHttpClient } from \"../http/client.js\"\nimport type {\n IngestContentData,\n KnowledgeVaultItem,\n KnowledgeVaultUsage,\n UpdateContentData,\n} from \"./types.js\"\n\nexport class KnowledgeVaultItemsClient {\n constructor(private readonly http: ContentstackHttpClient) {}\n\n async ingest(data: IngestContentData): Promise<KnowledgeVaultItem> {\n const response = await this.http.post<{ data: KnowledgeVaultItem }>(\"/v1/knowledge-vault\", data)\n return response.data.data\n }\n\n async update(itemUid: string, data: UpdateContentData): Promise<KnowledgeVaultItem> {\n const response = await this.http.put<{ data: KnowledgeVaultItem }>(\n `/v1/knowledge-vault/${itemUid}`,\n data,\n )\n return response.data.data\n }\n\n async delete(itemUid: string): Promise<void> {\n await this.http.delete(`/v1/knowledge-vault/${itemUid}`)\n }\n\n async getUsage(): Promise<KnowledgeVaultUsage> {\n const response = await this.http.get<{ data: KnowledgeVaultUsage }>(\"/v1/knowledge-vault/usage\")\n return response.data.data\n }\n}\n","import { 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 { KnowledgeVaultItemsClient } from \"./items.js\"\n\nexport interface KnowledgeVaultClientConfig {\n region: ContentstackRegion\n organizationUid: string\n brandKitUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface KnowledgeVaultClient {\n items: KnowledgeVaultItemsClient\n}\n\nexport function createKnowledgeVaultClient(\n config: KnowledgeVaultClientConfig,\n): KnowledgeVaultClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n brand_kit_uid: config.brandKitUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.brandKitAI,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n items: new KnowledgeVaultItemsClient(http),\n }\n}\n","import { 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 type { GenerateContentData, GenerateContentResult } from \"./types.js\"\n\nexport interface GenerativeAIClientConfig {\n region: ContentstackRegion\n organizationUid: string\n brandKitUid: string\n auth: { type: \"oauth\"; accessToken: string } | { type: \"authtoken\"; token: string }\n httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface GenerativeAIClient {\n generate(data: GenerateContentData): Promise<GenerateContentResult>\n}\n\nexport function createGenerativeAIClient(config: GenerativeAIClientConfig): GenerativeAIClient {\n const endpoints = resolveEndpoints(config.region)\n\n const headers: Record<string, string> = {\n organization_uid: config.organizationUid,\n brand_kit_uid: config.brandKitUid,\n }\n\n switch (config.auth.type) {\n case \"oauth\":\n headers.authorization = `Bearer ${config.auth.accessToken}`\n break\n case \"authtoken\":\n headers.authtoken = config.auth.token\n break\n }\n\n const http = new ContentstackHttpClient({\n ...config.httpOptions,\n baseUrl: config.httpOptions?.baseUrl ?? endpoints.brandKitAI,\n headers: {\n ...config.httpOptions?.headers,\n ...headers,\n },\n })\n\n return {\n async generate(data: GenerateContentData): Promise<GenerateContentResult> {\n const body: Record<string, unknown> = { prompt: data.prompt }\n if (data.voiceProfileUid) {\n body.voice_profile_uid = data.voiceProfileUid\n }\n if (data.useKnowledgeVault !== undefined) {\n body.knowledge_vault = data.useKnowledgeVault\n }\n const response = await http.post<{ data: GenerateContentResult }>(\n \"/v1/generative-ai/generate\",\n body,\n )\n return response.data.data\n },\n }\n}\n","import { type MaybeRef, type Ref, onUnmounted, ref, toValue, watch } from \"vue\"\nimport { ContentstackError, parseErrorResponse } from \"../../../index.js\"\nimport { useContentstackContext } from \"../../provider/context\"\n\nexport interface UseQueryOptions {\n enabled?: MaybeRef<boolean>\n refetchInterval?: number\n}\n\nexport interface UseQueryResult<T> {\n data: Ref<T | undefined>\n loading: Ref<boolean>\n error: Ref<ContentstackError | null>\n refetch: () => Promise<void>\n}\n\nexport function useQuery<T>(\n path: MaybeRef<string>,\n params?: MaybeRef<Record<string, string> | undefined>,\n options?: UseQueryOptions,\n): UseQueryResult<T> {\n const { proxyBasePath } = useContentstackContext()\n const data = ref<T | undefined>(undefined) as Ref<T | undefined>\n const loading = ref(false)\n const error = ref<ContentstackError | null>(null)\n let abortController: AbortController | null = null\n let intervalId: ReturnType<typeof setInterval> | null = null\n\n const isClient = typeof window !== \"undefined\"\n const enabled = options?.enabled ?? true\n const refetchInterval = options?.refetchInterval ?? 0\n\n async function fetchData(signal?: AbortSignal) {\n loading.value = true\n error.value = null\n\n const currentPath = toValue(path)\n const currentParams = toValue(params)\n const search = currentParams ? `?${new URLSearchParams(currentParams).toString()}` : \"\"\n const url = `${proxyBasePath}${currentPath}${search}`\n\n try {\n const response = await fetch(url, { signal })\n\n if (signal?.aborted) return\n\n if (!response.ok) {\n const err = await parseErrorResponse(response, currentPath)\n error.value = err\n data.value = undefined\n return\n }\n\n const json = await response.json()\n data.value = json as T\n } catch (err) {\n if (err instanceof DOMException && err.name === \"AbortError\") return\n error.value = new ContentstackError(err instanceof Error ? err.message : \"Network error\", {\n requestPath: currentPath,\n cause: err instanceof Error ? err : undefined,\n })\n data.value = undefined\n } finally {\n if (!signal?.aborted) {\n loading.value = false\n }\n }\n }\n\n function doFetch() {\n abortController?.abort()\n const controller = new AbortController()\n abortController = controller\n fetchData(controller.signal)\n }\n\n async function refetch(): Promise<void> {\n abortController?.abort()\n const controller = new AbortController()\n abortController = controller\n await fetchData(controller.signal)\n }\n\n // Watch reactive inputs and refetch when they change\n watch(\n () => ({ path: toValue(path), params: toValue(params), enabled: toValue(enabled) }),\n (newVal) => {\n if (!newVal.enabled || !isClient) return\n doFetch()\n },\n { immediate: true, deep: true },\n )\n\n // Handle refetch interval\n watch(\n () => ({ enabled: toValue(enabled), refetchInterval }),\n (newVal) => {\n if (intervalId) {\n clearInterval(intervalId)\n intervalId = null\n }\n if (isClient && newVal.enabled && newVal.refetchInterval > 0) {\n intervalId = setInterval(() => {\n doFetch()\n }, newVal.refetchInterval)\n }\n },\n { immediate: true },\n )\n\n onUnmounted(() => {\n abortController?.abort()\n if (intervalId) {\n clearInterval(intervalId)\n }\n })\n\n return { data, loading, error, refetch }\n}\n","import { type MaybeRef, type Ref, computed, toValue } from \"vue\"\nimport { type Entry, buildEntryParams } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport interface UseEntryOptions extends UseQueryOptions {\n locale?: string\n version?: number\n includePublishDetails?: boolean\n}\n\nexport function useEntry(\n contentTypeUid: MaybeRef<string>,\n entryUid: MaybeRef<string>,\n options?: UseEntryOptions,\n): UseQueryResult<Entry> {\n const params = computed(() => buildEntryParams(options))\n\n const path = computed(\n () => `/content_types/${toValue(contentTypeUid)}/entries/${toValue(entryUid)}`,\n )\n\n const result = useQuery<{ entry: Entry }>(path, params, options)\n\n const data = computed(() => result.data.value?.entry) as Ref<Entry | undefined>\n\n return {\n ...result,\n data,\n }\n}\n","import { type Ref, computed } from \"vue\"\nimport { type Asset, buildAssetsParams } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport interface UseAssetsOptions extends UseQueryOptions {\n folder?: string\n limit?: number\n skip?: number\n}\n\nexport function useAssets(options?: UseAssetsOptions): UseQueryResult<Asset[]> {\n const params = computed(() => buildAssetsParams(options))\n\n const result = useQuery<{ assets: Asset[] }>(\"/assets\", params, options)\n\n const data = computed(() => result.data.value?.assets) as Ref<Asset[] | undefined>\n\n return {\n ...result,\n data,\n }\n}\n","import { type Ref, computed } from \"vue\"\nimport type { ContentType } from \"../../index.js\"\nimport type { UseQueryOptions, UseQueryResult } from \"./shared/useQuery\"\nimport { useQuery } from \"./shared/useQuery\"\n\nexport function useContentTypes(options?: UseQueryOptions): UseQueryResult<ContentType[]> {\n const result = useQuery<{ content_types: ContentType[] }>(\"/content_types\", undefined, options)\n\n const data = computed(() => result.data.value?.content_types) as Ref<ContentType[] | undefined>\n\n return {\n ...result,\n data,\n }\n}\n","import { computed } from \"vue\"\nimport { type CMAClient, createCMAClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useCMA(): CMAClient {\n const { proxyBasePath, region, apiKey } = useContentstackContext()\n\n const client = computed(() =>\n createCMAClient({\n region,\n apiKey: apiKey ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: proxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type LaunchClient, createLaunchClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useLaunch(): LaunchClient {\n const { launchProxyBasePath = \"/api/launch\", region, organizationUid } = useContentstackContext()\n\n const client = computed(() =>\n createLaunchClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: launchProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type BrandKitClient, createBrandKitClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useBrandKit(): BrandKitClient {\n const {\n brandKitProxyBasePath = \"/api/brandkit\",\n region,\n organizationUid,\n } = useContentstackContext()\n\n const client = computed(() =>\n createBrandKitClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: brandKitProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type KnowledgeVaultClient, createKnowledgeVaultClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useKnowledgeVault(): KnowledgeVaultClient {\n const {\n brandKitProxyBasePath = \"/api/brandkit\",\n region,\n organizationUid,\n brandKitUid,\n } = useContentstackContext()\n\n const client = computed(() =>\n createKnowledgeVaultClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n brandKitUid: brandKitUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: brandKitProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { computed } from \"vue\"\nimport { type GenerativeAIClient, createGenerativeAIClient } from \"../../index.js\"\nimport { useContentstackContext } from \"../provider/context\"\n\nexport function useGenerativeAI(): GenerativeAIClient {\n const {\n brandKitProxyBasePath = \"/api/brandkit\",\n region,\n organizationUid,\n brandKitUid,\n } = useContentstackContext()\n\n const client = computed(() =>\n createGenerativeAIClient({\n region,\n organizationUid: organizationUid ?? \"proxy\",\n brandKitUid: brandKitUid ?? \"proxy\",\n auth: { type: \"oauth\", accessToken: \"proxy\" },\n httpOptions: { baseUrl: brandKitProxyBasePath },\n }),\n )\n\n return client.value\n}\n","import { type Ref, ref } from \"vue\"\nimport { ContentstackError, parseErrorResponse } from \"../../../index.js\"\nimport { useContentstackContext } from \"../../provider/context\"\n\nexport interface UseMutationResult<TData, TVariables> {\n mutate: (variables: TVariables) => Promise<TData>\n loading: Ref<boolean>\n error: Ref<ContentstackError | null>\n data: Ref<TData | undefined>\n reset: () => void\n}\n\nexport function useMutation<TData, TVariables>(\n method: \"POST\" | \"PUT\" | \"DELETE\",\n buildRequest: (variables: TVariables) => { path: string; body?: unknown },\n): UseMutationResult<TData, TVariables> {\n const { proxyBasePath } = useContentstackContext()\n const data = ref<TData | undefined>(undefined) as Ref<TData | undefined>\n const loading = ref(false)\n const error = ref<ContentstackError | null>(null)\n\n const currentBuildRequest = buildRequest\n\n async function mutate(variables: TVariables): Promise<TData> {\n const { path, body } = currentBuildRequest(variables)\n const url = `${proxyBasePath}${path}`\n\n loading.value = true\n error.value = null\n\n try {\n const response = await fetch(url, {\n method,\n headers: body !== undefined ? { \"Content-Type\": \"application/json\" } : undefined,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n })\n\n if (!response.ok) {\n const err = await parseErrorResponse(response, path)\n error.value = err\n data.value = undefined\n throw err\n }\n\n let json: TData | undefined\n try {\n json = (await response.json()) as TData\n } catch {\n // Support successful 204/empty-body mutation responses.\n json = undefined\n }\n data.value = json\n return json as TData\n } catch (err) {\n if (err instanceof ContentstackError) throw err\n const csError = new ContentstackError(err instanceof Error ? err.message : \"Network error\", {\n requestPath: path,\n cause: err instanceof Error ? err : undefined,\n })\n error.value = csError\n data.value = undefined\n throw csError\n } finally {\n loading.value = false\n }\n }\n\n function reset() {\n data.value = undefined\n error.value = null\n }\n\n return { mutate, loading, error, data, reset }\n}\n","import { type PublishEntryVariables, buildPublishEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function usePublishEntry(): UseMutationResult<void, PublishEntryVariables> {\n return useMutation<void, PublishEntryVariables>(\"POST\", buildPublishEntryRequest)\n}\n","import { type Ref, computed } from \"vue\"\nimport { type CreateEntryVariables, type Entry, buildCreateEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function useCreateEntry(): UseMutationResult<Entry, CreateEntryVariables> {\n const result = useMutation<{ entry: Entry }, CreateEntryVariables>(\n \"POST\",\n buildCreateEntryRequest,\n )\n\n const data = computed(() => result.data.value?.entry) as Ref<Entry | undefined>\n\n async function mutate(variables: CreateEntryVariables): Promise<Entry> {\n const raw = await result.mutate(variables)\n return raw.entry\n }\n\n return {\n ...result,\n data,\n mutate,\n }\n}\n","import { type Ref, computed } from \"vue\"\nimport { type Entry, type UpdateEntryVariables, buildUpdateEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function useUpdateEntry(): UseMutationResult<Entry, UpdateEntryVariables> {\n const result = useMutation<{ entry: Entry }, UpdateEntryVariables>(\"PUT\", buildUpdateEntryRequest)\n\n const data = computed(() => result.data.value?.entry) as Ref<Entry | undefined>\n\n async function mutate(variables: UpdateEntryVariables): Promise<Entry> {\n const raw = await result.mutate(variables)\n return raw.entry\n }\n\n return {\n ...result,\n data,\n mutate,\n }\n}\n","import { type DeleteEntryVariables, buildDeleteEntryRequest } from \"../../index.js\"\nimport type { UseMutationResult } from \"./shared/useMutation\"\nimport { useMutation } from \"./shared/useMutation\"\n\nexport function useDeleteEntry(): UseMutationResult<void, DeleteEntryVariables> {\n return useMutation<void, DeleteEntryVariables>(\"DELETE\", buildDeleteEntryRequest)\n}\n","import { type PropType, type VNode, defineComponent, h } from \"vue\"\nimport type { RTEDocNode, RTENode, RTETextNode } from \"../../index.js\"\n\nexport type RichTextNodeRenderer = (node: RTENode, children: VNode[]) => VNode | null\n\nexport interface RichTextRenderers {\n nodes?: Partial<Record<string, RichTextNodeRenderer>>\n renderEntry?: (attrs: Record<string, unknown>, node: RTENode) => VNode | null\n renderAsset?: (attrs: Record<string, unknown>, node: RTENode) => VNode | null\n}\n\nconst EMPTY_RENDERERS: RichTextRenderers = {}\n\nfunction isTextNode(node: RTENode | RTETextNode): node is RTETextNode {\n return \"text\" in node\n}\n\nfunction renderTextNode(node: RTETextNode, index: number): VNode | string | null {\n if (!node.text) return null\n let content: VNode | string = node.text\n\n if (node.bold) content = h(\"strong\", { key: `mark-b-${index}` }, content)\n if (node.italic) content = h(\"em\", { key: `mark-i-${index}` }, content)\n if (node.underline) content = h(\"u\", { key: `mark-u-${index}` }, content)\n if (node.strikethrough) content = h(\"s\", { key: `mark-s-${index}` }, content)\n if (node.code) content = h(\"code\", { key: `mark-c-${index}` }, content)\n if (node.superscript) content = h(\"sup\", { key: `mark-sup-${index}` }, content)\n if (node.subscript) content = h(\"sub\", { key: `mark-sub-${index}` }, content)\n\n return content\n}\n\nconst DEFAULT_RENDERERS: Record<string, (node: RTENode, children: VNode[]) => VNode> = {\n doc: (_node, children) => h(\"div\", { style: \"display:contents\" }, children),\n p: (node, children) => h(\"p\", { key: node.uid }, children),\n h1: (node, children) => h(\"h1\", { key: node.uid }, children),\n h2: (node, children) => h(\"h2\", { key: node.uid }, children),\n h3: (node, children) => h(\"h3\", { key: node.uid }, children),\n h4: (node, children) => h(\"h4\", { key: node.uid }, children),\n h5: (node, children) => h(\"h5\", { key: node.uid }, children),\n h6: (node, children) => h(\"h6\", { key: node.uid }, children),\n blockquote: (node, children) => h(\"blockquote\", { key: node.uid }, children),\n ol: (node, children) => h(\"ol\", { key: node.uid }, children),\n ul: (node, children) => h(\"ul\", { key: node.uid }, children),\n li: (node, children) => h(\"li\", { key: node.uid }, children),\n hr: (node) => h(\"hr\", { key: node.uid }),\n img: (node) =>\n h(\"img\", {\n key: node.uid,\n src: node.attrs?.src as string,\n alt: (node.attrs?.alt as string) ?? \"\",\n }),\n a: (node, children) =>\n h(\n \"a\",\n {\n key: node.uid,\n href: node.attrs?.href as string,\n target: node.attrs?.target as string,\n },\n children,\n ),\n code: (node, children) => h(\"pre\", { key: node.uid }, [h(\"code\", null, children)]),\n table: (node, children) => h(\"table\", { key: node.uid }, children),\n thead: (node, children) => h(\"thead\", { key: node.uid }, children),\n tbody: (node, children) => h(\"tbody\", { key: node.uid }, children),\n tr: (node, children) => h(\"tr\", { key: node.uid }, children),\n th: (node, children) => h(\"th\", { key: node.uid }, children),\n td: (node, children) => h(\"td\", { key: node.uid }, children),\n}\n\nfunction renderNode(\n node: RTENode | RTETextNode,\n renderers: RichTextRenderers,\n index: number,\n): VNode | string | null {\n if (isTextNode(node)) {\n return renderTextNode(node, index)\n }\n\n if (node.type === \"reference\" && node.attrs) {\n if (node.attrs.type === \"entry\" && renderers.renderEntry) {\n return renderers.renderEntry(node.attrs, node)\n }\n if (node.attrs.type === \"asset\" && renderers.renderAsset) {\n return renderers.renderAsset(node.attrs, node)\n }\n return null\n }\n\n const childElements = node.children?.map((child, i) => renderNode(child, renderers, i)) ?? []\n const children = childElements.filter((c): c is VNode | string => c !== null)\n\n const customRenderer = renderers.nodes?.[node.type]\n if (customRenderer) {\n return customRenderer(node, children as VNode[])\n }\n\n const defaultRenderer = DEFAULT_RENDERERS[node.type]\n if (defaultRenderer) {\n return defaultRenderer(node, children as VNode[])\n }\n\n return children.length > 0 ? h(\"span\", null, children) : null\n}\n\nexport const ContentstackRichText = defineComponent({\n name: \"ContentstackRichText\",\n props: {\n document: {\n type: Object as PropType<RTEDocNode | null | undefined>,\n default: undefined,\n },\n renderers: {\n type: Object as PropType<RichTextRenderers>,\n default: () => EMPTY_RENDERERS,\n },\n class: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n return () => {\n if (!props.document) {\n return slots.fallback?.() ?? null\n }\n\n const children =\n props.document.children?.map((child, i) =>\n renderNode(child, props.renderers ?? EMPTY_RENDERERS, i),\n ) ?? []\n const filtered = children.filter((c): c is VNode | string => c !== null)\n\n if (props.class) {\n return h(\"div\", { class: props.class }, filtered)\n }\n\n return filtered.length > 0 ? h(\"div\", { style: \"display:contents\" }, filtered) : null\n }\n },\n})\n"],"mappings":"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","names":["import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","EnvironmentsClient","EnvironmentsClient","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue"]}