wrangler 0.0.0-e95bea2 → 0.0.0-e95e5a0
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 +25 -14
- package/bin/wrangler.js +13 -1
- package/miniflare-dist/index.mjs +4886 -0
- package/package.json +33 -25
- package/pages/functions/buildPlugin.ts +92 -0
- package/pages/functions/buildWorker.ts +80 -4
- package/pages/functions/filepath-routing.test.ts +136 -25
- package/pages/functions/filepath-routing.ts +14 -3
- package/pages/functions/routes.ts +6 -1
- package/pages/functions/template-plugin.ts +146 -0
- package/pages/functions/template-worker.ts +21 -8
- package/src/__tests__/config-cache.test.ts +36 -0
- package/src/__tests__/configuration.test.ts +1179 -271
- package/src/__tests__/dev.test.tsx +382 -25
- package/src/__tests__/guess-worker-format.test.ts +28 -1
- package/src/__tests__/helpers/mock-account-id.ts +4 -0
- package/src/__tests__/helpers/mock-cfetch.ts +5 -1
- package/src/__tests__/helpers/mock-console.ts +20 -3
- package/src/__tests__/helpers/mock-dialogs.ts +26 -1
- package/src/__tests__/helpers/mock-http-server.ts +46 -0
- package/src/__tests__/helpers/mock-istty.ts +27 -0
- package/src/__tests__/helpers/mock-kv.ts +9 -16
- package/src/__tests__/helpers/mock-oauth-flow.ts +255 -0
- package/src/__tests__/helpers/run-in-tmp.ts +10 -0
- package/src/__tests__/helpers/write-worker-source.ts +31 -0
- package/src/__tests__/https-options.test.ts +5 -2
- package/src/__tests__/index.test.ts +27 -769
- package/src/__tests__/init.test.ts +1516 -0
- package/src/__tests__/jest.setup.ts +4 -4
- package/src/__tests__/kv.test.ts +172 -126
- package/src/__tests__/logger.test.ts +115 -0
- package/src/__tests__/pages.test.ts +311 -26
- package/src/__tests__/publish.test.ts +2946 -524
- package/src/__tests__/r2.test.ts +26 -10
- package/src/__tests__/route.test.ts +4 -4
- package/src/__tests__/secret.test.ts +55 -34
- package/src/__tests__/tail.test.ts +146 -20
- package/src/__tests__/user.test.ts +131 -0
- package/src/__tests__/whoami.test.tsx +26 -7
- package/src/bundle.ts +30 -3
- package/src/cfetch/internal.ts +9 -7
- package/src/cli.ts +5 -11
- package/src/config/README.md +7 -7
- package/src/config/config.ts +33 -78
- package/src/config/environment.ts +93 -4
- package/src/config/index.ts +15 -4
- package/src/config/validation-helpers.ts +202 -15
- package/src/config/validation.ts +530 -133
- package/src/config-cache.ts +45 -0
- package/src/create-worker-preview.ts +22 -13
- package/src/create-worker-upload-form.ts +32 -9
- package/src/dev/dev-vars.ts +36 -0
- package/src/dev/dev.tsx +136 -75
- package/src/dev/local.tsx +196 -125
- package/src/dev/remote.tsx +25 -13
- package/src/dev/use-esbuild.ts +23 -5
- package/src/dialogs.tsx +16 -6
- package/src/entry.ts +119 -11
- package/src/environment-variables.ts +3 -1
- package/src/errors.ts +11 -0
- package/src/https-options.ts +3 -2
- package/src/index.tsx +739 -400
- package/src/inspect.ts +17 -11
- package/src/intl-polyfill.d.ts +139 -0
- package/src/{kv/index.tsx → kv.ts} +8 -28
- package/src/logger.ts +66 -0
- package/src/miniflare-cli/README.md +30 -0
- package/src/miniflare-cli/enum-keys.ts +17 -0
- package/src/miniflare-cli/index.ts +41 -0
- package/src/miniflare-cli/request-context.ts +40 -0
- package/src/module-collection.ts +63 -58
- package/src/open-in-browser.ts +5 -4
- package/src/package-manager.ts +9 -8
- package/src/pages.tsx +883 -62
- package/src/parse.ts +1 -1
- package/src/proxy.ts +32 -21
- package/src/publish.ts +276 -161
- package/src/sites.tsx +88 -33
- package/src/tail/index.ts +2 -2
- package/src/tail/printing.ts +13 -8
- package/src/update-check.ts +19 -0
- package/src/user.tsx +231 -103
- package/src/whoami.tsx +2 -1
- package/src/worker.ts +15 -6
- package/templates/gitignore +171 -0
- package/templates/static-asset-facade.js +1 -1
- package/wrangler-dist/cli.js +22087 -49340
- package/src/__tests__/dev2.test.tsx +0 -152
- package/src/__tests__/helpers/mock-user.ts +0 -27
- package/src/__tests__/logout.test.ts +0 -50
- package/src/__tests__/sentry.test.ts +0 -146
- package/src/reporting.ts +0 -131
- package/wrangler-dist/cli.js.map +0 -7
package/src/parse.ts
CHANGED
|
@@ -75,7 +75,7 @@ type TomlError = Error & {
|
|
|
75
75
|
/**
|
|
76
76
|
* A wrapper around `TOML.parse` that throws a `ParseError`.
|
|
77
77
|
*/
|
|
78
|
-
export function parseTOML(input: string, file?: string):
|
|
78
|
+
export function parseTOML(input: string, file?: string): TOML.JsonMap | never {
|
|
79
79
|
try {
|
|
80
80
|
return TOML.parse(input);
|
|
81
81
|
} catch (err) {
|
package/src/proxy.ts
CHANGED
|
@@ -5,7 +5,7 @@ import WebSocket from "faye-websocket";
|
|
|
5
5
|
import { useEffect, useRef, useState } from "react";
|
|
6
6
|
import serveStatic from "serve-static";
|
|
7
7
|
import { getHttpsOptions } from "./https-options";
|
|
8
|
-
import {
|
|
8
|
+
import { logger } from "./logger";
|
|
9
9
|
import type { CfPreviewToken } from "./create-worker-preview";
|
|
10
10
|
import type {
|
|
11
11
|
IncomingHttpHeaders,
|
|
@@ -72,11 +72,13 @@ export function usePreviewServer({
|
|
|
72
72
|
publicRoot,
|
|
73
73
|
localProtocol,
|
|
74
74
|
localPort: port,
|
|
75
|
+
ip,
|
|
75
76
|
}: {
|
|
76
77
|
previewToken: CfPreviewToken | undefined;
|
|
77
|
-
publicRoot:
|
|
78
|
+
publicRoot: string | undefined;
|
|
78
79
|
localProtocol: "https" | "http";
|
|
79
80
|
localPort: number;
|
|
81
|
+
ip: string;
|
|
80
82
|
}) {
|
|
81
83
|
/** Creates an HTTP/1 proxy that sends requests over HTTP/2. */
|
|
82
84
|
const [proxyServer, setProxyServer] = useState<HttpServer | HttpsServer>();
|
|
@@ -90,8 +92,7 @@ export function usePreviewServer({
|
|
|
90
92
|
createProxyServer(localProtocol)
|
|
91
93
|
.then((proxy) => setProxyServer(proxy))
|
|
92
94
|
.catch(async (err) => {
|
|
93
|
-
|
|
94
|
-
await reportError(err);
|
|
95
|
+
logger.error("Failed to create proxy server:", err);
|
|
95
96
|
});
|
|
96
97
|
}
|
|
97
98
|
}, [proxyServer, localProtocol]);
|
|
@@ -209,6 +210,10 @@ export function usePreviewServer({
|
|
|
209
210
|
const request = message.pipe(remote.request(headers));
|
|
210
211
|
request.on("response", (responseHeaders) => {
|
|
211
212
|
const status = responseHeaders[":status"] ?? 500;
|
|
213
|
+
|
|
214
|
+
// log all requests to terminal
|
|
215
|
+
logger.log(new Date().toLocaleTimeString(), method, url, status);
|
|
216
|
+
|
|
212
217
|
rewriteRemoteHostToLocalHostInHeaders(
|
|
213
218
|
responseHeaders,
|
|
214
219
|
previewToken.host,
|
|
@@ -287,23 +292,31 @@ export function usePreviewServer({
|
|
|
287
292
|
// Start/stop the server whenever the
|
|
288
293
|
// containing component is mounted/unmounted.
|
|
289
294
|
useEffect(() => {
|
|
295
|
+
const abortController = new AbortController();
|
|
290
296
|
if (proxyServer === undefined) {
|
|
291
297
|
return;
|
|
292
298
|
}
|
|
293
299
|
|
|
294
|
-
waitForPortToBeAvailable(port, {
|
|
300
|
+
waitForPortToBeAvailable(port, {
|
|
301
|
+
retryPeriod: 200,
|
|
302
|
+
timeout: 2000,
|
|
303
|
+
abortSignal: abortController.signal,
|
|
304
|
+
})
|
|
295
305
|
.then(() => {
|
|
296
|
-
proxyServer.listen(port);
|
|
297
|
-
|
|
306
|
+
proxyServer.listen(port, ip);
|
|
307
|
+
logger.log(`⬣ Listening at ${localProtocol}://${ip}:${port}`);
|
|
298
308
|
})
|
|
299
309
|
.catch((err) => {
|
|
300
|
-
|
|
310
|
+
if ((err as { code: string }).code !== "ABORT_ERR") {
|
|
311
|
+
logger.error(`Failed to start server: ${err}`);
|
|
312
|
+
}
|
|
301
313
|
});
|
|
302
314
|
|
|
303
315
|
return () => {
|
|
304
316
|
proxyServer.close();
|
|
317
|
+
abortController.abort();
|
|
305
318
|
};
|
|
306
|
-
}, [port, proxyServer, localProtocol]);
|
|
319
|
+
}, [port, ip, proxyServer, localProtocol]);
|
|
307
320
|
}
|
|
308
321
|
|
|
309
322
|
function createHandleAssetsRequest(
|
|
@@ -340,18 +353,9 @@ async function createProxyServer(
|
|
|
340
353
|
: createHttpServer();
|
|
341
354
|
|
|
342
355
|
return server
|
|
343
|
-
.on("request", function (req, res) {
|
|
344
|
-
// log all requests
|
|
345
|
-
console.log(
|
|
346
|
-
new Date().toLocaleTimeString(),
|
|
347
|
-
req.method,
|
|
348
|
-
req.url,
|
|
349
|
-
res.statusCode
|
|
350
|
-
);
|
|
351
|
-
})
|
|
352
356
|
.on("upgrade", (req) => {
|
|
353
357
|
// log all websocket connections
|
|
354
|
-
|
|
358
|
+
logger.log(
|
|
355
359
|
new Date().toLocaleTimeString(),
|
|
356
360
|
req.method,
|
|
357
361
|
req.url,
|
|
@@ -361,7 +365,7 @@ async function createProxyServer(
|
|
|
361
365
|
})
|
|
362
366
|
.on("error", (err) => {
|
|
363
367
|
// log all connection errors
|
|
364
|
-
|
|
368
|
+
logger.error(new Date().toLocaleTimeString(), err);
|
|
365
369
|
});
|
|
366
370
|
}
|
|
367
371
|
|
|
@@ -396,9 +400,16 @@ function createStreamHandler(
|
|
|
396
400
|
*/
|
|
397
401
|
export async function waitForPortToBeAvailable(
|
|
398
402
|
port: number,
|
|
399
|
-
options: { retryPeriod: number; timeout: number }
|
|
403
|
+
options: { retryPeriod: number; timeout: number; abortSignal: AbortSignal }
|
|
400
404
|
): Promise<void> {
|
|
401
405
|
return new Promise((resolve, reject) => {
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
407
|
+
(options.abortSignal as any).addEventListener("abort", () => {
|
|
408
|
+
const abortError = new Error("waitForPortToBeAvailable() aborted");
|
|
409
|
+
(abortError as Error & { code: string }).code = "ABORT_ERR";
|
|
410
|
+
doReject(abortError);
|
|
411
|
+
});
|
|
412
|
+
|
|
402
413
|
const timeout = setTimeout(() => {
|
|
403
414
|
doReject(new Error(`Timed out waiting for port ${port}`));
|
|
404
415
|
}, options.timeout);
|