UNPKG

cloudflare

Version:

The official TypeScript library for the Cloudflare API

494 lines (421 loc) 14.9 kB
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import * as Core from "../../../core"; import { APIResource } from "../../../resource"; import { type Response } from "../../../_shims/index"; import * as ScriptsAPI from "./scripts"; import * as BindingsAPI from "./bindings"; import * as ContentAPI from "./content"; import * as ContentV2API from "./content-v2"; import * as SchedulesAPI from "./schedules"; import * as SettingsAPI from "./settings"; import * as TailAPI from "./tail"; import * as UsageModelAPI from "./usage-model"; import { type Uploadable, maybeMultipartFormRequestOptions } from "../../../core"; import { SinglePage } from "../../../pagination"; export class Scripts extends APIResource { bindings: BindingsAPI.Bindings = new BindingsAPI.Bindings(this._client); schedules: SchedulesAPI.Schedules = new SchedulesAPI.Schedules(this._client); tail: TailAPI.Tail = new TailAPI.Tail(this._client); usageModel: UsageModelAPI.UsageModel = new UsageModelAPI.UsageModel(this._client); content: ContentAPI.Content = new ContentAPI.Content(this._client); contentV2: ContentV2API.ContentV2 = new ContentV2API.ContentV2(this._client); settings: SettingsAPI.Settings = new SettingsAPI.Settings(this._client); /** * Upload a worker module. */ update( scriptName: string, params: ScriptUpdateParams, options?: Core.RequestOptions, ): Core.APIPromise<WorkersScript> { const { account_id, rollback_to, ...body } = params; return ( this._client.put( `/accounts/${account_id}/workers/scripts/${scriptName}`, maybeMultipartFormRequestOptions({ query: { rollback_to }, body, ...options }), ) as Core.APIPromise<{ result: WorkersScript }> )._thenUnwrap((obj) => obj.result); } /** * Fetch a list of uploaded workers. */ list( params: ScriptListParams, options?: Core.RequestOptions, ): Core.PagePromise<WorkersScriptsSinglePage, WorkersScript> { const { account_id } = params; return this._client.getAPIList( `/accounts/${account_id}/workers/scripts`, WorkersScriptsSinglePage, options, ); } /** * Delete your worker. This call has no response body on a successful delete. */ delete( scriptName: string, params: ScriptDeleteParams, options?: Core.RequestOptions, ): Core.APIPromise<void> { const { account_id, force } = params; return this._client.delete(`/accounts/${account_id}/workers/scripts/${scriptName}`, { query: { force }, ...options, headers: { Accept: '*/*', ...options?.headers }, }); } /** * Fetch raw script content for your worker. Note this is the original script * content, not JSON encoded. */ get(scriptName: string, params: ScriptGetParams, options?: Core.RequestOptions): Core.APIPromise<Response> { const { account_id } = params; return this._client.get(`/accounts/${account_id}/workers/scripts/${scriptName}`, { ...options, __binaryResponse: true, }); } } export class WorkersScriptsSinglePage extends SinglePage<WorkersScript> {} export interface WorkersScript { /** * The id of the script in the Workers system. Usually the script name. */ id?: string; /** * When the script was created. */ created_on?: string; /** * Hashed script content, can be used in a If-None-Match header when updating. */ etag?: string; /** * Whether Logpush is turned on for the Worker. */ logpush?: boolean; /** * When the script was last modified. */ modified_on?: string; /** * Deprecated. Deployment metadata for internal usage. */ pipeline_hash?: string; /** * Specifies the placement mode for the Worker (e.g. 'smart'). */ placement_mode?: string; /** * List of Workers that will consume logs from the attached Worker. */ tail_consumers?: Array<WorkersScript.TailConsumer>; /** * Specifies the usage model for the Worker (e.g. 'bundled' or 'unbound'). */ usage_model?: string; } export namespace WorkersScript { /** * A reference to a script that will consume logs from the attached Worker. */ export interface TailConsumer { /** * Name of Worker that is to be the consumer. */ service: string; /** * Optional environment if the Worker utilizes one. */ environment?: string; /** * Optional dispatch namespace the script belongs to. */ namespace?: string; } } export type ScriptUpdateParams = ScriptUpdateParams.Variant0 | ScriptUpdateParams.Variant1; export namespace ScriptUpdateParams { export interface Variant0 { /** * Path param: Identifier */ account_id: string; /** * Query param: Rollback to provided deployment based on deployment ID. Request * body will only parse a "message" part. You can learn more about deployments * [here](https://developers.cloudflare.com/workers/platform/deployments/). */ rollback_to?: string; /** * Body param: A module comprising a Worker script, often a javascript file. * Multiple modules may be provided as separate named parts, but at least one * module must be present and referenced in the metadata as `main_module` or * `body_part` by part name. */ '<any part name>'?: Array<Uploadable>; /** * Body param: JSON encoded metadata about the uploaded parts and Worker * configuration. */ metadata?: ScriptUpdateParams.Variant0.Metadata; } export namespace Variant0 { /** * JSON encoded metadata about the uploaded parts and Worker configuration. */ export interface Metadata { /** * List of bindings available to the worker. */ bindings?: Array<unknown>; /** * Name of the part in the multipart request that contains the script (e.g. the * file adding a listener to the `fetch` event). Indicates a * `service worker syntax` Worker. */ body_part?: string; /** * Date indicating targeted support in the Workers runtime. Backwards incompatible * fixes to the runtime following this date will not affect this Worker. */ compatibility_date?: string; /** * Flags that enable or disable certain features in the Workers runtime. Used to * enable upcoming features or opt in or out of specific changes not included in a * `compatibility_date`. */ compatibility_flags?: Array<string>; /** * List of binding types to keep from previous_upload. */ keep_bindings?: Array<string>; /** * Whether Logpush is turned on for the Worker. */ logpush?: boolean; /** * Name of the part in the multipart request that contains the main module (e.g. * the file exporting a `fetch` handler). Indicates a `module syntax` Worker. */ main_module?: string; /** * Migrations to apply for Durable Objects associated with this Worker. */ migrations?: Metadata.WorkersSingleStepMigrations | Metadata.WorkersSteppedMigrations; placement?: Metadata.Placement; /** * List of strings to use as tags for this Worker */ tags?: Array<string>; /** * List of Workers that will consume logs from the attached Worker. */ tail_consumers?: Array<Metadata.TailConsumer>; /** * Usage model to apply to invocations. */ usage_model?: 'bundled' | 'unbound'; /** * Key-value pairs to use as tags for this version of this Worker */ version_tags?: unknown; } export namespace Metadata { /** * A single set of migrations to apply. */ export interface WorkersSingleStepMigrations { /** * A list of classes to delete Durable Object namespaces from. */ deleted_classes?: Array<string>; /** * A list of classes to create Durable Object namespaces from. */ new_classes?: Array<string>; /** * Tag to set as the latest migration tag. */ new_tag?: string; /** * Tag used to verify against the latest migration tag for this Worker. If they * don't match, the upload is rejected. */ old_tag?: string; /** * A list of classes with Durable Object namespaces that were renamed. */ renamed_classes?: Array<WorkersSingleStepMigrations.RenamedClass>; /** * A list of transfers for Durable Object namespaces from a different Worker and * class to a class defined in this Worker. */ transferred_classes?: Array<WorkersSingleStepMigrations.TransferredClass>; } export namespace WorkersSingleStepMigrations { export interface RenamedClass { from?: string; to?: string; } export interface TransferredClass { from?: string; from_script?: string; to?: string; } } export interface WorkersSteppedMigrations { /** * Tag to set as the latest migration tag. */ new_tag?: string; /** * Tag used to verify against the latest migration tag for this Worker. If they * don't match, the upload is rejected. */ old_tag?: string; /** * Migrations to apply in order. */ steps?: Array<WorkersSteppedMigrations.Step>; } export namespace WorkersSteppedMigrations { export interface Step { /** * A list of classes to delete Durable Object namespaces from. */ deleted_classes?: Array<string>; /** * A list of classes to create Durable Object namespaces from. */ new_classes?: Array<string>; /** * A list of classes with Durable Object namespaces that were renamed. */ renamed_classes?: Array<Step.RenamedClass>; /** * A list of transfers for Durable Object namespaces from a different Worker and * class to a class defined in this Worker. */ transferred_classes?: Array<Step.TransferredClass>; } export namespace Step { export interface RenamedClass { from?: string; to?: string; } export interface TransferredClass { from?: string; from_script?: string; to?: string; } } } export interface Placement { /** * Enables * [Smart Placement](https://developers.cloudflare.com/workers/configuration/smart-placement). * Only `"smart"` is currently supported */ mode?: 'smart'; } /** * A reference to a script that will consume logs from the attached Worker. */ export interface TailConsumer { /** * Name of Worker that is to be the consumer. */ service: string; /** * Optional environment if the Worker utilizes one. */ environment?: string; /** * Optional dispatch namespace the script belongs to. */ namespace?: string; } } } export interface Variant1 { /** * Path param: Identifier */ account_id: string; /** * Query param: Rollback to provided deployment based on deployment ID. Request * body will only parse a "message" part. You can learn more about deployments * [here](https://developers.cloudflare.com/workers/platform/deployments/). */ rollback_to?: string; /** * Body param: Rollback message to be associated with this deployment. Only parsed * when query param `"rollback_to"` is present. */ message?: string; } } export interface ScriptListParams { /** * Identifier */ account_id: string; } export interface ScriptDeleteParams { /** * Path param: Identifier */ account_id: string; /** * Query param: If set to true, delete will not be stopped by associated service * binding, durable object, or other binding. Any of these associated * bindings/durable objects will be deleted along with the script. */ force?: boolean; } export interface ScriptGetParams { /** * Identifier */ account_id: string; } export namespace Scripts { export import WorkersScript = ScriptsAPI.WorkersScript; export import WorkersScriptsSinglePage = ScriptsAPI.WorkersScriptsSinglePage; export import ScriptUpdateParams = ScriptsAPI.ScriptUpdateParams; export import ScriptListParams = ScriptsAPI.ScriptListParams; export import ScriptDeleteParams = ScriptsAPI.ScriptDeleteParams; export import ScriptGetParams = ScriptsAPI.ScriptGetParams; export import Bindings = BindingsAPI.Bindings; export import WorkersBinding = BindingsAPI.WorkersBinding; export import BindingGetResponse = BindingsAPI.BindingGetResponse; export import BindingGetParams = BindingsAPI.BindingGetParams; export import Schedules = SchedulesAPI.Schedules; export import ScheduleUpdateResponse = SchedulesAPI.ScheduleUpdateResponse; export import ScheduleGetResponse = SchedulesAPI.ScheduleGetResponse; export import ScheduleUpdateParams = SchedulesAPI.ScheduleUpdateParams; export import ScheduleGetParams = SchedulesAPI.ScheduleGetParams; export import Tail = TailAPI.Tail; export import TailCreateResponse = TailAPI.TailCreateResponse; export import TailDeleteResponse = TailAPI.TailDeleteResponse; export import TailGetResponse = TailAPI.TailGetResponse; export import TailCreateParams = TailAPI.TailCreateParams; export import TailDeleteParams = TailAPI.TailDeleteParams; export import TailGetParams = TailAPI.TailGetParams; export import UsageModel = UsageModelAPI.UsageModel; export import UsageModelUpdateResponse = UsageModelAPI.UsageModelUpdateResponse; export import UsageModelGetResponse = UsageModelAPI.UsageModelGetResponse; export import UsageModelUpdateParams = UsageModelAPI.UsageModelUpdateParams; export import UsageModelGetParams = UsageModelAPI.UsageModelGetParams; export import Content = ContentAPI.Content; export import ContentUpdateParams = ContentAPI.ContentUpdateParams; export import ContentV2 = ContentV2API.ContentV2; export import ContentV2GetParams = ContentV2API.ContentV2GetParams; export import Settings = SettingsAPI.Settings; export import SettingEditResponse = SettingsAPI.SettingEditResponse; export import SettingGetResponse = SettingsAPI.SettingGetResponse; export import SettingEditParams = SettingsAPI.SettingEditParams; export import SettingGetParams = SettingsAPI.SettingGetParams; }