1 | type Cloudflare = { |
2 | token: string; |
3 | email: string; |
4 | key: string; |
5 | }; |
6 | |
7 | * Patch Script Settings |
8 | * Patch script metadata, such as bindings |
9 | */ |
10 | export async function main( |
11 | auth: Cloudflare, |
12 | account_identifier: string, |
13 | dispatch_namespace: string, |
14 | script_name: string, |
15 | body: { |
16 | bindings?: ( |
17 | | { |
18 | name: string; |
19 | namespace_id: string; |
20 | type: "kv_namespace"; |
21 | [k: string]: unknown; |
22 | } |
23 | | { |
24 | environment: string; |
25 | name: string; |
26 | service: string; |
27 | type: "service"; |
28 | [k: string]: unknown; |
29 | } |
30 | | { |
31 | class_name: string; |
32 | environment?: string; |
33 | name: string; |
34 | namespace_id?: string; |
35 | script_name?: string; |
36 | type: "durable_object_namespace"; |
37 | [k: string]: unknown; |
38 | } |
39 | | { |
40 | bucket_name: string; |
41 | name: string; |
42 | type: "r2_bucket"; |
43 | [k: string]: unknown; |
44 | } |
45 | | { |
46 | name: string; |
47 | queue_name: string; |
48 | type: "queue"; |
49 | [k: string]: unknown; |
50 | } |
51 | | { |
52 | binding: string; |
53 | id: string; |
54 | name: string; |
55 | type: "d1"; |
56 | [k: string]: unknown; |
57 | } |
58 | | { |
59 | name: string; |
60 | namespace: string; |
61 | outbound?: { |
62 | params?: string[]; |
63 | worker?: { |
64 | environment?: string; |
65 | service?: string; |
66 | [k: string]: unknown; |
67 | }; |
68 | [k: string]: unknown; |
69 | }; |
70 | type: "dispatch_namespace"; |
71 | [k: string]: unknown; |
72 | } |
73 | | { |
74 | certificate_id?: string; |
75 | name: string; |
76 | type: "mtls_certificate"; |
77 | [k: string]: unknown; |
78 | } |
79 | )[]; |
80 | compatibility_date?: string; |
81 | compatibility_flags?: string[]; |
82 | logpush?: boolean; |
83 | migrations?: |
84 | | ({ new_tag?: string; old_tag?: string; [k: string]: unknown } & { |
85 | deleted_classes?: string[]; |
86 | new_classes?: string[]; |
87 | renamed_classes?: { |
88 | from?: string; |
89 | to?: string; |
90 | [k: string]: unknown; |
91 | }[]; |
92 | transferred_classes?: { |
93 | from?: string; |
94 | from_script?: string; |
95 | to?: string; |
96 | [k: string]: unknown; |
97 | }[]; |
98 | [k: string]: unknown; |
99 | }) |
100 | | ({ new_tag?: string; old_tag?: string; [k: string]: unknown } & { |
101 | steps?: { |
102 | deleted_classes?: string[]; |
103 | new_classes?: string[]; |
104 | renamed_classes?: { |
105 | from?: string; |
106 | to?: string; |
107 | [k: string]: unknown; |
108 | }[]; |
109 | transferred_classes?: { |
110 | from?: string; |
111 | from_script?: string; |
112 | to?: string; |
113 | [k: string]: unknown; |
114 | }[]; |
115 | [k: string]: unknown; |
116 | }[]; |
117 | [k: string]: unknown; |
118 | }); |
119 | placement?: { mode?: "smart"; [k: string]: unknown }; |
120 | tags?: string[]; |
121 | tail_consumers?: { |
122 | environment?: string; |
123 | namespace?: string; |
124 | service: string; |
125 | [k: string]: unknown; |
126 | }[]; |
127 | usage_model?: string; |
128 | [k: string]: unknown; |
129 | } |
130 | ) { |
131 | const url = new URL( |
132 | `https://api.cloudflare.com/client/v4/accounts/${account_identifier}/workers/dispatch/namespaces/${dispatch_namespace}/scripts/${script_name}/settings` |
133 | ); |
134 |
|
135 | const response = await fetch(url, { |
136 | method: "PATCH", |
137 | headers: { |
138 | "X-AUTH-EMAIL": auth.email, |
139 | "X-AUTH-KEY": auth.key, |
140 | "Content-Type": "application/json", |
141 | Authorization: "Bearer " + auth.token, |
142 | }, |
143 | body: JSON.stringify(body), |
144 | }); |
145 | if (!response.ok) { |
146 | const text = await response.text(); |
147 | throw new Error(`${response.status} ${text}`); |
148 | } |
149 | return await response.json(); |
150 | } |
151 |
|