cloudflare
Version:
The official TypeScript library for the Cloudflare API
272 lines (238 loc) • 9.04 kB
text/typescript
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import * as Core from "../../../../../core";
import { APIResource } from "../../../../../resource";
import * as ScriptsScriptsAPI from "./scripts";
import * as WorkersAPI from "../../../../workers/workers";
import * as ScriptsAPI from "../../../../workers/scripts/scripts";
import * as TailAPI from "../../../../workers/scripts/tail";
import * as BindingsAPI from "./bindings";
import * as ContentAPI from "./content";
import * as SecretsAPI from "./secrets";
import * as SettingsAPI from "./settings";
import * as TagsAPI from "./tags";
import { type Uploadable, maybeMultipartFormRequestOptions } from "../../../../../core";
export class Scripts extends APIResource {
content: ContentAPI.Content = new ContentAPI.Content(this._client);
settings: SettingsAPI.Settings = new SettingsAPI.Settings(this._client);
bindings: BindingsAPI.Bindings = new BindingsAPI.Bindings(this._client);
secrets: SecretsAPI.Secrets = new SecretsAPI.Secrets(this._client);
tags: TagsAPI.Tags = new TagsAPI.Tags(this._client);
/**
* Upload a worker module to a Workers for Platforms namespace. You can find an
* example of the metadata on our docs:
* https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/reference/metadata/
*/
update(
dispatchNamespace: string,
scriptName: string,
params: ScriptUpdateParams,
options?: Core.RequestOptions,
): Core.APIPromise<ScriptsAPI.Script> {
const { account_id, ...body } = params;
return (
this._client.put(
`/accounts/${account_id}/workers/dispatch/namespaces/${dispatchNamespace}/scripts/${scriptName}`,
maybeMultipartFormRequestOptions({ body, ...options }),
) as Core.APIPromise<{ result: ScriptsAPI.Script }>
)._thenUnwrap((obj) => obj.result);
}
/**
* Delete a worker from a Workers for Platforms namespace. This call has no
* response body on a successful delete.
*/
delete(
dispatchNamespace: string,
scriptName: string,
params: ScriptDeleteParams,
options?: Core.RequestOptions,
): Core.APIPromise<void> {
const { account_id, body, force } = params;
return this._client.delete(
`/accounts/${account_id}/workers/dispatch/namespaces/${dispatchNamespace}/scripts/${scriptName}`,
{ query: { force }, body: body, ...options, headers: { Accept: '*/*', ...options?.headers } },
);
}
/**
* Fetch information about a script uploaded to a Workers for Platforms namespace.
*/
get(
dispatchNamespace: string,
scriptName: string,
params: ScriptGetParams,
options?: Core.RequestOptions,
): Core.APIPromise<Script> {
const { account_id } = params;
return (
this._client.get(
`/accounts/${account_id}/workers/dispatch/namespaces/${dispatchNamespace}/scripts/${scriptName}`,
options,
) as Core.APIPromise<{ result: Script }>
)._thenUnwrap((obj) => obj.result);
}
}
/**
* Details about a worker uploaded to a Workers for Platforms namespace.
*/
export interface Script {
/**
* When the script was created.
*/
created_on?: string;
/**
* Name of the Workers for Platforms dispatch namespace.
*/
dispatch_namespace?: string;
/**
* When the script was last modified.
*/
modified_on?: string;
script?: ScriptsAPI.Script;
}
export type ScriptUpdateParams = ScriptUpdateParams.Variant0 | ScriptUpdateParams.Variant1;
export namespace ScriptUpdateParams {
export interface Variant0 {
/**
* Path param: Identifier
*/
account_id: 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. Source maps may also be included using the
* `application/source-map` content type.
*/
'<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?: WorkersAPI.SingleStepMigration | WorkersAPI.SteppedMigration;
placement?: WorkersAPI.PlacementConfiguration;
/**
* 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<TailAPI.ConsumerScript>;
/**
* 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 interface Variant1 {
/**
* Path param: Identifier
*/
account_id: string;
/**
* Body param: Rollback message to be associated with this deployment. Only parsed
* when query param `"rollback_to"` is present.
*/
message?: string;
}
}
export interface ScriptDeleteParams {
/**
* Path param: Identifier
*/
account_id: string;
/**
* Body param:
*/
body: unknown;
/**
* 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 Script = ScriptsScriptsAPI.Script;
export import ScriptUpdateParams = ScriptsScriptsAPI.ScriptUpdateParams;
export import ScriptDeleteParams = ScriptsScriptsAPI.ScriptDeleteParams;
export import ScriptGetParams = ScriptsScriptsAPI.ScriptGetParams;
export import Content = ContentAPI.Content;
export import ContentUpdateParams = ContentAPI.ContentUpdateParams;
export import ContentGetParams = ContentAPI.ContentGetParams;
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;
export import Bindings = BindingsAPI.Bindings;
export import BindingGetResponse = BindingsAPI.BindingGetResponse;
export import BindingGetParams = BindingsAPI.BindingGetParams;
export import Secrets = SecretsAPI.Secrets;
export import SecretUpdateResponse = SecretsAPI.SecretUpdateResponse;
export import SecretListResponse = SecretsAPI.SecretListResponse;
export import SecretListResponsesSinglePage = SecretsAPI.SecretListResponsesSinglePage;
export import SecretUpdateParams = SecretsAPI.SecretUpdateParams;
export import SecretListParams = SecretsAPI.SecretListParams;
export import Tags = TagsAPI.Tags;
export import TagUpdateResponse = TagsAPI.TagUpdateResponse;
export import TagListResponse = TagsAPI.TagListResponse;
export import TagDeleteResponse = TagsAPI.TagDeleteResponse;
export import TagListResponsesSinglePage = TagsAPI.TagListResponsesSinglePage;
export import TagUpdateParams = TagsAPI.TagUpdateParams;
export import TagListParams = TagsAPI.TagListParams;
export import TagDeleteParams = TagsAPI.TagDeleteParams;
}