wrangler 0.0.0-e30d1013 → 0.0.0-e311bbbf
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/README.md +3 -3
- package/bin/wrangler.js +30 -10
- package/miniflare-dist/index.mjs +126 -74
- package/package.json +26 -19
- package/src/__tests__/api-dev.test.ts +65 -36
- package/src/__tests__/api-devregistry.test.ts +121 -0
- package/src/__tests__/api.test.ts +27 -5
- package/src/__tests__/configuration.test.ts +567 -39
- package/src/__tests__/d1/d1.test.ts +82 -0
- package/src/__tests__/d1/execute.test.ts +66 -0
- package/src/__tests__/d1/migrate.test.ts +157 -0
- package/src/__tests__/d1/splitter.test.ts +255 -0
- package/src/__tests__/delete.test.ts +91 -49
- package/src/__tests__/deployments.test.ts +330 -52
- package/src/__tests__/dev.test.tsx +198 -90
- package/src/__tests__/generate.test.ts +8 -5
- package/src/__tests__/guess-worker-format.test.ts +35 -0
- package/src/__tests__/helpers/end-event-loop.ts +6 -0
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-console.ts +6 -0
- package/src/__tests__/helpers/mock-dialogs.ts +71 -85
- package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
- package/src/__tests__/helpers/mock-known-routes.ts +7 -2
- package/src/__tests__/helpers/mock-kv.ts +29 -16
- package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
- package/src/__tests__/helpers/mock-process.ts +8 -13
- package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
- package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +127 -26
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +18 -41
- package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
- package/src/__tests__/helpers/msw/handlers/r2.ts +14 -34
- package/src/__tests__/helpers/msw/handlers/script.ts +9 -28
- package/src/__tests__/helpers/msw/handlers/user.ts +13 -24
- package/src/__tests__/helpers/msw/handlers/zones.ts +6 -8
- package/src/__tests__/helpers/msw/index.ts +32 -1
- package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
- package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
- package/src/__tests__/index.test.ts +90 -72
- package/src/__tests__/init.test.ts +927 -631
- package/src/__tests__/jest.setup.ts +19 -42
- package/src/__tests__/kv.test.ts +355 -231
- package/src/__tests__/logger.test.ts +68 -2
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/metrics.test.ts +94 -51
- package/src/__tests__/middleware.scheduled.test.ts +42 -32
- package/src/__tests__/middleware.test.ts +212 -122
- package/src/__tests__/mtls-certificates.test.ts +588 -0
- package/src/__tests__/pages/deployment-list.test.ts +80 -0
- package/src/__tests__/pages/functions-build.test.ts +452 -0
- package/src/__tests__/pages/pages.test.ts +81 -0
- package/src/__tests__/pages/project-create.test.ts +63 -0
- package/src/__tests__/pages/project-list.test.ts +110 -0
- package/src/__tests__/pages/project-upload.test.ts +500 -0
- package/src/__tests__/pages/publish.test.ts +2864 -0
- package/src/__tests__/pages-deployment-tail.test.ts +955 -0
- package/src/__tests__/parse.test.ts +106 -0
- package/src/__tests__/publish.test.ts +1620 -830
- package/src/__tests__/pubsub.test.ts +226 -100
- package/src/__tests__/queues.test.ts +237 -76
- package/src/__tests__/r2.test.ts +37 -56
- package/src/__tests__/secret.test.ts +179 -130
- package/src/__tests__/tail.test.ts +267 -109
- package/src/__tests__/test-old-node-version.js +3 -3
- package/src/__tests__/traverse-module-graph.test.ts +220 -0
- package/src/__tests__/tsconfig-sanity.ts +12 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -0
- package/src/__tests__/type-generation.test.ts +11 -2
- package/src/__tests__/user.test.ts +35 -72
- package/src/__tests__/whoami.test.tsx +8 -114
- package/src/__tests__/worker-namespace.test.ts +83 -69
- package/src/api/dev.ts +168 -60
- package/src/api/index.ts +10 -1
- package/src/api/mtls-certificate.ts +148 -0
- package/src/api/pages/create-worker-bundle-contents.ts +76 -0
- package/src/api/pages/index.ts +5 -0
- package/src/api/pages/publish.tsx +355 -0
- package/src/bundle.ts +221 -128
- package/src/cfetch/index.ts +0 -2
- package/src/cfetch/internal.ts +16 -21
- package/src/cli.ts +4 -4
- package/src/config/config.ts +14 -7
- package/src/config/environment.ts +73 -16
- package/src/config/index.ts +99 -30
- package/src/config/validation-helpers.ts +1 -1
- package/src/config/validation.ts +248 -9
- package/src/create-worker-preview.ts +19 -8
- package/src/create-worker-upload-form.ts +48 -5
- package/src/d1/backups.tsx +43 -42
- package/src/d1/create.tsx +26 -21
- package/src/d1/{delete.tsx → delete.ts} +11 -14
- package/src/d1/execute.tsx +183 -170
- package/src/d1/index.ts +7 -6
- package/src/d1/list.tsx +22 -10
- package/src/d1/migrations/apply.tsx +212 -0
- package/src/d1/migrations/create.tsx +79 -0
- package/src/d1/migrations/helpers.ts +172 -0
- package/src/d1/migrations/index.ts +3 -0
- package/src/d1/migrations/list.tsx +95 -0
- package/src/d1/migrations/options.ts +23 -0
- package/src/d1/options.ts +3 -3
- package/src/d1/splitter.ts +161 -0
- package/src/d1/{types.tsx → types.ts} +1 -0
- package/src/d1/utils.ts +2 -1
- package/src/delete.ts +8 -16
- package/src/deployments.ts +333 -42
- package/src/deprecated/index.ts +8 -302
- package/src/dev/dev.tsx +57 -44
- package/src/dev/local.tsx +248 -74
- package/src/dev/remote.tsx +32 -3
- package/src/dev/start-server.ts +81 -66
- package/src/dev/use-esbuild.ts +17 -18
- package/src/dev/validate-dev-props.ts +9 -0
- package/src/{dev-registry.tsx → dev-registry.ts} +2 -1
- package/src/dev.tsx +178 -117
- package/src/dialogs.ts +136 -0
- package/src/dispatch-namespace.ts +21 -17
- package/src/docs/index.ts +97 -0
- package/src/entry.ts +19 -11
- package/src/environment-variables/factory.ts +88 -0
- package/src/environment-variables/misc-variables.ts +30 -0
- package/src/generate/index.ts +298 -0
- package/src/git-client.ts +15 -4
- package/src/{index.tsx → index.ts} +134 -59
- package/src/init.ts +249 -187
- package/src/inspect.ts +16 -1
- package/src/jest.d.ts +4 -0
- package/src/kv/index.ts +15 -17
- package/src/logger.ts +32 -5
- package/src/metrics/metrics-config.ts +3 -3
- package/src/metrics/send-event.ts +6 -1
- package/src/miniflare-cli/assets.ts +64 -28
- package/src/miniflare-cli/index.ts +4 -7
- package/src/miniflare-cli/tsconfig.json +9 -0
- package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
- package/src/miniflare-cli/types.ts +11 -0
- package/src/module-collection.ts +91 -25
- package/src/mtls-certificate/cli.ts +155 -0
- package/src/pages/build.ts +410 -0
- package/src/pages/buildFunctions.ts +140 -0
- package/src/pages/deployment-tails.ts +281 -0
- package/src/pages/deployments.tsx +11 -33
- package/src/pages/{dev.tsx → dev.ts} +147 -139
- package/src/pages/errors.ts +1 -0
- package/src/pages/functions/buildPlugin.ts +61 -54
- package/src/pages/functions/buildWorker.ts +159 -33
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/{functions.tsx → functions.ts} +8 -4
- package/src/pages/{index.tsx → index.ts} +11 -3
- package/src/pages/projects.tsx +12 -22
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +46 -225
- package/src/pages/types.ts +6 -9
- package/src/pages/upload.tsx +58 -14
- package/src/pages/utils.ts +12 -1
- package/src/parse.ts +23 -1
- package/src/paths.ts +1 -1
- package/src/proxy.ts +5 -0
- package/src/publish/index.ts +20 -16
- package/src/publish/publish.ts +71 -46
- package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +19 -20
- package/src/queues/cli/commands/consumer/add.ts +24 -24
- package/src/queues/cli/commands/consumer/index.ts +3 -6
- package/src/queues/cli/commands/consumer/remove.ts +11 -18
- package/src/queues/cli/commands/create.ts +8 -8
- package/src/queues/cli/commands/delete.ts +8 -8
- package/src/queues/cli/commands/index.ts +6 -4
- package/src/queues/cli/commands/list.ts +8 -8
- package/src/queues/client.ts +1 -0
- package/src/queues/utils.ts +18 -0
- package/src/r2/helpers.ts +1 -0
- package/src/r2/index.ts +28 -28
- package/src/secret/index.ts +14 -16
- package/src/{sites.tsx → sites.ts} +1 -1
- package/src/tail/createTail.ts +94 -3
- package/src/tail/filters.ts +1 -1
- package/src/tail/index.ts +8 -11
- package/src/tail/printing.ts +15 -0
- package/src/traverse-module-graph.ts +53 -0
- package/src/tsconfig-sanity.ts +16 -0
- package/src/type-generation.ts +28 -20
- package/src/user/access.ts +0 -1
- package/src/user/auth-variables.ts +113 -0
- package/src/user/choose-account.tsx +1 -31
- package/src/user/index.ts +0 -1
- package/src/user/{user.tsx → user.ts} +123 -82
- package/src/utils/render.ts +93 -0
- package/src/{whoami.tsx → whoami.ts} +37 -71
- package/src/worker.ts +30 -1
- package/src/yargs-types.ts +22 -5
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/checked-fetch.js +9 -3
- package/templates/d1-beta-facade.js +51 -3
- package/templates/facade.d.ts +14 -0
- package/templates/first-party-worker-module-facade.ts +4 -3
- package/templates/format-dev-errors.ts +8 -6
- package/templates/gitignore +1 -0
- package/templates/init-tests/test-jest-new-worker.js +3 -5
- package/templates/init-tests/test-vitest-new-worker.js +3 -5
- package/templates/init-tests/test-vitest-new-worker.ts +25 -0
- package/templates/middleware/loader-modules.ts +2 -2
- package/templates/middleware/loader-sw.ts +51 -31
- package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
- package/templates/new-worker.ts +3 -0
- package/templates/pages-dev-pipeline.ts +4 -1
- package/templates/pages-shim.ts +4 -1
- package/templates/pages-template-plugin.ts +19 -10
- package/templates/serve-static-assets.ts +17 -14
- package/templates/service-bindings-module-facade.js +1 -0
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +105 -0
- package/templates/tsconfig.json +5 -103
- package/templates/tsconfig.tsbuildinfo +1 -0
- package/wrangler-dist/cli.d.ts +820 -70
- package/wrangler-dist/cli.js +68161 -78780
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/src/__tests__/api-devregistry.test.js +0 -56
- package/src/__tests__/d1.test.ts +0 -74
- package/src/__tests__/dialogs.test.tsx +0 -40
- package/src/__tests__/helpers/mock-cfetch.ts +0 -333
- package/src/__tests__/pages.test.ts +0 -2387
- package/src/d1/migrations.tsx +0 -446
- package/src/dialogs.tsx +0 -169
- package/src/environment-variables.ts +0 -50
- package/src/pages/build.tsx +0 -270
- package/src/user/env-vars.ts +0 -46
- package/templates/experimental-local-cache-stubs.js +0 -27
- /package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
- /package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
- /package/src/pages/{hash.tsx → hash.ts} +0 -0
package/src/dev/start-server.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { fork } from "node:child_process";
|
|
2
2
|
import { realpathSync } from "node:fs";
|
|
3
|
-
import { writeFile } from "node:fs/promises";
|
|
4
3
|
import * as path from "node:path";
|
|
5
4
|
import * as util from "node:util";
|
|
6
5
|
import onExit from "signal-exit";
|
|
@@ -15,17 +14,20 @@ import {
|
|
|
15
14
|
import { runCustomBuild } from "../entry";
|
|
16
15
|
import { logger } from "../logger";
|
|
17
16
|
import { waitForPortToBeAvailable } from "../proxy";
|
|
17
|
+
import traverseModuleGraph from "../traverse-module-graph";
|
|
18
18
|
import {
|
|
19
19
|
setupBindings,
|
|
20
|
-
|
|
20
|
+
getMiniflare3,
|
|
21
|
+
buildMiniflare3Logger,
|
|
21
22
|
setupMiniflareOptions,
|
|
22
23
|
setupNodeOptions,
|
|
23
|
-
|
|
24
|
+
transformMf2OptionsToMf3Options,
|
|
24
25
|
} from "./local";
|
|
25
26
|
import { startRemoteServer } from "./remote";
|
|
26
27
|
import { validateDevProps } from "./validate-dev-props";
|
|
27
28
|
|
|
28
29
|
import type { Config } from "../config";
|
|
30
|
+
import type { DurableObjectBindings } from "../config/environment";
|
|
29
31
|
import type { WorkerRegistry } from "../dev-registry";
|
|
30
32
|
import type { Entry } from "../entry";
|
|
31
33
|
import type { DevProps, DirectorySyncResult } from "./dev";
|
|
@@ -38,6 +40,7 @@ import type { ChildProcess } from "node:child_process";
|
|
|
38
40
|
export async function startDevServer(
|
|
39
41
|
props: DevProps & {
|
|
40
42
|
local: boolean;
|
|
43
|
+
disableDevRegistry: boolean;
|
|
41
44
|
}
|
|
42
45
|
) {
|
|
43
46
|
try {
|
|
@@ -61,17 +64,24 @@ export async function startDevServer(
|
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
//start the worker registry
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
logger.log("disableDevRegistry: ", props.disableDevRegistry);
|
|
68
|
+
if (!props.disableDevRegistry) {
|
|
69
|
+
try {
|
|
70
|
+
await startWorkerRegistry();
|
|
71
|
+
if (props.local) {
|
|
72
|
+
const boundRegisteredWorkers = await getBoundRegisteredWorkers({
|
|
73
|
+
services: props.bindings.services,
|
|
74
|
+
durableObjects: props.bindings.durable_objects,
|
|
75
|
+
});
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
if (
|
|
78
|
+
!util.isDeepStrictEqual(boundRegisteredWorkers, workerDefinitions)
|
|
79
|
+
) {
|
|
80
|
+
workerDefinitions = boundRegisteredWorkers || {};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
} catch (err) {
|
|
84
|
+
logger.error("failed to start worker registry", err);
|
|
75
85
|
}
|
|
76
86
|
}
|
|
77
87
|
|
|
@@ -89,7 +99,8 @@ export async function startDevServer(
|
|
|
89
99
|
),
|
|
90
100
|
tsconfig: props.tsconfig,
|
|
91
101
|
minify: props.minify,
|
|
92
|
-
|
|
102
|
+
legacyNodeCompat: props.legacyNodeCompat,
|
|
103
|
+
nodejsCompat: props.nodejsCompat,
|
|
93
104
|
define: props.define,
|
|
94
105
|
noBundle: props.noBundle,
|
|
95
106
|
assets: props.assetsConfig,
|
|
@@ -98,7 +109,9 @@ export async function startDevServer(
|
|
|
98
109
|
services: props.bindings.services,
|
|
99
110
|
firstPartyWorkerDevFacade: props.firstPartyWorker,
|
|
100
111
|
testScheduled: props.testScheduled,
|
|
101
|
-
|
|
112
|
+
local: props.local,
|
|
113
|
+
experimentalLocal: props.experimentalLocal,
|
|
114
|
+
doBindings: props.bindings.durable_objects?.bindings ?? [],
|
|
102
115
|
});
|
|
103
116
|
|
|
104
117
|
if (props.local) {
|
|
@@ -110,8 +123,8 @@ export async function startDevServer(
|
|
|
110
123
|
compatibilityFlags: props.compatibilityFlags,
|
|
111
124
|
bindings: props.bindings,
|
|
112
125
|
assetPaths: props.assetPaths,
|
|
113
|
-
|
|
114
|
-
|
|
126
|
+
initialPort: props.initialPort,
|
|
127
|
+
initialIp: props.initialIp,
|
|
115
128
|
rules: props.rules,
|
|
116
129
|
inspectorPort: props.inspectorPort,
|
|
117
130
|
localPersistencePath: props.localPersistencePath,
|
|
@@ -120,13 +133,14 @@ export async function startDevServer(
|
|
|
120
133
|
queueConsumers: props.queueConsumers,
|
|
121
134
|
localProtocol: props.localProtocol,
|
|
122
135
|
localUpstream: props.localUpstream,
|
|
123
|
-
logPrefix: props.logPrefix,
|
|
124
136
|
inspect: props.inspect,
|
|
125
137
|
onReady: props.onReady,
|
|
126
138
|
enablePagesAssetsServiceBinding: props.enablePagesAssetsServiceBinding,
|
|
127
139
|
usageModel: props.usageModel,
|
|
128
140
|
workerDefinitions,
|
|
129
141
|
experimentalLocal: props.experimentalLocal,
|
|
142
|
+
accountId: props.accountId,
|
|
143
|
+
experimentalLocalRemoteKv: props.experimentalLocalRemoteKv,
|
|
130
144
|
});
|
|
131
145
|
|
|
132
146
|
return {
|
|
@@ -145,8 +159,8 @@ export async function startDevServer(
|
|
|
145
159
|
bindings: props.bindings,
|
|
146
160
|
assetPaths: props.assetPaths,
|
|
147
161
|
isWorkersSite: props.isWorkersSite,
|
|
148
|
-
port: props.
|
|
149
|
-
ip: props.
|
|
162
|
+
port: props.initialPort,
|
|
163
|
+
ip: props.initialIp,
|
|
150
164
|
localProtocol: props.localProtocol,
|
|
151
165
|
inspectorPort: props.inspectorPort,
|
|
152
166
|
inspect: props.inspect,
|
|
@@ -197,14 +211,17 @@ async function runEsbuild({
|
|
|
197
211
|
serveAssetsFromWorker,
|
|
198
212
|
tsconfig,
|
|
199
213
|
minify,
|
|
200
|
-
|
|
214
|
+
legacyNodeCompat,
|
|
215
|
+
nodejsCompat,
|
|
201
216
|
define,
|
|
202
217
|
noBundle,
|
|
203
218
|
workerDefinitions,
|
|
204
219
|
services,
|
|
205
220
|
firstPartyWorkerDevFacade,
|
|
206
221
|
testScheduled,
|
|
207
|
-
|
|
222
|
+
local,
|
|
223
|
+
experimentalLocal,
|
|
224
|
+
doBindings,
|
|
208
225
|
}: {
|
|
209
226
|
entry: Entry;
|
|
210
227
|
destination: string | undefined;
|
|
@@ -218,12 +235,15 @@ async function runEsbuild({
|
|
|
218
235
|
serveAssetsFromWorker: boolean;
|
|
219
236
|
tsconfig: string | undefined;
|
|
220
237
|
minify: boolean | undefined;
|
|
221
|
-
|
|
238
|
+
legacyNodeCompat: boolean | undefined;
|
|
239
|
+
nodejsCompat: boolean | undefined;
|
|
222
240
|
noBundle: boolean;
|
|
223
241
|
workerDefinitions: WorkerRegistry;
|
|
224
242
|
firstPartyWorkerDevFacade: boolean | undefined;
|
|
225
243
|
testScheduled?: boolean;
|
|
226
|
-
|
|
244
|
+
local: boolean;
|
|
245
|
+
experimentalLocal: boolean | undefined;
|
|
246
|
+
doBindings: DurableObjectBindings;
|
|
227
247
|
}): Promise<EsbuildBundle | undefined> {
|
|
228
248
|
if (!destination) return;
|
|
229
249
|
|
|
@@ -234,14 +254,7 @@ async function runEsbuild({
|
|
|
234
254
|
dependencies,
|
|
235
255
|
sourceMapPath,
|
|
236
256
|
}: Awaited<ReturnType<typeof bundleWorker>> = noBundle
|
|
237
|
-
?
|
|
238
|
-
modules: [],
|
|
239
|
-
dependencies: {},
|
|
240
|
-
resolvedEntryPointPath: entry.file,
|
|
241
|
-
bundleType: entry.format === "modules" ? "esm" : "commonjs",
|
|
242
|
-
stop: undefined,
|
|
243
|
-
sourceMapPath: undefined,
|
|
244
|
-
}
|
|
257
|
+
? await traverseModuleGraph(entry, rules)
|
|
245
258
|
: await bundleWorker(entry, destination, {
|
|
246
259
|
serveAssetsFromWorker,
|
|
247
260
|
jsxFactory,
|
|
@@ -249,7 +262,8 @@ async function runEsbuild({
|
|
|
249
262
|
rules,
|
|
250
263
|
tsconfig,
|
|
251
264
|
minify,
|
|
252
|
-
|
|
265
|
+
legacyNodeCompat,
|
|
266
|
+
nodejsCompat,
|
|
253
267
|
define,
|
|
254
268
|
checkFetch: true,
|
|
255
269
|
assets: assets && {
|
|
@@ -262,9 +276,10 @@ async function runEsbuild({
|
|
|
262
276
|
services,
|
|
263
277
|
firstPartyWorkerDevFacade,
|
|
264
278
|
targetConsumer: "dev", // We are starting a dev server
|
|
265
|
-
local: true,
|
|
266
279
|
testScheduled,
|
|
267
|
-
|
|
280
|
+
local,
|
|
281
|
+
experimentalLocal,
|
|
282
|
+
doBindings,
|
|
268
283
|
});
|
|
269
284
|
|
|
270
285
|
return {
|
|
@@ -288,21 +303,22 @@ export async function startLocalServer({
|
|
|
288
303
|
bindings,
|
|
289
304
|
workerDefinitions,
|
|
290
305
|
assetPaths,
|
|
291
|
-
|
|
306
|
+
initialPort,
|
|
292
307
|
inspectorPort,
|
|
293
308
|
rules,
|
|
294
309
|
localPersistencePath,
|
|
295
310
|
liveReload,
|
|
296
|
-
|
|
311
|
+
initialIp,
|
|
297
312
|
crons,
|
|
298
313
|
queueConsumers,
|
|
299
314
|
localProtocol,
|
|
300
315
|
localUpstream,
|
|
301
316
|
inspect,
|
|
302
317
|
onReady,
|
|
303
|
-
logPrefix,
|
|
304
318
|
enablePagesAssetsServiceBinding,
|
|
305
319
|
experimentalLocal,
|
|
320
|
+
accountId,
|
|
321
|
+
experimentalLocalRemoteKv,
|
|
306
322
|
}: LocalProps) {
|
|
307
323
|
let local: ChildProcess | undefined;
|
|
308
324
|
let experimentalLocalRef: Miniflare3Type | undefined;
|
|
@@ -317,14 +333,11 @@ export async function startLocalServer({
|
|
|
317
333
|
if (!bundle || !format) return;
|
|
318
334
|
|
|
319
335
|
// port for the worker
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
abortSignal: abortController.signal,
|
|
326
|
-
});
|
|
327
|
-
}
|
|
336
|
+
await waitForPortToBeAvailable(initialPort, {
|
|
337
|
+
retryPeriod: 200,
|
|
338
|
+
timeout: 2000,
|
|
339
|
+
abortSignal: abortController.signal,
|
|
340
|
+
});
|
|
328
341
|
|
|
329
342
|
if (bindings.services && bindings.services.length > 0) {
|
|
330
343
|
logger.warn(
|
|
@@ -332,15 +345,6 @@ export async function startLocalServer({
|
|
|
332
345
|
);
|
|
333
346
|
}
|
|
334
347
|
|
|
335
|
-
// In local mode, we want to copy all referenced modules into
|
|
336
|
-
// the output bundle directory before starting up
|
|
337
|
-
for (const module of bundle.modules) {
|
|
338
|
-
await writeFile(
|
|
339
|
-
path.join(path.dirname(bundle.path), module.name),
|
|
340
|
-
module.content
|
|
341
|
-
);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
348
|
const scriptPath = realpathSync(bundle.path);
|
|
345
349
|
|
|
346
350
|
const upstream =
|
|
@@ -365,10 +369,10 @@ export async function startLocalServer({
|
|
|
365
369
|
|
|
366
370
|
const { forkOptions, miniflareCLIPath, options } = setupMiniflareOptions({
|
|
367
371
|
workerName,
|
|
368
|
-
port,
|
|
372
|
+
port: initialPort,
|
|
369
373
|
scriptPath,
|
|
370
374
|
localProtocol,
|
|
371
|
-
ip,
|
|
375
|
+
ip: initialIp,
|
|
372
376
|
format,
|
|
373
377
|
rules,
|
|
374
378
|
compatibilityDate,
|
|
@@ -390,27 +394,38 @@ export async function startLocalServer({
|
|
|
390
394
|
dataBlobBindings,
|
|
391
395
|
crons,
|
|
392
396
|
upstream,
|
|
393
|
-
logPrefix,
|
|
394
397
|
workerDefinitions,
|
|
395
398
|
enablePagesAssetsServiceBinding,
|
|
396
399
|
});
|
|
397
400
|
|
|
398
401
|
if (experimentalLocal) {
|
|
399
|
-
const
|
|
400
|
-
const
|
|
402
|
+
const log = await buildMiniflare3Logger();
|
|
403
|
+
const mf3Options = await transformMf2OptionsToMf3Options({
|
|
404
|
+
miniflare2Options: options,
|
|
405
|
+
format,
|
|
406
|
+
bundle,
|
|
407
|
+
log,
|
|
408
|
+
kvNamespaces: bindings?.kv_namespaces,
|
|
409
|
+
r2Buckets: bindings?.r2_buckets,
|
|
410
|
+
d1Databases: bindings?.d1_databases,
|
|
411
|
+
authenticatedAccountId: accountId,
|
|
412
|
+
kvRemote: experimentalLocalRemoteKv,
|
|
413
|
+
inspectorPort,
|
|
414
|
+
});
|
|
415
|
+
const { Miniflare } = await getMiniflare3();
|
|
401
416
|
const mf = new Miniflare(mf3Options);
|
|
402
417
|
const runtimeURL = await mf.ready;
|
|
403
418
|
experimentalLocalRef = mf;
|
|
404
419
|
removeSignalExitListener = onExit((_code, _signal) => {
|
|
405
420
|
logger.log("⎔ Shutting down experimental local server.");
|
|
406
|
-
mf.dispose();
|
|
421
|
+
void mf.dispose();
|
|
407
422
|
experimentalLocalRef = undefined;
|
|
408
423
|
});
|
|
409
424
|
onReady?.(runtimeURL.hostname, parseInt(runtimeURL.port ?? 8787));
|
|
410
425
|
return;
|
|
411
426
|
}
|
|
412
427
|
|
|
413
|
-
const nodeOptions = setupNodeOptions({ inspect,
|
|
428
|
+
const nodeOptions = setupNodeOptions({ inspect, inspectorPort });
|
|
414
429
|
logger.log("⎔ Starting a local server...");
|
|
415
430
|
|
|
416
431
|
const child = (local = fork(miniflareCLIPath, forkOptions, {
|
|
@@ -427,21 +442,21 @@ export async function startLocalServer({
|
|
|
427
442
|
await registerWorker(workerName, {
|
|
428
443
|
protocol: localProtocol,
|
|
429
444
|
mode: "local",
|
|
430
|
-
port: message.
|
|
431
|
-
host:
|
|
445
|
+
port: message.port,
|
|
446
|
+
host: initialIp,
|
|
432
447
|
durableObjects: internalDurableObjects.map((binding) => ({
|
|
433
448
|
name: binding.name,
|
|
434
449
|
className: binding.class_name,
|
|
435
450
|
})),
|
|
436
451
|
...(message.durableObjectsPort
|
|
437
452
|
? {
|
|
438
|
-
durableObjectsHost:
|
|
453
|
+
durableObjectsHost: initialIp,
|
|
439
454
|
durableObjectsPort: message.durableObjectsPort,
|
|
440
455
|
}
|
|
441
456
|
: {}),
|
|
442
457
|
});
|
|
443
458
|
}
|
|
444
|
-
onReady?.(
|
|
459
|
+
onReady?.(initialIp, message.port);
|
|
445
460
|
}
|
|
446
461
|
});
|
|
447
462
|
|
package/src/dev/use-esbuild.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { useApp } from "ink";
|
|
|
4
4
|
import { useState, useEffect } from "react";
|
|
5
5
|
import { bundleWorker, rewriteNodeCompatBuildFailure } from "../bundle";
|
|
6
6
|
import { logBuildFailure, logger } from "../logger";
|
|
7
|
+
import traverseModuleGraph from "../traverse-module-graph";
|
|
7
8
|
import type { Config } from "../config";
|
|
8
9
|
import type { WorkerRegistry } from "../dev-registry";
|
|
9
10
|
import type { Entry } from "../entry";
|
|
@@ -30,7 +31,8 @@ export function useEsbuild({
|
|
|
30
31
|
serveAssetsFromWorker,
|
|
31
32
|
tsconfig,
|
|
32
33
|
minify,
|
|
33
|
-
|
|
34
|
+
legacyNodeCompat,
|
|
35
|
+
nodejsCompat,
|
|
34
36
|
betaD1Shims,
|
|
35
37
|
define,
|
|
36
38
|
noBundle,
|
|
@@ -41,7 +43,7 @@ export function useEsbuild({
|
|
|
41
43
|
local,
|
|
42
44
|
targetConsumer,
|
|
43
45
|
testScheduled,
|
|
44
|
-
|
|
46
|
+
experimentalLocal,
|
|
45
47
|
}: {
|
|
46
48
|
entry: Entry;
|
|
47
49
|
destination: string | undefined;
|
|
@@ -54,7 +56,8 @@ export function useEsbuild({
|
|
|
54
56
|
serveAssetsFromWorker: boolean;
|
|
55
57
|
tsconfig: string | undefined;
|
|
56
58
|
minify: boolean | undefined;
|
|
57
|
-
|
|
59
|
+
legacyNodeCompat: boolean | undefined;
|
|
60
|
+
nodejsCompat: boolean | undefined;
|
|
58
61
|
betaD1Shims?: string[];
|
|
59
62
|
noBundle: boolean;
|
|
60
63
|
workerDefinitions: WorkerRegistry;
|
|
@@ -63,7 +66,7 @@ export function useEsbuild({
|
|
|
63
66
|
local: boolean;
|
|
64
67
|
targetConsumer: "dev" | "publish";
|
|
65
68
|
testScheduled: boolean;
|
|
66
|
-
|
|
69
|
+
experimentalLocal: boolean | undefined;
|
|
67
70
|
}): EsbuildBundle | undefined {
|
|
68
71
|
const [bundle, setBundle] = useState<EsbuildBundle>();
|
|
69
72
|
const { exit } = useApp();
|
|
@@ -85,7 +88,7 @@ export function useEsbuild({
|
|
|
85
88
|
const watchMode: WatchMode = {
|
|
86
89
|
async onRebuild(error) {
|
|
87
90
|
if (error !== null) {
|
|
88
|
-
if (!
|
|
91
|
+
if (!legacyNodeCompat) rewriteNodeCompatBuildFailure(error);
|
|
89
92
|
logBuildFailure(error);
|
|
90
93
|
logger.error("Watch build failed:", error.message);
|
|
91
94
|
} else {
|
|
@@ -105,14 +108,7 @@ export function useEsbuild({
|
|
|
105
108
|
stop,
|
|
106
109
|
sourceMapPath,
|
|
107
110
|
}: Awaited<ReturnType<typeof bundleWorker>> = noBundle
|
|
108
|
-
?
|
|
109
|
-
modules: [],
|
|
110
|
-
dependencies: {},
|
|
111
|
-
resolvedEntryPointPath: entry.file,
|
|
112
|
-
bundleType: entry.format === "modules" ? "esm" : "commonjs",
|
|
113
|
-
stop: undefined,
|
|
114
|
-
sourceMapPath: undefined,
|
|
115
|
-
}
|
|
111
|
+
? await traverseModuleGraph(entry, rules)
|
|
116
112
|
: await bundleWorker(entry, destination, {
|
|
117
113
|
serveAssetsFromWorker,
|
|
118
114
|
jsxFactory,
|
|
@@ -121,8 +117,10 @@ export function useEsbuild({
|
|
|
121
117
|
watch: watchMode,
|
|
122
118
|
tsconfig,
|
|
123
119
|
minify,
|
|
124
|
-
|
|
120
|
+
legacyNodeCompat,
|
|
121
|
+
nodejsCompat,
|
|
125
122
|
betaD1Shims,
|
|
123
|
+
doBindings: durableObjects.bindings,
|
|
126
124
|
define,
|
|
127
125
|
checkFetch: true,
|
|
128
126
|
assets: assets && {
|
|
@@ -136,7 +134,7 @@ export function useEsbuild({
|
|
|
136
134
|
local,
|
|
137
135
|
targetConsumer,
|
|
138
136
|
testScheduled,
|
|
139
|
-
|
|
137
|
+
experimentalLocal,
|
|
140
138
|
});
|
|
141
139
|
|
|
142
140
|
// Capture the `stop()` method to use as the `useEffect()` destructor.
|
|
@@ -152,7 +150,7 @@ export function useEsbuild({
|
|
|
152
150
|
});
|
|
153
151
|
|
|
154
152
|
stopWatching = () => {
|
|
155
|
-
watcher.close();
|
|
153
|
+
void watcher.close();
|
|
156
154
|
};
|
|
157
155
|
}
|
|
158
156
|
setBundle({
|
|
@@ -187,7 +185,8 @@ export function useEsbuild({
|
|
|
187
185
|
exit,
|
|
188
186
|
noBundle,
|
|
189
187
|
minify,
|
|
190
|
-
|
|
188
|
+
legacyNodeCompat,
|
|
189
|
+
nodejsCompat,
|
|
191
190
|
define,
|
|
192
191
|
assets,
|
|
193
192
|
services,
|
|
@@ -198,7 +197,7 @@ export function useEsbuild({
|
|
|
198
197
|
local,
|
|
199
198
|
targetConsumer,
|
|
200
199
|
testScheduled,
|
|
201
|
-
|
|
200
|
+
experimentalLocal,
|
|
202
201
|
]);
|
|
203
202
|
return bundle;
|
|
204
203
|
}
|
|
@@ -28,4 +28,13 @@ export function validateDevProps(props: DevProps) {
|
|
|
28
28
|
"You cannot configure [data_blobs] with an ES module worker. Instead, import the file directly in your code, and optionally configure `[rules]` in your wrangler.toml"
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
|
+
|
|
32
|
+
if (
|
|
33
|
+
props.compatibilityFlags?.includes("nodejs_compat") &&
|
|
34
|
+
props.legacyNodeCompat
|
|
35
|
+
) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
"You cannot use the `nodejs_compat` compatibility flag in conjunction with the legacy `--node-compat` flag. If you want to use the new runtime Node.js compatibility features, please remove the `--node-compat` argument from your CLI command or your config file."
|
|
38
|
+
);
|
|
39
|
+
}
|
|
31
40
|
}
|
|
@@ -13,7 +13,7 @@ import type { HttpTerminator } from "http-terminator";
|
|
|
13
13
|
const DEV_REGISTRY_PORT = "6284";
|
|
14
14
|
const DEV_REGISTRY_HOST = `http://localhost:${DEV_REGISTRY_PORT}`;
|
|
15
15
|
|
|
16
|
-
let server: Server;
|
|
16
|
+
let server: Server | null;
|
|
17
17
|
let terminator: HttpTerminator;
|
|
18
18
|
|
|
19
19
|
export type WorkerRegistry = Record<string, WorkerDefinition>;
|
|
@@ -102,6 +102,7 @@ export async function startWorkerRegistry() {
|
|
|
102
102
|
*/
|
|
103
103
|
export async function stopWorkerRegistry() {
|
|
104
104
|
await terminator?.terminate();
|
|
105
|
+
server = null;
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
/**
|