@sanoma-ai/connector-cloudflare 0.3.1 → 0.4.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/README.md +24 -17
- package/dist/connector.d.ts +4 -1
- package/dist/connector.js +31 -4
- package/dist/connector.js.map +1 -1
- package/dist/ops.d.ts +3 -0
- package/dist/ops.js +111 -38
- package/dist/ops.js.map +1 -1
- package/dist/resources.d.ts +4 -1
- package/package.json +3 -3
- package/worker/instance.js +12 -3
package/README.md
CHANGED
|
@@ -29,6 +29,7 @@ export const host = cloudflare.container({
|
|
|
29
29
|
source: repo, // a declared github.repository, or a clone URL
|
|
30
30
|
ref: "main",
|
|
31
31
|
port: 3000,
|
|
32
|
+
hostname: "app.acme.example", // optional: the app at its own domain, instead of workers.dev
|
|
32
33
|
secrets: {
|
|
33
34
|
SANOMA_DATABASE_URL: secret("DATABASE_URL"),
|
|
34
35
|
SANOMA_SECRETS_KEY: secret("SECRETS_KEY"),
|
|
@@ -38,18 +39,22 @@ export const host = cloudflare.container({
|
|
|
38
39
|
export const wakeup = cloudflare.alarm({ host });
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
| Field
|
|
42
|
-
|
|
|
43
|
-
| `name`
|
|
44
|
-
| `image`
|
|
45
|
-
| `source`
|
|
46
|
-
| `ref`
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
42
|
+
| Field | What it is |
|
|
43
|
+
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
44
|
+
| `name` | The company's name, its identity: lowercase letters, digits and dashes, up to 56; the Worker and its application are `sanoma-<name>` |
|
|
45
|
+
| `image` | The Sanoma runtime image, pinned to a tag or digest, never `latest`: any registry's, which apply copies into the account's and pins by digest ([The image](#the-image)) |
|
|
46
|
+
| `source` | The company repository: a clone URL, or a declared `github.repository` |
|
|
47
|
+
| `ref` | The branch it runs, never a commit: apply resolves it and sets the hidden `revision`, so a merge is drift on the container |
|
|
48
|
+
| `configurationRevision` | Optional non-secret configuration version: 1–63 ASCII letters, digits, `.`, `_` or `-`; advance it to restart with rotated bootstrap or environment values at the same source revision and image |
|
|
49
|
+
| `port` | The port the runtime listens on in the container (its `PORT`) |
|
|
50
|
+
| `secrets` | Environment variables, each a `secret(...)`: the Worker's secret bindings, write-only, never in an output, the ledger or a checkpoint |
|
|
51
|
+
| `domains` | Optional: a public site's domain, by site name, passed as `SANOMA_DOMAINS` and attached to the Worker by apply as a custom domain ([Custom domains](#custom-domains)) |
|
|
52
|
+
| `hostname` | Optional: the hostname the app is served at (`internal.acme.example`), attached like a site's domain; the host's `url` is then `https://<hostname>` |
|
|
53
|
+
| `id`, `url`, `worker_url`, `healthy` | Cloudflare's: the application's id, where the app answers (`https://<hostname>` once attached, else the Worker's workers.dev URL), the workers.dev URL, and whether it answers |
|
|
51
54
|
|
|
52
|
-
The host's outputs are `{ url, revision, healthy }
|
|
55
|
+
The host's outputs are `{ url, wakeUrl, revision, healthy }` (`wakeUrl` its `worker_url`). Its capabilities: stops when quiet, a public URL, it runs an image rather than building one, no fixed egress. `healthy` is the application existing and the Worker answering `/__sanoma/health`, which does not start a stopped container: a stopped host is healthy, and a read or a drift check leaves it stopped.
|
|
56
|
+
|
|
57
|
+
`configurationRevision` participates in plans and reads. Change it when delivering new secret values without changing the source or image; for example, a managed lifecycle can derive it from its deployment and credential generation (`d1-g2`). The connector sends it as the reserved plain-text binding `SANOMA_CONFIG_REVISION`, and startup waits for that configuration revision as well as the source revision. It must contain no secret value. Secret values remain write-only: changing a stored value alone with the same configuration revision is not detected by a plan.
|
|
53
58
|
|
|
54
59
|
The alarm's field is `host`, the container it wakes (its URL); its state is `{ host, at, rang, healthy }`, the wake it holds, when its alarm last rang the host's `/wake` for it, and whether the host's Worker took the company's token. Its optional `token`, a `secret("NAME")`, names the secret that holds the host's wakeup token, by default `SANOMA_WAKEUP_TOKEN`: a workflow that makes a host and its alarm for each of several companies, outside any data file, gives each its own (`token: secret("CLOUD_ACME_WAKEUP_TOKEN")`, the secret the host's `secrets` give as `SANOMA_WAKEUP_TOKEN`). `create` mints the token there when none is stored, and its state then carries the name as `token`, so a `read`, `update` or `delete` given that state sends the same token; one given only an id uses the default. A data file leaves `token` out: apply reads and deletes an alarm by its id alone, so `plan` refuses another name. `register` takes `{ at }`, an ISO 8601 time, which replaces the wake the Worker held: a wake is "resume if stopped", so one that rings late, twice or for a replaced registration starts a worker that finds nothing to do and stops again. It names no host: on the host, the worker reads the host's URL from `SANOMA_HOST_URL`, which the Worker gives the container; off it, from the credential `alarm.create` stored. A runtime whose data files declare no wakeup, but whose environment has both `SANOMA_HOST_URL` and `SANOMA_WAKEUP_TOKEN` (a host Sanoma Cloud made), registers at the same route itself, with no connector call (`envWakeup` in `@sanoma-ai/workflows`).
|
|
55
60
|
|
|
@@ -59,13 +64,13 @@ The logo is Cloudflare's cloud from [Simple Icons](https://simpleicons.org/?q=cl
|
|
|
59
64
|
|
|
60
65
|
The package ships the Worker it uploads, `worker/`: `index.js`, which exports the Durable Object class `SanomaInstance` over `DurableObject` from `cloudflare:workers`, and `instance.js`, the object's code with no imports (typed by `instance.d.ts`), which the fake runs in Node so both kits check the code Cloudflare runs. Every request to the Worker goes to its one object, which:
|
|
61
66
|
|
|
62
|
-
- starts the container on a request at the Worker's
|
|
67
|
+
- starts the container on a request at the Worker's source revision, configuration revision and uploaded image (`ctx.container.images.runtime`: the copy, pinned by digest), as a `standard-1` instance (½ vCPU, 4 GiB: the policy refuses `basic`), with the Worker's text bindings (plain and secret) as its environment. Container labels hold the two non-secret revisions and an image hash; a running container with different labels is destroyed and started again. Secret values never enter these labels;
|
|
63
68
|
- waits for the container's `/healthz` (up to ten minutes, the clone and install included), sets its inactivity timeout to ten minutes, and proxies the request to its `port` with the Host it was asked for and `x-forwarded-proto` (the port's fetch reaches the container whatever the URL's host, which becomes the request's Host header: so the company serves the public site declared on a domain);
|
|
64
|
-
- answers `GET /__sanoma/health` with
|
|
69
|
+
- answers `GET /__sanoma/health` with the source revision, configuration revision when set, and running/readiness state without starting the container. With `?start=1`, it waits until the container answers; a create or update checks both revisions before completing;
|
|
65
70
|
- holds the company's one wake at `/__sanoma/wake`, with `Authorization: Bearer <SANOMA_WAKEUP_TOKEN>`: `GET` shows `{ at, rang? }`, `PUT { at }` replaces it and sets the object's alarm, `DELETE` clears it. Without the token among the host's secrets it answers 404, with another one 401;
|
|
66
71
|
- at the alarm, starts the container and calls its `/wake`, then notes when (`rang`); a failure throws, so Cloudflare rings the alarm again.
|
|
67
72
|
|
|
68
|
-
Cloudflare stops the container after ten quiet minutes; the object, its storage and its alarm stay, and the next request or alarm starts the container again. The application is of the `durable_object` scheduling policy (public beta, the one Cloudflare documents for new applications; it refused `default` on the account the connector was first run on): the object starts its container, with the image and the instance type it names, so the application is only a name and the object's namespace, and has no image, versions or rollouts. A create, in Wrangler's order, copies and pins the image and waits until Cloudflare prepared it ([The image](#the-image)), uploads the Worker with the object's migration (`new_sqlite_classes`) and its class as a container's with that image (`containers: [{ name, class_name, images: { runtime } }]`, as Wrangler sends it), turns its workers.dev URL on, makes the application for the object's namespace (`{ name, scheduling_policy: "durable_object", durable_objects: { namespace_id } }`, the `namespace_id` the Worker's settings then show), and uploads the Worker once more: the object learns which application backs its namespace only from a deployment made after the application exists, and without that upload every start answers "There is no container application assigned to this Durable Object namespace", for good (found on the first real deploy, 2026-10-29); an update does the same, except that it leaves the application as it is: a new image is a new upload naming it, and the object destroys a container started at another and starts it again at the next request. Either waits for the Worker to answer at the
|
|
73
|
+
Cloudflare stops the container after ten quiet minutes; the object, its storage and its alarm stay, and the next request or alarm starts the container again. The application is of the `durable_object` scheduling policy (public beta, the one Cloudflare documents for new applications; it refused `default` on the account the connector was first run on): the object starts its container, with the image and the instance type it names, so the application is only a name and the object's namespace, and has no image, versions or rollouts. A create, in Wrangler's order, copies and pins the image and waits until Cloudflare prepared it ([The image](#the-image)), uploads the Worker with the object's migration (`new_sqlite_classes`) and its class as a container's with that image (`containers: [{ name, class_name, images: { runtime } }]`, as Wrangler sends it), turns its workers.dev URL on, makes the application for the object's namespace (`{ name, scheduling_policy: "durable_object", durable_objects: { namespace_id } }`, the `namespace_id` the Worker's settings then show), and uploads the Worker once more: the object learns which application backs its namespace only from a deployment made after the application exists, and without that upload every start answers "There is no container application assigned to this Durable Object namespace", for good (found on the first real deploy, 2026-10-29); an update does the same, except that it leaves the application as it is: a new image is a new upload naming it, and the object destroys a container started at another and starts it again at the next request. Either waits for the Worker to answer at the requested source and configuration revisions. The policy is fixed once an application is made, and the object cannot start a container under another: one of the `default` policy under that name (none can be made any more) is deleted by hand before the apply. A plan compares secret binding names, never values: the Worker's settings never show them. Advance `configurationRevision` to upload rotated values and restart a running container with them; a value change alone does not trigger an update. A delete detaches the custom domains the Worker was declared to serve (its `hostname` too), deletes the application, then the Worker with its object's storage. A Worker of that name that is not Sanoma's (no `SANOMA_INSTANCE` binding) reads as gone, and a create or a delete refuses to touch it.
|
|
69
74
|
|
|
70
75
|
## The image
|
|
71
76
|
|
|
@@ -84,7 +89,9 @@ To stop scaling to zero, delete the `wakeup` line and `SANOMA_WAKEUP_TOKEN` from
|
|
|
84
89
|
|
|
85
90
|
## Custom domains
|
|
86
91
|
|
|
87
|
-
Each hostname in `domains` is attached to the Worker as a [Workers custom domain](https://developers.cloudflare.com/workers/configuration/routing/custom-domains/) by a create or an update: Cloudflare then makes its DNS record and certificate and routes it to the Worker. The zone is the hostname's last two labels (`www.acme.example` is in `acme.example`), looked up in the account once per apex when a domain is to be attached (`GET /zones?name=&account.id=`); a hostname whose zone the account does not hold, or the token cannot read, is refused, naming the hostname and the zone, before anything changes. An update lists the Worker's attached domains first (`GET …/workers/domains?service=`), and only a missing one's zone is looked up;
|
|
92
|
+
Each hostname in `domains` is attached to the Worker as a [Workers custom domain](https://developers.cloudflare.com/workers/configuration/routing/custom-domains/) by a create or an update: Cloudflare then makes its DNS record and certificate and routes it to the Worker. The zone is the hostname's last two labels (`www.acme.example` is in `acme.example`), looked up in the account once per apex when a domain is to be attached (`GET /zones?name=&account.id=`); a hostname whose zone the account does not hold, or the token cannot read, is refused, naming the hostname and the zone, before anything changes. An update lists the Worker's attached domains first (`GET …/workers/domains?service=`), and only a missing one's zone is looked up; before the upload, the ones declared before and no longer are detached (`DELETE …/workers/domains/{id}`), while the Worker's bindings still record them, and after it each missing one is attached (`PUT …/workers/domains { zone_id, hostname, service }`), once they record it. Whatever fails in between, no domain is left attached that the bindings do not record, and the next apply attaches what is still missing; a site's domain never reaches a Worker that would serve the app there, and a renamed one is down from the detach to the attach. A domain attached by hand and never declared is left alone. A read lists the Worker's attached domains too and shows only the declared ones attached, so a domain whose attach failed, or one detached by hand, is drift that the next apply attaches again. A delete detaches every declared one before the Worker goes. A container without `domains` makes none of these requests, unless it served some before, which are then detached. A zone such as `acme.co.uk`, whose apex is three labels, is not found yet.
|
|
93
|
+
|
|
94
|
+
`hostname`, the app's own domain, is attached, detached and read the same way, in the same zone lookup, and the Worker's `SANOMA_HOSTNAME` binding records it (as `SANOMA_DOMAINS` records the sites'), so one no longer declared is detached and one detached by hand is drift. With it attached, the host's `url` is `https://<hostname>` (a read of one not attached gives the workers.dev URL, so a failed attach or one detached by hand never points at a name that does not route). The wake path stays on workers.dev, which stays on: the Worker's `SANOMA_HOST_URL` binding, the host's `wakeUrl` (its `worker_url`, which apply gives the alarm as its `host`) and the health checks, so a wake never waits on the hostname's DNS or certificate, and declaring or dropping a hostname leaves the alarm as it is. A `hostname` that is also one of `domains`' values is refused, `invalid`, at a plan and a create, before any request: the app answers at every hostname that is not a site's. A renamed `hostname` is detached before the upload and the new one attached after it, as a site's domain is: in between, a short window, no hostname is attached and the app answers on workers.dev alone (the host's `url` reads as it), and a failure there leaves the bindings naming the old one, detached, or the new one, not yet attached, which the next apply attaches.
|
|
88
95
|
|
|
89
96
|
## DNS records
|
|
90
97
|
|
|
@@ -120,7 +127,7 @@ export const mailDns = cloudflare.records({ zone: "sanoma.work", name: "resend",
|
|
|
120
127
|
|
|
121
128
|
`./driver` (`cloudflareDriver`; `cloudflareDriver({ timeoutMs, startTimeoutMs, pollMs })`: 30 s a request, ten minutes for the Worker to answer at a new revision, two seconds between tries; each request of the image's copy may take ten minutes) and `./fake` (`fakeCloudflare`) are internal entries, for tests.
|
|
122
129
|
|
|
123
|
-
A read is the Worker's settings (its bindings: what it runs is its plain-text bindings, never a secret's value), the application of its name (whether it exists, its id) and the account's subdomain (its URL); a plan compares the declared image, source, ref, revision, port, domains (left out too) and secret names with them. The requests are made one after another, in the order the fixtures hold.
|
|
130
|
+
A read is the Worker's settings (its bindings: what it runs is its plain-text bindings, never a secret's value), the application of its name (whether it exists, its id) and the account's subdomain (its URL); a plan compares the declared image, source, ref, revision, port, domains and hostname (each left out too) and secret names with them. The requests are made one after another, in the order the fixtures hold.
|
|
124
131
|
|
|
125
132
|
### Environment
|
|
126
133
|
|
|
@@ -135,7 +142,7 @@ When either is unset, a call fails, not retryable, naming it. The driver declare
|
|
|
135
142
|
|
|
136
143
|
### Errors and retries
|
|
137
144
|
|
|
138
|
-
A 429, a 5xx, a timeout or no reply is retryable, the image's copy's requests too; any other 4xx is not. `status` and `vendorCode` (Cloudflare's first error `code`) are kept. The driver's own refusals are not retryable: `exists` (a Worker of that name that is not Sanoma's, which is neither overwritten nor deleted), `plan_changed` (an update whose plan changed since it was approved, or is not an update: a new name is a delete and a create), `no_token` and `token` (a host without the company's `SANOMA_WAKEUP_TOKEN`, or with another one), `no_zone` (a domain or a record set whose zone the account does not hold), `conflict` (a record in the way of a declared one), `no_dns_permission` (a token without Zone → DNS → Edit), `not_known` (records given as `null`), `invalid` (a record the shared shape refuses, an MX one without a priority, one outside the zone, a CNAME or a second SPF policy beside another declared record, or a set's mark longer than 100 characters), and a Worker that did not answer at its revision in time, which says what it answered.
|
|
145
|
+
A 429, a 5xx, a timeout or no reply is retryable, the image's copy's requests too; any other 4xx is not. `status` and `vendorCode` (Cloudflare's first error `code`) are kept. The driver's own refusals are not retryable: `exists` (a Worker of that name that is not Sanoma's, which is neither overwritten nor deleted), `plan_changed` (an update whose plan changed since it was approved, or is not an update: a new name is a delete and a create), `no_token` and `token` (a host without the company's `SANOMA_WAKEUP_TOKEN`, or with another one), `no_zone` (a domain or a record set whose zone the account does not hold), `conflict` (a record in the way of a declared one), `no_dns_permission` (a token without Zone → DNS → Edit), `not_known` (records given as `null`), `invalid` (a container's `hostname` that is one of its `domains`, a record the shared shape refuses, an MX one without a priority, one outside the zone, a CNAME or a second SPF policy beside another declared record, or a set's mark longer than 100 characters), and a Worker that did not answer at its revision in time, which says what it answered.
|
|
139
146
|
|
|
140
147
|
### Plan
|
|
141
148
|
|
package/dist/connector.d.ts
CHANGED
|
@@ -16,10 +16,13 @@ export declare const container: import("@sanoma-ai/workflows").Resource<z.ZodObj
|
|
|
16
16
|
source: z.ZodString;
|
|
17
17
|
ref: z.ZodString;
|
|
18
18
|
revision: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
19
|
+
configurationRevision: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
19
20
|
secrets: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
20
21
|
port: z.ZodNumber;
|
|
21
22
|
domains: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
23
|
+
hostname: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
22
24
|
url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
25
|
+
worker_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
23
26
|
healthy: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
24
27
|
}, z.core.$strip>, "cloudflare.container", {
|
|
25
28
|
readonly source: {
|
|
@@ -45,7 +48,7 @@ export declare const alarm: import("@sanoma-ai/workflows").Resource<z.ZodObject<
|
|
|
45
48
|
}, z.core.$strip>, "cloudflare.alarm", {
|
|
46
49
|
readonly host: {
|
|
47
50
|
readonly type: readonly ["cloudflare.container"];
|
|
48
|
-
readonly by: readonly ["url"];
|
|
51
|
+
readonly by: readonly ["worker_url", "url"];
|
|
49
52
|
};
|
|
50
53
|
}, true>;
|
|
51
54
|
/** A CAA record's content, `0 issue "letsencrypt.org"`, as the fields Cloudflare takes; undefined when it is not one. */
|
package/dist/connector.js
CHANGED
|
@@ -23,6 +23,11 @@ const containerSchema = z.object({
|
|
|
23
23
|
source: z.string().min(1).describe("The company repository's clone URL, or a declared GitHub repository"),
|
|
24
24
|
ref: z.string().min(1).describe("The branch it runs, such as `main`, never a commit"),
|
|
25
25
|
revision: z.string().nullish().describe("The commit it runs, which apply sets from `ref`"),
|
|
26
|
+
configurationRevision: z
|
|
27
|
+
.string()
|
|
28
|
+
.regex(/^[A-Za-z0-9._-]{1,63}$/)
|
|
29
|
+
.nullish()
|
|
30
|
+
.describe("Non-secret deployment configuration revision: advance it to roll out rotated bootstrap values at the same source revision"),
|
|
26
31
|
secrets: z
|
|
27
32
|
.record(z.string().regex(/^[A-Z_][A-Z0-9_]*$/), z.string())
|
|
28
33
|
.nullish()
|
|
@@ -34,7 +39,19 @@ const containerSchema = z.object({
|
|
|
34
39
|
.refine((domains) => Object.keys(domains).length > 0, "leave `domains` out rather than empty")
|
|
35
40
|
.nullish()
|
|
36
41
|
.describe("A public site's domain, by site name"),
|
|
37
|
-
|
|
42
|
+
hostname: z
|
|
43
|
+
.string()
|
|
44
|
+
.regex(DOMAIN_NAME)
|
|
45
|
+
.nullish()
|
|
46
|
+
.describe("The hostname the app is served at, such as `internal.acme.example`: attached to the Worker as a custom domain, and its `url`"),
|
|
47
|
+
url: z
|
|
48
|
+
.string()
|
|
49
|
+
.nullish()
|
|
50
|
+
.describe("Where the app answers: `https://<hostname>` once attached, or the Worker's URL on workers.dev"),
|
|
51
|
+
worker_url: z
|
|
52
|
+
.string()
|
|
53
|
+
.nullish()
|
|
54
|
+
.describe("The Worker's URL on workers.dev, which Cloudflare sets: where its alarm and health checks reach it"),
|
|
38
55
|
healthy: z
|
|
39
56
|
.boolean()
|
|
40
57
|
.nullish()
|
|
@@ -57,7 +74,7 @@ export const container = defineResource({
|
|
|
57
74
|
schema: containerSchema,
|
|
58
75
|
fields: {
|
|
59
76
|
immutable: ["name"],
|
|
60
|
-
vendorOwned: ["id", "url", "healthy"],
|
|
77
|
+
vendorOwned: ["id", "url", "worker_url", "healthy"],
|
|
61
78
|
writeOnly: ["secrets"],
|
|
62
79
|
references: { source: { type: "github.repository", by: ["http_clone_url"] } },
|
|
63
80
|
},
|
|
@@ -66,10 +83,19 @@ export const container = defineResource({
|
|
|
66
83
|
writable: true,
|
|
67
84
|
host: {
|
|
68
85
|
capabilities: { lifetime: "stops-when-quiet", publicUrl: true, buildsFromGit: false, staticEgress: false },
|
|
69
|
-
inputs: {
|
|
86
|
+
inputs: {
|
|
87
|
+
source: "source",
|
|
88
|
+
ref: "ref",
|
|
89
|
+
secrets: "secrets",
|
|
90
|
+
port: "port",
|
|
91
|
+
domains: "domains",
|
|
92
|
+
hostname: "hostname",
|
|
93
|
+
},
|
|
70
94
|
revision: "revision",
|
|
71
95
|
outputs: (state) => ({
|
|
72
96
|
url: String(state.url ?? ""),
|
|
97
|
+
// The alarm reaches the Worker on workers.dev, whatever hostname the app is served at.
|
|
98
|
+
...(typeof state.worker_url === "string" && { wakeUrl: state.worker_url }),
|
|
73
99
|
...(typeof state.revision === "string" && { revision: state.revision }),
|
|
74
100
|
healthy: state.healthy === true,
|
|
75
101
|
}),
|
|
@@ -109,7 +135,8 @@ export const alarm = defineResource({
|
|
|
109
135
|
immutable: ["host"],
|
|
110
136
|
vendorOwned: ["at", "rang", "healthy"],
|
|
111
137
|
writeOnly: ["token"],
|
|
112
|
-
|
|
138
|
+
// The host's wake URL (`worker_url`, its outputs' `wakeUrl`), as apply gives it: its `url` is its hostname once attached.
|
|
139
|
+
references: { host: { type: ["cloudflare.container"], by: ["worker_url", "url"] } },
|
|
113
140
|
},
|
|
114
141
|
bindingId: (state) => String(state.host),
|
|
115
142
|
writable: true,
|
package/dist/connector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,eAAe,EACf,cAAc,EAEd,SAAS,EAGT,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,8GAA8G;AAC9G,MAAM,IAAI,GAAG,wCAAwC,CAAC;AAEtD,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAC1F,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,IAAI,EAAE,mDAAmD,CAAC;SAChE,QAAQ,CACP,0GAA0G,CAC3G;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,KAAK,CAAC,oDAAoD,EAAE,oCAAoC,CAAC;SACjG,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,0CAA0C,CAAC;SACzF,QAAQ,CACP,8IAA8I,CAC/I;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IACzG,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACrF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC1F,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC1D,OAAO,EAAE;SACT,QAAQ,CACP,2HAA2H,CAC5H;IACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+DAA+D,CAAC;IACnH,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClE,6DAA6D;SAC5D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,uCAAuC,CAAC;SAC7F,OAAO,EAAE;SACT,QAAQ,CAAC,sCAAsC,CAAC;IACnD,
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
|
package/dist/ops.d.ts
CHANGED
|
@@ -169,9 +169,12 @@ type ContainerState = {
|
|
|
169
169
|
source: string;
|
|
170
170
|
ref: string;
|
|
171
171
|
revision: string | null;
|
|
172
|
+
configurationRevision?: string;
|
|
172
173
|
port: number;
|
|
173
174
|
domains?: Record<string, string>;
|
|
175
|
+
hostname?: string;
|
|
174
176
|
url: string;
|
|
177
|
+
worker_url: string;
|
|
175
178
|
healthy: boolean;
|
|
176
179
|
};
|
|
177
180
|
/** What a plan of a change finds, and the state it planned from. */
|
package/dist/ops.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { setTimeout as delay } from "node:timers/promises";
|
|
2
2
|
import { DriverError, errorMessage, HOST_URL, isSecret, resolveSecrets, retryableStatus, WAKE_PATH, } from "@sanoma-ai/workflows";
|
|
3
|
-
import { domainsOf, domainsText } from "@sanoma-ai/workflows/shared";
|
|
3
|
+
import { domainsOf, domainsText, hostnameUrl, siteAtHostname } from "@sanoma-ai/workflows/shared";
|
|
4
4
|
import { instanceUrl, mintInstanceToken, WAKEUP_TOKEN } from "@sanoma-ai/workflows/wakeup-service";
|
|
5
5
|
import { alarm, container } from "./connector.js";
|
|
6
6
|
import { accountPinned } from "./registry.js";
|
|
@@ -20,9 +20,12 @@ const TEXT = {
|
|
|
20
20
|
source: "SANOMA_SOURCE",
|
|
21
21
|
ref: "SANOMA_REF",
|
|
22
22
|
revision: "SANOMA_REVISION",
|
|
23
|
+
configurationRevision: "SANOMA_CONFIG_REVISION",
|
|
23
24
|
image: "SANOMA_IMAGE",
|
|
24
25
|
port: "PORT",
|
|
25
26
|
domains: "SANOMA_DOMAINS",
|
|
27
|
+
/** The app's own custom domain, when declared: the state's `url` is then `https://<hostname>`. */
|
|
28
|
+
hostname: "SANOMA_HOSTNAME",
|
|
26
29
|
url: HOST_URL,
|
|
27
30
|
};
|
|
28
31
|
/** Names a secret may not take: the Worker's own bindings. */
|
|
@@ -35,13 +38,33 @@ export const refused = (message, vendorCode) => new DriverError(`cloudflare: ${m
|
|
|
35
38
|
export const scriptOf = (name) => `sanoma-${name}`;
|
|
36
39
|
/** The zone a hostname is looked up in: its last two labels (`www.acme.example` → `acme.example`). */
|
|
37
40
|
export const apexOf = (hostname) => hostname.split(".").slice(-2).join(".");
|
|
41
|
+
/** The Worker's plain-text bindings, by name. */
|
|
42
|
+
const textOf = (bindings) => new Map((bindings ?? []).filter((b) => b.type === "plain_text").map((b) => [b.name, b.text ?? ""]));
|
|
38
43
|
/**
|
|
39
|
-
* The hostnames the Worker's bindings say it was declared to serve (`SANOMA_DOMAINS`
|
|
40
|
-
* domains that are Sanoma's to detach. One attached by hand and
|
|
44
|
+
* The hostnames the Worker's bindings say it was declared to serve (`SANOMA_DOMAINS` and
|
|
45
|
+
* `SANOMA_HOSTNAME`): the custom domains that are Sanoma's to detach. One attached by hand and
|
|
46
|
+
* never declared is left alone.
|
|
41
47
|
*/
|
|
42
48
|
const declaredBefore = (bindings) => {
|
|
43
|
-
const text = bindings
|
|
44
|
-
|
|
49
|
+
const text = textOf(bindings);
|
|
50
|
+
const domains = text.get(TEXT.domains);
|
|
51
|
+
const hostname = text.get(TEXT.hostname);
|
|
52
|
+
return new Set([...(domains ? Object.values(domainsOf(domains)) : []), ...(hostname ? [hostname] : [])]);
|
|
53
|
+
};
|
|
54
|
+
/** Where the app answers: its declared hostname, else the Worker's workers.dev URL. */
|
|
55
|
+
const servedAt = (hostname, workerUrl) => hostname ? hostnameUrl(hostname) : workerUrl;
|
|
56
|
+
/**
|
|
57
|
+
* Refuses a hostname that is also a site's domain, before any request: the app and the site would
|
|
58
|
+
* share it. `describeConfig` reports it at a data file's declaration; this guards a workflow's own
|
|
59
|
+
* call, which no data file declares.
|
|
60
|
+
*/
|
|
61
|
+
const checkHostname = (name, hostname, domains) => {
|
|
62
|
+
if (typeof hostname !== "string")
|
|
63
|
+
return;
|
|
64
|
+
const site = siteAtHostname(hostname, (domains ?? {}));
|
|
65
|
+
if (site) {
|
|
66
|
+
throw refused(`container ${String(name)}: hostname ${hostname} is also the domain of the site ${site}: the app and a site need a hostname each`, "invalid");
|
|
67
|
+
}
|
|
45
68
|
};
|
|
46
69
|
export const NONE = { unknown: [], replace: [] };
|
|
47
70
|
/**
|
|
@@ -58,10 +81,21 @@ export function replanned(what, fresh, expect) {
|
|
|
58
81
|
}
|
|
59
82
|
const sorted = (names) => [...names].toSorted().join(",");
|
|
60
83
|
/** The declared fields a change of which is an update: everything the Worker runs, and the image. */
|
|
61
|
-
const COMPARED = [
|
|
84
|
+
const COMPARED = [
|
|
85
|
+
"image",
|
|
86
|
+
"source",
|
|
87
|
+
"ref",
|
|
88
|
+
"revision",
|
|
89
|
+
"configurationRevision",
|
|
90
|
+
"port",
|
|
91
|
+
"domains",
|
|
92
|
+
"hostname",
|
|
93
|
+
];
|
|
94
|
+
/** The compared fields a declaration may leave out: leaving one out is a change when the Worker has it. */
|
|
95
|
+
const OPTIONAL = new Set(["configurationRevision", "domains", "hostname"]);
|
|
62
96
|
const same = (field, a, b) => field === "domains"
|
|
63
97
|
? domainsText((a ?? {})) === domainsText((b ?? {}))
|
|
64
|
-
: a === b;
|
|
98
|
+
: (a ?? null) === (b ?? null);
|
|
65
99
|
/**
|
|
66
100
|
* `{ revision }` when the Worker answers, else why not; with `start`, once its container answers
|
|
67
101
|
* too, which starts it. A read asks without: a stopped host is healthy, and stays stopped. A
|
|
@@ -78,7 +112,10 @@ const health = async (cf, url, start) => {
|
|
|
78
112
|
}
|
|
79
113
|
const body = (await res.json().catch(() => undefined));
|
|
80
114
|
if (res.ok && typeof body?.revision === "string")
|
|
81
|
-
return {
|
|
115
|
+
return {
|
|
116
|
+
revision: body.revision,
|
|
117
|
+
...(typeof body.configurationRevision === "string" && { configurationRevision: body.configurationRevision }),
|
|
118
|
+
};
|
|
82
119
|
const error = typeof body?.error === "string" ? body.error : `${HEALTH_PATH} answered ${res.status}`;
|
|
83
120
|
return { error, exit: typeof body?.exit === "string" };
|
|
84
121
|
};
|
|
@@ -120,15 +157,16 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
120
157
|
return undefined;
|
|
121
158
|
const app = await cf.application(script);
|
|
122
159
|
const url = await cf.workerUrl(script);
|
|
123
|
-
const text =
|
|
160
|
+
const text = textOf(bindings);
|
|
124
161
|
const served = text.get(TEXT.domains);
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
162
|
+
const declaredHostname = text.get(TEXT.hostname) || undefined;
|
|
163
|
+
// The domains and the hostname it serves that are attached: one whose attach failed, or
|
|
164
|
+
// detached by hand, is drift, so the next apply attaches it again.
|
|
165
|
+
const attached = new Set(served || declaredHostname ? (await cf.domains(script)).map((d) => d.hostname) : []);
|
|
166
|
+
const domains = served
|
|
167
|
+
? Object.fromEntries(Object.entries(domainsOf(served)).filter(([, hostname]) => attached.has(hostname)))
|
|
168
|
+
: undefined;
|
|
169
|
+
const hostname = declaredHostname && attached.has(declaredHostname) ? declaredHostname : undefined;
|
|
132
170
|
const state = {
|
|
133
171
|
id: app?.id ?? null,
|
|
134
172
|
name,
|
|
@@ -137,9 +175,13 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
137
175
|
source: text.get(TEXT.source) ?? "",
|
|
138
176
|
ref: text.get(TEXT.ref) ?? "",
|
|
139
177
|
revision: text.get(TEXT.revision) ?? null,
|
|
178
|
+
...(text.has(TEXT.configurationRevision) && { configurationRevision: text.get(TEXT.configurationRevision) }),
|
|
140
179
|
port: Number(text.get(TEXT.port) ?? 0),
|
|
141
180
|
...(domains && Object.keys(domains).length > 0 && { domains }),
|
|
142
|
-
|
|
181
|
+
...(hostname && { hostname }),
|
|
182
|
+
// Where the app answers now: at its hostname once attached; its health is asked on workers.dev.
|
|
183
|
+
url: servedAt(hostname, url),
|
|
184
|
+
worker_url: url,
|
|
143
185
|
healthy: checkHealth && app !== undefined && "revision" in (await health(cf, url, false)),
|
|
144
186
|
};
|
|
145
187
|
const secrets = bindings.filter((b) => b.type === "secret_text").map((b) => b.name);
|
|
@@ -150,6 +192,8 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
150
192
|
return found ? { id, gone: false, state: found.state } : { id, gone: true };
|
|
151
193
|
};
|
|
152
194
|
const plan = async ({ id, desired }) => {
|
|
195
|
+
if (desired)
|
|
196
|
+
checkHostname(desired.name, desired.hostname, desired.domains);
|
|
153
197
|
const found = id === undefined ? undefined : await inspect(id, false);
|
|
154
198
|
if (!desired)
|
|
155
199
|
return { action: found ? "delete" : "none", ...NONE };
|
|
@@ -163,24 +207,42 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
163
207
|
if (planned.name !== state.name)
|
|
164
208
|
return { action: "replace", planned, unknown, replace: ["name"] };
|
|
165
209
|
const changed =
|
|
166
|
-
// `domains` left out
|
|
167
|
-
COMPARED.some((field) => (field in planned || field
|
|
210
|
+
// `domains` and `hostname` left out are compared too: removing one is a change.
|
|
211
|
+
COMPARED.some((field) => (field in planned || OPTIONAL.has(field)) && !same(field, planned[field], state[field])) || sorted(Object.keys(secrets ?? {})) !== sorted(found.secrets);
|
|
168
212
|
if (!changed)
|
|
169
213
|
return { action: "none", planned: state, ...NONE };
|
|
170
|
-
|
|
214
|
+
// What the Worker will serve: the declared domains and hostname, none of the found ones left
|
|
215
|
+
// out; the app at the declared hostname, or on workers.dev without one.
|
|
216
|
+
const { domains: _domains, hostname: _hostname, ...was } = state;
|
|
217
|
+
const url = servedAt(planned.hostname, state.worker_url);
|
|
218
|
+
return {
|
|
219
|
+
action: "update",
|
|
220
|
+
planned: {
|
|
221
|
+
...was,
|
|
222
|
+
...planned,
|
|
223
|
+
...(state.configurationRevision !== undefined &&
|
|
224
|
+
planned.configurationRevision == null && { configurationRevision: null }),
|
|
225
|
+
url,
|
|
226
|
+
},
|
|
227
|
+
...NONE,
|
|
228
|
+
};
|
|
171
229
|
};
|
|
172
230
|
/** Waits until the Worker at `url` answers at `revision`, which starts its container. */
|
|
173
|
-
const started = async (cf, script, url, revision) => {
|
|
231
|
+
const started = async (cf, script, url, revision, configurationRevision) => {
|
|
174
232
|
const until = Date.now() + startTimeoutMs;
|
|
175
233
|
for (;;) {
|
|
176
234
|
const seen = await health(cf, url, true);
|
|
177
|
-
if ("revision" in seen &&
|
|
235
|
+
if ("revision" in seen &&
|
|
236
|
+
seen.revision === revision &&
|
|
237
|
+
(seen.configurationRevision ?? "") === (configurationRevision ?? ""))
|
|
178
238
|
return;
|
|
179
239
|
// Not a wait: the container started and ended, and asking again would only start it again.
|
|
180
240
|
if ("exit" in seen && seen.exit)
|
|
181
241
|
throw refused(`${script} did not start at ${revision}: ${seen.error}`);
|
|
182
242
|
if (Date.now() >= until) {
|
|
183
|
-
const why = "revision" in seen
|
|
243
|
+
const why = "revision" in seen
|
|
244
|
+
? `it runs ${seen.revision} with configuration ${seen.configurationRevision ?? "unset"}`
|
|
245
|
+
: seen.error;
|
|
184
246
|
throw refused(`${script} did not answer at ${revision} in ${Math.round(startTimeoutMs / 1000)} s: ${why}`);
|
|
185
247
|
}
|
|
186
248
|
await delay(pollMs);
|
|
@@ -214,7 +276,9 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
214
276
|
/** Makes the Worker and its application match `desired`, and waits for it: a create and an update alike. */
|
|
215
277
|
const put = async (desired, { secrets: store }) => {
|
|
216
278
|
const declared = container.schema.parse(await resolveSecrets(desired, store));
|
|
217
|
-
const { name, image, source, ref, revision, port, domains } = declared;
|
|
279
|
+
const { name, image, source, ref, revision, configurationRevision, port, domains } = declared;
|
|
280
|
+
const hostname = declared.hostname ?? undefined;
|
|
281
|
+
checkHostname(name, hostname, domains);
|
|
218
282
|
const secrets = declared.secrets ?? {};
|
|
219
283
|
if (!revision) {
|
|
220
284
|
throw refused(`container ${name}: no revision: apply sets it from ${ref} once its source exists (apply again after a repository it creates)`);
|
|
@@ -233,11 +297,13 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
233
297
|
// the Worker as it was. Each apply asks again, which costs a manifest's HEAD once the copy is
|
|
234
298
|
// there, and puts back one gone; the object starts only a pinned image of the account's.
|
|
235
299
|
// The custom domains are read first too: the ones an update's Worker has, and each declared
|
|
236
|
-
// one missing, with its zone, so a domain whose zone
|
|
300
|
+
// one missing (a site's domain or the app's hostname), with its zone, so a domain whose zone
|
|
301
|
+
// the account lacks is refused here.
|
|
302
|
+
const hostnames = new Set([...Object.values(domains ?? {}), ...(hostname ? [hostname] : [])]);
|
|
237
303
|
const before = declaredBefore(current);
|
|
238
|
-
const attached = current && (
|
|
304
|
+
const attached = current && (hostnames.size > 0 || before.size > 0) ? await cf.domains(script) : [];
|
|
239
305
|
const held = new Set(attached.map((d) => d.hostname));
|
|
240
|
-
const missing = await zonesOf(cf, name,
|
|
306
|
+
const missing = await zonesOf(cf, name, [...hostnames].filter((h) => !held.has(h)));
|
|
241
307
|
const runs = accountPinned(image, cf.account) ? image : await cf.copyImage(image);
|
|
242
308
|
await prepared(cf, runs);
|
|
243
309
|
const served = domains ? domainsText(domains) : undefined;
|
|
@@ -245,10 +311,13 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
245
311
|
[TEXT.source]: source,
|
|
246
312
|
[TEXT.ref]: ref,
|
|
247
313
|
[TEXT.revision]: revision,
|
|
314
|
+
...(configurationRevision && { [TEXT.configurationRevision]: configurationRevision }),
|
|
248
315
|
[TEXT.image]: image,
|
|
249
316
|
[TEXT.port]: String(port),
|
|
317
|
+
// Where the wakeup reaches the Worker: its workers.dev URL, whatever hostname it serves.
|
|
250
318
|
[TEXT.url]: url,
|
|
251
319
|
...(served && { [TEXT.domains]: served }),
|
|
320
|
+
...(hostname && { [TEXT.hostname]: hostname }),
|
|
252
321
|
};
|
|
253
322
|
const bindings = [
|
|
254
323
|
{ type: "durable_object_namespace", name: NAMESPACE, class_name: OBJECT_CLASS },
|
|
@@ -267,6 +336,14 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
267
336
|
observability: { enabled: true },
|
|
268
337
|
modules: await workerModules(),
|
|
269
338
|
};
|
|
339
|
+
// A domain declared before and no longer is detached while the bindings still record it, and
|
|
340
|
+
// a missing one attached once the upload records it: whatever fails in between, none is left
|
|
341
|
+
// attached and unrecorded, and the next apply attaches what is still missing. A site's domain
|
|
342
|
+
// so never reaches a Worker that would serve the app there (README, Custom domains).
|
|
343
|
+
for (const domain of attached) {
|
|
344
|
+
if (before.has(domain.hostname) && !hostnames.has(domain.hostname))
|
|
345
|
+
await cf.detachDomain(domain.id);
|
|
346
|
+
}
|
|
270
347
|
await cf.upload(script, { ...metadata, ...(current === undefined && { migrations: MIGRATION }) });
|
|
271
348
|
await cf.enableSubdomain(script);
|
|
272
349
|
let app = await cf.application(script);
|
|
@@ -282,16 +359,9 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
282
359
|
// 2026-10-29; a Worker deployed again after the application started at once).
|
|
283
360
|
await cf.upload(script, metadata);
|
|
284
361
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
await cf.attachDomain(script, hostname, zoneId);
|
|
289
|
-
const hostnames = new Set(Object.values(domains ?? {}));
|
|
290
|
-
for (const domain of attached) {
|
|
291
|
-
if (before.has(domain.hostname) && !hostnames.has(domain.hostname))
|
|
292
|
-
await cf.detachDomain(domain.id);
|
|
293
|
-
}
|
|
294
|
-
await started(cf, script, url, revision);
|
|
362
|
+
for (const [domain, zone] of missing)
|
|
363
|
+
await cf.attachDomain(script, domain, zone);
|
|
364
|
+
await started(cf, script, url, revision, configurationRevision);
|
|
295
365
|
const state = {
|
|
296
366
|
id: app.id,
|
|
297
367
|
name,
|
|
@@ -299,9 +369,12 @@ export function containerOps(api, { startTimeoutMs, pollMs }) {
|
|
|
299
369
|
source,
|
|
300
370
|
ref,
|
|
301
371
|
revision,
|
|
372
|
+
...(configurationRevision && { configurationRevision }),
|
|
302
373
|
port,
|
|
303
374
|
...(domains && { domains }),
|
|
304
|
-
|
|
375
|
+
...(hostname && { hostname }),
|
|
376
|
+
url: servedAt(hostname, url),
|
|
377
|
+
worker_url: url,
|
|
305
378
|
healthy: true,
|
|
306
379
|
};
|
|
307
380
|
return { id: name, state };
|
package/dist/ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../src/ops.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../src/ops.ts"],"names":[],"mappings":"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"}
|
package/dist/resources.d.ts
CHANGED
|
@@ -12,10 +12,13 @@ export declare const cloudflare: {
|
|
|
12
12
|
source: import("zod").ZodString;
|
|
13
13
|
ref: import("zod").ZodString;
|
|
14
14
|
revision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
15
|
+
configurationRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
15
16
|
secrets: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
16
17
|
port: import("zod").ZodNumber;
|
|
17
18
|
domains: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>>;
|
|
19
|
+
hostname: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
18
20
|
url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
21
|
+
worker_url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
19
22
|
healthy: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
20
23
|
}, import("zod/v4/core").$strip>, "cloudflare.container", {
|
|
21
24
|
readonly source: {
|
|
@@ -32,7 +35,7 @@ export declare const cloudflare: {
|
|
|
32
35
|
}, import("zod/v4/core").$strip>, "cloudflare.alarm", {
|
|
33
36
|
readonly host: {
|
|
34
37
|
readonly type: readonly ["cloudflare.container"];
|
|
35
|
-
readonly by: readonly ["url"];
|
|
38
|
+
readonly by: readonly ["worker_url", "url"];
|
|
36
39
|
};
|
|
37
40
|
}, true>;
|
|
38
41
|
records: import("@sanoma-ai/workflows").Resource<import("zod").ZodObject<{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanoma-ai/connector-cloudflare",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Cloudflare for Sanoma: a Container host that stops when quiet, a Durable Object alarm that wakes it, from one Worker, and a zone's DNS records",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -62,12 +62,12 @@
|
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@sanoma-ai/testing": "0.1.0",
|
|
65
|
-
"@sanoma-ai/workflows": "0.11.
|
|
65
|
+
"@sanoma-ai/workflows": "0.11.2",
|
|
66
66
|
"msw": "^3.0.3",
|
|
67
67
|
"zod": "^4.6.5"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"@sanoma-ai/workflows": "^0.11.
|
|
70
|
+
"@sanoma-ai/workflows": "^0.11.2",
|
|
71
71
|
"zod": "^4"
|
|
72
72
|
},
|
|
73
73
|
"engines": {
|
package/worker/instance.js
CHANGED
|
@@ -126,6 +126,7 @@ export class Instance {
|
|
|
126
126
|
health() {
|
|
127
127
|
return json(200, {
|
|
128
128
|
revision: this.env.SANOMA_REVISION ?? "",
|
|
129
|
+
...(this.env.SANOMA_CONFIG_REVISION && { configurationRevision: this.env.SANOMA_CONFIG_REVISION }),
|
|
129
130
|
running: this.ctx.container.running,
|
|
130
131
|
ready: this.#ready,
|
|
131
132
|
...(this.#last !== undefined && !this.#ready && { last: this.#last }),
|
|
@@ -147,7 +148,11 @@ export class Instance {
|
|
|
147
148
|
const image = container.images?.[IMAGE];
|
|
148
149
|
// Not one to retry: the Worker was uploaded without its image.
|
|
149
150
|
if (!image) throw new Error(`the Worker names no "${IMAGE}" image among its containers' images`);
|
|
150
|
-
const labels = {
|
|
151
|
+
const labels = {
|
|
152
|
+
revision: this.env.SANOMA_REVISION ?? "",
|
|
153
|
+
image: await imageLabel(image),
|
|
154
|
+
...(this.env.SANOMA_CONFIG_REVISION && { configuration: this.env.SANOMA_CONFIG_REVISION }),
|
|
155
|
+
};
|
|
151
156
|
const until = Date.now() + START_TIMEOUT_MS;
|
|
152
157
|
let last;
|
|
153
158
|
const saw = (what) => (last = this.#last = what);
|
|
@@ -169,8 +174,12 @@ export class Instance {
|
|
|
169
174
|
if (!checked && container.running) {
|
|
170
175
|
// One running from before: kept only if it says it started at these (a deploy otherwise).
|
|
171
176
|
const info = await container.inspect();
|
|
172
|
-
const same =
|
|
173
|
-
|
|
177
|
+
const same =
|
|
178
|
+
info &&
|
|
179
|
+
info.labels?.revision === labels.revision &&
|
|
180
|
+
(info.labels?.image ?? "") === labels.image &&
|
|
181
|
+
(info.labels?.configuration ?? "") === (labels.configuration ?? "");
|
|
182
|
+
if (!same) await container.destroy("a new revision, image or configuration");
|
|
174
183
|
}
|
|
175
184
|
checked = true;
|
|
176
185
|
if (!container.running) {
|