alchemy 2.0.0-beta.82 → 2.0.0-beta.83
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/Containers/Container.d.ts +128 -40
- package/lib/Cloudflare/Containers/Container.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/Container.js +124 -24
- package/lib/Cloudflare/Containers/Container.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts +59 -50
- package/lib/Cloudflare/Containers/ContainerApplication.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerApplication.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerClient.d.ts +20 -7
- package/lib/Cloudflare/Containers/ContainerClient.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerClient.js +22 -5
- package/lib/Cloudflare/Containers/ContainerClient.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerConfiguration.d.ts +132 -13
- package/lib/Cloudflare/Containers/ContainerConfiguration.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerConfiguration.js +219 -35
- package/lib/Cloudflare/Containers/ContainerConfiguration.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerPlatform.d.ts +1 -1
- package/lib/Cloudflare/Containers/ContainerPlatform.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerPlatform.js +21 -2
- package/lib/Cloudflare/Containers/ContainerPlatform.js.map +1 -1
- package/lib/Cloudflare/Containers/ContainerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/ContainerProvider.js +74 -177
- package/lib/Cloudflare/Containers/ContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/DurableObjectApplication.d.ts +84 -0
- package/lib/Cloudflare/Containers/DurableObjectApplication.d.ts.map +1 -0
- package/lib/Cloudflare/Containers/DurableObjectApplication.js +249 -0
- package/lib/Cloudflare/Containers/DurableObjectApplication.js.map +1 -0
- package/lib/Cloudflare/Containers/LocalContainerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/LocalContainerProvider.js +20 -41
- package/lib/Cloudflare/Containers/LocalContainerProvider.js.map +1 -1
- package/lib/Cloudflare/Containers/index.d.ts +2 -1
- package/lib/Cloudflare/Containers/index.d.ts.map +1 -1
- package/lib/Cloudflare/Containers/index.js +2 -1
- package/lib/Cloudflare/Containers/index.js.map +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +2 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +3 -0
- package/lib/Cloudflare/Workers/DurableObject.d.ts +75 -1
- package/lib/Cloudflare/Workers/DurableObject.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObject.js +50 -0
- package/lib/Cloudflare/Workers/DurableObject.js.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js +29 -23
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +2 -0
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +67 -4
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +6 -0
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerProvider.js +54 -8
- package/lib/Cloudflare/Workers/WorkerProvider.js.map +1 -1
- package/lib/State/HttpStateApi.d.ts +13 -13
- package/package.json +6 -6
- package/src/Cloudflare/Containers/Container.ts +126 -56
- package/src/Cloudflare/Containers/ContainerApplication.ts +60 -53
- package/src/Cloudflare/Containers/ContainerClient.ts +47 -13
- package/src/Cloudflare/Containers/ContainerConfiguration.ts +316 -44
- package/src/Cloudflare/Containers/ContainerPlatform.ts +27 -3
- package/src/Cloudflare/Containers/ContainerProvider.ts +96 -256
- package/src/Cloudflare/Containers/DurableObjectApplication.ts +382 -0
- package/src/Cloudflare/Containers/LocalContainerProvider.ts +20 -48
- package/src/Cloudflare/Containers/index.ts +10 -0
- package/src/Cloudflare/Providers.ts +2 -0
- package/src/Cloudflare/Workers/DurableObject.ts +77 -1
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +32 -21
- package/src/Cloudflare/Workers/Worker.ts +2 -0
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +95 -4
- package/src/Cloudflare/Workers/WorkerProvider.ts +78 -13
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as Containers from "@distilled.cloud/cloudflare/containers";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Provider from "../../Provider.ts";
|
|
4
|
+
import { Resource } from "../../Resource.ts";
|
|
5
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
6
|
+
import type { Providers } from "../Providers.ts";
|
|
7
|
+
import type { DurableObjectApplicationSettings } from "./ContainerApplication.ts";
|
|
8
|
+
export declare const DurableObjectApplicationTypeId = "Cloudflare.Containers.DurableObjectApplication";
|
|
9
|
+
export interface DurableObjectApplicationProps {
|
|
10
|
+
/** The Durable Object class whose namespace the application serves. */
|
|
11
|
+
className: string;
|
|
12
|
+
}
|
|
13
|
+
/** What each bound Container contributes to its class's application. */
|
|
14
|
+
export interface DurableObjectApplicationBinding {
|
|
15
|
+
/** The Durable Object namespace the application is attached to. */
|
|
16
|
+
durableObjects?: {
|
|
17
|
+
namespaceId: string;
|
|
18
|
+
};
|
|
19
|
+
/** The bound Container and the application-wide settings it declares. */
|
|
20
|
+
container?: {
|
|
21
|
+
id: string;
|
|
22
|
+
settings: DurableObjectApplicationSettings;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* INTERNAL — the one container application of a Durable Object class.
|
|
27
|
+
*
|
|
28
|
+
* Cloudflare allows exactly one container application per Durable Object
|
|
29
|
+
* namespace. Every `schedulingPolicy: "durable_object"` Container bound to a
|
|
30
|
+
* class declares this resource under the same logical id, so the engine
|
|
31
|
+
* registers it once; each Container then binds its application-wide settings
|
|
32
|
+
* onto it. The images themselves are Worker upload metadata, merged by the
|
|
33
|
+
* Worker.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export interface DurableObjectApplication extends Resource<typeof DurableObjectApplicationTypeId, DurableObjectApplicationProps, {
|
|
38
|
+
/** The application id, which equals the Durable Object namespace id. Empty before creation. */
|
|
39
|
+
applicationId: string;
|
|
40
|
+
/** The generated application name. */
|
|
41
|
+
applicationName: string;
|
|
42
|
+
/** The Cloudflare account that owns the application. */
|
|
43
|
+
accountId: string;
|
|
44
|
+
/** The Durable Object class the application serves. */
|
|
45
|
+
className: string;
|
|
46
|
+
/** The Durable Object namespace attached to the application. */
|
|
47
|
+
durableObjects: {
|
|
48
|
+
namespaceId: string;
|
|
49
|
+
} | undefined;
|
|
50
|
+
/** ISO-8601 creation time. Empty before creation. */
|
|
51
|
+
createdAt: string;
|
|
52
|
+
/** Application-wide container configuration (SSH and authorized keys). */
|
|
53
|
+
configuration: Containers.DurableObjectContainerConfiguration;
|
|
54
|
+
/** Application-wide logging. */
|
|
55
|
+
observability: Containers.ContainerApplicationObservability | undefined;
|
|
56
|
+
/** The merged settings last applied, used to reset settings a Container stops declaring. */
|
|
57
|
+
settings: DurableObjectApplicationSettings;
|
|
58
|
+
}, DurableObjectApplicationBinding, Providers> {
|
|
59
|
+
}
|
|
60
|
+
export declare const DurableObjectApplication: import("../../Resource.ts").ResourceClass<DurableObjectApplication>;
|
|
61
|
+
/**
|
|
62
|
+
* Declare the container application of `className`, hosted by `worker`. Every
|
|
63
|
+
* Container bound to the class calls this; the engine dedupes the declaration
|
|
64
|
+
* by its fully qualified id, so all of them share one resource.
|
|
65
|
+
*/
|
|
66
|
+
export declare const declareDurableObjectApplication: (worker: {
|
|
67
|
+
LogicalId: string;
|
|
68
|
+
}, className: string) => Effect.Effect<DurableObjectApplication, never, Providers>;
|
|
69
|
+
/**
|
|
70
|
+
* Right after a Worker upload creates a Durable Object namespace, the
|
|
71
|
+
* containers API can report the namespace missing for a few seconds before it
|
|
72
|
+
* sees it. Retry creates that attach to it, bounded at ~30s.
|
|
73
|
+
*/
|
|
74
|
+
export declare const retryNamespacePropagation: <A, E extends {
|
|
75
|
+
readonly _tag: string;
|
|
76
|
+
}, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
77
|
+
export declare const LiveDurableObjectApplicationProvider: () => import("effect/Layer").Layer<Provider.Provider<DurableObjectApplication>, never, CloudflareEnvironment | import("../../Stack.ts").Stack | import("../../Stage.ts").Stage | Containers.CloudflareOpContext>;
|
|
78
|
+
/**
|
|
79
|
+
* Local (dev) provider: `alchemy dev` runs every image through workerd and
|
|
80
|
+
* Docker, so the application is a placeholder carrying a `dev:` id.
|
|
81
|
+
*/
|
|
82
|
+
export declare const LocalDurableObjectApplicationProvider: () => import("effect/Layer").Layer<Provider.Provider<DurableObjectApplication>, never, import("../../Stack.ts").Stack | import("../../Stage.ts").Stage>;
|
|
83
|
+
export declare const DurableObjectApplicationProvider: () => import("effect/Layer").Layer<Provider.Provider<DurableObjectApplication>, never, import("../../AlchemyContext.ts").AlchemyContext | CloudflareEnvironment | import("../../Stack.ts").Stack | import("../../Stage.ts").Stage | Containers.CloudflareOpContext>;
|
|
84
|
+
//# sourceMappingURL=DurableObjectApplication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DurableObjectApplication.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/DurableObjectApplication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,wCAAwC,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAwB,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAQlF,eAAO,MAAM,8BAA8B,mDAAmD,CAAC;AAE/F,MAAM,WAAW,6BAA6B;IAC5C,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wEAAwE;AACxE,MAAM,WAAW,+BAA+B;IAC9C,mEAAmE;IACnE,cAAc,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,yEAAyE;IACzE,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,gCAAgC,CAAA;KAAE,CAAC;CACxE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAyB,SAAQ,QAAQ,CACxD,OAAO,8BAA8B,EACrC,6BAA6B,EAC7B;IACE,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,cAAc,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACpD,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,aAAa,EAAE,UAAU,CAAC,mCAAmC,CAAC;IAC9D,gCAAgC;IAChC,aAAa,EAAE,UAAU,CAAC,iCAAiC,GAAG,SAAS,CAAC;IACxE,4FAA4F;IAC5F,QAAQ,EAAE,gCAAgC,CAAC;CAC5C,EACD,+BAA+B,EAC/B,SAAS,CACV;CAAG;AAEJ,eAAO,MAAM,wBAAwB,qEAEpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,WAAY;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,aAAa,MAAM,8DAI7F,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,EAAE,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,UACzE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2BAa7B,CAAC;AAiFJ,eAAO,MAAM,oCAAoC,kNAkJ7C,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,qCAAqC,yJAiC9C,CAAC;AAEL,eAAO,MAAM,gCAAgC,qQAIzC,CAAC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import * as Containers from "@distilled.cloud/cloudflare/containers";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Schedule from "effect/Schedule";
|
|
4
|
+
import { isResolved } from "../../Diff.js";
|
|
5
|
+
import * as ProviderLayer from "../../Local/ProviderLayer.js";
|
|
6
|
+
import * as Namespace from "../../Namespace.js";
|
|
7
|
+
import * as Provider from "../../Provider.js";
|
|
8
|
+
import { Resource } from "../../Resource.js";
|
|
9
|
+
import { normalizeNulls } from "../../Util/stable.js";
|
|
10
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
|
|
11
|
+
import { localAccountId } from "../LocalAccount.js";
|
|
12
|
+
import { generateLocalId, isLiveId } from "../LocalRuntime.js";
|
|
13
|
+
import { createContainerApplicationName } from "./ContainerBundle.js";
|
|
14
|
+
import { ContainerConfigurationError, durableObjectSettingsPatch, mergeApplicationSettings, } from "./ContainerConfiguration.js";
|
|
15
|
+
export const DurableObjectApplicationTypeId = "Cloudflare.Containers.DurableObjectApplication";
|
|
16
|
+
export const DurableObjectApplication = Resource(DurableObjectApplicationTypeId);
|
|
17
|
+
/**
|
|
18
|
+
* Declare the container application of `className`, hosted by `worker`. Every
|
|
19
|
+
* Container bound to the class calls this; the engine dedupes the declaration
|
|
20
|
+
* by its fully qualified id, so all of them share one resource.
|
|
21
|
+
*/
|
|
22
|
+
export const declareDurableObjectApplication = (worker, className) => Namespace.push(worker.LogicalId, DurableObjectApplication(`${className}-Containers`, { className }));
|
|
23
|
+
/**
|
|
24
|
+
* Right after a Worker upload creates a Durable Object namespace, the
|
|
25
|
+
* containers API can report the namespace missing for a few seconds before it
|
|
26
|
+
* sees it. Retry creates that attach to it, bounded at ~30s.
|
|
27
|
+
*/
|
|
28
|
+
export const retryNamespacePropagation = (effect) => effect.pipe(Effect.tapError((error) => error._tag === "DurableObjectNamespaceNotFound"
|
|
29
|
+
? Effect.logDebug("Cloudflare Container create: namespace not visible yet, retrying")
|
|
30
|
+
: Effect.void), Effect.retry({
|
|
31
|
+
while: (error) => error._tag === "DurableObjectNamespaceNotFound",
|
|
32
|
+
schedule: Schedule.spaced("2 seconds"),
|
|
33
|
+
times: 15,
|
|
34
|
+
}));
|
|
35
|
+
/** Whether an application id names a created, live application (not a placeholder). */
|
|
36
|
+
const isLiveApplication = (id) => !!id && isLiveId(id);
|
|
37
|
+
/** The one namespace every bound Container attaches the application to. */
|
|
38
|
+
const boundNamespace = (className, bindings) => {
|
|
39
|
+
// A stale Worker namespace map can resolve a binding without an id; it
|
|
40
|
+
// does not request removing the live attachment.
|
|
41
|
+
const ids = [
|
|
42
|
+
...new Set(bindings.flatMap((b) => b.data.durableObjects?.namespaceId ? [b.data.durableObjects.namespaceId] : [])),
|
|
43
|
+
];
|
|
44
|
+
if (ids.length > 1) {
|
|
45
|
+
return Effect.fail(new ContainerConfigurationError({
|
|
46
|
+
message: `The container application of Durable Object class '${className}' is bound to ${ids.length} namespaces (${ids.join(", ")}). A class has one namespace.`,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
return Effect.succeed(ids[0] === undefined ? undefined : { namespaceId: ids[0] });
|
|
50
|
+
};
|
|
51
|
+
const boundSettings = (className, bindings) => mergeApplicationSettings(className, bindings.flatMap((b) => (b.data.container ? [b.data.container] : [])));
|
|
52
|
+
/**
|
|
53
|
+
* Check the bound settings for conflicts at plan time. The namespace id in
|
|
54
|
+
* the same bindings resolves only after the Worker uploads, so check the
|
|
55
|
+
* settings contributions on their own once they are resolved.
|
|
56
|
+
*/
|
|
57
|
+
const planSettings = (className, newBindings) => {
|
|
58
|
+
const contributions = (Array.isArray(newBindings) ? newBindings : []).flatMap((binding) => binding?.data?.container ? [binding.data.container] : []);
|
|
59
|
+
return isResolved(contributions)
|
|
60
|
+
? Effect.asVoid(mergeApplicationSettings(className, contributions))
|
|
61
|
+
: Effect.void;
|
|
62
|
+
};
|
|
63
|
+
const placeholder = (identity) => ({
|
|
64
|
+
durableObjects: undefined,
|
|
65
|
+
configuration: {},
|
|
66
|
+
observability: undefined,
|
|
67
|
+
settings: {},
|
|
68
|
+
...identity,
|
|
69
|
+
});
|
|
70
|
+
const toAttributes = (application, className, settings) => ({
|
|
71
|
+
applicationId: application.id,
|
|
72
|
+
applicationName: application.name,
|
|
73
|
+
accountId: application.accountId,
|
|
74
|
+
className,
|
|
75
|
+
durableObjects: normalizeNulls(application.durableObjects),
|
|
76
|
+
createdAt: application.createdAt,
|
|
77
|
+
configuration: normalizeNulls(application.configuration),
|
|
78
|
+
observability: normalizeNulls(application.observability ?? undefined),
|
|
79
|
+
settings,
|
|
80
|
+
});
|
|
81
|
+
export const LiveDurableObjectApplicationProvider = () => Provider.succeed(DurableObjectApplication, {
|
|
82
|
+
stables: ["accountId", "className"],
|
|
83
|
+
diff: Effect.fn(function* ({ news, output, newBindings }) {
|
|
84
|
+
if (!isResolved(news))
|
|
85
|
+
return undefined;
|
|
86
|
+
// Conflicting settings fail the plan, before anything is published.
|
|
87
|
+
yield* planSettings(news.className, newBindings);
|
|
88
|
+
if (!isResolved(newBindings))
|
|
89
|
+
return undefined;
|
|
90
|
+
const namespace = yield* boundNamespace(news.className, newBindings);
|
|
91
|
+
const deployed = output?.durableObjects?.namespaceId;
|
|
92
|
+
if (deployed !== undefined && namespace !== undefined && deployed !== namespace.namespaceId) {
|
|
93
|
+
return yield* new ContainerConfigurationError({
|
|
94
|
+
message: `The container application of Durable Object class '${news.className}' cannot move to another Durable Object namespace.`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
98
|
+
if (output !== undefined &&
|
|
99
|
+
isLiveApplication(output.applicationId) &&
|
|
100
|
+
output.accountId !== accountId) {
|
|
101
|
+
return yield* new ContainerConfigurationError({
|
|
102
|
+
message: `The container application of Durable Object class '${news.className}' cannot move to another account in place.`,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Precreate only reserves a name; reconcile creates the application
|
|
106
|
+
// once the Worker has created its namespace.
|
|
107
|
+
if (!isLiveApplication(output?.applicationId)) {
|
|
108
|
+
return { action: "update", stables: ["accountId", "className"] };
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}),
|
|
112
|
+
precreate: Effect.fn(function* ({ id, news, bindings }) {
|
|
113
|
+
// A new application is never diffed; fail conflicting settings here,
|
|
114
|
+
// before the Worker is uploaded.
|
|
115
|
+
yield* planSettings(news.className, bindings);
|
|
116
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
117
|
+
// The application needs the Worker's namespace id, which does not exist
|
|
118
|
+
// yet. Reserve the name so the Worker's upload can reference it.
|
|
119
|
+
return placeholder({
|
|
120
|
+
applicationId: "",
|
|
121
|
+
applicationName: yield* createContainerApplicationName(id, undefined),
|
|
122
|
+
accountId,
|
|
123
|
+
className: news.className,
|
|
124
|
+
createdAt: "",
|
|
125
|
+
});
|
|
126
|
+
}),
|
|
127
|
+
reconcile: Effect.fn(function* ({ id, news, bindings, output, session }) {
|
|
128
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
129
|
+
const className = news.className;
|
|
130
|
+
// Prefer the deployed name: regenerating would target a different
|
|
131
|
+
// application if the generator's output for this id ever drifts.
|
|
132
|
+
const name = output?.applicationName || (yield* createContainerApplicationName(id, undefined));
|
|
133
|
+
const durableObjects = (yield* boundNamespace(className, bindings)) ??
|
|
134
|
+
(output?.durableObjects?.namespaceId ? output.durableObjects : undefined);
|
|
135
|
+
if (!durableObjects) {
|
|
136
|
+
return yield* new ContainerConfigurationError({
|
|
137
|
+
message: `The container application of Durable Object class '${className}' requires a resolved Durable Object namespace. Reconcile its Worker first.`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const settings = yield* boundSettings(className, bindings);
|
|
141
|
+
// The application's id is the id of the namespace it serves.
|
|
142
|
+
const applicationId = durableObjects.namespaceId;
|
|
143
|
+
const getApplication = Containers.getContainerApplication({ accountId, applicationId });
|
|
144
|
+
const assertServesNamespace = (application) => application.schedulingPolicy === "durable_object" &&
|
|
145
|
+
application.durableObjects?.namespaceId === applicationId
|
|
146
|
+
? Effect.void
|
|
147
|
+
: Effect.fail(new ContainerConfigurationError({
|
|
148
|
+
message: `The container application '${application.name}' of Durable Object namespace '${applicationId}' is not Durable Object-managed. Declare a new Durable Object class for Durable Object-managed Containers.`,
|
|
149
|
+
}));
|
|
150
|
+
// 1. Observe. The namespace belongs to this stack's Worker, so an
|
|
151
|
+
// application already attached to it is this class's application.
|
|
152
|
+
let application = yield* getApplication.pipe(Effect.catchTag("ContainerApplicationNotFound", () => Effect.succeed(undefined)));
|
|
153
|
+
// 2. Ensure
|
|
154
|
+
if (!application) {
|
|
155
|
+
yield* session.note(`Creating container application ${name}...`);
|
|
156
|
+
application = yield* retryNamespacePropagation(Containers.createDurableObjectContainerApplication({
|
|
157
|
+
accountId,
|
|
158
|
+
name,
|
|
159
|
+
schedulingPolicy: "durable_object",
|
|
160
|
+
durableObjects,
|
|
161
|
+
configuration: {
|
|
162
|
+
...(settings.ssh !== undefined ? { wranglerSsh: settings.ssh } : {}),
|
|
163
|
+
...(settings.authorizedKeys !== undefined
|
|
164
|
+
? { authorizedKeys: settings.authorizedKeys }
|
|
165
|
+
: {}),
|
|
166
|
+
},
|
|
167
|
+
observability: settings.observability,
|
|
168
|
+
})).pipe(Effect.catchTag("DurableObjectAlreadyHasApplication", () => getApplication));
|
|
169
|
+
}
|
|
170
|
+
yield* assertServesNamespace(application);
|
|
171
|
+
// 3. Sync declared settings and reset settings no Container declares anymore.
|
|
172
|
+
const patch = durableObjectSettingsPatch(settings, output?.settings, application);
|
|
173
|
+
if (patch.configuration !== undefined || patch.observability !== undefined) {
|
|
174
|
+
application = yield* Containers.updateContainerApplication({
|
|
175
|
+
accountId,
|
|
176
|
+
applicationId,
|
|
177
|
+
...patch,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return toAttributes(application, className, settings);
|
|
181
|
+
}),
|
|
182
|
+
delete: Effect.fn(function* ({ output }) {
|
|
183
|
+
if (!isLiveApplication(output.applicationId))
|
|
184
|
+
return;
|
|
185
|
+
yield* Containers.deleteContainerApplication({
|
|
186
|
+
accountId: output.accountId,
|
|
187
|
+
applicationId: output.applicationId,
|
|
188
|
+
}).pipe(Effect.catchTag("ContainerApplicationNotFound", () => Effect.void));
|
|
189
|
+
}),
|
|
190
|
+
read: Effect.fn(function* ({ id, olds, output }) {
|
|
191
|
+
const { accountId } = yield* yield* CloudflareEnvironment;
|
|
192
|
+
const className = olds?.className ?? output?.className ?? "";
|
|
193
|
+
if (output !== undefined && isLiveApplication(output.applicationId)) {
|
|
194
|
+
return yield* Containers.getContainerApplication({
|
|
195
|
+
accountId: output.accountId,
|
|
196
|
+
applicationId: output.applicationId,
|
|
197
|
+
}).pipe(Effect.map((application) => toAttributes(application, className, output.settings)), Effect.catchTag("ContainerApplicationNotFound", () => Effect.succeed(undefined)));
|
|
198
|
+
}
|
|
199
|
+
// Generated names identify this instance, so a match is ours.
|
|
200
|
+
const name = output?.applicationName || (yield* createContainerApplicationName(id, undefined));
|
|
201
|
+
const found = yield* Containers.listContainerApplications({ accountId }).pipe(Effect.map((apps) => apps.find((app) => app.name === name && app.schedulingPolicy === "durable_object")));
|
|
202
|
+
return found === undefined
|
|
203
|
+
? undefined
|
|
204
|
+
: toAttributes(found, className, output?.settings ?? {});
|
|
205
|
+
}),
|
|
206
|
+
});
|
|
207
|
+
/**
|
|
208
|
+
* Local (dev) provider: `alchemy dev` runs every image through workerd and
|
|
209
|
+
* Docker, so the application is a placeholder carrying a `dev:` id.
|
|
210
|
+
*/
|
|
211
|
+
export const LocalDurableObjectApplicationProvider = () => Provider.succeed(DurableObjectApplication, {
|
|
212
|
+
stables: ["accountId", "className"],
|
|
213
|
+
diff: Effect.fn(function* ({ news, newBindings }) {
|
|
214
|
+
if (!isResolved(news))
|
|
215
|
+
return undefined;
|
|
216
|
+
yield* planSettings(news.className, newBindings);
|
|
217
|
+
return undefined;
|
|
218
|
+
}),
|
|
219
|
+
precreate: Effect.fn(function* ({ id, news, bindings }) {
|
|
220
|
+
yield* planSettings(news.className, bindings);
|
|
221
|
+
return placeholder({
|
|
222
|
+
applicationId: generateLocalId(),
|
|
223
|
+
applicationName: yield* createContainerApplicationName(id, undefined),
|
|
224
|
+
accountId: yield* localAccountId,
|
|
225
|
+
className: news.className,
|
|
226
|
+
createdAt: new Date().toISOString(),
|
|
227
|
+
});
|
|
228
|
+
}),
|
|
229
|
+
reconcile: Effect.fn(function* ({ id, news, bindings, output }) {
|
|
230
|
+
return placeholder({
|
|
231
|
+
applicationId: output?.applicationId || generateLocalId(),
|
|
232
|
+
applicationName: yield* createContainerApplicationName(id, undefined),
|
|
233
|
+
accountId: yield* localAccountId,
|
|
234
|
+
className: news.className,
|
|
235
|
+
createdAt: output?.createdAt || new Date().toISOString(),
|
|
236
|
+
durableObjects: yield* boundNamespace(news.className, bindings),
|
|
237
|
+
settings: yield* boundSettings(news.className, bindings),
|
|
238
|
+
});
|
|
239
|
+
}),
|
|
240
|
+
delete: () => Effect.void,
|
|
241
|
+
read: Effect.fn(function* ({ output }) {
|
|
242
|
+
return output;
|
|
243
|
+
}),
|
|
244
|
+
});
|
|
245
|
+
export const DurableObjectApplicationProvider = () => ProviderLayer.dual(DurableObjectApplication, {
|
|
246
|
+
live: () => LiveDurableObjectApplicationProvider(),
|
|
247
|
+
local: () => LocalDurableObjectApplicationProvider(),
|
|
248
|
+
});
|
|
249
|
+
//# sourceMappingURL=DurableObjectApplication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DurableObjectApplication.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/DurableObjectApplication.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalContainerProvider.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/LocalContainerProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAUhD,OAAO,KAAK,EAEV,oBAAoB,
|
|
1
|
+
{"version":3,"file":"LocalContainerProvider.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/LocalContainerProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAUhD,OAAO,KAAK,EAEV,oBAAoB,EAErB,MAAM,2BAA2B,CAAC;AAgBnC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,4UA2QhC,CAAC"}
|
|
@@ -4,7 +4,7 @@ import * as Path from "effect/Path";
|
|
|
4
4
|
import * as Redacted from "effect/Redacted";
|
|
5
5
|
import * as Artifacts from "../../Artifacts.js";
|
|
6
6
|
import { hashDirectory } from "../../Command/Memo.js";
|
|
7
|
-
import {
|
|
7
|
+
import { isResolved } from "../../Diff.js";
|
|
8
8
|
import { isInlineDockerfile } from "../../Docker/Dockerfile.js";
|
|
9
9
|
import * as RpcProvider from "../../Local/RpcProvider.js";
|
|
10
10
|
import { sha256Object } from "../../Util/sha256.js";
|
|
@@ -12,7 +12,7 @@ import { normalizeNulls } from "../../Util/stable.js";
|
|
|
12
12
|
import { localAccountId } from "../LocalAccount.js";
|
|
13
13
|
import { generateLocalId, LOCAL_PROVIDERS_URL } from "../LocalRuntime.js";
|
|
14
14
|
import { createContainerApplicationName, makeContainerEnv, materializeInlineDockerfileContext, prepareContainerBuildContext, validateContainerImageProps, } from "./ContainerBundle.js";
|
|
15
|
-
import {
|
|
15
|
+
import { durableObjectPlaceholder, hasImageSource, isDurableObjectContainer, validateContainerConfiguration, } from "./ContainerConfiguration.js";
|
|
16
16
|
import { ContainerPlatform } from "./ContainerPlatform.js";
|
|
17
17
|
/**
|
|
18
18
|
* Local (dev) provider for Cloudflare Container applications.
|
|
@@ -119,7 +119,6 @@ export const LocalContainerProvider = () => RpcProvider.effect(ContainerPlatform
|
|
|
119
119
|
const news = input;
|
|
120
120
|
const picked = {
|
|
121
121
|
schedulingPolicy: news.schedulingPolicy,
|
|
122
|
-
images: news.images,
|
|
123
122
|
main: news.main,
|
|
124
123
|
image: news.image,
|
|
125
124
|
dockerfile: news.dockerfile,
|
|
@@ -142,23 +141,6 @@ export const LocalContainerProvider = () => RpcProvider.effect(ContainerPlatform
|
|
|
142
141
|
}
|
|
143
142
|
return picked;
|
|
144
143
|
};
|
|
145
|
-
/**
|
|
146
|
-
* Prepare every named image of a Durable Object-managed container.
|
|
147
|
-
* Each image is cached under its own `${id}-${name}` artifact key.
|
|
148
|
-
*/
|
|
149
|
-
const prepareNamedImages = Effect.fn(function* (id, props) {
|
|
150
|
-
const devImages = {};
|
|
151
|
-
const hashes = {};
|
|
152
|
-
for (const [name, source] of Object.entries(props.images ?? {})) {
|
|
153
|
-
const image = yield* prepareImage(`${id}-${name}`, source);
|
|
154
|
-
devImages[name] = image.dev;
|
|
155
|
-
hashes[name] = image.hash;
|
|
156
|
-
}
|
|
157
|
-
return {
|
|
158
|
-
devImages,
|
|
159
|
-
hash: yield* namedImageHash(hashes),
|
|
160
|
-
};
|
|
161
|
-
});
|
|
162
144
|
const placeholderConfiguration = (props, env) => normalizeNulls({
|
|
163
145
|
image: "local",
|
|
164
146
|
instanceType: props.instanceType,
|
|
@@ -185,19 +167,23 @@ export const LocalContainerProvider = () => RpcProvider.effect(ContainerPlatform
|
|
|
185
167
|
yield* validateContainerConfiguration(news, output?.schedulingPolicy);
|
|
186
168
|
const accountId = yield* localAccountId;
|
|
187
169
|
if (isDurableObjectContainer(news)) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
170
|
+
const attributes = durableObjectPlaceholder({
|
|
171
|
+
applicationId: output?.applicationId ?? generateLocalId(),
|
|
172
|
+
applicationName: yield* createContainerApplicationName(id, undefined),
|
|
173
|
+
accountId,
|
|
174
|
+
createdAt: output?.createdAt ?? new Date().toISOString(),
|
|
175
|
+
observability: news.observability,
|
|
176
|
+
});
|
|
177
|
+
if (!hasImageSource(news))
|
|
178
|
+
return attributes;
|
|
179
|
+
const { dev, hash } = yield* prepareImage(id, news);
|
|
191
180
|
return {
|
|
192
|
-
...
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}),
|
|
199
|
-
images: Object.fromEntries(imageNames.map((name) => [name, name])),
|
|
200
|
-
...(yield* prepareNamedImages(id, news)),
|
|
181
|
+
...attributes,
|
|
182
|
+
// workerd resolves each image by its key in the class's image
|
|
183
|
+
// map, so locally the image reference is the Container's id.
|
|
184
|
+
image: id,
|
|
185
|
+
dev,
|
|
186
|
+
hash: { image: hash },
|
|
201
187
|
};
|
|
202
188
|
}
|
|
203
189
|
const env = makeContainerEnv(news, accountId, bindings);
|
|
@@ -237,15 +223,8 @@ export const LocalContainerProvider = () => RpcProvider.effect(ContainerPlatform
|
|
|
237
223
|
// disabled this check for every effectful container.
|
|
238
224
|
const imageInputs = resolvedImageInputs(news);
|
|
239
225
|
if (imageInputs !== undefined) {
|
|
240
|
-
if (isDurableObjectContainer(imageInputs)) {
|
|
241
|
-
|
|
242
|
-
for (const name of Object.keys(imageInputs.images ?? {})) {
|
|
243
|
-
yield* artifacts.delete(`container-image:${id}-${name}`);
|
|
244
|
-
}
|
|
245
|
-
const prepared = yield* prepareNamedImages(id, imageInputs);
|
|
246
|
-
const changed = output.devImages === undefined ||
|
|
247
|
-
!deepEqual(prepared.hash.images, output.hash?.images);
|
|
248
|
-
return changed ? { action: "update" } : undefined;
|
|
226
|
+
if (isDurableObjectContainer(imageInputs) && !hasImageSource(imageInputs)) {
|
|
227
|
+
return output.image !== undefined ? { action: "update" } : undefined;
|
|
249
228
|
}
|
|
250
229
|
// Recompute fresh on every plan. `prepareImage` is memoized so
|
|
251
230
|
// a plan's diff→precreate→reconcile chain bundles once — but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalContainerProvider.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/LocalContainerProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LocalContainerProvider.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/LocalContainerProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ export * from "./Container.ts";
|
|
|
2
2
|
export * from "./ContainerApplication.ts";
|
|
3
3
|
export * from "./ContainerBundle.ts";
|
|
4
4
|
export type { ContainerClient, ContainerExecOptions, ContainerExecOutput, ContainerInfo, ContainerPort, ContainerPortError, ContainerProcess, ContainerSnapshot, ContainerSnapshotOptions, ContainerStartError, ReservedContainerKey, } from "./ContainerClient.ts";
|
|
5
|
-
export { ContainerConfigurationError, ContainerImagePreparationError, } from "./ContainerConfiguration.ts";
|
|
5
|
+
export { ContainerApplicationSettingsConflict, ContainerConfigurationError, ContainerImagePreparationError, DurableObjectContainerBindingError, DurableObjectContainerConflict, DurableObjectContainersOnEffectNativeClass, } from "./ContainerConfiguration.ts";
|
|
6
6
|
export { ContainerPlatform } from "./ContainerPlatform.ts";
|
|
7
7
|
export * from "./ContainerProvider.ts";
|
|
8
|
+
export { DurableObjectApplication, DurableObjectApplicationProvider, type DurableObjectApplicationBinding, type DurableObjectApplicationProps, } from "./DurableObjectApplication.ts";
|
|
8
9
|
export * from "./LocalContainerProvider.ts";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oCAAoC,EACpC,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,8BAA8B,EAC9B,0CAA0C,GAC3C,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,GACnC,MAAM,+BAA+B,CAAC;AACvC,cAAc,6BAA6B,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from "./Container.js";
|
|
2
2
|
export * from "./ContainerApplication.js";
|
|
3
3
|
export * from "./ContainerBundle.js";
|
|
4
|
-
export { ContainerConfigurationError, ContainerImagePreparationError, } from "./ContainerConfiguration.js";
|
|
4
|
+
export { ContainerApplicationSettingsConflict, ContainerConfigurationError, ContainerImagePreparationError, DurableObjectContainerBindingError, DurableObjectContainerConflict, DurableObjectContainersOnEffectNativeClass, } from "./ContainerConfiguration.js";
|
|
5
5
|
export { ContainerPlatform } from "./ContainerPlatform.js";
|
|
6
6
|
export * from "./ContainerProvider.js";
|
|
7
|
+
export { DurableObjectApplication, DurableObjectApplicationProvider, } from "./DurableObjectApplication.js";
|
|
7
8
|
export * from "./LocalContainerProvider.js";
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AAcrC,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AAcrC,OAAO,EACL,oCAAoC,EACpC,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,8BAA8B,EAC9B,0CAA0C,GAC3C,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,wBAAwB,EACxB,gCAAgC,GAGjC,MAAM,+BAA+B,CAAC;AACvC,cAAc,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAgCtC,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAGpE,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAkCpD,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAmDxD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;;AAEtE,qBAAa,SAAU,SAAQ,cAAsD;CAAG;AAExF,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAgCtC,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAGpE,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAkCpD,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAmDxD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;;AAEtE,qBAAa,SAAU,SAAQ,cAAsD;CAAG;AAExF,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,SAAS,8kCA4hBnB,CAAC;AAEJ;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,iBAAiB,scAO3B,CAAC"}
|
|
@@ -189,6 +189,7 @@ export const providers = () => Layer.effect(Providers, Provider.collection([
|
|
|
189
189
|
Configuration.Configuration,
|
|
190
190
|
Connectivity.DirectoryService,
|
|
191
191
|
Containers.ContainerPlatform,
|
|
192
|
+
Containers.DurableObjectApplication,
|
|
192
193
|
ContentScanning.ContentScanning,
|
|
193
194
|
ContentScanning.Expression,
|
|
194
195
|
CustomCertificates.CustomCertificate,
|
|
@@ -383,7 +384,7 @@ export const providers = () => Layer.effect(Providers, Provider.collection([
|
|
|
383
384
|
Zone.Hold,
|
|
384
385
|
Zone.Setting,
|
|
385
386
|
Zone.Zone,
|
|
386
|
-
])).pipe(Layer.provide(Layer.mergeAll(AccessApp.ApplicationProvider(), AccessCert.CertificateProvider(), AccessIdp.IdentityProviderProvider(), AccessInfraTarget.InfrastructureTargetProvider(), AccessKeyConfig.KeyConfigurationProvider(), AccessOrg.OrganizationProvider(), AccessPol.PolicyProvider(), AccessSvcToken.ServiceTokenProvider(), Account.AccountProvider(), Account.MemberProvider(), Acm.CustomTrustStoreProvider(), Acm.TotalTlsProvider(), Addressing.AddressMapProvider(), Addressing.BgpPrefixProvider(), Addressing.PrefixDelegationProvider(), Addressing.PrefixProvider(), Addressing.ServiceBindingProvider(), AI.CustomTopicsProvider(), AI.DatasetProvider(), AI.ModelProvider(), AI.DynamicRoutingProvider(), AI.EvaluationProvider(), AI.GatewayProviderProvider(), AI.GatewayResourceProvider(), AI.SearchInstanceProvider(), AI.SearchNamespaceProvider(), AI.SearchTokenProvider(), AI.SecuritySettingsProvider(), Alerting.NotificationPolicyProvider(), Alerting.NotificationWebhookProvider(), Alerting.SilenceProvider(), ApiShield.ConfigurationProvider(), ApiShield.LabelProvider(), ApiShield.OperationProvider(), ApiShield.UserSchemaProvider(), ApiToken.AccountApiTokenProvider(), ApiToken.UserApiTokenProvider(), Argo.SmartRoutingProvider(), Argo.TieredCachingProvider(), Bookmark.BookmarkProvider(), BotManagement.BotManagementProvider(), Cache.OriginCloudRegionProvider(), Cache.RegionalTieredCacheProvider(), Cache.ReserveProvider(), Cache.SmartTieredCacheProvider(), Cache.VariantsProvider(), Calls.AppProvider(), Calls.TurnKeyProvider(), Certificate.CertificateProvider(), CertificateAuthorities.HostnameAssociationProvider(), ClientCertificate.ClientCertificateProvider(), CloudConnector.RulesProvider(), CloudforceOne.ScanConfigProvider(), Configuration.ConfigurationProvider(), Connectivity.DirectoryServiceProvider(), Containers.ContainerProvider(), ContentScanning.ContentScanningProvider(), ContentScanning.ExpressionProvider(), CustomCertificates.CustomCertificateProvider(), CustomHostnames.CustomHostnameProvider(), CustomHostnames.FallbackOriginProvider(), CustomNameservers.CustomNameserverProvider(), CustomPage.CustomPageProvider(), D1.DatabaseProvider(), DdosProtection.DdosAllowlistEntryProvider(), DdosProtection.SynProtectionFilterProvider(), DdosProtection.SynProtectionRuleProvider(), DdosProtection.TcpFlowProtectionFilterProvider(), DdosProtection.TcpFlowProtectionRuleProvider(), Devices.DeviceCustomProfileProvider(), Devices.DeviceDefaultProfileProvider(), Devices.DeviceDexTestProvider(), Devices.DeviceManagedNetworkProvider(), Devices.DevicePostureIntegrationProvider(), Devices.DevicePostureRuleProvider(), Devices.DeviceSettingsProvider(),
|
|
387
|
+
])).pipe(Layer.provide(Layer.mergeAll(AccessApp.ApplicationProvider(), AccessCert.CertificateProvider(), AccessIdp.IdentityProviderProvider(), AccessInfraTarget.InfrastructureTargetProvider(), AccessKeyConfig.KeyConfigurationProvider(), AccessOrg.OrganizationProvider(), AccessPol.PolicyProvider(), AccessSvcToken.ServiceTokenProvider(), Account.AccountProvider(), Account.MemberProvider(), Acm.CustomTrustStoreProvider(), Acm.TotalTlsProvider(), Addressing.AddressMapProvider(), Addressing.BgpPrefixProvider(), Addressing.PrefixDelegationProvider(), Addressing.PrefixProvider(), Addressing.ServiceBindingProvider(), AI.CustomTopicsProvider(), AI.DatasetProvider(), AI.ModelProvider(), AI.DynamicRoutingProvider(), AI.EvaluationProvider(), AI.GatewayProviderProvider(), AI.GatewayResourceProvider(), AI.SearchInstanceProvider(), AI.SearchNamespaceProvider(), AI.SearchTokenProvider(), AI.SecuritySettingsProvider(), Alerting.NotificationPolicyProvider(), Alerting.NotificationWebhookProvider(), Alerting.SilenceProvider(), ApiShield.ConfigurationProvider(), ApiShield.LabelProvider(), ApiShield.OperationProvider(), ApiShield.UserSchemaProvider(), ApiToken.AccountApiTokenProvider(), ApiToken.UserApiTokenProvider(), Argo.SmartRoutingProvider(), Argo.TieredCachingProvider(), Bookmark.BookmarkProvider(), BotManagement.BotManagementProvider(), Cache.OriginCloudRegionProvider(), Cache.RegionalTieredCacheProvider(), Cache.ReserveProvider(), Cache.SmartTieredCacheProvider(), Cache.VariantsProvider(), Calls.AppProvider(), Calls.TurnKeyProvider(), Certificate.CertificateProvider(), CertificateAuthorities.HostnameAssociationProvider(), ClientCertificate.ClientCertificateProvider(), CloudConnector.RulesProvider(), CloudforceOne.ScanConfigProvider(), Configuration.ConfigurationProvider(), Connectivity.DirectoryServiceProvider(), Containers.ContainerProvider(), Containers.DurableObjectApplicationProvider(), ContentScanning.ContentScanningProvider(), ContentScanning.ExpressionProvider(), CustomCertificates.CustomCertificateProvider(), CustomHostnames.CustomHostnameProvider(), CustomHostnames.FallbackOriginProvider(), CustomNameservers.CustomNameserverProvider(), CustomPage.CustomPageProvider(), D1.DatabaseProvider(), DdosProtection.DdosAllowlistEntryProvider(), DdosProtection.SynProtectionFilterProvider(), DdosProtection.SynProtectionRuleProvider(), DdosProtection.TcpFlowProtectionFilterProvider(), DdosProtection.TcpFlowProtectionRuleProvider(), Devices.DeviceCustomProfileProvider(), Devices.DeviceDefaultProfileProvider(), Devices.DeviceDexTestProvider(), Devices.DeviceManagedNetworkProvider(), Devices.DevicePostureIntegrationProvider(), Devices.DevicePostureRuleProvider(), Devices.DeviceSettingsProvider(),
|
|
387
388
|
// Split into nested groups: a single flat mergeAll with ~200
|
|
388
389
|
// arguments exceeds tsc's variadic inference ceiling and
|
|
389
390
|
// silently drops the tail layers from the inferred union.
|