alchemy 0.85.1 → 0.86.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/bin/alchemy.js +1 -1
- package/lib/cloudflare/index.d.ts +1 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +1 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/sveltekit/plugin.d.ts.map +1 -1
- package/lib/cloudflare/sveltekit/plugin.js +11 -5
- package/lib/cloudflare/sveltekit/plugin.js.map +1 -1
- package/lib/cloudflare/vite/vite.d.ts.map +1 -1
- package/lib/cloudflare/vite/vite.js +2 -1
- package/lib/cloudflare/vite/vite.js.map +1 -1
- package/lib/cloudflare/vpc-service-ref.d.ts +38 -0
- package/lib/cloudflare/vpc-service-ref.d.ts.map +1 -0
- package/lib/cloudflare/vpc-service-ref.js +33 -0
- package/lib/cloudflare/vpc-service-ref.js.map +1 -0
- package/lib/cloudflare/vpc-service.d.ts +4 -4
- package/lib/cloudflare/vpc-service.d.ts.map +1 -1
- package/lib/cloudflare/vpc-service.js +44 -38
- package/lib/cloudflare/vpc-service.js.map +1 -1
- package/lib/docker/api.d.ts +33 -2
- package/lib/docker/api.d.ts.map +1 -1
- package/lib/docker/api.js +8 -4
- package/lib/docker/api.js.map +1 -1
- package/lib/docker/container.d.ts +1 -1
- package/lib/docker/container.d.ts.map +1 -1
- package/lib/docker/container.js +244 -15
- package/lib/docker/container.js.map +1 -1
- package/lib/test/bun.js +1 -1
- package/lib/test/vitest.js +1 -1
- package/package.json +1 -1
- package/src/cloudflare/index.ts +1 -0
- package/src/cloudflare/sveltekit/plugin.ts +17 -8
- package/src/cloudflare/vite/vite.ts +4 -2
- package/src/cloudflare/vpc-service-ref.ts +60 -0
- package/src/cloudflare/vpc-service.ts +53 -46
- package/src/docker/api.ts +47 -4
- package/src/docker/container.ts +318 -18
- package/src/test/bun.ts +1 -1
- package/src/test/vitest.ts +1 -1
- package/workers/tunnel-proxy.js +1 -1
package/lib/docker/container.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Resource } from "../resource.js";
|
|
2
|
-
import { DockerApi } from "./api.js";
|
|
2
|
+
import { DockerApi, normalizeDuration } from "./api.js";
|
|
3
3
|
/**
|
|
4
4
|
* Create and manage a Docker Container
|
|
5
5
|
*
|
|
@@ -66,7 +66,7 @@ import { DockerApi } from "./api.js";
|
|
|
66
66
|
* start: true
|
|
67
67
|
* });
|
|
68
68
|
*/
|
|
69
|
-
export const Container = Resource("docker::Container", async function (id, props) {
|
|
69
|
+
export const Container = Resource("docker::Container", { alwaysUpdate: true }, async function (id, props) {
|
|
70
70
|
// Initialize Docker API client
|
|
71
71
|
const api = new DockerApi();
|
|
72
72
|
// Get image reference
|
|
@@ -91,29 +91,47 @@ export const Container = Resource("docker::Container", async function (id, props
|
|
|
91
91
|
// Check if container already exists
|
|
92
92
|
const containerExists = await api.containerExists(containerName);
|
|
93
93
|
if (containerExists) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
// Create phase - check for adoption
|
|
95
|
+
if (this.phase === "create" && !props.adopt) {
|
|
96
|
+
throw new Error(`Container "${containerName}" already exists. Use adopt: true to adopt it.`);
|
|
97
|
+
}
|
|
98
|
+
const [containerInfo] = await api.inspectContainer(containerName);
|
|
99
|
+
// Compute what changes are needed
|
|
100
|
+
if (shouldReplace(imageRef, props, containerInfo)) {
|
|
101
|
+
// Need to recreate - remove existing container
|
|
102
|
+
if (this.phase === "update") {
|
|
103
|
+
// In update phase, we can replace the resource
|
|
104
|
+
// Force because we need to delete the old one first if the name is the same
|
|
105
|
+
return this.replace(true);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// In create phase, we cannot replace the resource, so manually delete instead
|
|
109
|
+
await api.removeContainer(containerName, true);
|
|
110
|
+
}
|
|
97
111
|
}
|
|
98
112
|
else {
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
|
|
113
|
+
// Apply incremental changes without recreating the container
|
|
114
|
+
const { toConnect, toDisconnect } = getNetworkChanges(props, containerInfo);
|
|
115
|
+
// Apply network disconnections
|
|
116
|
+
for (const network of toDisconnect) {
|
|
117
|
+
await api.disconnectNetwork(containerInfo.Id, network);
|
|
118
|
+
}
|
|
119
|
+
// Apply network connections
|
|
120
|
+
for (const network of toConnect) {
|
|
121
|
+
await api.connectNetwork(containerInfo.Id, network.name, {
|
|
122
|
+
aliases: network.aliases,
|
|
123
|
+
});
|
|
102
124
|
}
|
|
103
|
-
// Adopt existing container
|
|
104
|
-
const containerInfos = await api.inspectContainer(containerName);
|
|
105
|
-
const containerInfo = containerInfos[0];
|
|
106
|
-
let adoptedState = containerInfo.State.Status;
|
|
107
125
|
// Optionally start the container if requested
|
|
108
126
|
if (props.start && containerInfo.State.Status !== "running") {
|
|
109
|
-
await api.startContainer(
|
|
110
|
-
|
|
127
|
+
await api.startContainer(containerInfo.Id);
|
|
128
|
+
containerState = "running";
|
|
111
129
|
}
|
|
112
130
|
return {
|
|
113
131
|
...props,
|
|
114
132
|
id: containerInfo.Id,
|
|
115
133
|
name: containerName,
|
|
116
|
-
state:
|
|
134
|
+
state: containerState,
|
|
117
135
|
createdAt: new Date(containerInfo.Created).getTime(),
|
|
118
136
|
};
|
|
119
137
|
}
|
|
@@ -165,4 +183,215 @@ export const Container = Resource("docker::Container", async function (id, props
|
|
|
165
183
|
createdAt: Date.now(),
|
|
166
184
|
};
|
|
167
185
|
});
|
|
186
|
+
function getNetworkChanges(props, containerInfo) {
|
|
187
|
+
const currentNetworks = new Set(Object.keys(containerInfo.NetworkSettings.Networks || {}));
|
|
188
|
+
const desiredNetworks = new Map((props.networks || []).map((n) => [n.name, n]));
|
|
189
|
+
const toConnect = [];
|
|
190
|
+
const toDisconnect = [];
|
|
191
|
+
for (const network of currentNetworks) {
|
|
192
|
+
if (!desiredNetworks.has(network) && network !== "bridge") {
|
|
193
|
+
toDisconnect.push(network);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
for (const [name, config] of desiredNetworks) {
|
|
197
|
+
if (!currentNetworks.has(name)) {
|
|
198
|
+
toConnect.push(config);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return { toConnect, toDisconnect };
|
|
202
|
+
}
|
|
203
|
+
function shouldReplace(imageRef, props, containerInfo) {
|
|
204
|
+
// Check immutable properties that require recreation
|
|
205
|
+
// Image change - compare the image ID/digest if available
|
|
206
|
+
// The container stores the resolved image ID, so we compare against imageRef
|
|
207
|
+
if (containerInfo.Config.Image !== imageRef) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
// Command change
|
|
211
|
+
const containerCmd = containerInfo.Config.Cmd || [];
|
|
212
|
+
if (props.command && // only compare if command is set; otherwise we'd be comparing against the image's default command
|
|
213
|
+
(props.command.length !== containerCmd.length ||
|
|
214
|
+
!props.command.every((c, i) => c === containerCmd[i]))) {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
// Environment variables
|
|
218
|
+
if (!compareEnv(props.environment, containerInfo.Config.Env)) {
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
// Port bindings
|
|
222
|
+
if (!comparePorts(props.ports, containerInfo.HostConfig.PortBindings)) {
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
// Volume bindings
|
|
226
|
+
if (!compareVolumes(props.volumes, containerInfo.HostConfig.Binds)) {
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
// Healthcheck
|
|
230
|
+
if (!compareHealthcheck(props.healthcheck, containerInfo.Config.Healthcheck)) {
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
// Restart policy
|
|
234
|
+
if (!compareRestartPolicy(props.restart, containerInfo.HostConfig.RestartPolicy)) {
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
// AutoRemove (removeOnExit)
|
|
238
|
+
if ((props.removeOnExit || false) !== containerInfo.HostConfig.AutoRemove) {
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Normalize port mappings to a comparable format
|
|
245
|
+
* @internal
|
|
246
|
+
*/
|
|
247
|
+
function normalizePortMappings(ports) {
|
|
248
|
+
const map = new Map();
|
|
249
|
+
if (!ports)
|
|
250
|
+
return map;
|
|
251
|
+
for (const port of ports) {
|
|
252
|
+
const protocol = port.protocol || "tcp";
|
|
253
|
+
map.set(`${port.external}`, `${port.internal}/${protocol}`);
|
|
254
|
+
}
|
|
255
|
+
return map;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Normalize volume mappings to a comparable format
|
|
259
|
+
* @internal
|
|
260
|
+
*/
|
|
261
|
+
function normalizeVolumeMappings(volumes) {
|
|
262
|
+
const set = new Set();
|
|
263
|
+
if (!volumes)
|
|
264
|
+
return set;
|
|
265
|
+
for (const volume of volumes) {
|
|
266
|
+
const readOnlyFlag = volume.readOnly ? ":ro" : "";
|
|
267
|
+
set.add(`${volume.hostPath}:${volume.containerPath}${readOnlyFlag}`);
|
|
268
|
+
}
|
|
269
|
+
return set;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Compare environment variables
|
|
273
|
+
* @internal
|
|
274
|
+
*/
|
|
275
|
+
function compareEnv(propsEnv, containerEnv) {
|
|
276
|
+
const propsEntries = Object.entries(propsEnv || {}).sort(([a], [b]) => a.localeCompare(b));
|
|
277
|
+
const containerEntries = (containerEnv || [])
|
|
278
|
+
.map((e) => {
|
|
279
|
+
const idx = e.indexOf("=");
|
|
280
|
+
return idx >= 0 ? [e.slice(0, idx), e.slice(idx + 1)] : null;
|
|
281
|
+
})
|
|
282
|
+
.filter((e) => e !== null)
|
|
283
|
+
// Filter out PATH and other system env vars that Docker adds
|
|
284
|
+
.filter(([key]) => propsEnv && key in propsEnv)
|
|
285
|
+
.sort(([a], [b]) => a.localeCompare(b));
|
|
286
|
+
if (propsEntries.length !== containerEntries.length)
|
|
287
|
+
return false;
|
|
288
|
+
for (let i = 0; i < propsEntries.length; i++) {
|
|
289
|
+
if (propsEntries[i][0] !== containerEntries[i][0] ||
|
|
290
|
+
propsEntries[i][1] !== containerEntries[i][1]) {
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Compare port bindings
|
|
298
|
+
* @internal
|
|
299
|
+
*/
|
|
300
|
+
function comparePorts(propsPorts, containerPorts) {
|
|
301
|
+
const propsMap = normalizePortMappings(propsPorts);
|
|
302
|
+
// Extract container port mappings
|
|
303
|
+
const containerMap = new Map();
|
|
304
|
+
if (containerPorts) {
|
|
305
|
+
for (const [containerPort, bindings] of Object.entries(containerPorts)) {
|
|
306
|
+
if (bindings && bindings.length > 0) {
|
|
307
|
+
containerMap.set(bindings[0].HostPort, containerPort);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (propsMap.size !== containerMap.size)
|
|
312
|
+
return false;
|
|
313
|
+
for (const [hostPort, containerPort] of propsMap) {
|
|
314
|
+
if (containerMap.get(hostPort) !== containerPort)
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
return true;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Compare volume bindings
|
|
321
|
+
* @internal
|
|
322
|
+
*/
|
|
323
|
+
function compareVolumes(propsVolumes, containerBinds) {
|
|
324
|
+
const propsSet = normalizeVolumeMappings(propsVolumes);
|
|
325
|
+
const containerSet = new Set(containerBinds || []);
|
|
326
|
+
if (propsSet.size !== containerSet.size)
|
|
327
|
+
return false;
|
|
328
|
+
for (const bind of propsSet) {
|
|
329
|
+
if (!containerSet.has(bind))
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
return true;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Compare healthcheck configuration
|
|
336
|
+
* @internal
|
|
337
|
+
*/
|
|
338
|
+
function compareHealthcheck(propsHc, containerHc) {
|
|
339
|
+
// Both undefined/null
|
|
340
|
+
if (!propsHc && !containerHc)
|
|
341
|
+
return true;
|
|
342
|
+
// One defined, one not
|
|
343
|
+
if (!propsHc || !containerHc)
|
|
344
|
+
return false;
|
|
345
|
+
// Compare command
|
|
346
|
+
const propsCmd = Array.isArray(propsHc.cmd)
|
|
347
|
+
? propsHc.cmd.join(" ")
|
|
348
|
+
: propsHc.cmd;
|
|
349
|
+
const containerCmd = containerHc.Test
|
|
350
|
+
? containerHc.Test.slice(1).join(" ")
|
|
351
|
+
: "";
|
|
352
|
+
if (propsCmd !== containerCmd)
|
|
353
|
+
return false;
|
|
354
|
+
// Helper to convert Duration to nanoseconds for comparison
|
|
355
|
+
const toNanos = (d) => {
|
|
356
|
+
if (d === undefined)
|
|
357
|
+
return 0;
|
|
358
|
+
const str = normalizeDuration(d);
|
|
359
|
+
const match = str.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)$/);
|
|
360
|
+
if (!match)
|
|
361
|
+
return 0;
|
|
362
|
+
const value = parseFloat(match[1]);
|
|
363
|
+
const unit = match[2];
|
|
364
|
+
switch (unit) {
|
|
365
|
+
case "ms":
|
|
366
|
+
return value * 1_000_000;
|
|
367
|
+
case "s":
|
|
368
|
+
return value * 1_000_000_000;
|
|
369
|
+
case "m":
|
|
370
|
+
return value * 60 * 1_000_000_000;
|
|
371
|
+
case "h":
|
|
372
|
+
return value * 3600 * 1_000_000_000;
|
|
373
|
+
default:
|
|
374
|
+
return 0;
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
if (toNanos(propsHc.interval) !== (containerHc.Interval || 0))
|
|
378
|
+
return false;
|
|
379
|
+
if (toNanos(propsHc.timeout) !== (containerHc.Timeout || 0))
|
|
380
|
+
return false;
|
|
381
|
+
if ((propsHc.retries || 0) !== (containerHc.Retries || 0))
|
|
382
|
+
return false;
|
|
383
|
+
if (toNanos(propsHc.startPeriod) !== (containerHc.StartPeriod || 0))
|
|
384
|
+
return false;
|
|
385
|
+
if (toNanos(propsHc.startInterval) !== (containerHc.StartInterval || 0))
|
|
386
|
+
return false;
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Compare restart policy
|
|
391
|
+
* @internal
|
|
392
|
+
*/
|
|
393
|
+
function compareRestartPolicy(propsRestart, containerRestart) {
|
|
394
|
+
const propsPolicy = propsRestart || "no";
|
|
395
|
+
return propsPolicy === containerRestart.Name;
|
|
396
|
+
}
|
|
168
397
|
//# sourceMappingURL=container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/docker/container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/docker/container.ts"],"names":[],"mappings":"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"}
|
package/lib/test/bun.js
CHANGED
|
@@ -61,7 +61,7 @@ export function test(meta, defaultOptions) {
|
|
|
61
61
|
const _options = typeof args[1] === "object" ? args[1] : undefined;
|
|
62
62
|
const timeout = typeof args[args.length - 1] === "number"
|
|
63
63
|
? args[args.length - 1]
|
|
64
|
-
:
|
|
64
|
+
: 150000;
|
|
65
65
|
const spread = (obj) => obj && typeof obj === "object"
|
|
66
66
|
? Object.fromEntries(Object.entries(obj).flatMap(([k, v]) => v !== undefined ? [[k, v]] : []))
|
|
67
67
|
: {};
|
package/lib/test/vitest.js
CHANGED
|
@@ -84,7 +84,7 @@ export function test(meta, defaultOptions = {
|
|
|
84
84
|
const _options = typeof args[1] === "object" ? args[1] : undefined;
|
|
85
85
|
const timeout = typeof args[args.length - 1] === "number"
|
|
86
86
|
? args[args.length - 1]
|
|
87
|
-
:
|
|
87
|
+
: 150000;
|
|
88
88
|
const spread = (obj) => obj && typeof obj === "object"
|
|
89
89
|
? Object.fromEntries(Object.entries(obj).flatMap(([k, v]) => v !== undefined ? [[k, v]] : []))
|
|
90
90
|
: {};
|
package/package.json
CHANGED
package/src/cloudflare/index.ts
CHANGED
|
@@ -73,6 +73,7 @@ export * from "./vectorize-index.ts";
|
|
|
73
73
|
export * from "./vectorize-metadata-index.ts";
|
|
74
74
|
export * from "./version-metadata.ts";
|
|
75
75
|
export * from "./vite/vite.ts";
|
|
76
|
+
export * from "./vpc-service-ref.ts";
|
|
76
77
|
export * from "./vpc-service.ts";
|
|
77
78
|
export * from "./warp-default-profile.ts";
|
|
78
79
|
export * from "./warp-device-profile.ts";
|
|
@@ -2,17 +2,11 @@ import adapter, { type AdapterOptions } from "@sveltejs/adapter-cloudflare";
|
|
|
2
2
|
import type { Adapter } from "@sveltejs/kit";
|
|
3
3
|
import { getPlatformProxyOptions } from "../cloudflare-env-proxy.ts";
|
|
4
4
|
|
|
5
|
-
const isSvelteLanguageServer = !!process.argv.find((arg) =>
|
|
6
|
-
arg.includes("svelte-language-server"),
|
|
7
|
-
);
|
|
8
|
-
|
|
9
5
|
export default (options?: AdapterOptions): Adapter => {
|
|
10
|
-
if (
|
|
11
|
-
// the svelte language server runs from the root and therefore may be running in a different cwd than the `Website.cwd`
|
|
12
|
-
// for now, we work around this by returning a noop adapter to avoid breaking svelte intellisense
|
|
6
|
+
if (shouldDisable()) {
|
|
13
7
|
return {
|
|
14
|
-
adapt() {},
|
|
15
8
|
name: "alchemy-noop",
|
|
9
|
+
adapt() {},
|
|
16
10
|
};
|
|
17
11
|
}
|
|
18
12
|
const { platformProxy: proxyOptions, ...config } = options ?? {};
|
|
@@ -23,3 +17,18 @@ export default (options?: AdapterOptions): Adapter => {
|
|
|
23
17
|
...config,
|
|
24
18
|
});
|
|
25
19
|
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Return true for `svelte-language-server`, `svelte-check`, and `svelte-kit sync`. This is because:
|
|
23
|
+
* - The svelte language server runs from the root and therefore may be running in a different cwd than the `Website.cwd`, so disable to avoid breaking intellisense
|
|
24
|
+
* - The `svelte-check` and `svelte-kit sync` commands do not require Cloudflare-specific configuration, so disable to avoid breaking the commands
|
|
25
|
+
*/
|
|
26
|
+
function shouldDisable(argv = process.argv): boolean {
|
|
27
|
+
return (
|
|
28
|
+
argv.some(
|
|
29
|
+
(arg) =>
|
|
30
|
+
arg.includes("svelte-check") || arg.includes("svelte-language-server"),
|
|
31
|
+
) ||
|
|
32
|
+
(argv.some((arg) => arg.includes("svelte-kit")) && argv.includes("sync"))
|
|
33
|
+
);
|
|
34
|
+
}
|
|
@@ -2,6 +2,7 @@ import path from "pathe";
|
|
|
2
2
|
import { getPackageManagerRunner } from "../../util/detect-package-manager.ts";
|
|
3
3
|
import type { Assets } from "../assets.ts";
|
|
4
4
|
import type { Bindings } from "../bindings.ts";
|
|
5
|
+
import { withSkipPathValidation } from "../miniflare/paths.ts";
|
|
5
6
|
import {
|
|
6
7
|
spreadBuildProps,
|
|
7
8
|
spreadDevProps,
|
|
@@ -34,8 +35,9 @@ export async function Vite<B extends Bindings>(
|
|
|
34
35
|
port = args[index + 1];
|
|
35
36
|
} else {
|
|
36
37
|
try {
|
|
37
|
-
const config = await
|
|
38
|
-
|
|
38
|
+
const config = await withSkipPathValidation(
|
|
39
|
+
() =>
|
|
40
|
+
import(path.resolve(props.cwd ?? process.cwd(), "vite.config.ts")),
|
|
39
41
|
);
|
|
40
42
|
port = config.default?.server?.port ?? 5173;
|
|
41
43
|
} catch {}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createCloudflareApi, type CloudflareApiOptions } from "./api.ts";
|
|
2
|
+
import {
|
|
3
|
+
findVpcServiceByName,
|
|
4
|
+
getService,
|
|
5
|
+
type VpcService,
|
|
6
|
+
} from "./vpc-service.ts";
|
|
7
|
+
|
|
8
|
+
export type VpcServiceRefProps = CloudflareApiOptions &
|
|
9
|
+
(
|
|
10
|
+
| {
|
|
11
|
+
/**
|
|
12
|
+
* The Cloudflare-assigned ID for the VPC service.
|
|
13
|
+
*/
|
|
14
|
+
serviceId: string;
|
|
15
|
+
}
|
|
16
|
+
| {
|
|
17
|
+
/**
|
|
18
|
+
* The name of the VPC service.
|
|
19
|
+
*/
|
|
20
|
+
name: string;
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A reference to a VPC service.
|
|
26
|
+
*/
|
|
27
|
+
export type VpcServiceRef = VpcService;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Reference an existing [VPC Service](https://developers.cloudflare.com/workers-vpc/configuration/vpc-services/) without managing its lifecycle.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* // Reference by ID
|
|
35
|
+
* const vpcService = await VpcServiceRef({
|
|
36
|
+
* serviceId: "123e4567-e89b-12d3-a456-426614174000",
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* // Reference by name
|
|
43
|
+
* const vpcService = await VpcServiceRef({
|
|
44
|
+
* name: "my-vpc-service",
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export async function VpcServiceRef(
|
|
49
|
+
props: VpcServiceRefProps,
|
|
50
|
+
): Promise<VpcServiceRef> {
|
|
51
|
+
const api = await createCloudflareApi(props);
|
|
52
|
+
if ("name" in props) {
|
|
53
|
+
const service = await findVpcServiceByName(api, props.name);
|
|
54
|
+
if (!service) {
|
|
55
|
+
throw new Error(`VPC service "${props.name}" not found`);
|
|
56
|
+
}
|
|
57
|
+
return service;
|
|
58
|
+
}
|
|
59
|
+
return await getService(api, props.serviceId);
|
|
60
|
+
}
|
|
@@ -258,21 +258,18 @@ export const VpcService = Resource(
|
|
|
258
258
|
switch (this.phase) {
|
|
259
259
|
case "create": {
|
|
260
260
|
const adopt = props.adopt ?? this.scope.adopt;
|
|
261
|
-
|
|
261
|
+
return await createService(api, input).catch(async (err) => {
|
|
262
262
|
if (isCloudflareApiError(err, { code: 5101 }) && adopt) {
|
|
263
|
-
const
|
|
264
|
-
const service = services.find((s) => s.name === input.name);
|
|
263
|
+
const service = await findVpcServiceByName(api, input.name);
|
|
265
264
|
if (service) {
|
|
266
|
-
return await updateService(api, service.
|
|
265
|
+
return await updateService(api, service.serviceId, input);
|
|
267
266
|
}
|
|
268
267
|
}
|
|
269
268
|
throw err;
|
|
270
269
|
});
|
|
271
|
-
return formatOutput(service);
|
|
272
270
|
}
|
|
273
271
|
case "update": {
|
|
274
|
-
|
|
275
|
-
return formatOutput(service);
|
|
272
|
+
return await updateService(api, this.output.serviceId, input);
|
|
276
273
|
}
|
|
277
274
|
}
|
|
278
275
|
|
|
@@ -299,34 +296,6 @@ export const VpcService = Resource(
|
|
|
299
296
|
const { tunnel, ...rest } = network;
|
|
300
297
|
return { tunnel_id: tunnel.tunnelId, ...rest };
|
|
301
298
|
}
|
|
302
|
-
|
|
303
|
-
function formatOutput(service: ConnectivityService): VpcService {
|
|
304
|
-
return {
|
|
305
|
-
name: service.name,
|
|
306
|
-
serviceId: service.service_id,
|
|
307
|
-
serviceType: service.type,
|
|
308
|
-
tcpPort: service.tcp_port,
|
|
309
|
-
appProtocol: service.app_protocol,
|
|
310
|
-
httpPort: service.http_port,
|
|
311
|
-
httpsPort: service.https_port,
|
|
312
|
-
host:
|
|
313
|
-
"hostname" in service.host
|
|
314
|
-
? {
|
|
315
|
-
hostname: service.host.hostname,
|
|
316
|
-
resolverNetwork: {
|
|
317
|
-
tunnelId: service.host.resolver_network.tunnel_id,
|
|
318
|
-
resolverIps: service.host.resolver_network.resolver_ips,
|
|
319
|
-
},
|
|
320
|
-
}
|
|
321
|
-
: {
|
|
322
|
-
...service.host,
|
|
323
|
-
network: { tunnelId: service.host.network.tunnel_id },
|
|
324
|
-
},
|
|
325
|
-
createdAt: new Date(service.created_at).getTime(),
|
|
326
|
-
updatedAt: new Date(service.updated_at).getTime(),
|
|
327
|
-
type: "vpc_service",
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
299
|
},
|
|
331
300
|
);
|
|
332
301
|
|
|
@@ -337,14 +306,15 @@ export const VpcService = Resource(
|
|
|
337
306
|
export async function createService(
|
|
338
307
|
api: CloudflareApi,
|
|
339
308
|
body: ConnectivityService.Input,
|
|
340
|
-
): Promise<
|
|
341
|
-
|
|
342
|
-
|
|
309
|
+
): Promise<VpcService> {
|
|
310
|
+
const service = await extractCloudflareResult<ConnectivityService>(
|
|
311
|
+
"create connectivity service",
|
|
343
312
|
api.post(
|
|
344
313
|
`/accounts/${api.accountId}/connectivity/directory/services`,
|
|
345
314
|
body,
|
|
346
315
|
),
|
|
347
316
|
);
|
|
317
|
+
return formatVpcService(service);
|
|
348
318
|
}
|
|
349
319
|
|
|
350
320
|
/**
|
|
@@ -374,28 +344,32 @@ export async function deleteService(
|
|
|
374
344
|
export async function getService(
|
|
375
345
|
api: CloudflareApi,
|
|
376
346
|
serviceId: string,
|
|
377
|
-
): Promise<
|
|
378
|
-
|
|
347
|
+
): Promise<VpcService> {
|
|
348
|
+
const service = await extractCloudflareResult<ConnectivityService>(
|
|
379
349
|
`get connectivity service "${serviceId}"`,
|
|
380
350
|
api.get(
|
|
381
351
|
`/accounts/${api.accountId}/connectivity/directory/services/${serviceId}`,
|
|
382
352
|
),
|
|
383
353
|
);
|
|
354
|
+
return formatVpcService(service);
|
|
384
355
|
}
|
|
385
356
|
|
|
386
357
|
/**
|
|
387
358
|
* List connectivity (VPC) services for the account.
|
|
388
359
|
* @internal
|
|
389
360
|
*/
|
|
390
|
-
export async function
|
|
361
|
+
export async function findVpcServiceByName(
|
|
391
362
|
api: CloudflareApi,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
363
|
+
name: string,
|
|
364
|
+
): Promise<VpcService | undefined> {
|
|
365
|
+
const services = await extractCloudflareResult<ConnectivityService[]>(
|
|
366
|
+
"list connectivity services",
|
|
395
367
|
api.get(
|
|
396
368
|
`/accounts/${api.accountId}/connectivity/directory/services?per_page=1000`,
|
|
397
369
|
),
|
|
398
370
|
);
|
|
371
|
+
const service = services.find((s) => s.name === name);
|
|
372
|
+
return service ? formatVpcService(service) : undefined;
|
|
399
373
|
}
|
|
400
374
|
|
|
401
375
|
/**
|
|
@@ -406,14 +380,47 @@ export async function updateService(
|
|
|
406
380
|
api: CloudflareApi,
|
|
407
381
|
serviceId: string,
|
|
408
382
|
body: ConnectivityService.Input,
|
|
409
|
-
): Promise<
|
|
410
|
-
|
|
383
|
+
): Promise<VpcService> {
|
|
384
|
+
const service = await extractCloudflareResult<ConnectivityService>(
|
|
411
385
|
`update connectivity service "${serviceId}"`,
|
|
412
386
|
api.put(
|
|
413
387
|
`/accounts/${api.accountId}/connectivity/directory/services/${serviceId}`,
|
|
414
388
|
body,
|
|
415
389
|
),
|
|
416
390
|
);
|
|
391
|
+
return formatVpcService(service);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Format an API response into a VpcService resource.
|
|
396
|
+
* @internal
|
|
397
|
+
*/
|
|
398
|
+
function formatVpcService(service: ConnectivityService): VpcService {
|
|
399
|
+
return {
|
|
400
|
+
name: service.name,
|
|
401
|
+
serviceId: service.service_id,
|
|
402
|
+
serviceType: service.type,
|
|
403
|
+
tcpPort: service.tcp_port,
|
|
404
|
+
appProtocol: service.app_protocol,
|
|
405
|
+
httpPort: service.http_port,
|
|
406
|
+
httpsPort: service.https_port,
|
|
407
|
+
host:
|
|
408
|
+
"hostname" in service.host
|
|
409
|
+
? {
|
|
410
|
+
hostname: service.host.hostname,
|
|
411
|
+
resolverNetwork: {
|
|
412
|
+
tunnelId: service.host.resolver_network.tunnel_id,
|
|
413
|
+
resolverIps: service.host.resolver_network.resolver_ips,
|
|
414
|
+
},
|
|
415
|
+
}
|
|
416
|
+
: {
|
|
417
|
+
...service.host,
|
|
418
|
+
network: { tunnelId: service.host.network.tunnel_id },
|
|
419
|
+
},
|
|
420
|
+
createdAt: new Date(service.created_at).getTime(),
|
|
421
|
+
updatedAt: new Date(service.updated_at).getTime(),
|
|
422
|
+
type: "vpc_service",
|
|
423
|
+
};
|
|
417
424
|
}
|
|
418
425
|
|
|
419
426
|
interface ConnectivityService extends ConnectivityService.Input {
|