alchemy 0.1.16 → 0.1.17

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.
Files changed (220) hide show
  1. package/lib/$.d.ts +12 -0
  2. package/lib/$.d.ts.map +1 -0
  3. package/lib/$.js +42 -0
  4. package/lib/$.js.map +1 -0
  5. package/lib/alchemize.d.ts +43 -0
  6. package/lib/alchemize.d.ts.map +1 -0
  7. package/lib/alchemize.js +112 -0
  8. package/lib/alchemize.js.map +1 -0
  9. package/lib/apply.d.ts +23 -0
  10. package/lib/aws/account-id.d.ts +5 -0
  11. package/lib/aws/account-id.d.ts.map +1 -0
  12. package/lib/aws/account-id.js +10 -0
  13. package/lib/aws/account-id.js.map +1 -0
  14. package/lib/aws/bucket.d.ts +21 -0
  15. package/lib/aws/bucket.d.ts.map +1 -0
  16. package/lib/aws/bucket.js +114 -0
  17. package/lib/aws/bucket.js.map +1 -0
  18. package/lib/aws/function.d.ts +53 -0
  19. package/lib/aws/function.d.ts.map +1 -0
  20. package/lib/aws/function.js +195 -0
  21. package/lib/aws/function.js.map +1 -0
  22. package/lib/aws/index.d.ts +9 -0
  23. package/lib/aws/index.d.ts.map +1 -0
  24. package/lib/aws/index.js +9 -0
  25. package/lib/aws/index.js.map +1 -0
  26. package/lib/aws/oidc/github-oidc-provider.d.ts +11 -0
  27. package/lib/aws/oidc/github-oidc-provider.d.ts.map +1 -0
  28. package/lib/aws/oidc/github-oidc-provider.js +22 -0
  29. package/lib/aws/oidc/github-oidc-provider.js.map +1 -0
  30. package/lib/aws/oidc/index.d.ts +3 -0
  31. package/lib/aws/oidc/index.d.ts.map +1 -0
  32. package/lib/aws/oidc/index.js +3 -0
  33. package/lib/aws/oidc/index.js.map +1 -0
  34. package/lib/aws/oidc/oidc-provider.d.ts +60 -0
  35. package/lib/aws/oidc/oidc-provider.d.ts.map +1 -0
  36. package/lib/aws/oidc/oidc-provider.js +140 -0
  37. package/lib/aws/oidc/oidc-provider.js.map +1 -0
  38. package/lib/aws/policy.d.ts +46 -0
  39. package/lib/aws/policy.d.ts.map +1 -0
  40. package/lib/aws/policy.js +139 -0
  41. package/lib/aws/policy.js.map +1 -0
  42. package/lib/aws/queue.d.ts +62 -0
  43. package/lib/aws/queue.d.ts.map +1 -0
  44. package/lib/aws/queue.js +167 -0
  45. package/lib/aws/queue.js.map +1 -0
  46. package/lib/aws/role.d.ts +27 -0
  47. package/lib/aws/role.d.ts.map +1 -0
  48. package/lib/aws/role.js +197 -0
  49. package/lib/aws/role.js.map +1 -0
  50. package/lib/aws/ses.d.ts +75 -0
  51. package/lib/aws/ses.d.ts.map +1 -0
  52. package/lib/aws/ses.js +189 -0
  53. package/lib/aws/ses.js.map +1 -0
  54. package/lib/aws/table.d.ts +26 -0
  55. package/lib/aws/table.d.ts.map +1 -0
  56. package/lib/aws/table.js +154 -0
  57. package/lib/aws/table.js.map +1 -0
  58. package/lib/cloudflare/api.d.ts +88 -0
  59. package/lib/cloudflare/api.d.ts.map +1 -0
  60. package/lib/cloudflare/api.js +184 -0
  61. package/lib/cloudflare/api.js.map +1 -0
  62. package/lib/cloudflare/asset-manifest.d.ts +15 -0
  63. package/lib/cloudflare/asset-manifest.d.ts.map +1 -0
  64. package/lib/cloudflare/asset-manifest.js +2 -0
  65. package/lib/cloudflare/asset-manifest.js.map +1 -0
  66. package/lib/cloudflare/auth.d.ts +52 -0
  67. package/lib/cloudflare/auth.d.ts.map +1 -0
  68. package/lib/cloudflare/auth.js +114 -0
  69. package/lib/cloudflare/auth.js.map +1 -0
  70. package/lib/cloudflare/bindings.d.ts +260 -0
  71. package/lib/cloudflare/bindings.d.ts.map +1 -0
  72. package/lib/cloudflare/bindings.js +2 -0
  73. package/lib/cloudflare/bindings.js.map +1 -0
  74. package/lib/cloudflare/bucket.d.ts +54 -0
  75. package/lib/cloudflare/bucket.d.ts.map +1 -0
  76. package/lib/cloudflare/bucket.js +120 -0
  77. package/lib/cloudflare/bucket.js.map +1 -0
  78. package/lib/cloudflare/durable-object-namespace.d.ts +20 -0
  79. package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -0
  80. package/lib/cloudflare/durable-object-namespace.js +21 -0
  81. package/lib/cloudflare/durable-object-namespace.js.map +1 -0
  82. package/lib/cloudflare/generate-asset-manifest.d.ts +3 -0
  83. package/lib/cloudflare/generate-asset-manifest.d.ts.map +1 -0
  84. package/lib/cloudflare/generate-asset-manifest.js +69 -0
  85. package/lib/cloudflare/generate-asset-manifest.js.map +1 -0
  86. package/lib/cloudflare/index.d.ts +8 -0
  87. package/lib/cloudflare/index.d.ts.map +1 -0
  88. package/lib/cloudflare/index.js +8 -0
  89. package/lib/cloudflare/index.js.map +1 -0
  90. package/lib/cloudflare/kv-namespace.d.ts +64 -0
  91. package/lib/cloudflare/kv-namespace.d.ts.map +1 -0
  92. package/lib/cloudflare/kv-namespace.js +114 -0
  93. package/lib/cloudflare/kv-namespace.js.map +1 -0
  94. package/lib/cloudflare/state.d.ts +83 -0
  95. package/lib/cloudflare/state.d.ts.map +1 -0
  96. package/lib/cloudflare/state.js +109 -0
  97. package/lib/cloudflare/state.js.map +1 -0
  98. package/lib/cloudflare/static-site-router.d.ts +19 -0
  99. package/lib/cloudflare/static-site-router.d.ts.map +1 -0
  100. package/lib/cloudflare/static-site-router.js +110 -0
  101. package/lib/cloudflare/static-site-router.js.map +1 -0
  102. package/lib/cloudflare/static-site.d.ts +166 -0
  103. package/lib/cloudflare/static-site.d.ts.map +1 -0
  104. package/lib/cloudflare/static-site.js +161 -0
  105. package/lib/cloudflare/static-site.js.map +1 -0
  106. package/lib/cloudflare/types.d.ts +52 -0
  107. package/lib/cloudflare/types.d.ts.map +1 -0
  108. package/lib/cloudflare/types.js +21 -0
  109. package/lib/cloudflare/types.js.map +1 -0
  110. package/lib/cloudflare/upload-asset-manifest.d.ts +12 -0
  111. package/lib/cloudflare/upload-asset-manifest.d.ts.map +1 -0
  112. package/lib/cloudflare/upload-asset-manifest.js +55 -0
  113. package/lib/cloudflare/upload-asset-manifest.js.map +1 -0
  114. package/lib/cloudflare/worker-metadata.d.ts +130 -0
  115. package/lib/cloudflare/worker-metadata.d.ts.map +1 -0
  116. package/lib/cloudflare/worker-metadata.js +2 -0
  117. package/lib/cloudflare/worker-metadata.js.map +1 -0
  118. package/lib/cloudflare/worker-migration.d.ts +110 -0
  119. package/lib/cloudflare/worker-migration.d.ts.map +1 -0
  120. package/lib/cloudflare/worker-migration.js +11 -0
  121. package/lib/cloudflare/worker-migration.js.map +1 -0
  122. package/lib/cloudflare/worker.d.ts +108 -0
  123. package/lib/cloudflare/worker.d.ts.map +1 -0
  124. package/lib/cloudflare/worker.js +407 -0
  125. package/lib/cloudflare/worker.js.map +1 -0
  126. package/lib/destroy.d.ts +19 -0
  127. package/lib/error.d.ts +2 -0
  128. package/lib/error.d.ts.map +1 -0
  129. package/lib/error.js +13 -0
  130. package/lib/error.js.map +1 -0
  131. package/lib/esbuild.d.ts +152 -0
  132. package/lib/esbuild.d.ts.map +1 -0
  133. package/lib/esbuild.js +67 -0
  134. package/lib/esbuild.js.map +1 -0
  135. package/lib/fs.d.ts +12 -0
  136. package/lib/fs.d.ts.map +1 -0
  137. package/lib/fs.js +41 -0
  138. package/lib/fs.js.map +1 -0
  139. package/lib/github/client.d.ts +34 -0
  140. package/lib/github/client.d.ts.map +1 -0
  141. package/lib/github/client.js +91 -0
  142. package/lib/github/client.js.map +1 -0
  143. package/lib/github/index.d.ts +2 -0
  144. package/lib/github/index.d.ts.map +1 -0
  145. package/lib/github/index.js +2 -0
  146. package/lib/github/index.js.map +1 -0
  147. package/lib/github/secret.d.ts +46 -0
  148. package/lib/github/secret.d.ts.map +1 -0
  149. package/lib/github/secret.js +103 -0
  150. package/lib/github/secret.js.map +1 -0
  151. package/lib/global.d.ts +16 -0
  152. package/lib/global.d.ts.map +1 -0
  153. package/lib/global.js +42 -0
  154. package/lib/global.js.map +1 -0
  155. package/lib/index.d.ts +10 -0
  156. package/lib/index.d.ts.map +1 -0
  157. package/lib/index.js +9 -0
  158. package/lib/index.js.map +1 -0
  159. package/lib/input.d.ts +6 -0
  160. package/lib/input.d.ts.map +1 -0
  161. package/lib/input.js +2 -0
  162. package/lib/input.js.map +1 -0
  163. package/lib/main.d.ts +3 -0
  164. package/lib/main.d.ts.map +1 -0
  165. package/lib/main.js +32 -0
  166. package/lib/main.js.map +1 -0
  167. package/lib/output.d.ts +24 -0
  168. package/lib/output.d.ts.map +1 -0
  169. package/lib/output.js +23 -0
  170. package/lib/output.js.map +1 -0
  171. package/lib/print.d.ts +7 -0
  172. package/lib/print.d.ts.map +1 -0
  173. package/lib/print.js +10 -0
  174. package/lib/print.js.map +1 -0
  175. package/lib/resource.d.ts +71 -0
  176. package/lib/resource.d.ts.map +1 -0
  177. package/lib/resource.js +276 -0
  178. package/lib/resource.js.map +1 -0
  179. package/lib/scope.d.ts +18 -0
  180. package/lib/scope.d.ts.map +1 -0
  181. package/lib/scope.js +30 -0
  182. package/lib/scope.js.map +1 -0
  183. package/lib/slug.d.ts +2 -0
  184. package/lib/slug.d.ts.map +1 -0
  185. package/lib/slug.js +4 -0
  186. package/lib/slug.js.map +1 -0
  187. package/lib/state.d.ts +40 -0
  188. package/lib/state.d.ts.map +1 -0
  189. package/lib/state.js +73 -0
  190. package/lib/state.js.map +1 -0
  191. package/lib/stripe/index.d.ts +4 -0
  192. package/lib/stripe/index.d.ts.map +1 -0
  193. package/lib/stripe/index.js +4 -0
  194. package/lib/stripe/index.js.map +1 -0
  195. package/lib/stripe/price.d.ts +109 -0
  196. package/lib/stripe/price.d.ts.map +1 -0
  197. package/lib/stripe/price.js +112 -0
  198. package/lib/stripe/price.js.map +1 -0
  199. package/lib/stripe/product.d.ts +86 -0
  200. package/lib/stripe/product.d.ts.map +1 -0
  201. package/lib/stripe/product.js +90 -0
  202. package/lib/stripe/product.js.map +1 -0
  203. package/lib/stripe/webhook.d.ts +73 -0
  204. package/lib/stripe/webhook.d.ts.map +1 -0
  205. package/lib/stripe/webhook.js +94 -0
  206. package/lib/stripe/webhook.js.map +1 -0
  207. package/lib/utils/content-type.d.ts +8 -0
  208. package/lib/utils/content-type.d.ts.map +1 -0
  209. package/lib/utils/content-type.js +41 -0
  210. package/lib/utils/content-type.js.map +1 -0
  211. package/lib/utils/retry.d.ts +13 -0
  212. package/lib/utils/retry.d.ts.map +1 -0
  213. package/lib/utils/retry.js +32 -0
  214. package/lib/utils/retry.js.map +1 -0
  215. package/package.json +1 -1
  216. package/src/cloudflare/bindings.ts +7 -1
  217. package/src/cloudflare/bucket.ts +240 -0
  218. package/src/cloudflare/index.ts +1 -0
  219. package/src/cloudflare/static-site.ts +13 -1
  220. package/src/cloudflare/worker.ts +7 -0
@@ -0,0 +1,407 @@
1
+ import * as fs from "fs/promises";
2
+ import { apply } from "../apply";
3
+ import { Bundle } from "../esbuild";
4
+ import { Resource } from "../resource";
5
+ import { withExponentialBackoff } from "../utils/retry";
6
+ import { createCloudflareApi } from "./api";
7
+ import { isBucket } from "./bucket";
8
+ import { isDurableObjectNamespace } from "./durable-object-namespace";
9
+ import { isKVNamespace } from "./kv-namespace";
10
+ export function isWorker(resource) {
11
+ return resource && typeof resource === "object" && resource.type === "worker";
12
+ }
13
+ export class Worker extends Resource("cloudflare::Worker", {
14
+ alwaysUpdate: true,
15
+ }, async (ctx, props) => {
16
+ // Create Cloudflare API client with automatic account discovery
17
+ const api = await createCloudflareApi();
18
+ // Use the provided name
19
+ const workerName = props.name;
20
+ // Validate input - we need either script, entryPoint, or bundle
21
+ if (!props.script && !props.entrypoint) {
22
+ throw new Error("One of script or entryPoint must be provided");
23
+ }
24
+ if (ctx.event === "delete") {
25
+ return deleteWorker(ctx, api, workerName);
26
+ }
27
+ else if (ctx.event === "create") {
28
+ await assertWorkerDoesNotExist(ctx, api, workerName);
29
+ }
30
+ const oldBindings = await ctx.get("bindings");
31
+ const scriptMetadata = await prepareWorkerMetadata(ctx, oldBindings, props);
32
+ // Get the script content - either from props.script, or by bundling
33
+ const scriptContent = props.script ?? (await bundleWorkerScript(ctx, props));
34
+ // Upload the worker script
35
+ await putWorker(ctx, api, workerName, scriptContent, scriptMetadata);
36
+ // TODO: it is less than ideal that this can fail, resulting in state problem
37
+ await ctx.set("bindings", props.bindings);
38
+ // Handle routes if requested
39
+ await setupRoutes(api, workerName, props.routes || []);
40
+ // Handle worker URL if requested
41
+ const workerUrl = await configureURL(ctx, api, workerName, props.url ?? false);
42
+ // Get current timestamp
43
+ const now = Date.now();
44
+ // Construct the output
45
+ const output = {
46
+ type: "service",
47
+ id: workerName,
48
+ name: workerName,
49
+ script: scriptContent,
50
+ format: props.format || "esm", // Include format in the output
51
+ routes: props.routes || [],
52
+ bindings: props.bindings ?? {},
53
+ env: props.env,
54
+ observability: scriptMetadata.observability,
55
+ createdAt: now,
56
+ updatedAt: now,
57
+ url: workerUrl,
58
+ };
59
+ return output;
60
+ }) {
61
+ }
62
+ async function deleteWorker(ctx, api, workerName) {
63
+ // Delete worker
64
+ const deleteResponse = await api.delete(`/accounts/${api.accountId}/workers/scripts/${workerName}`);
65
+ // Check for success (2xx status code)
66
+ if (!deleteResponse.ok && deleteResponse.status !== 404) {
67
+ const errorData = await deleteResponse
68
+ .json()
69
+ .catch(() => ({ errors: [{ message: deleteResponse.statusText }] }));
70
+ console.error("Error deleting worker:", errorData.errors?.[0]?.message || deleteResponse.statusText);
71
+ }
72
+ // Also remove any associated routes if they exist
73
+ if (ctx.output?.routes && ctx.output.routes.length > 0 && api.zoneId) {
74
+ // First get existing routes to find their IDs
75
+ const routesResponse = await api.get(`/zones/${api.zoneId}/workers/routes`);
76
+ if (!routesResponse.ok) {
77
+ throw new Error(`Could not fetch routes for cleanup: ${routesResponse.status} ${routesResponse.statusText}`);
78
+ }
79
+ const routesData = await routesResponse.json();
80
+ const existingRoutes = routesData.result || [];
81
+ for (const route of existingRoutes) {
82
+ if (ctx.output.routes.includes(route.pattern)) {
83
+ // Delete the route
84
+ const routeDeleteResponse = await api.delete(`/zones/${api.zoneId}/workers/routes/${route.id}`);
85
+ if (!routeDeleteResponse.ok) {
86
+ console.warn(`Failed to delete route ${route.pattern}: ${routeDeleteResponse.status} ${routeDeleteResponse.statusText}`);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ // Disable the URL if it was enabled
92
+ if (ctx.output?.url) {
93
+ try {
94
+ await api.post(`/accounts/${api.accountId}/workers/scripts/${workerName}/subdomain`, JSON.stringify({ enabled: false }), {
95
+ headers: { "Content-Type": "application/json" },
96
+ });
97
+ }
98
+ catch (error) {
99
+ console.warn("Failed to disable worker URL during deletion:", error);
100
+ }
101
+ }
102
+ // Return minimal output for deleted state
103
+ return;
104
+ }
105
+ async function putWorker(ctx, api, workerName, scriptContent, scriptMetadata) {
106
+ return withExponentialBackoff(async () => {
107
+ const scriptName = scriptMetadata.main_module ?? scriptMetadata.body_part;
108
+ // Create FormData for the upload
109
+ const formData = new FormData();
110
+ // Add the actual script content as a named file part
111
+ formData.append(scriptName, new Blob([scriptContent], {
112
+ type: scriptMetadata.main_module
113
+ ? "application/javascript+module"
114
+ : "application/javascript",
115
+ }), scriptName);
116
+ // console.log("Script Metadata:", JSON.stringify(scriptMetadata, null, 2));
117
+ // Add metadata as JSON
118
+ formData.append("metadata", new Blob([JSON.stringify(scriptMetadata)], {
119
+ type: "application/json",
120
+ }));
121
+ await new Promise((resolve) => setTimeout(resolve, 1000));
122
+ // Upload worker script with bindings
123
+ const uploadResponse = await api.put(`/accounts/${api.accountId}/workers/scripts/${workerName}`, formData, {
124
+ headers: {
125
+ "Content-Type": "multipart/form-data",
126
+ },
127
+ });
128
+ // Check if the upload was successful
129
+ if (!uploadResponse.ok) {
130
+ const errorData = await uploadResponse
131
+ .json()
132
+ .catch(() => ({ errors: [{ message: uploadResponse.statusText }] }));
133
+ const errorMessage = `Error (HTTP ${uploadResponse.status}) uploading worker script '${workerName}': ${errorData.errors?.[0]?.message || uploadResponse.statusText}`;
134
+ if (uploadResponse.status === 400 &&
135
+ errorMessage.includes("not found")) {
136
+ throw new NotFoundError(errorMessage);
137
+ }
138
+ throw new Error(errorMessage);
139
+ }
140
+ return formData;
141
+ }, (err) => err instanceof NotFoundError, 10, 100);
142
+ }
143
+ class NotFoundError extends Error {
144
+ constructor(message) {
145
+ super(message);
146
+ this.name = "NotFoundError";
147
+ }
148
+ }
149
+ async function prepareWorkerMetadata(ctx, oldBindings, props) {
150
+ // Prepare metadata with bindings
151
+ const meta = {
152
+ bindings: [],
153
+ observability: {
154
+ enabled: props.observability?.enabled !== false,
155
+ },
156
+ tags: [`alchemy:id:${ctx.resourceFQN}`],
157
+ migrations: {
158
+ new_classes: props.migrations?.new_classes ?? [],
159
+ deleted_classes: props.migrations?.deleted_classes ?? [],
160
+ renamed_classes: props.migrations?.renamed_classes ?? [],
161
+ transferred_classes: props.migrations?.transferred_classes ?? [],
162
+ new_sqlite_classes: props.migrations?.new_sqlite_classes ?? [],
163
+ },
164
+ };
165
+ const bindings = (props.bindings ?? {});
166
+ // Convert bindings to the format expected by the API
167
+ for (const [bindingName, binding] of Object.entries(bindings)) {
168
+ // Create a copy of the binding to avoid modifying the original
169
+ if (isKVNamespace(binding)) {
170
+ meta.bindings.push({
171
+ type: "kv_namespace",
172
+ name: bindingName,
173
+ namespace_id: binding.id,
174
+ });
175
+ }
176
+ else if (typeof binding === "string") {
177
+ meta.bindings.push({
178
+ type: "plain_text",
179
+ name: bindingName,
180
+ text: binding,
181
+ });
182
+ }
183
+ else if (binding.type === "service") {
184
+ meta.bindings.push({
185
+ type: "service",
186
+ name: bindingName,
187
+ service: binding.id,
188
+ });
189
+ }
190
+ else if (isDurableObjectNamespace(binding)) {
191
+ const stableId = binding.id;
192
+ const className = binding.className;
193
+ meta.bindings.push({
194
+ type: "durable_object_namespace",
195
+ name: bindingName,
196
+ class_name: className,
197
+ script_name: binding.scriptName,
198
+ environment: binding.environment,
199
+ namespace_id: binding.namespaceId,
200
+ });
201
+ const oldBinding = Object.values(oldBindings ?? {})
202
+ ?.filter(isDurableObjectNamespace)
203
+ ?.find((b) => b.id === stableId);
204
+ if (!oldBinding) {
205
+ if (binding.sqlite) {
206
+ meta.migrations.new_sqlite_classes.push(className);
207
+ }
208
+ else {
209
+ meta.migrations.new_classes.push(className);
210
+ }
211
+ }
212
+ else if (oldBinding.className !== className) {
213
+ meta.migrations.renamed_classes.push({
214
+ from: oldBinding.className,
215
+ to: className,
216
+ });
217
+ }
218
+ }
219
+ else if (isBucket(binding)) {
220
+ meta.bindings.push({
221
+ type: "r2_bucket",
222
+ name: bindingName,
223
+ bucket_name: binding.name || binding.id,
224
+ });
225
+ }
226
+ else {
227
+ // @ts-expect-error - we should never reach here
228
+ throw new Error(`Unsupported binding type: ${binding.type}`);
229
+ }
230
+ }
231
+ // Convert env variables to plain_text bindings
232
+ if (props.env) {
233
+ for (const [key, value] of Object.entries(props.env)) {
234
+ meta.bindings.push({
235
+ name: key,
236
+ type: "plain_text",
237
+ text: value,
238
+ });
239
+ }
240
+ }
241
+ // Determine if we're using ESM or service worker format
242
+ const isEsModule = props.format !== "cjs"; // Default to ESM unless CJS is specified
243
+ const scriptName = isEsModule ? "worker.js" : "script";
244
+ if (isEsModule) {
245
+ // For ES modules format
246
+ meta.main_module = scriptName;
247
+ }
248
+ else {
249
+ // For service worker format (CJS)
250
+ meta.body_part = scriptName;
251
+ }
252
+ return meta;
253
+ }
254
+ async function assertWorkerDoesNotExist(ctx, api, workerName) {
255
+ const response = await api.get(`/accounts/${api.accountId}/workers/scripts/${workerName}`);
256
+ if (response.status === 404) {
257
+ return true;
258
+ }
259
+ if (response.status === 200) {
260
+ const metadata = await getWorkerScriptMetadata(api, workerName);
261
+ if (!metadata) {
262
+ throw new Error(`Worker exists but failed to fetch metadata: ${response.status} ${response.statusText}`);
263
+ }
264
+ if (metadata.default_environment?.script.tags.includes(`alchemy:id:${ctx.resourceFQN}`)) {
265
+ return true;
266
+ }
267
+ throw new Error(`Worker with name '${workerName}' already exists. Please use a unique name.`);
268
+ }
269
+ else {
270
+ throw new Error(`Error checking if worker exists: ${response.status} ${response.statusText}`);
271
+ }
272
+ }
273
+ async function bundleWorkerScript(ctx, props) {
274
+ // Get the script content - either from props.script, or by bundling
275
+ // Create and use a Bundle resource with worker-optimized configuration
276
+ const defaultBundleOptions = {
277
+ format: props.format === "cjs" ? "cjs" : "esm", // Use the specified format or default to ESM
278
+ target: "es2020",
279
+ platform: "browser",
280
+ minify: true,
281
+ options: {
282
+ keepNames: true, // Important for Durable Object classes
283
+ },
284
+ };
285
+ // Merge with user-provided options
286
+ const bundleOptions = {
287
+ ...defaultBundleOptions,
288
+ ...(props.bundle || {}),
289
+ };
290
+ // Create the bundle
291
+ const bundle = new Bundle("bundle", {
292
+ entryPoint: props.entrypoint,
293
+ ...bundleOptions,
294
+ external: [...(bundleOptions.external ?? []), "cloudflare:workers"],
295
+ });
296
+ // Get the bundled content
297
+ const bundleOutput = await apply(bundle, {
298
+ quiet: ctx.quiet,
299
+ });
300
+ try {
301
+ return await fs.readFile(bundleOutput.path, "utf-8");
302
+ }
303
+ catch (error) {
304
+ console.error("Error reading bundle:", error);
305
+ throw new Error("Error reading bundle");
306
+ }
307
+ }
308
+ async function setupRoutes(api, workerName, routes) {
309
+ // Set up routes if provided
310
+ if (routes && routes.length > 0 && api.zoneId) {
311
+ // First get existing routes
312
+ const routesResponse = await api.get(`/zones/${api.zoneId}/workers/routes`);
313
+ if (!routesResponse.ok) {
314
+ throw new Error(`Could not fetch routes: ${routesResponse.status} ${routesResponse.statusText}`);
315
+ }
316
+ const routesData = await routesResponse.json();
317
+ const existingRoutes = routesData.result || [];
318
+ // For each desired route
319
+ for (const pattern of routes) {
320
+ const existingRoute = existingRoutes.find((r) => r.pattern === pattern);
321
+ if (existingRoute) {
322
+ // Update if script name doesn't match
323
+ if (existingRoute.script !== workerName) {
324
+ const updateRouteResponse = await api.put(`/zones/${api.zoneId}/workers/routes/${existingRoute.id}`, {
325
+ pattern,
326
+ script: workerName,
327
+ });
328
+ if (!updateRouteResponse.ok) {
329
+ console.warn(`Failed to update route ${pattern}: ${updateRouteResponse.status} ${updateRouteResponse.statusText}`);
330
+ }
331
+ }
332
+ }
333
+ else {
334
+ // Create new route
335
+ const createRouteResponse = await api.post(`/zones/${api.zoneId}/workers/routes`, {
336
+ pattern,
337
+ script: workerName,
338
+ });
339
+ if (!createRouteResponse.ok) {
340
+ throw new Error(`Failed to create route ${pattern}: ${createRouteResponse.status} ${createRouteResponse.statusText}`);
341
+ }
342
+ }
343
+ }
344
+ }
345
+ }
346
+ async function configureURL(ctx, api, workerName, url) {
347
+ let workerUrl;
348
+ if (url) {
349
+ // Enable the workers.dev subdomain for this worker
350
+ await api.post(`/accounts/${api.accountId}/workers/scripts/${workerName}/subdomain`, { enabled: true, previews_enabled: true }, {
351
+ headers: { "Content-Type": "application/json" },
352
+ });
353
+ // Get the account's workers.dev subdomain
354
+ const subdomainResponse = await api.get(`/accounts/${api.accountId}/workers/subdomain`);
355
+ if (!subdomainResponse.ok) {
356
+ throw new Error(`Could not fetch workers.dev subdomain: ${subdomainResponse.status} ${subdomainResponse.statusText}`);
357
+ }
358
+ const subdomainData = await subdomainResponse.json();
359
+ const subdomain = subdomainData.result?.subdomain;
360
+ if (subdomain) {
361
+ workerUrl = `https://${workerName}.${subdomain}.workers.dev`;
362
+ // Add a delay when the subdomain is first created.
363
+ // This is to prevent an issue where a negative cache-hit
364
+ // causes the subdomain to be unavailable for 30 seconds.
365
+ if (ctx.event === "create" || !ctx.output?.url) {
366
+ await new Promise((resolve) => setTimeout(resolve, 3000));
367
+ }
368
+ }
369
+ }
370
+ else if (url === false && ctx.output?.url) {
371
+ // Explicitly disable URL if it was previously enabled
372
+ const response = await api.post(`/accounts/${api.accountId}/workers/scripts/${workerName}/subdomain`, JSON.stringify({ enabled: false }), {
373
+ headers: { "Content-Type": "application/json" },
374
+ });
375
+ if (!response.ok) {
376
+ throw new Error(`Failed to disable worker URL: ${response.status} ${response.statusText}`);
377
+ }
378
+ }
379
+ return workerUrl;
380
+ }
381
+ async function getWorkerScriptMetadata(api, workerName) {
382
+ const response = await api.get(`/accounts/${api.accountId}/workers/services/${workerName}`);
383
+ if (response.status === 404) {
384
+ return undefined;
385
+ }
386
+ if (!response.ok) {
387
+ throw new Error(`Error getting worker script metadata: ${response.status} ${response.statusText}`);
388
+ }
389
+ return (await response.json()).result;
390
+ }
391
+ async function getWorkerBindings(api, workerName, environment = "production") {
392
+ const response = await api.get(`/accounts/${api.accountId}/workers/services/${workerName}/environments/${environment}/bindings`, {
393
+ headers: {
394
+ Authorization: `Bearer ${process.env.CLOUDFLARE_API_TOKEN}`,
395
+ "Content-Type": "application/json",
396
+ },
397
+ });
398
+ if (response.status === 404) {
399
+ return undefined;
400
+ }
401
+ if (!response.ok) {
402
+ throw new Error(`Failed to fetch bindings: ${response.status} ${response.statusText}`);
403
+ }
404
+ const data = await response.json();
405
+ return data.result;
406
+ }
407
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/cloudflare/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Output } from "./output";
2
+ import { Provider, ResourceID } from "./resource";
3
+ import { type Scope } from "./scope";
4
+ import type { State, StateStore } from "./state";
5
+ export interface DestroyOptions {
6
+ stage?: string;
7
+ stateStore?: StateStore;
8
+ scope?: Scope;
9
+ quiet?: boolean;
10
+ }
11
+ /**
12
+ * Prune all resources from an Output and "down", i.e. that branches from it.
13
+ */
14
+ export declare function destroy<T>(output: Output<T>, options?: DestroyOptions): Promise<void>;
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare function destroy<T>(stage: string, scope: Scope, resourceID: ResourceID, resourceState: State, resourceProvider: Provider, stateStore: StateStore, options: DestroyOptions): Promise<void>;
19
+ //# sourceMappingURL=destroy.d.ts.map
package/lib/error.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function ignore<T>(codes: string | string[], fn: () => Promise<T>): Promise<T | undefined>;
2
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,wBAAsB,MAAM,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAYxB"}
package/lib/error.js ADDED
@@ -0,0 +1,13 @@
1
+ export async function ignore(codes, fn) {
2
+ try {
3
+ return await fn();
4
+ }
5
+ catch (error) {
6
+ const errorCode = error.code || error.name;
7
+ if (Array.isArray(codes) ? codes.includes(errorCode) : errorCode === codes) {
8
+ return undefined;
9
+ }
10
+ throw error;
11
+ }
12
+ }
13
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAwB,EACxB,EAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QAC3C,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,EACtE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,152 @@
1
+ import * as esbuild from "esbuild";
2
+ export interface BundleProps {
3
+ /**
4
+ * Entry point for the bundle
5
+ */
6
+ entryPoint: string;
7
+ /**
8
+ * Output directory for the bundle
9
+ */
10
+ outdir?: string;
11
+ /**
12
+ * Output filename for the bundle
13
+ */
14
+ outfile?: string;
15
+ /**
16
+ * Bundle format (iife, cjs, esm)
17
+ */
18
+ format?: "iife" | "cjs" | "esm";
19
+ /**
20
+ * Target environment (e.g., 'node16', 'es2020')
21
+ */
22
+ target?: string | string[];
23
+ /**
24
+ * Whether to minify the output
25
+ */
26
+ minify?: boolean;
27
+ /**
28
+ * Whether to generate sourcemaps
29
+ */
30
+ sourcemap?: boolean | "inline" | "external" | "both";
31
+ /**
32
+ * External packages to exclude from bundle
33
+ */
34
+ external?: string[];
35
+ /**
36
+ * Platform to target (browser, node, neutral)
37
+ */
38
+ platform?: "browser" | "node" | "neutral";
39
+ /**
40
+ * Additional esbuild options
41
+ */
42
+ options?: Partial<esbuild.BuildOptions>;
43
+ }
44
+ export interface BundleOutput {
45
+ /**
46
+ * Path to the bundled file
47
+ */
48
+ path: string;
49
+ /**
50
+ * SHA-256 hash of the bundle contents
51
+ */
52
+ hash: string;
53
+ }
54
+ declare const Bundle_base: import("./resource").Provider<string, [props: BundleProps], BundleOutput>;
55
+ export declare class Bundle extends Bundle_base {
56
+ /**
57
+ * Get the metafile from the last build
58
+ */
59
+ getMetafile(ctx: {
60
+ get<T>(key: string): Promise<T | undefined>;
61
+ }): Promise<esbuild.Metafile | undefined>;
62
+ /**
63
+ * Get the hash from the last build
64
+ */
65
+ getHash(ctx: {
66
+ get<T>(key: string): Promise<T | undefined>;
67
+ }): Promise<string | undefined>;
68
+ }
69
+ export declare function bundle(props: BundleProps): Promise<esbuild.BuildResult<{
70
+ bundle: boolean;
71
+ splitting?: boolean;
72
+ preserveSymlinks?: boolean;
73
+ outfile: string;
74
+ metafile: boolean;
75
+ outdir?: string;
76
+ outbase?: string;
77
+ external: string[];
78
+ packages?: "bundle" | "external";
79
+ alias?: Record<string, string>;
80
+ loader?: {
81
+ [ext: string]: esbuild.Loader;
82
+ };
83
+ resolveExtensions?: string[];
84
+ mainFields?: string[];
85
+ conditions?: string[];
86
+ write: boolean;
87
+ allowOverwrite?: boolean;
88
+ tsconfig?: string;
89
+ outExtension?: {
90
+ [ext: string]: string;
91
+ };
92
+ publicPath?: string;
93
+ entryNames?: string;
94
+ chunkNames?: string;
95
+ assetNames?: string;
96
+ inject?: string[];
97
+ banner?: {
98
+ [type: string]: string;
99
+ };
100
+ footer?: {
101
+ [type: string]: string;
102
+ };
103
+ entryPoints: string[] | Record<string, string> | {
104
+ in: string;
105
+ out: string;
106
+ }[];
107
+ stdin?: esbuild.StdinOptions;
108
+ plugins?: esbuild.Plugin[];
109
+ absWorkingDir?: string;
110
+ nodePaths?: string[];
111
+ sourcemap: boolean | "linked" | "inline" | "external" | "both";
112
+ legalComments?: "none" | "inline" | "eof" | "linked" | "external";
113
+ sourceRoot?: string;
114
+ sourcesContent?: boolean;
115
+ format: esbuild.Format;
116
+ globalName?: string;
117
+ target: string | string[];
118
+ supported?: Record<string, boolean>;
119
+ platform: esbuild.Platform;
120
+ mangleProps?: RegExp;
121
+ reserveProps?: RegExp;
122
+ mangleQuoted?: boolean;
123
+ mangleCache?: Record<string, string | false>;
124
+ drop?: esbuild.Drop[];
125
+ dropLabels?: string[];
126
+ minify: boolean;
127
+ minifyWhitespace?: boolean;
128
+ minifyIdentifiers?: boolean;
129
+ minifySyntax?: boolean;
130
+ lineLimit?: number;
131
+ charset?: esbuild.Charset;
132
+ treeShaking?: boolean;
133
+ ignoreAnnotations?: boolean;
134
+ jsx?: "transform" | "preserve" | "automatic";
135
+ jsxFactory?: string;
136
+ jsxFragment?: string;
137
+ jsxImportSource?: string;
138
+ jsxDev?: boolean;
139
+ jsxSideEffects?: boolean;
140
+ define?: {
141
+ [key: string]: string;
142
+ };
143
+ pure?: string[];
144
+ keepNames?: boolean;
145
+ color?: boolean;
146
+ logLevel?: esbuild.LogLevel;
147
+ logLimit?: number;
148
+ logOverride?: Record<string, esbuild.LogLevel>;
149
+ tsconfigRaw?: string | esbuild.TsconfigRaw;
150
+ }>>;
151
+ export {};
152
+ //# sourceMappingURL=esbuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../src/esbuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAMnC,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACrD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;;AAED,qBAAa,MAAO,SAAQ,WAkC3B;IACC;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE;QAC5B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;KAC7C;IAID;;OAEG;IACU,OAAO,CAAC,GAAG,EAAE;QAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;KAAE;CAG1E;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiB9C"}