alchemy 0.44.4 → 0.45.0

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 (258) hide show
  1. package/lib/alchemy.d.ts +3 -3
  2. package/lib/alchemy.d.ts.map +1 -1
  3. package/lib/alchemy.js +5 -2
  4. package/lib/alchemy.js.map +1 -1
  5. package/lib/build-date.d.ts +1 -1
  6. package/lib/build-date.js +1 -1
  7. package/lib/cloudflare/auth.js +1 -1
  8. package/lib/cloudflare/auth.js.map +1 -1
  9. package/lib/cloudflare/bundle/esbuild.d.ts +16 -0
  10. package/lib/cloudflare/bundle/esbuild.d.ts.map +1 -0
  11. package/lib/cloudflare/bundle/esbuild.js +159 -0
  12. package/lib/cloudflare/bundle/esbuild.js.map +1 -0
  13. package/lib/cloudflare/bundle/fs.d.ts +18 -0
  14. package/lib/cloudflare/bundle/fs.d.ts.map +1 -0
  15. package/lib/cloudflare/bundle/fs.js +75 -0
  16. package/lib/cloudflare/bundle/fs.js.map +1 -0
  17. package/lib/cloudflare/bundle/index.d.ts +3 -0
  18. package/lib/cloudflare/bundle/index.d.ts.map +1 -0
  19. package/lib/cloudflare/bundle/index.js +2 -0
  20. package/lib/cloudflare/bundle/index.js.map +1 -0
  21. package/lib/cloudflare/bundle/inline.d.ts +12 -0
  22. package/lib/cloudflare/bundle/inline.d.ts.map +1 -0
  23. package/lib/cloudflare/bundle/inline.js +32 -0
  24. package/lib/cloudflare/bundle/inline.js.map +1 -0
  25. package/lib/cloudflare/bundle/normalize.d.ts +21 -0
  26. package/lib/cloudflare/bundle/normalize.d.ts.map +1 -0
  27. package/lib/cloudflare/bundle/normalize.js +49 -0
  28. package/lib/cloudflare/bundle/normalize.js.map +1 -0
  29. package/lib/cloudflare/bundle/{nodejs-import-warning-plugin.d.ts → plugin-compat-warning.d.ts} +2 -2
  30. package/lib/cloudflare/bundle/plugin-compat-warning.d.ts.map +1 -0
  31. package/lib/cloudflare/bundle/{nodejs-import-warning-plugin.js → plugin-compat-warning.js} +3 -3
  32. package/lib/cloudflare/bundle/plugin-compat-warning.js.map +1 -0
  33. package/lib/cloudflare/bundle/plugin-hot-reload.d.ts +8 -0
  34. package/lib/cloudflare/bundle/plugin-hot-reload.d.ts.map +1 -0
  35. package/lib/cloudflare/bundle/plugin-hot-reload.js +19 -0
  36. package/lib/cloudflare/bundle/plugin-hot-reload.js.map +1 -0
  37. package/lib/cloudflare/bundle/{nodejs-compat.d.ts → plugin-hybrid-node-compat.d.ts} +2 -2
  38. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.d.ts.map +1 -0
  39. package/lib/cloudflare/bundle/{nodejs-compat.js → plugin-hybrid-node-compat.js} +10 -10
  40. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js.map +1 -0
  41. package/lib/cloudflare/bundle/plugin-wasm.d.ts +3 -0
  42. package/lib/cloudflare/bundle/plugin-wasm.d.ts.map +1 -0
  43. package/lib/cloudflare/bundle/plugin-wasm.js +55 -0
  44. package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -0
  45. package/lib/cloudflare/bundle/shared.d.ts +30 -0
  46. package/lib/cloudflare/bundle/shared.d.ts.map +1 -0
  47. package/lib/cloudflare/bundle/shared.js +34 -0
  48. package/lib/cloudflare/bundle/shared.js.map +1 -0
  49. package/lib/cloudflare/bundle/{nodejs-compat-mode.d.ts → validate-node-compat.d.ts} +8 -4
  50. package/lib/cloudflare/bundle/validate-node-compat.d.ts.map +1 -0
  51. package/lib/cloudflare/bundle/{nodejs-compat-mode.js → validate-node-compat.js} +27 -7
  52. package/lib/cloudflare/bundle/validate-node-compat.js.map +1 -0
  53. package/lib/cloudflare/container.d.ts +231 -0
  54. package/lib/cloudflare/container.d.ts.map +1 -1
  55. package/lib/cloudflare/container.js +7 -0
  56. package/lib/cloudflare/container.js.map +1 -1
  57. package/lib/cloudflare/d1-migrations.d.ts +1 -0
  58. package/lib/cloudflare/d1-migrations.d.ts.map +1 -1
  59. package/lib/cloudflare/d1-migrations.js +18 -6
  60. package/lib/cloudflare/d1-migrations.js.map +1 -1
  61. package/lib/cloudflare/d1-state-store.d.ts +10 -0
  62. package/lib/cloudflare/d1-state-store.d.ts.map +1 -0
  63. package/lib/cloudflare/d1-state-store.js +70 -0
  64. package/lib/cloudflare/d1-state-store.js.map +1 -0
  65. package/lib/cloudflare/do-state-store/internal.js +1 -1
  66. package/lib/cloudflare/do-state-store/internal.js.map +1 -1
  67. package/lib/cloudflare/do-state-store/store.js +1 -1
  68. package/lib/cloudflare/do-state-store/store.js.map +1 -1
  69. package/lib/cloudflare/index.d.ts +3 -2
  70. package/lib/cloudflare/index.d.ts.map +1 -1
  71. package/lib/cloudflare/index.js +3 -2
  72. package/lib/cloudflare/index.js.map +1 -1
  73. package/lib/cloudflare/local-dev-cloudflare-shim.d.ts.map +1 -0
  74. package/lib/cloudflare/{bundle/local-dev-cloudflare-shim.js → local-dev-cloudflare-shim.js} +1 -1
  75. package/lib/cloudflare/local-dev-cloudflare-shim.js.map +1 -0
  76. package/lib/cloudflare/miniflare/http-server.d.ts.map +1 -0
  77. package/lib/cloudflare/miniflare/http-server.js.map +1 -0
  78. package/lib/cloudflare/{worker → miniflare}/miniflare-worker-options.d.ts +4 -3
  79. package/lib/cloudflare/miniflare/miniflare-worker-options.d.ts.map +1 -0
  80. package/lib/cloudflare/{worker → miniflare}/miniflare-worker-options.js +6 -3
  81. package/lib/cloudflare/miniflare/miniflare-worker-options.js.map +1 -0
  82. package/lib/cloudflare/miniflare/miniflare.d.ts.map +1 -0
  83. package/lib/cloudflare/{worker → miniflare}/miniflare.js +1 -1
  84. package/lib/cloudflare/miniflare/miniflare.js.map +1 -0
  85. package/lib/cloudflare/miniflare/mixed-mode.d.ts.map +1 -0
  86. package/lib/cloudflare/{worker → miniflare}/mixed-mode.js +1 -2
  87. package/lib/cloudflare/miniflare/mixed-mode.js.map +1 -0
  88. package/lib/cloudflare/user.js +1 -1
  89. package/lib/cloudflare/user.js.map +1 -1
  90. package/lib/cloudflare/worker/shared.d.ts +4 -0
  91. package/lib/cloudflare/worker/shared.d.ts.map +1 -0
  92. package/lib/cloudflare/worker/{get-worker-template.js → shared.js} +10 -1
  93. package/lib/cloudflare/worker/shared.js.map +1 -0
  94. package/lib/cloudflare/worker/tail.d.ts +18 -0
  95. package/lib/cloudflare/worker/tail.d.ts.map +1 -0
  96. package/lib/cloudflare/worker/tail.js +140 -0
  97. package/lib/cloudflare/worker/tail.js.map +1 -0
  98. package/lib/cloudflare/worker-metadata.d.ts +6 -2
  99. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  100. package/lib/cloudflare/worker-metadata.js +7 -23
  101. package/lib/cloudflare/worker-metadata.js.map +1 -1
  102. package/lib/cloudflare/worker-stub.d.ts.map +1 -1
  103. package/lib/cloudflare/worker-stub.js +8 -7
  104. package/lib/cloudflare/worker-stub.js.map +1 -1
  105. package/lib/cloudflare/worker-subdomain.d.ts +31 -0
  106. package/lib/cloudflare/worker-subdomain.d.ts.map +1 -0
  107. package/lib/cloudflare/worker-subdomain.js +55 -0
  108. package/lib/cloudflare/worker-subdomain.js.map +1 -0
  109. package/lib/cloudflare/worker.d.ts +30 -36
  110. package/lib/cloudflare/worker.d.ts.map +1 -1
  111. package/lib/cloudflare/worker.js +641 -569
  112. package/lib/cloudflare/worker.js.map +1 -1
  113. package/lib/fs/file-system-state-store.js +1 -1
  114. package/lib/fs/file-system-state-store.js.map +1 -1
  115. package/lib/scope.d.ts +2 -2
  116. package/lib/scope.d.ts.map +1 -1
  117. package/lib/scope.js +23 -8
  118. package/lib/scope.js.map +1 -1
  119. package/lib/serde.d.ts +1 -1
  120. package/lib/serde.d.ts.map +1 -1
  121. package/lib/serde.js +4 -4
  122. package/lib/serde.js.map +1 -1
  123. package/lib/sqlite/base-sqlite-state-store.d.ts +31 -0
  124. package/lib/sqlite/base-sqlite-state-store.d.ts.map +1 -0
  125. package/lib/sqlite/base-sqlite-state-store.js +124 -0
  126. package/lib/sqlite/base-sqlite-state-store.js.map +1 -0
  127. package/lib/sqlite/index.d.ts +2 -0
  128. package/lib/sqlite/index.d.ts.map +1 -0
  129. package/lib/sqlite/index.js +2 -0
  130. package/lib/sqlite/index.js.map +1 -0
  131. package/lib/sqlite/schema.d.ts +198 -0
  132. package/lib/sqlite/schema.d.ts.map +1 -0
  133. package/lib/sqlite/schema.js +23 -0
  134. package/lib/sqlite/schema.js.map +1 -0
  135. package/lib/sqlite/sqlite-state-store.d.ts +60 -0
  136. package/lib/sqlite/sqlite-state-store.d.ts.map +1 -0
  137. package/lib/sqlite/sqlite-state-store.js +83 -0
  138. package/lib/sqlite/sqlite-state-store.js.map +1 -0
  139. package/lib/test/bun.d.ts.map +1 -1
  140. package/lib/test/bun.js +0 -6
  141. package/lib/test/bun.js.map +1 -1
  142. package/lib/test/vitest.d.ts.map +1 -1
  143. package/lib/test/vitest.js +19 -5
  144. package/lib/test/vitest.js.map +1 -1
  145. package/lib/util/memoize.d.ts +1 -1
  146. package/lib/util/memoize.d.ts.map +1 -1
  147. package/lib/util/memoize.js +11 -1
  148. package/lib/util/memoize.js.map +1 -1
  149. package/package.json +12 -3
  150. package/src/alchemy.ts +8 -6
  151. package/src/build-date.ts +1 -1
  152. package/src/cloudflare/auth.ts +1 -1
  153. package/src/cloudflare/bundle/esbuild.ts +194 -0
  154. package/src/cloudflare/bundle/fs.ts +98 -0
  155. package/src/cloudflare/bundle/index.ts +6 -0
  156. package/src/cloudflare/bundle/inline.ts +42 -0
  157. package/src/cloudflare/bundle/normalize.ts +76 -0
  158. package/src/cloudflare/bundle/{nodejs-import-warning-plugin.ts → plugin-compat-warning.ts} +4 -2
  159. package/src/cloudflare/bundle/plugin-hot-reload.ts +27 -0
  160. package/src/cloudflare/bundle/{nodejs-compat.ts → plugin-hybrid-node-compat.ts} +10 -10
  161. package/src/cloudflare/bundle/plugin-wasm.ts +62 -0
  162. package/src/cloudflare/bundle/shared.ts +73 -0
  163. package/src/cloudflare/bundle/{nodejs-compat-mode.ts → validate-node-compat.ts} +41 -16
  164. package/src/cloudflare/container.ts +296 -0
  165. package/src/cloudflare/d1-migrations.ts +29 -16
  166. package/src/cloudflare/d1-state-store.ts +105 -0
  167. package/src/cloudflare/do-state-store/internal.ts +1 -1
  168. package/src/cloudflare/do-state-store/store.ts +1 -1
  169. package/src/cloudflare/index.ts +3 -2
  170. package/src/cloudflare/{bundle/local-dev-cloudflare-shim.ts → local-dev-cloudflare-shim.ts} +1 -1
  171. package/src/cloudflare/{worker → miniflare}/miniflare-worker-options.ts +14 -6
  172. package/src/cloudflare/{worker → miniflare}/miniflare.ts +1 -1
  173. package/src/cloudflare/{worker → miniflare}/mixed-mode.ts +1 -2
  174. package/src/cloudflare/user.ts +1 -1
  175. package/src/cloudflare/worker/{subdomain.ts → shared.ts} +14 -0
  176. package/src/cloudflare/worker/tail.ts +287 -0
  177. package/src/cloudflare/worker-metadata.ts +18 -26
  178. package/src/cloudflare/worker-stub.ts +9 -7
  179. package/src/cloudflare/worker-subdomain.ts +123 -0
  180. package/src/cloudflare/worker.ts +863 -760
  181. package/src/fs/file-system-state-store.ts +1 -1
  182. package/src/scope.ts +30 -11
  183. package/src/serde.ts +4 -4
  184. package/src/sqlite/base-sqlite-state-store.ts +199 -0
  185. package/src/sqlite/index.ts +1 -0
  186. package/src/sqlite/schema.ts +37 -0
  187. package/src/sqlite/sqlite-state-store.ts +174 -0
  188. package/src/test/bun.ts +0 -8
  189. package/src/test/vitest.ts +19 -8
  190. package/src/util/memoize.ts +13 -1
  191. package/templates/astro/types/env.d.ts +1 -1
  192. package/templates/nuxt/types/env.d.ts +1 -1
  193. package/templates/react-router/types/env.d.ts +1 -1
  194. package/templates/rwsdk/types/env.d.ts +1 -1
  195. package/templates/sveltekit/types/env.d.ts +1 -1
  196. package/templates/tanstack-start/types/env.d.ts +1 -1
  197. package/templates/typescript/types/env.d.ts +1 -1
  198. package/templates/vite/types/env.d.ts +1 -1
  199. package/lib/cloudflare/bundle/alias-plugin.d.ts +0 -6
  200. package/lib/cloudflare/bundle/alias-plugin.d.ts.map +0 -1
  201. package/lib/cloudflare/bundle/alias-plugin.js +0 -36
  202. package/lib/cloudflare/bundle/alias-plugin.js.map +0 -1
  203. package/lib/cloudflare/bundle/build-failures.d.ts +0 -12
  204. package/lib/cloudflare/bundle/build-failures.d.ts.map +0 -1
  205. package/lib/cloudflare/bundle/build-failures.js +0 -45
  206. package/lib/cloudflare/bundle/build-failures.js.map +0 -1
  207. package/lib/cloudflare/bundle/bundle-worker-dev.d.ts +0 -26
  208. package/lib/cloudflare/bundle/bundle-worker-dev.d.ts.map +0 -1
  209. package/lib/cloudflare/bundle/bundle-worker-dev.js +0 -88
  210. package/lib/cloudflare/bundle/bundle-worker-dev.js.map +0 -1
  211. package/lib/cloudflare/bundle/bundle-worker.d.ts +0 -13
  212. package/lib/cloudflare/bundle/bundle-worker.d.ts.map +0 -1
  213. package/lib/cloudflare/bundle/bundle-worker.js +0 -98
  214. package/lib/cloudflare/bundle/bundle-worker.js.map +0 -1
  215. package/lib/cloudflare/bundle/external.d.ts +0 -4
  216. package/lib/cloudflare/bundle/external.d.ts.map +0 -1
  217. package/lib/cloudflare/bundle/external.js +0 -40
  218. package/lib/cloudflare/bundle/external.js.map +0 -1
  219. package/lib/cloudflare/bundle/local-dev-cloudflare-shim.d.ts.map +0 -1
  220. package/lib/cloudflare/bundle/local-dev-cloudflare-shim.js.map +0 -1
  221. package/lib/cloudflare/bundle/nodejs-compat-mode.d.ts.map +0 -1
  222. package/lib/cloudflare/bundle/nodejs-compat-mode.js.map +0 -1
  223. package/lib/cloudflare/bundle/nodejs-compat.d.ts.map +0 -1
  224. package/lib/cloudflare/bundle/nodejs-compat.js.map +0 -1
  225. package/lib/cloudflare/bundle/nodejs-import-warning-plugin.d.ts.map +0 -1
  226. package/lib/cloudflare/bundle/nodejs-import-warning-plugin.js.map +0 -1
  227. package/lib/cloudflare/bundle/wasm-plugin.d.ts +0 -3
  228. package/lib/cloudflare/bundle/wasm-plugin.d.ts.map +0 -1
  229. package/lib/cloudflare/bundle/wasm-plugin.js +0 -53
  230. package/lib/cloudflare/bundle/wasm-plugin.js.map +0 -1
  231. package/lib/cloudflare/worker/get-worker-template.d.ts +0 -2
  232. package/lib/cloudflare/worker/get-worker-template.d.ts.map +0 -1
  233. package/lib/cloudflare/worker/get-worker-template.js.map +0 -1
  234. package/lib/cloudflare/worker/http-server.d.ts.map +0 -1
  235. package/lib/cloudflare/worker/http-server.js.map +0 -1
  236. package/lib/cloudflare/worker/miniflare-worker-options.d.ts.map +0 -1
  237. package/lib/cloudflare/worker/miniflare-worker-options.js.map +0 -1
  238. package/lib/cloudflare/worker/miniflare.d.ts.map +0 -1
  239. package/lib/cloudflare/worker/miniflare.js.map +0 -1
  240. package/lib/cloudflare/worker/mixed-mode.d.ts.map +0 -1
  241. package/lib/cloudflare/worker/mixed-mode.js.map +0 -1
  242. package/lib/cloudflare/worker/subdomain.d.ts +0 -3
  243. package/lib/cloudflare/worker/subdomain.d.ts.map +0 -1
  244. package/lib/cloudflare/worker/subdomain.js +0 -10
  245. package/lib/cloudflare/worker/subdomain.js.map +0 -1
  246. package/src/cloudflare/bundle/alias-plugin.ts +0 -48
  247. package/src/cloudflare/bundle/build-failures.ts +0 -55
  248. package/src/cloudflare/bundle/bundle-worker-dev.ts +0 -129
  249. package/src/cloudflare/bundle/bundle-worker.ts +0 -150
  250. package/src/cloudflare/bundle/external.ts +0 -41
  251. package/src/cloudflare/bundle/wasm-plugin.ts +0 -57
  252. package/src/cloudflare/worker/get-worker-template.ts +0 -14
  253. /package/lib/cloudflare/{bundle/local-dev-cloudflare-shim.d.ts → local-dev-cloudflare-shim.d.ts} +0 -0
  254. /package/lib/cloudflare/{worker → miniflare}/http-server.d.ts +0 -0
  255. /package/lib/cloudflare/{worker → miniflare}/http-server.js +0 -0
  256. /package/lib/cloudflare/{worker → miniflare}/miniflare.d.ts +0 -0
  257. /package/lib/cloudflare/{worker → miniflare}/mixed-mode.d.ts +0 -0
  258. /package/src/cloudflare/{worker → miniflare}/http-server.ts +0 -0
@@ -0,0 +1,123 @@
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import {
4
+ createCloudflareApi,
5
+ type CloudflareApi,
6
+ type CloudflareApiOptions,
7
+ } from "./api.ts";
8
+ import type { CloudflareApiResponse } from "./types.ts";
9
+ import { getAccountSubdomain } from "./worker/shared.ts";
10
+
11
+ interface WorkerSubdomainProps extends CloudflareApiOptions {
12
+ /**
13
+ * The name of the script to create a subdomain for.
14
+ */
15
+ scriptName: string;
16
+ /**
17
+ * The version ID of the worker, if versioning is enabled and the worker is a preview.
18
+ *
19
+ * @default undefined
20
+ */
21
+ previewVersionId?: string;
22
+ /**
23
+ * Prevents the subdomain from being deleted when the worker is deleted.
24
+ *
25
+ * @default false
26
+ */
27
+ retain?: boolean;
28
+ }
29
+
30
+ export interface WorkerSubdomain
31
+ extends Resource<"cloudflare::WorkerSubdomain"> {
32
+ /**
33
+ * The `workers.dev` URL for the worker or preview version.
34
+ */
35
+ url: string;
36
+ }
37
+
38
+ export const WorkerSubdomain = Resource(
39
+ "cloudflare::WorkerSubdomain",
40
+ async function (
41
+ this: Context<WorkerSubdomain>,
42
+ id: string,
43
+ props: WorkerSubdomainProps,
44
+ ) {
45
+ const api = await createCloudflareApi(props);
46
+ if (this.phase === "delete") {
47
+ if (!props.retain) {
48
+ await disableWorkerSubdomain(api, props.scriptName);
49
+ }
50
+ return this.destroy();
51
+ }
52
+ await wrapFetch<SubdomainResponse>(
53
+ `enable subdomain for "${props.scriptName}"`,
54
+ api.post(
55
+ `/accounts/${api.accountId}/workers/scripts/${props.scriptName}/subdomain`,
56
+ { enabled: true, previews_enabled: true },
57
+ {
58
+ headers: { "Content-Type": "application/json" },
59
+ },
60
+ ),
61
+ );
62
+ const subdomain = await getAccountSubdomain(api);
63
+ const base = `${subdomain}.workers.dev`;
64
+ let url: string;
65
+ if (props.previewVersionId) {
66
+ url = `https://${props.previewVersionId.substring(0, 8)}-${props.scriptName}.${base}`;
67
+ } else {
68
+ url = `https://${props.scriptName}.${base}`;
69
+ }
70
+ return this(id, {
71
+ url,
72
+ });
73
+ },
74
+ );
75
+
76
+ export async function disableWorkerSubdomain(
77
+ api: CloudflareApi,
78
+ scriptName: string,
79
+ ) {
80
+ await wrapFetch<SubdomainResponse>(
81
+ `disable subdomain for "${scriptName}"`,
82
+ api.post(
83
+ `/accounts/${api.accountId}/workers/scripts/${scriptName}/subdomain`,
84
+ { enabled: false },
85
+ ),
86
+ ).catch((error) => {
87
+ if (error.status === 404) {
88
+ return;
89
+ }
90
+ throw error;
91
+ });
92
+ }
93
+
94
+ interface SubdomainResponse {
95
+ enabled: boolean;
96
+ previews_enabled: boolean;
97
+ }
98
+
99
+ async function wrapFetch<T>(
100
+ label: string,
101
+ promise: Promise<Response>,
102
+ ): Promise<T> {
103
+ const response = await promise.catch(() => {
104
+ throw new Error(`Failed to ${label}: Failed to fetch`);
105
+ });
106
+ const json = (await response.json().catch(() => {
107
+ throw new Error(
108
+ `Failed to ${label} (${response.status}): The API returned an invalid response`,
109
+ );
110
+ })) as CloudflareApiResponse<T>;
111
+ if (json.success) {
112
+ return json.result;
113
+ } else {
114
+ const error = new Error(
115
+ `Failed to ${label} (${response.status}): ${json.errors.map((e) => `${e.code}: ${e.message}`).join(", ")}`,
116
+ );
117
+ Error.captureStackTrace(error, wrapFetch);
118
+ Object.assign(error, {
119
+ status: response.status,
120
+ });
121
+ throw error;
122
+ }
123
+ }