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.
Files changed (93) hide show
  1. package/README.md +25 -14
  2. package/bin/wrangler.js +13 -1
  3. package/miniflare-dist/index.mjs +4886 -0
  4. package/package.json +33 -25
  5. package/pages/functions/buildPlugin.ts +92 -0
  6. package/pages/functions/buildWorker.ts +80 -4
  7. package/pages/functions/filepath-routing.test.ts +136 -25
  8. package/pages/functions/filepath-routing.ts +14 -3
  9. package/pages/functions/routes.ts +6 -1
  10. package/pages/functions/template-plugin.ts +146 -0
  11. package/pages/functions/template-worker.ts +21 -8
  12. package/src/__tests__/config-cache.test.ts +36 -0
  13. package/src/__tests__/configuration.test.ts +1179 -271
  14. package/src/__tests__/dev.test.tsx +382 -25
  15. package/src/__tests__/guess-worker-format.test.ts +28 -1
  16. package/src/__tests__/helpers/mock-account-id.ts +4 -0
  17. package/src/__tests__/helpers/mock-cfetch.ts +5 -1
  18. package/src/__tests__/helpers/mock-console.ts +20 -3
  19. package/src/__tests__/helpers/mock-dialogs.ts +26 -1
  20. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  21. package/src/__tests__/helpers/mock-istty.ts +27 -0
  22. package/src/__tests__/helpers/mock-kv.ts +9 -16
  23. package/src/__tests__/helpers/mock-oauth-flow.ts +255 -0
  24. package/src/__tests__/helpers/run-in-tmp.ts +10 -0
  25. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  26. package/src/__tests__/https-options.test.ts +5 -2
  27. package/src/__tests__/index.test.ts +27 -769
  28. package/src/__tests__/init.test.ts +1516 -0
  29. package/src/__tests__/jest.setup.ts +4 -4
  30. package/src/__tests__/kv.test.ts +172 -126
  31. package/src/__tests__/logger.test.ts +115 -0
  32. package/src/__tests__/pages.test.ts +311 -26
  33. package/src/__tests__/publish.test.ts +2946 -524
  34. package/src/__tests__/r2.test.ts +26 -10
  35. package/src/__tests__/route.test.ts +4 -4
  36. package/src/__tests__/secret.test.ts +55 -34
  37. package/src/__tests__/tail.test.ts +146 -20
  38. package/src/__tests__/user.test.ts +131 -0
  39. package/src/__tests__/whoami.test.tsx +26 -7
  40. package/src/bundle.ts +30 -3
  41. package/src/cfetch/internal.ts +9 -7
  42. package/src/cli.ts +5 -11
  43. package/src/config/README.md +7 -7
  44. package/src/config/config.ts +33 -78
  45. package/src/config/environment.ts +93 -4
  46. package/src/config/index.ts +15 -4
  47. package/src/config/validation-helpers.ts +202 -15
  48. package/src/config/validation.ts +530 -133
  49. package/src/config-cache.ts +45 -0
  50. package/src/create-worker-preview.ts +22 -13
  51. package/src/create-worker-upload-form.ts +32 -9
  52. package/src/dev/dev-vars.ts +36 -0
  53. package/src/dev/dev.tsx +136 -75
  54. package/src/dev/local.tsx +196 -125
  55. package/src/dev/remote.tsx +25 -13
  56. package/src/dev/use-esbuild.ts +23 -5
  57. package/src/dialogs.tsx +16 -6
  58. package/src/entry.ts +119 -11
  59. package/src/environment-variables.ts +3 -1
  60. package/src/errors.ts +11 -0
  61. package/src/https-options.ts +3 -2
  62. package/src/index.tsx +739 -400
  63. package/src/inspect.ts +17 -11
  64. package/src/intl-polyfill.d.ts +139 -0
  65. package/src/{kv/index.tsx → kv.ts} +8 -28
  66. package/src/logger.ts +66 -0
  67. package/src/miniflare-cli/README.md +30 -0
  68. package/src/miniflare-cli/enum-keys.ts +17 -0
  69. package/src/miniflare-cli/index.ts +41 -0
  70. package/src/miniflare-cli/request-context.ts +40 -0
  71. package/src/module-collection.ts +63 -58
  72. package/src/open-in-browser.ts +5 -4
  73. package/src/package-manager.ts +9 -8
  74. package/src/pages.tsx +883 -62
  75. package/src/parse.ts +1 -1
  76. package/src/proxy.ts +32 -21
  77. package/src/publish.ts +276 -161
  78. package/src/sites.tsx +88 -33
  79. package/src/tail/index.ts +2 -2
  80. package/src/tail/printing.ts +13 -8
  81. package/src/update-check.ts +19 -0
  82. package/src/user.tsx +231 -103
  83. package/src/whoami.tsx +2 -1
  84. package/src/worker.ts +15 -6
  85. package/templates/gitignore +171 -0
  86. package/templates/static-asset-facade.js +1 -1
  87. package/wrangler-dist/cli.js +22087 -49340
  88. package/src/__tests__/dev2.test.tsx +0 -152
  89. package/src/__tests__/helpers/mock-user.ts +0 -27
  90. package/src/__tests__/logout.test.ts +0 -50
  91. package/src/__tests__/sentry.test.ts +0 -146
  92. package/src/reporting.ts +0 -131
  93. 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): object {
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 { reportError } from "./reporting";
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: undefined | string;
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
- console.error("Failed to create proxy server.", err);
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, { retryPeriod: 200, timeout: 2000 })
300
+ waitForPortToBeAvailable(port, {
301
+ retryPeriod: 200,
302
+ timeout: 2000,
303
+ abortSignal: abortController.signal,
304
+ })
295
305
  .then(() => {
296
- proxyServer.listen(port);
297
- console.log(`⬣ Listening at ${localProtocol}://localhost:${port}`);
306
+ proxyServer.listen(port, ip);
307
+ logger.log(`⬣ Listening at ${localProtocol}://${ip}:${port}`);
298
308
  })
299
309
  .catch((err) => {
300
- console.error(`⬣ Failed to start server: ${err}`);
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
- console.log(
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
- console.error(new Date().toLocaleTimeString(), err);
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);