Skip to content

Commit 194d75e

Browse files
authored
[wrangler] Generate Fetcher for unsafe.bindings service entries (#13772)
1 parent 84226e6 commit 194d75e

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
Fix `wrangler types` to generate `Fetcher` for `unsafe.bindings` entries with `type: "service"`
6+
7+
Previously, all entries in `unsafe.bindings` (other than `ratelimit`) generated a fallback `any` type. `wrangler types` now generates `Fetcher` for unsafe bindings declared with `type: "service"`, matching the type used for regular service bindings.

packages/wrangler/src/__tests__/type-generation.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,11 @@ const bindingsConfigMock: Omit<
500500
bindings: [
501501
{ name: "testing_unsafe", type: "plain_text" },
502502
{ name: "UNSAFE_RATELIMIT", type: "ratelimit" },
503+
{
504+
name: "UNSAFE_SERVICE_BINDING",
505+
type: "service",
506+
service: "some-unsafe-service",
507+
},
503508
],
504509
metadata: { some_key: "some_value" },
505510
},
@@ -809,6 +814,7 @@ describe("generate types - CLI", () => {
809814
MY_WORKFLOW: Workflow<Parameters<import("./index").MyWorkflow['run']>[0]['payload']>;
810815
testing_unsafe: any;
811816
UNSAFE_RATELIMIT: RateLimit;
817+
UNSAFE_SERVICE_BINDING: Fetcher;
812818
SOME_DATA_BLOB1: ArrayBuffer;
813819
SOME_DATA_BLOB2: ArrayBuffer;
814820
SOME_TEXT_BLOB1: string;
@@ -927,6 +933,7 @@ describe("generate types - CLI", () => {
927933
MY_WORKFLOW: Workflow<Parameters<import("./index").MyWorkflow['run']>[0]['payload']>;
928934
testing_unsafe: any;
929935
UNSAFE_RATELIMIT: RateLimit;
936+
UNSAFE_SERVICE_BINDING: Fetcher;
930937
SOME_DATA_BLOB1: ArrayBuffer;
931938
SOME_DATA_BLOB2: ArrayBuffer;
932939
SOME_TEXT_BLOB1: string;
@@ -1107,6 +1114,7 @@ describe("generate types - CLI", () => {
11071114
MY_WORKFLOW: Workflow<Parameters<import("./index").MyWorkflow['run']>[0]['payload']>;
11081115
testing_unsafe: any;
11091116
UNSAFE_RATELIMIT: RateLimit;
1117+
UNSAFE_SERVICE_BINDING: Fetcher;
11101118
SOME_DATA_BLOB1: ArrayBuffer;
11111119
SOME_DATA_BLOB2: ArrayBuffer;
11121120
SOME_TEXT_BLOB1: string;
@@ -1474,6 +1482,7 @@ describe("generate types - CLI", () => {
14741482
declare global {
14751483
const testing_unsafe: any;
14761484
const UNSAFE_RATELIMIT: RateLimit;
1485+
const UNSAFE_SERVICE_BINDING: Fetcher;
14771486
}
14781487
14791488
────────────────────────────────────────────────────────────

packages/wrangler/src/type-generation/index.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,14 @@ async function generateSimpleEnvTypes(
10591059
continue;
10601060
}
10611061

1062+
if (unsafe.type === "service") {
1063+
envTypeStructure.push({
1064+
key: constructTypeKey(unsafe.name),
1065+
type: "Fetcher",
1066+
});
1067+
continue;
1068+
}
1069+
10621070
envTypeStructure.push({
10631071
key: constructTypeKey(unsafe.name),
10641072
type: "any",
@@ -1384,7 +1392,12 @@ async function generatePerEnvironmentTypes(
13841392

13851393
const unsafeBindings = unsafePerEnv.get(envName) ?? [];
13861394
for (const unsafe of unsafeBindings) {
1387-
const type = unsafe.type === "ratelimit" ? "RateLimit" : "any";
1395+
const type =
1396+
unsafe.type === "ratelimit"
1397+
? "RateLimit"
1398+
: unsafe.type === "service"
1399+
? "Fetcher"
1400+
: "any";
13881401
envBindings.push({ key: constructTypeKey(unsafe.name), value: type });
13891402
trackBinding(unsafe.name, type, envName);
13901403
}

0 commit comments

Comments
 (0)