@cloudflare/containers-shared 0.16.0 → 0.16.1

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/client/core/ApiError.ts","../src/client/core/CancelablePromise.ts","../src/client/core/OpenAPI.ts","../src/client/core/request.ts","../src/client/models/ApplicationAffinityColocation.ts","../src/client/models/ApplicationAffinityHardwareGeneration.ts","../src/client/models/ApplicationMutationError.ts","../src/client/models/ApplicationRollout.ts","../src/client/models/AssignIPv4.ts","../src/client/models/AssignIPv6.ts","../src/client/models/BadRequestWithCodeError.ts","../src/client/models/ContainerNetworkMode.ts","../src/client/models/ContainerImagePreparationStatus.ts","../src/client/models/CreateApplicationRolloutRequest.ts","../src/client/models/DeploymentCheckKind.ts","../src/client/models/DeploymentCheckType.ts","../src/client/models/DeploymentMutationError.ts","../src/client/models/DeploymentNotFoundError.ts","../src/client/models/DeploymentPlacementState.ts","../src/client/models/DeploymentQueuedReason.ts","../src/client/models/DeploymentSchedulingState.ts","../src/client/models/DeploymentType.ts","../src/client/models/DurableObjectStatusHealth.ts","../src/client/models/EventName.ts","../src/client/models/EventType.ts","../src/client/models/ExternalRegistryKind.ts","../src/client/models/HTTPMethod.ts","../src/client/models/ImageRegistryAlreadyExistsError.ts","../src/client/models/ImageRegistryIsPublic.ts","../src/client/models/ImageRegistryNotAllowedError.ts","../src/client/models/ImageRegistryNotFoundError.ts","../src/client/models/ImageRegistryPermissions.ts","../src/client/models/ImageRegistryProtocolAlreadyExists.ts","../src/client/models/ImageRegistryProtocolIsReferencedError.ts","../src/client/models/ImageRegistryProtocolNotFound.ts","../src/client/models/InstanceType.ts","../src/client/models/IPType.ts","../src/client/models/JobStatusHealth.ts","../src/client/models/NetworkMode.ts","../src/client/models/NodeGroup.ts","../src/client/models/PlacementStatusHealth.ts","../src/client/models/ProvisionerConfiguration.ts","../src/client/models/RolloutStep.ts","../src/client/models/SchedulingPolicy.ts","../src/client/models/SecretAccessType.ts","../src/client/models/SecretNameAlreadyExists.ts","../src/client/models/SecretNotFound.ts","../src/client/models/SSHPublicKeyNotFoundError.ts","../src/client/models/UpdateApplicationRolloutRequest.ts","../src/client/services/AccountService.ts","../src/client/services/ApplicationsService.ts","../src/client/services/ContainerImagePreparationsService.ts","../src/client/services/DeploymentsService.ts","../src/client/services/ImageRegistriesService.ts","../src/client/services/IPsService.ts","../src/client/services/JobsService.ts","../src/client/services/PlacementsService.ts","../src/client/services/RolloutsService.ts","../src/client/services/SecretsService.ts","../src/client/services/SshPublicKeysService.ts","../src/context.ts","../src/registry.ts","../src/knobs.ts","../src/login.ts","../src/inspect.ts","../src/utils.ts","../src/images.ts","../src/limits.ts","../src/build.ts","../src/diff.ts","../src/object.ts","../src/spinner.ts","../src/deploy.ts"],"names":["request","resolve","process","headers","fetchResult","ApplicationAffinityColocation","ApplicationAffinityHardwareGeneration","ApplicationMutationError","ApplicationRollout","kind","strategy","status","AssignIPv4","AssignIPv6","BadRequestWithCodeError","error","ContainerNetworkMode","ContainerImagePreparationStatus","CreateApplicationRolloutRequest","step_percentage","DeploymentCheckKind","DeploymentCheckType","DeploymentMutationError","DeploymentNotFoundError","DeploymentPlacementState","DeploymentQueuedReason","DeploymentSchedulingState","DeploymentType","DurableObjectStatusHealth","EventName","EventType","ExternalRegistryKind","HTTPMethod","ImageRegistryAlreadyExistsError","ImageRegistryIsPublic","ImageRegistryNotAllowedError","ImageRegistryNotFoundError","ImageRegistryPermissions","ImageRegistryProtocolAlreadyExists","ImageRegistryProtocolIsReferencedError","ImageRegistryProtocolNotFound","InstanceType","IPType","JobStatusHealth","NetworkMode","NodeGroup","PlacementStatusHealth","ProvisionerConfiguration","type","RolloutStep","SchedulingPolicy","SecretAccessType","SecretNameAlreadyExists","SecretNotFound","SSHPublicKeyNotFoundError","UpdateApplicationRolloutRequest","action","spawn","UserError","logger","remoteDigest","existsSync","targetDurableObject","log","green"],"mappings":"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","file":"index.mjs","sourcesContent":["/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from \"./ApiRequestOptions\";\nimport type { ApiResult } from \"./ApiResult\";\n\nexport class ApiError extends Error {\n\tpublic readonly url: string;\n\tpublic readonly status: number;\n\tpublic readonly statusText: string;\n\tpublic readonly body: any;\n\tpublic readonly request: ApiRequestOptions;\n\n\tconstructor(\n\t\trequest: ApiRequestOptions,\n\t\tresponse: ApiResult,\n\t\tmessage: string\n\t) {\n\t\tsuper(message);\n\n\t\tthis.name = \"ApiError\";\n\t\tthis.url = response.url;\n\t\tthis.status = response.status;\n\t\tthis.statusText = response.statusText;\n\t\tthis.body = response.body;\n\t\tthis.request = request;\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport class CancelError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"CancelError\";\n\t}\n\n\tpublic get isCancelled(): boolean {\n\t\treturn true;\n\t}\n}\n\nexport interface OnCancel {\n\treadonly isResolved: boolean;\n\treadonly isRejected: boolean;\n\treadonly isCancelled: boolean;\n\n\t(cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise<T> implements Promise<T> {\n\t#isResolved: boolean;\n\t#isRejected: boolean;\n\t#isCancelled: boolean;\n\treadonly #cancelHandlers: (() => void)[];\n\treadonly #promise: Promise<T>;\n\t#resolve?: (value: T | PromiseLike<T>) => void;\n\t#reject?: (reason?: any) => void;\n\n\tconstructor(\n\t\texecutor: (\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\n\t\t\treject: (reason?: any) => void,\n\t\t\tonCancel: OnCancel\n\t\t) => void\n\t) {\n\t\tthis.#isResolved = false;\n\t\tthis.#isRejected = false;\n\t\tthis.#isCancelled = false;\n\t\tthis.#cancelHandlers = [];\n\t\tthis.#promise = new Promise<T>((resolve, reject) => {\n\t\t\tthis.#resolve = resolve;\n\t\t\tthis.#reject = reject;\n\n\t\t\tconst onResolve = (value: T | PromiseLike<T>): void => {\n\t\t\t\tif (this.#isResolved || this.#isRejected || this.#isCancelled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#isResolved = true;\n\t\t\t\tthis.#resolve?.(value);\n\t\t\t};\n\n\t\t\tconst onReject = (reason?: any): void => {\n\t\t\t\tif (this.#isResolved || this.#isRejected || this.#isCancelled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#isRejected = true;\n\t\t\t\tthis.#reject?.(reason);\n\t\t\t};\n\n\t\t\tconst onCancel = (cancelHandler: () => void): void => {\n\t\t\t\tif (this.#isResolved || this.#isRejected || this.#isCancelled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#cancelHandlers.push(cancelHandler);\n\t\t\t};\n\n\t\t\tObject.defineProperty(onCancel, \"isResolved\", {\n\t\t\t\tget: (): boolean => this.#isResolved,\n\t\t\t});\n\n\t\t\tObject.defineProperty(onCancel, \"isRejected\", {\n\t\t\t\tget: (): boolean => this.#isRejected,\n\t\t\t});\n\n\t\t\tObject.defineProperty(onCancel, \"isCancelled\", {\n\t\t\t\tget: (): boolean => this.#isCancelled,\n\t\t\t});\n\n\t\t\treturn executor(onResolve, onReject, onCancel as OnCancel);\n\t\t});\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn \"Cancellable Promise\";\n\t}\n\n\tpublic then<TResult1 = T, TResult2 = never>(\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n\t): Promise<TResult1 | TResult2> {\n\t\treturn this.#promise.then(onFulfilled, onRejected);\n\t}\n\n\tpublic catch<TResult = never>(\n\t\tonRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n\t): Promise<T | TResult> {\n\t\treturn this.#promise.catch(onRejected);\n\t}\n\n\tpublic finally(onFinally?: (() => void) | null): Promise<T> {\n\t\treturn this.#promise.finally(onFinally);\n\t}\n\n\tpublic cancel(): void {\n\t\tif (this.#isResolved || this.#isRejected || this.#isCancelled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#isCancelled = true;\n\t\tif (this.#cancelHandlers.length) {\n\t\t\ttry {\n\t\t\t\tfor (const cancelHandler of this.#cancelHandlers) {\n\t\t\t\t\tcancelHandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(\"Cancellation threw an error\", error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthis.#cancelHandlers.length = 0;\n\t\tthis.#reject?.(new CancelError(\"Request aborted\"));\n\t}\n\n\tpublic get isCancelled(): boolean {\n\t\treturn this.#isCancelled;\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\nimport type { WranglerLogger } from \"../../types\";\nimport type { ApiRequestOptions } from \"./ApiRequestOptions\";\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\ntype Headers = Record<string, string>;\n\nexport type OpenAPIConfig = {\n\tBASE: string;\n\tVERSION: string;\n\tWITH_CREDENTIALS: boolean;\n\tCREDENTIALS: \"include\" | \"omit\" | \"same-origin\";\n\tTOKEN?: string | Resolver<string>;\n\tUSERNAME?: string | Resolver<string>;\n\tPASSWORD?: string | Resolver<string>;\n\tHEADERS?: Headers | Resolver<Headers>;\n\tENCODE_PATH?: (path: string) => string;\n\tLOGGER?: WranglerLogger | undefined;\n};\n\nexport const OpenAPI: OpenAPIConfig = {\n\tBASE: \"\",\n\tVERSION: \"1.0.0\",\n\tWITH_CREDENTIALS: false,\n\tCREDENTIALS: \"include\",\n\tTOKEN: undefined,\n\tUSERNAME: undefined,\n\tPASSWORD: undefined,\n\tHEADERS: undefined,\n\tENCODE_PATH: undefined,\n\tLOGGER: undefined,\n};\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { ApiError } from \"./ApiError\";\nimport { CancelablePromise } from \"./CancelablePromise\";\nimport { type OpenAPIConfig } from \"./OpenAPI\";\nimport type { ApiRequestOptions } from \"./ApiRequestOptions\";\nimport type { ApiResult } from \"./ApiResult\";\nimport type { OnCancel } from \"./CancelablePromise\";\nimport type { PaginatedResult, ResultInfo } from \"./PaginatedResult\";\n\ntype FetchResponseInfo = {\n\tcode: number;\n\tmessage: string;\n};\n\ntype FetchResult<ResponseType = unknown> = {\n\tsuccess: boolean;\n\tresult?: ResponseType;\n\terrors?: FetchResponseInfo[];\n\tmessages?: FetchResponseInfo[];\n\tresult_info?: ResultInfo;\n};\n\ntype ErrorResponse = {\n\terror: string;\n};\n\nconst isDefined = <T>(\n\tvalue: T | null | undefined\n): value is Exclude<T, null | undefined> => {\n\treturn value !== undefined && value !== null;\n};\n\nconst isString = (value: any): value is string => {\n\treturn typeof value === \"string\";\n};\n\nconst isStringWithValue = (value: any): value is string => {\n\treturn isString(value) && value !== \"\";\n};\n\nconst isBlob = (value: any): value is Blob => {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\ttypeof value.type === \"string\" &&\n\t\ttypeof value.stream === \"function\" &&\n\t\ttypeof value.arrayBuffer === \"function\" &&\n\t\ttypeof value.constructor === \"function\" &&\n\t\ttypeof value.constructor.name === \"string\" &&\n\t\t/^(Blob|File)$/.test(value.constructor.name) &&\n\t\t/^(Blob|File)$/.test(value[Symbol.toStringTag])\n\t);\n};\n\nconst isErrorResponse = (value: unknown): value is ErrorResponse => {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"error\" in value &&\n\t\ttypeof value.error === \"string\"\n\t);\n};\n\nconst base64 = (str: string): string => {\n\ttry {\n\t\treturn btoa(str);\n\t} catch (err) {\n\t\treturn Buffer.from(str).toString(\"base64\");\n\t}\n};\n\nconst getQueryString = (params: Record<string, any>): string => {\n\tconst qs: string[] = [];\n\n\tconst append = (key: string, value: any) => {\n\t\tqs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n\t};\n\n\tconst process = (key: string, value: any) => {\n\t\tif (isDefined(value)) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tvalue.forEach((v) => {\n\t\t\t\t\tprocess(key, v);\n\t\t\t\t});\n\t\t\t} else if (typeof value === \"object\") {\n\t\t\t\tObject.entries(value).forEach(([k, v]) => {\n\t\t\t\t\tprocess(`${key}[${k}]`, v);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tappend(key, value);\n\t\t\t}\n\t\t}\n\t};\n\n\tObject.entries(params).forEach(([key, value]) => {\n\t\tprocess(key, value);\n\t});\n\n\tif (qs.length > 0) {\n\t\treturn `?${qs.join(\"&\")}`;\n\t}\n\n\treturn \"\";\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n\tconst encoder = config.ENCODE_PATH || encodeURI;\n\n\tconst path = options.url\n\t\t.replace(\"{api-version}\", config.VERSION)\n\t\t.replace(/{(.*?)}/g, (substring: string, group: string) => {\n\t\t\tif (options.path?.hasOwnProperty(group)) {\n\t\t\t\treturn encoder(String(options.path[group]));\n\t\t\t}\n\t\t\treturn substring;\n\t\t});\n\n\tconst url = `${config.BASE}${path}`;\n\tif (options.query) {\n\t\treturn `${url}${getQueryString(options.query)}`;\n\t}\n\treturn url;\n};\n\nconst getFormData = (options: ApiRequestOptions): FormData | undefined => {\n\tif (options.formData) {\n\t\tconst formData = new FormData();\n\n\t\tconst process = async (key: string, value: any) => {\n\t\t\tif (isString(value)) {\n\t\t\t\tformData.append(key, value);\n\t\t\t} else {\n\t\t\t\tformData.append(key, JSON.stringify(value));\n\t\t\t}\n\t\t};\n\n\t\tObject.entries(options.formData)\n\t\t\t.filter(([_, value]) => isDefined(value))\n\t\t\t.forEach(([key, value]) => {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tvalue.forEach((v) => process(key, v));\n\t\t\t\t} else {\n\t\t\t\t\tprocess(key, value);\n\t\t\t\t}\n\t\t\t});\n\n\t\treturn formData;\n\t}\n\treturn undefined;\n};\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\n\nconst resolve = async <T>(\n\toptions: ApiRequestOptions,\n\tresolver?: T | Resolver<T>\n): Promise<T | undefined> => {\n\tif (typeof resolver === \"function\") {\n\t\treturn (resolver as Resolver<T>)(options);\n\t}\n\treturn resolver;\n};\n\nconst getHeaders = async (\n\tconfig: OpenAPIConfig,\n\toptions: ApiRequestOptions\n): Promise<Headers> => {\n\tconst token = await resolve(options, config.TOKEN);\n\tconst username = await resolve(options, config.USERNAME);\n\tconst password = await resolve(options, config.PASSWORD);\n\tconst additionalHeaders = await resolve(options, config.HEADERS);\n\n\tconst headers = Object.entries({\n\t\tAccept: \"application/json\",\n\t\t...additionalHeaders,\n\t\t...options.headers,\n\t})\n\t\t.filter(([_, value]) => isDefined(value))\n\t\t.reduce(\n\t\t\t(headers, [key, value]) => ({\n\t\t\t\t...headers,\n\t\t\t\t[key]: String(value),\n\t\t\t}),\n\t\t\t{} as Record<string, string>\n\t\t);\n\n\tif (isStringWithValue(token)) {\n\t\theaders[\"Authorization\"] = `Bearer ${token}`;\n\t}\n\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\n\t\tconst credentials = base64(`${username}:${password}`);\n\t\theaders[\"Authorization\"] = `Basic ${credentials}`;\n\t}\n\n\tif (options.body) {\n\t\tif (options.mediaType) {\n\t\t\theaders[\"Content-Type\"] = options.mediaType;\n\t\t} else if (isBlob(options.body)) {\n\t\t\theaders[\"Content-Type\"] = options.body.type || \"application/octet-stream\";\n\t\t} else if (isString(options.body)) {\n\t\t\theaders[\"Content-Type\"] = \"text/plain\";\n\t\t} else {\n\t\t\theaders[\"Content-Type\"] = \"application/json\";\n\t\t}\n\t}\n\n\treturn new Headers(headers);\n};\n\nconst getRequestBody = (options: ApiRequestOptions): any => {\n\tif (options.body !== undefined) {\n\t\tif (options.mediaType?.includes(\"/json\")) {\n\t\t\treturn JSON.stringify(options.body);\n\t\t} else if (isString(options.body) || isBlob(options.body)) {\n\t\t\treturn options.body;\n\t\t} else {\n\t\t\treturn JSON.stringify(options.body);\n\t\t}\n\t}\n\treturn undefined;\n};\n\nconst isResponseSchemaV4 = (\n\tconfig: OpenAPIConfig,\n\t_options: ApiRequestOptions\n): boolean => {\n\treturn config.BASE.endsWith(\"/containers\");\n};\n\nconst parseResponseSchemaV4 = <T>(\n\turl: string,\n\tresponse: Response,\n\tresponseHeader: string | undefined,\n\tresponseBody: any\n): ApiResult => {\n\tconst fetchResult = (\n\t\ttypeof responseBody === \"object\" ? responseBody : JSON.parse(responseBody)\n\t) as FetchResult<T>;\n\tconst ok = response.ok && fetchResult.success;\n\tlet result: any;\n\tif (ok) {\n\t\tif (fetchResult.result !== undefined) {\n\t\t\tresult = fetchResult.result;\n\t\t} else {\n\t\t\tresult = {};\n\t\t}\n\t} else if (isErrorResponse(fetchResult)) {\n\t\tresult = fetchResult;\n\t} else {\n\t\tresult = { error: fetchResult.errors?.[0]?.message };\n\t}\n\treturn {\n\t\turl,\n\t\tok,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\tbody: responseHeader ?? result,\n\t};\n};\n\nexport const sendRequest = async (\n\tconfig: OpenAPIConfig,\n\toptions: ApiRequestOptions,\n\turl: string,\n\tbody: any,\n\tformData: FormData | undefined,\n\theaders: Headers,\n\tonCancel: OnCancel\n): Promise<Response> => {\n\tconst controller = new AbortController();\n\n\tconst request: RequestInit = {\n\t\theaders,\n\t\tbody: body ?? formData,\n\t\tmethod: options.method,\n\t\tsignal: controller.signal,\n\t};\n\n\tif (config.WITH_CREDENTIALS) {\n\t\t// :(\n\t\t// The vite-plugin is attempting to typecheck everything with worker types, which does not support request.credentials\n\t\t// Also note this is always set to \"omit\".\n\t\t// @ts-ignore -- request.credentials not in Workers types\n\t\trequest.credentials = config.CREDENTIALS;\n\t}\n\n\tonCancel(() => controller.abort());\n\n\treturn await fetch(url, request);\n};\n\nconst getResponseHeader = (\n\tresponse: Response,\n\tresponseHeader?: string\n): string | undefined => {\n\tif (responseHeader) {\n\t\tconst content = response.headers.get(responseHeader);\n\t\tif (isString(content)) {\n\t\t\treturn content;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nconst getResponseBody = async (response: Response): Promise<any> => {\n\tif (response.status !== 204) {\n\t\ttry {\n\t\t\tconst contentType = response.headers.get(\"Content-Type\");\n\t\t\tif (contentType) {\n\t\t\t\tconst jsonTypes = [\"application/json\", \"application/problem+json\"];\n\t\t\t\tconst isJSON = jsonTypes.some((type) =>\n\t\t\t\t\tcontentType.toLowerCase().startsWith(type)\n\t\t\t\t);\n\t\t\t\tif (isJSON) {\n\t\t\t\t\treturn await response.json();\n\t\t\t\t} else {\n\t\t\t\t\treturn await response.text();\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\treturn undefined;\n};\n\nconst catchErrorCodes = (\n\toptions: ApiRequestOptions,\n\tresult: ApiResult\n): void => {\n\tconst errors: Record<number, string> = {\n\t\t400: \"Bad Request\",\n\t\t401: \"Unauthorized\",\n\t\t403: \"Forbidden\",\n\t\t404: \"Not Found\",\n\t\t500: \"Internal Server Error\",\n\t\t502: \"Bad Gateway\",\n\t\t503: \"Service Unavailable\",\n\t\t...options.errors,\n\t};\n\n\tconst error = errors[result.status];\n\tif (error) {\n\t\tthrow new ApiError(options, result, error);\n\t}\n\n\tif (!result.ok) {\n\t\tthrow new ApiError(options, result, \"Generic Error\");\n\t}\n};\n\ntype ExecuteRequestResult = {\n\turl: string;\n\tresponse: Response;\n\tresponseBody: any;\n\tresponseHeader: string | undefined;\n};\n\n/**\n * Shared HTTP execution: builds URL, headers, body, sends the request,\n * and returns the raw response components for further processing.\n * Returns null if the request was cancelled before sending.\n */\nconst executeRequest = async (\n\tconfig: OpenAPIConfig,\n\toptions: ApiRequestOptions,\n\tonCancel: OnCancel\n): Promise<ExecuteRequestResult | null> => {\n\tconst url = getUrl(config, options);\n\tconst formData = getFormData(options);\n\tconst body = getRequestBody(options);\n\tconst headers = await getHeaders(config, options);\n\tdebugLogRequest(config, url, headers, formData ?? body ?? {});\n\n\tif (onCancel.isCancelled) {\n\t\treturn null;\n\t}\n\n\tconst response = await sendRequest(\n\t\tconfig,\n\t\toptions,\n\t\turl,\n\t\tbody,\n\t\tformData,\n\t\theaders,\n\t\tonCancel\n\t);\n\tconst responseBody = await getResponseBody(response);\n\tconst responseHeader = getResponseHeader(response, options.responseHeader);\n\n\treturn { url, response, responseBody, responseHeader };\n};\n\n/**\n * Build an ApiResult from the raw response, handling V4 schema parsing.\n */\nconst buildApiResult = (\n\tconfig: OpenAPIConfig,\n\toptions: ApiRequestOptions,\n\treq: ExecuteRequestResult\n): ApiResult => {\n\tif (isResponseSchemaV4(config, options)) {\n\t\treturn parseResponseSchemaV4(\n\t\t\treq.url,\n\t\t\treq.response,\n\t\t\treq.responseHeader,\n\t\t\treq.responseBody\n\t\t);\n\t}\n\n\treturn {\n\t\turl: req.url,\n\t\tok: req.response.ok,\n\t\tstatus: req.response.status,\n\t\tstatusText: req.response.statusText,\n\t\tbody: req.responseHeader ?? req.responseBody,\n\t};\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise<T>\n * @throws ApiError\n */\nexport const request = <T>(\n\tconfig: OpenAPIConfig,\n\toptions: ApiRequestOptions\n): CancelablePromise<T> => {\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\n\t\ttry {\n\t\t\tconst req = await executeRequest(config, options, onCancel);\n\t\t\tif (!req) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst result = buildApiResult(config, options, req);\n\t\t\tdebugLogResponse(config, result);\n\t\t\tcatchErrorCodes(options, result);\n\t\t\tresolve(result.body);\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n};\n\n/**\n * Request method that preserves pagination info from V4 responses\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise<PaginatedResult<T>>\n * @throws ApiError\n */\nexport const requestPaginated = <T>(\n\tconfig: OpenAPIConfig,\n\toptions: ApiRequestOptions\n): CancelablePromise<PaginatedResult<T>> => {\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\n\t\ttry {\n\t\t\tconst req = await executeRequest(config, options, onCancel);\n\t\t\tif (!req) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst result = buildApiResult(config, options, req);\n\t\t\tdebugLogResponse(config, result);\n\t\t\tcatchErrorCodes(options, result);\n\n\t\t\t// Extract result_info from the raw V4 response body for pagination\n\t\t\tlet resultInfo: ResultInfo | undefined;\n\t\t\tif (isResponseSchemaV4(config, options)) {\n\t\t\t\tconst fetchResult = (\n\t\t\t\t\ttypeof req.responseBody === \"object\"\n\t\t\t\t\t\t? req.responseBody\n\t\t\t\t\t\t: JSON.parse(req.responseBody)\n\t\t\t\t) as FetchResult<T>;\n\t\t\t\tresultInfo = fetchResult.result_info;\n\t\t\t}\n\n\t\t\tresolve({\n\t\t\t\tdata: result.body as T,\n\t\t\t\tresultInfo,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n};\n\nconst debugLogRequest = async (\n\tconfig: OpenAPIConfig,\n\turl: string,\n\theaders: Headers,\n\tbody: FormData | unknown\n) => {\n\tconfig.LOGGER?.debug(`-- START CF API REQUEST: ${url}`);\n\tconst logHeaders = new Headers(headers);\n\tlogHeaders.delete(\"Authorization\");\n\tconfig.LOGGER?.debugWithSanitization(\n\t\t\"HEADERS:\",\n\t\tJSON.stringify(logHeaders, null, 2)\n\t);\n\tconfig.LOGGER?.debugWithSanitization(\n\t\t\"BODY:\",\n\t\tJSON.stringify(\n\t\t\tbody instanceof FormData ? await new Response(body).text() : body,\n\t\t\tnull,\n\t\t\t2\n\t\t)\n\t);\n\tconfig.LOGGER?.debug(\"-- END CF API REQUEST\");\n};\n\nconst debugLogResponse = (config: OpenAPIConfig, response: ApiResult) => {\n\tconfig.LOGGER?.debug(\n\t\t\"-- START CF API RESPONSE:\",\n\t\tresponse.statusText,\n\t\tresponse.status\n\t);\n\n\tconfig.LOGGER?.debugWithSanitization(\"RESPONSE:\", response.body);\n\tconfig.LOGGER?.debug(\"-- END CF API RESPONSE\");\n};\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Colocation affinity is designed so schedulers try to place application instances all in the same way. Colocation is best-effort depending on available resources. If there is some leftover set of instances\n * that can't be placed together, the scheduler will try to place them somewhere else.\n *\n */\nexport enum ApplicationAffinityColocation {\n\tDATACENTER = \"datacenter\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * To the extend possible, prefer nodes with specified characteristics when placing application instances.\n *\n */\nexport enum ApplicationAffinityHardwareGeneration {\n\tHIGHEST_OVERALL_PERFORMANCE = \"highest-overall-performance\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Error enums that can be returned when there has been an error with mutating the applications resource\n */\nexport enum ApplicationMutationError {\n\tIMAGE_REGISTRY_RETURNED_ERROR = \"IMAGE_REGISTRY_RETURNED_ERROR\",\n\tIMAGE_REGISTRY_DOESNT_CONTAIN_IMAGE = \"IMAGE_REGISTRY_DOESNT_CONTAIN_IMAGE\",\n\tVALIDATE_INPUT = \"VALIDATE_INPUT\",\n\tSURPASSED_BASE_LIMITS = \"SURPASSED_BASE_LIMITS\",\n\tSURPASSED_TOTAL_LIMITS = \"SURPASSED_TOTAL_LIMITS\",\n\tLOCATION_NOT_ALLOWED = \"LOCATION_NOT_ALLOWED\",\n\tLOCATION_SURPASSED_BASE_LIMITS = \"LOCATION_SURPASSED_BASE_LIMITS\",\n\tIMAGE_REGISTRY_NOT_CONFIGURED = \"IMAGE_REGISTRY_NOT_CONFIGURED\",\n\tJOB_CREATE_NOT_ALLOWED = \"JOB_CREATE_NOT_ALLOWED\",\n\tDURABLE_OBJECT_NOT_FOUND = \"DURABLE_OBJECT_NOT_FOUND\",\n\tDURABLE_OBJECT_NOT_CONTAINER_ENABLED = \"DURABLE_OBJECT_NOT_CONTAINER_ENABLED\",\n\tDURABLE_OBJECT_ALREADY_HAS_APPLICATION = \"DURABLE_OBJECT_ALREADY_HAS_APPLICATION\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { ApplicationHealth } from \"./ApplicationHealth\";\nimport type { ApplicationRolloutProgress } from \"./ApplicationRolloutProgress\";\nimport type { ISO8601Timestamp } from \"./ISO8601Timestamp\";\nimport type { ModifyUserDeploymentConfiguration } from \"./ModifyUserDeploymentConfiguration\";\nimport type { RolloutID } from \"./RolloutID\";\nimport type { RolloutStep } from \"./RolloutStep\";\n\n/**\n * Represents the status and metadata of a rollout process for an application.\n */\nexport type ApplicationRollout = {\n\tdescription: string;\n\tid: RolloutID;\n\tcreated_at: ISO8601Timestamp;\n\t/**\n\t * Timestamp of the most recent update to status, health, or progress\n\t */\n\tlast_updated_at: ISO8601Timestamp;\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t * - \"durable_objects_auto\": Default when the application is a DO application.\n\t *\n\t */\n\tkind: ApplicationRollout.kind;\n\t/**\n\t * The rollout strategy\n\t */\n\tstrategy: ApplicationRollout.strategy;\n\t/**\n\t * Current application version before the rollout.\n\t */\n\tcurrent_version: number;\n\t/**\n\t * Target application version after the rollout is complete and applied to all current instances.\n\t */\n\ttarget_version: number;\n\tcurrent_configuration: ModifyUserDeploymentConfiguration;\n\ttarget_configuration: ModifyUserDeploymentConfiguration;\n\t/**\n\t * Current status of the rollout.\n\t */\n\tstatus: ApplicationRollout.status;\n\thealth: ApplicationHealth;\n\tsteps: Array<RolloutStep>;\n\tprogress: ApplicationRolloutProgress;\n\t/**\n\t * Timestamp when the rollout started.\n\t */\n\tstarted_at?: string;\n};\n\nexport namespace ApplicationRollout {\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t * - \"durable_objects_auto\": Default when the application is a DO application.\n\t *\n\t */\n\texport enum kind {\n\t\tFULL_AUTO = \"full_auto\",\n\t\tFULL_MANUAL = \"full_manual\",\n\t\tDURABLE_OBJECTS_AUTO = \"durable_objects_auto\",\n\t}\n\n\t/**\n\t * The rollout strategy\n\t */\n\texport enum strategy {\n\t\tROLLING = \"rolling\",\n\t}\n\n\t/**\n\t * Current status of the rollout.\n\t */\n\texport enum status {\n\t\tPENDING = \"pending\",\n\t\tPROGRESSING = \"progressing\",\n\t\tCOMPLETED = \"completed\",\n\t\tREVERTED = \"reverted\",\n\t\tREPLACED = \"replaced\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum AssignIPv4 {\n\tNONE = \"none\",\n\tPREDEFINED = \"predefined\",\n\tACCOUNT = \"account\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum AssignIPv6 {\n\tNONE = \"none\",\n\tPREDEFINED = \"predefined\",\n\tACCOUNT = \"account\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type BadRequestWithCodeError = {\n\t/**\n\t * If VALIDATE_INPUT, you should see the inputs that were wrong in the details object.\n\t */\n\terror: BadRequestWithCodeError.error;\n\t/**\n\t * Details that might be filled depending on the error code.\n\t */\n\tdetails?: Record<string, any>;\n};\n\nexport namespace BadRequestWithCodeError {\n\t/**\n\t * If VALIDATE_INPUT, you should see the inputs that were wrong in the details object.\n\t */\n\texport enum error {\n\t\tVALIDATE_INPUT = \"VALIDATE_INPUT\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Defines the kind of networking the container will have. If \"public\", the container will be assigned at least an IPv6, and an IPv4 if \"assign_ipv4\": true. If \"public-by-port\" is specified, the IP address assignment logic is the same as with \"public\". However, at least one port must be specified. Only packets sent to specified ports will be routed to the container. If \"private\", the container won't have any accessible public IPs, however it will be able to access the internet.\n *\n */\nexport enum ContainerNetworkMode {\n\tPUBLIC = \"public\",\n\tPUBLIC_BY_PORT = \"public-by-port\",\n\tPRIVATE = \"private\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum ContainerImagePreparationStatus {\n\tPENDING = \"pending\",\n\tREADY = \"ready\",\n\tERROR = \"error\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { ModifyUserDeploymentConfiguration } from \"./ModifyUserDeploymentConfiguration\";\nimport type { RolloutStepRequest } from \"./RolloutStepRequest\";\n\n/**\n * Request body to create a new rollout for an application.\n */\nexport type CreateApplicationRolloutRequest = {\n\ttarget_configuration: ModifyUserDeploymentConfiguration;\n\t/**\n\t * Strategy used for the rollout. Currently supports only \"rolling\".\n\t */\n\tstrategy: CreateApplicationRolloutRequest.strategy;\n\t/**\n\t * Percentage of rollout to increase in each step when \"steps\" is not specificed. Applicable values are 5, 10, 20, 25, 50, 100.\n\t * These create rollouts with 20, 10, 5, 4, 2, 1 steps respectively.\n\t *\n\t */\n\tstep_percentage?: CreateApplicationRolloutRequest.step_percentage;\n\t/**\n\t * Steps defining the rollout process, when \"step_percentage\" is not defined.\n\t * Only one of \"step_percentage\" or \"steps\" can be defined when creating a rollout.\n\t * \"steps\" allow granular control over each step.\n\t *\n\t */\n\tsteps?: Array<RolloutStepRequest>;\n\t/**\n\t * Description of the rollout process.\n\t */\n\tdescription: string;\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t *\n\t */\n\tkind?: CreateApplicationRolloutRequest.kind;\n};\n\nexport namespace CreateApplicationRolloutRequest {\n\t/**\n\t * Strategy used for the rollout. Currently supports only \"rolling\".\n\t */\n\texport enum strategy {\n\t\tROLLING = \"rolling\",\n\t}\n\n\t/**\n\t * Percentage of rollout to increase in each step when \"steps\" is not specificed. Applicable values are 5, 10, 20, 25, 50, 100.\n\t * These create rollouts with 20, 10, 5, 4, 2, 1 steps respectively.\n\t *\n\t */\n\texport enum step_percentage {\n\t\t\"_5\" = 5,\n\t\t\"_10\" = 10,\n\t\t\"_20\" = 20,\n\t\t\"_25\" = 25,\n\t\t\"_50\" = 50,\n\t\t\"_100\" = 100,\n\t}\n\n\t/**\n\t * Kind of the rollout process.\n\t * - \"full_auto\": The default rollout mode, which starts progressing the steps upon rollout creation.\n\t * - \"full_manual\": Requires manually progressing each step in the rollout using the UpdateRollout's action paramater.\n\t *\n\t */\n\texport enum kind {\n\t\tFULL_AUTO = \"full_auto\",\n\t\tFULL_MANUAL = \"full_manual\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum DeploymentCheckKind {\n\tHEALTH = \"health\",\n\tREADY = \"ready\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum DeploymentCheckType {\n\tHTTP = \"http\",\n\tTCP = \"tcp\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Error enums that can be returned when there has been an error with mutating the deployments resource\n */\nexport enum DeploymentMutationError {\n\tVALIDATE_INPUT = \"VALIDATE_INPUT\",\n\tSURPASSED_BASE_LIMITS = \"SURPASSED_BASE_LIMITS\",\n\tSURPASSED_TOTAL_LIMITS = \"SURPASSED_TOTAL_LIMITS\",\n\tLOCATION_NOT_ALLOWED = \"LOCATION_NOT_ALLOWED\",\n\tLOCATION_SURPASSED_BASE_LIMITS = \"LOCATION_SURPASSED_BASE_LIMITS\",\n\tIMAGE_REGISTRY_NOT_CONFIGURED = \"IMAGE_REGISTRY_NOT_CONFIGURED\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Response when the deployment that is backing the resource is not found.\n *\n */\nexport type DeploymentNotFoundError = {\n\terror: DeploymentNotFoundError.error;\n};\n\nexport namespace DeploymentNotFoundError {\n\texport enum error {\n\t\tDEPLOYMENT_NOT_FOUND = \"DEPLOYMENT_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * State of the deployment's current placement\n */\nexport enum DeploymentPlacementState {\n\tRUNNING = \"running\",\n\tSTOPPED = \"stopped\",\n\tSTARTING = \"starting\",\n\tSTOPPING = \"stopping\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * A reason on why the deployment cannot be placed\n */\nexport enum DeploymentQueuedReason {\n\tUNKNOWN = \"unknown\",\n\tLOCATION_OVERPROVISIONED = \"location_overprovisioned\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Current scheduling state of the deployment\n */\nexport enum DeploymentSchedulingState {\n\tSCHEDULED = \"scheduled\",\n\tPLACED = \"placed\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The type of deployment that determines how the deployment executes.\n *\n * - \"default\": Means that the deployment is long-running and will always maintain\n * a single placement (aka container) running at the same time.\n * It's the classic and default definition of a deployment in Cloudchamber.\n * - \"jobs\": Means that the deployment will subscribe itself to a durable object control plane\n * that receives jobs to run. It will prewarm a deployment in a metal to receive jobs\n * and run them immediately.\n * - \"durable_object\": Means that the deployment will back a single durable object instance.\n * It's similar to jobs in the sense that the user decides when the container starts and ends.\n *\n * The default is long-running deployments with \"default\".\n *\n */\nexport enum DeploymentType {\n\tDEFAULT = \"default\",\n\tJOBS = \"jobs\",\n\tDURABLE_OBJECT = \"durable_object\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Represents the durable object status of a Placement. If empty, should be assumed that it's disconnected.\n * - connected: The Placement is connected to a durable object.\n * - disconnected: The Placement got disconnected from a durable object.\n *\n */\nexport enum DurableObjectStatusHealth {\n\tCONNECTED = \"connected\",\n\tDISCONNECTED = \"disconnected\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Name of the event that describes the kind event that happened.\n * - SchedulerPlaced: It's the first event that creates a Cloudchamber placement. It happens when the runtime was able to retrieve deployment resources and start verify everything is correct.\n * - NetworkingIPAssigned: It's sent when the Cloudchamber runtime has mapped the IP to the container.\n * - VMStarted: It's sent when the Cloudchamber runtime has started the VM. However, it does not mean that the container is healthy.\n * - ImagePulled: It's sent when the Cloudchamber runtime has pulled the image successfully.\n * - ImagePullError: It's sent when the Cloudchamber runtime is having issues pulling image. The message and details have more information on what happened for debugging.\n * - VMFailedToStart: It's sent when the Cloudchamber runtime was unable to boot the VM.\n * - VMStopping: It's sent when the scheduler is stopping the VM.\n * - VMStopped: It's sent when the VM has finally exited.\n * - VMFailed: It's sent when the scheduling of the VM failed in the current location.\n * - RuntimeStartFailed: It's sent when the runtime had an internal error.\n * - SSHStarted: It's sent when the container has gained network connectivity and has opened the SSH port. This event is only sent when SSH keys are configured.\n * - CheckUpdate: Sent when the status of a health or readiness check changes. This may also affect the health status of the placement.\n * - DurableObjectConnected: Sent when a durable object instance connects and gains control of the deployment.\n * This event is only sent for durable object deployments. It is sent after VMStarted.\n * - ContainerStarted: It's sent when the container has started running.\n *\n */\nexport enum EventName {\n\tSCHEDULER_PLACED = \"SchedulerPlaced\",\n\tNETWORKING_IPASSIGNED = \"NetworkingIPAssigned\",\n\tVMSTARTED = \"VMStarted\",\n\tIMAGE_PULLED = \"ImagePulled\",\n\tIMAGE_PULL_ERROR = \"ImagePullError\",\n\tVMFAILED_TO_START = \"VMFailedToStart\",\n\tNETWORKING_IPASSIGNMENT_FAILED = \"NetworkingIPAssignmentFailed\",\n\tVMRUNNING = \"VMRunning\",\n\tVMSTOPPING = \"VMStopping\",\n\tVMSTOPPED = \"VMStopped\",\n\tVMFAILED = \"VMFailed\",\n\tRUNTIME_START_FAILED = \"RuntimeStartFailed\",\n\tSSHSTARTED = \"SSHStarted\",\n\tSERVICE_HEALTH_UPDATES = \"ServiceHealthUpdates\",\n\tCHECK_UPDATE = \"CheckUpdate\",\n\tDURABLE_OBJECT_CONNECTED = \"DurableObjectConnected\",\n\tCONTAINER_STARTED = \"ContainerStarted\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum EventType {\n\tINFO = \"Info\",\n\tERROR = \"Error\",\n\tWARN = \"Warn\",\n\tUSER_ERROR = \"UserError\",\n\tSYSTEM_ERROR = \"SystemError\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The type of external registry that is being configured.\n */\nexport enum ExternalRegistryKind {\n\tECR = \"ECR\",\n\tDOCKER_HUB = \"DockerHub\",\n\tGAR = \"GAR\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Available HTTP methods for health and readiness checks.\n */\nexport enum HTTPMethod {\n\tGET = \"GET\",\n\tPOST = \"POST\",\n\tPATCH = \"PATCH\",\n\tPUT = \"PUT\",\n\tOPTIONS = \"OPTIONS\",\n\tDELETE = \"DELETE\",\n\tHEAD = \"HEAD\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry already exists\n */\nexport type ImageRegistryAlreadyExistsError = {\n\t/**\n\t * The domain of the registry already exists\n\t */\n\terror: ImageRegistryAlreadyExistsError.error;\n\t/**\n\t * Details that might be filled depending on the error code.\n\t */\n\tdetails?: Record<string, any>;\n};\n\nexport namespace ImageRegistryAlreadyExistsError {\n\t/**\n\t * The domain of the registry already exists\n\t */\n\texport enum error {\n\t\tIMAGE_REGISTRY_ALREADY_EXISTS = \"IMAGE_REGISTRY_ALREADY_EXISTS\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry is configured to be public, so it does not have a public key\n */\nexport type ImageRegistryIsPublic = {\n\terror: ImageRegistryIsPublic.error;\n};\n\nexport namespace ImageRegistryIsPublic {\n\texport enum error {\n\t\tIMAGE_REGISTRY_IS_PUBLIC = \"IMAGE_REGISTRY_IS_PUBLIC\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The registry is not allowed to be modified\n */\nexport type ImageRegistryNotAllowedError = {\n\t/**\n\t * The domain of the registry is not allowed to be modified\n\t */\n\terror: ImageRegistryNotAllowedError.error;\n\t/**\n\t * Details that might be filled depending on the error code.\n\t */\n\tdetails?: Record<string, any>;\n};\n\nexport namespace ImageRegistryNotAllowedError {\n\t/**\n\t * The domain of the registry is not allowed to be modified\n\t */\n\texport enum error {\n\t\tIMAGE_REGISTRY_NOT_ALLOWED = \"IMAGE_REGISTRY_NOT_ALLOWED\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry does not exist\n */\nexport type ImageRegistryNotFoundError = {\n\terror: ImageRegistryNotFoundError.error;\n};\n\nexport namespace ImageRegistryNotFoundError {\n\texport enum error {\n\t\tIMAGE_REGISTRY_NOT_FOUND = \"IMAGE_REGISTRY_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum ImageRegistryPermissions {\n\tPULL = \"pull\",\n\tPUSH = \"push\",\n\tLIBRARY_PUSH = \"library_push\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport type ImageRegistryProtocolAlreadyExists = {\n\terror: ImageRegistryProtocolAlreadyExists.error;\n};\n\nexport namespace ImageRegistryProtocolAlreadyExists {\n\texport enum error {\n\t\tIMAGE_REGISTRY_PROTOCOL_ALREADY_EXISTS = \"IMAGE_REGISTRY_PROTOCOL_ALREADY_EXISTS\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Returned when deleting an image registry protocol and it is referenced by a resource.\n */\nexport type ImageRegistryProtocolIsReferencedError = {\n\terror: ImageRegistryProtocolIsReferencedError.error;\n};\n\nexport namespace ImageRegistryProtocolIsReferencedError {\n\texport enum error {\n\t\tIMAGE_REGISTRY_PROTO_IS_REFERENCED = \"IMAGE_REGISTRY_PROTO_IS_REFERENCED\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The image registry protocol does not exist\n */\nexport type ImageRegistryProtocolNotFound = {\n\terror: ImageRegistryProtocolNotFound.error;\n};\n\nexport namespace ImageRegistryProtocolNotFound {\n\texport enum error {\n\t\tIMAGE_REGISTRY_PROTOCOL_NOT_FOUND = \"IMAGE_REGISTRY_PROTOCOL_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The instance type will be used to configure vcpu, memory, and disk.\n *\n * - \"lite\": This will use a configuration of 1/16 vCPU, 256 MiB memory, and 2 GB disk\n * - \"basic\": This will use a configuration of 1/4 vCPU, 1 GiB memory, and 4 GB disk\n * - \"standard-1\": This will use a configuration of 1/2 vCPU, 4 GiB memory, and 8 GB disk\n * - \"standard-2\": This will use a configuration of 1 vCPU, 6 GiB memory, and 12 GB disk\n * - \"standard-3\": This will use a configuration of 2 vCPU, 8 GiB memory, and 16 GB disk\n * - \"standard-4\": This will use a configuration of 4 vCPU, 12 GiB memory, and 20 GB disk\n * - \"standard\": This will use a configuration of 1/2 vCPU, 4 GiB memory, and 4 GB disk. Now deprecated.\n * - \"dev\": Is an alias for \"lite\". Now deprecated.\n *\n * The default is \"lite\".\n *\n */\nexport enum InstanceType {\n\tLITE = \"lite\",\n\tDEV = \"dev\",\n\tBASIC = \"basic\",\n\tSTANDARD = \"standard\",\n\tSTANDARD_1 = \"standard-1\",\n\tSTANDARD_2 = \"standard-2\",\n\tSTANDARD_3 = \"standard-3\",\n\tSTANDARD_4 = \"standard-4\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * An IP type is an enum that can be v4 or v6\n */\nexport enum IPType {\n\tV4 = \"v4\",\n\tV6 = \"v6\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Job status health represents the job's health. It can be in one of the following states\n * Queued - The job has been created and is waiting to be scheduled.\n * Scheduled - The job has been scheduled on a designated compute instance.\n * Placed - The job has been placed on a compute node and its relevant resources like images, networking and bind mounts are being prepared.\n * Running - The job has started running the container with the given job configuration.\n * Stopped - The job has stopped running\n *\n */\nexport enum JobStatusHealth {\n\tQUEUED = \"Queued\",\n\tSCHEDULED = \"Scheduled\",\n\tPLACED = \"Placed\",\n\tRUNNING = \"Running\",\n\tSTOPPED = \"Stopped\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Defines the network mode that the VM can include\n */\nexport enum NetworkMode {\n\tUSO = \"uso\",\n\tVHOST = \"vhost\",\n\tXDP = \"xdp\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The node type that a deployment can be deployed to. 'metal' defines normal Cloudflare metals, 'cloudchamber' is Cloudchamber nodes. For new accounts it should always be 'metal'.\n */\nexport enum NodeGroup {\n\tMETAL = \"metal\",\n\tCLOUDCHAMBER = \"cloudchamber\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Represents the 'status' of a Placement.\n * - placed: The Placement has been created on a node.\n * - stopping: The Placement is stopping.\n * - running: The Placement is running.\n * - failed: The Placement failed to run.\n * - stopped: The Placement stopped.\n * - unhealthy: The Placement has a failing healthcheck.\n *\n */\nexport enum PlacementStatusHealth {\n\tPLACED = \"placed\",\n\tSTOPPING = \"stopping\",\n\tRUNNING = \"running\",\n\tFAILED = \"failed\",\n\tSTOPPED = \"stopped\",\n\tUNHEALTHY = \"unhealthy\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Configuration for a VM provisioner.\n */\nexport type ProvisionerConfiguration = {\n\t/**\n\t * The provisioner to use.\n\t */\n\ttype: ProvisionerConfiguration.type;\n};\n\nexport namespace ProvisionerConfiguration {\n\t/**\n\t * The provisioner to use.\n\t */\n\texport enum type {\n\t\tNONE = \"none\",\n\t\tCLOUDINIT = \"cloudinit\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { ISO8601Timestamp } from \"./ISO8601Timestamp\";\n\n/**\n * Steps within the rollout process.\n */\nexport type RolloutStep = {\n\t/**\n\t * The sequential order of the rollout step, automatically assigned starting from 1, based on the total number of steps in the rollout process.\n\t */\n\tid: number;\n\tstep_size: {\n\t\t/**\n\t\t * Percentage of instances affected in this step. Min 10% and Max 100%.\n\t\t */\n\t\tpercentage: number;\n\t};\n\t/**\n\t * Description of the rollout step.\n\t */\n\tdescription: string;\n\t/**\n\t * Status of the rollout step.\n\t */\n\tstatus: RolloutStep.status;\n\t/**\n\t * Reason why the step has the current status\n\t */\n\treason?: string;\n\tstarted_at?: ISO8601Timestamp;\n\tcompleted_at?: ISO8601Timestamp;\n};\n\nexport namespace RolloutStep {\n\t/**\n\t * Status of the rollout step.\n\t */\n\texport enum status {\n\t\tPENDING = \"pending\",\n\t\tPROGRESSING = \"progressing\",\n\t\tREVERTING = \"reverting\",\n\t\tCOMPLETED = \"completed\",\n\t\tREVERTED = \"reverted\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The scheduling policy to use for an application\n */\nexport enum SchedulingPolicy {\n\tDURABLE_OBJECT = \"durable_object\",\n\tMOON = \"moon\",\n\tGPU = \"gpu\",\n\tREGIONAL = \"regional\",\n\tFILL_METALS = \"fill_metals\",\n\tDEFAULT = \"default\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The secret access type denotes how a secret is made available within a container. Available Options are \"env\".\n */\nexport enum SecretAccessType {\n\tENV = \"env\",\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nimport type { GenericErrorDetails } from \"./GenericErrorDetails\";\n\n/**\n * The secret name already exists\n */\nexport type SecretNameAlreadyExists = {\n\t/**\n\t * The secret name already exists in this account\n\t */\n\terror: SecretNameAlreadyExists.error;\n\tdetails?: GenericErrorDetails;\n};\n\nexport namespace SecretNameAlreadyExists {\n\t/**\n\t * The secret name already exists in this account\n\t */\n\texport enum error {\n\t\tSECRET_NAME_ALREADY_EXISTS = \"SECRET_NAME_ALREADY_EXISTS\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The secret name does not exist\n */\nexport type SecretNotFound = {\n\terror: SecretNotFound.error;\n};\n\nexport namespace SecretNotFound {\n\texport enum error {\n\t\tSECRET_NAME_NOT_FOUND = \"SECRET_NAME_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * The ssh public key does not exist\n */\nexport type SSHPublicKeyNotFoundError = {\n\terror: SSHPublicKeyNotFoundError.error;\n};\n\nexport namespace SSHPublicKeyNotFoundError {\n\texport enum error {\n\t\tSSH_PUBLIC_KEY_NOT_FOUND = \"SSH_PUBLIC_KEY_NOT_FOUND\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Request body to update a rollout within an application.\n */\nexport type UpdateApplicationRolloutRequest = {\n\t/**\n\t * Action to perform on the rollout.\n\t * - next: The rollout will go forward one step. It will succeed if the current step is finished.\n\t * - previous: The rollout will go back one step.\n\t * - revert: The rollout goes back to the first step in one go.\n\t *\n\t */\n\taction: UpdateApplicationRolloutRequest.action;\n};\n\nexport namespace UpdateApplicationRolloutRequest {\n\t/**\n\t * Action to perform on the rollout.\n\t * - next: The rollout will go forward one step. It will succeed if the current step is finished.\n\t * - previous: The rollout will go back one step.\n\t * - revert: The rollout goes back to the first step in one go.\n\t *\n\t */\n\texport enum action {\n\t\tNEXT = \"next\",\n\t\tPREVIOUS = \"previous\",\n\t\tREVERT = \"revert\",\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { CompleteAccountCustomer } from \"../models/CompleteAccountCustomer\";\nimport type { ModifyMeRequestBody } from \"../models/ModifyMeRequestBody\";\n\nexport class AccountService {\n\t/**\n\t * Get complete account details related to Cloudchamber\n\t * Get complete account details related to Cloudchamber, like limits and available locations\n\t * @returns CompleteAccountCustomer Complete account for the user\n\t * @throws ApiError\n\t */\n\tpublic static getMe(): CancelablePromise<CompleteAccountCustomer> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/me\",\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Modify account details like defaults\n\t * Modify account details like defaults\n\t * @param requestBody\n\t * @returns CompleteAccountCustomer Complete account for the user\n\t * @throws ApiError\n\t */\n\tpublic static modifyMe(\n\t\trequestBody: ModifyMeRequestBody\n\t): CancelablePromise<CompleteAccountCustomer> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: \"/me\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Bad Request that contains a specific constant code and details object about the error.`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request, requestPaginated } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { PaginatedResult } from \"../core/PaginatedResult\";\nimport type { Application } from \"../models/Application\";\nimport type { ApplicationID } from \"../models/ApplicationID\";\nimport type { ApplicationJob } from \"../models/ApplicationJob\";\nimport type { ApplicationName } from \"../models/ApplicationName\";\nimport type { ApplicationRollout } from \"../models/ApplicationRollout\";\nimport type { ApplicationStatus } from \"../models/ApplicationStatus\";\nimport type { CreateApplicationJobRequest } from \"../models/CreateApplicationJobRequest\";\nimport type { CreateApplicationRequest } from \"../models/CreateApplicationRequest\";\nimport type { CreateApplicationRolloutRequest } from \"../models/CreateApplicationRolloutRequest\";\nimport type { CreateDurableObjectApplicationRequest } from \"../models/CreateDurableObjectApplicationRequest\";\nimport type { DashApplication } from \"../models/DashApplication\";\nimport type { DashApplicationInstances } from \"../models/DashApplicationInstances\";\nimport type { DeploymentID } from \"../models/DeploymentID\";\nimport type { DeploymentV2 } from \"../models/DeploymentV2\";\nimport type { EmptyResponse } from \"../models/EmptyResponse\";\nimport type { GenericMessageResponse } from \"../models/GenericMessageResponse\";\nimport type { Image } from \"../models/Image\";\nimport type { JobID } from \"../models/JobID\";\nimport type { ListApplications } from \"../models/ListApplications\";\nimport type { ListDeploymentsV2 } from \"../models/ListDeploymentsV2\";\nimport type { ModifyApplicationJobRequest } from \"../models/ModifyApplicationJobRequest\";\nimport type { ModifyApplicationRequestBody } from \"../models/ModifyApplicationRequestBody\";\nimport type { ModifyUserDeploymentConfiguration } from \"../models/ModifyUserDeploymentConfiguration\";\nimport type { RolloutID } from \"../models/RolloutID\";\nimport type { UpdateApplicationRolloutRequest } from \"../models/UpdateApplicationRolloutRequest\";\nimport type { UpdateRolloutResponse } from \"../models/UpdateRolloutResponse\";\n\nexport class ApplicationsService {\n\t/**\n\t * Create a new application\n\t * Create a new application. An Application represents an intent to run one or more containers, with the same image, dynamically scheduled based on constraints\n\t * @param requestBody\n\t * @returns Application A newly created application\n\t * @throws ApiError\n\t */\n\tpublic static createApplication(\n\t\trequestBody:\n\t\t\t| CreateApplicationRequest\n\t\t\t| CreateDurableObjectApplicationRequest\n\t): CancelablePromise<Application> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Could not create the application because of input/limits reasons, more details in the error code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List Applications associated with your account\n\t * Lists all the applications that are associated with your account\n\t * @param name Filter applications by name\n\t * @param image Filter applications by image\n\t * @param label Filter applications by label\n\t * @returns ListApplications Get all application associated with your account\n\t * @throws ApiError\n\t */\n\tpublic static listApplications(\n\t\tname?: ApplicationName,\n\t\timage?: Image,\n\t\tlabel?: Array<string>\n\t): CancelablePromise<ListApplications> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications\",\n\t\t\tquery: {\n\t\t\t\tname: name,\n\t\t\t\timage: image,\n\t\t\t\tlabel: label,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a single application by id\n\t * Returns a single application by id\n\t * @param applicationId\n\t * @returns Application A single application\n\t * @throws ApiError\n\t */\n\tpublic static getApplication(\n\t\tapplicationId: ApplicationID\n\t): CancelablePromise<Application> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Modify an application\n\t * Modifies a single application by id.\n\t * @param applicationId\n\t * @param requestBody\n\t * @returns Application Modify application response\n\t * @throws ApiError\n\t */\n\tpublic static modifyApplication(\n\t\tapplicationId: ApplicationID,\n\t\trequestBody: ModifyApplicationRequestBody\n\t): CancelablePromise<Application> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: \"/applications/{application_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Could not modify the application because of input/limits reasons, more details in the error code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete a single application by id\n\t * Deletes a single application by id\n\t * @param applicationId\n\t * @returns EmptyResponse Delete application response\n\t * @throws ApiError\n\t */\n\tpublic static deleteApplication(\n\t\tapplicationId: ApplicationID\n\t): CancelablePromise<EmptyResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/applications/{application_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Application queue status\n\t * Get an application's queue status. Only works under an application with type jobs.\n\t * @param applicationId\n\t * @returns ApplicationStatus Application status with details about the job queue, instances and other metadata for introspection.\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationStatus(\n\t\tapplicationId: ApplicationID\n\t): CancelablePromise<ApplicationStatus> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/status\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Create a new job within an application\n\t * Returns the created job\n\t * @param applicationId\n\t * @param requestBody\n\t * @returns ApplicationJob A single job within an application\n\t * @throws ApiError\n\t */\n\tpublic static createApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\trequestBody: CreateApplicationJobRequest\n\t): CancelablePromise<ApplicationJob> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/jobs\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't create the application job because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get an application job by application and job id\n\t * Returns a single application job by id with its current status\n\t * @param applicationId\n\t * @param jobId\n\t * @returns ApplicationJob A single application\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\tjobId: JobID\n\t): CancelablePromise<ApplicationJob> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/jobs/{job_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tjob_id: jobId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application/Job is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete an application job by application and job id\n\t * Cleans up the specific job from the Application and all its assoicated resources\n\t * @param applicationId\n\t * @param jobId\n\t * @returns GenericMessageResponse Generic OK response\n\t * @throws ApiError\n\t */\n\tpublic static deleteApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\tjobId: JobID\n\t): CancelablePromise<GenericMessageResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/applications/{application_id}/jobs/{job_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tjob_id: jobId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application/Job is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Modify an existing application job\n\t * Modify an application job state\n\t * @param applicationId\n\t * @param jobId\n\t * @param requestBody\n\t * @returns ApplicationJob A modified job within an application\n\t * @throws ApiError\n\t */\n\tpublic static modifyApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\tjobId: JobID,\n\t\trequestBody: ModifyApplicationJobRequest\n\t): CancelablePromise<ApplicationJob> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: \"/applications/{application_id}/jobs/{job_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tjob_id: jobId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't modify the application job because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application/Job is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Create a new rollout for an application\n\t * A rollout can be used to update the application's configuration across instances with minimal downtime.\n\t * @param applicationId\n\t * @param requestBody\n\t * @returns ApplicationRollout\n\t * @throws ApiError\n\t */\n\tpublic static createApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trequestBody: CreateApplicationRolloutRequest\n\t): CancelablePromise<ApplicationRollout> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/rollouts\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't update the application rollout because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List rollouts\n\t * List all rollouts within an application\n\t * @param applicationId\n\t * @param limit The amount of rollouts to return. By default it is all of them.\n\t * @param last The last rollout that was used to paginate\n\t * @returns ApplicationRollout\n\t * @throws ApiError\n\t */\n\tpublic static listApplicationRollouts(\n\t\tapplicationId: ApplicationID,\n\t\tlimit?: number,\n\t\tlast?: string\n\t): CancelablePromise<Array<ApplicationRollout>> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/rollouts\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tquery: {\n\t\t\t\tlimit: limit,\n\t\t\t\tlast: last,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a rollout by id within an application\n\t * View rollout configurations and state for a specific rollout\n\t * @param applicationId\n\t * @param rolloutId\n\t * @returns ApplicationRollout\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trolloutId: RolloutID\n\t): CancelablePromise<ApplicationRollout> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/rollouts/{rollout_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\trollout_id: rolloutId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Update a rollout within an application\n\t * A rollout can be updated to modify its current state. Actions include - next, previous, rollback\n\t * @param applicationId\n\t * @param rolloutId\n\t * @param requestBody\n\t * @returns UpdateRolloutResponse\n\t * @throws ApiError\n\t */\n\tpublic static updateApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trolloutId: RolloutID,\n\t\trequestBody: UpdateApplicationRolloutRequest\n\t): CancelablePromise<UpdateRolloutResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/rollouts/{rollout_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\trollout_id: rolloutId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't create the application rollout because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete a rollout within an application by its rollout id\n\t * Cleans up the specific rollout from the Application if it is not in use\n\t * @param applicationId\n\t * @param rolloutId\n\t * @returns EmptyResponse\n\t * @throws ApiError\n\t */\n\tpublic static deleteApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trolloutId: RolloutID\n\t): CancelablePromise<EmptyResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/applications/{application_id}/rollouts/{rollout_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\trollout_id: rolloutId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a single applications deployments\n\t * Returns a single applications deployments\n\t * @param applicationId\n\t * @returns ListDeploymentsV2 List of deployments with their corresponding placements\n\t * @throws ApiError\n\t */\n\tpublic static listDeploymentsByApplication(\n\t\tapplicationId: ApplicationID\n\t): CancelablePromise<ListDeploymentsV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/deployments\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a specific deployment within an application\n\t * Get a deployment by its app and deployment IDs\n\t * @param applicationId\n\t * @param deploymentId\n\t * @returns DeploymentV2 Get a specific deployment along with its respective placements\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationsV3Deployment(\n\t\tapplicationId: ApplicationID,\n\t\tdeploymentId: DeploymentID\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/deployments/{deployment_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Get Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Recreate an existing deployment within an application.\n\t * The given existing deployment is deleted and a replacement deployment is created. The latter retains some properties of the former that cannot be set by the client.\n\t *\n\t * @param applicationId\n\t * @param deploymentId\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment created\n\t * @throws ApiError\n\t */\n\tpublic static recreateDeploymentV3(\n\t\tapplicationId: ApplicationID,\n\t\tdeploymentId: DeploymentID,\n\t\trequestBody: ModifyUserDeploymentConfiguration\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/deployments/{deployment_id}/recreate\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Could not create the deployment because of input/limits reasons, more details in the error code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Creation Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List container applications with pagination (Dash endpoint)\n\t * Returns summary application data suitable for list display\n\t * @param perPage Number of results per page\n\t * @param pageToken Token for fetching the next page\n\t * @returns PaginatedResult<DashApplication[]> Paginated list of applications\n\t * @throws ApiError\n\t */\n\tpublic static listDashApplications(\n\t\tperPage?: number,\n\t\tpageToken?: string\n\t): CancelablePromise<PaginatedResult<DashApplication[]>> {\n\t\treturn requestPaginated(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/dash/applications\",\n\t\t\tquery: {\n\t\t\t\tper_page: perPage,\n\t\t\t\tpage_token: pageToken,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List container instances for a given application\n\t * Returns instances and optional durable object instances with pagination support\n\t * @param applicationId\n\t * @param perPage Number of results per page\n\t * @param pageToken Token for fetching the next page\n\t * @returns PaginatedResult<DashApplicationInstances> Paginated list of instances\n\t * @throws ApiError\n\t */\n\tpublic static listDashApplicationInstances(\n\t\tapplicationId: ApplicationID,\n\t\tperPage?: number,\n\t\tpageToken?: string\n\t): CancelablePromise<PaginatedResult<DashApplicationInstances>> {\n\t\treturn requestPaginated(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/dash/applications/{application_id}/instances\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tquery: {\n\t\t\t\tper_page: perPage,\n\t\t\t\tpage_token: pageToken,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Application not found`,\n\t\t\t\t500: `Internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { ContainerImagePreparation } from \"../models/ContainerImagePreparation\";\nimport type { PrepareContainerImageRequestBody } from \"../models/PrepareContainerImageRequestBody\";\n\nexport class ContainerImagePreparationsService {\n\t/**\n\t * Prepare a digest-pinned managed image for the Containers runtime.\n\t */\n\tpublic static prepareContainerImage(\n\t\trequestBody: PrepareContainerImageRequestBody\n\t): CancelablePromise<ContainerImagePreparation> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/image-preparations\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `The image is invalid or does not exist in this account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t403: `Container image preparation is not enabled for this account`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { ApplicationID } from \"../models/ApplicationID\";\nimport type { CreateDeploymentV2RequestBody } from \"../models/CreateDeploymentV2RequestBody\";\nimport type { DeploymentID } from \"../models/DeploymentID\";\nimport type { DeploymentPlacementState } from \"../models/DeploymentPlacementState\";\nimport type { DeploymentV2 } from \"../models/DeploymentV2\";\nimport type { EmptyResponse } from \"../models/EmptyResponse\";\nimport type { Image } from \"../models/Image\";\nimport type { IPV4 } from \"../models/IPV4\";\nimport type { ListDeploymentsV2 } from \"../models/ListDeploymentsV2\";\nimport type { LocationID } from \"../models/LocationID\";\nimport type { ModifyDeploymentV2RequestBody } from \"../models/ModifyDeploymentV2RequestBody\";\nimport type { ModifyUserDeploymentConfiguration } from \"../models/ModifyUserDeploymentConfiguration\";\nimport type { PlacementID } from \"../models/PlacementID\";\nimport type { ReplaceDeploymentRequestBody } from \"../models/ReplaceDeploymentRequestBody\";\nimport type { WranglerSSHResponse } from \"../models/WranglerSSHResponse\";\n\nexport class DeploymentsService {\n\t/**\n\t * Get a specific deployment within an application\n\t * Get a deployment by its app and deployment IDs\n\t * @param applicationId\n\t * @param deploymentId\n\t * @returns DeploymentV2 Get a specific deployment along with its respective placements\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationsV3Deployment(\n\t\tapplicationId: ApplicationID,\n\t\tdeploymentId: DeploymentID\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/deployments/{deployment_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Get Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Recreate an existing deployment within an application.\n\t * The given existing deployment is deleted and a replacement deployment is created. The latter retains some properties of the former that cannot be set by the client.\n\t *\n\t * @param applicationId\n\t * @param deploymentId\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment created\n\t * @throws ApiError\n\t */\n\tpublic static recreateDeploymentV3(\n\t\tapplicationId: ApplicationID,\n\t\tdeploymentId: DeploymentID,\n\t\trequestBody: ModifyUserDeploymentConfiguration\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/deployments/{deployment_id}/recreate\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Could not create the deployment because of input/limits reasons, more details in the error code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Creation Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get credentials to SSH into a Container\n\t * Get a JWT to hit the SSH port on a given container.\n\t * @param instanceId\n\t * @returns WranglerSSHResponse Credentials to SSH into a Container\n\t * @throws ApiError\n\t */\n\tpublic static containerWranglerSsh(\n\t\tinstanceId: DeploymentID\n\t): CancelablePromise<WranglerSSHResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/instances/{instance_id}/ssh\",\n\t\t\tpath: {\n\t\t\t\tinstance_id: instanceId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Create a new deployment\n\t * Creates a new deployment. A Deployment represents an intent to run one container, with image, in a particular location\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment created\n\t * @throws ApiError\n\t */\n\tpublic static createDeploymentV2(\n\t\trequestBody: CreateDeploymentV2RequestBody\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/deployments/v2\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Could not create the deployment because of input/limits reasons, more details in the error code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t409: `Deployment already exists`,\n\t\t\t\t500: `Deployment Creation Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List deployments\n\t * List all deployments in the current account. Optionally filter them\n\t * @param appId Filter deployments by application id\n\t * @param location Filter deployments by location\n\t * @param image Filter deployments by image\n\t * @param state Filter deployments by placement state\n\t * @param ipv4 Filter deployments by ipv4 address\n\t * @param label Filter deployments by label\n\t * @returns ListDeploymentsV2 List of deployments with their corresponding placements\n\t * @throws ApiError\n\t */\n\tpublic static listDeploymentsV2(\n\t\tappId?: ApplicationID,\n\t\tlocation?: LocationID,\n\t\timage?: Image,\n\t\tstate?: DeploymentPlacementState,\n\t\tipv4?: IPV4,\n\t\tlabel?: Array<string>\n\t): CancelablePromise<ListDeploymentsV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/deployments/v2\",\n\t\t\tquery: {\n\t\t\t\tapp_id: appId,\n\t\t\t\tlocation: location,\n\t\t\t\timage: image,\n\t\t\t\tstate: state,\n\t\t\t\tipv4: ipv4,\n\t\t\t\tlabel: label,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `Deployment List Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a specific deployment\n\t * Get a deployment by its deployment\n\t * @param deploymentId\n\t * @returns DeploymentV2 Get a specific deployment along with its respective placements\n\t * @throws ApiError\n\t */\n\tpublic static getDeploymentV2(\n\t\tdeploymentId: DeploymentID\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/deployments/{deployment_id}/v2\",\n\t\t\tpath: {\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Get Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Modify an existing deployment\n\t * Change specific properties in an existing deployment\n\t * @param deploymentId\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment modified\n\t * @throws ApiError\n\t */\n\tpublic static modifyDeploymentV2(\n\t\tdeploymentId: DeploymentID,\n\t\trequestBody: ModifyDeploymentV2RequestBody\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: \"/deployments/{deployment_id}/v2\",\n\t\t\tpath: {\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't modify the deployment because it surpasses limits or it has bad input`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Modification Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete a specific deployment\n\t * Delete a deployment by its deployment ID\n\t * @param deploymentId\n\t * @returns EmptyResponse Delete a specific deployment along with its respective placements\n\t * @throws ApiError\n\t */\n\tpublic static deleteDeploymentV2(\n\t\tdeploymentId: DeploymentID\n\t): CancelablePromise<EmptyResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/deployments/{deployment_id}/v2\",\n\t\t\tpath: {\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Delete Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Recreate an existing deployment.\n\t * The given existing deployment is deleted and a replacement deployment is created. The latter retains some properties of the former that cannot be set by the client.\n\t *\n\t * @param deploymentId\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment created\n\t * @throws ApiError\n\t */\n\tpublic static recreateDeployment(\n\t\tdeploymentId: DeploymentID,\n\t\trequestBody: CreateDeploymentV2RequestBody\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/deployments/{deployment_id}/recreate\",\n\t\t\tpath: {\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Could not create the deployment because of input/limits reasons, more details in the error code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `Deployment Creation Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Replace a deployment\n\t * You can stop the current placement and create a new one. The new one will have the same durable properties of the deployment, but will otherwise be like new\n\t * @param placementId\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment replaced\n\t * @throws ApiError\n\t */\n\tpublic static replaceDeployment(\n\t\tplacementId: PlacementID,\n\t\trequestBody: ReplaceDeploymentRequestBody\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/placements/{placement_id}\",\n\t\t\tpath: {\n\t\t\t\tplacement_id: placementId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Responses with 400 status code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Placement not found`,\n\t\t\t\t500: `Deployment Replacement Error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { AccountRegistryToken } from \"../models/AccountRegistryToken\";\nimport type { CreateImageRegistryRequestBody } from \"../models/CreateImageRegistryRequestBody\";\nimport type { CustomerImageRegistry } from \"../models/CustomerImageRegistry\";\nimport type { DeleteImageRegistryResponse } from \"../models/DeleteImageRegistryResponse\";\nimport type { EmptyResponse } from \"../models/EmptyResponse\";\nimport type { ImageRegistryCredentialsConfiguration } from \"../models/ImageRegistryCredentialsConfiguration\";\nimport type { ImageRegistryProtocol } from \"../models/ImageRegistryProtocol\";\nimport type { ImageRegistryProtocols } from \"../models/ImageRegistryProtocols\";\n\nexport class ImageRegistriesService {\n\t/**\n\t * Create an image registry protocol that resolves to multiple domains.\n\t * @param requestBody\n\t * @returns ImageRegistryProtocol The image registry protocol was created\n\t * @throws ApiError\n\t */\n\tpublic static createImageRegistryProtocol(\n\t\trequestBody: ImageRegistryProtocol\n\t): CancelablePromise<ImageRegistryProtocol> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/registries/protos\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Bad Request that contains a specific constant code and details object about the error.`,\n\t\t\t\t403: `The registry that is being added is not allowed`,\n\t\t\t\t409: `Image registry protocol already exists`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List all image registry protocols.\n\t * @returns ImageRegistryProtocols The image registry protocols in the account\n\t * @throws ApiError\n\t */\n\tpublic static listImageRegistryProtocols(): CancelablePromise<ImageRegistryProtocols> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/registries/protos\",\n\t\t\terrors: {\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Modify an image registry protocol. The previous list of domains will be replaced by the ones you specify in this endpoint.\n\t * @param requestBody\n\t * @returns ImageRegistryProtocol The image registry protocol was modified\n\t * @throws ApiError\n\t */\n\tpublic static modifyImageRegistryProtocol(\n\t\trequestBody: ImageRegistryProtocol\n\t): CancelablePromise<ImageRegistryProtocol> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PUT\",\n\t\t\turl: \"/registries/protos\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Bad Request that contains a specific constant code and details object about the error.`,\n\t\t\t\t403: `The registry that is being added is not allowed`,\n\t\t\t\t404: `Image registry protocol doesn't exist`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete an image registry protocol. Be careful, if there is deployments running referencing this protocol they won't be able to pull the image.\n\t * @param proto\n\t * @returns EmptyResponse Image registry protocol was deleted successfully\n\t * @throws ApiError\n\t */\n\tpublic static deleteImageRegistryProto(\n\t\tproto: string\n\t): CancelablePromise<EmptyResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/registries/protos/{proto}\",\n\t\t\tpath: {\n\t\t\t\tproto: proto,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `The image registry protocol couldn't be deleted because it's referenced by a deployment or application`,\n\t\t\t\t404: `Image registry protocol doesn't exist`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a JWT to pull from the image registry\n\t * Get a JWT to pull from the image registry specifying its domain\n\t * @param domain\n\t * @param requestBody\n\t * @returns AccountRegistryToken Credentials with 'pull' or 'push' permissions to access the registry\n\t * @throws ApiError\n\t */\n\tpublic static generateImageRegistryCredentials(\n\t\tdomain: string,\n\t\trequestBody: ImageRegistryCredentialsConfiguration\n\t): CancelablePromise<AccountRegistryToken> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/registries/{domain}/credentials\",\n\t\t\tpath: {\n\t\t\t\tdomain: domain,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Bad Request that contains a specific constant code and details object about the error.`,\n\t\t\t\t404: `The image registry does not exist`,\n\t\t\t\t409: `The registry was configured as public, so credentials can not be generated`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete a registry from the account\n\t * Delete a registry from the account, this will make Cloudchamber unable to pull images from the registry\n\t * @param domain\n\t * @returns EmptyResponse The image registry is deleted\n\t * @throws ApiError\n\t */\n\tpublic static deleteImageRegistry(\n\t\tdomain: string\n\t): CancelablePromise<DeleteImageRegistryResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/registries/{domain}\",\n\t\t\tpath: {\n\t\t\t\tdomain: domain,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t404: `The image registry does not exist`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get the list of configured registries in the account\n\t * Get the list of configured registries in the account\n\t * @returns CustomerImageRegistry The list of registries that are added in the account\n\t * @throws ApiError\n\t */\n\tpublic static listImageRegistries(): CancelablePromise<\n\t\tArray<CustomerImageRegistry>\n\t> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/registries\",\n\t\t\terrors: {\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Add a new image registry configuration\n\t * Add a new image registry into your account, so then Cloudflare can pull docker images with public key JWT authentication\n\t * @param requestBody\n\t * @returns CustomerImageRegistry Created a new image registry in the account\n\t * @throws ApiError\n\t */\n\tpublic static createImageRegistry(\n\t\trequestBody: CreateImageRegistryRequestBody\n\t): CancelablePromise<CustomerImageRegistry> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/registries\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Image registry input is malformed, see the error details`,\n\t\t\t\t403: `The registry that is being added is not allowed`,\n\t\t\t\t409: `The image registry already exists in the account`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { DeploymentID } from \"../models/DeploymentID\";\nimport type { IPAllocationsWithFilter } from \"../models/IPAllocationsWithFilter\";\nimport type { IPType } from \"../models/IPType\";\nimport type { ListIPsIsAllocated } from \"../models/ListIPsIsAllocated\";\nimport type { PlacementID } from \"../models/PlacementID\";\n\nexport class IPsService {\n\t/**\n\t * List IPs\n\t * List IPs\n\t * @param placementId Filter out ips that are not assigned to the specified placement, can also be known as 'alloc_id' in Nomad.\n\t * @param allocated Filter out ips that are not allocated\n\t * @param ipType Filter out ips by type\n\t * @param deploymentId Filter out by deployment ID\n\t * @returns IPAllocationsWithFilter Result of listing IPs\n\t * @throws ApiError\n\t */\n\tpublic static listIPs(\n\t\tplacementId?: PlacementID,\n\t\tallocated?: ListIPsIsAllocated,\n\t\tipType?: IPType,\n\t\tdeploymentId?: DeploymentID\n\t): CancelablePromise<IPAllocationsWithFilter> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/ips\",\n\t\t\tquery: {\n\t\t\t\tplacement_id: placementId,\n\t\t\t\tallocated: allocated,\n\t\t\t\tipType: ipType,\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { ApplicationID } from \"../models/ApplicationID\";\nimport type { ApplicationJob } from \"../models/ApplicationJob\";\nimport type { ApplicationStatus } from \"../models/ApplicationStatus\";\nimport type { CreateApplicationJobRequest } from \"../models/CreateApplicationJobRequest\";\nimport type { GenericMessageResponse } from \"../models/GenericMessageResponse\";\nimport type { JobID } from \"../models/JobID\";\nimport type { ModifyApplicationJobRequest } from \"../models/ModifyApplicationJobRequest\";\n\nexport class JobsService {\n\t/**\n\t * Application queue status\n\t * Get an application's queue status. Only works under an application with type jobs.\n\t * @param applicationId\n\t * @returns ApplicationStatus Application status with details about the job queue, instances and other metadata for introspection.\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationStatus(\n\t\tapplicationId: ApplicationID\n\t): CancelablePromise<ApplicationStatus> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/status\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Create a new job within an application\n\t * Returns the created job\n\t * @param applicationId\n\t * @param requestBody\n\t * @returns ApplicationJob A single job within an application\n\t * @throws ApiError\n\t */\n\tpublic static createApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\trequestBody: CreateApplicationJobRequest\n\t): CancelablePromise<ApplicationJob> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/jobs\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't create the application job because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get an application job by application and job id\n\t * Returns a single application job by id with its current status\n\t * @param applicationId\n\t * @param jobId\n\t * @returns ApplicationJob A single application\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\tjobId: JobID\n\t): CancelablePromise<ApplicationJob> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/jobs/{job_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tjob_id: jobId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application/Job is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete an application job by application and job id\n\t * Cleans up the specific job from the Application and all its assoicated resources\n\t * @param applicationId\n\t * @param jobId\n\t * @returns GenericMessageResponse Generic OK response\n\t * @throws ApiError\n\t */\n\tpublic static deleteApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\tjobId: JobID\n\t): CancelablePromise<GenericMessageResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/applications/{application_id}/jobs/{job_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tjob_id: jobId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application/Job is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Modify an existing application job\n\t * Modify an application job state\n\t * @param applicationId\n\t * @param jobId\n\t * @param requestBody\n\t * @returns ApplicationJob A modified job within an application\n\t * @throws ApiError\n\t */\n\tpublic static modifyApplicationJob(\n\t\tapplicationId: ApplicationID,\n\t\tjobId: JobID,\n\t\trequestBody: ModifyApplicationJobRequest\n\t): CancelablePromise<ApplicationJob> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: \"/applications/{application_id}/jobs/{job_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\tjob_id: jobId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't modify the application job because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application/Job is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { DeploymentID } from \"../models/DeploymentID\";\nimport type { DeploymentV2 } from \"../models/DeploymentV2\";\nimport type { ListPlacements } from \"../models/ListPlacements\";\nimport type { PlacementID } from \"../models/PlacementID\";\nimport type { PlacementWithEvents } from \"../models/PlacementWithEvents\";\nimport type { ReplaceDeploymentRequestBody } from \"../models/ReplaceDeploymentRequestBody\";\n\nexport class PlacementsService {\n\t/**\n\t * List placements\n\t * List all placements under a given deploymentID with all its events\n\t * @param deploymentId\n\t * @returns ListPlacements A list of placements along with its events under a deployment\n\t * @throws ApiError\n\t */\n\tpublic static listPlacements(\n\t\tdeploymentId: DeploymentID\n\t): CancelablePromise<ListPlacements> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/deployments/{deployment_id}/placements\",\n\t\t\tpath: {\n\t\t\t\tdeployment_id: deploymentId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Deployment not found`,\n\t\t\t\t500: `List Placements Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get placement\n\t * A Placement represents the lifetime of a single instance of a Deployment\n\t * @param placementId\n\t * @returns PlacementWithEvents A specific placement along with its events\n\t * @throws ApiError\n\t */\n\tpublic static getPlacement(\n\t\tplacementId: PlacementID\n\t): CancelablePromise<PlacementWithEvents> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/placements/{placement_id}\",\n\t\t\tpath: {\n\t\t\t\tplacement_id: placementId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t400: `Unknown account`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Placement not found`,\n\t\t\t\t500: `Get Placement Error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Replace a deployment\n\t * You can stop the current placement and create a new one. The new one will have the same durable properties of the deployment, but will otherwise be like new\n\t * @param placementId\n\t * @param requestBody\n\t * @returns DeploymentV2 Deployment replaced\n\t * @throws ApiError\n\t */\n\tpublic static replaceDeployment(\n\t\tplacementId: PlacementID,\n\t\trequestBody: ReplaceDeploymentRequestBody\n\t): CancelablePromise<DeploymentV2> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/placements/{placement_id}\",\n\t\t\tpath: {\n\t\t\t\tplacement_id: placementId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Responses with 400 status code`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Placement not found`,\n\t\t\t\t500: `Deployment Replacement Error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { ApplicationID } from \"../models/ApplicationID\";\nimport type { ApplicationRollout } from \"../models/ApplicationRollout\";\nimport type { CreateApplicationRolloutRequest } from \"../models/CreateApplicationRolloutRequest\";\nimport type { EmptyResponse } from \"../models/EmptyResponse\";\nimport type { RolloutID } from \"../models/RolloutID\";\nimport type { UpdateApplicationRolloutRequest } from \"../models/UpdateApplicationRolloutRequest\";\nimport type { UpdateRolloutResponse } from \"../models/UpdateRolloutResponse\";\n\nexport class RolloutsService {\n\t/**\n\t * Create a new rollout for an application\n\t * A rollout can be used to update the application's configuration across instances with minimal downtime.\n\t * @param applicationId\n\t * @param requestBody\n\t * @returns ApplicationRollout\n\t * @throws ApiError\n\t */\n\tpublic static createApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trequestBody: CreateApplicationRolloutRequest\n\t): CancelablePromise<ApplicationRollout> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/rollouts\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't update the application rollout because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List rollouts\n\t * List all rollouts within an application\n\t * @param applicationId\n\t * @param limit The amount of rollouts to return. By default it is all of them.\n\t * @param last The last rollout that was used to paginate\n\t * @returns ApplicationRollout\n\t * @throws ApiError\n\t */\n\tpublic static listApplicationRollouts(\n\t\tapplicationId: ApplicationID,\n\t\tlimit?: number,\n\t\tlast?: string\n\t): CancelablePromise<Array<ApplicationRollout>> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/rollouts\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t},\n\t\t\tquery: {\n\t\t\t\tlimit: limit,\n\t\t\t\tlast: last,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get a rollout by id within an application\n\t * View rollout configurations and state for a specific rollout\n\t * @param applicationId\n\t * @param rolloutId\n\t * @returns ApplicationRollout\n\t * @throws ApiError\n\t */\n\tpublic static getApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trolloutId: RolloutID\n\t): CancelablePromise<ApplicationRollout> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/applications/{application_id}/rollouts/{rollout_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\trollout_id: rolloutId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Update a rollout within an application\n\t * A rollout can be updated to modify its current state. Actions include - next, previous, rollback\n\t * @param applicationId\n\t * @param rolloutId\n\t * @param requestBody\n\t * @returns UpdateRolloutResponse\n\t * @throws ApiError\n\t */\n\tpublic static updateApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trolloutId: RolloutID,\n\t\trequestBody: UpdateApplicationRolloutRequest\n\t): CancelablePromise<UpdateRolloutResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/applications/{application_id}/rollouts/{rollout_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\trollout_id: rolloutId,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Can't create the application rollout because it has bad inputs`,\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete a rollout within an application by its rollout id\n\t * Cleans up the specific rollout from the Application if it is not in use\n\t * @param applicationId\n\t * @param rolloutId\n\t * @returns EmptyResponse\n\t * @throws ApiError\n\t */\n\tpublic static deleteApplicationRollout(\n\t\tapplicationId: ApplicationID,\n\t\trolloutId: RolloutID\n\t): CancelablePromise<EmptyResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/applications/{application_id}/rollouts/{rollout_id}\",\n\t\t\tpath: {\n\t\t\t\tapplication_id: applicationId,\n\t\t\t\trollout_id: rolloutId,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when an Application is not found`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { GenericMessageResponse } from \"../models/GenericMessageResponse\";\nimport type { ListSecretsMetadata } from \"../models/ListSecretsMetadata\";\nimport type { ModifySecretRequestBody } from \"../models/ModifySecretRequestBody\";\nimport type { Secret } from \"../models/Secret\";\nimport type { SecretMetadata } from \"../models/SecretMetadata\";\n\nexport class SecretsService {\n\t/**\n\t * Add a new secret to the account\n\t * Add a new secret to the account that can be associated with an application/deployment.\n\t * @param requestBody\n\t * @returns SecretMetadata Secret created successfully\n\t * @throws ApiError\n\t */\n\tpublic static createSecret(\n\t\trequestBody: Secret\n\t): CancelablePromise<SecretMetadata> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/secrets\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Bad Request`,\n\t\t\t\t409: `Secret with this name already exists in this account`,\n\t\t\t\t500: `Generic error response`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List Secrets\n\t * List all secrets in an account with metadata\n\t * @returns ListSecretsMetadata List Secrets response\n\t * @throws ApiError\n\t */\n\tpublic static listSecrets(): CancelablePromise<ListSecretsMetadata> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/secrets\",\n\t\t\terrors: {\n\t\t\t\t500: `Generic error response`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Get secret metadata\n\t * Get secret metadata by name\n\t * @param secretName\n\t * @returns SecretMetadata Get secret response\n\t * @throws ApiError\n\t */\n\tpublic static getSecret(\n\t\tsecretName: string\n\t): CancelablePromise<SecretMetadata> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/secrets/{secretName}\",\n\t\t\tpath: {\n\t\t\t\tsecretName: secretName,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t404: `Secret not found error`,\n\t\t\t\t500: `Generic error response`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Update an existing secret\n\t * Update a secret within an account. This bumps its version field. Corresponding applications/deployments would get the updated secret in its next placement.\n\t * @param secretName\n\t * @param requestBody\n\t * @returns SecretMetadata Modify Secrets response\n\t * @throws ApiError\n\t */\n\tpublic static modifySecret(\n\t\tsecretName: string,\n\t\trequestBody: ModifySecretRequestBody\n\t): CancelablePromise<SecretMetadata> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"PATCH\",\n\t\t\turl: \"/secrets/{secretName}\",\n\t\t\tpath: {\n\t\t\t\tsecretName: secretName,\n\t\t\t},\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t400: `Bad Request`,\n\t\t\t\t404: `Secret not found error`,\n\t\t\t\t500: `Generic error response`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete an existing secret\n\t * Delete a secret within an account.\n\t * @param secretName\n\t * @returns GenericMessageResponse Generic OK response\n\t * @throws ApiError\n\t */\n\tpublic static deleteSecret(\n\t\tsecretName: string\n\t): CancelablePromise<GenericMessageResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/secrets/{secretName}\",\n\t\t\tpath: {\n\t\t\t\tsecretName: secretName,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t404: `Secret not found error`,\n\t\t\t\t500: `Generic error response`,\n\t\t\t},\n\t\t});\n\t}\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { OpenAPI } from \"../core/OpenAPI\";\nimport { request as __request } from \"../core/request\";\nimport type { CancelablePromise } from \"../core/CancelablePromise\";\nimport type { CreateSSHPublicKeyRequestBody } from \"../models/CreateSSHPublicKeyRequestBody\";\nimport type { EmptyResponse } from \"../models/EmptyResponse\";\nimport type { ListSSHPublicKeys } from \"../models/ListSSHPublicKeys\";\nimport type { SSHPublicKeyItem } from \"../models/SSHPublicKeyItem\";\n\nexport class SshPublicKeysService {\n\t/**\n\t * Add SSH public key\n\t * Adds a new ssh public key to an account. This can then be associated with a specific deployment during its creation or modification.\n\t * @param requestBody\n\t * @returns SSHPublicKeyItem SSH Public key added successfully\n\t * @throws ApiError\n\t */\n\tpublic static createSshPublicKey(\n\t\trequestBody: CreateSSHPublicKeyRequestBody\n\t): CancelablePromise<SSHPublicKeyItem> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"/ssh-public-keys\",\n\t\t\tbody: requestBody,\n\t\t\tmediaType: \"application/json\",\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `Create SSH Public key error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * List SSH Public keys\n\t * List all SSH Public keys in an account\n\t * @returns ListSSHPublicKeys List SSH Public keys response\n\t * @throws ApiError\n\t */\n\tpublic static listSshPublicKeys(): CancelablePromise<ListSSHPublicKeys> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"/ssh-public-keys\",\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t500: `List SSH Public keys error`,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Delete SSH public key from the account\n\t * Delete an SSH public key from an account.\n\t * @param sshPublicKeyName\n\t * @returns EmptyResponse SSH Public key was removed successfully\n\t * @throws ApiError\n\t */\n\tpublic static deleteSshPublicKey(\n\t\tsshPublicKeyName: string\n\t): CancelablePromise<EmptyResponse> {\n\t\treturn __request(OpenAPI, {\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: \"/ssh-public-keys/{sshPublicKeyName}\",\n\t\t\tpath: {\n\t\t\t\tsshPublicKeyName: sshPublicKeyName,\n\t\t\t},\n\t\t\terrors: {\n\t\t\t\t401: `Unauthorized`,\n\t\t\t\t404: `Response body when the SSH public key that is trying to be found does not exist`,\n\t\t\t\t500: `There has been an internal error`,\n\t\t\t},\n\t\t});\n\t}\n}\n","import type {\n\tFetchPagedListResultFetcher,\n\tFetchResultFetcher,\n\tLogger,\n} from \"@cloudflare/workers-utils\";\n\nconst noop = () => {};\n\nexport let logger: Logger = {\n\tdebug: noop,\n\tlog: noop,\n\tinfo: noop,\n\twarn: noop,\n\terror: noop,\n};\n\nexport let fetchResult: FetchResultFetcher = () => {\n\tthrow new Error(\"initContainersSharedContext() must be called first\");\n};\n\nexport let fetchPagedListResult: FetchPagedListResultFetcher = () => {\n\tthrow new Error(\"initContainersSharedContext() must be called first\");\n};\n\nexport type ContainersSharedContext = {\n\tlogger: Logger;\n\tfetchResult: FetchResultFetcher;\n\tfetchPagedListResult?: FetchPagedListResultFetcher;\n};\n\nexport function initContainersSharedContext(\n\tctx: ContainersSharedContext\n): void {\n\tlogger = ctx.logger;\n\tfetchResult = ctx.fetchResult;\n\tif (ctx.fetchPagedListResult !== undefined) {\n\t\tfetchPagedListResult = ctx.fetchPagedListResult;\n\t}\n}\n","import { getCloudflareContainerRegistry } from \"./knobs\";\nimport type { ComplianceConfig } from \"@cloudflare/workers-utils/compliance\";\n\n/**\n * Adds the Cloudflare account namespace to an image tag in the managed registry.\n *\n * @param accountID - Cloudflare account ID that owns the image.\n * @param tag - Image name and tag to namespace.\n * @param complianceConfig - Compliance configuration used to select the managed registry.\n * @returns The fully qualified managed-registry image reference.\n */\nexport const getCloudflareRegistryWithAccountNamespace = (\n\taccountID: string,\n\ttag: string,\n\tcomplianceConfig?: ComplianceConfig\n): string => {\n\treturn `${getCloudflareContainerRegistry(complianceConfig)}/${accountID}/${tag}`;\n};\n\nexport const MF_DEV_CONTAINER_PREFIX = \"cloudflare-dev\";\n","import {\n\tCOMPLIANCE_REGION_CONFIG_UNKNOWN,\n\tgetComplianceRegionSubdomain,\n} from \"@cloudflare/workers-utils/compliance\";\nimport { MF_DEV_CONTAINER_PREFIX } from \"./registry\";\nimport type { ComplianceConfig } from \"@cloudflare/workers-utils/compliance\";\n\nexport function getCloudflareContainerRegistry(\n\tcomplianceConfig: ComplianceConfig = COMPLIANCE_REGION_CONFIG_UNKNOWN\n): string {\n\tif (process.env.CLOUDFLARE_CONTAINER_REGISTRY) {\n\t\treturn process.env.CLOUDFLARE_CONTAINER_REGISTRY;\n\t}\n\n\tconst environmentPrefix =\n\t\tprocess.env.WRANGLER_API_ENVIRONMENT === \"staging\" ? \"staging.\" : \"\";\n\tconst complianceRegionSubdomain =\n\t\tgetComplianceRegionSubdomain(complianceConfig);\n\n\treturn `${environmentPrefix}registry${complianceRegionSubdomain}.cloudflare.com`;\n}\n\n/** Prefixes with the cloudflare-dev namespace. The name should be the container's DO classname, and the tag a build uuid. */\nexport const getDevContainerImageName = (name: string, tag: string) => {\n\treturn `${MF_DEV_CONTAINER_PREFIX}/${name.toLowerCase()}:${tag}`;\n};\n\n/**\n * Docker's FUSE requirements: expose the device, allow mounts through\n * `SYS_ADMIN`, and disable the entire default AppArmor profile because it\n * blocks FUSE mounts.\n */\nexport const FUSE_CONTAINER_PRIVILEGES = {\n\tcapabilities: [\"SYS_ADMIN\"],\n\tdevices: [\n\t\t{\n\t\t\tpathOnHost: \"/dev/fuse\",\n\t\t\tpathInContainer: \"/dev/fuse\",\n\t\t\tcgroupPermissions: \"rwm\",\n\t\t},\n\t],\n\tsecurityOpt: [\"apparmor:unconfined\"],\n};\n","import { spawn } from \"node:child_process\";\nimport { UserError } from \"@cloudflare/workers-utils/errors\";\nimport { ImageRegistriesService, ImageRegistryPermissions } from \"./client\";\nimport { OpenAPI } from \"./client/core/OpenAPI\";\n\nexport function configureOpenAPIForContainerPull(\n\taccountId: string,\n\tapiToken: string,\n\tapiBase = \"https://api.cloudflare.com/client/v4\"\n): void {\n\tOpenAPI.BASE = `${apiBase}/accounts/${accountId}/containers`;\n\tOpenAPI.CREDENTIALS = \"omit\";\n\tconst existingHeaders =\n\t\ttypeof OpenAPI.HEADERS === \"object\" ? OpenAPI.HEADERS : {};\n\tOpenAPI.HEADERS = {\n\t\t...existingHeaders,\n\t\tAuthorization: `Bearer ${apiToken}`,\n\t};\n}\n\n/**\n * Gets push and pull credentials for a configured image registry\n * and runs `docker login`, so subsequent image pushes or pulls are\n * authenticated\n */\nexport async function dockerLoginImageRegistry(\n\tpathToDocker: string,\n\tdomain: string\n) {\n\t// how long the credentials should be valid for\n\tconst expirationMinutes = 15;\n\n\tconst credentials =\n\t\tawait ImageRegistriesService.generateImageRegistryCredentials(domain, {\n\t\t\texpiration_minutes: expirationMinutes,\n\t\t\tpermissions: [\n\t\t\t\tImageRegistryPermissions.PUSH,\n\t\t\t\tImageRegistryPermissions.PULL,\n\t\t\t],\n\t\t});\n\n\tconst child = spawn(\n\t\tpathToDocker,\n\t\t[\"login\", \"--password-stdin\", \"--username\", credentials.username, domain],\n\t\t{ stdio: [\"pipe\", \"inherit\", \"inherit\"] }\n\t).on(\"error\", (err) => {\n\t\tthrow err;\n\t});\n\n\tchild.stdin.write(credentials.password);\n\tchild.stdin.end();\n\tawait new Promise<void>((resolve, reject) => {\n\t\tchild.on(\"close\", (code) => {\n\t\t\tif (code === 0) {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\treject(\n\t\t\t\t\tnew UserError(`Login failed with code: ${code}`, {\n\t\t\t\t\t\ttelemetryMessage: false,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t});\n}\n","import { spawn } from \"node:child_process\";\nimport { UserError } from \"@cloudflare/workers-utils/errors\";\n\nexport async function dockerImageInspect(\n\tdockerPath: string,\n\toptions: { imageTag: string; formatString: string }\n): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst proc = spawn(\n\t\t\tdockerPath,\n\t\t\t[\"image\", \"inspect\", options.imageTag, \"--format\", options.formatString],\n\t\t\t{\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\t}\n\t\t);\n\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\n\t\tproc.stdout.on(\"data\", (chunk) => (stdout += chunk));\n\t\tproc.stderr.on(\"data\", (chunk) => (stderr += chunk));\n\n\t\tproc.on(\"close\", (code) => {\n\t\t\tif (code !== 0) {\n\t\t\t\treturn reject(\n\t\t\t\t\tnew UserError(`failed inspecting image locally: ${stderr.trim()}`, {\n\t\t\t\t\t\ttelemetryMessage: false,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tresolve(stdout.trim());\n\t\t});\n\t\tproc.on(\"error\", (err) => reject(err));\n\t});\n}\n","import {\n\texecFile,\n\texecFileSync,\n\tspawn,\n\ttype StdioOptions,\n} from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { existsSync } from \"node:fs\";\nimport { release } from \"node:os\";\nimport { UserError } from \"@cloudflare/workers-utils/errors\";\nimport { dockerImageInspect } from \"./inspect\";\nimport type { ContainerDevOptions } from \"./types\";\n\n/** helper for simple docker command call that don't require any io handling */\nexport const runDockerCmd = (\n\tdockerPath: string,\n\targs: string[],\n\tstdio?: StdioOptions\n): {\n\tabort: () => void;\n\tready: Promise<{ aborted: boolean }>;\n\t// Note: we make the return type a thenable just for convenience so that callers can directly await it\n\tthen: (resolve: () => void, reject: () => void) => void;\n} => {\n\tlet aborted = false;\n\tlet resolve: (args: { aborted: boolean }) => void;\n\tlet reject: (err: unknown) => void;\n\tconst ready = new Promise<{ aborted: boolean }>((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\tconst child = spawn(dockerPath, args, {\n\t\tstdio: stdio ?? \"inherit\",\n\t\t// We need to set detached to true so that the child process\n\t\t// will control all of its child processes and we can kill\n\t\t// all of them in case we need to abort the build process.\n\t\t// On Windows, detached: true opens a new console window per child\n\t\t// process, so we only set it on non-Windows platforms.\n\t\tdetached: process.platform !== \"win32\",\n\t\t// Prevent child processes from opening visible console windows on Windows.\n\t\t// This is a no-op on non-Windows platforms.\n\t\twindowsHide: true,\n\t});\n\tlet errorHandled = false;\n\n\tchild.on(\"close\", (code) => {\n\t\tif (code === 0 || aborted) {\n\t\t\tresolve({ aborted });\n\t\t} else if (!errorHandled) {\n\t\t\terrorHandled = true;\n\t\t\treject(\n\t\t\t\tnew UserError(`Docker command exited with code: ${code}`, {\n\t\t\t\t\ttelemetryMessage: false,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n\tchild.on(\"error\", (err) => {\n\t\tif (!errorHandled) {\n\t\t\terrorHandled = true;\n\t\t\treject(\n\t\t\t\tnew UserError(`Docker command failed: ${err.message}`, {\n\t\t\t\t\ttelemetryMessage: false,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n\treturn {\n\t\tabort: () => {\n\t\t\taborted = true;\n\t\t\tchild.unref();\n\t\t\tif (child.pid !== undefined) {\n\t\t\t\tif (process.platform === \"win32\") {\n\t\t\t\t\t// On Windows, negative-PID process group kill is not supported.\n\t\t\t\t\t// Kill the child process directly instead.\n\t\t\t\t\tchild.kill();\n\t\t\t\t} else {\n\t\t\t\t\t// Kill using the negative PID to terminate the whole process group\n\t\t\t\t\t// controlled by the child process.\n\t\t\t\t\tprocess.kill(-child.pid);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tready,\n\t\tthen: async (onResolve, onReject) => ready.then(onResolve).catch(onReject),\n\t};\n};\n\nexport const runDockerCmdWithOutput = (dockerPath: string, args: string[]) => {\n\ttry {\n\t\tconst stdout = execFileSync(dockerPath, args, { encoding: \"utf8\" });\n\t\treturn stdout.trim();\n\t} catch (error) {\n\t\tthrow new UserError(\n\t\t\t`Failed running docker command: ${(error as Error).message}. Command: ${dockerPath} ${args.join(\" \")}`,\n\t\t\t{ telemetryMessage: false }\n\t\t);\n\t}\n};\n\n/**\n * Permit elevated container options only when the selected daemon adds an\n * isolation boundary. Rootless Docker limits `SYS_ADMIN` to its user\n * namespace. Local Docker engines on macOS and through WSL run their Linux\n * daemon in a VM.\n */\nexport async function containerPrivilegesAllowed(\n\tdockerHost: string,\n\tdockerPath = \"docker\"\n): Promise<boolean> {\n\tconst platform = process.platform;\n\tif (\n\t\t!isLocalDockerEndpoint(dockerHost) ||\n\t\t(platform !== \"darwin\" && platform !== \"linux\")\n\t) {\n\t\treturn false;\n\t}\n\n\tconst securityOptions = await getDockerSecurityOptions(\n\t\tdockerPath,\n\t\tdockerHost\n\t);\n\tconst rootless =\n\t\tArray.isArray(securityOptions) &&\n\t\tsecurityOptions.some(\n\t\t\t(option) => option === \"name=rootless\" || option === \"rootless\"\n\t\t);\n\tconst localVm =\n\t\tplatform === \"darwin\" || (platform === \"linux\" && detectWsl());\n\tconst localRootlessLinux =\n\t\tplatform === \"linux\" && existsSync(\"/dev/fuse\") && rootless;\n\n\treturn localVm || localRootlessLinux;\n}\n\n/** Checks that workerd will connect to a local Unix socket. */\nfunction isLocalDockerEndpoint(dockerHost: string): boolean {\n\ttry {\n\t\tconst url = new URL(dockerHost);\n\t\treturn (\n\t\t\turl.protocol === \"unix:\" &&\n\t\t\turl.hostname === \"\" &&\n\t\t\turl.pathname.startsWith(\"/\")\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/** Reads the daemon security configuration with the selected Docker CLI. */\nasync function getDockerSecurityOptions(\n\tdockerPath: string,\n\tdockerHost: string\n): Promise<unknown> {\n\tconst output = await new Promise<string>((resolve, reject) => {\n\t\texecFile(\n\t\t\tdockerPath,\n\t\t\t[\"--host\", dockerHost, \"info\", \"--format\", \"{{json .SecurityOptions}}\"],\n\t\t\t{ encoding: \"utf8\", timeout: 5_000 },\n\t\t\t(error, stdout) => {\n\t\t\t\tif (error === null) {\n\t\t\t\t\tresolve(stdout);\n\t\t\t\t} else {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\treturn JSON.parse(output);\n}\n\n/**\n * WSL is detected from the kernel release because its environment variables\n * can be removed or changed by the calling process.\n */\nfunction detectWsl(): boolean {\n\treturn (\n\t\tprocess.platform === \"linux\" &&\n\t\trelease().toLowerCase().includes(\"microsoft\")\n\t);\n}\n\n/** Checks whether docker is running on the system */\nexport const isDockerRunning = async (dockerPath: string) => {\n\ttry {\n\t\tawait runDockerCmd(dockerPath, [\"info\"], [\"inherit\", \"pipe\", \"pipe\"]);\n\t} catch {\n\t\t// We assume this command is unlikely to fail for reasons other than the Docker daemon not running, or the Docker CLI not being installed or in the PATH.\n\t\treturn false;\n\t}\n\treturn true;\n};\n\n/** Options for verifying that Docker is installed and the daemon is running. */\nexport type VerifyDockerInstalledOptions = {\n\t/** Path to the Docker CLI executable. */\n\tdockerPath: string;\n\t/**\n\t * Human-readable description of the operation that requires Docker,\n\t * e.g. `\"running dev\"`, `\"deploying\"`.\n\t * When provided, the error headline reads \"... before ${operation} ...\".\n\t * When omitted, the \"before ...\" clause is left out entirely.\n\t */\n\toperation?: string;\n\t/**\n\t * Noun describing what needs to be built, used in the error headline.\n\t * For example `\"the configured image\"` or `\"the configured images\"`.\n\t */\n\timageNoun: string;\n\t/**\n\t * Optional context-specific hint appended at the end of the error message.\n\t * When omitted, no hint paragraph is included.\n\t */\n\thint?: string;\n};\n\n/**\n * Verifies that Docker is installed and the daemon is running.\n *\n * @throws {UserError} If the Docker CLI cannot be reached.\n *\n * @param options - Docker verification options.\n * @param options.dockerPath - Path to the Docker CLI executable.\n * @param options.operation - Optional human-readable operation description for the error message\n * headline. When provided, produces \"before ${operation}\". When omitted, the clause is skipped.\n * @param options.imageNoun - Noun describing what needs to be built (e.g. \"the configured image\").\n * @param options.hint - Optional context-specific hint appended to the error message.\n */\nexport const verifyDockerInstalled = async ({\n\tdockerPath,\n\toperation,\n\timageNoun,\n\thint,\n}: VerifyDockerInstalledOptions) => {\n\tconst dockerIsRunning = await isDockerRunning(dockerPath);\n\tif (!dockerIsRunning) {\n\t\tthrow new UserError(\n\t\t\tgetFailedToRunDockerErrorMessage({\n\t\t\t\toperation,\n\t\t\t\timageNoun,\n\t\t\t\thint,\n\t\t\t}),\n\t\t\t{\n\t\t\t\ttelemetryMessage: false,\n\t\t\t}\n\t\t);\n\t}\n};\n\n/**\n * Builds the user-facing error message shown when Docker cannot be reached.\n *\n * @param options - Options controlling the error message content.\n * @param options.operation - Optional human-readable operation description for the headline.\n * @param options.imageNoun - Noun describing what needs to be built.\n * @param options.hint - Optional context-specific hint paragraph.\n *\n * @returns The formatted error message string.\n */\nfunction getFailedToRunDockerErrorMessage({\n\toperation,\n\timageNoun,\n\thint,\n}: Omit<VerifyDockerInstalledOptions, \"dockerPath\">): string {\n\tconst beforeOperation = operation ? ` before ${operation}` : \"\";\n\tconst headline = `The Docker CLI is needed to build ${imageNoun}${beforeOperation} but could not be launched.`;\n\n\tlet daemonHint: string;\n\tif (process.platform === \"darwin\") {\n\t\tdaemonHint = \"open the Docker Desktop app or run `open -a Docker`\";\n\t} else if (process.platform === \"win32\") {\n\t\tdaemonHint = \"open the Docker Desktop app\";\n\t} else {\n\t\tdaemonHint = \"run `sudo systemctl start docker`\";\n\t}\n\n\tconst steps =\n\t\t\"To fix this, try the following:\\n\" +\n\t\t\" - If Docker is not installed, download it from https://docs.docker.com/get-started/get-docker/\\n\" +\n\t\t` - If Docker is installed but the daemon is not running,\\n ${daemonHint}.\\n` +\n\t\t\" - If you use an alternative Docker-compatible CLI (e.g. Podman),\\n set the WRANGLER_DOCKER_BIN environment variable to its path and DOCKER_HOST to its socket.\";\n\n\tconst alternatives =\n\t\t\"Note: Other container tooling that is compatible with the Docker CLI and engine may work, but is not yet guaranteed to do so.\";\n\n\tlet message = `${headline}\\n${steps}\\n\\n${alternatives}`;\n\tif (hint) {\n\t\tmessage += `\\n\\n${hint}`;\n\t}\n\n\treturn message;\n}\n\n/**\n * Kills and removes any containers which come from the given image tag\n */\nexport const cleanupContainers = (\n\tdockerPath: string,\n\timageTags: Set<string>\n) => {\n\ttry {\n\t\t// Find all containers (stopped and running) for each built image\n\t\tconst containerIds = getContainerIdsByImageTags(dockerPath, imageTags);\n\n\t\tif (containerIds.length === 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Workerd should have stopped all containers, but clean up any in case. Sends a sigkill.\n\t\trunDockerCmdWithOutput(dockerPath, [\"rm\", \"--force\", ...containerIds]);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/**\n * See https://docs.docker.com/reference/cli/docker/container/ls/#ancestor\n *\n * @param dockerPath The path to the Docker executable\n * @param imageTags A set of ancestor image tags\n * @returns The ids of all containers that share the given image tags as ancestors.\n */\nexport function getContainerIdsByImageTags(\n\tdockerPath: string,\n\timageTags: Set<string>\n): string[] {\n\tconst ids = new Set<string>();\n\n\tfor (const imageTag of imageTags) {\n\t\tconst containerIdsFromImage = getContainerIdsFromImage(\n\t\t\tdockerPath,\n\t\t\timageTag\n\t\t);\n\t\tcontainerIdsFromImage.forEach((id) => ids.add(id));\n\t}\n\n\treturn Array.from(ids);\n}\n\nexport const getContainerIdsFromImage = (\n\tdockerPath: string,\n\tancestorImage: string\n) => {\n\tconst output = runDockerCmdWithOutput(dockerPath, [\n\t\t\"ps\",\n\t\t\"-a\",\n\t\t\"--filter\",\n\t\t`ancestor=${ancestorImage}`,\n\t\t\"--format\",\n\t\t\"{{.ID}}\",\n\t]);\n\treturn output.split(\"\\n\").filter((line) => line.trim());\n};\n\n/**\n * While all ports are exposed in prod, a limitation of local dev with docker is that\n * users will have to manually expose ports in their Dockerfile.\n * We want to fail early and clearly if a user tries to develop with a container\n * that has no ports exposed and is definitely not accessible.\n *\n * (A user could still use `getTCPPort()` on a port that is not exposed, but we leave that error for runtime.)\n */\nexport async function checkExposedPorts(\n\tdockerPath: string,\n\toptions: ContainerDevOptions\n) {\n\tconst output = await dockerImageInspect(dockerPath, {\n\t\timageTag: options.image_tag,\n\t\tformatString: \"{{ len .Config.ExposedPorts }}\",\n\t});\n\tif (output === \"0\") {\n\t\tthrow new UserError(\n\t\t\t`The container \"${options.class_name}\" does not expose any ports. In your Dockerfile, please expose any ports you intend to connect to.\\n` +\n\t\t\t\t\"For additional information please see: https://developers.cloudflare.com/containers/local-dev/#exposing-ports.\\n\",\n\t\t\t{ telemetryMessage: false }\n\t\t);\n\t}\n}\n\n/**\n * Generates a random container build id\n */\nexport function generateContainerBuildId() {\n\treturn randomUUID().slice(0, 8);\n}\n\n/**\n * Output of docker context ls --format json\n */\ntype DockerContext = {\n\tCurrent: boolean;\n\tDescription: string;\n\tDockerEndpoint: string;\n\tError: string;\n\tName: string;\n};\n\n/**\n * Run `docker context ls` to get the socket from the currently active Docker context\n * @returns The socket path or null if we are not able to determine it\n */\nexport function getDockerSocketFromContext(dockerPath: string): string | null {\n\ttry {\n\t\tconst output = runDockerCmdWithOutput(dockerPath, [\n\t\t\t\"context\",\n\t\t\t\"ls\",\n\t\t\t\"--format\",\n\t\t\t\"json\",\n\t\t]);\n\n\t\t// Parse each line as a separate JSON object\n\t\tconst lines = output.trim().split(\"\\n\");\n\t\tconst contexts: DockerContext[] = lines.map((line) => JSON.parse(line));\n\n\t\t// Find the current context\n\t\tconst currentContext = contexts.find((context) => context.Current === true);\n\n\t\tif (currentContext && currentContext.DockerEndpoint) {\n\t\t\treturn currentContext.DockerEndpoint;\n\t\t}\n\t} catch {\n\t\t// Fall back to null if docker context inspection fails so that we can use platform defaults\n\t}\n\treturn null;\n}\n/**\n * Resolve Docker host as follows:\n * 1. Check WRANGLER_DOCKER_HOST environment variable\n * 2. Check DOCKER_HOST environment variable\n * 3. Try to get socket from active Docker context\n * 4. Fall back to platform-specific defaults\n */\nexport function resolveDockerHost(dockerPath: string): string {\n\tif (process.env.WRANGLER_DOCKER_HOST) {\n\t\treturn process.env.WRANGLER_DOCKER_HOST;\n\t}\n\n\tif (process.env.DOCKER_HOST) {\n\t\treturn process.env.DOCKER_HOST;\n\t}\n\n\t// 3. Try to get socket from by running `docker context ls`\n\n\tconst contextSocket = getDockerSocketFromContext(dockerPath);\n\tif (contextSocket) {\n\t\treturn contextSocket;\n\t}\n\n\t// 4. Fall back to platform-specific defaults\n\t// (note windows doesn't work yet due to a runtime limitation)\n\treturn process.platform === \"win32\"\n\t\t? \"//./pipe/docker_engine\"\n\t\t: \"unix:///var/run/docker.sock\";\n}\n\n/**\n *\n * Get docker host from environment variables or platform defaults.\n * Does not use the docker context ls command, so we\n */\nexport const getDockerHostFromEnv = (): string => {\n\tconst fromEnv = process.env.WRANGLER_DOCKER_HOST ?? process.env.DOCKER_HOST;\n\n\treturn (fromEnv ?? process.platform === \"win32\")\n\t\t? \"//./pipe/docker_engine\"\n\t\t: \"unix:///var/run/docker.sock\";\n};\n\n/**\n * Get all repository tags for a given image\n */\nexport async function getImageRepoTags(\n\tdockerPath: string,\n\timageTag: string\n): Promise<string[]> {\n\ttry {\n\t\tconst output = await dockerImageInspect(dockerPath, {\n\t\t\timageTag,\n\t\t\tformatString: \"{{ range .RepoTags }}{{ . }}\\n{{ end }}\",\n\t\t});\n\t\treturn output.split(\"\\n\").filter((tag) => tag.trim() !== \"\");\n\t} catch {\n\t\treturn [];\n\t}\n}\n\n/**\n * Checks if the given image has any duplicate tags from previous dev sessions,\n * and remove them if so.\n */\nexport async function cleanupDuplicateImageTags(\n\tdockerPath: string,\n\timageTag: string\n): Promise<void> {\n\ttry {\n\t\tconst repoTags = await getImageRepoTags(dockerPath, imageTag);\n\t\tconst currentBuildId = getImageTag(imageTag);\n\t\t// Remove all cloudflare-dev tags from previous sessions except the current dev session.\n\t\tconst tagsToRemove = repoTags.filter(\n\t\t\t(tag) =>\n\t\t\t\ttag.startsWith(\"cloudflare-dev\") && getImageTag(tag) !== currentBuildId\n\t\t);\n\t\tif (tagsToRemove.length > 0) {\n\t\t\trunDockerCmdWithOutput(dockerPath, [\"rmi\", ...tagsToRemove]);\n\t\t}\n\t} catch {}\n}\n\nfunction getImageTag(imageTag: string): string | undefined {\n\tconst tagSeparatorIndex = imageTag.lastIndexOf(\":\");\n\treturn tagSeparatorIndex === -1\n\t\t? undefined\n\t\t: imageTag.slice(tagSeparatorIndex + 1);\n}\n","import { UserError } from \"@cloudflare/workers-utils/errors\";\nimport { startContainerBuild } from \"./build\";\nimport { ExternalRegistryKind } from \"./client/models/ExternalRegistryKind\";\nimport { getCloudflareContainerRegistry } from \"./knobs\";\nimport { dockerLoginImageRegistry } from \"./login\";\nimport { getCloudflareRegistryWithAccountNamespace } from \"./registry\";\nimport {\n\tcheckExposedPorts,\n\tcleanupDuplicateImageTags,\n\trunDockerCmd,\n\tverifyDockerInstalled,\n} from \"./utils\";\nimport type {\n\tContainerDevOptions,\n\tDockerfileConfig,\n\tViteLogger,\n\tWranglerLogger,\n} from \"./types\";\nimport type { ComplianceConfig } from \"@cloudflare/workers-utils/compliance\";\n\nexport const DEFAULT_CONTAINER_EGRESS_INTERCEPTOR_IMAGE =\n\t\"cloudflare/proxy-everything:3cb1195@sha256:0ef6716c52430096900b150d84a3302057d6cd2319dae7987128c85d0733e3c8\";\n\nexport function getEgressInterceptorPlatform(): string | undefined {\n\treturn process.env.MINIFLARE_CONTAINER_EGRESS_IMAGE_PLATFORM;\n}\n\nexport function getEgressInterceptorImage(): string {\n\treturn (\n\t\tprocess.env.MINIFLARE_CONTAINER_EGRESS_IMAGE ??\n\t\tDEFAULT_CONTAINER_EGRESS_INTERCEPTOR_IMAGE\n\t);\n}\n\nexport async function pullEgressInterceptorImage(\n\tdockerPath: string\n): Promise<void> {\n\tconst image = getEgressInterceptorImage();\n\tconst platform = getEgressInterceptorPlatform();\n\tconst args = [\"pull\", image];\n\tif (platform !== undefined) {\n\t\targs.push(\"--platform\", platform);\n\t}\n\tawait runDockerCmd(dockerPath, args);\n}\n\n/**\n * Pulls a prebuilt image for local container development.\n *\n * @param dockerPath - Path to the Docker CLI executable.\n * @param options - Container image and local development tag configuration.\n * @param logger - Logger used for recoverable registry credential warnings.\n * @param complianceConfig - Compliance configuration used to identify the managed registry.\n * @returns An object with an `abort` function and a `ready` promise.\n */\nexport async function pullImage(\n\tdockerPath: string,\n\toptions: Exclude<ContainerDevOptions, DockerfileConfig>,\n\tlogger: WranglerLogger | ViteLogger,\n\tcomplianceConfig?: ComplianceConfig\n): Promise<{ abort: () => void; ready: Promise<void> }> {\n\tconst domain = new URL(`http://${options.image_uri}`).hostname;\n\n\tconst isExternalRegistry =\n\t\tdomain !== getCloudflareContainerRegistry(complianceConfig);\n\ttry {\n\t\tawait dockerLoginImageRegistry(dockerPath, domain);\n\t} catch (e) {\n\t\tif (!isExternalRegistry) {\n\t\t\tthrow e;\n\t\t}\n\t\tlogger?.warn(\n\t\t\t\"Unable to retrieve configured registry credentials from Cloudflare.\" +\n\t\t\t\t\"\\nUnless this is a public image, you will need to run `wrangler containers registries configure` before deploying.\" +\n\t\t\t\t\"\\nAttempting to pull image anyway...\"\n\t\t);\n\t}\n\n\tconst pull = runDockerCmd(dockerPath, [\n\t\t\"pull\",\n\t\toptions.image_uri,\n\t\t// All containers running on our platform need to be built for amd64 architecture, but by default docker pull seems to look for an image matching the host system, so we need to specify this here\n\t\t\"--platform\",\n\t\t\"linux/amd64\",\n\t]);\n\tconst ready = pull.ready.then(async ({ aborted }: { aborted: boolean }) => {\n\t\tif (!aborted) {\n\t\t\t// re-tag image with the expected dev-formatted image tag for consistency\n\t\t\tawait runDockerCmd(dockerPath, [\n\t\t\t\t\"tag\",\n\t\t\t\toptions.image_uri,\n\t\t\t\toptions.image_tag,\n\t\t\t]);\n\t\t}\n\t});\n\n\treturn {\n\t\tabort: () => {\n\t\t\tpull.abort();\n\t\t},\n\t\tready,\n\t};\n}\n\n/**\n *\n * Builds or pulls the container images for local development. This\n * will be called before starting the local development server, and by a rebuild\n * hotkey during development.\n *\n * Because this runs when local dev starts, we also do some validation here,\n * such as checking if the Docker CLI is installed, and if the container images\n * expose any ports.\n *\n * @param args - Image preparation callbacks, Docker settings, and compliance configuration.\n * @returns A promise that resolves when all configured images are ready.\n */\nexport async function prepareContainerImagesForDev(args: {\n\tdockerPath: string;\n\tcontainerOptions: ContainerDevOptions[];\n\tonContainerImagePreparationStart: (args: {\n\t\tcontainerOptions: ContainerDevOptions;\n\t\tabort: () => void;\n\t}) => void;\n\tonContainerImagePreparationEnd: (args: {\n\t\tcontainerOptions: ContainerDevOptions;\n\t}) => void;\n\tlogger: WranglerLogger | ViteLogger;\n\tcomplianceConfig?: ComplianceConfig;\n}): Promise<void> {\n\tconst {\n\t\tdockerPath,\n\t\tcontainerOptions,\n\t\tonContainerImagePreparationStart,\n\t\tonContainerImagePreparationEnd,\n\t} = args;\n\tlet aborted = false;\n\tif (process.platform === \"win32\") {\n\t\tthrow new UserError(\n\t\t\t\"Local development with containers is currently not supported on Windows. You should use WSL instead. You can also set `enable_containers` to false if you do not need to develop the container part of your application.\",\n\t\t\t{ telemetryMessage: false }\n\t\t);\n\t}\n\tawait verifyDockerInstalled({\n\t\tdockerPath,\n\t\toperation: \"running dev\",\n\t\timageNoun:\n\t\t\tcontainerOptions.length !== 1\n\t\t\t\t? \"the configured images\"\n\t\t\t\t: \"the configured image\",\n\t\thint: \"To suppress this error if you do not intend on triggering any container instances, set dev.enable_containers to false in your Wrangler config or pass --enable-containers=false.\",\n\t});\n\tfor (const options of containerOptions) {\n\t\tif (\"dockerfile\" in options) {\n\t\t\tconst build = await startContainerBuild({\n\t\t\t\tpathToDocker: dockerPath,\n\t\t\t\tverifyDockerIsRunning: false,\n\t\t\t\tbuild: {\n\t\t\t\t\ttag: options.image_tag,\n\t\t\t\t\tpathToDockerfile: options.dockerfile,\n\t\t\t\t\tbuildContext: options.image_build_context,\n\t\t\t\t\targs: options.image_vars,\n\t\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\t},\n\t\t\t});\n\t\t\tonContainerImagePreparationStart({\n\t\t\t\tcontainerOptions: options,\n\t\t\t\tabort: () => {\n\t\t\t\t\taborted = true;\n\t\t\t\t\tbuild.abort();\n\t\t\t\t},\n\t\t\t});\n\t\t\tawait build.ready;\n\n\t\t\tonContainerImagePreparationEnd({\n\t\t\t\tcontainerOptions: options,\n\t\t\t});\n\t\t} else {\n\t\t\tconst pull = await pullImage(\n\t\t\t\tdockerPath,\n\t\t\t\toptions,\n\t\t\t\targs.logger,\n\t\t\t\targs.complianceConfig\n\t\t\t);\n\t\t\tonContainerImagePreparationStart({\n\t\t\t\tcontainerOptions: options,\n\t\t\t\tabort: () => {\n\t\t\t\t\taborted = true;\n\t\t\t\t\tpull.abort();\n\t\t\t\t},\n\t\t\t});\n\t\t\tawait pull.ready;\n\t\t\tonContainerImagePreparationEnd({\n\t\t\t\tcontainerOptions: options,\n\t\t\t});\n\t\t}\n\t\tif (!aborted) {\n\t\t\t// Clean up duplicate image tags. This is scoped to cloudflare-dev only\n\t\t\tawait cleanupDuplicateImageTags(dockerPath, options.image_tag);\n\n\t\t\tawait checkExposedPorts(dockerPath, options);\n\t\t}\n\t}\n\n\t// Pull the egress interceptor image used to intercept outbound HTTP from\n\t// containers and route it back to workerd (e.g. for interceptOutboundHttp).\n\tif (!aborted) {\n\t\tawait pullEgressInterceptorImage(dockerPath);\n\t}\n}\n\n/**\n * Resolve an image name to the full unambiguous name.\n *\n * image:tag -> prepend registry.cloudflare.com/accountid/\n * registry.cloudflare.com/image:tag -> registry.cloudflare.com/accountid/image:tag\n * registry.cloudflare.com/accountid/image:tag -> no change\n * anyother-registry.com/anything -> no change\n *\n * @param accountId - Cloudflare account ID that owns managed-registry images.\n * @param image - Image reference to normalize.\n * @param complianceConfig - Compliance configuration used to select the managed registry.\n * @returns The normalized image reference.\n */\nexport function resolveImageName(\n\taccountId: string,\n\timage: string,\n\tcomplianceConfig?: ComplianceConfig\n): string {\n\tlet url: URL | undefined;\n\ttry {\n\t\turl = new URL(`http://${image}`);\n\t} catch {\n\t\t// Invalid URL\n\t}\n\n\tif (\n\t\turl === undefined ||\n\t\t(!url.host.match(/[:.]/) && url.hostname !== \"localhost\")\n\t) {\n\t\t// Not a valid URL so assume it is in the format image:tag and prepend the registry\n\t\treturn getCloudflareRegistryWithAccountNamespace(\n\t\t\taccountId,\n\t\t\timage,\n\t\t\tcomplianceConfig\n\t\t);\n\t}\n\n\tif (url.hostname !== getCloudflareContainerRegistry(complianceConfig)) {\n\t\t// hostname not the managed registry, passthrough\n\t\treturn image;\n\t}\n\n\tif (url.pathname.startsWith(`/${accountId}`)) {\n\t\t// is managed registry and has the account id, passthrough\n\t\treturn image;\n\t}\n\n\t// check if already looks like it has an account id (32 char hex string)\n\tconst accountIdPattern = /^\\/([a-f0-9]{32})\\//;\n\tconst match = accountIdPattern.exec(url.pathname);\n\tif (match) {\n\t\tconst foundAccountId = match[1];\n\t\tif (foundAccountId !== accountId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Image \"${image}\" does not belong to your account\\nImage appears to belong to account: \"${foundAccountId}\"\\nCurrent account: \"${accountId}\"`\n\t\t\t);\n\t\t}\n\t\treturn image;\n\t}\n\n\t// is managed registry and doesn't have the account id,add it to the path\n\treturn `${url.hostname}/${accountId}${url.pathname}`;\n}\n\n/**\n * Get type of container registry, and validate.\n * We support the configured Cloudflare managed registry plus the external registries listed in\n * `acceptedRegistries` below (currently AWS ECR, DockerHub, and Google Artifact Registry).\n *\n * @param domain - Registry hostname to validate.\n * @param complianceConfig - Compliance configuration used to select the managed registry.\n * @returns The matching registry type and credential metadata.\n */\nexport const getAndValidateRegistryType = (\n\tdomain: string,\n\tcomplianceConfig?: ComplianceConfig\n): RegistryPattern => {\n\t// TODO: use parseImageName when that gets moved to this package\n\tif (domain.includes(\"://\")) {\n\t\tthrow new Error(\n\t\t\t`${domain} is invalid:\\nImage reference should not include the protocol part (e.g: registry.cloudflare.com rather than https://registry.cloudflare.com)`\n\t\t);\n\t}\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(`http://${domain}`);\n\t} catch (e) {\n\t\tif (e instanceof Error) {\n\t\t\tthrow new Error(`${domain} is invalid:\\n${e.message}`);\n\t\t}\n\t\tthrow e;\n\t}\n\n\tconst acceptedRegistries: RegistryPattern[] = [\n\t\t{\n\t\t\ttype: ExternalRegistryKind.ECR,\n\t\t\tpattern: /^[0-9]{12}\\.dkr\\.ecr\\.[a-z0-9-]+\\.amazonaws\\.com$/,\n\t\t\tname: \"AWS ECR\",\n\t\t\tsecretType: \"AWS Secret Access Key\",\n\t\t},\n\t\t{\n\t\t\ttype: ExternalRegistryKind.DOCKER_HUB,\n\t\t\tpattern: /^docker\\.io$/,\n\t\t\tname: \"DockerHub\",\n\t\t\tsecretType: \"DockerHub PAT Token\",\n\t\t},\n\t\t{\n\t\t\ttype: ExternalRegistryKind.GAR,\n\t\t\tpattern: /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?-docker\\.pkg\\.dev$/,\n\t\t\tname: \"Google Artifact Registry\",\n\t\t\tsecretType: \"Google Service Account JSON Key\",\n\t\t},\n\t\t{\n\t\t\ttype: \"cloudflare\",\n\t\t\tpattern: new RegExp(\n\t\t\t\t`^${getCloudflareContainerRegistry(complianceConfig).replace(/[\\\\.]/g, \"\\\\$&\")}$`\n\t\t\t),\n\t\t\tname: \"Cloudflare Containers Managed Registry\",\n\t\t},\n\t];\n\n\tconst match = acceptedRegistries.find((registry) =>\n\t\tregistry.pattern.test(url.hostname)\n\t);\n\n\tif (!match) {\n\t\tconst supportedRegistries = acceptedRegistries\n\t\t\t.filter((r) => r.type !== \"cloudflare\")\n\t\t\t.map((r) => r.name)\n\t\t\t.join(\", \");\n\t\tthrow new UserError(\n\t\t\t`${url.hostname} is not a supported image registry.\\nCurrently we support the following non-Cloudflare registries: ${supportedRegistries}.\\nTo use an existing image from another repository, see https://developers.cloudflare.com/containers/platform-details/image-management/#using-pre-built-container-images`,\n\t\t\t{ telemetryMessage: false }\n\t\t);\n\t}\n\n\treturn match;\n};\n\ninterface RegistryPattern {\n\ttype: ExternalRegistryKind | \"cloudflare\";\n\tsecretType?: string;\n\tpattern: RegExp;\n\tname: string;\n}\n\ntype ServiceAccountKey = {\n\tprivate_key: string;\n\tclient_email: string;\n\tprivate_key_id?: string;\n};\n\nfunction invalidGarCredentialError(): UserError {\n\treturn new UserError(\n\t\t\"The Google service account key must be a JSON key file or its base64-encoded form.\",\n\t\t{\n\t\t\ttelemetryMessage:\n\t\t\t\t\"containers registries configure invalid gar credential\",\n\t\t}\n\t);\n}\n\nfunction tryParseJson(value: string): unknown | undefined {\n\ttry {\n\t\treturn JSON.parse(value) as unknown;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction assertJsonObject(parsed: unknown): Record<string, unknown> {\n\tif (typeof parsed !== \"object\" || parsed === null) {\n\t\tthrow invalidGarCredentialError();\n\t}\n\treturn parsed as Record<string, unknown>;\n}\n\nfunction validateServiceAccountKey(\n\taccountKey: Record<string, unknown>\n): ServiceAccountKey {\n\tconst privateKey = accountKey.private_key;\n\tconst clientEmail = accountKey.client_email;\n\tconst rawPrivateKeyId = accountKey.private_key_id;\n\tif (typeof privateKey !== \"string\" || typeof clientEmail !== \"string\") {\n\t\tthrow new UserError(\n\t\t\t\"The Google service account key is missing required fields (private_key, client_email).\",\n\t\t\t{\n\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\"containers registries configure gar credential missing fields\",\n\t\t\t}\n\t\t);\n\t}\n\tif (privateKey.length === 0 || clientEmail.length === 0) {\n\t\tthrow new UserError(\n\t\t\t\"The Google service account key has an empty private_key or client_email.\",\n\t\t\t{\n\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\"containers registries configure gar credential empty fields\",\n\t\t\t}\n\t\t);\n\t}\n\tlet privateKeyId: string | undefined;\n\tif (rawPrivateKeyId === undefined) {\n\t\tprivateKeyId = undefined;\n\t} else if (\n\t\ttypeof rawPrivateKeyId === \"string\" &&\n\t\trawPrivateKeyId.length > 0\n\t) {\n\t\tprivateKeyId = rawPrivateKeyId;\n\t} else {\n\t\tthrow new UserError(\n\t\t\t\"The Google service account key has an empty or invalid private_key_id.\",\n\t\t\t{\n\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\"containers registries configure gar credential invalid private key id\",\n\t\t\t}\n\t\t);\n\t}\n\treturn {\n\t\tprivate_key: privateKey,\n\t\tclient_email: clientEmail,\n\t\tprivate_key_id: privateKeyId,\n\t};\n}\n\n/**\n * Validates a Google service account JSON key and returns it base64-encoded for\n * storage as the private credential.\n *\n * Accepts the raw JSON key contents or its base64-encoded form. Throws a\n * `UserError` if the key is malformed, or if `expectedEmail` (the\n * `--gar-email` public credential) does not match the `client_email` in the key.\n */\nexport function validateAndEncodeGarKey(\n\trawKey: string,\n\texpectedEmail: string\n): string {\n\tconst trimmed = rawKey.trim();\n\n\tlet base64Key: string;\n\tlet json: Record<string, unknown>;\n\tconst rawJson = tryParseJson(trimmed);\n\tif (rawJson !== undefined) {\n\t\tjson = assertJsonObject(rawJson);\n\t\tbase64Key = Buffer.from(trimmed, \"utf8\").toString(\"base64\");\n\t} else {\n\t\tif (trimmed.startsWith(\"-----BEGIN\")) {\n\t\t\tthrow new UserError(\n\t\t\t\t\"The provided key appears to be a PEM private key. Provide the full Google service-account JSON key file, not just the private key.\",\n\t\t\t\t{\n\t\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\t\"containers registries configure gar credential pem key\",\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tbase64Key = trimmed.replace(/\\s+/g, \"\");\n\t\tconst decodedJson = tryParseJson(\n\t\t\tBuffer.from(base64Key, \"base64\").toString(\"utf8\")\n\t\t);\n\t\tif (decodedJson === undefined) {\n\t\t\tthrow invalidGarCredentialError();\n\t\t}\n\t\tjson = assertJsonObject(decodedJson);\n\t}\n\n\tconst key = validateServiceAccountKey(json);\n\n\tif (key.client_email !== expectedEmail) {\n\t\tthrow new UserError(\n\t\t\t`The provided --gar-email \"${expectedEmail}\" does not match the service account email \"${key.client_email}\" in the key.`,\n\t\t\t{\n\t\t\t\ttelemetryMessage: \"containers registries configure gar email mismatch\",\n\t\t\t}\n\t\t);\n\t}\n\n\treturn base64Key;\n}\n","import { UserError } from \"@cloudflare/workers-utils/errors\";\nimport { AccountService, InstanceType } from \"./client\";\nimport { fetchResult, logger } from \"./context\";\nimport { dockerImageInspect } from \"./inspect\";\nimport type {\n\tCompleteAccountCustomer,\n\tCreateApplicationRequest,\n\tUserDeploymentConfiguration,\n} from \"./client\";\nimport type { ContainerNormalizedConfig } from \"./types\";\nimport type { ComplianceConfig, ContainerApp } from \"@cloudflare/workers-utils\";\n\nconst MB = 1000 * 1000;\nconst MiB = 1024 * 1024;\n\nconst instanceTypes = {\n\t// lite is the default instance type when REQUIRE_INSTANCE_TYPE is set\n\tlite: {\n\t\tvcpu: 0.0625,\n\t\tmemory_mib: 256,\n\t\tdisk_mb: 2000,\n\t},\n\tdev: {\n\t\tvcpu: 0.0625,\n\t\tmemory_mib: 256,\n\t\tdisk_mb: 2000,\n\t},\n\tbasic: {\n\t\tvcpu: 0.25,\n\t\tmemory_mib: 1024,\n\t\tdisk_mb: 4000,\n\t},\n\tstandard: {\n\t\tvcpu: 0.5,\n\t\tmemory_mib: 4096,\n\t\tdisk_mb: 8000,\n\t},\n\t\"standard-1\": {\n\t\tvcpu: 0.5,\n\t\tmemory_mib: 4096,\n\t\tdisk_mb: 8000,\n\t},\n\t\"standard-2\": {\n\t\tvcpu: 1,\n\t\tmemory_mib: 6144,\n\t\tdisk_mb: 12000,\n\t},\n\t\"standard-3\": {\n\t\tvcpu: 2,\n\t\tmemory_mib: 8192,\n\t\tdisk_mb: 16000,\n\t},\n\t\"standard-4\": {\n\t\tvcpu: 4,\n\t\tmemory_mib: 12_288,\n\t\tdisk_mb: 20000,\n\t},\n} as const;\n\nconst LEGACY_TO_CANONICAL: Record<\"dev\" | \"standard\", InstanceType> = {\n\tdev: InstanceType.LITE,\n\tstandard: InstanceType.STANDARD_1,\n};\n\nfunction configToUsage(containerConfig: ContainerNormalizedConfig): {\n\tvcpu: number;\n\tmemory_mib: number;\n\tdisk_mb: number;\n} {\n\tif (\"instance_type\" in containerConfig) {\n\t\treturn getInstanceTypeUsage(containerConfig.instance_type);\n\t}\n\n\treturn {\n\t\tvcpu: containerConfig.vcpu,\n\t\tmemory_mib: containerConfig.memory_mib,\n\t\tdisk_mb: containerConfig.disk_bytes / MB,\n\t};\n}\n\nfunction accountToLimits(account: CompleteAccountCustomer): {\n\tvcpu: number;\n\tmemory_mib: number;\n\tdisk_mb: number;\n} {\n\treturn {\n\t\tvcpu: account.limits.vcpu_per_deployment,\n\t\tmemory_mib: account.limits.memory_mib_per_deployment,\n\t\tdisk_mb: account.limits.disk_mb_per_deployment,\n\t};\n}\n\nexport function getInstanceTypeUsage(instanceType: InstanceType): {\n\tvcpu: number;\n\tmemory_mib: number;\n\tdisk_mb: number;\n} {\n\treturn instanceTypes[instanceType];\n}\n\n// The API may return a legacy alias (e.g. \"standard\") for an instance\n// type configured as its canonical name (\"standard-1\"). Normalizing ensures\n// deploy diffs don't show a phantom EDIT for instance_type.\nexport function inferInstanceType(\n\tconfig: UserDeploymentConfiguration\n): InstanceType | undefined {\n\tfor (const [instanceType, configuration] of Object.entries(instanceTypes)) {\n\t\tif (\n\t\t\tconfig.vcpu === configuration.vcpu &&\n\t\t\tconfig.memory_mib === configuration.memory_mib &&\n\t\t\tconfig.disk?.size_mb === configuration.disk_mb\n\t\t) {\n\t\t\tconst canonical =\n\t\t\t\tinstanceType in LEGACY_TO_CANONICAL\n\t\t\t\t\t? LEGACY_TO_CANONICAL[\n\t\t\t\t\t\t\tinstanceType as keyof typeof LEGACY_TO_CANONICAL\n\t\t\t\t\t\t]\n\t\t\t\t\t: undefined;\n\t\t\treturn (canonical ?? instanceType) as InstanceType;\n\t\t}\n\t}\n}\n\n/**\n * Removes any disk, memory, or vCPU set in an object's configuration. Used by\n * Cloudchamber apply to render diffs using the equivalent `instance_type`.\n */\nexport function cleanForInstanceType(\n\tapp: CreateApplicationRequest\n): ContainerApp {\n\tif (!(\"configuration\" in app)) {\n\t\treturn app as ContainerApp;\n\t}\n\n\tconst instance_type = inferInstanceType(app.configuration);\n\tif (instance_type !== undefined) {\n\t\tapp.configuration.instance_type = instance_type;\n\t}\n\n\tdelete app.configuration.disk;\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- intentionally cleaning up deprecated `memory` field\n\tdelete app.configuration.memory;\n\tdelete app.configuration.memory_mib;\n\tdelete app.configuration.vcpu;\n\n\treturn app as ContainerApp;\n}\n\nexport async function ensureContainerLimits(options: {\n\tpathToDocker: string;\n\timageTag: string;\n\taccount: CompleteAccountCustomer;\n\tcontainerConfig?: ContainerNormalizedConfig;\n}): Promise<void> {\n\tconst limits = accountToLimits(options.account);\n\tif (!options.containerConfig) {\n\t\t// In this case we are only building an image. There is no container\n\t\t// configuration to validate, but the image still needs to fit within the\n\t\t// account-level disk limit.\n\t\tawait ensureImageFitsLimits({\n\t\t\tavailableSizeInBytes: limits.disk_mb * MB,\n\t\t\tpathToDocker: options.pathToDocker,\n\t\t\timageTag: options.imageTag,\n\t\t});\n\t\treturn;\n\t}\n\n\tconst usage = configToUsage(options.containerConfig);\n\n\t// Test configuration against account limits.\n\tconst errors = [];\n\tif (usage.vcpu > limits.vcpu) {\n\t\terrors.push(\n\t\t\t`Your container configuration uses ${usage.vcpu} vCPU which exceeds the account limit of ${limits.vcpu} vCPU.`\n\t\t);\n\t}\n\tif (usage.memory_mib > limits.memory_mib) {\n\t\terrors.push(\n\t\t\t`Your container configuration uses ${usage.memory_mib} MiB of memory which exceeds the account limit of ${limits.memory_mib} MiB.`\n\t\t);\n\t}\n\tif (usage.disk_mb > limits.disk_mb) {\n\t\terrors.push(\n\t\t\t`Your container configuration uses ${usage.disk_mb} MB of disk which exceeds the account limit of ${limits.disk_mb} MB.`\n\t\t);\n\t}\n\tif (errors.length > 0) {\n\t\tthrow new UserError(`Exceeded account limits: ${errors.join(\" \")}`, {\n\t\t\ttelemetryMessage: \"cloudchamber limits account limit exceeded\",\n\t\t});\n\t}\n\n\tawait ensureImageFitsLimits({\n\t\tavailableSizeInBytes: usage.disk_mb * MB,\n\t\tpathToDocker: options.pathToDocker,\n\t\timageTag: options.imageTag,\n\t});\n}\n\nexport async function ensureImageFitsLimits(options: {\n\tavailableSizeInBytes: number;\n\tpathToDocker: string;\n\timageTag: string;\n}): Promise<void> {\n\tconst inspectOutput = await dockerImageInspect(options.pathToDocker, {\n\t\timageTag: options.imageTag,\n\t\tformatString: \"{{ .Size }} {{ len .RootFS.Layers }}\",\n\t});\n\tconst [sizeStr, layerStr] = inspectOutput.split(\" \");\n\tif (sizeStr === undefined || layerStr === undefined) {\n\t\tthrow new Error(\n\t\t\t`Expected docker image inspect output to include image size and layer count, got ${inspectOutput}`\n\t\t);\n\t}\n\tconst size = parseInt(sizeStr, 10);\n\tconst layers = parseInt(layerStr, 10);\n\n\tconst requiredSizeInBytes = Math.ceil(size * 1.1 + layers * 16 * MiB);\n\n\tlogger.debug(\n\t\t`Disk size limits when building container image: availableSize=${Math.ceil(options.availableSizeInBytes / MB)}MB, requiredSize=${Math.ceil(requiredSizeInBytes / MB)}MB`\n\t);\n\tif (options.availableSizeInBytes < requiredSizeInBytes) {\n\t\tthrow new UserError(\n\t\t\t`Image too large: needs ${Math.ceil(requiredSizeInBytes / MB)}MB, but your app is limited to images with size ${options.availableSizeInBytes / MB}MB. You need more disk for this image.`,\n\t\t\t{ telemetryMessage: \"cloudchamber limits image too large\" }\n\t\t);\n\t}\n}\n\nexport async function getContainerAccount(\n\taccountId?: string,\n\tcomplianceConfig?: ComplianceConfig\n): Promise<CompleteAccountCustomer> {\n\tif (accountId === undefined) {\n\t\treturn await AccountService.getMe();\n\t}\n\n\treturn await fetchResult<CompleteAccountCustomer>(\n\t\tcomplianceConfig ?? {},\n\t\t`/accounts/${accountId}/containers/me`\n\t);\n}\n","import { spawn } from \"node:child_process\";\nimport crypto from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getDockerPath } from \"@cloudflare/workers-utils/docker-path\";\nimport { UserError } from \"@cloudflare/workers-utils/errors\";\nimport { isDirectory } from \"@cloudflare/workers-utils/fs-helpers\";\nimport { logger } from \"./context\";\nimport { resolveImageName } from \"./images\";\nimport { dockerImageInspect } from \"./inspect\";\nimport { getCloudflareContainerRegistry } from \"./knobs\";\nimport { ensureContainerLimits, getContainerAccount } from \"./limits\";\nimport { dockerLoginImageRegistry } from \"./login\";\nimport { verifyDockerInstalled } from \"./utils\";\nimport { runDockerCmd, runDockerCmdWithOutput } from \"./utils\";\nimport type {\n\tBuildArgs,\n\tContainerNormalizedConfig,\n\tImageURIConfig,\n} from \"./types\";\nimport type { ComplianceConfig } from \"@cloudflare/workers-utils\";\n\nexport type DockerfileContainerConfig = Exclude<\n\tContainerNormalizedConfig,\n\tImageURIConfig\n>;\n\nexport type BuiltImage = {\n\tlocalTag: string;\n\tlocalTagCleaned?: boolean;\n};\n\nexport type BuiltContainerImage = BuiltImage & {\n\tcontainer: DockerfileContainerConfig;\n};\n\nexport function isDockerfileContainerConfig(\n\tcontainer: ContainerNormalizedConfig\n): container is DockerfileContainerConfig {\n\treturn \"dockerfile\" in container;\n}\n\nasync function constructBuildCommand(options: BuildArgs) {\n\tconst platform = options.platform ?? \"linux/amd64\";\n\tconst buildCmd = [\n\t\t\"build\",\n\t\t\"--load\",\n\t\t\"-t\",\n\t\toptions.tag,\n\t\t\"--platform\",\n\t\tplatform,\n\t\t\"--provenance=false\",\n\t];\n\n\tif (options.args) {\n\t\tfor (const arg in options.args) {\n\t\t\tbuildCmd.push(\"--build-arg\", `${arg}=${options.args[arg]}`);\n\t\t}\n\t}\n\tif (process.env.WRANGLER_CI_OVERRIDE_NETWORK_MODE_HOST) {\n\t\tbuildCmd.push(\"--network\", \"host\");\n\t}\n\n\tconst dockerfile = readFileSync(options.pathToDockerfile, \"utf-8\");\n\t// pipe in the dockerfile\n\tbuildCmd.push(\"-f\", \"-\");\n\tbuildCmd.push(options.buildContext);\n\tlogger?.debug(`Building image with command: ${buildCmd.join(\" \")}`);\n\treturn { buildCmd, dockerfile };\n}\n\n/**\n * `{ remoteDigest: string }` implies the image was pushed to, or already exists in,\n * the managed registry. Deployments should use this digest-pinned reference.\n *\n * `{ newTag: string }` implies the image was built locally without pushing.\n */\nexport type ImageRef = { remoteDigest: string } | { newTag: string };\n\nexport type ContainerBuildCommandArgs = {\n\tPATH: string;\n\ttag: string;\n\tpathToDocker?: string;\n\tpush: boolean;\n\tplatform?: string;\n};\n\nexport type ContainerPushCommandArgs = {\n\tTAG: string;\n\tpathToDocker?: string;\n};\n\ntype StartedContainerBuild = Awaited<ReturnType<typeof dockerBuild>>;\n\n/**\n * Builds a container image from the given container options.\n *\n * @param build - Container configuration including the Dockerfile path, build context, and image tag.\n * @param pathToDocker - Path to the Docker CLI executable.\n * @param verifyDockerIsRunning - When `true` (the default), verifies Docker is installed\n * and the daemon is running before building. Set to `false` when the caller has already\n * performed this check.\n * @returns An object with an `abort` function and a `ready` promise.\n */\nexport async function startContainerBuild({\n\tbuild,\n\tpathToDocker,\n\tverifyDockerIsRunning,\n}: {\n\tbuild: BuildArgs;\n\tpathToDocker: string;\n\tverifyDockerIsRunning?: boolean;\n}): Promise<StartedContainerBuild> {\n\tconst { buildCmd, dockerfile } = await constructBuildCommand(build);\n\treturn await dockerBuild(pathToDocker, {\n\t\tbuildCmd,\n\t\tdockerfile,\n\t\tverifyDockerIsRunning,\n\t});\n}\n\nconst DIGEST_SUFFIX_REGEXP =\n\t/@[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*:[a-fA-F0-9]{32,}$/;\nconst DIGEST_VALUE_REGEXP =\n\t/^[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*:[a-fA-F0-9]{32,}$/;\nconst TAG_SUFFIX_REGEXP = /:[\\w][\\w.-]{0,127}$/;\n\n// Based on the Docker reference grammar used by containers/image. These only\n// strip suffixes from refs that have already been normalized by resolveImageName().\nfunction getRepositoryOnly(\n\texternalAccountId: string,\n\timageTag: string,\n\tcomplianceConfig?: ComplianceConfig\n): string {\n\treturn resolveImageName(externalAccountId, imageTag, complianceConfig)\n\t\t.replace(DIGEST_SUFFIX_REGEXP, \"\")\n\t\t.replace(TAG_SUFFIX_REGEXP, \"\");\n}\n\nfunction imageRefWithDigest(\n\texternalAccountId: string,\n\timageTag: string,\n\tdigest: string,\n\tcomplianceConfig?: ComplianceConfig\n): string {\n\tif (!DIGEST_VALUE_REGEXP.test(digest)) {\n\t\tthrow new Error(\n\t\t\t`Expected image digest to match algorithm:hex format, got ${digest}`\n\t\t);\n\t}\n\treturn `${getRepositoryOnly(externalAccountId, imageTag, complianceConfig)}@${digest}`;\n}\n\nfunction findManifestDigest(manifestOutput: string): string {\n\tconst parsedManifest = JSON.parse(manifestOutput);\n\tconst digest = parsedManifest?.Descriptor?.digest;\n\tif (typeof digest !== \"string\" || digest.length === 0) {\n\t\tthrow new Error(\n\t\t\t`Expected docker manifest inspect output to include Descriptor.digest, got ${manifestOutput}`\n\t\t);\n\t}\n\treturn digest;\n}\n\nfunction findRemoteDigest(\n\trepoDigestsJson: string,\n\texternalAccountId: string,\n\timageTag: string,\n\tcomplianceConfig?: ComplianceConfig\n): string {\n\tconst parsedDigests = JSON.parse(repoDigestsJson);\n\tif (!Array.isArray(parsedDigests)) {\n\t\tthrow new Error(\n\t\t\t`Expected RepoDigests from docker inspect to be an array but got ${JSON.stringify(parsedDigests)}`\n\t\t);\n\t}\n\n\tconst repositoryOnly = getRepositoryOnly(\n\t\texternalAccountId,\n\t\timageTag,\n\t\tcomplianceConfig\n\t);\n\tlogger.debug(\"respositoryOnly:\", repositoryOnly);\n\n\t// Make sure the repository + name provided in config matches the repository\n\t// + name from the digests.\n\tconst digest = parsedDigests.find((d): d is string => {\n\t\tif (typeof d !== \"string\" || !d.includes(\"@\")) {\n\t\t\treturn false;\n\t\t}\n\t\tconst resolved = resolveImageName(externalAccountId, d, complianceConfig);\n\t\tlogger.debug(`Comparing ${resolved.split(\"@\")[0]} to ${repositoryOnly}`);\n\t\treturn resolved.split(\"@\")[0] === repositoryOnly;\n\t});\n\tif (!digest) {\n\t\tthrow new Error(\n\t\t\t`Could not find a digest for the image ${repositoryOnly}. Found digests: ${parsedDigests.join(\", \")}`\n\t\t);\n\t}\n\n\tconst [, hash] = digest.split(\"@\");\n\tassertString(hash, `Expected digest \"${digest}\" to include a hash`);\n\treturn imageRefWithDigest(\n\t\texternalAccountId,\n\t\timageTag,\n\t\thash,\n\t\tcomplianceConfig\n\t);\n}\n\nfunction assertString(\n\tvalue: string | undefined,\n\tmessage: string\n): asserts value is string {\n\tif (value === undefined) {\n\t\tthrow new Error(message);\n\t}\n}\n\nasync function tagAndPushImage({\n\tpathToDocker,\n\tsourceTag,\n\ttargetTag,\n\texternalAccountId,\n\tcomplianceConfig,\n\tcleanupSourceTag,\n}: {\n\tpathToDocker: string;\n\tsourceTag: string;\n\ttargetTag: string;\n\texternalAccountId: string;\n\tcomplianceConfig?: ComplianceConfig;\n\tcleanupSourceTag?: boolean;\n}): Promise<string> {\n\tconst namespacedImageTag = resolveImageName(\n\t\texternalAccountId,\n\t\ttargetTag,\n\t\tcomplianceConfig\n\t);\n\tawait runDockerCmd(pathToDocker, [\"tag\", sourceTag, namespacedImageTag]);\n\tif (cleanupSourceTag) {\n\t\tlogger.debug(`Untagging built image: ${sourceTag}.`);\n\t\tawait runDockerCmd(pathToDocker, [\"image\", \"rm\", sourceTag]);\n\t}\n\tawait runDockerCmd(pathToDocker, [\"push\", namespacedImageTag]);\n\treturn namespacedImageTag;\n}\n\n/**\n * Checks the remote manifest to see if there are changes, and only push if there are\n */\nexport async function pushImageIfChanged({\n\tpathToDocker,\n\tsourceTag,\n\ttargetTag,\n\tcontainerConfig,\n\taccountId,\n\tcomplianceConfig,\n\tcleanupSourceTag,\n}: {\n\tpathToDocker: string;\n\tsourceTag: string;\n\ttargetTag: string;\n\tcontainerConfig?: DockerfileContainerConfig;\n\taccountId?: string;\n\tcomplianceConfig?: ComplianceConfig;\n\tcleanupSourceTag?: boolean;\n}): Promise<ImageRef> {\n\t/**\n\t * Get `RepoDigests`:\n\t * A Docker image digest (RepoDigest) is a unique, cryptographic identifier\n\t * (SHA-256 hash) representing the content of a Docker image. Unlike tags,\n\t * which can be reused or changed, a digest is immutable and ensures that the\n\t * exact same image is pulled every time. This guarantees consistency across\n\t * different environments and deployments. Crucially this is *not* affected by\n\t * metadata changes (dockerfile only changes).\n\t * From: https://docs.docker.com/dhi/core-concepts/digests/\n\t */\n\tconst imageInfo = await dockerImageInspect(pathToDocker, {\n\t\timageTag: sourceTag,\n\t\tformatString: \"{{ json .RepoDigests }}\",\n\t});\n\tlogger.debug(`'docker image inspect ${sourceTag}':`, imageInfo);\n\n\tconst account = await getContainerAccount(accountId, complianceConfig);\n\n\tawait ensureContainerLimits({\n\t\tpathToDocker,\n\t\timageTag: sourceTag,\n\t\taccount,\n\t\tcontainerConfig,\n\t});\n\n\tawait dockerLoginImageRegistry(\n\t\tpathToDocker,\n\t\t// Won't be an external registry since this is building from a Dockerfile\n\t\t// rather than specifying an image URI.\n\t\tgetCloudflareContainerRegistry(complianceConfig)\n\t);\n\ttry {\n\t\t// We don't try to parse until this point because we don't want to fail on\n\t\t// parse errors if we won't be pushing the image anyway.\n\t\tconst remoteDigest = findRemoteDigest(\n\t\t\timageInfo,\n\t\t\taccount.external_account_id,\n\t\t\ttargetTag,\n\t\t\tcomplianceConfig\n\t\t);\n\t\tconst [, hash] = remoteDigest.split(\"@\");\n\n\t\tlogger.debug(\n\t\t\t`'docker manifest inspect -v ${resolveImageName(account.external_account_id, remoteDigest, complianceConfig)}:`\n\t\t);\n\t\t// NOTE: this is an experimental docker command so the API may change\n\t\t// and break this flow. Hopefully not!\n\t\t// http://docs.docker.com/reference/cli/docker/manifest/inspect/\n\t\t// Checks if this image already exists in the managed registry. If this\n\t\t// succeeds it means this image already exists remotely. If this errors,\n\t\t// it probably doesn't exist and we should push, which we will do in the\n\t\t// catch block.\n\t\tconst remoteManifest = runDockerCmdWithOutput(pathToDocker, [\n\t\t\t\"manifest\",\n\t\t\t\"inspect\",\n\t\t\t\"-v\",\n\t\t\tresolveImageName(\n\t\t\t\taccount.external_account_id,\n\t\t\t\tremoteDigest,\n\t\t\t\tcomplianceConfig\n\t\t\t),\n\t\t]);\n\t\tconst parsedRemoteManifest = JSON.parse(remoteManifest);\n\n\t\tif (parsedRemoteManifest.Descriptor.digest === hash) {\n\t\t\tlogger.log(\"Image already exists remotely, skipping push\");\n\t\t\tlogger.debug(\n\t\t\t\t`Untagging built image: ${sourceTag} since there was no change.`\n\t\t\t);\n\n\t\t\tawait runDockerCmd(pathToDocker, [\"image\", \"rm\", sourceTag]);\n\n\t\t\treturn { remoteDigest };\n\t\t}\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tlogger.debug(\n\t\t\t\t`Checking for local image ${sourceTag} failed with error: ${error.message}`\n\t\t\t);\n\t\t}\n\t}\n\t// Re-tag the image to include the account ID.\n\tlogger.log(\n\t\t`Image does not exist remotely, pushing: ${resolveImageName(\n\t\t\taccount.external_account_id,\n\t\t\ttargetTag,\n\t\t\tcomplianceConfig\n\t\t)}`\n\t);\n\tconst namespacedImageTag = await tagAndPushImage({\n\t\tpathToDocker,\n\t\tsourceTag,\n\t\ttargetTag,\n\t\texternalAccountId: account.external_account_id,\n\t\tcomplianceConfig,\n\t\tcleanupSourceTag,\n\t});\n\n\tlet remoteDigest: string;\n\ttry {\n\t\tconst pushedImageInfo = await dockerImageInspect(pathToDocker, {\n\t\t\timageTag: namespacedImageTag,\n\t\t\tformatString: \"{{ json .RepoDigests }}\",\n\t\t});\n\t\tremoteDigest = findRemoteDigest(\n\t\t\tpushedImageInfo,\n\t\t\taccount.external_account_id,\n\t\t\tnamespacedImageTag,\n\t\t\tcomplianceConfig\n\t\t);\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tlogger.debug(\n\t\t\t\t`Inspecting pushed image ${namespacedImageTag} failed with error: ${error.message}`\n\t\t\t);\n\t\t}\n\t\tconst remoteManifest = runDockerCmdWithOutput(pathToDocker, [\n\t\t\t\"manifest\",\n\t\t\t\"inspect\",\n\t\t\t\"-v\",\n\t\t\tnamespacedImageTag,\n\t\t]);\n\t\tremoteDigest = imageRefWithDigest(\n\t\t\taccount.external_account_id,\n\t\t\tnamespacedImageTag,\n\t\t\tfindManifestDigest(remoteManifest),\n\t\t\tcomplianceConfig\n\t\t);\n\t}\n\n\treturn { remoteDigest };\n}\n\n/**\n * Builds an image from the container build command arguments and optionally\n * pushes it to the Cloudflare managed registry.\n *\n * @param args - Parsed container build command arguments.\n * @param complianceConfig - Compliance configuration used to select the managed registry.\n * @returns A promise that resolves when the build and optional push complete.\n */\nexport async function buildCommand(\n\targs: ContainerBuildCommandArgs,\n\tcomplianceConfig?: ComplianceConfig\n) {\n\t// TODO: merge args with Wrangler config if available.\n\tif (existsSync(args.PATH) && !isDirectory(args.PATH)) {\n\t\tthrow new UserError(\n\t\t\t`${args.PATH} is not a directory. Please specify a valid directory path.`,\n\t\t\t{ telemetryMessage: \"container build invalid path\" }\n\t\t);\n\t}\n\tif (args.platform !== undefined && args.platform !== \"linux/amd64\") {\n\t\tthrow new UserError(\n\t\t\t`Unsupported platform: Platform \"${args.platform}\" is unsupported. Please use \"linux/amd64\" instead.`,\n\t\t\t{ telemetryMessage: \"container build unsupported platform\" }\n\t\t);\n\t}\n\n\tconst pathToDockerfile = join(args.PATH, \"Dockerfile\");\n\tconst pathToDocker = args.pathToDocker ?? getDockerPath();\n\n\ttry {\n\t\tconst build = await startContainerBuild({\n\t\t\tpathToDocker,\n\t\t\tbuild: {\n\t\t\t\ttag: args.tag,\n\t\t\t\tpathToDockerfile,\n\t\t\t\tbuildContext: args.PATH,\n\t\t\t\tplatform: args.platform,\n\t\t\t\t// No option to add env vars at build time...?\n\t\t\t},\n\t\t});\n\t\tawait build.ready;\n\n\t\tif (args.push) {\n\t\t\tawait pushImageIfChanged({\n\t\t\t\tpathToDocker,\n\t\t\t\tsourceTag: args.tag,\n\t\t\t\ttargetTag: args.tag,\n\t\t\t\tcomplianceConfig,\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tthrow new UserError(error.message, {\n\t\t\t\tcause: error,\n\t\t\t\ttelemetryMessage: \"container build image operation failed\",\n\t\t\t});\n\t\t}\n\t\tthrow new UserError(\"An unknown error occurred\", {\n\t\t\ttelemetryMessage: \"container build unknown error\",\n\t\t});\n\t}\n}\n\nexport async function pushCommand(\n\targs: ContainerPushCommandArgs,\n\taccountId: string,\n\tcomplianceConfig?: ComplianceConfig\n) {\n\ttry {\n\t\tconst dockerPath = args.pathToDocker ?? getDockerPath();\n\t\tawait dockerLoginImageRegistry(\n\t\t\tdockerPath,\n\t\t\tgetCloudflareContainerRegistry(complianceConfig)\n\t\t);\n\n\t\tawait checkImagePlatform(dockerPath, args.TAG);\n\t\tconst newTag = await tagAndPushImage({\n\t\t\tpathToDocker: dockerPath,\n\t\t\tsourceTag: args.TAG,\n\t\t\ttargetTag: args.TAG,\n\t\t\texternalAccountId: accountId,\n\t\t\tcomplianceConfig,\n\t\t});\n\t\tlogger.log(`Pushed image: ${newTag}`);\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tthrow new UserError(error.message, {\n\t\t\t\ttelemetryMessage: \"container push failed\",\n\t\t\t});\n\t\t}\n\n\t\tthrow new UserError(\"An unknown error occurred\", {\n\t\t\ttelemetryMessage: \"container push unknown error\",\n\t\t});\n\t}\n}\n\nasync function checkImagePlatform(\n\tpathToDocker: string,\n\timageTag: string,\n\texpectedPlatform: string = \"linux/amd64\"\n) {\n\tconst platform = await dockerImageInspect(pathToDocker, {\n\t\timageTag,\n\t\tformatString: \"{{ .Os }}/{{ .Architecture }}\",\n\t});\n\n\tif (platform !== expectedPlatform) {\n\t\tthrow new Error(\n\t\t\t`Unsupported platform: Image platform (${platform}) does not match the expected platform (${expectedPlatform})`\n\t\t);\n\t}\n}\n\n/**\n * Builds a Docker image and optionally pushes it to the Cloudflare managed\n * registry.\n *\n * @param args - Build arguments including tag, Dockerfile path, build context, and platform.\n * @param pathToDocker - Path to the Docker CLI executable.\n * @param push - Whether to push the built image to the remote registry.\n * @param containerConfig - Optional container configuration for limit validation.\n * @param verifyDockerIsRunning - Whether to verify Docker before building.\n * @param complianceConfig - Compliance configuration used to select the managed registry.\n * @returns An {@link ImageRef} describing the built or pushed image.\n */\nexport async function buildAndMaybePush(\n\targs: BuildArgs,\n\tpathToDocker: string,\n\tpush: boolean,\n\tcontainerConfig?: DockerfileContainerConfig,\n\tverifyDockerIsRunning?: boolean,\n\tcomplianceConfig?: ComplianceConfig\n): Promise<ImageRef> {\n\ttry {\n\t\tconst build = await startContainerBuild({\n\t\t\tpathToDocker,\n\t\t\tverifyDockerIsRunning,\n\t\t\tbuild: args,\n\t\t});\n\t\tawait build.ready;\n\n\t\tif (!push) {\n\t\t\treturn { newTag: args.tag };\n\t\t}\n\n\t\treturn await pushImageIfChanged({\n\t\t\tpathToDocker,\n\t\t\tsourceTag: args.tag,\n\t\t\ttargetTag: args.tag,\n\t\t\tcontainerConfig,\n\t\t\tcomplianceConfig,\n\t\t\tcleanupSourceTag: true,\n\t\t});\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tthrow new UserError(error.message, {\n\t\t\t\tcause: error,\n\t\t\t\ttelemetryMessage: \"container build image operation failed\",\n\t\t\t});\n\t\t}\n\t\tthrow new UserError(\"An unknown error occurred\", {\n\t\t\ttelemetryMessage: \"container build unknown error\",\n\t\t});\n\t}\n}\n\nasync function buildContainerImage(\n\tcontainerConfig: DockerfileContainerConfig,\n\tpathToDocker: string,\n\tverifyDockerIsRunning?: boolean\n): Promise<BuiltContainerImage> {\n\tconst localTag = `${getContainerImageRepositoryName(\n\t\tcontainerConfig\n\t)}:wrangler-${crypto.randomUUID()}`;\n\tlogger.log(\"Building image\", localTag);\n\n\ttry {\n\t\tconst build = await startContainerBuild({\n\t\t\tpathToDocker,\n\t\t\tverifyDockerIsRunning,\n\t\t\tbuild: {\n\t\t\t\ttag: localTag,\n\t\t\t\tpathToDockerfile: containerConfig.dockerfile,\n\t\t\t\tbuildContext: containerConfig.image_build_context,\n\t\t\t\targs: containerConfig.image_vars,\n\t\t\t},\n\t\t});\n\t\tawait build.ready;\n\n\t\treturn { container: containerConfig, localTag };\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tthrow new UserError(error.message, {\n\t\t\t\tcause: error,\n\t\t\t\ttelemetryMessage: \"container build image operation failed\",\n\t\t\t});\n\t\t}\n\t\tthrow new UserError(\"An unknown error occurred\", {\n\t\t\ttelemetryMessage: \"container build unknown error\",\n\t\t});\n\t}\n}\n\n/**\n * Builds configured Dockerfile-based container images for deployment.\n *\n * @param containers - Normalized container configuration.\n * @param pathToDocker - Path to the Docker CLI executable.\n * @param verifyDockerIsRunning - Whether to verify Docker before building.\n * @returns The built image metadata paired with each Dockerfile-based container.\n */\nexport async function buildContainerImages(\n\tcontainers: ContainerNormalizedConfig[],\n\tpathToDocker: string,\n\tverifyDockerIsRunning?: boolean\n): Promise<BuiltContainerImage[]> {\n\tconst builtImages: BuiltContainerImage[] = [];\n\ttry {\n\t\tfor (const container of containers.filter(isDockerfileContainerConfig)) {\n\t\t\tbuiltImages.push(\n\t\t\t\tawait buildContainerImage(\n\t\t\t\t\tcontainer,\n\t\t\t\t\tpathToDocker,\n\t\t\t\t\tverifyDockerIsRunning\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tawait cleanupBuiltImages(builtImages, pathToDocker);\n\t\tthrow error;\n\t}\n\treturn builtImages;\n}\n\n/**\n * Pushes a configured, already-built container image to the managed registry.\n *\n * @param builtImage - Built Dockerfile-based container image metadata.\n * @param versionId - Version ID used to derive the pushed image tag.\n * @param pathToDocker - Path to the Docker CLI executable.\n * @param accountId - Account that owns the managed registry.\n * @param complianceConfig - Compliance configuration used to select the managed registry.\n * @returns An {@link ImageRef} describing the pushed image.\n */\nexport async function pushBuiltContainerImage(\n\tbuiltImage: BuiltContainerImage,\n\tversionId: string,\n\tpathToDocker: string,\n\taccountId: string,\n\tcomplianceConfig?: ComplianceConfig\n): Promise<ImageRef> {\n\ttry {\n\t\tconst imageRef = await pushImageIfChanged({\n\t\t\tpathToDocker,\n\t\t\tsourceTag: builtImage.localTag,\n\t\t\ttargetTag: getContainerImageTag(builtImage.container, versionId),\n\t\t\tcontainerConfig: builtImage.container,\n\t\t\taccountId,\n\t\t\tcomplianceConfig,\n\t\t\tcleanupSourceTag: true,\n\t\t});\n\t\tbuiltImage.localTagCleaned = true;\n\t\treturn imageRef;\n\t} catch (error) {\n\t\tif (error instanceof Error) {\n\t\t\tthrow new UserError(error.message, {\n\t\t\t\tcause: error,\n\t\t\t\ttelemetryMessage: \"container build image operation failed\",\n\t\t\t});\n\t\t}\n\t\tthrow new UserError(\"An unknown error occurred\", {\n\t\t\ttelemetryMessage: \"container build unknown error\",\n\t\t});\n\t}\n}\n\n/**\n * Removes local Docker image tags created during a build.\n *\n * @param builtImages - Built images to clean up.\n * @param pathToDocker - Path to the Docker CLI executable.\n */\nexport async function cleanupBuiltImages<T extends BuiltImage>(\n\tbuiltImages: T[],\n\tpathToDocker: string\n): Promise<void> {\n\tfor (const builtImage of builtImages) {\n\t\tif (builtImage.localTagCleaned) {\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tlogger.debug(`Untagging built image: ${builtImage.localTag}.`);\n\t\t\tawait runDockerCmd(pathToDocker, [\"image\", \"rm\", builtImage.localTag]);\n\t\t\tbuiltImage.localTagCleaned = true;\n\t\t} catch (error) {\n\t\t\tif (error instanceof Error) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t`Cleaning up built image ${builtImage.localTag} failed with error: ${error.message}`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getContainerImageTag(\n\tcontainerConfig: DockerfileContainerConfig,\n\timageTag: string\n): string {\n\treturn `${getContainerImageRepositoryName(containerConfig)}:${\n\t\timageTag.split(\"-\")[0]\n\t}`;\n}\n\nfunction getContainerImageRepositoryName(\n\tcontainerConfig: DockerfileContainerConfig\n): string {\n\t// Docker rejects uppercase characters in an image repository name, and a\n\t// container application name may embed a Durable Object class name verbatim,\n\t// which is conventionally PascalCase. Lowercase the name for the image tag\n\t// only; apply still needs the exact application name.\n\treturn containerConfig.name.toLowerCase();\n}\n\n/**\n * Spawns a Docker build process and returns a handle to abort or await the build.\n *\n * By default this function first verifies that the Docker daemon is reachable.\n * Callers that have already performed this check (e.g. the dev and deploy flows)\n * should pass `verifyDockerIsRunning: false` to avoid a redundant check.\n *\n * @param dockerPath - Path to the Docker CLI executable.\n * @param options - Build options including the command arguments and Dockerfile content.\n * @param options.buildCmd - The Docker build command arguments.\n * @param options.dockerfile - The Dockerfile content to pipe into stdin.\n * @param options.verifyDockerIsRunning - When `true` (the default), verifies Docker is installed\n * and the daemon is running before spawning the build. Set to `false` to skip the check.\n *\n * @returns An object with an `abort` function and a `ready` promise.\n */\nexport async function dockerBuild(\n\tdockerPath: string,\n\toptions: {\n\t\tbuildCmd: string[];\n\t\tdockerfile: string;\n\t\tverifyDockerIsRunning?: boolean;\n\t}\n): Promise<{ abort: () => void; ready: Promise<void> }> {\n\tif (options.verifyDockerIsRunning !== false) {\n\t\tawait verifyDockerInstalled({\n\t\t\tdockerPath,\n\t\t\timageNoun: \"the image\",\n\t\t});\n\t}\n\n\tlet errorHandled = false;\n\tlet resolve: () => void;\n\tlet reject: (err: unknown) => void;\n\tconst ready = new Promise<void>((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\n\tconst child = spawn(dockerPath, options.buildCmd, {\n\t\tstdio: [\"pipe\", \"inherit\", \"inherit\"],\n\t\t// We need to set detached to true so that the child process\n\t\t// will control all of its child processes and we can kill\n\t\t// all of them in case we need to abort the build process.\n\t\t// On Windows, detached: true opens a new console window per child\n\t\t// process, so we only set it on non-Windows platforms.\n\t\tdetached: process.platform !== \"win32\",\n\t\t// Prevent child processes from opening visible console windows on Windows.\n\t\t// This is a no-op on non-Windows platforms.\n\t\twindowsHide: true,\n\t});\n\tif (child.stdin !== null) {\n\t\tchild.stdin.write(options.dockerfile);\n\t\tchild.stdin.end();\n\t}\n\n\tchild.on(\"exit\", (code) => {\n\t\tif (code === 0) {\n\t\t\tresolve();\n\t\t} else if (!errorHandled) {\n\t\t\terrorHandled = true;\n\t\t\treject(\n\t\t\t\tnew UserError(`Docker build exited with code: ${code}`, {\n\t\t\t\t\ttelemetryMessage: false,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t});\n\tchild.on(\"error\", (err) => {\n\t\tif (!errorHandled) {\n\t\t\terrorHandled = true;\n\t\t\treject(err);\n\t\t}\n\t});\n\treturn {\n\t\tabort: () => {\n\t\t\tchild.unref();\n\t\t\tif (child.pid !== undefined) {\n\t\t\t\tif (process.platform === \"win32\") {\n\t\t\t\t\t// On Windows, negative-PID process group kill is not supported.\n\t\t\t\t\t// Kill the child process directly instead.\n\t\t\t\t\tchild.kill();\n\t\t\t\t} else {\n\t\t\t\t\t// Kill using the negative PID to terminate the whole process group\n\t\t\t\t\t// controlled by the child process.\n\t\t\t\t\tprocess.kill(-child.pid);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tready,\n\t};\n}\n","// Modified code from package jsdiff (https://github.com/kpdecker/jsdiff/tree/master)\n// It's been simplified so it can basically do line diffing only\n// and we can avoid the 600kb sized package.\n//\n// Original license below:\n//\n// BSD 3-Clause License\n//\n// Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this\n// list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice,\n// this list of conditions and the following disclaimer in the documentation\n// and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nimport { log } from \"@cloudflare/cli-shared-helpers\";\nimport { green, red } from \"@cloudflare/cli-shared-helpers/colors\";\n\ntype Result = {\n\tcount: number;\n\tadded: boolean;\n\tremoved: boolean;\n\tvalue?: string;\n\tpreviousComponent?: Result;\n};\n\ntype BestPath = {\n\toldPos: number;\n\tlastComponent?: Result;\n};\n\n/**\n * @deprecated When trying to compute the difference between two json object use `diffJsonObjects` instead\n * (as it includes a more polished print representation and it also includes information regarding\n * the difference between the two objects)\n * (For diffing other values, such as TOMLs this class should still be used, hopefully we'll be\n * able to move away from TOML files at some point)\n */\nexport class Diff {\n\t#results: Result[] = [];\n\n\tget changes(): number {\n\t\treturn this.#results.filter((r) => r.added || r.removed).length;\n\t}\n\n\tconstructor(a: string, b: string) {\n\t\tconst oldString = tokenize(a);\n\t\tconst newString = tokenize(b);\n\t\tconst newLen = newString.length;\n\t\tconst oldLen = oldString.length;\n\t\tlet editLength = 1;\n\t\tconst bestPath: (BestPath | undefined)[] = [\n\t\t\t{ oldPos: -1, lastComponent: undefined },\n\t\t];\n\t\tconst initialPath = bestPath[0];\n\n\t\tif (initialPath === undefined) {\n\t\t\tthrow new Error(\"unreachable\");\n\t\t}\n\n\t\t// Seed editLength = 0, i.e. the content starts with the same values\n\t\tlet newPos = this.#extractCommon(initialPath, newString, oldString, 0);\n\t\tif (initialPath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n\t\t\t// Identity per the equality and tokenizer\n\t\t\tthis.#results = this.#buildValues(\n\t\t\t\tinitialPath.lastComponent,\n\t\t\t\tnewString,\n\t\t\t\toldString,\n\t\t\t\tfalse\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Once we hit the right edge of the edit graph on some diagonal k, we can\n\t\t// definitely reach the end of the edit graph in no more than k edits, so\n\t\t// there's no point in considering any moves to diagonal k+1 any more (from\n\t\t// which we're guaranteed to need at least k+1 more edits).\n\t\t// Similarly, once we've reached the bottom of the edit graph, there's no\n\t\t// point considering moves to lower diagonals.\n\t\t// We record this fact by setting minDiagonalToConsider and\n\t\t// maxDiagonalToConsider to some finite value once we've hit the edge of\n\t\t// the edit graph.\n\t\t// This optimization is not faithful to the original algorithm presented in\n\t\t// Myers's paper, which instead pointlessly extends D-paths off the end of\n\t\t// the edit graph - see page 7 of Myers's paper which notes this point\n\t\t// explicitly and illustrates it with a diagram. This has major performance\n\t\t// implications for some common scenarios. For instance, to compute a diff\n\t\t// where the new text simply appends d characters on the end of the\n\t\t// original text of length n, the true Myers algorithm will take O(n+d^2)\n\t\t// time while this optimization needs only O(n+d) time.\n\t\tlet minDiagonalToConsider = -Infinity;\n\t\tlet maxDiagonalToConsider = Infinity;\n\n\t\t// Main method. checks all permutations of a given edit length for acceptance.\n\t\tlet done = false;\n\t\twhile (!done) {\n\t\t\tfor (\n\t\t\t\tlet diagonalPath = Math.max(minDiagonalToConsider, -editLength);\n\t\t\t\tdiagonalPath <= Math.min(maxDiagonalToConsider, editLength);\n\t\t\t\tdiagonalPath += 2\n\t\t\t) {\n\t\t\t\tlet basePath: BestPath;\n\t\t\t\tconst removePath = bestPath[diagonalPath - 1];\n\t\t\t\tconst addPath = bestPath[diagonalPath + 1];\n\t\t\t\tif (removePath) {\n\t\t\t\t\t// No one else is going to attempt to use this value, clear it\n\t\t\t\t\tbestPath[diagonalPath - 1] = undefined;\n\t\t\t\t}\n\n\t\t\t\tlet canAdd = false;\n\t\t\t\tif (addPath) {\n\t\t\t\t\t// what newPos will be after we do an insertion:\n\t\t\t\t\tconst addPathNewPos = addPath.oldPos - diagonalPath;\n\t\t\t\t\tcanAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n\t\t\t\t}\n\n\t\t\t\tconst canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\t\t\t\tif (!canAdd && !canRemove) {\n\t\t\t\t\t// If this path is a terminal then prune\n\t\t\t\t\tbestPath[diagonalPath] = undefined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Select the diagonal that we want to branch from. We select the prior\n\t\t\t\t// path whose position in the old string is the farthest from the origin\n\t\t\t\t// and does not pass the bounds of the diff graph\n\t\t\t\tif (\n\t\t\t\t\taddPath &&\n\t\t\t\t\t(!canRemove ||\n\t\t\t\t\t\t(canAdd && (removePath?.oldPos ?? 0) < (addPath?.oldPos ?? 0)))\n\t\t\t\t) {\n\t\t\t\t\tbasePath = this.#addToPath(addPath, true, false, 0);\n\t\t\t\t} else if (removePath) {\n\t\t\t\t\tbasePath = this.#addToPath(removePath, false, true, 1);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"unreachable\");\n\t\t\t\t}\n\n\t\t\t\tnewPos = this.#extractCommon(\n\t\t\t\t\tbasePath,\n\t\t\t\t\tnewString,\n\t\t\t\t\toldString,\n\t\t\t\t\tdiagonalPath\n\t\t\t\t);\n\n\t\t\t\tif (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n\t\t\t\t\t// If we have hit the end of both strings, then we are done\n\t\t\t\t\tthis.#results = this.#buildValues(\n\t\t\t\t\t\tbasePath.lastComponent,\n\t\t\t\t\t\tnewString,\n\t\t\t\t\t\toldString,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\n\t\t\t\t\tdone = true;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbestPath[diagonalPath] = basePath;\n\t\t\t\tif (basePath.oldPos + 1 >= oldLen) {\n\t\t\t\t\tmaxDiagonalToConsider = Math.min(\n\t\t\t\t\t\tmaxDiagonalToConsider,\n\t\t\t\t\t\tdiagonalPath - 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (newPos + 1 >= newLen) {\n\t\t\t\t\tminDiagonalToConsider = Math.max(\n\t\t\t\t\t\tminDiagonalToConsider,\n\t\t\t\t\t\tdiagonalPath + 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teditLength++;\n\t\t}\n\t}\n\n\t/**\n\t * Results but refined to be printed/stringified.\n\t *\n\t * In particular the results returned here are ordered to try to avoid cases\n\t * in which an addition/removal is incorrectly split.\n\t *\n\t * For example, the standard results can produce something like:\n\t * ```\n\t * ...\n\t * - \"vars\": {\n\t * + \"vars\": {},\n\t * - \"MY_VAR\": \"variable set in the dash\"\n\t * - },\n\t * ...\n\t * ```\n\t * (notice how the first removal is separated from the last two,\n\t * making the diff much less readable).\n\t * Such change in the refined results will instead look like:\n\t * ```\n\t * ...\n\t * + \"vars\": {},\n\t * - \"vars\": {\n\t * - \"MY_VAR\": \"variable set in the dash\"\n\t * - },\n\t * ...\n\t * ```\n\t */\n\tget #resultsForPrint() {\n\t\tconst results = [\n\t\t\t...this.#results.filter((r) => !!r.value && r.value !== \"\\n\"),\n\t\t];\n\n\t\tconst swapLines = (i: number, j: number) => {\n\t\t\tconst current = results[i];\n\t\t\tconst adjacent = results[j];\n\t\t\tif (current === undefined || adjacent === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresults[i] = adjacent;\n\t\t\tresults[j] = current;\n\t\t};\n\n\t\tconst numOfLines = (str: string) => str.split(\"\\n\").length;\n\n\t\tconst isLoneResult = (index: number, target: -1 | 1): boolean => {\n\t\t\tconst currentIdx = index;\n\t\t\tconst adjacentIdx = currentIdx + target;\n\t\t\tconst nextIdx = currentIdx + target + target;\n\n\t\t\t// If any of the results we need to analize is not present we return false\n\t\t\tconst current = results[currentIdx];\n\t\t\tconst adjacent = results[adjacentIdx];\n\t\t\tconst next = results[nextIdx];\n\t\t\tif (!current || !adjacent || !next) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst previousIdx = index - target;\n\n\t\t\tconst isAlternation = (type: \"added\" | \"removed\") =>\n\t\t\t\tcurrent[type] === true &&\n\t\t\t\tresults[previousIdx]?.[type] !== current[type] &&\n\t\t\t\tadjacent[type === \"added\" ? \"removed\" : \"added\"] === true &&\n\t\t\t\tnext[type] === true;\n\n\t\t\t// If there isn't an alternation between added and removed results then we return false\n\t\t\tif (!isAlternation(\"added\") && !isAlternation(\"removed\")) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// We might have found a lone result but to make sure we need to check that the next index\n\t\t\t// contains multiple lines while the current and adjacent ones both only contain one\n\t\t\treturn (\n\t\t\t\tnumOfLines(current.value ?? \"\") === 1 &&\n\t\t\t\tnumOfLines(adjacent.value ?? \"\") === 1 &&\n\t\t\t\tnumOfLines(next.value ?? \"\") > 1\n\t\t\t);\n\t\t};\n\n\t\tfor (let i = 0; i < results.length; i++) {\n\t\t\tif (isLoneResult(i, +1)) {\n\t\t\t\tswapLines(i, i + 1);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isLoneResult(i, -1)) {\n\t\t\t\tswapLines(i, i - 1);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n\n\ttoString(\n\t\toptions: {\n\t\t\t// Number of lines of context to print before and after each diff segment\n\t\t\tcontextLines: number;\n\t\t} = {\n\t\t\tcontextLines: 3,\n\t\t}\n\t) {\n\t\tlet output = \"\";\n\t\tlet state: \"init\" | \"diff\" = \"init\";\n\t\tconst context: string[] = [];\n\n\t\tfor (const result of this.#resultsForPrint) {\n\t\t\tif (result.value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (result.added || result.removed) {\n\t\t\t\tif (state === \"diff\") {\n\t\t\t\t\t// Print the context after the last diff, if any\n\t\t\t\t\tcontext\n\t\t\t\t\t\t.splice(0, options.contextLines)\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.forEach((c) => {\n\t\t\t\t\t\t\toutput += ` ${c}\\n`;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t// Indicate gaps between context chunks\n\t\t\t\t\tif (context.length > options.contextLines) {\n\t\t\t\t\t\toutput += \"\\n ...\\n\\n\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Remove everything except the most recent context chunk\n\t\t\t\tcontext.splice(0, context.length - options.contextLines);\n\n\t\t\t\t// If we haven't printed anything yet then omit leading empty lines\n\t\t\t\tif (state === \"init\") {\n\t\t\t\t\twhile (context[0]?.trim() === \"\") {\n\t\t\t\t\t\tcontext.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontext.filter(Boolean).forEach((c) => {\n\t\t\t\t\toutput += ` ${c}\\n`;\n\t\t\t\t});\n\t\t\t\tcontext.length = 0;\n\n\t\t\t\tfor (const l of result.value.split(\"\\n\")) {\n\t\t\t\t\tif (l) {\n\t\t\t\t\t\toutput += `${result.added ? green(\"+\") : red(\"-\")} ${l}\\n`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstate = \"diff\";\n\t\t\t} else {\n\t\t\t\t// Remove trailing and leading newlines from the context\n\t\t\t\t// chunk since we add newlines ourselves when we print\n\t\t\t\tconst lines = result.value.replace(/^\\n|\\n$/g, \"\").split(\"\\n\");\n\t\t\t\tcontext.push(...lines);\n\t\t\t}\n\t\t}\n\n\t\tif (state === \"diff\") {\n\t\t\t// Trim trailing whitespace from the final context chunk\n\t\t\tcontext.splice(options.contextLines);\n\t\t\twhile (context[context.length - 1]?.trim() === \"\") {\n\t\t\t\tcontext.pop();\n\t\t\t}\n\n\t\t\tcontext.filter(Boolean).forEach((c) => {\n\t\t\t\toutput += ` ${c}\\n`;\n\t\t\t});\n\t\t}\n\n\t\treturn output.replace(/\\n$/, \"\");\n\t}\n\n\tprint(\n\t\toptions: {\n\t\t\t// Number of lines of context to print before and after each diff segment\n\t\t\tcontextLines: number;\n\t\t} = {\n\t\t\tcontextLines: 3,\n\t\t}\n\t) {\n\t\tlog(this.toString(options));\n\t}\n\n\t#addToPath(\n\t\tpath: BestPath,\n\t\tadded: boolean,\n\t\tremoved: boolean,\n\t\toldPosInc: number\n\t): BestPath {\n\t\tconst last = path.lastComponent;\n\t\tif (last && last.added === added && last.removed === removed) {\n\t\t\treturn {\n\t\t\t\toldPos: path.oldPos + oldPosInc,\n\t\t\t\tlastComponent: {\n\t\t\t\t\tcount: last.count + 1,\n\t\t\t\t\tadded: added,\n\t\t\t\t\tremoved: removed,\n\t\t\t\t\tpreviousComponent: last.previousComponent,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\toldPos: path.oldPos + oldPosInc,\n\t\t\tlastComponent: {\n\t\t\t\tcount: 1,\n\t\t\t\tadded: added,\n\t\t\t\tremoved: removed,\n\t\t\t\tpreviousComponent: last,\n\t\t\t},\n\t\t};\n\t}\n\n\t#extractCommon(\n\t\tbasePath: BestPath,\n\t\tnewString: string[],\n\t\toldString: string[],\n\t\tdiagonalPath: number\n\t) {\n\t\tconst newLen = newString.length;\n\t\tconst oldLen = oldString.length;\n\t\tlet oldPos = basePath.oldPos,\n\t\t\tnewPos = oldPos - diagonalPath,\n\t\t\tcommonCount = 0;\n\t\twhile (\n\t\t\tnewPos + 1 < newLen &&\n\t\t\toldPos + 1 < oldLen &&\n\t\t\toldString[oldPos + 1] === newString[newPos + 1]\n\t\t) {\n\t\t\tnewPos++;\n\t\t\toldPos++;\n\t\t\tcommonCount++;\n\t\t}\n\n\t\tif (commonCount) {\n\t\t\tbasePath.lastComponent = {\n\t\t\t\tcount: commonCount,\n\t\t\t\tpreviousComponent: basePath.lastComponent,\n\t\t\t\tadded: false,\n\t\t\t\tremoved: false,\n\t\t\t};\n\t\t}\n\n\t\tbasePath.oldPos = oldPos;\n\t\treturn newPos;\n\t}\n\n\t#buildValues(\n\t\tlastComponent: Result | undefined,\n\t\tnewString: string[],\n\t\toldString: string[],\n\t\tuseLongestToken: boolean\n\t): Result[] {\n\t\t// First we convert our linked list of components in reverse order to an\n\t\t// array in the right order:\n\t\tconst components: Result[] = [];\n\t\tlet nextComponent: Result | undefined;\n\t\twhile (lastComponent) {\n\t\t\tcomponents.push(lastComponent);\n\t\t\tnextComponent = lastComponent.previousComponent;\n\t\t\tdelete lastComponent.previousComponent;\n\t\t\tlastComponent = nextComponent;\n\t\t}\n\t\tcomponents.reverse();\n\n\t\tconst componentLen = components.length;\n\t\tlet componentPos = 0,\n\t\t\tnewPos = 0,\n\t\t\toldPos = 0;\n\n\t\tfor (; componentPos < componentLen; componentPos++) {\n\t\t\tconst component = components[componentPos];\n\t\t\tif (component === undefined) {\n\t\t\t\tthrow new Error(\"unreachable\");\n\t\t\t}\n\t\t\tif (!component.removed) {\n\t\t\t\tif (!component.added && useLongestToken) {\n\t\t\t\t\tlet value = newString.slice(newPos, newPos + component.count);\n\t\t\t\t\tvalue = value.map((el, i) => {\n\t\t\t\t\t\tconst oldValue = oldString[oldPos + i];\n\t\t\t\t\t\tif (oldValue !== undefined && oldValue.length > el.length) {\n\t\t\t\t\t\t\treturn oldValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn el;\n\t\t\t\t\t});\n\n\t\t\t\t\tcomponent.value = value.join(\"\");\n\t\t\t\t} else {\n\t\t\t\t\tcomponent.value = newString\n\t\t\t\t\t\t.slice(newPos, newPos + component.count)\n\t\t\t\t\t\t.join(\"\");\n\t\t\t\t}\n\t\t\t\tnewPos += component.count;\n\n\t\t\t\t// Common case\n\t\t\t\tif (!component.added) {\n\t\t\t\t\toldPos += component.count;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcomponent.value = oldString\n\t\t\t\t\t.slice(oldPos, oldPos + component.count)\n\t\t\t\t\t.join(\"\");\n\t\t\t\toldPos += component.count;\n\t\t\t}\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nfunction tokenize(value: string): string[] {\n\tconst retLines: string[] = [];\n\tconst linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n\n\t// Ignore the final empty token that occurs if the string ends with a new line\n\tif (!linesAndNewlines[linesAndNewlines.length - 1]) {\n\t\tlinesAndNewlines.pop();\n\t}\n\n\t// Merge the content and line separators into single tokens\n\tfor (let i = 0; i < linesAndNewlines.length; i++) {\n\t\tconst line = linesAndNewlines[i];\n\t\tif (line !== undefined) {\n\t\t\tretLines.push(line);\n\t\t}\n\t}\n\n\treturn retLines.filter((s) => s !== \"\");\n}\n","/**\n * Removes from the object every undefined property\n */\nexport function stripUndefined<T = Record<string, unknown>>(r: T): T {\n\tfor (const k in r) {\n\t\tif (r[k] === undefined) {\n\t\t\tdelete r[k];\n\t\t}\n\t}\n\n\treturn r;\n}\n\n/**\n * Take an object and sort its keys in alphabetical order.\n */\nfunction sortObjectKeys(unordered: Record<string | number, unknown>) {\n\tif (Array.isArray(unordered)) {\n\t\treturn unordered;\n\t}\n\n\treturn Object.keys(unordered)\n\t\t.sort()\n\t\t.reduce(\n\t\t\t(obj, key) => {\n\t\t\t\tobj[key] = unordered[key];\n\t\t\t\treturn obj;\n\t\t\t},\n\t\t\t{} as Record<string, unknown>\n\t\t);\n}\n\n/**\n * Take an object and sort its keys in alphabetical order recursively.\n * Useful to normalize objects so they can be compared when rendered.\n * It will copy the object and not mutate it.\n */\nexport function sortObjectRecursive<T = Record<string | number, unknown>>(\n\tobject: Record<string | number, unknown> | Record<string | number, unknown>[]\n): T {\n\tif (typeof object !== \"object\") {\n\t\treturn object;\n\t}\n\n\tif (Array.isArray(object)) {\n\t\treturn object.map((obj) => sortObjectRecursive(obj)) as T;\n\t}\n\n\tconst objectCopy: Record<string | number, unknown> = { ...object };\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (typeof value === \"object\") {\n\t\t\tif (value === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tobjectCopy[key] = sortObjectRecursive(\n\t\t\t\tvalue as Record<string, unknown>\n\t\t\t) as unknown;\n\t\t}\n\t}\n\n\treturn sortObjectKeys(objectCopy) as T;\n}\n","import { spinner } from \"@cloudflare/cli-shared-helpers/interactive\";\n\nexport async function promiseSpinner<T>(\n\tpromise: Promise<T>,\n\t{\n\t\tmessage,\n\t}: {\n\t\tmessage: string;\n\t} = {\n\t\tmessage: \"Loading\",\n\t}\n): Promise<T> {\n\tif (process.env.CI || !process.stdin.isTTY) {\n\t\treturn promise;\n\t}\n\tconst { start, stop } = spinner();\n\tstart(message);\n\tconst t = await promise.catch((err) => {\n\t\tstop();\n\t\tthrow err;\n\t});\n\tstop();\n\treturn t;\n}\n","/**\n * Note! Much of this is copied and modified from cloudchamber/apply.ts\n * However this code is only used for containers interactions, not cloudchamber ones!\n */\nimport assert from \"node:assert\";\nimport { setTimeout } from \"node:timers/promises\";\nimport {\n\tendSection,\n\tlog,\n\tnewline,\n\tshapes,\n\tstartSection,\n\tsuccess,\n\tupdateStatus,\n} from \"@cloudflare/cli-shared-helpers\";\nimport {\n\tbold,\n\tbrandColor,\n\tdim,\n\tgreen,\n} from \"@cloudflare/cli-shared-helpers/colors\";\nimport { formatConfigSnippet } from \"@cloudflare/workers-utils\";\nimport { FatalError, UserError } from \"@cloudflare/workers-utils/errors\";\nimport {\n\tApiError,\n\tApplicationsService,\n\tCreateApplicationRolloutRequest,\n\tRolloutsService,\n} from \"./client\";\nimport { fetchPagedListResult, fetchResult } from \"./context\";\nimport { Diff } from \"./diff\";\nimport { resolveImageName } from \"./images\";\nimport { inferInstanceType } from \"./limits\";\nimport { sortObjectRecursive, stripUndefined } from \"./object\";\nimport { promiseSpinner } from \"./spinner\";\nimport type { ImageRef } from \"./build\";\nimport type {\n\tApplication,\n\tApplicationObservability as ApplicationObservabilityConfiguration,\n\tApplicationID,\n\tApplicationName,\n\tCreateApplicationRequest,\n\tModifyApplicationRequestBody,\n\tObservability as DeploymentObservabilityConfiguration,\n\tRolloutStepRequest,\n} from \"./client\";\nimport type { ContainerNormalizedConfig } from \"./types\";\nimport type {\n\tComplianceConfig,\n\tConfig,\n\tContainerApp,\n\tWorkerMetadataBinding,\n} from \"@cloudflare/workers-utils\";\n\ntype DeployContainersArgs = {\n\tdispatchNamespace?: string;\n\tversionId: string;\n\taccountId: string;\n\tscriptName: string;\n};\n\ntype ObservabilityWriteTarget = \"top-level\" | \"configuration\";\n\nexport type ResolvedContainerDeployment = {\n\tcontainer: ContainerNormalizedConfig;\n\timageRef: ImageRef;\n};\n\ntype ApiVersion = {\n\tresources: {\n\t\tbindings: WorkerMetadataBinding[];\n\t};\n};\n\nexport type DurableObjectNamespace = {\n\tid: string;\n\tclass: string;\n\tname: string;\n\tscript: string;\n\tuse_sqlite: boolean;\n\tdispatch_namespace?: string;\n\t/**\n\t * Set when the namespace belongs to a Worker preview. For those, `script` is\n\t * the parent Worker's name, so `preview.id` is what distinguishes a\n\t * preview's namespace from the parent's and from other previews'.\n\t */\n\tpreview?: { id: string; slug: string; name: string };\n};\n\nexport function createDurableObjectNamespaceResolver(\n\tconfig: Config,\n\t{ versionId, accountId, scriptName, dispatchNamespace }: DeployContainersArgs\n): (className: string) => Promise<string> {\n\tconst boundDOs = new Set(\n\t\tconfig.durable_objects.bindings.map((binding) => binding.class_name)\n\t);\n\tlet maybeVersionInfo: ApiVersion | undefined;\n\tlet maybeAllDurableObjects: DurableObjectNamespace[] | undefined;\n\n\treturn async (className: string) => {\n\t\t// Worker version endpoints do not address dispatch scripts. Resolve those\n\t\t// from the account list, including their dispatch namespace in the identity.\n\t\tif (boundDOs.has(className) && dispatchNamespace === undefined) {\n\t\t\tmaybeVersionInfo ??= await fetchUploadedVersion(\n\t\t\t\tconfig,\n\t\t\t\taccountId,\n\t\t\t\tscriptName,\n\t\t\t\tversionId\n\t\t\t);\n\t\t\ttype DurableObjectBinding = Extract<\n\t\t\t\tWorkerMetadataBinding,\n\t\t\t\t{ type: \"durable_object_namespace\" }\n\t\t\t>;\n\t\t\tconst targetDurableObject = maybeVersionInfo.resources.bindings.find(\n\t\t\t\t(binding): binding is DurableObjectBinding =>\n\t\t\t\t\tbinding.type === \"durable_object_namespace\" &&\n\t\t\t\t\tbinding.class_name === className &&\n\t\t\t\t\t(binding.script_name === undefined ||\n\t\t\t\t\t\tbinding.script_name === scriptName) &&\n\t\t\t\t\tbinding.namespace_id !== undefined\n\t\t\t);\n\t\t\tif (!targetDurableObject?.namespace_id) {\n\t\t\t\tthrow new UserError(\n\t\t\t\t\t\"Could not deploy container configuration as durable object was not found in list of bindings\",\n\t\t\t\t\t{\n\t\t\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\t\t\"containers deploy durable object binding missing\",\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn targetDurableObject.namespace_id;\n\t\t}\n\n\t\tmaybeAllDurableObjects ??= await listDurableObjects(config, accountId);\n\t\tconst targetDurableObject = maybeAllDurableObjects.find(\n\t\t\t(durableObject) =>\n\t\t\t\tdurableObject.class === className &&\n\t\t\t\tdurableObject.script === scriptName &&\n\t\t\t\tdurableObject.preview === undefined &&\n\t\t\t\tdurableObject.dispatch_namespace === dispatchNamespace\n\t\t);\n\t\tif (!targetDurableObject) {\n\t\t\tthrow new UserError(\n\t\t\t\t\"Could not deploy container configuration as durable object was not found in the account namespace list\",\n\t\t\t\t{\n\t\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\t\"containers deploy durable object namespace missing\",\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn targetDurableObject.id;\n\t};\n}\n\nexport async function deployContainers(\n\tconfig: Config,\n\tcontainerDeployments: ResolvedContainerDeployment[],\n\t{ versionId, accountId, scriptName, dispatchNamespace }: DeployContainersArgs\n) {\n\tconst resolveNamespaceId = createDurableObjectNamespaceResolver(config, {\n\t\tversionId,\n\t\taccountId,\n\t\tscriptName,\n\t\tdispatchNamespace,\n\t});\n\n\tfor (const { container, imageRef } of containerDeployments) {\n\t\tconst namespaceId = await resolveNamespaceId(container.class_name);\n\t\tawait apply(\n\t\t\t{\n\t\t\t\timageRef,\n\t\t\t\tdurable_object_namespace_id: namespaceId,\n\t\t\t},\n\t\t\tcontainer,\n\t\t\tconfig,\n\t\t\taccountId\n\t\t);\n\t}\n}\n\nasync function fetchUploadedVersion(\n\tconfig: Config,\n\taccountId: string,\n\tscriptName: string,\n\tversionId: string\n): Promise<ApiVersion> {\n\tfor (let attempt = 0; attempt < 5; attempt++) {\n\t\ttry {\n\t\t\treturn await fetchResult<ApiVersion>(\n\t\t\t\tconfig,\n\t\t\t\t`/accounts/${accountId}/workers/scripts/${scriptName}/versions/${versionId}`\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (!isUploadedVersionNotReadyError(error) || attempt === 4) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tawait setTimeout(500);\n\t\t}\n\t}\n\tthrow new Error(\"Unable to fetch uploaded Worker version\");\n}\n\nfunction isUploadedVersionNotReadyError(error: unknown): boolean {\n\treturn (\n\t\terror instanceof Error &&\n\t\t\"code\" in error &&\n\t\t(error as { code?: unknown }).code === 100146\n\t);\n}\n\nexport async function listDurableObjects(\n\tcomplianceConfig: ComplianceConfig,\n\taccountId: string\n): Promise<DurableObjectNamespace[]> {\n\treturn await fetchPagedListResult<DurableObjectNamespace>(\n\t\tcomplianceConfig,\n\t\t`/accounts/${accountId}/workers/durable_objects/namespaces`,\n\t\t{},\n\t\tnew URLSearchParams({ per_page: \"1000\" })\n\t);\n}\n/**\n * Source overwrites target\n */\nfunction mergeDeep<T>(target: T, source: Partial<T>): T {\n\tif (typeof target !== \"object\" || target === null) {\n\t\treturn source as T;\n\t}\n\n\tif (typeof source !== \"object\" || source === null) {\n\t\treturn target;\n\t}\n\n\tconst result: T = { ...target };\n\n\tfor (const key of Object.keys(source)) {\n\t\tconst srcVal = source[key as keyof T];\n\t\tconst tgtVal = target[key as keyof T];\n\n\t\tif (isObject(tgtVal) && isObject(srcVal)) {\n\t\t\tresult[key as keyof T] = mergeDeep(tgtVal, srcVal as Partial<T[keyof T]>);\n\t\t} else {\n\t\t\tresult[key as keyof T] = srcVal as T[keyof T];\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction createApplicationToModifyApplication(\n\treq: CreateApplicationRequest\n): ModifyApplicationRequestBody {\n\treturn {\n\t\tconfiguration: req.configuration,\n\t\tobservability: req.observability,\n\t\tmax_instances: req.max_instances,\n\t\tconstraints: req.constraints,\n\t\taffinities: req.affinities,\n\t\tscheduling_policy: req.scheduling_policy,\n\t\trollout_active_grace_period: req.rollout_active_grace_period,\n\t};\n}\n\nfunction isLegacyObservabilityEnabled(\n\tobservability: DeploymentObservabilityConfiguration | undefined\n): boolean {\n\treturn observability?.logs?.enabled === true;\n}\n\nfunction hasLegacyRolloutObservabilityEnabled(\n\tapp: Application | undefined\n): boolean {\n\treturn (\n\t\tisLegacyObservabilityEnabled(app?.configuration.observability) ||\n\t\tisLegacyObservabilityEnabled(\n\t\t\tapp?.scheduling_hint?.target.configuration.observability\n\t\t)\n\t);\n}\n\nfunction getLatestLegacyObservabilityState(\n\tapp: Application | undefined\n): DeploymentObservabilityConfiguration | undefined {\n\treturn (\n\t\tapp?.scheduling_hint?.target.configuration.observability ??\n\t\tapp?.configuration.observability\n\t);\n}\n\nfunction usesTopLevelObservability(app: Application | undefined): boolean {\n\treturn app?.observability !== undefined;\n}\n\nfunction hasTopLevelOnlyObservabilityFields(\n\tobservability: ContainerNormalizedConfig[\"observability\"]\n): boolean {\n\treturn (\n\t\tobservability.target_instance_percentage !== undefined ||\n\t\tobservability.target_instance_count !== undefined\n\t);\n}\n\nfunction selectObservabilityWriteTarget(\n\tprevApp: Application | undefined\n): ObservabilityWriteTarget {\n\tif (prevApp === undefined) {\n\t\treturn \"top-level\";\n\t}\n\n\tif (hasLegacyRolloutObservabilityEnabled(prevApp)) {\n\t\treturn \"configuration\";\n\t}\n\n\treturn \"top-level\";\n}\n\nfunction hasMixedEnabledObservability(app: Application): boolean {\n\treturn (\n\t\tapp.observability?.logs?.enabled === true &&\n\t\tisLegacyObservabilityEnabled(app.configuration.observability)\n\t);\n}\n\nfunction requiresObservabilityMigration(\n\tapp: Application,\n\tobservability: ContainerNormalizedConfig[\"observability\"]\n): boolean {\n\treturn (\n\t\thasLegacyRolloutObservabilityEnabled(app) &&\n\t\t(app.observability?.logs?.enabled === true ||\n\t\t\t(usesTopLevelObservability(app) && observability.logs_enabled))\n\t);\n}\n\nfunction buildLegacyObservabilityMigrationPatch(\n\tapp: Application\n): ApplicationObservabilityConfiguration {\n\tconst observability = app.configuration.observability;\n\tassert(observability?.logs?.enabled === true);\n\n\t// Coordinator clears legacy observability when a top-level PATCH matches it.\n\treturn { logs: observability.logs };\n}\n\nfunction migrateLegacyObservabilityState(\n\tapp: Application,\n\tobservability: ApplicationObservabilityConfiguration\n): Application {\n\tconst configuration = { ...app.configuration };\n\tdelete configuration.observability;\n\n\treturn {\n\t\t...app,\n\t\tconfiguration,\n\t\tobservability,\n\t};\n}\n\nfunction buildTopLevelObservability(\n\tobservability: ContainerNormalizedConfig[\"observability\"]\n): ApplicationObservabilityConfiguration {\n\treturn stripUndefined({\n\t\tlogs: { enabled: observability.logs_enabled },\n\t\ttarget_instance_percentage: observability.target_instance_percentage,\n\t\ttarget_instance_count: observability.target_instance_count,\n\t});\n}\n\nfunction buildConfigurationObservability(\n\tobservability: ContainerNormalizedConfig[\"observability\"]\n): DeploymentObservabilityConfiguration {\n\treturn {\n\t\tlogs: {\n\t\t\tenabled: observability.logs_enabled,\n\t\t},\n\t};\n}\n\nfunction isSameApplicationObservability(\n\tleft: ApplicationObservabilityConfiguration | undefined,\n\tright: ApplicationObservabilityConfiguration | undefined\n): boolean {\n\treturn (\n\t\tleft?.logs?.enabled === right?.logs?.enabled &&\n\t\tleft?.target_instance_percentage === right?.target_instance_percentage &&\n\t\tleft?.target_instance_count === right?.target_instance_count\n\t);\n}\n\nfunction buildTopLevelObservabilityPatch(\n\tobservability: ContainerNormalizedConfig[\"observability\"],\n\tprevApp: Application | undefined,\n\twriteTarget: ObservabilityWriteTarget\n): ApplicationObservabilityConfiguration | undefined {\n\tif (writeTarget === \"configuration\" && !usesTopLevelObservability(prevApp)) {\n\t\treturn undefined;\n\t}\n\n\tconst shouldWriteDisabledTopLevelObservability =\n\t\tprevApp?.observability !== undefined &&\n\t\t(prevApp.observability.logs?.enabled === true ||\n\t\t\tprevApp.observability.target_instance_percentage !== undefined ||\n\t\t\tprevApp.observability.target_instance_count !== undefined);\n\n\tif (\n\t\t!observability.logs_enabled &&\n\t\t!hasTopLevelOnlyObservabilityFields(observability)\n\t) {\n\t\treturn shouldWriteDisabledTopLevelObservability\n\t\t\t? buildTopLevelObservability(observability)\n\t\t\t: undefined;\n\t}\n\n\tconst nextObservability = buildTopLevelObservability(observability);\n\treturn isSameApplicationObservability(\n\t\tnextObservability,\n\t\tprevApp?.observability\n\t)\n\t\t? undefined\n\t\t: nextObservability;\n}\n\nfunction buildConfigurationObservabilityPatch(\n\tobservability: ContainerNormalizedConfig[\"observability\"],\n\tprevApp: Application | undefined\n): DeploymentObservabilityConfiguration | undefined {\n\tconst latestLegacyLogsEnabled =\n\t\tgetLatestLegacyObservabilityState(prevApp)?.logs?.enabled;\n\n\tif (observability.logs_enabled === latestLegacyLogsEnabled) {\n\t\t// Application PATCHes and rollout targets treat configuration as a partial\n\t\t// update, so omitting unchanged legacy observability preserves it.\n\t\treturn undefined;\n\t}\n\n\tif (!observability.logs_enabled && latestLegacyLogsEnabled === undefined) {\n\t\treturn undefined;\n\t}\n\n\treturn buildConfigurationObservability(observability);\n}\n\nfunction buildApplicationObservabilityPatch(\n\tobservability: ContainerNormalizedConfig[\"observability\"],\n\twriteTarget: ObservabilityWriteTarget,\n\tprevApp: Application | undefined\n): {\n\tobservability?: ApplicationObservabilityConfiguration;\n\tconfigurationObservability?: DeploymentObservabilityConfiguration;\n} {\n\tconst nextTopLevelObservability = buildTopLevelObservabilityPatch(\n\t\tobservability,\n\t\tprevApp,\n\t\twriteTarget\n\t);\n\n\tif (writeTarget === \"configuration\") {\n\t\tconst nextConfigurationObservability = buildConfigurationObservabilityPatch(\n\t\t\tobservability,\n\t\t\tprevApp\n\t\t);\n\n\t\treturn {\n\t\t\t...(nextTopLevelObservability !== undefined\n\t\t\t\t? { observability: nextTopLevelObservability }\n\t\t\t\t: {}),\n\t\t\t...(nextConfigurationObservability !== undefined\n\t\t\t\t? {\n\t\t\t\t\t\tconfigurationObservability: nextConfigurationObservability,\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t};\n\t}\n\n\treturn nextTopLevelObservability !== undefined\n\t\t? { observability: nextTopLevelObservability }\n\t\t: {};\n}\n\nfunction assertCanUseApplicationObservabilityTargeting(\n\tprevApp: Application,\n\tcontainerConfig: ContainerNormalizedConfig\n) {\n\tif (!hasTopLevelOnlyObservabilityFields(containerConfig.observability)) {\n\t\treturn;\n\t}\n\n\tif (!hasLegacyRolloutObservabilityEnabled(prevApp)) {\n\t\treturn;\n\t}\n\n\tthrow new UserError(\n\t\t`Application-level observability targeting cannot be enabled for container ${containerConfig.name} while it still uses legacy rollout-based observability. Set containers[].observability.enabled = false in your Wrangler config and deploy once, then deploy again with target_instance_percentage or target_instance_count.`,\n\t\t{\n\t\t\ttelemetryMessage: \"containers deploy observability migration blocked\",\n\t\t}\n\t);\n}\n\nfunction hasRolloutDiff(\n\tprevApp: ModifyApplicationRequestBody,\n\tnextApp: ModifyApplicationRequestBody\n): boolean {\n\tconst normalizedPrevApp = stripUndefined({ ...prevApp });\n\tconst normalizedNextApp = stripUndefined({ ...nextApp });\n\n\tdelete normalizedPrevApp.observability;\n\tdelete normalizedNextApp.observability;\n\n\treturn (\n\t\tJSON.stringify(sortObjectRecursive(normalizedPrevApp)) !==\n\t\tJSON.stringify(sortObjectRecursive(normalizedNextApp))\n\t);\n}\n\n/**\n *\n * Turns the normalised container config from wrangler config into\n * a CreateApplicationRequest that can be sent to the API.\n * If we want to modify instead, the ModifyRequestBody is a subset of this\n *\n */\nfunction containerConfigToCreateRequest(\n\taccountId: string,\n\tcontainerApp: ContainerNormalizedConfig,\n\timageRef: string,\n\tdurableObjectNamespaceId: string,\n\tcomplianceConfig: ComplianceConfig,\n\tobservabilityWriteTarget: ObservabilityWriteTarget,\n\tprevApp?: Application\n): CreateApplicationRequest {\n\tconst { observability, configurationObservability } =\n\t\tbuildApplicationObservabilityPatch(\n\t\t\tcontainerApp.observability,\n\t\t\tobservabilityWriteTarget,\n\t\t\tprevApp\n\t\t);\n\n\treturn {\n\t\tname: containerApp.name,\n\t\tscheduling_policy: containerApp.scheduling_policy,\n\t\t...(observability !== undefined ? { observability } : {}),\n\t\tconfiguration: {\n\t\t\t// De-sugar image name\n\t\t\timage: resolveImageName(accountId, imageRef, complianceConfig),\n\t\t\t// if disk/memory/vcpu is not defined in config, AND instance_type is also not defined, this will already have been defaulted to 'dev'\n\t\t\t...(\"instance_type\" in containerApp\n\t\t\t\t? { instance_type: containerApp.instance_type }\n\t\t\t\t: {\n\t\t\t\t\t\tdisk: { size_mb: containerApp.disk_bytes / (1000 * 1000) },\n\t\t\t\t\t\tmemory_mib: containerApp.memory_mib,\n\t\t\t\t\t\tvcpu: containerApp.vcpu,\n\t\t\t\t\t}),\n\t\t\t...(configurationObservability !== undefined\n\t\t\t\t? { observability: configurationObservability }\n\t\t\t\t: {}),\n\t\t\twrangler_ssh: containerApp.wrangler_ssh,\n\t\t\tauthorized_keys: containerApp.authorized_keys,\n\t\t\ttrusted_user_ca_keys: containerApp.trusted_user_ca_keys,\n\t\t},\n\t\t// deprecated in favour of max_instances\n\t\tinstances: 0,\n\t\tmax_instances: containerApp.max_instances,\n\t\tconstraints: containerApp.constraints,\n\t\taffinities: containerApp.affinities,\n\t\tdurable_objects: {\n\t\t\tnamespace_id: durableObjectNamespaceId,\n\t\t},\n\t\trollout_active_grace_period: containerApp.rollout_active_grace_period,\n\t};\n}\n\nfunction formatContainerSnippetForDisplay<\n\tT extends {\n\t\tconfiguration?: ModifyApplicationRequestBody[\"configuration\"];\n\t},\n>(container: T, configPath: Config[\"configPath\"]) {\n\t// Normalize field names from the API into the Wrangler specific format\n\t// Example: `container.configuration.wrangler_ssh` (API) => `container.configuration.ssh` (Wrangler)\n\tconst configurationForDisplay =\n\t\tcontainer.configuration === undefined\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\t\tObject.entries(container.configuration).map(([key, value]) => [\n\t\t\t\t\t\tkey === \"wrangler_ssh\" ? \"ssh\" : key,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t])\n\t\t\t\t);\n\n\tconst snippet = {\n\t\tcontainers: [\n\t\t\t{\n\t\t\t\t...container,\n\t\t\t\tconfiguration: configurationForDisplay,\n\t\t\t} as unknown as ContainerApp,\n\t\t],\n\t};\n\n\treturn formatConfigSnippet(snippet, configPath);\n}\n\nexport async function apply(\n\targs: {\n\t\timageRef: ImageRef;\n\t\tdurable_object_namespace_id: string;\n\t},\n\tcontainerConfig: ContainerNormalizedConfig,\n\tconfig: Config,\n\taccountId: string\n) {\n\tif (!config.containers || config.containers.length === 0) {\n\t\treturn;\n\t}\n\tstartSection(\n\t\t\"Deploy a container application\",\n\t\t\"deploy changes to your application\"\n\t);\n\n\tconst existingApplications = await promiseSpinner(\n\t\tApplicationsService.listApplications(),\n\t\t{ message: \"Loading applications\" }\n\t);\n\t// TODO: this is not correct right now as there can be multiple applications\n\t// with the same name.\n\t/** Previous deployment of this app, if this exists */\n\tlet prevApp = existingApplications.find(\n\t\t(app) => app.name === containerConfig.name\n\t);\n\n\tconst imageRef =\n\t\t\"remoteDigest\" in args.imageRef\n\t\t\t? args.imageRef.remoteDigest\n\t\t\t: args.imageRef.newTag;\n\tlog(dim(\"Container application changes\\n\"));\n\n\tlet migratedLegacyObservability = false;\n\n\tif (prevApp !== undefined) {\n\t\tif (!prevApp.durable_objects?.namespace_id) {\n\t\t\tthrow new FatalError(\n\t\t\t\t\"The previous deploy of this container application was not associated with a durable object\",\n\t\t\t\t{\n\t\t\t\t\ttelemetryMessage: \"containers deploy previous durable object missing\",\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tprevApp.durable_objects.namespace_id !== args.durable_object_namespace_id\n\t\t) {\n\t\t\tthrow new UserError(\n\t\t\t\t`There is already an application with the name ${containerConfig.name} deployed that is associated with a different durable object namespace (${prevApp.durable_objects.namespace_id}). Either change the container name or delete the existing application first.`,\n\t\t\t\t{\n\t\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\t\"trying to redeploy container to different durable object\",\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (containerConfig.rollout_kind !== \"none\") {\n\t\t\tif (\n\t\t\t\trequiresObservabilityMigration(\n\t\t\t\t\tprevApp,\n\t\t\t\t\tcontainerConfig.observability\n\t\t\t\t) &&\n\t\t\t\t(prevApp.active_rollout_id !== undefined ||\n\t\t\t\t\tisLegacyObservabilityEnabled(\n\t\t\t\t\t\tprevApp.scheduling_hint?.target.configuration.observability\n\t\t\t\t\t))\n\t\t\t) {\n\t\t\t\tthrow new UserError(\n\t\t\t\t\t`Cannot migrate observability configuration for container ${containerConfig.name} while an application rollout is active. Wait for the rollout to finish, then deploy again.`,\n\t\t\t\t\t{\n\t\t\t\t\t\ttelemetryMessage:\n\t\t\t\t\t\t\t\"containers deploy observability migration rollout active\",\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (hasMixedEnabledObservability(prevApp)) {\n\t\t\t\tconst migrationObservability =\n\t\t\t\t\tbuildLegacyObservabilityMigrationPatch(prevApp);\n\t\t\t\tawait doAction({\n\t\t\t\t\taction: \"modify\",\n\t\t\t\t\tapplication: { observability: migrationObservability },\n\t\t\t\t\tid: prevApp.id,\n\t\t\t\t\tname: prevApp.name,\n\t\t\t\t\tsuccessMessage: `Migrated observability configuration for ${brandColor(prevApp.name)} (Application ID: ${prevApp.id})`,\n\t\t\t\t});\n\t\t\t\tprevApp = migrateLegacyObservabilityState(\n\t\t\t\t\tprevApp,\n\t\t\t\t\tmigrationObservability\n\t\t\t\t);\n\t\t\t\tmigratedLegacyObservability = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst observabilityWriteTarget = selectObservabilityWriteTarget(prevApp);\n\n\tif (prevApp !== undefined) {\n\t\tassertCanUseApplicationObservabilityTargeting(prevApp, containerConfig);\n\t}\n\n\t// let's always convert normalised container config -> CreateApplicationRequest\n\t// since CreateApplicationRequest is a superset of ModifyApplicationRequestBody\n\tconst appConfig = stripUndefined(\n\t\tmergeIfUnsafe(\n\t\t\tconfig,\n\t\t\tcontainerConfigToCreateRequest(\n\t\t\t\taccountId,\n\t\t\t\tcontainerConfig,\n\t\t\t\timageRef,\n\t\t\t\targs.durable_object_namespace_id,\n\t\t\t\tconfig,\n\t\t\t\tobservabilityWriteTarget,\n\t\t\t\tprevApp\n\t\t\t),\n\t\t\tcontainerConfig.name\n\t\t)\n\t);\n\n\tif (prevApp !== undefined && prevApp !== null) {\n\t\t// we need to sort the objects (by key) because the diff algorithm works with lines\n\t\tconst normalisedPrevApp = sortObjectRecursive<ModifyApplicationRequestBody>(\n\t\t\tstripUndefined(\n\t\t\t\tcleanApplicationFromAPI(\n\t\t\t\t\tprevApp,\n\t\t\t\t\tcontainerConfig,\n\t\t\t\t\taccountId,\n\t\t\t\t\tobservabilityWriteTarget,\n\t\t\t\t\tconfig\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\n\t\t// this will have removed the unsafe fields, so we need to add them back in after\n\t\tconst modifyReq = stripUndefined(\n\t\t\tmergeIfUnsafe(\n\t\t\t\tconfig,\n\t\t\t\tcreateApplicationToModifyApplication(appConfig),\n\t\t\t\tappConfig.name\n\t\t\t)\n\t\t);\n\t\tconst normalizedModifyReq =\n\t\t\tsortObjectRecursive<ModifyApplicationRequestBody>(modifyReq);\n\t\t/** only used for diffing */\n\t\tconst nowContainer = mergeDeep(normalisedPrevApp, normalizedModifyReq);\n\t\t// Top-level observability is replaced as a unit. A deep merge would retain\n\t\t// targeting fields that the user removed from their config.\n\t\tif (normalizedModifyReq.observability !== undefined) {\n\t\t\tnowContainer.observability = normalizedModifyReq.observability;\n\t\t}\n\t\tconst shouldCreateRollout = hasRolloutDiff(normalisedPrevApp, nowContainer);\n\n\t\tconst prev = formatContainerSnippetForDisplay(\n\t\t\tnormalisedPrevApp,\n\t\t\tconfig.configPath\n\t\t);\n\n\t\tconst now = formatContainerSnippetForDisplay(\n\t\t\tnowContainer,\n\t\t\tconfig.configPath\n\t\t);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Diff is used here for formatted config string diffing, not JSON objects\n\t\tconst diff = new Diff(prev, now);\n\n\t\tif (diff.changes === 0) {\n\t\t\tif (migratedLegacyObservability) {\n\t\t\t\tnewline();\n\t\t\t\tendSection(\"Applied changes\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tupdateStatus(`no changes ${brandColor(prevApp.name)}`);\n\t\t\tendSection(\"No changes to be made\");\n\t\t\treturn;\n\t\t}\n\n\t\tupdateStatus(`${brandColor.underline(\"EDIT\")} ${prevApp.name}`, false);\n\n\t\tnewline();\n\t\tdiff.print();\n\t\tnewline();\n\n\t\tif (containerConfig.rollout_kind !== \"none\") {\n\t\t\tawait doAction({\n\t\t\t\taction: \"modify\",\n\t\t\t\tapplication: modifyReq,\n\t\t\t\tid: prevApp.id,\n\t\t\t\tname: prevApp.name,\n\t\t\t\t...(shouldCreateRollout\n\t\t\t\t\t? {\n\t\t\t\t\t\t\trollout_step_percentage: containerConfig.rollout_step_percentage,\n\t\t\t\t\t\t\trollout_kind:\n\t\t\t\t\t\t\t\tcontainerConfig.rollout_kind == \"full_manual\"\n\t\t\t\t\t\t\t\t\t? CreateApplicationRolloutRequest.kind.FULL_MANUAL\n\t\t\t\t\t\t\t\t\t: CreateApplicationRolloutRequest.kind.FULL_AUTO,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t});\n\t\t} else {\n\t\t\tlog(\"Skipping application rollout\");\n\t\t\tnewline();\n\t\t}\n\t} else {\n\t\t// **************\n\t\t// *** CREATE ***\n\t\t// **************\n\n\t\t// print the header of the app\n\t\tupdateStatus(bold.underline(green.underline(\"NEW\")) + ` ${appConfig.name}`);\n\n\t\tconst configStr = formatContainerSnippetForDisplay(\n\t\t\tappConfig,\n\t\t\tconfig.configPath\n\t\t);\n\n\t\t// go line by line and pretty print it\n\t\tconfigStr\n\t\t\t.trimEnd()\n\t\t\t.split(\"\\n\")\n\t\t\t.forEach((el) => log(` ${el}`));\n\t\tnewline();\n\t\t// add to the actions array to create the app later\n\n\t\tawait doAction({\n\t\t\taction: \"create\",\n\t\t\tapplication: appConfig,\n\t\t});\n\t}\n\tnewline();\n\tendSection(\"Applied changes\");\n}\n\n/**\n * If there is an unsafe container config that matches this container by class_name,\n * merge the unsafe config into the Create/Modify request.\n */\nfunction mergeIfUnsafe<\n\tT extends CreateApplicationRequest | ModifyApplicationRequestBody,\n>(fullConfig: Config, containerConfig: T, name: string) {\n\tconst unsafeContainerConfig = fullConfig.containers?.find((original) => {\n\t\treturn original.name === name && original.unsafe !== undefined;\n\t});\n\n\tif (unsafeContainerConfig) {\n\t\treturn mergeDeep<T>(\n\t\t\tcontainerConfig,\n\t\t\tunsafeContainerConfig.unsafe as Partial<T>\n\t\t);\n\t} else {\n\t\treturn containerConfig;\n\t}\n}\n\nexport function formatError(err: ApiError): string {\n\ttry {\n\t\tconst maybeError = JSON.parse(err.body.error);\n\n\t\tif (maybeError.error !== undefined) {\n\t\t\tconst message = [];\n\t\t\tmessage.push(`${maybeError.error}`);\n\t\t\tif (\n\t\t\t\tmaybeError.details !== undefined &&\n\t\t\t\ttypeof maybeError.details === \"object\"\n\t\t\t) {\n\t\t\t\tfor (const key in maybeError.details) {\n\t\t\t\t\tmessage.push(`${brandColor(key)} ${maybeError.details[key]}`);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn message.join(\"\\n\");\n\t\t}\n\t} catch {}\n\t// if we can't make it pretty, just dump out the error body\n\treturn JSON.stringify(err.body);\n}\n\nconst doAction = async (\n\taction:\n\t\t| { action: \"create\"; application: CreateApplicationRequest }\n\t\t| {\n\t\t\t\taction: \"modify\";\n\t\t\t\tapplication: ModifyApplicationRequestBody;\n\t\t\t\tid: ApplicationID;\n\t\t\t\tname: ApplicationName;\n\t\t\t\trollout_step_percentage?: number | number[];\n\t\t\t\trollout_kind?: CreateApplicationRolloutRequest.kind;\n\t\t\t\tsuccessMessage?: string;\n\t\t }\n) => {\n\tif (action.action === \"create\") {\n\t\tlet application: Application;\n\t\ttry {\n\t\t\tapplication = await promiseSpinner(\n\t\t\t\tApplicationsService.createApplication(action.application),\n\t\t\t\t{ message: `Creating \"${action.application.name}\"` }\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tif (!(err instanceof Error)) {\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tif (!(err instanceof ApiError)) {\n\t\t\t\tthrow new FatalError(\n\t\t\t\t\t`Unexpected error creating application: ${err.message}`,\n\t\t\t\t\t{ telemetryMessage: \"containers deploy create unexpected error\" }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (err.status === 400) {\n\t\t\t\tthrow new UserError(\n\t\t\t\t\t`Error creating application due to a misconfiguration:\\n${formatError(err)}`,\n\t\t\t\t\t{ telemetryMessage: \"containers deploy create misconfiguration\" }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new UserError(`Error creating application:\\n${formatError(err)}`, {\n\t\t\t\ttelemetryMessage: \"containers deploy create request failed\",\n\t\t\t});\n\t\t}\n\n\t\tsuccess(\n\t\t\t`Created application ${brandColor(action.application.name)} (Application ID: ${application.id})`,\n\t\t\t{\n\t\t\t\tshape: shapes.bar,\n\t\t\t}\n\t\t);\n\t}\n\n\tif (action.action === \"modify\") {\n\t\ttry {\n\t\t\tawait promiseSpinner(\n\t\t\t\tApplicationsService.modifyApplication(action.id, action.application),\n\t\t\t\t{ message: `Modifying ${action.application.name}` }\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tif (!(err instanceof Error)) {\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tif (!(err instanceof ApiError)) {\n\t\t\t\tthrow new UserError(\n\t\t\t\t\t`Unexpected error modifying application \"${action.name}\": ${err.message}`,\n\t\t\t\t\t{ telemetryMessage: \"containers deploy modify unexpected error\" }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (err.status === 400) {\n\t\t\t\tthrow new UserError(\n\t\t\t\t\t`Error modifying application \"${action.name}\" due to a misconfiguration:\\n\\n\\t${formatError(err)}`,\n\t\t\t\t\t{ telemetryMessage: \"containers deploy modify misconfiguration\" }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new UserError(\n\t\t\t\t`Error modifying application \"${action.name}\":\\n${formatError(err)}`,\n\t\t\t\t{ telemetryMessage: \"containers deploy modify request failed\" }\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\taction.rollout_step_percentage !== undefined &&\n\t\t\taction.rollout_kind !== undefined\n\t\t) {\n\t\t\ttry {\n\t\t\t\tawait promiseSpinner(\n\t\t\t\t\tRolloutsService.createApplicationRollout(action.id, {\n\t\t\t\t\t\tdescription: \"Progressive update\",\n\t\t\t\t\t\tstrategy: CreateApplicationRolloutRequest.strategy.ROLLING,\n\t\t\t\t\t\ttarget_configuration: action.application.configuration ?? {},\n\t\t\t\t\t\t...configRolloutStepsToAPI(action.rollout_step_percentage),\n\t\t\t\t\t\tkind: action.rollout_kind,\n\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage: `rolling out container version ${action.name}`,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} catch (err) {\n\t\t\t\tif (!(err instanceof Error)) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\n\t\t\t\tif (!(err instanceof ApiError)) {\n\t\t\t\t\tthrow new UserError(\n\t\t\t\t\t\t`Unexpected error rolling out application \"${action.name}\":\\n${err.message}`,\n\t\t\t\t\t\t{ telemetryMessage: \"containers deploy rollout unexpected error\" }\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (err.status === 400) {\n\t\t\t\t\tthrow new UserError(\n\t\t\t\t\t\t`Error rolling out application \"${action.name}\" due to a misconfiguration:\\n\\n\\t${formatError(err)}`,\n\t\t\t\t\t\t{ telemetryMessage: \"containers deploy rollout misconfiguration\" }\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthrow new UserError(\n\t\t\t\t\t`Error rolling out application \"${action.name}\":\\n${formatError(err)}`,\n\t\t\t\t\t{ telemetryMessage: \"containers deploy rollout request failed\" }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tsuccess(\n\t\t\taction.successMessage ??\n\t\t\t\t`Modified application ${brandColor(action.name)} (Application ID: ${action.id})`,\n\t\t\t{\n\t\t\t\tshape: shapes.bar,\n\t\t\t}\n\t\t);\n\t}\n};\n\n/**\n * clean up application object received from API so that we get a nicer diff when comparing it to the current config.\n *\n * @param prev - Previously deployed application returned by the API.\n * @param currentConfig - Current normalized container configuration.\n * @param accountId - Cloudflare account ID that owns managed-registry images.\n * @param observabilityWriteTarget - API field used for observability updates.\n * @param complianceConfig - Compliance configuration used to normalize managed-registry image references.\n * @returns The cleaned application fields used to generate the deployment diff.\n */\nexport function cleanApplicationFromAPI(\n\tprev: Application,\n\tcurrentConfig: ContainerNormalizedConfig,\n\taccountId: string,\n\tobservabilityWriteTarget: ObservabilityWriteTarget,\n\tcomplianceConfig?: ComplianceConfig\n): Partial<ModifyApplicationRequestBody> & Pick<Application, \"configuration\"> {\n\tconst configuration = {\n\t\t...prev.configuration,\n\t\timage: resolveImageName(\n\t\t\taccountId,\n\t\t\tprev.configuration.image,\n\t\t\tcomplianceConfig\n\t\t),\n\t};\n\n\tif (observabilityWriteTarget === \"top-level\") {\n\t\tdelete configuration.observability;\n\t}\n\n\tconst cleanedPreviousApp: Partial<ModifyApplicationRequestBody> &\n\t\tPick<Application, \"configuration\"> = {\n\t\tconfiguration,\n\t\tconstraints: prev.constraints,\n\t\tmax_instances: prev.max_instances,\n\t\tname: prev.name,\n\t\tscheduling_policy: prev.scheduling_policy,\n\t\taffinities: prev.affinities,\n\t\trollout_active_grace_period: prev.rollout_active_grace_period,\n\t};\n\n\tif (\n\t\tobservabilityWriteTarget === \"configuration\" &&\n\t\tgetLatestLegacyObservabilityState(prev) !== undefined\n\t) {\n\t\tcleanedPreviousApp.configuration.observability =\n\t\t\tgetLatestLegacyObservabilityState(prev);\n\t}\n\n\tif (prev.observability !== undefined) {\n\t\tcleanedPreviousApp.observability = prev.observability;\n\t}\n\n\tif (\"instance_type\" in currentConfig) {\n\t\t// returns undefined if we can't infer it.\n\t\tconst instance_type = inferInstanceType(cleanedPreviousApp.configuration);\n\t\tif (!instance_type) {\n\t\t\t// API-only fields must not affect either the rendered diff or the rollout\n\t\t\t// decision when the stored limits do not map to a named instance type.\n\t\t\treturn cleanedPreviousApp;\n\t\t}\n\t\tcleanedPreviousApp.configuration.instance_type = instance_type;\n\n\t\tdelete cleanedPreviousApp.configuration.disk;\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- intentionally cleaning up deprecated `memory` field\n\t\tdelete cleanedPreviousApp.configuration.memory;\n\t\tdelete cleanedPreviousApp.configuration.memory_mib;\n\t\tdelete cleanedPreviousApp.configuration.vcpu;\n\t}\n\n\treturn cleanedPreviousApp;\n}\n\nexport const configRolloutStepsToAPI = (rolloutSteps: number | number[]) => {\n\tif (typeof rolloutSteps === \"number\") {\n\t\treturn { step_percentage: rolloutSteps };\n\t} else {\n\t\tconst output: RolloutStepRequest[] = [];\n\t\tlet index = 1;\n\t\tfor (const step of rolloutSteps) {\n\t\t\toutput.push({\n\t\t\t\tstep_size: { percentage: step },\n\t\t\t\tdescription: `Step ${index} of ${rolloutSteps.length} - rollout at ${step}% of instances`,\n\t\t\t});\n\t\t\tindex++;\n\t\t}\n\t\treturn { steps: output };\n\t}\n};\n"]}