Skip to content

Commit 6b42c28

Browse files
add mixedModeConnectionString to the various binding configs (#9168)
1 parent 58ed58b commit 6b42c28

File tree

11 files changed

+101
-13
lines changed

11 files changed

+101
-13
lines changed

.changeset/chatty-years-speak.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
remove experimental `MixedModeConnectionString` type
6+
7+
remove the experimental `MixedModeConnectionString` type which
8+
is now exposed by Miniflare instead

.changeset/thin-years-jump.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"miniflare": patch
3+
---
4+
5+
add `mixedModeConnectionString` to the various binding configs

packages/miniflare/src/plugins/core/services.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { z } from "zod";
22
import { Request, Response } from "../../http";
3-
import { HOST_CAPNP_CONNECT, Miniflare } from "../../index";
3+
import {
4+
HOST_CAPNP_CONNECT,
5+
Miniflare,
6+
MixedModeConnectionString,
7+
} from "../../index";
48
import {
59
ExternalServer,
610
HttpOptions_Style,
@@ -91,6 +95,7 @@ export const ServiceDesignatorSchema = z.union([
9195
name: z.union([z.string(), z.literal(kCurrentWorker)]),
9296
entrypoint: z.ostring(),
9397
props: z.record(z.unknown()).optional(),
98+
mixedModeConnectionString: z.custom<MixedModeConnectionString>().optional(),
9499
}),
95100
z.object({ network: NetworkSchema }),
96101
z.object({ external: ExternalServerSchema }),

packages/miniflare/src/plugins/d1/index.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
getMiniflareObjectBindings,
1212
getPersistPath,
1313
migrateDatabase,
14+
MixedModeConnectionString,
1415
namespaceEntries,
1516
namespaceKeys,
1617
objectEntryWorker,
@@ -21,7 +22,20 @@ import {
2122
} from "../shared";
2223

2324
export const D1OptionsSchema = z.object({
24-
d1Databases: z.union([z.record(z.string()), z.string().array()]).optional(),
25+
d1Databases: z
26+
.union([
27+
z.record(z.string()),
28+
z.record(
29+
z.object({
30+
id: z.string(),
31+
mixedModeConnectionString: z
32+
.custom<MixedModeConnectionString>()
33+
.optional(),
34+
})
35+
),
36+
z.string().array(),
37+
])
38+
.optional(),
2539
});
2640
export const D1SharedOptionsSchema = z.object({
2741
d1Persist: PersistenceSchema,

packages/miniflare/src/plugins/do/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { getUserServiceName } from "../core";
55
import {
66
getPersistPath,
77
kUnsafeEphemeralUniqueKey,
8+
MixedModeConnectionString,
89
PersistenceSchema,
910
Plugin,
1011
ProxyNodeBinding,
@@ -29,6 +30,9 @@ export const DurableObjectsOptionsSchema = z.object({
2930
.optional(),
3031
// Prevents the Durable Object being evicted.
3132
unsafePreventEviction: z.boolean().optional(),
33+
mixedModeConnectionString: z
34+
.custom<MixedModeConnectionString>()
35+
.optional(),
3236
}),
3337
])
3438
)

packages/miniflare/src/plugins/kv/index.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
getMiniflareObjectBindings,
1313
getPersistPath,
1414
migrateDatabase,
15+
MixedModeConnectionString,
1516
namespaceEntries,
1617
namespaceKeys,
1718
objectEntryWorker,
@@ -29,7 +30,20 @@ import {
2930
} from "./sites";
3031

3132
export const KVOptionsSchema = z.object({
32-
kvNamespaces: z.union([z.record(z.string()), z.string().array()]).optional(),
33+
kvNamespaces: z
34+
.union([
35+
z.record(z.string()),
36+
z.record(
37+
z.object({
38+
id: z.string(),
39+
mixedModeConnectionString: z
40+
.custom<MixedModeConnectionString>()
41+
.optional(),
42+
})
43+
),
44+
z.string().array(),
45+
])
46+
.optional(),
3347

3448
// Workers Sites
3549
sitePath: PathSchema.optional(),

packages/miniflare/src/plugins/queues/index.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import { getUserServiceName } from "../core";
1616
import {
1717
getMiniflareObjectBindings,
18+
MixedModeConnectionString,
1819
objectEntryWorker,
1920
Plugin,
2021
ProxyNodeBinding,
@@ -24,7 +25,15 @@ import {
2425
export const QueuesOptionsSchema = z.object({
2526
queueProducers: z
2627
.union([
27-
z.record(QueueProducerOptionsSchema),
28+
z.record(
29+
QueueProducerOptionsSchema.merge(
30+
z.object({
31+
mixedModeConnectionString: z
32+
.custom<MixedModeConnectionString>()
33+
.optional(),
34+
})
35+
)
36+
),
2837
z.string().array(),
2938
z.record(z.string()),
3039
])

packages/miniflare/src/plugins/r2/index.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
getMiniflareObjectBindings,
1212
getPersistPath,
1313
migrateDatabase,
14+
MixedModeConnectionString,
1415
namespaceEntries,
1516
namespaceKeys,
1617
objectEntryWorker,
@@ -21,7 +22,20 @@ import {
2122
} from "../shared";
2223

2324
export const R2OptionsSchema = z.object({
24-
r2Buckets: z.union([z.record(z.string()), z.string().array()]).optional(),
25+
r2Buckets: z
26+
.union([
27+
z.record(z.string()),
28+
z.record(
29+
z.object({
30+
id: z.string(),
31+
mixedModeConnectionString: z
32+
.custom<MixedModeConnectionString>()
33+
.optional(),
34+
})
35+
),
36+
z.string().array(),
37+
])
38+
.optional(),
2539
});
2640
export const R2SharedOptionsSchema = z.object({
2741
r2Persist: PersistenceSchema,

packages/miniflare/src/plugins/shared/index.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export class ProxyNodeBinding {
125125
}
126126

127127
export function namespaceKeys(
128-
namespaces?: Record<string, string> | string[]
128+
namespaces?: Record<string, string | { id: string }> | string[]
129129
): string[] {
130130
if (Array.isArray(namespaces)) {
131131
return namespaces;
@@ -136,13 +136,28 @@ export function namespaceKeys(
136136
}
137137
}
138138

139+
export type MixedModeConnectionString = URL & {
140+
__brand: "MixedModeConnectionString";
141+
};
142+
139143
export function namespaceEntries(
140-
namespaces?: Record<string, string> | string[]
144+
namespaces?:
145+
| Record<
146+
string,
147+
| string
148+
| { id: string; mixedModeConnectionString?: MixedModeConnectionString }
149+
>
150+
| string[]
141151
): [bindingName: string, id: string][] {
142152
if (Array.isArray(namespaces)) {
143153
return namespaces.map((bindingName) => [bindingName, bindingName]);
144154
} else if (namespaces !== undefined) {
145-
return Object.entries(namespaces);
155+
return Object.entries(namespaces).map(([key, value]) => {
156+
if (typeof value === "string") {
157+
return [key, value];
158+
}
159+
return [key, value.id];
160+
});
146161
} else {
147162
return [];
148163
}

packages/miniflare/src/plugins/workflows/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Service } from "../../runtime";
55
import { getUserServiceName } from "../core";
66
import {
77
getPersistPath,
8+
MixedModeConnectionString,
89
PersistenceSchema,
910
Plugin,
1011
ProxyNodeBinding,
@@ -17,6 +18,9 @@ export const WorkflowsOptionsSchema = z.object({
1718
name: z.string(),
1819
className: z.string(),
1920
scriptName: z.string().optional(),
21+
mixedModeConnectionString: z
22+
.custom<MixedModeConnectionString>()
23+
.optional(),
2024
})
2125
)
2226
.optional(),

0 commit comments

Comments
 (0)