{"version":3,"sources":["../src/developer-hub/response.ts","../src/developer-hub/apps.ts","../src/developer-hub/authorizations.ts","../src/developer-hub/hosting.ts","../src/developer-hub/installations.ts","../src/developer-hub/oauth.ts","../src/developer-hub/requests.ts","../src/developer-hub/client.ts"],"sourcesContent":["/**\n * Developer Hub API response helpers.\n *\n * The Developer Hub API returns responses in varying formats:\n *   - `{ data: T }` for single items\n *   - `{ data: T[] }` for lists with optional `count`\n *   - Direct object for some endpoints\n *\n * These helpers normalise the response into shapes the paginator expects.\n */\n\n/**\n * Extract a list from a Developer Hub API response.\n *\n * Handles:\n * - `{ data: T[], count? }` — standard list format\n * - Plain arrays `T[]`\n * - `{ [key]: T[], count? }` — keyed list format\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    // Keyed format: { [key]: [...], count? }\n    if (key && key in obj && Array.isArray(obj[key])) {\n      return { items: obj[key] as T[], count: obj.count as number | undefined }\n    }\n\n    // Standard format: { data: [...], count? }\n    if (\"data\" in obj && Array.isArray(obj.data)) {\n      return { items: obj.data as T[], count: obj.count as number | undefined }\n    }\n  }\n\n  return { items: [] }\n}\n\n/** Extract a single item from a response that may be `{ data: T }` or a plain object. */\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  AppInstallation,\n  AuthorizeAppData,\n  CreateAppData,\n  DeveloperHubApp,\n  InstallAppData,\n  ListAppInstallationsOptions,\n  ListAppsOptions,\n  ReinstallAppData,\n  UpdateAppData,\n} from \"./types.js\"\n\nexport class AppsClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  list(options?: ListAppsOptions): AsyncIterable<DeveloperHubApp> {\n    return paginate<DeveloperHubApp>(\n      async (skip, limit) => {\n        const params: Record<string, string> = {\n          skip: String(skip),\n          limit: String(limit),\n        }\n        if (options?.sort) params.sort = options.sort\n        if (options?.order) params.order = options.order\n        if (options?.search) params.search = options.search\n        if (options?.target_type) params.target_type = options.target_type\n        if (options?.include_update_details) params.include_update_details = \"true\"\n\n        const response = await this.http.get<unknown>(\"/manifests\", params)\n        return extractList<DeveloperHubApp>(response.data, \"data\")\n      },\n      { limit: options?.limit },\n    )\n  }\n\n  async listAll(options?: ListAppsOptions): Promise<DeveloperHubApp[]> {\n    return collectAll(this.list(options))\n  }\n\n  async search(\n    term: string,\n    options?: Omit<ListAppsOptions, \"search\">,\n  ): Promise<DeveloperHubApp[]> {\n    const params: Record<string, string> = { term }\n    if (options?.limit) params.limit = String(options.limit)\n    if (options?.skip) params.skip = String(options.skip)\n    if (options?.sort) params.sort = options.sort\n    if (options?.order) params.order = options.order\n    if (options?.target_type) params.target_type = options.target_type\n\n    const response = await this.http.get<unknown>(\"/manifests\", params)\n    return extractList<DeveloperHubApp>(response.data, \"data\").items\n  }\n\n  async get(appUid: string): Promise<DeveloperHubApp> {\n    const response = await this.http.get<unknown>(`/manifests/${appUid}`)\n    return extractItem<DeveloperHubApp>(response.data)\n  }\n\n  async create(data: CreateAppData): Promise<DeveloperHubApp> {\n    const response = await this.http.post<unknown>(\"/manifests\", data)\n    return extractItem<DeveloperHubApp>(response.data)\n  }\n\n  async update(appUid: string, data: UpdateAppData): Promise<DeveloperHubApp> {\n    const response = await this.http.put<unknown>(`/manifests/${appUid}`, data)\n    return extractItem<DeveloperHubApp>(response.data)\n  }\n\n  async delete(appUid: string): Promise<void> {\n    await this.http.delete(`/manifests/${appUid}`)\n  }\n\n  async install(appUid: string, data: InstallAppData): Promise<AppInstallation> {\n    const response = await this.http.post<unknown>(`/manifests/${appUid}/install`, data)\n    return extractItem<AppInstallation>(response.data)\n  }\n\n  async reinstall(appUid: string, data: ReinstallAppData): Promise<AppInstallation> {\n    const response = await this.http.put<unknown>(`/manifests/${appUid}/reinstall`, data)\n    return extractItem<AppInstallation>(response.data)\n  }\n\n  async authorize(appUid: string, data: AuthorizeAppData): Promise<{ redirect_uri: string }> {\n    const response = await this.http.post<unknown>(`/manifests/${appUid}/authorize`, data)\n    return extractItem<{ redirect_uri: string }>(response.data)\n  }\n\n  async listAuthorized(): Promise<DeveloperHubApp[]> {\n    const response = await this.http.get<unknown>(\"/authorized-apps\")\n    return extractList<DeveloperHubApp>(response.data, \"data\").items\n  }\n\n  listInstallations(\n    appUid: string,\n    options?: ListAppInstallationsOptions,\n  ): AsyncIterable<AppInstallation> {\n    return paginate<AppInstallation>(\n      async (skip, limit) => {\n        const response = await this.http.get<unknown>(`/manifests/${appUid}/installations`, {\n          skip: String(skip),\n          limit: String(limit),\n        })\n        return extractList<AppInstallation>(response.data, \"data\")\n      },\n      { limit: options?.limit },\n    )\n  }\n\n  async listInstallationsAll(\n    appUid: string,\n    options?: ListAppInstallationsOptions,\n  ): Promise<AppInstallation[]> {\n    return collectAll(this.listInstallations(appUid, options))\n  }\n\n  async listRequests(appUid: string): Promise<unknown[]> {\n    const response = await this.http.get<unknown>(`/manifests/${appUid}/requests`)\n    return extractList<unknown>(response.data, \"data\").items\n  }\n}\n","import type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractList } from \"./response.js\"\nimport type { AppAuthorization, ListAuthorizationsOptions } from \"./types.js\"\n\nexport class AuthorizationsClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  async list(appUid: string, options?: ListAuthorizationsOptions): Promise<AppAuthorization[]> {\n    const params: Record<string, string> = {}\n    if (options?.limit) params.limit = String(options.limit)\n    if (options?.skip) params.skip = String(options.skip)\n\n    const response = await this.http.get<unknown>(`/manifests/${appUid}/authorizations`, params)\n    return extractList<AppAuthorization>(response.data, \"data\").items\n  }\n\n  async revokeAll(appUid: string): Promise<void> {\n    await this.http.delete(`/manifests/${appUid}/authorizations`)\n  }\n\n  async revoke(appUid: string, authorizationUid: string): Promise<void> {\n    await this.http.delete(`/manifests/${appUid}/authorizations/${authorizationUid}`)\n  }\n}\n","import { collectAll, paginate } from \"../cma/pagination.js\"\nimport type { ContentstackHttpClient } from \"../http/client.js\"\nimport { ContentstackConfigError } from \"../http/errors.js\"\nimport type { AppsClient } from \"./apps.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type {\n  DeveloperHubApp,\n  DeveloperHubCreateDeploymentData,\n  DeveloperHubListDeploymentsOptions,\n  DisconnectHostingData,\n  HostingDeployment,\n  HostingDeploymentLog,\n  HostingStatus,\n  SetExternalHostingData,\n} from \"./types.js\"\n\nexport class HostingClient {\n  constructor(\n    private readonly http: ContentstackHttpClient,\n    private readonly apps?: AppsClient,\n  ) {}\n\n  private hostingPath(appUid: string): string {\n    return `/manifests/${appUid}/hosting`\n  }\n\n  private deploymentsPath(appUid: string): string {\n    return `${this.hostingPath(appUid)}/deployments`\n  }\n\n  // ── Hosting status ─────────────────────────────────────\n\n  async getStatus(appUid: string): Promise<HostingStatus> {\n    const response = await this.http.get<unknown>(this.hostingPath(appUid))\n    return extractItem<HostingStatus>(response.data)\n  }\n\n  async enable(appUid: string): Promise<void> {\n    await this.http.patch(`${this.hostingPath(appUid)}/enable`, {})\n  }\n\n  async disable(appUid: string): Promise<void> {\n    await this.http.patch(`${this.hostingPath(appUid)}/disable`, {})\n  }\n\n  async disconnect(appUid: string, data?: DisconnectHostingData): Promise<void> {\n    await this.http.patch(`${this.hostingPath(appUid)}/disconnect`, data ?? {})\n  }\n\n  /**\n   * Set custom/external hosting (\"App URL\" in Developer Hub). Updates the manifest's\n   * `hosting.deployment_url` field — distinct from Launch-backed hosting (`enable`, etc.).\n   */\n  async setExternal(appUid: string, data: SetExternalHostingData): Promise<DeveloperHubApp> {\n    if (!this.apps) {\n      throw new ContentstackConfigError(\"HostingClient requires AppsClient for setExternal()\")\n    }\n\n    return this.apps.update(appUid, {\n      hosting: {\n        provider: data.provider ?? \"external\",\n        deployment_url: data.deployment_url,\n      },\n    })\n  }\n\n  async createUploadUrl(appUid: string): Promise<{ upload_uid: string; upload_url: string }> {\n    const response = await this.http.post<unknown>(\n      `${this.hostingPath(appUid)}/signedUploadUrl`,\n      {},\n    )\n    return extractItem<{ upload_uid: string; upload_url: string }>(response.data)\n  }\n\n  async getLatestLiveDeployment(appUid: string): Promise<HostingDeployment> {\n    const response = await this.http.get<unknown>(\n      `${this.hostingPath(appUid)}/latestLiveDeployment`,\n    )\n    return extractItem<HostingDeployment>(response.data)\n  }\n\n  // ── Deployments ────────────────────────────────────────\n\n  listDeployments(\n    appUid: string,\n    options?: DeveloperHubListDeploymentsOptions,\n  ): AsyncIterable<HostingDeployment> {\n    return paginate<HostingDeployment>(\n      async (skip, limit) => {\n        const response = await this.http.get<unknown>(this.deploymentsPath(appUid), {\n          skip: String(skip),\n          limit: String(limit),\n        })\n        return extractList<HostingDeployment>(response.data, \"data\")\n      },\n      { limit: options?.limit },\n    )\n  }\n\n  async listDeploymentsAll(\n    appUid: string,\n    options?: DeveloperHubListDeploymentsOptions,\n  ): Promise<HostingDeployment[]> {\n    return collectAll(this.listDeployments(appUid, options))\n  }\n\n  async getDeployment(appUid: string, deploymentUid: string): Promise<HostingDeployment> {\n    const response = await this.http.get<unknown>(\n      `${this.deploymentsPath(appUid)}/${deploymentUid}`,\n    )\n    return extractItem<HostingDeployment>(response.data)\n  }\n\n  async createDeployment(\n    appUid: string,\n    data: DeveloperHubCreateDeploymentData,\n  ): Promise<HostingDeployment> {\n    const response = await this.http.post<unknown>(this.deploymentsPath(appUid), data)\n    return extractItem<HostingDeployment>(response.data)\n  }\n\n  async getDeploymentLogs(appUid: string, deploymentUid: string): Promise<HostingDeploymentLog[]> {\n    const response = await this.http.get<unknown>(\n      `${this.deploymentsPath(appUid)}/${deploymentUid}/logs`,\n    )\n    return extractList<HostingDeploymentLog>(response.data, \"data\").items\n  }\n\n  async getDeploymentDownloadUrl(\n    appUid: string,\n    deploymentUid: string,\n  ): Promise<{ download_url: string }> {\n    const response = await this.http.post<unknown>(\n      `${this.deploymentsPath(appUid)}/${deploymentUid}/signedDownloadUrl`,\n      {},\n    )\n    return extractItem<{ download_url: string }>(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 { AppInstallation, ListInstallationsOptions, WebhookExecution } from \"./types.js\"\n\nexport class InstallationsClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  // ── CRUD ───────────────────────────────────────────────\n\n  list(options?: ListInstallationsOptions): AsyncIterable<AppInstallation> {\n    return paginate<AppInstallation>(\n      async (skip, limit) => {\n        const params: Record<string, string> = {\n          skip: String(skip),\n          limit: String(limit),\n        }\n        if (options?.app_uids) params.app_uids = options.app_uids.join(\",\")\n        if (options?.installation_uids)\n          params.installation_uids = options.installation_uids.join(\",\")\n        if (options?.target_uids) params.target_uids = options.target_uids.join(\",\")\n\n        const response = await this.http.get<unknown>(\"/installations\", params)\n        return extractList<AppInstallation>(response.data, \"data\")\n      },\n      { limit: options?.limit },\n    )\n  }\n\n  async listAll(options?: ListInstallationsOptions): Promise<AppInstallation[]> {\n    return collectAll(this.list(options))\n  }\n\n  async get(installationUid: string): Promise<AppInstallation> {\n    const response = await this.http.get<unknown>(`/installations/${installationUid}`)\n    return extractItem<AppInstallation>(response.data)\n  }\n\n  async update(installationUid: string, data: Partial<AppInstallation>): Promise<AppInstallation> {\n    const response = await this.http.put<unknown>(`/installations/${installationUid}`, data)\n    return extractItem<AppInstallation>(response.data)\n  }\n\n  async delete(installationUid: string): Promise<void> {\n    await this.http.delete(`/installations/${installationUid}`)\n  }\n\n  // ── Configuration ──────────────────────────────────────\n\n  async getConfiguration(installationUid: string): Promise<Record<string, unknown>> {\n    const response = await this.http.get<unknown>(`/installations/${installationUid}/configuration`)\n    return extractItem<Record<string, unknown>>(response.data)\n  }\n\n  async setConfiguration(\n    installationUid: string,\n    data: Record<string, unknown>,\n  ): Promise<Record<string, unknown>> {\n    const response = await this.http.put<unknown>(\n      `/installations/${installationUid}/configuration`,\n      data,\n    )\n    return extractItem<Record<string, unknown>>(response.data)\n  }\n\n  async getServerConfiguration(installationUid: string): Promise<Record<string, unknown>> {\n    const response = await this.http.get<unknown>(\n      `/installations/${installationUid}/server-configuration`,\n    )\n    return extractItem<Record<string, unknown>>(response.data)\n  }\n\n  async setServerConfiguration(\n    installationUid: string,\n    data: Record<string, unknown>,\n  ): Promise<Record<string, unknown>> {\n    const response = await this.http.put<unknown>(\n      `/installations/${installationUid}/server-configuration`,\n      data,\n    )\n    return extractItem<Record<string, unknown>>(response.data)\n  }\n\n  async getInstallationData(installationUid: string): Promise<Record<string, unknown>> {\n    const response = await this.http.get<unknown>(\n      `/installations/${installationUid}/installationData`,\n    )\n    return extractItem<Record<string, unknown>>(response.data)\n  }\n\n  async getConfigLocation(installationUid: string): Promise<Record<string, unknown>> {\n    const response = await this.http.get<unknown>(\n      `/installations/${installationUid}/locations/configuration`,\n    )\n    return extractItem<Record<string, unknown>>(response.data)\n  }\n\n  // ── View endpoints ─────────────────────────────────────\n\n  async listInstalledApps(): Promise<unknown[]> {\n    const response = await this.http.get<unknown>(\"/installations/view/apps\")\n    return extractList<unknown>(response.data, \"data\").items\n  }\n\n  async listInstalledUsers(): Promise<unknown[]> {\n    const response = await this.http.get<unknown>(\"/installations/view/users\")\n    return extractList<unknown>(response.data, \"data\").items\n  }\n\n  async listInstalledStacks(): Promise<unknown[]> {\n    const response = await this.http.get<unknown>(\"/installations/view/stacks\")\n    return extractList<unknown>(response.data, \"data\").items\n  }\n\n  // ── Webhook executions ─────────────────────────────────\n\n  async listWebhookExecutions(\n    installationUid: string,\n    webhookUid: string,\n  ): Promise<WebhookExecution[]> {\n    const response = await this.http.get<unknown>(\n      `/installations/${installationUid}/webhooks/${webhookUid}/executions`,\n    )\n    return extractList<WebhookExecution>(response.data, \"data\").items\n  }\n\n  async getWebhookExecution(\n    installationUid: string,\n    webhookUid: string,\n    executionUid: string,\n  ): Promise<WebhookExecution> {\n    const response = await this.http.get<unknown>(\n      `/installations/${installationUid}/webhooks/${webhookUid}/executions/${executionUid}`,\n    )\n    return extractItem<WebhookExecution>(response.data)\n  }\n\n  async retryWebhookExecution(\n    installationUid: string,\n    webhookUid: string,\n    executionUid: string,\n  ): Promise<void> {\n    await this.http.post(\n      `/installations/${installationUid}/webhooks/${webhookUid}/executions/${executionUid}/retry`,\n      {},\n    )\n  }\n}\n","import type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type { AppOAuthConfig, OAuthScope, UpdateOAuthConfigData } from \"./types.js\"\n\nexport class OAuthClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  async get(appUid: string): Promise<AppOAuthConfig> {\n    const response = await this.http.get<unknown>(`/manifests/${appUid}/oauth`)\n    return extractItem<AppOAuthConfig>(response.data)\n  }\n\n  async update(appUid: string, data: UpdateOAuthConfigData): Promise<AppOAuthConfig> {\n    const response = await this.http.put<unknown>(`/manifests/${appUid}/oauth`, data)\n    return extractItem<AppOAuthConfig>(response.data)\n  }\n\n  async listScopes(): Promise<OAuthScope[]> {\n    const response = await this.http.get<unknown>(\"/manifests/oauth/scopes\")\n    return extractList<OAuthScope>(response.data, \"data\").items\n  }\n}\n","import type { ContentstackHttpClient } from \"../http/client.js\"\nimport { extractItem, extractList } from \"./response.js\"\nimport type { AppRequest, CreateAppRequestData, ListRequestsOptions } from \"./types.js\"\n\nexport class RequestsClient {\n  constructor(private readonly http: ContentstackHttpClient) {}\n\n  async list(options?: ListRequestsOptions): Promise<AppRequest[]> {\n    const params: Record<string, string> = {}\n    if (options?.limit) params.limit = String(options.limit)\n    if (options?.skip) params.skip = String(options.skip)\n\n    const response = await this.http.get<unknown>(\"/requests\", params)\n    return extractList<AppRequest>(response.data, \"data\").items\n  }\n\n  async create(data: CreateAppRequestData): Promise<AppRequest> {\n    const response = await this.http.post<unknown>(\"/requests\", data)\n    return extractItem<AppRequest>(response.data)\n  }\n\n  async delete(requestUid: string): Promise<void> {\n    await this.http.delete(`/requests/${requestUid}`)\n  }\n}\n","import { exchangeAppToken } from \"../auth/oauth-client.js\"\nimport { ContentstackHttpClient } from \"../http/client.js\"\nimport { ContentstackConfigError } from \"../http/errors.js\"\nimport type { HttpClientConfig } from \"../http/types.js\"\nimport type { ContentstackRegion } from \"../regions/resolver.js\"\nimport { resolveEndpoints } from \"../regions/resolver.js\"\nimport { AppsClient } from \"./apps.js\"\nimport { AuthorizationsClient } from \"./authorizations.js\"\nimport { HostingClient } from \"./hosting.js\"\nimport { InstallationsClient } from \"./installations.js\"\nimport { OAuthClient } from \"./oauth.js\"\nimport { RequestsClient } from \"./requests.js\"\n\nexport type DeveloperHubClientAuth =\n  | { type: \"oauth\"; accessToken: string }\n  | { type: \"authtoken\"; token: string }\n  | { type: \"app-token\"; accessToken: string }\n  | { type: \"app-token\"; clientId: string; clientSecret: string }\n\nexport interface DeveloperHubClientConfig {\n  region: ContentstackRegion\n  organizationUid: string\n  auth: DeveloperHubClientAuth\n  httpOptions?: Partial<HttpClientConfig>\n}\n\nexport interface DeveloperHubClient {\n  apps: AppsClient\n  oauth: OAuthClient\n  authorizations: AuthorizationsClient\n  hosting: HostingClient\n  installations: InstallationsClient\n  requests: RequestsClient\n}\n\nexport function createDeveloperHubClient(config: DeveloperHubClientConfig): DeveloperHubClient {\n  const endpoints = resolveEndpoints(config.region)\n\n  const headers: Record<string, string> = {\n    organization_uid: config.organizationUid,\n  }\n\n  let resolveHeaders: HttpClientConfig[\"resolveHeaders\"]\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    case \"app-token\": {\n      if (\"accessToken\" in config.auth) {\n        headers.authorization = `Bearer ${config.auth.accessToken}`\n        break\n      }\n\n      if (!(\"clientId\" in config.auth) || !(\"clientSecret\" in config.auth)) {\n        throw new ContentstackConfigError(\n          \"app-token auth requires accessToken or clientId + clientSecret\",\n        )\n      }\n\n      const { clientId, clientSecret } = config.auth\n      let cachedAccessToken: string | undefined\n      let tokenPromise: Promise<string> | undefined\n\n      resolveHeaders = async () => {\n        if (cachedAccessToken) {\n          return { authorization: `Bearer ${cachedAccessToken}` }\n        }\n\n        if (!tokenPromise) {\n          tokenPromise = exchangeAppToken(\n            config.region,\n            { clientId, clientSecret },\n            { httpOptions: config.httpOptions },\n          )\n            .then((tokens) => {\n              cachedAccessToken = tokens.accessToken\n              return cachedAccessToken\n            })\n            .finally(() => {\n              tokenPromise = undefined\n            })\n        }\n\n        return { authorization: `Bearer ${await tokenPromise}` }\n      }\n      break\n    }\n  }\n\n  const http = new ContentstackHttpClient({\n    ...config.httpOptions,\n    baseUrl: config.httpOptions?.baseUrl ?? endpoints.developerHub,\n    headers: {\n      ...config.httpOptions?.headers,\n      ...headers,\n    },\n    resolveHeaders,\n  })\n\n  const apps = new AppsClient(http)\n\n  return {\n    apps,\n    oauth: new OAuthClient(http),\n    authorizations: new AuthorizationsClient(http),\n    hosting: new HostingClient(http, apps),\n    installations: new InstallationsClient(http),\n    requests: new RequestsClient(http),\n  }\n}\n"],"mappings":"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","names":[]}