alchemy 0.1.11 → 0.1.12

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 (277) hide show
  1. package/README.md +324 -0
  2. package/lib/apply.d.ts +2 -2
  3. package/lib/apply.d.ts.map +1 -1
  4. package/lib/apply.js +2 -2
  5. package/lib/apply.js.map +1 -1
  6. package/lib/aws/index.d.ts +1 -0
  7. package/lib/aws/index.d.ts.map +1 -1
  8. package/lib/aws/index.js +1 -0
  9. package/lib/aws/index.js.map +1 -1
  10. package/lib/aws/ses.d.ts +75 -0
  11. package/lib/aws/ses.d.ts.map +1 -0
  12. package/lib/aws/ses.js +197 -0
  13. package/lib/aws/ses.js.map +1 -0
  14. package/lib/cloudflare/api.d.ts +84 -0
  15. package/lib/cloudflare/api.d.ts.map +1 -0
  16. package/lib/cloudflare/api.js +178 -0
  17. package/lib/cloudflare/api.js.map +1 -0
  18. package/lib/cloudflare/asset-manifest.d.ts +15 -0
  19. package/lib/cloudflare/asset-manifest.d.ts.map +1 -0
  20. package/lib/cloudflare/asset-manifest.js +2 -0
  21. package/lib/cloudflare/asset-manifest.js.map +1 -0
  22. package/lib/cloudflare/auth.d.ts +52 -0
  23. package/lib/cloudflare/auth.d.ts.map +1 -0
  24. package/lib/cloudflare/auth.js +114 -0
  25. package/lib/cloudflare/auth.js.map +1 -0
  26. package/lib/cloudflare/bindings.d.ts +244 -0
  27. package/lib/cloudflare/bindings.d.ts.map +1 -0
  28. package/lib/cloudflare/bindings.js +7 -0
  29. package/lib/cloudflare/bindings.js.map +1 -0
  30. package/lib/cloudflare/generate-asset-manifest.d.ts +3 -0
  31. package/lib/cloudflare/generate-asset-manifest.d.ts.map +1 -0
  32. package/lib/cloudflare/generate-asset-manifest.js +69 -0
  33. package/lib/cloudflare/generate-asset-manifest.js.map +1 -0
  34. package/lib/cloudflare/index.d.ts +6 -0
  35. package/lib/cloudflare/index.d.ts.map +1 -0
  36. package/lib/cloudflare/index.js +6 -0
  37. package/lib/cloudflare/index.js.map +1 -0
  38. package/lib/cloudflare/kv-namespace.d.ts +61 -0
  39. package/lib/cloudflare/kv-namespace.d.ts.map +1 -0
  40. package/lib/cloudflare/kv-namespace.js +93 -0
  41. package/lib/cloudflare/kv-namespace.js.map +1 -0
  42. package/lib/cloudflare/state.d.ts +83 -0
  43. package/lib/cloudflare/state.d.ts.map +1 -0
  44. package/lib/cloudflare/state.js +109 -0
  45. package/lib/cloudflare/state.js.map +1 -0
  46. package/lib/cloudflare/static-site-router.d.ts +10 -0
  47. package/lib/cloudflare/static-site-router.d.ts.map +1 -0
  48. package/lib/cloudflare/static-site-router.js +88 -0
  49. package/lib/cloudflare/static-site-router.js.map +1 -0
  50. package/lib/cloudflare/static-site.d.ts +166 -0
  51. package/lib/cloudflare/static-site.d.ts.map +1 -0
  52. package/lib/cloudflare/static-site.js +152 -0
  53. package/lib/cloudflare/static-site.js.map +1 -0
  54. package/lib/cloudflare/types.d.ts +52 -0
  55. package/lib/cloudflare/types.d.ts.map +1 -0
  56. package/lib/cloudflare/types.js +21 -0
  57. package/lib/cloudflare/types.js.map +1 -0
  58. package/lib/cloudflare/upload-asset-manifest.d.ts +12 -0
  59. package/lib/cloudflare/upload-asset-manifest.d.ts.map +1 -0
  60. package/lib/cloudflare/upload-asset-manifest.js +55 -0
  61. package/lib/cloudflare/upload-asset-manifest.js.map +1 -0
  62. package/lib/cloudflare/worker.d.ts +87 -0
  63. package/lib/cloudflare/worker.d.ts.map +1 -0
  64. package/lib/cloudflare/worker.js +364 -0
  65. package/lib/cloudflare/worker.js.map +1 -0
  66. package/lib/esbuild.d.ts +82 -0
  67. package/lib/esbuild.d.ts.map +1 -1
  68. package/lib/esbuild.js +24 -17
  69. package/lib/esbuild.js.map +1 -1
  70. package/lib/fs.d.ts +1 -1
  71. package/lib/global.d.ts.map +1 -1
  72. package/lib/global.js +3 -1
  73. package/lib/global.js.map +1 -1
  74. package/lib/index.d.ts +0 -1
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js +0 -1
  77. package/lib/index.js.map +1 -1
  78. package/lib/main.js +1 -1
  79. package/lib/main.js.map +1 -1
  80. package/lib/output.d.ts +17 -13
  81. package/lib/output.d.ts.map +1 -1
  82. package/lib/output.js +2 -2
  83. package/lib/output.js.map +1 -1
  84. package/lib/resource.d.ts +3 -2
  85. package/lib/resource.d.ts.map +1 -1
  86. package/lib/resource.js +2 -2
  87. package/lib/resource.js.map +1 -1
  88. package/lib/utils/content-type.d.ts +8 -0
  89. package/lib/utils/content-type.d.ts.map +1 -0
  90. package/lib/utils/content-type.js +41 -0
  91. package/lib/utils/content-type.js.map +1 -0
  92. package/package.json +26 -8
  93. package/src/apply.ts +5 -5
  94. package/src/aws/index.ts +1 -0
  95. package/src/aws/ses.ts +346 -0
  96. package/src/cloudflare/api.ts +276 -0
  97. package/src/cloudflare/asset-manifest.ts +16 -0
  98. package/src/cloudflare/auth.ts +187 -0
  99. package/src/cloudflare/bindings.ts +286 -0
  100. package/src/cloudflare/generate-asset-manifest.ts +93 -0
  101. package/src/cloudflare/index.ts +5 -0
  102. package/src/cloudflare/kv-namespace.ts +195 -0
  103. package/src/cloudflare/state.ts +138 -0
  104. package/src/cloudflare/static-site-router.ts +108 -0
  105. package/src/cloudflare/static-site.ts +379 -0
  106. package/src/cloudflare/types.ts +71 -0
  107. package/src/cloudflare/upload-asset-manifest.ts +83 -0
  108. package/src/cloudflare/worker.ts +568 -0
  109. package/src/esbuild.ts +31 -22
  110. package/src/global.ts +1 -0
  111. package/src/index.ts +0 -1
  112. package/src/main.ts +1 -1
  113. package/src/output.ts +32 -32
  114. package/src/resource.ts +11 -5
  115. package/src/utils/content-type.ts +42 -0
  116. package/lib/$.d.ts +0 -7
  117. package/lib/$.d.ts.map +0 -1
  118. package/lib/$.js +0 -31
  119. package/lib/$.js.map +0 -1
  120. package/lib/agent/ai.d.ts +0 -40
  121. package/lib/agent/ai.d.ts.map +0 -1
  122. package/lib/agent/ai.js +0 -132
  123. package/lib/agent/ai.js.map +0 -1
  124. package/lib/agent/anthropic.d.ts +0 -9
  125. package/lib/agent/anthropic.d.ts.map +0 -1
  126. package/lib/agent/anthropic.js +0 -25
  127. package/lib/agent/anthropic.js.map +0 -1
  128. package/lib/agent/dependencies.d.ts +0 -4
  129. package/lib/agent/dependencies.d.ts.map +0 -1
  130. package/lib/agent/dependencies.js +0 -48
  131. package/lib/agent/dependencies.js.map +0 -1
  132. package/lib/agent/file-context.d.ts +0 -13
  133. package/lib/agent/file-context.d.ts.map +0 -1
  134. package/lib/agent/file-context.js +0 -6
  135. package/lib/agent/file-context.js.map +0 -1
  136. package/lib/agent/index.d.ts +0 -10
  137. package/lib/agent/index.d.ts.map +0 -1
  138. package/lib/agent/index.js +0 -10
  139. package/lib/agent/index.js.map +0 -1
  140. package/lib/agent/model.d.ts +0 -8
  141. package/lib/agent/model.d.ts.map +0 -1
  142. package/lib/agent/model.js +0 -29
  143. package/lib/agent/model.js.map +0 -1
  144. package/lib/agent/module.d.ts +0 -81
  145. package/lib/agent/module.d.ts.map +0 -1
  146. package/lib/agent/module.js +0 -309
  147. package/lib/agent/module.js.map +0 -1
  148. package/lib/agent/openai.d.ts +0 -6
  149. package/lib/agent/openai.d.ts.map +0 -1
  150. package/lib/agent/openai.js +0 -41
  151. package/lib/agent/openai.js.map +0 -1
  152. package/lib/agent/program.d.ts +0 -12
  153. package/lib/agent/program.d.ts.map +0 -1
  154. package/lib/agent/program.js +0 -21
  155. package/lib/agent/program.js.map +0 -1
  156. package/lib/agent/prompts.d.ts +0 -4
  157. package/lib/agent/prompts.d.ts.map +0 -1
  158. package/lib/agent/prompts.js +0 -11
  159. package/lib/agent/prompts.js.map +0 -1
  160. package/lib/agent/scrape.d.ts +0 -71
  161. package/lib/agent/scrape.d.ts.map +0 -1
  162. package/lib/agent/scrape.js +0 -45
  163. package/lib/agent/scrape.js.map +0 -1
  164. package/lib/aws/auto/docs.d.ts +0 -11
  165. package/lib/aws/auto/docs.d.ts.map +0 -1
  166. package/lib/aws/auto/docs.js +0 -56
  167. package/lib/aws/auto/docs.js.map +0 -1
  168. package/lib/aws/auto/index.d.ts +0 -5
  169. package/lib/aws/auto/index.d.ts.map +0 -1
  170. package/lib/aws/auto/index.js +0 -5
  171. package/lib/aws/auto/index.js.map +0 -1
  172. package/lib/aws/auto/resource.d.ts +0 -24
  173. package/lib/aws/auto/resource.d.ts.map +0 -1
  174. package/lib/aws/auto/resource.js +0 -194
  175. package/lib/aws/auto/resource.js.map +0 -1
  176. package/lib/aws/auto/service.d.ts +0 -10
  177. package/lib/aws/auto/service.d.ts.map +0 -1
  178. package/lib/aws/auto/service.js +0 -34
  179. package/lib/aws/auto/service.js.map +0 -1
  180. package/lib/aws/auto/spec.d.ts +0 -83
  181. package/lib/aws/auto/spec.d.ts.map +0 -1
  182. package/lib/aws/auto/spec.js +0 -58
  183. package/lib/aws/auto/spec.js.map +0 -1
  184. package/lib/markdown/design.d.ts +0 -17
  185. package/lib/markdown/design.d.ts.map +0 -1
  186. package/lib/markdown/design.js +0 -92
  187. package/lib/markdown/design.js.map +0 -1
  188. package/lib/markdown/extract.d.ts +0 -7
  189. package/lib/markdown/extract.d.ts.map +0 -1
  190. package/lib/markdown/extract.js +0 -10
  191. package/lib/markdown/extract.js.map +0 -1
  192. package/lib/markdown/index.d.ts +0 -4
  193. package/lib/markdown/index.d.ts.map +0 -1
  194. package/lib/markdown/index.js +0 -4
  195. package/lib/markdown/index.js.map +0 -1
  196. package/lib/markdown/requirements.d.ts +0 -79
  197. package/lib/markdown/requirements.d.ts.map +0 -1
  198. package/lib/markdown/requirements.js +0 -105
  199. package/lib/markdown/requirements.js.map +0 -1
  200. package/lib/typescript/check-omission.d.ts +0 -2
  201. package/lib/typescript/check-omission.d.ts.map +0 -1
  202. package/lib/typescript/check-omission.js +0 -43
  203. package/lib/typescript/check-omission.js.map +0 -1
  204. package/lib/typescript/debug-type-errors.d.ts +0 -3
  205. package/lib/typescript/debug-type-errors.d.ts.map +0 -1
  206. package/lib/typescript/debug-type-errors.js +0 -35
  207. package/lib/typescript/debug-type-errors.js.map +0 -1
  208. package/lib/typescript/extract.d.ts +0 -7
  209. package/lib/typescript/extract.d.ts.map +0 -1
  210. package/lib/typescript/extract.js +0 -10
  211. package/lib/typescript/extract.js.map +0 -1
  212. package/lib/typescript/index.d.ts +0 -7
  213. package/lib/typescript/index.d.ts.map +0 -1
  214. package/lib/typescript/index.js +0 -7
  215. package/lib/typescript/index.js.map +0 -1
  216. package/lib/typescript/install-dependencies.d.ts +0 -29
  217. package/lib/typescript/install-dependencies.d.ts.map +0 -1
  218. package/lib/typescript/install-dependencies.js +0 -52
  219. package/lib/typescript/install-dependencies.js.map +0 -1
  220. package/lib/typescript/package.d.ts +0 -157
  221. package/lib/typescript/package.d.ts.map +0 -1
  222. package/lib/typescript/package.js +0 -115
  223. package/lib/typescript/package.js.map +0 -1
  224. package/lib/typescript/repair-omissions.d.ts +0 -3
  225. package/lib/typescript/repair-omissions.d.ts.map +0 -1
  226. package/lib/typescript/repair-omissions.js +0 -23
  227. package/lib/typescript/repair-omissions.js.map +0 -1
  228. package/lib/typescript/repair.d.ts +0 -3
  229. package/lib/typescript/repair.d.ts.map +0 -1
  230. package/lib/typescript/repair.js +0 -34
  231. package/lib/typescript/repair.js.map +0 -1
  232. package/lib/typescript/tsconfig.d.ts +0 -469
  233. package/lib/typescript/tsconfig.d.ts.map +0 -1
  234. package/lib/typescript/tsconfig.js +0 -143
  235. package/lib/typescript/tsconfig.js.map +0 -1
  236. package/lib/typescript/typescript.d.ts +0 -107
  237. package/lib/typescript/typescript.d.ts.map +0 -1
  238. package/lib/typescript/typescript.js +0 -180
  239. package/lib/typescript/typescript.js.map +0 -1
  240. package/lib/typescript/validate.d.ts +0 -10
  241. package/lib/typescript/validate.d.ts.map +0 -1
  242. package/lib/typescript/validate.js +0 -49
  243. package/lib/typescript/validate.js.map +0 -1
  244. package/src/$.ts +0 -36
  245. package/src/agent/ai.ts +0 -215
  246. package/src/agent/anthropic.ts +0 -31
  247. package/src/agent/dependencies.ts +0 -62
  248. package/src/agent/file-context.ts +0 -8
  249. package/src/agent/index.ts +0 -9
  250. package/src/agent/model.ts +0 -39
  251. package/src/agent/module.ts +0 -418
  252. package/src/agent/openai.ts +0 -50
  253. package/src/agent/program.md +0 -38
  254. package/src/agent/program.ts +0 -37
  255. package/src/agent/prompts.ts +0 -20
  256. package/src/agent/scrape.ts +0 -47
  257. package/src/aws/auto/cfn.json +0 -225310
  258. package/src/aws/auto/docs.ts +0 -73
  259. package/src/aws/auto/index.ts +0 -4
  260. package/src/aws/auto/resource.ts +0 -269
  261. package/src/aws/auto/service.ts +0 -51
  262. package/src/aws/auto/spec.ts +0 -160
  263. package/src/markdown/design.ts +0 -125
  264. package/src/markdown/extract.ts +0 -9
  265. package/src/markdown/index.ts +0 -3
  266. package/src/markdown/requirements.ts +0 -135
  267. package/src/typescript/check-omission.ts +0 -47
  268. package/src/typescript/debug-type-errors.ts +0 -42
  269. package/src/typescript/extract.ts +0 -9
  270. package/src/typescript/index.ts +0 -6
  271. package/src/typescript/install-dependencies.ts +0 -61
  272. package/src/typescript/package.ts +0 -143
  273. package/src/typescript/repair-omissions.ts +0 -31
  274. package/src/typescript/repair.ts +0 -45
  275. package/src/typescript/tsconfig.ts +0 -170
  276. package/src/typescript/typescript.ts +0 -217
  277. package/src/typescript/validate.ts +0 -73
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Cloudflare API response format
3
+ */
4
+ export interface CloudflareApiResponse<T> {
5
+ /**
6
+ * API response result
7
+ */
8
+ result: T;
9
+ /**
10
+ * Success status
11
+ */
12
+ success: boolean;
13
+ /**
14
+ * Error details if success is false
15
+ */
16
+ errors: CloudflareApiError[];
17
+ /**
18
+ * Response messages
19
+ */
20
+ messages: string[];
21
+ /**
22
+ * Result information (typically for paginated results)
23
+ */
24
+ result_info?: {
25
+ page: number;
26
+ per_page: number;
27
+ total_pages: number;
28
+ count: number;
29
+ total_count: number;
30
+ };
31
+ }
32
+ /**
33
+ * Cloudflare API error format
34
+ */
35
+ export interface CloudflareApiError {
36
+ /**
37
+ * Error code
38
+ */
39
+ code: number;
40
+ /**
41
+ * Error message
42
+ */
43
+ message: string;
44
+ }
45
+ /**
46
+ * Helper to extract and handle Cloudflare API errors
47
+ *
48
+ * @param response Fetch response object
49
+ * @returns Formatted error message
50
+ */
51
+ export declare function extractCloudflareError(response: Response): Promise<string>;
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cloudflare/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Helper to extract and handle Cloudflare API errors
3
+ *
4
+ * @param response Fetch response object
5
+ * @returns Formatted error message
6
+ */
7
+ export async function extractCloudflareError(response) {
8
+ try {
9
+ const data = (await response.json());
10
+ if (data.errors && data.errors.length > 0) {
11
+ return data.errors.map((e) => `Error ${e.code}: ${e.message}`).join(", ");
12
+ }
13
+ else {
14
+ return `HTTP ${response.status}: ${response.statusText}`;
15
+ }
16
+ }
17
+ catch (e) {
18
+ return `HTTP ${response.status}: ${response.statusText}`;
19
+ }
20
+ }
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cloudflare/types.ts"],"names":[],"mappings":"AAmDA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAkB;IAElB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA+B,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { CloudflareApi } from "./api";
2
+ import type { AssetManifest } from "./asset-manifest";
3
+ type AssetItem = AssetManifest[number];
4
+ type UploadResult = {
5
+ item: AssetItem;
6
+ success: boolean;
7
+ status?: number;
8
+ error?: unknown;
9
+ };
10
+ export declare function uploadAssetManifest(api: CloudflareApi, namespaceId: string, manifest: AssetManifest): Promise<UploadResult[]>;
11
+ export {};
12
+ //# sourceMappingURL=upload-asset-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-asset-manifest.d.ts","sourceRoot":"","sources":["../../src/cloudflare/upload-asset-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CA8DzB"}
@@ -0,0 +1,55 @@
1
+ import fs from "node:fs/promises";
2
+ // Maximum number of concurrent uploads
3
+ const MAX_CONCURRENT = 100; // Adjust based on API limits and performance testing
4
+ export async function uploadAssetManifest(api, namespaceId, manifest) {
5
+ const results = [];
6
+ // Process in batches with controlled concurrency
7
+ let index = 0;
8
+ const activePromises = new Set();
9
+ while (index < manifest.length || activePromises.size > 0) {
10
+ // Fill up to MAX_CONCURRENT active uploads
11
+ while (activePromises.size < MAX_CONCURRENT && index < manifest.length) {
12
+ const item = manifest[index++];
13
+ const promise = uploadItem(item).then((result) => {
14
+ results.push(result);
15
+ activePromises.delete(promise);
16
+ });
17
+ activePromises.add(promise);
18
+ }
19
+ // Wait for at least one promise to complete if we have any active
20
+ if (activePromises.size > 0) {
21
+ await Promise.race(activePromises);
22
+ }
23
+ }
24
+ return results;
25
+ async function uploadItem(item) {
26
+ const content = await fs.readFile(item.source);
27
+ // Create metadata object
28
+ const metadata = {
29
+ key: item.key,
30
+ hash: item.hash,
31
+ contentType: item.contentType,
32
+ cacheControl: item.cacheControl,
33
+ };
34
+ // Create FormData for multipart upload
35
+ const formData = new FormData();
36
+ formData.append("metadata", JSON.stringify(metadata));
37
+ // Add file content as 'value'
38
+ const blob = new Blob([content]);
39
+ formData.append("value", blob);
40
+ try {
41
+ const response = await api.put(`/accounts/${api.accountId}/storage/kv/namespaces/${namespaceId}/values/${item.key}`, formData);
42
+ const result = { item, success: response.ok, status: response.status };
43
+ if (!result.success) {
44
+ console.warn(`Error uploading asset ${item.key}: ${result.status}`);
45
+ }
46
+ return result;
47
+ }
48
+ catch (error) {
49
+ const result = { item, success: false, error };
50
+ console.warn(`Error uploading asset ${item.key}: ${error}`);
51
+ return result;
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=upload-asset-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-asset-manifest.js","sourceRoot":"","sources":["../../src/cloudflare/upload-asset-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { Bundle, type BundleProps } from "../esbuild";
2
+ import type { WorkerBinding } from "./bindings";
3
+ /**
4
+ * Properties for creating or updating a Worker
5
+ */
6
+ export interface WorkerProps {
7
+ /**
8
+ * The worker script content (JavaScript or WASM)
9
+ * One of script, entryPoint, or bundle must be provided
10
+ */
11
+ script?: string;
12
+ /**
13
+ * Path to the entry point file
14
+ * Will be bundled using esbuild
15
+ * One of script, entryPoint, or bundle must be provided
16
+ */
17
+ entrypoint?: string;
18
+ /**
19
+ * Reference to a pre-configured Bundle resource
20
+ * One of script, entryPoint, or bundle must be provided
21
+ */
22
+ bundle?: Bundle;
23
+ /**
24
+ * Bundle options when using entryPoint
25
+ * Ignored if bundle is provided
26
+ */
27
+ bundleOptions?: Omit<BundleProps, "entryPoint">;
28
+ /**
29
+ * Module format for the worker script
30
+ * 'esm' - ECMAScript modules (default)
31
+ * 'cjs' - CommonJS modules
32
+ * @default 'esm'
33
+ */
34
+ format?: "esm" | "cjs";
35
+ /**
36
+ * Name for the worker
37
+ * This is mandatory - must be explicitly specified
38
+ */
39
+ name: string;
40
+ /**
41
+ * Routes to associate with this worker
42
+ * Format: example.com/* or *.example.com/*
43
+ */
44
+ routes?: string[];
45
+ /**
46
+ * Bindings to attach to the worker
47
+ */
48
+ bindings?: WorkerBinding[];
49
+ /**
50
+ * Whether the worker should be deployed to production
51
+ * @default true
52
+ */
53
+ production?: boolean;
54
+ /**
55
+ * Whether to enable a workers.dev URL for this worker
56
+ * If true, the worker will be available at {name}.{subdomain}.workers.dev
57
+ * @default false
58
+ */
59
+ url?: boolean;
60
+ }
61
+ /**
62
+ * Output returned after Worker creation/update
63
+ */
64
+ export interface WorkerOutput extends Omit<WorkerProps, "url"> {
65
+ /**
66
+ * The ID of the worker
67
+ */
68
+ id: string;
69
+ /**
70
+ * Time at which the worker was created
71
+ */
72
+ createdAt: number;
73
+ /**
74
+ * Time at which the worker was last updated
75
+ */
76
+ updatedAt: number;
77
+ /**
78
+ * The worker's URL if enabled
79
+ * Format: {name}.{subdomain}.workers.dev
80
+ */
81
+ url?: string;
82
+ }
83
+ declare const Worker_base: import("../resource").Provider<"cloudflare::Worker", [props: WorkerProps], WorkerOutput>;
84
+ export declare class Worker extends Worker_base {
85
+ }
86
+ export {};
87
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cloudflare/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAEvB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5D;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;;AAED,qBAAa,MAAO,SAAQ,WAkd3B;CAAG"}
@@ -0,0 +1,364 @@
1
+ import * as fs from "fs/promises";
2
+ import { apply } from "../apply";
3
+ import { Bundle } from "../esbuild";
4
+ import { Resource } from "../resource";
5
+ import { createCloudflareApi } from "./api";
6
+ export class Worker extends Resource("cloudflare::Worker", async (ctx, props) => {
7
+ // Create Cloudflare API client with automatic account discovery
8
+ const api = await createCloudflareApi();
9
+ // Validate that a name is provided
10
+ if (!props.name) {
11
+ throw new Error("Worker name is required - must be explicitly specified");
12
+ }
13
+ // Use the provided name
14
+ const workerName = props.name;
15
+ // Validate input - we need either script, entryPoint, or bundle
16
+ if (!props.script && !props.entrypoint && !props.bundle) {
17
+ throw new Error("One of script, entryPoint, or bundle must be provided");
18
+ }
19
+ // For create operations, check if a worker with the same name already exists
20
+ if (ctx.event === "create") {
21
+ const checkExistsResponse = await api.get(`/accounts/${api.accountId}/workers/scripts/${workerName}`);
22
+ if (checkExistsResponse.ok) {
23
+ throw new Error(`Worker with name '${workerName}' already exists. Please use a unique name.`);
24
+ }
25
+ else if (checkExistsResponse.status !== 404) {
26
+ // If it's neither a success nor a 404, it's an unexpected error
27
+ const errorData = await checkExistsResponse.json().catch(() => ({
28
+ errors: [{ message: checkExistsResponse.statusText }],
29
+ }));
30
+ throw new Error(`Error checking if worker exists: ${errorData.errors?.[0]?.message || checkExistsResponse.statusText}`);
31
+ }
32
+ // If it's a 404, that means the worker doesn't exist yet, which is what we want
33
+ }
34
+ if (ctx.event === "delete") {
35
+ // Delete worker
36
+ const deleteResponse = await api.delete(`/accounts/${api.accountId}/workers/scripts/${workerName}`);
37
+ // Check for success (2xx status code)
38
+ if (!deleteResponse.ok && deleteResponse.status !== 404) {
39
+ const errorData = await deleteResponse
40
+ .json()
41
+ .catch(() => ({ errors: [{ message: deleteResponse.statusText }] }));
42
+ console.error("Error deleting worker:", errorData.errors?.[0]?.message || deleteResponse.statusText);
43
+ }
44
+ // Also remove any associated routes if they exist
45
+ if (ctx.output?.routes && ctx.output.routes.length > 0 && api.zoneId) {
46
+ // First get existing routes to find their IDs
47
+ const routesResponse = await api.get(`/zones/${api.zoneId}/workers/routes`);
48
+ if (routesResponse.ok) {
49
+ const routesData = await routesResponse.json();
50
+ const existingRoutes = routesData.result || [];
51
+ for (const route of existingRoutes) {
52
+ if (ctx.output.routes.includes(route.pattern)) {
53
+ // Delete the route
54
+ const routeDeleteResponse = await api.delete(`/zones/${api.zoneId}/workers/routes/${route.id}`);
55
+ if (!routeDeleteResponse.ok) {
56
+ console.warn(`Failed to delete route ${route.pattern}: ${routeDeleteResponse.status} ${routeDeleteResponse.statusText}`);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ else {
62
+ console.warn("Could not fetch routes for cleanup:", routesResponse.status, routesResponse.statusText);
63
+ }
64
+ }
65
+ // Disable the URL if it was enabled
66
+ if (ctx.output?.url) {
67
+ try {
68
+ await api.post(`/accounts/${api.accountId}/workers/scripts/${workerName}/subdomain`, JSON.stringify({ enabled: false }), {
69
+ headers: { "Content-Type": "application/json" },
70
+ });
71
+ }
72
+ catch (error) {
73
+ console.warn("Failed to disable worker URL during deletion:", error);
74
+ }
75
+ }
76
+ // Return minimal output for deleted state
77
+ return {
78
+ ...props,
79
+ id: "",
80
+ createdAt: 0,
81
+ updatedAt: 0,
82
+ url: undefined,
83
+ };
84
+ }
85
+ else {
86
+ // Get the script content - either from props.script, or by bundling
87
+ let scriptContent;
88
+ if (props.script) {
89
+ // Use the provided script
90
+ scriptContent = props.script;
91
+ }
92
+ else if (props.bundle) {
93
+ // Use a pre-configured Bundle resource
94
+ const bundleOutput = await apply(props.bundle);
95
+ scriptContent = await fs.readFile(bundleOutput.path, "utf-8");
96
+ }
97
+ else if (props.entrypoint) {
98
+ // Create and use a Bundle resource with worker-optimized configuration
99
+ const defaultBundleOptions = {
100
+ format: props.format === "cjs" ? "cjs" : "esm", // Use the specified format or default to ESM
101
+ target: "es2020",
102
+ platform: "browser",
103
+ minify: true,
104
+ options: {
105
+ keepNames: true, // Important for Durable Object classes
106
+ },
107
+ };
108
+ // Merge with user-provided options
109
+ const bundleOptions = {
110
+ ...defaultBundleOptions,
111
+ ...(props.bundleOptions || {}),
112
+ };
113
+ // Create the bundle
114
+ const bundle = new Bundle("bundle", {
115
+ entryPoint: props.entrypoint,
116
+ ...bundleOptions,
117
+ });
118
+ // Get the bundled content
119
+ const bundleOutput = await apply(bundle);
120
+ try {
121
+ scriptContent = await fs.readFile(bundleOutput.path, "utf-8");
122
+ }
123
+ catch (error) {
124
+ console.error("Error reading bundle:", error);
125
+ throw new Error("Error reading bundle");
126
+ }
127
+ }
128
+ else {
129
+ throw new Error("No script source provided"); // Shouldn't reach here due to earlier validation
130
+ }
131
+ // Prepare metadata with bindings
132
+ const metadata = {
133
+ bindings: [],
134
+ };
135
+ // Convert bindings to the format expected by the API
136
+ if (props.bindings && props.bindings.length > 0) {
137
+ for (const binding of props.bindings) {
138
+ const bindingData = {
139
+ name: binding.name,
140
+ type: binding.type,
141
+ };
142
+ // Map binding properties to the API format based on binding type
143
+ switch (binding.type) {
144
+ case "kv_namespace":
145
+ bindingData.namespace_id = binding.namespace_id;
146
+ break;
147
+ case "durable_object_namespace":
148
+ bindingData.class_name = binding.class_name;
149
+ if (binding.namespace_id) {
150
+ bindingData.namespace_id = binding.namespace_id;
151
+ }
152
+ if (binding.script_name) {
153
+ bindingData.script_name = binding.script_name;
154
+ }
155
+ if (binding.environment) {
156
+ bindingData.environment = binding.environment;
157
+ }
158
+ break;
159
+ case "secret_text":
160
+ bindingData.text = binding.text;
161
+ break;
162
+ case "r2_bucket":
163
+ bindingData.bucket_name = binding.bucket_name;
164
+ break;
165
+ case "analytics_engine":
166
+ bindingData.dataset = binding.dataset;
167
+ break;
168
+ case "service":
169
+ bindingData.service = binding.service;
170
+ if (binding.environment) {
171
+ bindingData.environment = binding.environment;
172
+ }
173
+ if (binding.namespace) {
174
+ bindingData.namespace = binding.namespace;
175
+ }
176
+ break;
177
+ case "d1":
178
+ bindingData.id = binding.id;
179
+ break;
180
+ case "queue":
181
+ bindingData.queue_name = binding.queue_name;
182
+ break;
183
+ case "json":
184
+ bindingData.json = binding.json;
185
+ break;
186
+ case "hyperdrive":
187
+ bindingData.id = binding.id;
188
+ break;
189
+ case "vectorize":
190
+ bindingData.index_name = binding.index_name;
191
+ break;
192
+ case "dispatch_namespace":
193
+ bindingData.namespace = binding.namespace;
194
+ if (binding.outbound) {
195
+ bindingData.outbound = binding.outbound;
196
+ }
197
+ break;
198
+ case "mtls_certificate":
199
+ bindingData.certificate_id = binding.certificate_id;
200
+ break;
201
+ case "plain_text":
202
+ bindingData.text = binding.text;
203
+ break;
204
+ case "wasm_module":
205
+ bindingData.module = binding.module;
206
+ break;
207
+ case "tail_consumer":
208
+ bindingData.service = binding.service;
209
+ break;
210
+ }
211
+ metadata.bindings.push(bindingData);
212
+ }
213
+ }
214
+ // Create FormData for the upload
215
+ const formData = new FormData();
216
+ // Determine if we're using ESM or service worker format
217
+ const isEsModule = props.format !== "cjs"; // Default to ESM unless CJS is specified
218
+ const scriptName = isEsModule ? "worker.js" : "script";
219
+ const contentType = isEsModule
220
+ ? "application/javascript+module"
221
+ : "application/javascript";
222
+ // Prepare metadata
223
+ const updatedMetadata = {
224
+ ...metadata,
225
+ };
226
+ // Add Durable Object migrations if there are any DO bindings
227
+ const durableObjectBindings = props.bindings?.filter((binding) => binding.type === "durable_object_namespace" &&
228
+ // Only include self-referencing DOs (ones defined in this script)
229
+ binding.script_name === props.name);
230
+ if (durableObjectBindings && durableObjectBindings.length > 0) {
231
+ // Add migrations metadata for Durable Objects
232
+ updatedMetadata.migrations = {
233
+ new_classes: durableObjectBindings.map((binding) => binding.class_name),
234
+ deleted_classes: [],
235
+ renamed_classes: [],
236
+ // Version 2 migrations
237
+ new_sqlite_classes: [],
238
+ updated_sqlite_classes: [],
239
+ renamed_sqlite_classes: [],
240
+ };
241
+ }
242
+ if (isEsModule) {
243
+ // For ES modules format
244
+ updatedMetadata.main_module = scriptName;
245
+ }
246
+ else {
247
+ // For service worker format (CJS)
248
+ updatedMetadata.body_part = scriptName;
249
+ }
250
+ // Add the actual script content as a named file part
251
+ formData.append(scriptName, new Blob([scriptContent], { type: contentType }), scriptName);
252
+ // Add metadata as JSON
253
+ formData.append("metadata", new Blob([JSON.stringify(updatedMetadata)], {
254
+ type: "application/json",
255
+ }));
256
+ // Upload worker script with bindings
257
+ const uploadResponse = await api.put(`/accounts/${api.accountId}/workers/scripts/${workerName}`, formData);
258
+ // Check if the upload was successful
259
+ if (!uploadResponse.ok) {
260
+ const errorData = await uploadResponse
261
+ .json()
262
+ .catch(() => ({ errors: [{ message: uploadResponse.statusText }] }));
263
+ throw new Error(`Error uploading worker script: ${errorData.errors?.[0]?.message || uploadResponse.statusText}`);
264
+ }
265
+ // Set up routes if provided
266
+ if (props.routes && props.routes.length > 0 && api.zoneId) {
267
+ // First get existing routes
268
+ const routesResponse = await api.get(`/zones/${api.zoneId}/workers/routes`);
269
+ if (routesResponse.ok) {
270
+ const routesData = await routesResponse.json();
271
+ const existingRoutes = routesData.result || [];
272
+ // For each desired route
273
+ for (const pattern of props.routes) {
274
+ const existingRoute = existingRoutes.find((r) => r.pattern === pattern);
275
+ if (existingRoute) {
276
+ // Update if script name doesn't match
277
+ if (existingRoute.script !== workerName) {
278
+ const updateRouteResponse = await api.put(`/zones/${api.zoneId}/workers/routes/${existingRoute.id}`, {
279
+ pattern,
280
+ script: workerName,
281
+ });
282
+ if (!updateRouteResponse.ok) {
283
+ console.warn(`Failed to update route ${pattern}: ${updateRouteResponse.status} ${updateRouteResponse.statusText}`);
284
+ }
285
+ }
286
+ }
287
+ else {
288
+ // Create new route
289
+ const createRouteResponse = await api.post(`/zones/${api.zoneId}/workers/routes`, {
290
+ pattern,
291
+ script: workerName,
292
+ });
293
+ if (!createRouteResponse.ok) {
294
+ console.warn(`Failed to create route ${pattern}: ${createRouteResponse.status} ${createRouteResponse.statusText}`);
295
+ }
296
+ }
297
+ }
298
+ }
299
+ else {
300
+ console.warn("Could not fetch routes:", routesResponse.status, routesResponse.statusText);
301
+ }
302
+ }
303
+ // Handle worker URL if requested
304
+ let workerUrl;
305
+ if (props.url) {
306
+ try {
307
+ // Enable the workers.dev subdomain for this worker
308
+ await api.post(`/accounts/${api.accountId}/workers/scripts/${workerName}/subdomain`, { enabled: true, previews_enabled: true }, {
309
+ headers: { "Content-Type": "application/json" },
310
+ });
311
+ // Get the account's workers.dev subdomain
312
+ const subdomainResponse = await api.get(`/accounts/${api.accountId}/workers/subdomain`);
313
+ if (subdomainResponse.ok) {
314
+ const subdomainData = await subdomainResponse.json();
315
+ const subdomain = subdomainData.result?.subdomain;
316
+ if (subdomain) {
317
+ workerUrl = `${workerName}.${subdomain}.workers.dev`;
318
+ // Add a delay when the subdomain is first created.
319
+ // This is to prevent an issue where a negative cache-hit
320
+ // causes the subdomain to be unavailable for 30 seconds.
321
+ if (ctx.event === "create" || !ctx.output?.url) {
322
+ await new Promise((resolve) => setTimeout(resolve, 3000));
323
+ }
324
+ }
325
+ }
326
+ else {
327
+ console.warn("Could not fetch workers.dev subdomain:", subdomainResponse.status, subdomainResponse.statusText);
328
+ }
329
+ }
330
+ catch (error) {
331
+ console.warn("Failed to enable worker URL:", error);
332
+ }
333
+ }
334
+ else if (props.url === false && ctx.output?.url) {
335
+ // Explicitly disable URL if it was previously enabled
336
+ try {
337
+ await api.post(`/accounts/${api.accountId}/workers/scripts/${workerName}/subdomain`, JSON.stringify({ enabled: false }), {
338
+ headers: { "Content-Type": "application/json" },
339
+ });
340
+ }
341
+ catch (error) {
342
+ console.warn("Failed to disable worker URL:", error);
343
+ }
344
+ }
345
+ // Get current timestamp
346
+ const now = Date.now();
347
+ // Construct the output
348
+ const output = {
349
+ id: workerName,
350
+ name: workerName,
351
+ script: scriptContent,
352
+ format: props.format || "esm", // Include format in the output
353
+ routes: props.routes || [],
354
+ bindings: props.bindings || [],
355
+ production: props.production !== false,
356
+ createdAt: now,
357
+ updatedAt: now,
358
+ url: workerUrl,
359
+ };
360
+ return output;
361
+ }
362
+ }) {
363
+ }
364
+ //# 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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"}