alchemy 0.84.0 → 0.85.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/api-error.d.ts +11 -0
- package/lib/cloudflare/api-error.d.ts.map +1 -1
- package/lib/cloudflare/api-error.js +11 -0
- package/lib/cloudflare/api-error.js.map +1 -1
- package/lib/cloudflare/api.js +1 -1
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +12 -2
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bindings.js.map +1 -1
- package/lib/cloudflare/bound.d.ts +2 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +9 -1
- package/lib/cloudflare/d1-database.js.map +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/miniflare/build-worker-options.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/build-worker-options.js +15 -0
- package/lib/cloudflare/miniflare/build-worker-options.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-controller.d.ts +1 -1
- package/lib/cloudflare/miniflare/miniflare-controller.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +41 -3
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/vpc-service.d.ts +288 -0
- package/lib/cloudflare/vpc-service.d.ts.map +1 -0
- package/lib/cloudflare/vpc-service.js +238 -0
- package/lib/cloudflare/vpc-service.js.map +1 -0
- package/lib/cloudflare/worker-metadata.d.ts +1 -0
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +8 -0
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +9 -0
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +9 -0
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/planetscale/api/sdk.gen.d.ts +874 -190
- package/lib/planetscale/api/sdk.gen.d.ts.map +1 -1
- package/lib/planetscale/api/sdk.gen.js +1250 -306
- package/lib/planetscale/api/sdk.gen.js.map +1 -1
- package/lib/planetscale/api/types.gen.d.ts +8241 -4128
- package/lib/planetscale/api/types.gen.d.ts.map +1 -1
- package/lib/planetscale/branch.js +4 -4
- package/lib/planetscale/branch.js.map +1 -1
- package/lib/planetscale/database.d.ts +43 -24
- package/lib/planetscale/database.d.ts.map +1 -1
- package/lib/planetscale/database.js +39 -18
- package/lib/planetscale/database.js.map +1 -1
- package/lib/planetscale/default-role.d.ts +51 -0
- package/lib/planetscale/default-role.d.ts.map +1 -0
- package/lib/planetscale/default-role.js +100 -0
- package/lib/planetscale/default-role.js.map +1 -0
- package/lib/planetscale/index.d.ts +1 -0
- package/lib/planetscale/index.d.ts.map +1 -1
- package/lib/planetscale/index.js +1 -0
- package/lib/planetscale/index.js.map +1 -1
- package/lib/planetscale/organization.js +1 -1
- package/lib/planetscale/organization.js.map +1 -1
- package/lib/planetscale/role.d.ts +1 -1
- package/lib/planetscale/role.d.ts.map +1 -1
- package/lib/planetscale/role.js +1 -1
- package/lib/planetscale/role.js.map +1 -1
- package/lib/planetscale/utils.d.ts +1 -1
- package/lib/planetscale/utils.d.ts.map +1 -1
- package/lib/planetscale/utils.js +9 -10
- package/lib/planetscale/utils.js.map +1 -1
- package/lib/state/sqlite-state-store.js +2 -0
- package/lib/state/sqlite-state-store.js.map +1 -1
- package/package.json +2 -2
- package/src/cloudflare/api-error.ts +19 -0
- package/src/cloudflare/api.ts +1 -1
- package/src/cloudflare/bindings.ts +15 -2
- package/src/cloudflare/bound.ts +6 -3
- package/src/cloudflare/d1-database.ts +11 -4
- package/src/cloudflare/index.ts +1 -0
- package/src/cloudflare/miniflare/build-worker-options.ts +30 -18
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +47 -2
- package/src/cloudflare/vpc-service.ts +466 -0
- package/src/cloudflare/worker-metadata.ts +8 -0
- package/src/cloudflare/worker.ts +9 -0
- package/src/cloudflare/wrangler.json.ts +8 -0
- package/src/planetscale/api/sdk.gen.ts +2331 -987
- package/src/planetscale/api/types.gen.ts +8980 -4574
- package/src/planetscale/branch.ts +4 -4
- package/src/planetscale/database.ts +87 -46
- package/src/planetscale/default-role.ts +162 -0
- package/src/planetscale/index.ts +1 -0
- package/src/planetscale/organization.ts +1 -1
- package/src/planetscale/role.ts +3 -2
- package/src/planetscale/utils.ts +10 -10
- package/src/state/sqlite-state-store.ts +2 -0
- package/workers/tunnel-proxy.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/planetscale/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9B,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAaT;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GAAG,YAAY,EAC5B,mBAAmB,EAAE,sBAAsB,GAC1C,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/planetscale/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9B,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAaT;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GAAG,YAAY,EAC5B,mBAAmB,EAAE,sBAAsB,GAC1C,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
package/lib/planetscale/utils.js
CHANGED
|
@@ -23,7 +23,7 @@ export async function waitForBranchReady(api, organization, database, branch) {
|
|
|
23
23
|
const { data } = await poll({
|
|
24
24
|
description: `branch "${branch}" ready`,
|
|
25
25
|
fn: () => api.getBranch({
|
|
26
|
-
path: { organization, database,
|
|
26
|
+
path: { organization, database, branch },
|
|
27
27
|
}),
|
|
28
28
|
predicate: ({ data }) => data.ready,
|
|
29
29
|
});
|
|
@@ -36,7 +36,7 @@ export async function waitForDatabaseReady(api, organization, database) {
|
|
|
36
36
|
await poll({
|
|
37
37
|
description: `database "${database}" ready`,
|
|
38
38
|
fn: () => api.getDatabase({
|
|
39
|
-
path: { organization,
|
|
39
|
+
path: { organization, database },
|
|
40
40
|
}),
|
|
41
41
|
predicate: ({ data }) => data.ready,
|
|
42
42
|
});
|
|
@@ -69,9 +69,8 @@ export async function ensureProductionBranchClusterSize(api, organization, datab
|
|
|
69
69
|
break;
|
|
70
70
|
}
|
|
71
71
|
case "postgresql": {
|
|
72
|
-
// Postgres databases
|
|
72
|
+
// Postgres databases do not need to be promoted; PS_DEV is development and all others are production
|
|
73
73
|
await ensurePostgresClusterSize(api, organization, database, branch, expectedClusterSize);
|
|
74
|
-
await ensureProductionBranch(api, organization, database, branch);
|
|
75
74
|
break;
|
|
76
75
|
}
|
|
77
76
|
}
|
|
@@ -79,20 +78,20 @@ export async function ensureProductionBranchClusterSize(api, organization, datab
|
|
|
79
78
|
/**
|
|
80
79
|
* Checks if a branch is production and promotes it if it is not.
|
|
81
80
|
*/
|
|
82
|
-
async function ensureProductionBranch(api, organization, database,
|
|
81
|
+
async function ensureProductionBranch(api, organization, database, branch) {
|
|
83
82
|
const { data } = await api.getBranch({
|
|
84
83
|
path: {
|
|
85
84
|
organization,
|
|
86
85
|
database,
|
|
87
|
-
|
|
86
|
+
branch,
|
|
88
87
|
},
|
|
89
88
|
});
|
|
90
89
|
if (!data.production) {
|
|
91
90
|
if (!data.ready) {
|
|
92
|
-
await waitForBranchReady(api, organization, database,
|
|
91
|
+
await waitForBranchReady(api, organization, database, branch);
|
|
93
92
|
}
|
|
94
93
|
await api.promoteBranch({
|
|
95
|
-
path: { organization, database,
|
|
94
|
+
path: { organization, database, branch },
|
|
96
95
|
});
|
|
97
96
|
}
|
|
98
97
|
}
|
|
@@ -121,7 +120,7 @@ async function ensureMySQLClusterSize(api, organization, database, branch, expec
|
|
|
121
120
|
path: {
|
|
122
121
|
organization,
|
|
123
122
|
database,
|
|
124
|
-
|
|
123
|
+
branch,
|
|
125
124
|
},
|
|
126
125
|
body: { cluster_size: expectedClusterSize },
|
|
127
126
|
});
|
|
@@ -137,7 +136,7 @@ async function ensurePostgresClusterSize(api, organization, database, branch, ex
|
|
|
137
136
|
path: {
|
|
138
137
|
organization,
|
|
139
138
|
database,
|
|
140
|
-
|
|
139
|
+
branch,
|
|
141
140
|
},
|
|
142
141
|
});
|
|
143
142
|
if (data.cluster_name === expectedClusterSize) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/planetscale/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/planetscale/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,7 @@ async function createBunSQLiteDatabase(options) {
|
|
|
61
61
|
create: true,
|
|
62
62
|
...bunOptions,
|
|
63
63
|
});
|
|
64
|
+
client.exec("PRAGMA busy_timeout = 5000;");
|
|
64
65
|
client.exec("PRAGMA journal_mode = WAL;");
|
|
65
66
|
const db = drizzle(client, {
|
|
66
67
|
schema,
|
|
@@ -80,6 +81,7 @@ async function createLibSQLDatabase(options) {
|
|
|
80
81
|
const { migrate } = await import("drizzle-orm/libsql/migrator");
|
|
81
82
|
const schema = await import("./schema.js");
|
|
82
83
|
const client = createClient({ url, ...options });
|
|
84
|
+
await client.execute("PRAGMA busy_timeout = 5000;");
|
|
83
85
|
await client.execute("PRAGMA journal_mode = WAL;");
|
|
84
86
|
const db = drizzle(client, {
|
|
85
87
|
schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-state-store.js","sourceRoot":"","sources":["../../src/state/sqlite-state-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite-state-store.js","sourceRoot":"","sources":["../../src/state/sqlite-state-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alchemy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Sam Goodwin <sam@alchemy.run>",
|
|
6
6
|
"homepage": "https://alchemy.run",
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
"rwsdk": "^1.0.0-beta.51",
|
|
226
226
|
"stripe": "^18.5.0",
|
|
227
227
|
"vite": ">=6.0.0",
|
|
228
|
-
"wrangler": "^4.
|
|
228
|
+
"wrangler": "^4.65.0"
|
|
229
229
|
},
|
|
230
230
|
"peerDependenciesMeta": {
|
|
231
231
|
"@astrojs/cloudflare": {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { CloudflareApiErrorPayload } from "./api-response";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Custom error class for Cloudflare API errors
|
|
3
5
|
* Includes HTTP status information from the Response
|
|
@@ -66,3 +68,20 @@ export async function handleApiError(
|
|
|
66
68
|
}: ${errors.map((error) => `${error.code}: ${error.message}`).join(", ")}`;
|
|
67
69
|
throw new CloudflareApiError(errorMessage, response, errors);
|
|
68
70
|
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Helper function to check if an error is a Cloudflare API error.
|
|
74
|
+
* Optional match criteria can be provided to check for a specific HTTP status code or error code.
|
|
75
|
+
*/
|
|
76
|
+
export function isCloudflareApiError(
|
|
77
|
+
error: unknown,
|
|
78
|
+
match: { status?: number; code?: number } = {},
|
|
79
|
+
): error is CloudflareApiError & { errorData: CloudflareApiErrorPayload[] } {
|
|
80
|
+
return (
|
|
81
|
+
error instanceof CloudflareApiError &&
|
|
82
|
+
(match.status === undefined || error.status === match.status) &&
|
|
83
|
+
(match.code === undefined ||
|
|
84
|
+
(Array.isArray(error.errorData) &&
|
|
85
|
+
error.errorData.some((e) => "code" in e && e.code === match.code)))
|
|
86
|
+
);
|
|
87
|
+
}
|
package/src/cloudflare/api.ts
CHANGED
|
@@ -26,6 +26,7 @@ import type { SecretRef as CloudflareSecretRef } from "./secret-ref.ts";
|
|
|
26
26
|
import type { Secret as CloudflareSecret } from "./secret.ts";
|
|
27
27
|
import type { VectorizeIndex } from "./vectorize-index.ts";
|
|
28
28
|
import type { VersionMetadata } from "./version-metadata.ts";
|
|
29
|
+
import type { VpcService } from "./vpc-service.ts";
|
|
29
30
|
import type { WorkerLoader } from "./worker-loader.ts";
|
|
30
31
|
import type { WorkerRef } from "./worker-ref.ts";
|
|
31
32
|
import type { WorkerStub } from "./worker-stub.ts";
|
|
@@ -82,7 +83,8 @@ export type Binding =
|
|
|
82
83
|
| BrowserRendering
|
|
83
84
|
| VersionMetadata
|
|
84
85
|
| Self
|
|
85
|
-
| Json
|
|
86
|
+
| Json
|
|
87
|
+
| VpcService;
|
|
86
88
|
|
|
87
89
|
export type Self<
|
|
88
90
|
RPC extends Rpc.WorkerEntrypointBranded = Rpc.WorkerEntrypointBranded,
|
|
@@ -143,7 +145,8 @@ export type WorkerBindingSpec =
|
|
|
143
145
|
| WorkerBindingVersionMetadata
|
|
144
146
|
| WorkerBindingWasmModule
|
|
145
147
|
| WorkerBindingWorkerLoader
|
|
146
|
-
| WorkerBindingWorkflow
|
|
148
|
+
| WorkerBindingWorkflow
|
|
149
|
+
| WorkerBindingVpcService;
|
|
147
150
|
|
|
148
151
|
/**
|
|
149
152
|
* AI binding type
|
|
@@ -499,6 +502,16 @@ export interface WorkerBindingWorkflow {
|
|
|
499
502
|
script_name?: string;
|
|
500
503
|
}
|
|
501
504
|
|
|
505
|
+
export interface WorkerBindingVpcService {
|
|
506
|
+
/** The name of the binding */
|
|
507
|
+
name: string;
|
|
508
|
+
/** Type identifier for VPC Service binding */
|
|
509
|
+
type: "vpc_service";
|
|
510
|
+
/** VPC Service name */
|
|
511
|
+
service_name: string;
|
|
512
|
+
service_id: string;
|
|
513
|
+
}
|
|
514
|
+
|
|
502
515
|
/**
|
|
503
516
|
* Images binding type
|
|
504
517
|
*/
|
package/src/cloudflare/bound.ts
CHANGED
|
@@ -20,6 +20,7 @@ import type { SecretRef as CloudflareSecretRef } from "./secret-ref.ts";
|
|
|
20
20
|
import type { Secret as CloudflareSecret } from "./secret.ts";
|
|
21
21
|
import type { VectorizeIndex as _VectorizeIndex } from "./vectorize-index.ts";
|
|
22
22
|
import type { VersionMetadata as _VersionMetadata } from "./version-metadata.ts";
|
|
23
|
+
import type { VpcService as _VpcService } from "./vpc-service.ts";
|
|
23
24
|
import type { WorkerLoader as _WorkerLoader } from "./worker-loader.ts";
|
|
24
25
|
import type { WorkerRef } from "./worker-ref.ts";
|
|
25
26
|
import type { WorkerStub } from "./worker-stub.ts";
|
|
@@ -105,6 +106,8 @@ export type Bound<T extends Binding> =
|
|
|
105
106
|
Obj &
|
|
106
107
|
Rpc.DurableObjectBranded
|
|
107
108
|
>
|
|
108
|
-
: T extends
|
|
109
|
-
?
|
|
110
|
-
:
|
|
109
|
+
: T extends _VpcService
|
|
110
|
+
? Fetcher
|
|
111
|
+
: T extends undefined
|
|
112
|
+
? undefined
|
|
113
|
+
: Service;
|
|
@@ -540,10 +540,17 @@ export async function deleteDatabase(
|
|
|
540
540
|
api: CloudflareApi,
|
|
541
541
|
databaseId: string,
|
|
542
542
|
): Promise<void> {
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
543
|
+
try {
|
|
544
|
+
await extractCloudflareResult(
|
|
545
|
+
`delete D1 database "${databaseId}"`,
|
|
546
|
+
api.delete(`/accounts/${api.accountId}/d1/database/${databaseId}`),
|
|
547
|
+
);
|
|
548
|
+
} catch (error) {
|
|
549
|
+
if (error instanceof CloudflareApiError && error.status === 404) {
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
throw error;
|
|
553
|
+
}
|
|
547
554
|
}
|
|
548
555
|
|
|
549
556
|
/**
|
package/src/cloudflare/index.ts
CHANGED
|
@@ -70,6 +70,7 @@ export * from "./vectorize-index.ts";
|
|
|
70
70
|
export * from "./vectorize-metadata-index.ts";
|
|
71
71
|
export * from "./version-metadata.ts";
|
|
72
72
|
export * from "./vite/vite.ts";
|
|
73
|
+
export * from "./vpc-service.ts";
|
|
73
74
|
export * from "./warp-default-profile.ts";
|
|
74
75
|
export * from "./warp-device-profile.ts";
|
|
75
76
|
export * from "./website.ts";
|
|
@@ -31,29 +31,26 @@ export interface MiniflareWorkerInput {
|
|
|
31
31
|
cwd: string;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
type RemoteOnlyBindingType =
|
|
35
|
-
| "ai"
|
|
36
|
-
| "browser"
|
|
37
|
-
| "dispatch_namespace"
|
|
38
|
-
| "mtls_certificate"
|
|
39
|
-
| "vectorize";
|
|
40
|
-
type RemoteOptionalBindingType =
|
|
41
|
-
| "d1"
|
|
42
|
-
| "images"
|
|
43
|
-
| "kv_namespace"
|
|
44
|
-
| "queue"
|
|
45
|
-
| "r2_bucket";
|
|
46
|
-
|
|
47
34
|
type RemoteBinding =
|
|
35
|
+
// Supported remote bindings that are NOT a fetcher require the `raw` flag.
|
|
48
36
|
| (Extract<
|
|
49
37
|
WorkerBindingSpec,
|
|
50
38
|
{
|
|
51
|
-
type:
|
|
39
|
+
type:
|
|
40
|
+
| "ai"
|
|
41
|
+
| "browser"
|
|
42
|
+
| "dispatch_namespace"
|
|
43
|
+
| "mtls_certificate"
|
|
44
|
+
| "vectorize"
|
|
45
|
+
| "d1"
|
|
46
|
+
| "images"
|
|
47
|
+
| "kv_namespace"
|
|
48
|
+
| "queue"
|
|
49
|
+
| "r2_bucket";
|
|
52
50
|
}
|
|
53
|
-
> & {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
| WorkerBindingService;
|
|
51
|
+
> & { raw: true })
|
|
52
|
+
// Fetcher type bindings do not require the `raw` flag and will throw an error if it is present.
|
|
53
|
+
| Extract<WorkerBindingSpec, { type: "service" | "vpc_service" }>;
|
|
57
54
|
|
|
58
55
|
type BaseWorkerOptions = {
|
|
59
56
|
[K in keyof miniflare.WorkerOptions]: K extends
|
|
@@ -324,6 +321,15 @@ export const buildWorkerOptions = async (
|
|
|
324
321
|
};
|
|
325
322
|
break;
|
|
326
323
|
}
|
|
324
|
+
case "vpc_service": {
|
|
325
|
+
remoteBindings.push({
|
|
326
|
+
type: "vpc_service",
|
|
327
|
+
name: key,
|
|
328
|
+
service_name: binding.name,
|
|
329
|
+
service_id: binding.serviceId,
|
|
330
|
+
});
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
327
333
|
case "worker_loader": {
|
|
328
334
|
(options.workerLoaders ??= {})[key] = {};
|
|
329
335
|
break;
|
|
@@ -447,6 +453,12 @@ export const buildWorkerOptions = async (
|
|
|
447
453
|
remoteProxyConnectionString: remoteProxy.connectionString,
|
|
448
454
|
};
|
|
449
455
|
break;
|
|
456
|
+
case "vpc_service":
|
|
457
|
+
(options.vpcServices ??= {})[binding.name] = {
|
|
458
|
+
service_id: binding.service_id,
|
|
459
|
+
remoteProxyConnectionString: remoteProxy.connectionString,
|
|
460
|
+
};
|
|
461
|
+
break;
|
|
450
462
|
default: {
|
|
451
463
|
assertNever(binding);
|
|
452
464
|
}
|
|
@@ -32,10 +32,12 @@ export async function createMiniflareWorkerProxy(options: {
|
|
|
32
32
|
|
|
33
33
|
server.on("request", async (req, res) => {
|
|
34
34
|
try {
|
|
35
|
-
const response = await handleFetch(req);
|
|
35
|
+
const response = await handleFetch(req, res);
|
|
36
36
|
writeMiniflareResponseToNode(response, res);
|
|
37
37
|
} catch (error) {
|
|
38
|
-
|
|
38
|
+
if (!(error instanceof DOMException && error.name === "AbortError")) {
|
|
39
|
+
console.error(error);
|
|
40
|
+
}
|
|
39
41
|
const response = MiniflareWorkerProxyError.fromUnknown(error).toResponse(
|
|
40
42
|
options.mode,
|
|
41
43
|
);
|
|
@@ -45,6 +47,7 @@ export async function createMiniflareWorkerProxy(options: {
|
|
|
45
47
|
|
|
46
48
|
const handleFetch = async (
|
|
47
49
|
req: http.IncomingMessage,
|
|
50
|
+
res: http.ServerResponse,
|
|
48
51
|
): Promise<miniflare.Response> => {
|
|
49
52
|
const info = parseIncomingMessage(req);
|
|
50
53
|
options.transformRequest?.(info);
|
|
@@ -60,12 +63,14 @@ export async function createMiniflareWorkerProxy(options: {
|
|
|
60
63
|
info.url.pathname = "/cdn-cgi/handler/scheduled";
|
|
61
64
|
}
|
|
62
65
|
|
|
66
|
+
const signal = getDisconnectSignal(req, res);
|
|
63
67
|
const request = new miniflare.Request(info.url, {
|
|
64
68
|
method: info.method,
|
|
65
69
|
headers: info.headers,
|
|
66
70
|
body: info.body,
|
|
67
71
|
redirect: info.redirect,
|
|
68
72
|
duplex: info.duplex,
|
|
73
|
+
signal,
|
|
69
74
|
});
|
|
70
75
|
return await options.miniflare.dispatchFetch(request);
|
|
71
76
|
};
|
|
@@ -114,6 +119,46 @@ export async function createMiniflareWorkerProxy(options: {
|
|
|
114
119
|
};
|
|
115
120
|
}
|
|
116
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Creates an abort signal that is triggered when the downstream client
|
|
124
|
+
* disconnects before the response is fully written.
|
|
125
|
+
*
|
|
126
|
+
* This signal should be forwarded to Miniflare dispatch so Worker `req.signal`
|
|
127
|
+
* listeners can observe local client cancellation.
|
|
128
|
+
*/
|
|
129
|
+
function getDisconnectSignal(
|
|
130
|
+
req: http.IncomingMessage,
|
|
131
|
+
res: http.ServerResponse,
|
|
132
|
+
): AbortSignal {
|
|
133
|
+
const controller = new AbortController();
|
|
134
|
+
const onAbort = () => {
|
|
135
|
+
if (!controller.signal.aborted) {
|
|
136
|
+
controller.abort();
|
|
137
|
+
}
|
|
138
|
+
cleanup();
|
|
139
|
+
};
|
|
140
|
+
const onClose = () => {
|
|
141
|
+
if (!res.writableEnded) {
|
|
142
|
+
onAbort();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
cleanup();
|
|
146
|
+
};
|
|
147
|
+
const cleanup = () => {
|
|
148
|
+
req.off("aborted", onAbort);
|
|
149
|
+
req.socket?.off("close", onClose);
|
|
150
|
+
res.off("close", onClose);
|
|
151
|
+
res.off("finish", cleanup);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
req.on("aborted", onAbort);
|
|
155
|
+
req.socket?.on("close", onClose);
|
|
156
|
+
res.on("close", onClose);
|
|
157
|
+
res.on("finish", cleanup);
|
|
158
|
+
|
|
159
|
+
return controller.signal;
|
|
160
|
+
}
|
|
161
|
+
|
|
117
162
|
/**
|
|
118
163
|
* Listens on the given port, retrying on the next port if the port is already in use.
|
|
119
164
|
*/
|