{"version":3,"file":"deployment.cjs","names":[],"sources":["../../../../src/rest/commands/read/deployment.ts"],"sourcesContent":["import type {\n\tDirectusDeployment,\n\tDirectusDeploymentProject,\n\tDirectusDeploymentRun,\n} from '../../../schema/deployment.js';\nimport type { ApplyQueryFields, Query } from '../../../types/index.js';\nimport type { RestCommand } from '../../types.js';\nimport { throwIfEmpty } from '../../utils/index.js';\n\nexport type ReadDeploymentOutput<\n\tSchema,\n\tTQuery extends Query<Schema, Item>,\n\tItem extends object = DirectusDeployment<Schema>,\n> = ApplyQueryFields<Schema, Item, TQuery['fields']>;\n\nexport type ReadDeploymentProjectOutput<\n\tSchema,\n\tTQuery extends Query<Schema, Item>,\n\tItem extends object = DirectusDeploymentProject<Schema>,\n> = ApplyQueryFields<Schema, Item, TQuery['fields']>;\n\nexport type ReadDeploymentRunOutput<\n\tSchema,\n\tTQuery extends Query<Schema, Item>,\n\tItem extends object = DirectusDeploymentRun<Schema>,\n> = ApplyQueryFields<Schema, Item, TQuery['fields']>;\n\nexport interface DeploymentProjectListOutput {\n\tid: string | null; // DB id (null if not selected)\n\texternal_id: string;\n\tname: string;\n\tdeployable: boolean;\n\tframework?: string;\n}\n\nexport interface DeploymentDashboardOutput {\n\tprojects: Array<{\n\t\tid: string;\n\t\texternal_id: string;\n\t\tname: string;\n\t\turl?: string;\n\t\tframework?: string;\n\t\tdeployable: boolean;\n\t\tlatest_deployment?: {\n\t\t\tstatus: 'building' | 'ready' | 'error' | 'canceled';\n\t\t\tcreated_at: string;\n\t\t\tfinished_at?: string;\n\t\t};\n\t}>;\n\tstats: {\n\t\tactive_deployments: number;\n\t\tsuccessful_builds: number;\n\t\tfailed_builds: number;\n\t};\n}\n\nexport interface DeploymentRunStatsOutput {\n\ttotal_deployments: number;\n\taverage_build_time: number | null;\n\tfailed_builds: number;\n\tsuccessful_builds: number;\n}\n\nexport interface DeploymentRunsOutput {\n\tid: string;\n\tproject: string;\n\texternal_id: string;\n\tname?: string;\n\ttarget: string;\n\tstatus: 'building' | 'ready' | 'error' | 'canceled';\n\turl?: string;\n\tstarted_at: string | null;\n\tcompleted_at: string | null;\n\tdate_created: string;\n\tuser_created: Record<string, any> | string | null;\n}\n\n/**\n * List all configured deployment providers.\n * @param query The query parameters\n * @returns An array of deployment objects.\n */\nexport const readDeployments =\n\t<Schema, const TQuery extends Query<Schema, DirectusDeployment<Schema>>>(\n\t\tquery?: TQuery,\n\t): RestCommand<ReadDeploymentOutput<Schema, TQuery>[], Schema> =>\n\t() => ({\n\t\tpath: `/deployments`,\n\t\tparams: query ?? {},\n\t\tmethod: 'GET',\n\t});\n\n/**\n * Get a deployment provider by type.\n * @param provider The provider type (e.g. 'vercel')\n * @param query The query parameters\n * @returns The deployment object.\n * @throws Will throw if provider is empty\n */\nexport const readDeployment =\n\t<Schema, const TQuery extends Query<Schema, DirectusDeployment<Schema>>>(\n\t\tprovider: string,\n\t\tquery?: TQuery,\n\t): RestCommand<ReadDeploymentOutput<Schema, TQuery>, Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}`,\n\t\t\tparams: query ?? {},\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n\n/**\n * Get deployment dashboard for a provider.\n * Returns selected projects with latest deployment status and stats.\n * @param provider The provider type (e.g. 'vercel')\n * @returns Dashboard data with projects and stats.\n * @throws Will throw if provider is empty\n */\nexport const readDeploymentDashboard =\n\t<Schema>(provider: string, query?: { range?: string }): RestCommand<DeploymentDashboardOutput, Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}/dashboard`,\n\t\t\tparams: query ?? {},\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n\n/**\n * List projects for a deployment provider.\n * Returns merged DB + provider info (id is null if project not selected).\n * @param provider The provider type (e.g. 'vercel')\n * @returns An array of project objects with selection status.\n * @throws Will throw if provider is empty\n */\nexport const readDeploymentProjects =\n\t<Schema>(provider: string): RestCommand<DeploymentProjectListOutput[], Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}/projects`,\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n\n/**\n * Get a specific project from a deployment provider.\n * @param provider The provider type (e.g. 'vercel')\n * @param projectId The project ID\n * @param query The query parameters\n * @returns The project object.\n * @throws Will throw if provider or projectId is empty\n */\nexport const readDeploymentProject =\n\t<Schema, const TQuery extends Query<Schema, DirectusDeploymentProject<Schema>>>(\n\t\tprovider: string,\n\t\tprojectId: string,\n\t\tquery?: TQuery,\n\t): RestCommand<ReadDeploymentProjectOutput<Schema, TQuery>, Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\t\tthrowIfEmpty(projectId, 'Project ID cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}/projects/${projectId}`,\n\t\t\tparams: query ?? {},\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n\n/**\n * List deployment runs for a project.\n * @param provider The provider type (e.g. 'vercel')\n * @param projectId The project ID\n * @param query Optional query parameters (search, limit, offset, meta)\n * @returns Deployment runs with optional meta for pagination.\n * @throws Will throw if provider or projectId is empty\n */\nexport const readDeploymentRuns =\n\t<Schema>(\n\t\tprovider: string,\n\t\tprojectId: string,\n\t\tquery?: { search?: string; limit?: number; offset?: number; meta?: string },\n\t): RestCommand<DeploymentRunsOutput[], Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\t\tthrowIfEmpty(projectId, 'Project ID cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}/projects/${projectId}/runs`,\n\t\t\tparams: query ?? {},\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n\n/**\n * Get a specific deployment run with logs.\n * @param provider The provider type (e.g. 'vercel')\n * @param runId The run ID\n * @param query The query parameters (supports 'since' for incremental logs)\n * @returns The deployment run object with details and logs.\n * @throws Will throw if provider or runId is empty\n */\nexport const readDeploymentRun =\n\t<Schema, const TQuery extends Query<Schema, DirectusDeploymentRun<Schema>>>(\n\t\tprovider: string,\n\t\trunId: string,\n\t\tquery?: TQuery,\n\t): RestCommand<ReadDeploymentRunOutput<Schema, TQuery>, Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\t\tthrowIfEmpty(runId, 'Run ID cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}/runs/${runId}`,\n\t\t\tparams: query ?? {},\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n\n/**\n * Get stats for a project's deployment runs.\n * @param provider The provider type (e.g. 'vercel')\n * @param projectId The project ID\n * @param query Optional query parameters (range for time window, e.g. '24h', '7d', '30d')\n * @returns Stats with total deployments and average build time.\n * @throws Will throw if provider or projectId is empty\n */\nexport const readDeploymentRunStats =\n\t<Schema>(\n\t\tprovider: string,\n\t\tprojectId: string,\n\t\tquery?: { range?: string },\n\t): RestCommand<DeploymentRunStatsOutput, Schema> =>\n\t() => {\n\t\tthrowIfEmpty(provider, 'Provider cannot be empty');\n\t\tthrowIfEmpty(projectId, 'Project ID cannot be empty');\n\n\t\treturn {\n\t\t\tpath: `/deployments/${provider}/projects/${projectId}/runs/stats`,\n\t\t\tparams: query ?? {},\n\t\t\tmethod: 'GET',\n\t\t};\n\t};\n"],"mappings":"kDAkFa,EAEX,QAEM,CACN,KAAM,eACN,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR,EASW,GAEX,EACA,SAGA,EAAA,aAAa,EAAU,2BAA2B,CAE3C,CACN,KAAM,gBAAgB,IACtB,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR,EAUU,GACH,EAAkB,SAE1B,EAAA,aAAa,EAAU,2BAA2B,CAE3C,CACN,KAAM,gBAAgB,EAAS,YAC/B,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR,EAUU,EACH,QAER,EAAA,aAAa,EAAU,2BAA2B,CAE3C,CACN,KAAM,gBAAgB,EAAS,WAC/B,OAAQ,MACR,EAWU,GAEX,EACA,EACA,SAGA,EAAA,aAAa,EAAU,2BAA2B,CAClD,EAAA,aAAa,EAAW,6BAA6B,CAE9C,CACN,KAAM,gBAAgB,EAAS,YAAY,IAC3C,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR,EAWU,GAEX,EACA,EACA,SAGA,EAAA,aAAa,EAAU,2BAA2B,CAClD,EAAA,aAAa,EAAW,6BAA6B,CAE9C,CACN,KAAM,gBAAgB,EAAS,YAAY,EAAU,OACrD,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR,EAWU,GAEX,EACA,EACA,SAGA,EAAA,aAAa,EAAU,2BAA2B,CAClD,EAAA,aAAa,EAAO,yBAAyB,CAEtC,CACN,KAAM,gBAAgB,EAAS,QAAQ,IACvC,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR,EAWU,GAEX,EACA,EACA,SAGA,EAAA,aAAa,EAAU,2BAA2B,CAClD,EAAA,aAAa,EAAW,6BAA6B,CAE9C,CACN,KAAM,gBAAgB,EAAS,YAAY,EAAU,aACrD,OAAQ,GAAS,EAAE,CACnB,OAAQ,MACR"}