alchemy 0.20.0 → 0.21.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.
- package/lib/cloudflare/bound.d.ts +4 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/durable-object-namespace.d.ts +2 -0
- package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
- package/lib/cloudflare/durable-object-namespace.js +3 -0
- package/lib/cloudflare/durable-object-namespace.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts +1 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +115 -24
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +41 -10
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +34 -16
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/workflow.d.ts +2 -0
- package/lib/cloudflare/workflow.d.ts.map +1 -1
- package/lib/cloudflare/workflow.js +3 -0
- package/lib/cloudflare/workflow.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +1 -1
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +4 -0
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/type.d.ts +6 -0
- package/lib/type.d.ts.map +1 -0
- package/lib/type.js +7 -0
- package/lib/type.js.map +1 -0
- package/package.json +1 -1
- package/src/cloudflare/bound.ts +45 -35
- package/src/cloudflare/durable-object-namespace.ts +10 -0
- package/src/cloudflare/worker-metadata.ts +136 -36
- package/src/cloudflare/worker.ts +183 -93
- package/src/cloudflare/workflow.ts +5 -0
- package/src/cloudflare/wrangler.json.ts +5 -1
- package/src/index.ts +1 -0
- package/src/type.ts +9 -0
|
@@ -13,10 +13,13 @@ import type { HyperdriveResource as _Hyperdrive } from "./hyperdrive.js";
|
|
|
13
13
|
import type { PipelineResource as _Pipeline } from "./pipeline.js";
|
|
14
14
|
import type { QueueResource as _Queue } from "./queue.js";
|
|
15
15
|
import type { VectorizeIndexResource as _VectorizeIndex } from "./vectorize-index.js";
|
|
16
|
+
import type { Worker as _Worker } from "./worker.js";
|
|
16
17
|
import type { Workflow as _Workflow } from "./workflow.js";
|
|
17
18
|
export type Bound<T extends Binding> = T extends _DurableObjectNamespace<infer O> ? DurableObjectNamespace<O> : T extends {
|
|
18
19
|
type: "kv_namespace";
|
|
19
|
-
} ? KVNamespace : T extends {
|
|
20
|
+
} ? KVNamespace : T extends _Worker<any, infer RPC> ? Service<RPC> & {
|
|
21
|
+
[property in keyof Pick<RPC, Extract<keyof Rpc.Provider<RPC, "fetch" | "connect">, keyof RPC>>]: Rpc.Provider<RPC, "fetch" | "connect">[property];
|
|
22
|
+
} : T extends {
|
|
20
23
|
type: "service";
|
|
21
24
|
} ? Service : T extends _R2Bucket ? R2Bucket : T extends _AiGateway ? AiGateway : T extends _Hyperdrive ? Hyperdrive : T extends Secret ? string : T extends Assets ? Service : T extends _Workflow<infer P> ? Workflow<P> : T extends D1DatabaseResource ? D1Database : T extends _VectorizeIndex ? VectorizeIndex : T extends _Queue<infer Body> ? Queue<Body> : T extends _AnalyticsEngineDataset ? AnalyticsEngineDataset : T extends _Pipeline<infer R> ? Pipeline<R> : T extends string ? string : T extends BrowserRendering ? Fetcher : T extends _Ai<infer M> ? Ai<M> : T extends Self ? Service : T extends Json<infer T> ? T : Service;
|
|
22
25
|
//# sourceMappingURL=bound.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bound.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,EAAE,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,sBAAsB,IAAI,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,KAAK,EAAE,kBAAkB,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,uBAAuB,CACtE,MAAM,CAAC,CACR,GACG,sBAAsB,CAAC,CAAC,CAAC,GACzB,CAAC,SAAS;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GAChC,WAAW,GACX,CAAC,SAAS;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAC3B,OAAO,GACP,CAAC,SAAS,SAAS,GACjB,QAAQ,GACR,CAAC,SAAS,UAAU,GAClB,SAAS,GACT,CAAC,SAAS,WAAW,GACnB,UAAU,GACV,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,MAAM,GACd,OAAO,GACP,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAC1B,QAAQ,CAAC,CAAC,CAAC,GACX,CAAC,SAAS,kBAAkB,GAC1B,UAAU,GACV,CAAC,SAAS,eAAe,GACvB,cAAc,GACd,CAAC,SAAS,MAAM,CAAC,MAAM,IAAI,CAAC,GAC1B,KAAK,CAAC,IAAI,CAAC,GACX,CAAC,SAAS,uBAAuB,GAC/B,sBAAsB,GACtB,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAC1B,QAAQ,CAAC,CAAC,CAAC,GACX,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,gBAAgB,GACxB,OAAO,GACP,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GACpB,EAAE,CAAC,CAAC,CAAC,GACL,CAAC,SAAS,IAAI,GACZ,OAAO,GACP,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,GACD,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"bound.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bound.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Binding } from "./bindings.js";
|
|
1
2
|
/**
|
|
2
3
|
* Properties for creating a Durable Object Namespace
|
|
3
4
|
*/
|
|
@@ -8,6 +9,7 @@ export interface DurableObjectNamespaceInput {
|
|
|
8
9
|
sqlite?: boolean | undefined;
|
|
9
10
|
namespaceId?: string | undefined;
|
|
10
11
|
}
|
|
12
|
+
export declare function isDurableObjectNamespace(binding: Binding): binding is DurableObjectNamespace;
|
|
11
13
|
/**
|
|
12
14
|
* @example
|
|
13
15
|
* // Create a basic Durable Object namespace for stateful chat rooms
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-object-namespace.d.ts","sourceRoot":"","sources":["../../src/cloudflare/durable-object-namespace.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,sBAAsB,CACjC,CAAC,SAAS,GAAG,CAAC,oBAAoB,GAAG,SAAS,GAAG,SAAS,CAC1D,YAAW,2BAA2B;aAcpB,EAAE,EAAE,MAAM;IAZ5B,SAAgB,IAAI,EAAG,0BAA0B,CAAU;IAE3D,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGjD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAGhB,EAAE,EAAE,MAAM,EAC1B,KAAK,EAAE,2BAA2B;CAOrC"}
|
|
1
|
+
{"version":3,"file":"durable-object-namespace.d.ts","sourceRoot":"","sources":["../../src/cloudflare/durable-object-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,GACf,OAAO,IAAI,sBAAsB,CAInC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,sBAAsB,CACjC,CAAC,SAAS,GAAG,CAAC,oBAAoB,GAAG,SAAS,GAAG,SAAS,CAC1D,YAAW,2BAA2B;aAcpB,EAAE,EAAE,MAAM;IAZ5B,SAAgB,IAAI,EAAG,0BAA0B,CAAU;IAE3D,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGjD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAGhB,EAAE,EAAE,MAAM,EAC1B,KAAK,EAAE,2BAA2B;CAOrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-object-namespace.js","sourceRoot":"","sources":["../../src/cloudflare/durable-object-namespace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"durable-object-namespace.js","sourceRoot":"","sources":["../../src/cloudflare/durable-object-namespace.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,wBAAwB,CACtC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,0BAA0B,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,sBAAsB;IAgBf;IAZF,IAAI,GAAG,0BAAmC,CAAC;IAC3D,6DAA6D;IAC7C,SAAS,CAAS;IAClB,UAAU,CAAsB;IAChC,WAAW,CAAsB;IACjC,MAAM,CAAuB;IAC7B,WAAW,CAAsB;IAEjD,4BAA4B;IACT,WAAW,CAAI;IAElC,YACkB,EAAU,EAC1B,KAAkC;QADlB,OAAE,GAAF,EAAE,CAAQ;QAG1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -153,7 +153,7 @@ export interface WorkerMetadata {
|
|
|
153
153
|
suspended: boolean;
|
|
154
154
|
}[];
|
|
155
155
|
}
|
|
156
|
-
export declare function prepareWorkerMetadata<B extends Bindings>(ctx: Context<Worker<B>>, oldBindings:
|
|
156
|
+
export declare function prepareWorkerMetadata<B extends Bindings>(ctx: Context<Worker<B>>, oldBindings: WorkerBindingSpec[] | undefined, oldTags: string[] | undefined, props: WorkerProps & {
|
|
157
157
|
compatibilityDate: string;
|
|
158
158
|
compatibilityFlags: string[];
|
|
159
159
|
workerName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-metadata.d.ts","sourceRoot":"","sources":["../../src/cloudflare/worker-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,
|
|
1
|
+
{"version":3,"file":"worker-metadata.d.ts","sourceRoot":"","sources":["../../src/cloudflare/worker-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,69 @@
|
|
|
1
1
|
import { slugify } from "../util/slugify.js";
|
|
2
|
-
import { Self } from "./bindings.js";
|
|
2
|
+
import { Self, } from "./bindings.js";
|
|
3
|
+
import { isDurableObjectNamespace, } from "./durable-object-namespace.js";
|
|
3
4
|
import { createAssetConfig } from "./worker-assets.js";
|
|
4
|
-
export async function prepareWorkerMetadata(ctx, oldBindings, props, assetUploadResult) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
export async function prepareWorkerMetadata(ctx, oldBindings, oldTags, props, assetUploadResult) {
|
|
6
|
+
// we use Cloudflare Worker tags to store a mapping between Alchemy's stable identifier and the binding name
|
|
7
|
+
// e.g.
|
|
8
|
+
// {
|
|
9
|
+
// BINDING_NAME: new DurableObjectNamespace("stable-id")
|
|
10
|
+
// }
|
|
11
|
+
// will be stored as alchemy:do:stable-id:BINDING_NAME
|
|
12
|
+
// TODO(sam): should we base64 encode to ensure no `:` collision risk?
|
|
13
|
+
const bindingNameToStableId = Object.fromEntries(oldTags?.flatMap((tag) => {
|
|
14
|
+
// alchemy:do:{stableId}:{bindingName}
|
|
15
|
+
if (tag.startsWith("alchemy:do:")) {
|
|
16
|
+
const [, , stableId, bindingName] = tag.split(":");
|
|
17
|
+
return [[bindingName, stableId]];
|
|
18
|
+
}
|
|
19
|
+
return [];
|
|
20
|
+
}) ?? []);
|
|
21
|
+
const deletedClasses = oldBindings?.flatMap((oldBinding) => {
|
|
22
|
+
if (oldBinding.type === "durable_object_namespace" &&
|
|
23
|
+
(oldBinding.script_name === undefined ||
|
|
24
|
+
// if this a cross-script binding, we don't need to do migrations in the remote worker
|
|
25
|
+
oldBinding.script_name === props.workerName)) {
|
|
26
|
+
// reverse the stableId from our tag-encoded metadata
|
|
27
|
+
const stableId = bindingNameToStableId[oldBinding.name];
|
|
28
|
+
if (stableId) {
|
|
29
|
+
if (props.bindings === undefined) {
|
|
30
|
+
// all classes are deleted
|
|
31
|
+
return [oldBinding.class_name];
|
|
32
|
+
}
|
|
33
|
+
// we created this worker on latest version, we can now intelligently determine migrations
|
|
34
|
+
// try and find the DO binding by stable id
|
|
35
|
+
const object = Object.values(props.bindings).find((binding) => isDurableObjectNamespace(binding) && binding.id === stableId);
|
|
36
|
+
if (object) {
|
|
37
|
+
// we found the corresponding object, it should not be deleted
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// it was not found, we will now delete it
|
|
42
|
+
return [oldBinding.class_name];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// ok, we were unable to find the stableId, this worker must have been created by an old alchemy or outside of alchemy
|
|
47
|
+
// let's now apply a herusitic based on binding name (assume binding name is consistent)
|
|
48
|
+
// TODO(sam): this has a chance of being wrong, is that OK? Users should be encouraged to upgrade alchemy version and re-deploy
|
|
49
|
+
const object = props.bindings?.[oldBinding.name];
|
|
50
|
+
if (object && isDurableObjectNamespace(object)) {
|
|
51
|
+
if (object.className === oldBinding.class_name) {
|
|
52
|
+
// this is relatively safe to assume is the right match, do not delete
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// the class name has changed, this could indicate one of:
|
|
57
|
+
// 1. the user has changed the class name and we should migrate it
|
|
58
|
+
// 2. the user deleted the DO a long time ago and this is unrelated (we should just create a new one)
|
|
59
|
+
return [oldBinding.class_name];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// we didn't find it, so delete it
|
|
64
|
+
return [oldBinding.class_name];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
12
67
|
}
|
|
13
68
|
return [];
|
|
14
69
|
});
|
|
@@ -21,11 +76,19 @@ export async function prepareWorkerMetadata(ctx, oldBindings, props, assetUpload
|
|
|
21
76
|
enabled: props.observability?.enabled !== false,
|
|
22
77
|
},
|
|
23
78
|
// TODO(sam): base64 encode instead? 0 collision risk vs readability.
|
|
24
|
-
tags: [
|
|
79
|
+
tags: [
|
|
80
|
+
`alchemy:id:${slugify(ctx.fqn)}`,
|
|
81
|
+
// encode a mapping table of Durable Object stable ID -> binding name
|
|
82
|
+
// we use this to reliably compute class migrations based on server-side state
|
|
83
|
+
...Object.entries(props.bindings ?? {}).flatMap(([bindingName, binding]) => isDurableObjectNamespace(binding)
|
|
84
|
+
? // TODO(sam): base64 encode if contains `:`?
|
|
85
|
+
[`alchemy:do:${binding.id}:${bindingName}`]
|
|
86
|
+
: []),
|
|
87
|
+
],
|
|
25
88
|
migrations: {
|
|
26
89
|
new_classes: props.migrations?.new_classes ?? [],
|
|
27
90
|
deleted_classes: [
|
|
28
|
-
...deletedClasses,
|
|
91
|
+
...(deletedClasses ?? []),
|
|
29
92
|
...(props.migrations?.deleted_classes ?? []),
|
|
30
93
|
],
|
|
31
94
|
renamed_classes: props.migrations?.renamed_classes ?? [],
|
|
@@ -98,7 +161,12 @@ export async function prepareWorkerMetadata(ctx, oldBindings, props, assetUpload
|
|
|
98
161
|
environment: binding.environment,
|
|
99
162
|
namespace_id: binding.namespaceId,
|
|
100
163
|
});
|
|
101
|
-
|
|
164
|
+
if (binding.scriptName === undefined ||
|
|
165
|
+
// TODO(sam): not sure if Cloudflare Api would like us using `this` worker name here
|
|
166
|
+
binding.scriptName === props.workerName) {
|
|
167
|
+
// we do not need configure class migrations for cross-script bindings
|
|
168
|
+
configureClassMigration(bindingName, binding);
|
|
169
|
+
}
|
|
102
170
|
}
|
|
103
171
|
else if (binding.type === "r2_bucket") {
|
|
104
172
|
meta.bindings.push({
|
|
@@ -199,23 +267,46 @@ export async function prepareWorkerMetadata(ctx, oldBindings, props, assetUpload
|
|
|
199
267
|
throw new Error(`Unsupported binding type: ${binding.type}`);
|
|
200
268
|
}
|
|
201
269
|
}
|
|
202
|
-
function configureClassMigration(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
270
|
+
function configureClassMigration(bindingName, newBinding) {
|
|
271
|
+
let prevBinding;
|
|
272
|
+
if (oldBindings) {
|
|
273
|
+
// try and find the prev binding for this
|
|
274
|
+
for (const oldBinding of oldBindings) {
|
|
275
|
+
if (oldBinding.type === "durable_object_namespace") {
|
|
276
|
+
const stableId = bindingNameToStableId[oldBinding.name];
|
|
277
|
+
if (stableId) {
|
|
278
|
+
// (happy case)
|
|
279
|
+
// great, this Worker was created with Alchemy and we can map stable ids
|
|
280
|
+
if (stableId === newBinding.id) {
|
|
281
|
+
prevBinding = oldBinding;
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
// (heuristic case)
|
|
287
|
+
// we were unable to find the stableId, this Worker must not have been created with Alchemy
|
|
288
|
+
// now, try and resolve by assuming 1:1 binding name correspondence
|
|
289
|
+
// WARNING: this is an imperfect assumption. Users are advised to upgrade alchemy and re-deploy
|
|
290
|
+
if (oldBinding.name === bindingName) {
|
|
291
|
+
prevBinding = oldBinding;
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (!prevBinding) {
|
|
299
|
+
if (newBinding.sqlite) {
|
|
300
|
+
meta.migrations.new_sqlite_classes.push(newBinding.className);
|
|
210
301
|
}
|
|
211
302
|
else {
|
|
212
|
-
meta.migrations.new_classes.push(className);
|
|
303
|
+
meta.migrations.new_classes.push(newBinding.className);
|
|
213
304
|
}
|
|
214
305
|
}
|
|
215
|
-
else if (
|
|
306
|
+
else if (prevBinding.class_name !== newBinding.className) {
|
|
216
307
|
meta.migrations.renamed_classes.push({
|
|
217
|
-
from:
|
|
218
|
-
to: className,
|
|
308
|
+
from: prevBinding.class_name,
|
|
309
|
+
to: newBinding.className,
|
|
219
310
|
});
|
|
220
311
|
}
|
|
221
312
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-metadata.js","sourceRoot":"","sources":["../../src/cloudflare/worker-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"worker-metadata.js","sourceRoot":"","sources":["../../src/cloudflare/worker-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Context } from "../context.js";
|
|
2
2
|
import type { BundleProps } from "../esbuild/bundle.js";
|
|
3
3
|
import { Resource } from "../resource.js";
|
|
4
|
+
import type { type } from "../type.js";
|
|
4
5
|
import { type CloudflareApi, type CloudflareApiOptions } from "./api.js";
|
|
5
6
|
import { type Bindings } from "./bindings.js";
|
|
6
7
|
import type { Bound } from "./bound.js";
|
|
@@ -42,7 +43,7 @@ export interface AssetsConfig {
|
|
|
42
43
|
*/
|
|
43
44
|
serve_directly?: boolean;
|
|
44
45
|
}
|
|
45
|
-
export interface BaseWorkerProps<B extends Bindings =
|
|
46
|
+
export interface BaseWorkerProps<B extends Bindings | undefined = undefined, RPC extends Rpc.WorkerEntrypointBranded = Rpc.WorkerEntrypointBranded> extends CloudflareApiOptions {
|
|
46
47
|
/**
|
|
47
48
|
* Bundle options when using entryPoint
|
|
48
49
|
*
|
|
@@ -135,19 +136,25 @@ export interface BaseWorkerProps<B extends Bindings = Bindings> extends Cloudfla
|
|
|
135
136
|
* Can include queues, streams, or other event sources.
|
|
136
137
|
*/
|
|
137
138
|
eventSources?: EventSource[];
|
|
139
|
+
/**
|
|
140
|
+
* The RPC class to use for the worker.
|
|
141
|
+
*
|
|
142
|
+
* This is only used when using the rpc property.
|
|
143
|
+
*/
|
|
144
|
+
rpc?: (new (...args: any[]) => RPC) | type<RPC>;
|
|
138
145
|
}
|
|
139
|
-
export interface InlineWorkerProps<B extends Bindings = Bindings> extends BaseWorkerProps<B> {
|
|
146
|
+
export interface InlineWorkerProps<B extends Bindings | undefined = Bindings, RPC extends Rpc.WorkerEntrypointBranded = Rpc.WorkerEntrypointBranded> extends BaseWorkerProps<B, RPC> {
|
|
140
147
|
script: string;
|
|
141
148
|
entrypoint?: undefined;
|
|
142
149
|
}
|
|
143
|
-
export interface EntrypointWorkerProps<B extends Bindings = Bindings> extends BaseWorkerProps<B> {
|
|
150
|
+
export interface EntrypointWorkerProps<B extends Bindings | undefined = Bindings, RPC extends Rpc.WorkerEntrypointBranded = Rpc.WorkerEntrypointBranded> extends BaseWorkerProps<B, RPC> {
|
|
144
151
|
entrypoint: string;
|
|
145
152
|
script?: undefined;
|
|
146
153
|
}
|
|
147
154
|
/**
|
|
148
155
|
* Properties for creating or updating a Worker
|
|
149
156
|
*/
|
|
150
|
-
export type WorkerProps<B extends Bindings = Bindings> = InlineWorkerProps<B> | EntrypointWorkerProps<B>;
|
|
157
|
+
export type WorkerProps<B extends Bindings | undefined = Bindings, RPC extends Rpc.WorkerEntrypointBranded = Rpc.WorkerEntrypointBranded> = InlineWorkerProps<B, RPC> | EntrypointWorkerProps<B, RPC>;
|
|
151
158
|
export type FetchWorkerProps<B extends Bindings = Bindings, E extends EventSource[] = EventSource[]> = Omit<WorkerProps<B>, "entrypoint" | "eventSources"> & {
|
|
152
159
|
/**
|
|
153
160
|
* A function that will be used to fetch the worker script.
|
|
@@ -173,7 +180,9 @@ export declare function isWorker(resource: Resource): resource is Worker<any>;
|
|
|
173
180
|
/**
|
|
174
181
|
* Output returned after Worker creation/update
|
|
175
182
|
*/
|
|
176
|
-
export type Worker<B extends Bindings = Bindings> = Resource<"cloudflare::Worker"> & Omit<WorkerProps<B>, "url" | "script"> & globalThis.Service & {
|
|
183
|
+
export type Worker<B extends Bindings | undefined = Bindings | undefined, RPC extends Rpc.WorkerEntrypointBranded = Rpc.WorkerEntrypointBranded> = Resource<"cloudflare::Worker"> & Omit<WorkerProps<B>, "url" | "script"> & globalThis.Service & {
|
|
184
|
+
/** @internal phantom property */
|
|
185
|
+
__rpc__?: RPC;
|
|
177
186
|
type: "service";
|
|
178
187
|
/**
|
|
179
188
|
* The ID of the worker
|
|
@@ -199,14 +208,14 @@ export type Worker<B extends Bindings = Bindings> = Resource<"cloudflare::Worker
|
|
|
199
208
|
/**
|
|
200
209
|
* The bindings that were created
|
|
201
210
|
*/
|
|
202
|
-
bindings: B
|
|
211
|
+
bindings: B;
|
|
203
212
|
/**
|
|
204
213
|
* Configuration for static assets
|
|
205
214
|
*/
|
|
206
215
|
assets?: AssetsConfig;
|
|
207
|
-
Env: {
|
|
216
|
+
Env: B extends Bindings ? {
|
|
208
217
|
[bindingName in keyof B]: Bound<B[bindingName]>;
|
|
209
|
-
};
|
|
218
|
+
} : undefined;
|
|
210
219
|
/**
|
|
211
220
|
* The compatibility date for the worker
|
|
212
221
|
*/
|
|
@@ -305,10 +314,33 @@ export type Worker<B extends Bindings = Bindings> = Resource<"cloudflare::Worker
|
|
|
305
314
|
* crons: ['* 15 * * *', '0 0 * * *', '0 12 * * MON']
|
|
306
315
|
* })
|
|
307
316
|
*
|
|
317
|
+
* @example
|
|
318
|
+
* // Create cross-script durable object binding where one worker
|
|
319
|
+
* // defines the durable object and another worker accesses it:
|
|
320
|
+
* const dataWorker = await Worker("data-worker", {
|
|
321
|
+
* name: "data-worker",
|
|
322
|
+
* entrypoint: "./src/data.ts",
|
|
323
|
+
* bindings: {
|
|
324
|
+
* // Bind to its own durable object
|
|
325
|
+
* STORAGE: new DurableObjectNamespace("storage", {
|
|
326
|
+
* className: "DataStorage"
|
|
327
|
+
* })
|
|
328
|
+
* }
|
|
329
|
+
* });
|
|
330
|
+
*
|
|
331
|
+
* const apiWorker = await Worker("api-worker", {
|
|
332
|
+
* name: "api-worker",
|
|
333
|
+
* entrypoint: "./src/api.ts",
|
|
334
|
+
* bindings: {
|
|
335
|
+
* // Cross-script binding to the data worker's durable object
|
|
336
|
+
* SHARED_STORAGE: dataWorker.bindings.STORAGE
|
|
337
|
+
* }
|
|
338
|
+
* });
|
|
339
|
+
*
|
|
308
340
|
* @see
|
|
309
341
|
* https://developers.cloudflare.com/workers/
|
|
310
342
|
*/
|
|
311
|
-
export declare function Worker<const B extends Bindings>(id: string, props: WorkerProps<B>): Promise<Worker<B>>;
|
|
343
|
+
export declare function Worker<const B extends Bindings, RPC extends Rpc.WorkerEntrypointBranded>(id: string, props: WorkerProps<B, RPC>): Promise<Worker<B, RPC>>;
|
|
312
344
|
export declare function Worker<const B extends Bindings, const E extends EventSource[]>(id: string, meta: ImportMeta, props: FetchWorkerProps<B, E>): Promise<Worker<B>> & globalThis.Service;
|
|
313
345
|
export declare const _Worker: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | (<const B extends Bindings>(this: Context<Worker<NoInfer<B>>>, id: string, props: WorkerProps<B>) => Promise<Worker<B>>);
|
|
314
346
|
export declare function deleteWorker<B extends Bindings>(ctx: Context<Worker<B>>, api: CloudflareApi, props: WorkerProps<B> & {
|
|
@@ -318,6 +350,5 @@ export declare function putWorker(api: CloudflareApi, workerName: string, script
|
|
|
318
350
|
export declare function assertWorkerDoesNotExist<B extends Bindings>(ctx: Context<Worker<B>>, api: CloudflareApi, workerName: string): Promise<boolean>;
|
|
319
351
|
export declare function configureURL<B extends Bindings>(ctx: Context<Worker<B>>, api: CloudflareApi, workerName: string, url: boolean): Promise<string | undefined>;
|
|
320
352
|
export declare function getWorkerScriptMetadata(api: CloudflareApi, workerName: string): Promise<WorkerScriptMetadata | undefined>;
|
|
321
|
-
export declare function _getWorkerBindings(api: CloudflareApi, workerName: string, environment?: string): Promise<any>;
|
|
322
353
|
export {};
|
|
323
354
|
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cloudflare/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAsB,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cloudflare/worker.ts"],"names":[],"mappings":"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"}
|
package/lib/cloudflare/worker.js
CHANGED
|
@@ -10,10 +10,11 @@ import { withExponentialBackoff } from "../util/retry.js";
|
|
|
10
10
|
import { slugify } from "../util/slugify.js";
|
|
11
11
|
import { CloudflareApiError, handleApiError } from "./api-error.js";
|
|
12
12
|
import { createCloudflareApi, } from "./api.js";
|
|
13
|
-
import { Json } from "./bindings.js";
|
|
13
|
+
import { Json, } from "./bindings.js";
|
|
14
14
|
import { isBucket } from "./bucket.js";
|
|
15
15
|
import { bundleWorkerScript } from "./bundle/bundle-worker.js";
|
|
16
16
|
import { isD1Database } from "./d1-database.js";
|
|
17
|
+
import { DurableObjectNamespace, isDurableObjectNamespace, } from "./durable-object-namespace.js";
|
|
17
18
|
import { isQueueEventSource, } from "./event-source.js";
|
|
18
19
|
import { isKVNamespace } from "./kv-namespace.js";
|
|
19
20
|
import { isPipeline } from "./pipeline.js";
|
|
@@ -194,7 +195,11 @@ export const _Worker = Resource("cloudflare::Worker", {
|
|
|
194
195
|
const compatibilityDate = props.compatibilityDate ?? "2025-04-20";
|
|
195
196
|
const compatibilityFlags = props.compatibilityFlags ?? [];
|
|
196
197
|
const uploadWorkerScript = async (props) => {
|
|
197
|
-
const oldBindings = await
|
|
198
|
+
const [oldBindings, oldMetadata] = await Promise.all([
|
|
199
|
+
getWorkerBindings(api, workerName),
|
|
200
|
+
getWorkerScriptMetadata(api, workerName),
|
|
201
|
+
]);
|
|
202
|
+
const oldTags = oldMetadata?.default_environment?.script?.tags;
|
|
198
203
|
// Get the script content - either from props.script, or by bundling
|
|
199
204
|
const scriptContent = props.script ??
|
|
200
205
|
(await bundleWorkerScript({
|
|
@@ -227,15 +232,13 @@ export const _Worker = Resource("cloudflare::Worker", {
|
|
|
227
232
|
assetUploadResult = await uploadAssets(api, workerName, assetBinding.assets, props.assets);
|
|
228
233
|
}
|
|
229
234
|
// Prepare metadata with bindings
|
|
230
|
-
const scriptMetadata = await prepareWorkerMetadata(this, oldBindings, {
|
|
235
|
+
const scriptMetadata = await prepareWorkerMetadata(this, oldBindings, oldTags, {
|
|
231
236
|
...props,
|
|
232
237
|
compatibilityDate,
|
|
233
238
|
compatibilityFlags,
|
|
234
239
|
workerName,
|
|
235
240
|
}, assetUploadResult);
|
|
236
241
|
await putWorker(api, workerName, scriptContent, scriptMetadata);
|
|
237
|
-
// TODO: it is less than ideal that this can fail, resulting in state problem
|
|
238
|
-
await this.set("bindings", props.bindings);
|
|
239
242
|
for (const workflow of workflowsBindings) {
|
|
240
243
|
await upsertWorkflow(api, {
|
|
241
244
|
workflowName: workflow.workflowName,
|
|
@@ -305,6 +308,19 @@ export const _Worker = Resource("cloudflare::Worker", {
|
|
|
305
308
|
}
|
|
306
309
|
}
|
|
307
310
|
const { scriptMetadata, workerUrl, now } = await uploadWorkerScript(props);
|
|
311
|
+
function exportBindings() {
|
|
312
|
+
return Object.fromEntries(Object.entries(props.bindings ?? {}).map(([bindingName, binding]) => [
|
|
313
|
+
bindingName,
|
|
314
|
+
isDurableObjectNamespace(binding) &&
|
|
315
|
+
binding.scriptName === undefined
|
|
316
|
+
? new DurableObjectNamespace(binding.id, {
|
|
317
|
+
...binding,
|
|
318
|
+
// re-export this binding mapping to the host worker (this worker)
|
|
319
|
+
scriptName: workerName,
|
|
320
|
+
})
|
|
321
|
+
: binding,
|
|
322
|
+
]));
|
|
323
|
+
}
|
|
308
324
|
// Construct the output
|
|
309
325
|
return this({
|
|
310
326
|
...props,
|
|
@@ -315,7 +331,7 @@ export const _Worker = Resource("cloudflare::Worker", {
|
|
|
315
331
|
compatibilityDate,
|
|
316
332
|
compatibilityFlags,
|
|
317
333
|
format: props.format || "esm", // Include format in the output
|
|
318
|
-
bindings:
|
|
334
|
+
bindings: exportBindings(),
|
|
319
335
|
env: props.env,
|
|
320
336
|
observability: scriptMetadata.observability,
|
|
321
337
|
createdAt: now,
|
|
@@ -442,21 +458,23 @@ export async function getWorkerScriptMetadata(api, workerName) {
|
|
|
442
458
|
}
|
|
443
459
|
return (await response.json()).result;
|
|
444
460
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
},
|
|
451
|
-
});
|
|
461
|
+
async function getWorkerBindings(api, workerName) {
|
|
462
|
+
// Fetch the bindings for a worker by calling the Cloudflare API endpoint:
|
|
463
|
+
// GET /accounts/:account_id/workers/scripts/:script_name/bindings
|
|
464
|
+
// See: https://developers.cloudflare.com/api/resources/workers/subresources/scripts/subresources/script_and_version_settings/methods/get/
|
|
465
|
+
const response = await api.get(`/accounts/${api.accountId}/workers/scripts/${workerName}/settings`);
|
|
452
466
|
if (response.status === 404) {
|
|
453
467
|
return undefined;
|
|
454
468
|
}
|
|
455
469
|
if (!response.ok) {
|
|
456
|
-
throw new Error(`
|
|
470
|
+
throw new Error(`Error getting worker bindings: ${response.status} ${response.statusText}`);
|
|
471
|
+
}
|
|
472
|
+
// The result is an object with a "result" property containing the bindings array
|
|
473
|
+
const { result, success, errors } = (await response.json());
|
|
474
|
+
if (!success) {
|
|
475
|
+
throw new Error(`Error getting worker bindings: ${response.status} ${response.statusText}\nErrors:\n${errors.map((e) => `- [${e.code}] ${e.message} (${e.documentation_url})`).join("\n")}`);
|
|
457
476
|
}
|
|
458
|
-
|
|
459
|
-
return data.result;
|
|
477
|
+
return result.bindings;
|
|
460
478
|
}
|
|
461
479
|
/**
|
|
462
480
|
* Lists and deletes all queue consumers for a specific worker
|