alchemy 0.55.3 → 0.56.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 (74) hide show
  1. package/bin/alchemy.js +46 -246
  2. package/lib/alchemy.d.ts.map +1 -1
  3. package/lib/alchemy.js +7 -0
  4. package/lib/alchemy.js.map +1 -1
  5. package/lib/cloudflare/bundle/plugin-hot-reload.d.ts +1 -3
  6. package/lib/cloudflare/bundle/plugin-hot-reload.d.ts.map +1 -1
  7. package/lib/cloudflare/bundle/plugin-hot-reload.js +4 -1
  8. package/lib/cloudflare/bundle/plugin-hot-reload.js.map +1 -1
  9. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  10. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  11. package/lib/cloudflare/compatibility-presets.d.ts +1 -1
  12. package/lib/cloudflare/compatibility-presets.js +1 -1
  13. package/lib/cloudflare/compatibility-presets.js.map +1 -1
  14. package/lib/cloudflare/local-dev-cloudflare-shim.d.ts +3 -1
  15. package/lib/cloudflare/local-dev-cloudflare-shim.d.ts.map +1 -1
  16. package/lib/cloudflare/local-dev-cloudflare-shim.js +10 -5
  17. package/lib/cloudflare/local-dev-cloudflare-shim.js.map +1 -1
  18. package/lib/cloudflare/miniflare/build-worker-options.d.ts +22 -0
  19. package/lib/cloudflare/miniflare/build-worker-options.d.ts.map +1 -0
  20. package/lib/cloudflare/miniflare/build-worker-options.js +394 -0
  21. package/lib/cloudflare/miniflare/build-worker-options.js.map +1 -0
  22. package/lib/cloudflare/miniflare/miniflare-controller.d.ts +23 -0
  23. package/lib/cloudflare/miniflare/miniflare-controller.d.ts.map +1 -0
  24. package/lib/cloudflare/miniflare/miniflare-controller.js +110 -0
  25. package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -0
  26. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  27. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +5 -15
  28. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  29. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts +1 -5
  30. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
  31. package/lib/cloudflare/miniflare/remote-binding-proxy.js +17 -22
  32. package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
  33. package/lib/cloudflare/website.js +4 -4
  34. package/lib/cloudflare/website.js.map +1 -1
  35. package/lib/cloudflare/worker-bundle.d.ts +2 -0
  36. package/lib/cloudflare/worker-bundle.d.ts.map +1 -1
  37. package/lib/cloudflare/worker-bundle.js +19 -3
  38. package/lib/cloudflare/worker-bundle.js.map +1 -1
  39. package/lib/cloudflare/worker.d.ts.map +1 -1
  40. package/lib/cloudflare/worker.js +76 -97
  41. package/lib/cloudflare/worker.js.map +1 -1
  42. package/lib/context.d.ts +11 -0
  43. package/lib/context.d.ts.map +1 -1
  44. package/lib/context.js +8 -0
  45. package/lib/context.js.map +1 -1
  46. package/lib/scope.d.ts +12 -0
  47. package/lib/scope.d.ts.map +1 -1
  48. package/lib/scope.js +25 -0
  49. package/lib/scope.js.map +1 -1
  50. package/package.json +3 -2
  51. package/src/alchemy.ts +7 -0
  52. package/src/cloudflare/bundle/plugin-hot-reload.ts +4 -3
  53. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  54. package/src/cloudflare/compatibility-presets.ts +1 -1
  55. package/src/cloudflare/local-dev-cloudflare-shim.ts +11 -5
  56. package/src/cloudflare/miniflare/build-worker-options.ts +454 -0
  57. package/src/cloudflare/miniflare/miniflare-controller.ts +128 -0
  58. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +6 -15
  59. package/src/cloudflare/miniflare/remote-binding-proxy.ts +18 -23
  60. package/src/cloudflare/website.ts +4 -4
  61. package/src/cloudflare/worker-bundle.ts +28 -3
  62. package/src/cloudflare/worker.ts +90 -125
  63. package/src/context.ts +19 -0
  64. package/src/scope.ts +27 -0
  65. package/lib/cloudflare/miniflare/miniflare-worker-options.d.ts +0 -14
  66. package/lib/cloudflare/miniflare/miniflare-worker-options.d.ts.map +0 -1
  67. package/lib/cloudflare/miniflare/miniflare-worker-options.js +0 -468
  68. package/lib/cloudflare/miniflare/miniflare-worker-options.js.map +0 -1
  69. package/lib/cloudflare/miniflare/miniflare.d.ts +0 -40
  70. package/lib/cloudflare/miniflare/miniflare.d.ts.map +0 -1
  71. package/lib/cloudflare/miniflare/miniflare.js +0 -142
  72. package/lib/cloudflare/miniflare/miniflare.js.map +0 -1
  73. package/src/cloudflare/miniflare/miniflare-worker-options.ts +0 -599
  74. package/src/cloudflare/miniflare/miniflare.ts +0 -183
@@ -2,7 +2,9 @@ import { dedent } from "../util/dedent.js";
2
2
  /**
3
3
  * TanStackStart server functions and middleware run in Node.js intead of Miniflare when using `vite dev`.
4
4
  *
5
- * This plugin polyfills the cloudflare:workers module during the dev server phase.
5
+ * This plugin polyfills the cloudflare:workers module & includes `process.env` during the dev server phase.
6
+ *
7
+ * @see https://developers.cloudflare.com/workers/framework-guides/web-apps/tanstack/#using-cloudflare-bindings
6
8
  */
7
9
  export function cloudflareWorkersDevEnvironmentShim() {
8
10
  return {
@@ -14,12 +16,15 @@ export function cloudflareWorkersDevEnvironmentShim() {
14
16
  return id; // tell Vite we handled it
15
17
  },
16
18
  load(id) {
17
- if (id === "cloudflare:workers")
19
+ if (id === "cloudflare:workers") {
20
+ const processEnv = JSON.stringify(process.env);
21
+ // @see https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy
18
22
  return dedent `
19
23
  import { getPlatformProxy } from "wrangler";
20
- // TODO: should we export default cloudflare; ??
21
- const cloudflare = await getPlatformProxy();
22
- export const env = cloudflare.env;`;
24
+ const cloudflare = await getPlatformProxy({ experimental: { remoteBindings: true } });
25
+ export const env = Object.assign(${processEnv}, cloudflare.env);
26
+ `.trim();
27
+ }
23
28
  },
24
29
  };
25
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local-dev-cloudflare-shim.js","sourceRoot":"","sources":["../../src/cloudflare/local-dev-cloudflare-shim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO;QACL,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,OAAO,EAAE,WAAW;QAC3B,OAAO,EAAE,KAAK;QACd,SAAS,CAAC,EAAU;YAClB,IAAI,EAAE,KAAK,oBAAoB;gBAAE,OAAO,EAAE,CAAC,CAAC,0BAA0B;QACxE,CAAC;QACD,IAAI,CAAC,EAAU;YACb,IAAI,EAAE,KAAK,oBAAoB;gBAC7B,OAAO,MAAM,CAAA;;;;6CAIwB,CAAC;QAC1C,CAAC;KACO,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"local-dev-cloudflare-shim.js","sourceRoot":"","sources":["../../src/cloudflare/local-dev-cloudflare-shim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO;QACL,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,OAAO,EAAE,WAAW;QAC3B,OAAO,EAAE,KAAK;QACd,SAAS,CAAC,EAAU;YAClB,IAAI,EAAE,KAAK,oBAAoB;gBAAE,OAAO,EAAE,CAAC,CAAC,0BAA0B;QACxE,CAAC;QACD,IAAI,CAAC,EAAU;YACb,IAAI,EAAE,KAAK,oBAAoB,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAE/C,gFAAgF;gBAChF,OAAO,MAAM,CAAA;;;6CAGwB,UAAU;SAC9C,CAAC,IAAI,EAAE,CAAC;YACX,CAAC;QACH,CAAC;KACO,CAAC;AACb,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as miniflare from "miniflare";
2
+ import type { HTTPServer } from "../../util/http.ts";
3
+ import { type Bindings } from "../bindings.ts";
4
+ import { type EventSource } from "../event-source.ts";
5
+ import type { WorkerBundleSource } from "../worker-bundle.ts";
6
+ import type { AssetsConfig } from "../worker.ts";
7
+ export interface MiniflareWorkerInput {
8
+ id: string;
9
+ name: string;
10
+ compatibilityDate: string | undefined;
11
+ compatibilityFlags: string[] | undefined;
12
+ bindings: Bindings | undefined;
13
+ eventSources: EventSource[] | undefined;
14
+ assets: AssetsConfig | undefined;
15
+ bundle: WorkerBundleSource;
16
+ port: number | undefined;
17
+ }
18
+ export declare const buildWorkerOptions: (input: MiniflareWorkerInput) => Promise<{
19
+ watch: (signal: AbortSignal) => AsyncGenerator<miniflare.WorkerOptions>;
20
+ remoteProxy: HTTPServer | undefined;
21
+ }>;
22
+ //# sourceMappingURL=build-worker-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-worker-options.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/build-worker-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAGL,KAAK,QAAQ,EAGd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAiCD,eAAO,MAAM,kBAAkB,GAC7B,OAAO,oBAAoB,KAC1B,OAAO,CAAC;IACT,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxE,WAAW,EAAE,UAAU,GAAG,SAAS,CAAC;CACrC,CAiWA,CAAC"}
@@ -0,0 +1,394 @@
1
+ import * as miniflare from "miniflare";
2
+ import { assertNever } from "../../util/assert-never.js";
3
+ import { Self, } from "../bindings.js";
4
+ import { isQueueEventSource } from "../event-source.js";
5
+ import { createRemoteProxyWorker } from "./remote-binding-proxy.js";
6
+ export const buildWorkerOptions = async (input) => {
7
+ const remoteBindings = [];
8
+ const options = {
9
+ name: input.name,
10
+ compatibilityDate: input.compatibilityDate,
11
+ compatibilityFlags: input.compatibilityFlags,
12
+ // TODO: Setting `proxy: true` here causes the following error when connecting via a websocket:
13
+ // workerd/io/worker.c++:2164: info: uncaught exception; source = Uncaught (in promise); stack = TypeError: Invalid URL string.
14
+ unsafeDirectSockets: [{ proxy: false }],
15
+ containerEngine: {
16
+ localDocker: {
17
+ socketPath: process.platform === "win32"
18
+ ? "//./pipe/docker_engine"
19
+ : "unix:///var/run/docker.sock",
20
+ },
21
+ },
22
+ };
23
+ for (const [key, binding] of Object.entries(input.bindings ?? {})) {
24
+ if (typeof binding === "string") {
25
+ (options.bindings ??= {})[key] = binding;
26
+ continue;
27
+ }
28
+ if (binding === Self) {
29
+ (options.serviceBindings ??= {})[key] = miniflare.kCurrentWorker;
30
+ continue;
31
+ }
32
+ switch (binding.type) {
33
+ case "ai":
34
+ case "ai_gateway": {
35
+ remoteBindings.push({
36
+ type: "ai",
37
+ name: key,
38
+ raw: true,
39
+ });
40
+ break;
41
+ }
42
+ case "analytics_engine": {
43
+ (options.analyticsEngineDatasets ??= {})[key] = {
44
+ dataset: binding.dataset,
45
+ };
46
+ break;
47
+ }
48
+ case "assets": {
49
+ options.assets = {
50
+ binding: key,
51
+ directory: binding.path,
52
+ assetConfig: {
53
+ html_handling: input.assets?.html_handling,
54
+ not_found_handling: input.assets?.not_found_handling,
55
+ },
56
+ };
57
+ break;
58
+ }
59
+ case "browser": {
60
+ remoteBindings.push({
61
+ type: "browser",
62
+ name: key,
63
+ raw: true,
64
+ });
65
+ break;
66
+ }
67
+ case "container": {
68
+ (options.durableObjects ??= {})[key] = {
69
+ className: binding.className,
70
+ scriptName: binding.scriptName,
71
+ useSQLite: binding.sqlite,
72
+ container: {
73
+ imageName: binding.image.imageRef,
74
+ },
75
+ };
76
+ break;
77
+ }
78
+ case "d1": {
79
+ if (isRemoteBinding(binding)) {
80
+ remoteBindings.push({
81
+ type: "d1",
82
+ name: key,
83
+ id: binding.id,
84
+ raw: true,
85
+ });
86
+ }
87
+ else {
88
+ (options.d1Databases ??= {})[key] = binding.id;
89
+ }
90
+ break;
91
+ }
92
+ case "dispatch_namespace": {
93
+ remoteBindings.push({
94
+ type: "dispatch_namespace",
95
+ name: key,
96
+ namespace: binding.namespace,
97
+ raw: true,
98
+ });
99
+ break;
100
+ }
101
+ case "durable_object_namespace": {
102
+ (options.durableObjects ??= {})[key] = {
103
+ className: binding.className,
104
+ scriptName: binding.scriptName,
105
+ useSQLite: binding.sqlite,
106
+ };
107
+ break;
108
+ }
109
+ case "hyperdrive": {
110
+ throw new Error("Hyperdrive bindings are not supported in local mode");
111
+ }
112
+ case "images": {
113
+ if (isRemoteBinding(binding)) {
114
+ remoteBindings.push({
115
+ type: "images",
116
+ name: key,
117
+ raw: true,
118
+ });
119
+ }
120
+ else {
121
+ options.images = {
122
+ binding: key,
123
+ };
124
+ }
125
+ break;
126
+ }
127
+ case "kv_namespace": {
128
+ const namespaceId = "namespaceId" in binding ? binding.namespaceId : binding.id;
129
+ if (isRemoteBinding(binding)) {
130
+ remoteBindings.push({
131
+ type: "kv_namespace",
132
+ name: key,
133
+ namespace_id: namespaceId,
134
+ raw: true,
135
+ });
136
+ }
137
+ else {
138
+ (options.kvNamespaces ??= {})[key] = namespaceId;
139
+ }
140
+ break;
141
+ }
142
+ case "json": {
143
+ (options.bindings ??= {})[key] = binding.json;
144
+ break;
145
+ }
146
+ case "queue": {
147
+ if (isRemoteBinding(binding)) {
148
+ remoteBindings.push({
149
+ type: "queue",
150
+ name: key,
151
+ queue_name: binding.name,
152
+ raw: true,
153
+ });
154
+ }
155
+ else {
156
+ (options.queueProducers ??= {})[key] = {
157
+ queueName: binding.name,
158
+ deliveryDelay: binding.settings?.deliveryDelay,
159
+ };
160
+ }
161
+ break;
162
+ }
163
+ case "pipeline": {
164
+ (options.pipelines ??= {})[key] = binding.id;
165
+ break;
166
+ }
167
+ case "ratelimit": {
168
+ (options.ratelimits ??= {})[key] = {
169
+ simple: binding.simple,
170
+ };
171
+ break;
172
+ }
173
+ case "secret": {
174
+ (options.bindings ??= {})[key] = binding.unencrypted;
175
+ break;
176
+ }
177
+ case "secret_key": {
178
+ throw new Error("Secret keys are not supported in local mode");
179
+ }
180
+ case "secrets_store_secret": {
181
+ (options.secretsStoreSecrets ??= {})[key] = {
182
+ store_id: binding.storeId,
183
+ secret_name: binding.name,
184
+ };
185
+ break;
186
+ }
187
+ case "r2_bucket": {
188
+ if (isRemoteBinding(binding)) {
189
+ remoteBindings.push({
190
+ type: "r2_bucket",
191
+ name: key,
192
+ bucket_name: binding.name,
193
+ raw: true,
194
+ });
195
+ }
196
+ else {
197
+ (options.r2Buckets ??= {})[key] = binding.name;
198
+ }
199
+ break;
200
+ }
201
+ case "service": {
202
+ const service = "service" in binding ? binding.service : binding.name;
203
+ const normalized = {
204
+ type: "service",
205
+ name: key,
206
+ service,
207
+ environment: "environment" in binding ? binding.environment : undefined,
208
+ };
209
+ if (isRemoteBinding(binding)) {
210
+ remoteBindings.push(normalized);
211
+ }
212
+ else {
213
+ (options.serviceBindings ??= {})[key] = service;
214
+ }
215
+ break;
216
+ }
217
+ case "vectorize": {
218
+ remoteBindings.push({
219
+ type: "vectorize",
220
+ name: key,
221
+ index_name: binding.name,
222
+ raw: true,
223
+ });
224
+ break;
225
+ }
226
+ case "version_metadata": {
227
+ (options.bindings ??= {})[key] = {
228
+ id: crypto.randomUUID(),
229
+ tag: "",
230
+ timestamp: "0",
231
+ };
232
+ break;
233
+ }
234
+ case "workflow": {
235
+ (options.workflows ??= {})[key] = {
236
+ name: binding.workflowName,
237
+ className: binding.className,
238
+ scriptName: binding.scriptName,
239
+ };
240
+ break;
241
+ }
242
+ default: {
243
+ assertNever(binding);
244
+ }
245
+ }
246
+ }
247
+ for (const eventSource of input.eventSources ?? []) {
248
+ const queue = "queue" in eventSource ? eventSource.queue : eventSource;
249
+ if (queue.dev?.remote) {
250
+ throw new Error(`Locally emulated workers cannot consume remote queues. Worker "${input.name}" is locally emulated but is consuming remote queue "${queue.name}".`);
251
+ }
252
+ if (isQueueEventSource(eventSource)) {
253
+ (options.queueConsumers ??= {})[queue.name] = {
254
+ maxBatchSize: eventSource.settings?.batchSize,
255
+ maxBatchTimeout: eventSource.settings?.maxWaitTimeMs,
256
+ maxRetries: eventSource.settings?.maxRetries,
257
+ retryDelay: eventSource.settings?.retryDelay,
258
+ };
259
+ }
260
+ else {
261
+ (options.queueConsumers ??= {})[eventSource.name] = {};
262
+ }
263
+ }
264
+ async function* watch(signal) {
265
+ for await (const bundle of input.bundle.watch(signal)) {
266
+ const { modules, rootPath } = normalizeBundle(bundle);
267
+ yield {
268
+ ...options,
269
+ modules,
270
+ rootPath,
271
+ };
272
+ }
273
+ }
274
+ if (remoteBindings.length > 0) {
275
+ const remoteProxy = await createRemoteProxyWorker({
276
+ name: input.name,
277
+ bindings: remoteBindings,
278
+ });
279
+ for (const binding of remoteBindings) {
280
+ switch (binding.type) {
281
+ case "ai":
282
+ options.ai = {
283
+ binding: binding.name,
284
+ remoteProxyConnectionString: remoteProxy.connectionString,
285
+ };
286
+ break;
287
+ case "browser":
288
+ options.browserRendering = {
289
+ binding: binding.name,
290
+ remoteProxyConnectionString: remoteProxy.connectionString,
291
+ };
292
+ break;
293
+ case "d1":
294
+ (options.d1Databases ??= {})[binding.name] = {
295
+ id: binding.id,
296
+ remoteProxyConnectionString: remoteProxy.connectionString,
297
+ };
298
+ break;
299
+ case "dispatch_namespace":
300
+ (options.dispatchNamespaces ??= {})[binding.name] = {
301
+ namespace: binding.namespace,
302
+ remoteProxyConnectionString: remoteProxy.connectionString,
303
+ };
304
+ break;
305
+ case "kv_namespace":
306
+ (options.kvNamespaces ??= {})[binding.name] = {
307
+ id: binding.namespace_id,
308
+ remoteProxyConnectionString: remoteProxy.connectionString,
309
+ };
310
+ break;
311
+ case "images":
312
+ options.images = {
313
+ binding: binding.name,
314
+ remoteProxyConnectionString: remoteProxy.connectionString,
315
+ };
316
+ break;
317
+ case "mtls_certificate":
318
+ (options.mtlsCertificates ??= {})[binding.name] = {
319
+ certificate_id: binding.certificate_id,
320
+ remoteProxyConnectionString: remoteProxy.connectionString,
321
+ };
322
+ break;
323
+ case "queue":
324
+ (options.queueProducers ??= {})[binding.name] = {
325
+ queueName: binding.queue_name,
326
+ remoteProxyConnectionString: remoteProxy.connectionString,
327
+ };
328
+ break;
329
+ case "r2_bucket":
330
+ (options.r2Buckets ??= {})[binding.name] = {
331
+ id: binding.bucket_name,
332
+ remoteProxyConnectionString: remoteProxy.connectionString,
333
+ };
334
+ break;
335
+ case "service":
336
+ (options.serviceBindings ??= {})[binding.name] = {
337
+ name: binding.name,
338
+ remoteProxyConnectionString: remoteProxy.connectionString,
339
+ };
340
+ break;
341
+ case "vectorize":
342
+ (options.vectorize ??= {})[binding.name] = {
343
+ index_name: binding.index_name,
344
+ remoteProxyConnectionString: remoteProxy.connectionString,
345
+ };
346
+ break;
347
+ default: {
348
+ assertNever(binding);
349
+ }
350
+ }
351
+ }
352
+ return {
353
+ watch,
354
+ remoteProxy: remoteProxy.server,
355
+ };
356
+ }
357
+ return {
358
+ watch,
359
+ remoteProxy: undefined,
360
+ };
361
+ };
362
+ const moduleTypes = {
363
+ esm: "ESModule",
364
+ cjs: "CommonJS",
365
+ text: "Text",
366
+ data: "Data",
367
+ wasm: "CompiledWasm",
368
+ sourcemap: "Text",
369
+ };
370
+ const normalizeBundle = (bundle) => {
371
+ const modules = bundle.modules.map((module) => ({
372
+ type: moduleTypes[module.type],
373
+ path: module.path,
374
+ contents: module.content,
375
+ }));
376
+ const entry = modules.find((module) => module.path === bundle.entrypoint);
377
+ if (!entry) {
378
+ throw new Error(`Entrypoint "${bundle.entrypoint}" not found in bundle.`);
379
+ }
380
+ return {
381
+ modules: [entry, ...modules.filter((module) => module.path !== entry.path)],
382
+ rootPath: bundle.root,
383
+ };
384
+ };
385
+ const isRemoteBinding = (binding) => {
386
+ if (typeof binding === "string" || binding === Self) {
387
+ return false;
388
+ }
389
+ return ("dev" in binding &&
390
+ typeof binding.dev === "object" &&
391
+ "remote" in binding.dev &&
392
+ !!binding.dev.remote);
393
+ };
394
+ //# sourceMappingURL=build-worker-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-worker-options.js","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/build-worker-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import * as miniflare from "miniflare";
2
+ import type { HTTPServer } from "../../util/http.ts";
3
+ import { AsyncMutex } from "../../util/mutex.ts";
4
+ import { type MiniflareWorkerInput } from "./build-worker-options.ts";
5
+ import { MiniflareWorkerProxy } from "./miniflare-worker-proxy.ts";
6
+ declare global {
7
+ var ALCHEMY_MINIFLARE_CONTROLLER: MiniflareController | undefined;
8
+ }
9
+ export declare class MiniflareController {
10
+ abort: AbortController;
11
+ miniflare: miniflare.Miniflare | undefined;
12
+ options: Map<string, miniflare.WorkerOptions>;
13
+ localProxies: Map<string, MiniflareWorkerProxy>;
14
+ remoteProxies: Map<string, HTTPServer>;
15
+ mutex: AsyncMutex;
16
+ static get singleton(): MiniflareController;
17
+ add(input: MiniflareWorkerInput): Promise<string>;
18
+ private watch;
19
+ private update;
20
+ private setMiniflareOptions;
21
+ dispose(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=miniflare-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miniflare-controller.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/miniflare-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAIvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,4BAA4B,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACnE;AAED,qBAAa,mBAAmB;IAC9B,KAAK,kBAAyB;IAC9B,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3C,OAAO,uCAA8C;IACrD,YAAY,oCAA2C;IACvD,aAAa,0BAAiC;IAC9C,KAAK,aAAoB;IAEzB,MAAM,KAAK,SAAS,wBAGnB;IAEK,GAAG,CAAC,KAAK,EAAE,oBAAoB;YA2BvB,KAAK;YAiBL,MAAM;YAsBN,mBAAmB;IAuB3B,OAAO;CAQd"}
@@ -0,0 +1,110 @@
1
+ import * as miniflare from "miniflare";
2
+ import assert from "node:assert";
3
+ import path from "node:path";
4
+ import { findOpenPort } from "../../util/find-open-port.js";
5
+ import { logger } from "../../util/logger.js";
6
+ import { AsyncMutex } from "../../util/mutex.js";
7
+ import { buildWorkerOptions, } from "./build-worker-options.js";
8
+ import { MiniflareWorkerProxy } from "./miniflare-worker-proxy.js";
9
+ export class MiniflareController {
10
+ abort = new AbortController();
11
+ miniflare;
12
+ options = new Map();
13
+ localProxies = new Map();
14
+ remoteProxies = new Map();
15
+ mutex = new AsyncMutex();
16
+ static get singleton() {
17
+ globalThis.ALCHEMY_MINIFLARE_CONTROLLER ??= new MiniflareController();
18
+ return globalThis.ALCHEMY_MINIFLARE_CONTROLLER;
19
+ }
20
+ async add(input) {
21
+ const { watch, remoteProxy } = await buildWorkerOptions(input);
22
+ if (remoteProxy) {
23
+ this.remoteProxies.set(input.name, remoteProxy);
24
+ }
25
+ const watcher = watch(this.abort.signal);
26
+ const first = await watcher.next();
27
+ assert(first.value, "First value is undefined");
28
+ this.options.set(input.name, first.value);
29
+ const miniflare = await this.update();
30
+ const proxy = new MiniflareWorkerProxy({
31
+ name: input.name,
32
+ port: input.port ?? (await findOpenPort()),
33
+ miniflare,
34
+ });
35
+ this.localProxies.set(input.name, proxy);
36
+ void this.watch(input.id, watcher);
37
+ logger.task(input.id, {
38
+ message: `Ready at ${proxy.url}`,
39
+ status: "success",
40
+ resource: input.id,
41
+ prefix: "dev",
42
+ prefixColor: "cyanBright",
43
+ });
44
+ return proxy.url;
45
+ }
46
+ async watch(id, watcher) {
47
+ for await (const options of watcher) {
48
+ this.options.set(options.name, options);
49
+ await this.update();
50
+ logger.task(id, {
51
+ message: "Updated",
52
+ status: "success",
53
+ resource: id,
54
+ prefix: "dev",
55
+ prefixColor: "cyanBright",
56
+ });
57
+ }
58
+ }
59
+ async update() {
60
+ return await this.mutex.lock(async () => {
61
+ const options = {
62
+ workers: Array.from(this.options.values()),
63
+ defaultPersistRoot: path.join(process.cwd(), ".alchemy/miniflare"),
64
+ unsafeDevRegistryPath: miniflare.getDefaultDevRegistryPath(),
65
+ analyticsEngineDatasetsPersist: true,
66
+ cachePersist: true,
67
+ d1Persist: true,
68
+ durableObjectsPersist: true,
69
+ kvPersist: true,
70
+ r2Persist: true,
71
+ secretsStorePersist: true,
72
+ workflowsPersist: true,
73
+ log: process.env.DEBUG
74
+ ? new miniflare.Log(miniflare.LogLevel.DEBUG)
75
+ : undefined,
76
+ };
77
+ return await this.setMiniflareOptions(options);
78
+ });
79
+ }
80
+ async setMiniflareOptions(options) {
81
+ try {
82
+ if (this.miniflare) {
83
+ await this.miniflare.setOptions(options);
84
+ }
85
+ else {
86
+ this.miniflare = new miniflare.Miniflare(options);
87
+ await this.miniflare.ready;
88
+ }
89
+ return this.miniflare;
90
+ }
91
+ catch (error) {
92
+ if (error instanceof miniflare.MiniflareCoreError &&
93
+ error.code === "ERR_MODULE_STRING_SCRIPT") {
94
+ throw new Error('Miniflare detected an external dependency that could not be resolved. This typically occurs when the "nodejs_compat" or "nodejs_als" compatibility flag is not enabled.');
95
+ }
96
+ else {
97
+ throw error;
98
+ }
99
+ }
100
+ }
101
+ async dispose() {
102
+ this.abort.abort();
103
+ await Promise.all([
104
+ this.miniflare?.dispose(),
105
+ ...this.localProxies.values().map((proxy) => proxy.close()),
106
+ ...this.remoteProxies.values().map((proxy) => proxy.close()),
107
+ ]);
108
+ }
109
+ }
110
+ //# sourceMappingURL=miniflare-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miniflare-controller.js","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/miniflare-controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"miniflare-worker-proxy.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/miniflare-worker-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAQvC,UAAU,2BAA2B;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;CAChC;AAED,qBAAa,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,GAAG,CAA2C;gBAEzB,OAAO,EAAE,2BAA2B;IAUjE,IAAI,KAAK,mCAKR;IAED,IAAI,GAAG,WAEN;IAEK,KAAK;YAOG,aAAa;YA2Bb,qBAAqB;YA6BrB,aAAa;CAwB5B"}
1
+ {"version":3,"file":"miniflare-worker-proxy.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/miniflare-worker-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAQvC,UAAU,2BAA2B;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;CAChC;AAED,qBAAa,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,GAAG,CAA2C;gBAEzB,OAAO,EAAE,2BAA2B;IAUjE,IAAI,KAAK,mCAKR;IAED,IAAI,GAAG,WAEN;IAEK,KAAK;YAOG,aAAa;YAmBb,qBAAqB;YA6BrB,aAAa;CAwB5B"}