Skip to content

Commit c117904

Browse files
allow startWorker to accept false as an inspector option (to disable the inspector server) (#9550)
1 parent 2177fb4 commit c117904

File tree

12 files changed

+148
-77
lines changed

12 files changed

+148
-77
lines changed

.changeset/true-cities-try.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
allow `startWorker` to accept `false` as an `inspector` option (to disable the inspector server)

fixtures/start-worker-node-test/src/config-errors.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ describe("startWorker - configuration errors", () => {
5454
server: {
5555
port: await getPort(),
5656
},
57-
inspector: { port: await getPort() },
57+
inspector: false,
5858
},
5959
});
6060

@@ -80,7 +80,7 @@ describe("startWorker - configuration errors", () => {
8080
server: {
8181
port: await getPort(),
8282
},
83-
inspector: { port: await getPort() },
83+
inspector: false,
8484
},
8585
});
8686

packages/wrangler/e2e/startWorker.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,12 @@ describe.each(OPTIONS)("DevEnv (remote: $remote)", ({ remote }) => {
108108
});
109109

110110
const inspectorUrl = await worker.inspectorUrl;
111+
assert(inspectorUrl, "missing inspectorUrl");
111112
const res = await undici.fetch(`http://${inspectorUrl.host}/json`);
112113

113114
await expect(res.json()).resolves.toBeInstanceOf(Array);
114115

116+
assert(inspectorUrl, "missing inspectorUrl");
115117
const ws = new WebSocket(inspectorUrl.href);
116118
const openPromise = events.once(ws, "open");
117119

@@ -178,6 +180,7 @@ describe.each(OPTIONS)("DevEnv (remote: $remote)", ({ remote }) => {
178180

179181
const inspectorUrl = await worker.inspectorUrl;
180182

183+
assert(inspectorUrl, "missing inspectorUrl");
181184
let ws = new WebSocket(inspectorUrl.href, {
182185
setHost: false,
183186
headers: { Host: "example.com" },
@@ -187,6 +190,7 @@ describe.each(OPTIONS)("DevEnv (remote: $remote)", ({ remote }) => {
187190
await expect(openPromise).rejects.toThrow("Unexpected server response");
188191

189192
// Check validates `Origin` header
193+
assert(inspectorUrl, "missing inspectorUrl");
190194
ws = new WebSocket(inspectorUrl.href, { origin: "https://example.com" });
191195
openPromise = events.once(ws, "open");
192196
await expect(openPromise).rejects.toThrow("Unexpected server response");
@@ -236,6 +240,7 @@ describe.each(OPTIONS)("DevEnv (remote: $remote)", ({ remote }) => {
236240
});
237241

238242
const inspectorUrl = await worker.inspectorUrl;
243+
assert(inspectorUrl, "missing inspectorUrl");
239244
const ws = new WebSocket(inspectorUrl.href);
240245

241246
const consoleApiMessages: DevToolsEvent<"Runtime.consoleAPICalled">[] =
@@ -357,7 +362,7 @@ describe.each(OPTIONS)("DevEnv (remote: $remote)", ({ remote }) => {
357362
dev: {
358363
remote,
359364
server: { port: await getPort() },
360-
inspector: { port: await getPort() },
365+
inspector: false,
361366
},
362367
});
363368

@@ -373,7 +378,7 @@ describe.each(OPTIONS)("DevEnv (remote: $remote)", ({ remote }) => {
373378
...worker.config.dev,
374379
remote,
375380
server: { port: await getPort() },
376-
inspector: { port: await getPort() },
381+
inspector: false,
377382
},
378383
});
379384
const newPort = worker.config.dev?.server?.port;

packages/wrangler/src/__tests__/api/startDevWorker/LocalRuntimeController.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ describe("LocalRuntimeController", () => {
535535
});
536536
const event = await waitForReloadComplete(controller);
537537
const url = urlFromParts(event.proxyData.userWorkerUrl);
538+
assert(event.proxyData.userWorkerInspectorUrl);
538539
const inspectorUrl = urlFromParts(event.proxyData.userWorkerInspectorUrl);
539540

540541
// Connect inspector WebSocket

packages/wrangler/src/__tests__/dev.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,6 +1122,7 @@ describe.sequential("wrangler dev", () => {
11221122
});
11231123
fs.writeFileSync("index.js", `export default {};`);
11241124
const config = await runWranglerUntilConfig("dev");
1125+
assert(typeof config.dev.inspector === "object");
11251126
expect(config.dev.inspector?.port).toEqual(9229);
11261127
});
11271128

@@ -1132,6 +1133,7 @@ describe.sequential("wrangler dev", () => {
11321133
});
11331134
fs.writeFileSync("index.js", `export default {};`);
11341135
const config = await runWranglerUntilConfig("dev --inspector-port=9999");
1136+
assert(typeof config.dev.inspector === "object");
11351137
expect(config.dev.inspector?.port).toEqual(9999);
11361138
});
11371139

@@ -1144,6 +1146,7 @@ describe.sequential("wrangler dev", () => {
11441146
});
11451147
fs.writeFileSync("index.js", `export default {};`);
11461148
const config = await runWranglerUntilConfig("dev");
1149+
assert(typeof config.dev.inspector === "object");
11471150
expect(config.dev.inspector?.port).toEqual(9999);
11481151
});
11491152

packages/wrangler/src/api/mixedMode/index.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,7 @@ export async function startMixedModeSession(
5353
server: {
5454
port: await getPort(),
5555
},
56-
// TODO(DEVX-1861): we set this to a random port so that it doesn't conflict with the
57-
// default one, we should ideally add an option to actually disable
58-
// the inspector
59-
inspector: {
60-
port: await getPort(),
61-
},
56+
inspector: false,
6257
logLevel: "error",
6358
},
6459
bindings: rawBindings,

packages/wrangler/src/api/startDevWorker/ConfigController.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,15 @@ async function resolveDevConfig(
128128
httpsKeyPath: input.dev?.server?.httpsKeyPath,
129129
httpsCertPath: input.dev?.server?.httpsCertPath,
130130
},
131-
inspector: {
132-
port:
133-
input.dev?.inspector?.port ??
134-
config.dev.inspector_port ??
135-
(await getInspectorPort()),
136-
},
131+
inspector:
132+
input.dev?.inspector === false
133+
? false
134+
: {
135+
port:
136+
input.dev?.inspector?.port ??
137+
config.dev.inspector_port ??
138+
(await getInspectorPort()),
139+
},
137140
origin: {
138141
secure:
139142
input.dev?.origin?.secure ?? config.dev.upstream_protocol === "https",

packages/wrangler/src/api/startDevWorker/LocalRuntimeController.ts

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,15 @@ export async function convertToConfigBundle(
109109
initialPort: undefined,
110110
initialIp: "127.0.0.1",
111111
rules: [],
112-
inspectorPort: 0,
112+
...(event.config.dev.inspector === false
113+
? {
114+
inspect: false,
115+
inspectorPort: undefined,
116+
}
117+
: {
118+
inspect: true,
119+
inspectorPort: 0,
120+
}),
113121
localPersistencePath: event.config.dev.persist,
114122
liveReload: event.config.dev?.liveReload ?? false,
115123
crons,
@@ -119,7 +127,6 @@ export async function convertToConfigBundle(
119127
httpsKeyPath: event.config.dev?.server?.httpsKeyPath,
120128
localUpstream: event.config.dev?.origin?.hostname,
121129
upstreamProtocol: event.config.dev?.origin?.secure ? "https" : "http",
122-
inspect: true,
123130
services: bindings.services,
124131
serviceBindings: fetchers,
125132
bindVectorizeToProd: event.config.dev?.bindVectorizeToProd ?? false,
@@ -204,7 +211,13 @@ export class LocalRuntimeController extends RuntimeController {
204211
// `inspectorUrl` for this set of `options`, we protect `#mf` with a mutex,
205212
// so only one update can happen at a time.
206213
const userWorkerUrl = await this.#mf.ready;
207-
const userWorkerInspectorUrl = await this.#mf.getInspectorURL();
214+
// TODO: Miniflare should itself return undefined on
215+
// `getInspectorURL` when no inspector is in use
216+
// (currently the function just hangs)
217+
const userWorkerInspectorUrl =
218+
options.inspectorPort === undefined
219+
? undefined
220+
: await this.#mf.getInspectorURL();
208221
// If we received a new `bundleComplete` event before we were able to
209222
// dispatch a `reloadComplete` for this bundle, ignore this bundle.
210223
if (id !== this.#currentBundleId) {
@@ -228,12 +241,16 @@ export class LocalRuntimeController extends RuntimeController {
228241
hostname: userWorkerUrl.hostname,
229242
port: userWorkerUrl.port,
230243
},
231-
userWorkerInspectorUrl: {
232-
protocol: userWorkerInspectorUrl.protocol,
233-
hostname: userWorkerInspectorUrl.hostname,
234-
port: userWorkerInspectorUrl.port,
235-
pathname: `/core:user:${getName(data.config)}`,
236-
},
244+
...(userWorkerInspectorUrl
245+
? {
246+
userWorkerInspectorUrl: {
247+
protocol: userWorkerInspectorUrl.protocol,
248+
hostname: userWorkerInspectorUrl.hostname,
249+
port: userWorkerInspectorUrl.port,
250+
pathname: `/core:user:${getName(data.config)}`,
251+
},
252+
}
253+
: {}),
237254
userWorkerInnerUrlOverrides: {
238255
protocol: data.config?.dev?.origin?.secure ? "https:" : "http:",
239256
hostname: data.config?.dev?.origin?.hostname,

0 commit comments

Comments
 (0)