wrangler 0.0.0-aeee02c3 → 0.0.0-af4f27c5

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 (191) hide show
  1. package/bin/wrangler.js +29 -9
  2. package/miniflare-dist/index.mjs +108 -58
  3. package/package.json +15 -12
  4. package/src/__tests__/access.test.ts +25 -0
  5. package/src/__tests__/api-dev.test.ts +64 -35
  6. package/src/__tests__/api-devregistry.test.js +12 -4
  7. package/src/__tests__/configuration.test.ts +322 -23
  8. package/src/__tests__/d1/d1.test.ts +123 -0
  9. package/src/__tests__/d1/splitter.test.ts +255 -0
  10. package/src/__tests__/delete.test.ts +85 -49
  11. package/src/__tests__/deployments.test.ts +40 -26
  12. package/src/__tests__/dev.test.tsx +271 -42
  13. package/src/__tests__/generate.test.ts +10 -7
  14. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  15. package/src/__tests__/helpers/mock-dialogs.ts +71 -85
  16. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
  17. package/src/__tests__/helpers/mock-known-routes.ts +7 -2
  18. package/src/__tests__/helpers/mock-kv.ts +29 -16
  19. package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
  20. package/src/__tests__/helpers/mock-process.ts +8 -13
  21. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  22. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  23. package/src/__tests__/helpers/msw/handlers/deployments.ts +41 -44
  24. package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
  25. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  26. package/src/__tests__/helpers/msw/index.ts +34 -1
  27. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  28. package/src/__tests__/index.test.ts +86 -71
  29. package/src/__tests__/init.test.ts +876 -529
  30. package/src/__tests__/jest.setup.ts +26 -42
  31. package/src/__tests__/kv.test.ts +674 -561
  32. package/src/__tests__/logout.test.ts +47 -0
  33. package/src/__tests__/metrics.test.ts +94 -51
  34. package/src/__tests__/middleware.scheduled.test.ts +40 -30
  35. package/src/__tests__/middleware.test.ts +144 -120
  36. package/src/__tests__/pages-deployment-tail.test.ts +955 -0
  37. package/src/__tests__/pages.test.ts +1725 -1045
  38. package/src/__tests__/publish.test.ts +1961 -1091
  39. package/src/__tests__/pubsub.test.ts +211 -88
  40. package/src/__tests__/queues.test.ts +522 -0
  41. package/src/__tests__/r2.test.ts +77 -55
  42. package/src/__tests__/secret.test.ts +175 -126
  43. package/src/__tests__/tail.test.ts +278 -108
  44. package/src/__tests__/tsconfig-sanity.ts +12 -0
  45. package/src/__tests__/tsconfig.json +8 -0
  46. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  47. package/src/__tests__/type-generation.test.ts +42 -26
  48. package/src/__tests__/user.test.ts +34 -70
  49. package/src/__tests__/whoami.test.tsx +1 -96
  50. package/src/__tests__/worker-namespace.test.ts +15 -10
  51. package/src/api/dev.ts +91 -40
  52. package/src/api/index.ts +1 -1
  53. package/src/bundle-reporter.ts +68 -0
  54. package/src/bundle.ts +216 -149
  55. package/src/cfetch/index.ts +0 -2
  56. package/src/cfetch/internal.ts +16 -21
  57. package/src/cli.ts +2 -3
  58. package/src/config/environment.ts +72 -0
  59. package/src/config/index.ts +72 -7
  60. package/src/config/validation.ts +223 -2
  61. package/src/create-worker-preview.ts +10 -3
  62. package/src/create-worker-upload-form.ts +33 -9
  63. package/src/d1/backups.tsx +7 -2
  64. package/src/d1/constants.ts +2 -0
  65. package/src/d1/create.tsx +18 -9
  66. package/src/d1/{delete.tsx → delete.ts} +4 -4
  67. package/src/d1/execute.tsx +109 -85
  68. package/src/d1/index.ts +28 -2
  69. package/src/d1/migrations/apply.tsx +197 -0
  70. package/src/d1/migrations/create.tsx +77 -0
  71. package/src/d1/migrations/helpers.ts +147 -0
  72. package/src/d1/migrations/index.ts +3 -0
  73. package/src/d1/migrations/list.tsx +79 -0
  74. package/src/d1/migrations/options.ts +18 -0
  75. package/src/d1/options.ts +10 -0
  76. package/src/d1/splitter.ts +161 -0
  77. package/src/d1/{types.tsx → types.ts} +10 -0
  78. package/src/d1/utils.ts +11 -2
  79. package/src/delete.ts +10 -18
  80. package/src/deployments.ts +83 -0
  81. package/src/deprecated/index.ts +11 -319
  82. package/src/dev/dev-vars.ts +11 -8
  83. package/src/dev/dev.tsx +64 -25
  84. package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
  85. package/src/dev/local.tsx +315 -74
  86. package/src/dev/remote.tsx +30 -1
  87. package/src/dev/start-server.ts +80 -43
  88. package/src/dev/use-esbuild.ts +17 -10
  89. package/src/{dev-registry.tsx → dev-registry.ts} +0 -0
  90. package/src/dev.tsx +119 -35
  91. package/src/dialogs.ts +136 -0
  92. package/src/dispatch-namespace.ts +5 -4
  93. package/src/docs/index.ts +98 -0
  94. package/src/environment-variables/factory.ts +88 -0
  95. package/src/environment-variables/misc-variables.ts +30 -0
  96. package/src/generate/index.ts +300 -0
  97. package/src/git-client.ts +15 -4
  98. package/src/{index.tsx → index.ts} +89 -63
  99. package/src/init.ts +116 -62
  100. package/src/inspect.ts +21 -1
  101. package/src/jest.d.ts +4 -0
  102. package/src/kv/index.ts +5 -54
  103. package/src/logger.ts +27 -3
  104. package/src/metrics/metrics-config.ts +3 -3
  105. package/src/metrics/send-event.ts +4 -1
  106. package/src/miniflare-cli/assets.ts +63 -28
  107. package/src/miniflare-cli/index.ts +3 -6
  108. package/src/miniflare-cli/tsconfig.json +9 -0
  109. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  110. package/src/miniflare-cli/types.ts +11 -0
  111. package/src/pages/{build.tsx → build.ts} +34 -2
  112. package/src/pages/deployment-tails.ts +284 -0
  113. package/src/pages/deployments.tsx +5 -27
  114. package/src/pages/{dev.tsx → dev.ts} +110 -104
  115. package/src/pages/functions/buildPlugin.ts +67 -88
  116. package/src/pages/functions/buildWorker.ts +235 -109
  117. package/src/pages/functions/tsconfig.json +8 -0
  118. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  119. package/src/pages/{functions.tsx → functions.ts} +1 -1
  120. package/src/pages/{hash.tsx → hash.ts} +0 -0
  121. package/src/pages/{index.tsx → index.ts} +8 -0
  122. package/src/pages/projects.tsx +3 -5
  123. package/src/pages/prompt-select-project.tsx +31 -0
  124. package/src/pages/publish.tsx +84 -38
  125. package/src/pages/types.ts +1 -9
  126. package/src/pages/upload.tsx +29 -7
  127. package/src/pages/utils.ts +13 -2
  128. package/src/proxy.ts +43 -6
  129. package/src/publish/index.ts +11 -8
  130. package/src/publish/publish.ts +163 -38
  131. package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +4 -3
  132. package/src/queues/cli/commands/consumer/add.ts +71 -0
  133. package/src/queues/cli/commands/consumer/index.ts +22 -0
  134. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  135. package/src/queues/cli/commands/create.ts +25 -0
  136. package/src/queues/cli/commands/delete.ts +26 -0
  137. package/src/queues/cli/commands/index.ts +36 -0
  138. package/src/queues/cli/commands/list.ts +25 -0
  139. package/src/queues/client.ts +135 -0
  140. package/src/queues/utils.ts +18 -0
  141. package/src/r2/constants.ts +4 -0
  142. package/src/r2/index.ts +12 -0
  143. package/src/secret/index.ts +16 -40
  144. package/src/{sites.tsx → sites.ts} +0 -0
  145. package/src/tail/createTail.ts +94 -3
  146. package/src/tail/index.ts +7 -11
  147. package/src/tail/printing.ts +15 -0
  148. package/src/tsconfig-sanity.ts +16 -0
  149. package/src/type-generation.ts +78 -56
  150. package/src/user/access.ts +68 -0
  151. package/src/user/auth-variables.ts +113 -0
  152. package/src/user/choose-account.tsx +1 -31
  153. package/src/user/index.ts +0 -1
  154. package/src/user/{user.tsx → user.ts} +118 -78
  155. package/src/{whoami.tsx → whoami.ts} +37 -71
  156. package/src/worker.ts +18 -1
  157. package/src/yargs-types.ts +19 -2
  158. package/src/zones.ts +31 -5
  159. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  160. package/templates/__tests__/tsconfig.json +8 -0
  161. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  162. package/templates/checked-fetch.js +1 -3
  163. package/templates/d1-beta-facade.js +89 -22
  164. package/templates/facade.d.ts +14 -0
  165. package/templates/first-party-worker-module-facade.ts +4 -3
  166. package/templates/format-dev-errors.ts +7 -6
  167. package/templates/init-tests/test-jest-new-worker.js +3 -5
  168. package/templates/init-tests/test-vitest-new-worker.js +3 -5
  169. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  170. package/templates/middleware/loader-modules.ts +0 -2
  171. package/templates/middleware/loader-sw.ts +51 -31
  172. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  173. package/templates/pages-dev-pipeline.ts +4 -1
  174. package/templates/pages-shim.ts +4 -1
  175. package/templates/pages-template-plugin.ts +12 -7
  176. package/templates/serve-static-assets.ts +16 -14
  177. package/templates/tsconfig-sanity.ts +11 -0
  178. package/templates/tsconfig.init.json +106 -0
  179. package/templates/tsconfig.json +5 -103
  180. package/templates/tsconfig.tsbuildinfo +1 -0
  181. package/wrangler-dist/cli.d.ts +121 -58
  182. package/wrangler-dist/cli.js +42372 -60252
  183. package/wrangler-dist/wasm-sync.wasm +0 -0
  184. package/src/__tests__/d1.test.ts +0 -70
  185. package/src/__tests__/dialogs.test.tsx +0 -40
  186. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  187. package/src/bundle-reporter.tsx +0 -29
  188. package/src/dialogs.tsx +0 -163
  189. package/src/environment-variables.ts +0 -50
  190. package/src/user/env-vars.ts +0 -46
  191. package/templates/experimental-local-cache-stubs.js +0 -27
package/bin/wrangler.js CHANGED
@@ -62,15 +62,21 @@ Consider using a Node.js version manager such as https://volta.sh/ or https://gi
62
62
  ...process.argv.slice(2),
63
63
  ],
64
64
  {
65
- stdio: "inherit",
65
+ stdio: ["inherit", "inherit", "inherit", "ipc"],
66
66
  env: {
67
67
  ...process.env,
68
68
  NODE_EXTRA_CA_CERTS: pathToCACerts,
69
69
  },
70
70
  }
71
- ).on("exit", (code) =>
72
- process.exit(code === undefined || code === null ? 0 : code)
73
- );
71
+ )
72
+ .on("exit", (code) =>
73
+ process.exit(code === undefined || code === null ? 0 : code)
74
+ )
75
+ .on("message", (message) => {
76
+ if (process.send) {
77
+ process.send(message);
78
+ }
79
+ });
74
80
  }
75
81
 
76
82
  /**
@@ -87,7 +93,15 @@ function runDelegatedWrangler() {
87
93
  } = JSON.parse(fs.readFileSync(packageJsonPath));
88
94
  const resolvedBinaryPath = path.resolve(packageJsonPath, "..", binaryPath);
89
95
 
90
- debug(`Delegating to locally-installed version of wrangler @ v${version}`);
96
+ // Make sure the user knows we're delegating to a different installation
97
+ const currentPackageJsonPath = path.resolve(__dirname, "..", "package.json");
98
+ const currentPackage = JSON.parse(fs.readFileSync(currentPackageJsonPath));
99
+ const argv = process.argv.slice(2).join(" ");
100
+ console.log(
101
+ `Delegating to locally-installed wrangler@${version} over global wrangler@${currentPackage.version}...
102
+ Run \`npx wrangler ${argv}\` to use the local version directly.
103
+ `
104
+ );
91
105
 
92
106
  // this call to `spawn` is simpler because the delegated version will do all
93
107
  // of the other work.
@@ -95,11 +109,17 @@ function runDelegatedWrangler() {
95
109
  process.execPath,
96
110
  [resolvedBinaryPath, ...process.argv.slice(2)],
97
111
  {
98
- stdio: "inherit",
112
+ stdio: ["inherit", "inherit", "inherit", "ipc"],
99
113
  }
100
- ).on("exit", (code) =>
101
- process.exit(code === undefined || code === null ? 0 : code)
102
- );
114
+ )
115
+ .on("exit", (code) =>
116
+ process.exit(code === undefined || code === null ? 0 : code)
117
+ )
118
+ .on("message", (message) => {
119
+ if (process.send) {
120
+ process.send(message);
121
+ }
122
+ });
103
123
  }
104
124
 
105
125
  /**
@@ -128,23 +128,45 @@ var init_environment_polyfills = __esm({
128
128
  }
129
129
  });
130
130
 
131
+ // ../pages-shared/environment-polyfills/miniflare-tre.ts
132
+ var miniflare_tre_exports = {};
133
+ __export(miniflare_tre_exports, {
134
+ default: () => miniflare_tre_default
135
+ });
136
+ var miniflare_tre_default;
137
+ var init_miniflare_tre = __esm({
138
+ "../pages-shared/environment-polyfills/miniflare-tre.ts"() {
139
+ init_environment_polyfills();
140
+ miniflare_tre_default = async () => {
141
+ const mf = await import("@miniflare/tre");
142
+ polyfill({
143
+ fetch: mf.fetch,
144
+ Headers: mf.Headers,
145
+ Request: mf.Request,
146
+ Response: mf.Response
147
+ });
148
+ };
149
+ }
150
+ });
151
+
131
152
  // ../pages-shared/environment-polyfills/miniflare.ts
132
153
  var miniflare_exports = {};
133
- import {
134
- fetch as miniflareFetch,
135
- Headers as MiniflareHeaders,
136
- Request as MiniflareRequest,
137
- Response as MiniflareResponse
138
- } from "@miniflare/core";
154
+ __export(miniflare_exports, {
155
+ default: () => miniflare_default
156
+ });
157
+ var miniflare_default;
139
158
  var init_miniflare = __esm({
140
159
  "../pages-shared/environment-polyfills/miniflare.ts"() {
141
160
  init_environment_polyfills();
142
- polyfill({
143
- fetch: miniflareFetch,
144
- Headers: MiniflareHeaders,
145
- Request: MiniflareRequest,
146
- Response: MiniflareResponse
147
- });
161
+ miniflare_default = async () => {
162
+ const mf = await import("@miniflare/core");
163
+ polyfill({
164
+ fetch: mf.fetch,
165
+ Headers: mf.Headers,
166
+ Request: mf.Request,
167
+ Response: mf.Response
168
+ });
169
+ };
148
170
  }
149
171
  });
150
172
 
@@ -329,6 +351,15 @@ var init_rulesEngine = __esm({
329
351
  }
330
352
  });
331
353
 
354
+ // ../pages-shared/asset-server/url.ts
355
+ function stringifyURLToRootRelativePathname(url) {
356
+ return `${url.pathname}${url.search}${url.hash}`;
357
+ }
358
+ var init_url = __esm({
359
+ "../pages-shared/asset-server/url.ts"() {
360
+ }
361
+ });
362
+
332
363
  // ../pages-shared/asset-server/handler.ts
333
364
  var handler_exports = {};
334
365
  __export(handler_exports, {
@@ -339,6 +370,7 @@ __export(handler_exports, {
339
370
  HEADERS_VERSION_V1: () => HEADERS_VERSION_V1,
340
371
  REDIRECTS_VERSION: () => REDIRECTS_VERSION2,
341
372
  generateHandler: () => generateHandler,
373
+ getResponseFromMatch: () => getResponseFromMatch,
342
374
  normaliseHeaders: () => normaliseHeaders,
343
375
  parseQualityWeightedList: () => parseQualityWeightedList
344
376
  });
@@ -409,22 +441,7 @@ async function generateHandler({
409
441
  async function generateResponse() {
410
442
  const match = staticRedirectsMatcher() || generateRedirectsMatcher()({ request })[0];
411
443
  if (match) {
412
- const { status, to } = match;
413
- const destination = new URL(to, request.url);
414
- const location = destination.origin === new URL(request.url).origin ? `${destination.pathname}${destination.search || search}${destination.hash}` : `${destination.href}${destination.search ? "" : search}${destination.hash}`;
415
- switch (status) {
416
- case 301:
417
- return new MovedPermanentlyResponse(location);
418
- case 303:
419
- return new SeeOtherResponse(location);
420
- case 307:
421
- return new TemporaryRedirectResponse(location);
422
- case 308:
423
- return new PermanentRedirectResponse(location);
424
- case 302:
425
- default:
426
- return new FoundResponse(location);
427
- }
444
+ return getResponseFromMatch(match, url);
428
445
  }
429
446
  if (!request.method.match(/^(get|head)$/i)) {
430
447
  return new MethodNotAllowedResponse();
@@ -703,6 +720,27 @@ async function generateHandler({
703
720
  );
704
721
  }
705
722
  }
723
+ function getResponseFromMatch({
724
+ status,
725
+ to
726
+ }, requestUrl) {
727
+ const destination = new URL(to, requestUrl);
728
+ destination.search = destination.search || requestUrl.search;
729
+ const location = destination.origin === requestUrl.origin ? stringifyURLToRootRelativePathname(destination) : destination.toString();
730
+ switch (status) {
731
+ case 301:
732
+ return new MovedPermanentlyResponse(location);
733
+ case 303:
734
+ return new SeeOtherResponse(location);
735
+ case 307:
736
+ return new TemporaryRedirectResponse(location);
737
+ case 308:
738
+ return new PermanentRedirectResponse(location);
739
+ case 302:
740
+ default:
741
+ return new FoundResponse(location);
742
+ }
743
+ }
706
744
  function parseQualityWeightedList(list = "") {
707
745
  const items = {};
708
746
  list.replace(/\s/g, "").split(",").forEach((el) => {
@@ -728,6 +766,7 @@ var init_handler = __esm({
728
766
  "../pages-shared/asset-server/handler.ts"() {
729
767
  init_responses();
730
768
  init_rulesEngine();
769
+ init_url();
731
770
  ASSET_PRESERVATION_CACHE = "assetPreservationCache";
732
771
  CACHE_CONTROL_PRESERVATION = "public, s-maxage=604800";
733
772
  CACHE_CONTROL_BROWSER = "public, max-age=0, must-revalidate";
@@ -749,8 +788,8 @@ import {
749
788
  Log as MiniflareLog,
750
789
  LogLevel as MiniflareLogLevel,
751
790
  Miniflare,
752
- Request as MiniflareRequest3,
753
- Response as MiniflareResponse3
791
+ Request as MiniflareRequest,
792
+ Response as MiniflareResponse
754
793
  } from "miniflare";
755
794
 
756
795
  // ../../node_modules/yargs/lib/platform-shims/esm.mjs
@@ -5592,6 +5631,7 @@ function createMetadataObject({
5592
5631
  headers,
5593
5632
  webAnalyticsToken,
5594
5633
  deploymentId,
5634
+ failOpen,
5595
5635
  logger = (_message) => {
5596
5636
  }
5597
5637
  }) {
@@ -5599,7 +5639,8 @@ function createMetadataObject({
5599
5639
  ...constructRedirects({ redirects, logger }),
5600
5640
  ...constructHeaders({ headers, logger }),
5601
5641
  ...constructWebAnalytics({ webAnalyticsToken, logger }),
5602
- deploymentId
5642
+ deploymentId,
5643
+ failOpen
5603
5644
  };
5604
5645
  }
5605
5646
  function constructRedirects({
@@ -5630,7 +5671,11 @@ function constructRedirects({
5630
5671
  for (const rule of redirects.rules) {
5631
5672
  if (!rule.from.match(SPLAT_REGEX) && !rule.from.match(PLACEHOLDER_REGEX)) {
5632
5673
  if (canCreateStaticRule) {
5633
- staticRedirects[rule.from] = { status: rule.status, to: rule.to };
5674
+ staticRedirects[rule.from] = {
5675
+ status: rule.status,
5676
+ to: rule.to,
5677
+ lineNumber: rule.lineNumber
5678
+ };
5634
5679
  continue;
5635
5680
  } else {
5636
5681
  logger(
@@ -5972,14 +6017,9 @@ function parseRedirects(input) {
5972
6017
 
5973
6018
  // src/miniflare-cli/assets.ts
5974
6019
  var import_mime = __toESM(require_mime());
5975
- import { fetch as miniflareFetch2 } from "@miniflare/core";
5976
- import {
5977
- Response as MiniflareResponse2,
5978
- Request as MiniflareRequest2
5979
- } from "@miniflare/core";
5980
6020
  import { watch } from "chokidar";
5981
6021
 
5982
- // src/pages/hash.tsx
6022
+ // src/pages/hash.ts
5983
6023
  import { readFileSync as readFileSync4 } from "node:fs";
5984
6024
  import { extname as extname2 } from "node:path";
5985
6025
  import { hash as blake3hash } from "blake3-wasm";
@@ -5992,28 +6032,34 @@ var hashFile = (filepath) => {
5992
6032
 
5993
6033
  // src/miniflare-cli/assets.ts
5994
6034
  async function generateASSETSBinding(options) {
5995
- const assetsFetch = options.directory !== void 0 ? await generateAssetsFetch(options.directory, options.log) : invalidAssetsFetch;
6035
+ const assetsFetch = options.directory !== void 0 ? await generateAssetsFetch(options.directory, options.log, options.tre) : invalidAssetsFetch;
6036
+ const miniflare = options.tre ? await import("@miniflare/tre") : await import("@miniflare/core");
6037
+ const Request = miniflare.Request;
6038
+ const Response2 = miniflare.Response;
6039
+ const fetch2 = options.tre ? miniflare.fetch : (await import("@miniflare/web-sockets")).upgradingFetch;
5996
6040
  return async function(miniflareRequest) {
5997
6041
  if (options.proxyPort) {
5998
6042
  try {
5999
6043
  const url = new URL(miniflareRequest.url);
6000
6044
  url.host = `localhost:${options.proxyPort}`;
6001
- return await miniflareFetch2(url, miniflareRequest);
6045
+ const proxyRequest = new Request(url, miniflareRequest);
6046
+ if (proxyRequest.headers.get("Upgrade") === "websocket") {
6047
+ proxyRequest.headers.delete("Sec-WebSocket-Accept");
6048
+ proxyRequest.headers.delete("Sec-WebSocket-Key");
6049
+ }
6050
+ return await fetch2(proxyRequest);
6002
6051
  } catch (thrown) {
6003
6052
  options.log.error(new Error(`Could not proxy request: ${thrown}`));
6004
- return new MiniflareResponse2(
6005
- `[wrangler] Could not proxy request: ${thrown}`,
6006
- {
6007
- status: 502
6008
- }
6009
- );
6053
+ return new Response2(`[wrangler] Could not proxy request: ${thrown}`, {
6054
+ status: 502
6055
+ });
6010
6056
  }
6011
6057
  } else {
6012
6058
  try {
6013
6059
  return await assetsFetch(miniflareRequest);
6014
6060
  } catch (thrown) {
6015
6061
  options.log.error(new Error(`Could not serve static asset: ${thrown}`));
6016
- return new MiniflareResponse2(
6062
+ return new Response2(
6017
6063
  `[wrangler] Could not serve static asset: ${thrown}`,
6018
6064
  { status: 502 }
6019
6065
  );
@@ -6021,8 +6067,11 @@ async function generateASSETSBinding(options) {
6021
6067
  }
6022
6068
  };
6023
6069
  }
6024
- async function generateAssetsFetch(directory, log) {
6025
- await Promise.resolve().then(() => (init_miniflare(), miniflare_exports));
6070
+ async function generateAssetsFetch(directory, log, tre) {
6071
+ const polyfill2 = tre ? (await Promise.resolve().then(() => (init_miniflare_tre(), miniflare_tre_exports))).default : (await Promise.resolve().then(() => (init_miniflare(), miniflare_exports))).default;
6072
+ await polyfill2();
6073
+ const miniflare = tre ? await import("@miniflare/tre") : await import("@miniflare/core");
6074
+ const Request = miniflare.Request;
6026
6075
  const { generateHandler: generateHandler2, parseQualityWeightedList: parseQualityWeightedList2 } = await Promise.resolve().then(() => (init_handler(), handler_exports));
6027
6076
  const headersFile = join(directory, "_headers");
6028
6077
  const redirectsFile = join(directory, "_redirects");
@@ -6116,7 +6165,7 @@ async function generateAssetsFetch(directory, log) {
6116
6165
  });
6117
6166
  };
6118
6167
  return async (input, init) => {
6119
- const request = new MiniflareRequest2(input, init);
6168
+ const request = new Request(input, init);
6120
6169
  return await generateResponse(request);
6121
6170
  };
6122
6171
  }
@@ -6184,12 +6233,12 @@ async function main() {
6184
6233
  namespace.get = (id) => {
6185
6234
  const stub = new DurableObjectStub(factory, id);
6186
6235
  stub.fetch = (...reqArgs) => {
6187
- const requestFromArgs = new MiniflareRequest3(...reqArgs);
6236
+ const requestFromArgs = new MiniflareRequest(...reqArgs);
6188
6237
  const url = new URL(requestFromArgs.url);
6189
6238
  url.host = host;
6190
6239
  if (port !== void 0)
6191
6240
  url.port = port.toString();
6192
- const request = new MiniflareRequest3(
6241
+ const request = new MiniflareRequest(
6193
6242
  url.toString(),
6194
6243
  requestFromArgs
6195
6244
  );
@@ -6222,7 +6271,8 @@ async function main() {
6222
6271
  const options = {
6223
6272
  log: config.log,
6224
6273
  proxyPort: opts.proxyPort,
6225
- directory: opts.directory
6274
+ directory: opts.directory,
6275
+ tre: false
6226
6276
  };
6227
6277
  config.serviceBindings = {
6228
6278
  ...config.serviceBindings,
@@ -6248,7 +6298,7 @@ async function main() {
6248
6298
  }`,
6249
6299
  serviceBindings: {
6250
6300
  DO: async (request) => {
6251
- request = new MiniflareRequest3(request);
6301
+ request = new MiniflareRequest(request);
6252
6302
  const name = request.headers.get("x-miniflare-durable-object-name");
6253
6303
  const idString = request.headers.get(
6254
6304
  "x-miniflare-durable-object-id"
@@ -6256,7 +6306,7 @@ async function main() {
6256
6306
  request.headers.delete("x-miniflare-durable-object-name");
6257
6307
  request.headers.delete("x-miniflare-durable-object-id");
6258
6308
  if (!name || !idString) {
6259
- return new MiniflareResponse3(
6309
+ return new MiniflareResponse(
6260
6310
  "[durable-object-proxy-err] Missing `x-miniflare-durable-object-name` or `x-miniflare-durable-object-id` headers.",
6261
6311
  { status: 400 }
6262
6312
  );
@@ -6264,14 +6314,14 @@ async function main() {
6264
6314
  const namespace = await mf?.getDurableObjectNamespace(name);
6265
6315
  const id = namespace?.idFromString(idString);
6266
6316
  if (!id) {
6267
- return new MiniflareResponse3(
6317
+ return new MiniflareResponse(
6268
6318
  "[durable-object-proxy-err] Could not generate an ID. Possibly due to a mismatched DO name and ID?",
6269
6319
  { status: 500 }
6270
6320
  );
6271
6321
  }
6272
6322
  const stub = namespace?.get(id);
6273
6323
  if (!stub) {
6274
- return new MiniflareResponse3(
6324
+ return new MiniflareResponse(
6275
6325
  "[durable-object-proxy-err] Could not generate a stub. Possibly due to a mismatched DO name and ID?",
6276
6326
  { status: 500 }
6277
6327
  );
@@ -6286,7 +6336,7 @@ async function main() {
6286
6336
  }
6287
6337
  process.send && process.send(
6288
6338
  JSON.stringify({
6289
- mfPort,
6339
+ port: mfPort,
6290
6340
  ready: true,
6291
6341
  durableObjectsPort: durableObjectsMfPort
6292
6342
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrangler",
3
- "version": "0.0.0-aeee02c3",
3
+ "version": "0.0.0-af4f27c5",
4
4
  "description": "Command-line interface for all things Cloudflare Workers",
5
5
  "keywords": [
6
6
  "wrangler",
@@ -57,7 +57,7 @@
57
57
  "assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
58
58
  "build": "npm run clean && npm run bundle && npm run emit-types",
59
59
  "bundle": "node -r esbuild-register scripts/bundle.ts",
60
- "check:type": "tsc",
60
+ "check:type": "node -r esbuild-register scripts/tsc-all.ts",
61
61
  "clean": "rimraf wrangler-dist miniflare-dist emitted-types",
62
62
  "dev": "npm run clean && concurrently -c black,blue --kill-others-on-fail false 'npm run bundle -- --watch' 'npm run check:type -- --watch --preserveWatchOutput'",
63
63
  "emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
@@ -100,13 +100,13 @@
100
100
  "@cloudflare/kv-asset-handler": "^0.2.0",
101
101
  "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
102
102
  "@esbuild-plugins/node-modules-polyfill": "^0.1.4",
103
- "@miniflare/core": "2.10.0",
104
- "@miniflare/d1": "2.10.0",
105
- "@miniflare/durable-objects": "2.10.0",
103
+ "@miniflare/core": "2.11.0",
104
+ "@miniflare/d1": "2.11.0",
105
+ "@miniflare/durable-objects": "2.11.0",
106
106
  "blake3-wasm": "^2.1.5",
107
107
  "chokidar": "^3.5.3",
108
108
  "esbuild": "0.14.51",
109
- "miniflare": "2.10.0",
109
+ "miniflare": "2.11.0",
110
110
  "nanoid": "^3.3.3",
111
111
  "path-to-regexp": "^6.2.0",
112
112
  "selfsigned": "^2.0.1",
@@ -114,11 +114,11 @@
114
114
  "xxhash-wasm": "^1.0.1"
115
115
  },
116
116
  "devDependencies": {
117
- "@databases/split-sql-query": "^1.0.3",
118
- "@databases/sql": "^3.2.0",
117
+ "@cloudflare/types": "^6.18.4",
118
+ "@cloudflare/workers-types": "^4.20221111.1",
119
119
  "@iarna/toml": "^3.0.0",
120
120
  "@microsoft/api-extractor": "^7.28.3",
121
- "@miniflare/tre": "3.0.0-next.2",
121
+ "@miniflare/tre": "^3.0.0-next.8",
122
122
  "@types/better-sqlite3": "^7.6.0",
123
123
  "@types/busboy": "^1.5.0",
124
124
  "@types/command-exists": "^1.2.0",
@@ -135,6 +135,8 @@
135
135
  "@types/yargs": "^17.0.10",
136
136
  "@webcontainer/env": "^1.0.1",
137
137
  "body-parser": "^1.20.0",
138
+ "chalk": "^2.4.2",
139
+ "cli-table3": "^0.6.3",
138
140
  "clipboardy": "^3.0.0",
139
141
  "cmd-shim": "^4.1.0",
140
142
  "command-exists": "^1.2.9",
@@ -161,7 +163,7 @@
161
163
  "jest-websocket-mock": "^2.3.0",
162
164
  "mime": "^3.0.0",
163
165
  "minimatch": "^5.1.0",
164
- "msw": "^0.47.1",
166
+ "msw": "^0.49.1",
165
167
  "npx-import": "^1.1.3",
166
168
  "open": "^8.4.0",
167
169
  "p-queue": "^7.2.0",
@@ -177,11 +179,12 @@
177
179
  "timeago.js": "^4.0.2",
178
180
  "tmp-promise": "^3.0.3",
179
181
  "ts-dedent": "^2.2.0",
180
- "undici": "^5.11.0",
182
+ "undici": "5.11.0",
181
183
  "update-check": "^1.5.4",
182
184
  "ws": "^8.5.0",
183
185
  "xdg-app-paths": "^7.3.0",
184
- "yargs": "^17.4.1"
186
+ "yargs": "^17.4.1",
187
+ "yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz"
185
188
  },
186
189
  "optionalDependencies": {
187
190
  "fsevents": "~2.3.2"
@@ -0,0 +1,25 @@
1
+ import { domainUsesAccess, getAccessToken } from "../user/access";
2
+ import { msw, mswAccessHandlers } from "./helpers/msw";
3
+
4
+ describe("access", () => {
5
+ beforeEach(() => {
6
+ msw.use(...mswAccessHandlers);
7
+ });
8
+
9
+ describe("basic", () => {
10
+ it("should correctly detect an access protected domain", async () => {
11
+ expect(await domainUsesAccess("access-protected.com")).toBeTruthy();
12
+ expect(await domainUsesAccess("not-access-protected.com")).toBeFalsy();
13
+ });
14
+ it("should not fail without cloudflared installed", async () => {
15
+ expect(await getAccessToken("not-access-protected.com")).toBeFalsy();
16
+ });
17
+ it("should error without cloudflared installed on an access protected domain", async () => {
18
+ await expect(getAccessToken("access-protected.com")).rejects.toEqual(
19
+ new Error(
20
+ "To use Wrangler with Cloudflare Access, please install `cloudflared` from https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation"
21
+ )
22
+ );
23
+ });
24
+ });
25
+ });
@@ -9,8 +9,12 @@ describe("unstable_dev", () => {
9
9
  it("should return Hello World", async () => {
10
10
  const worker = await unstable_dev(
11
11
  "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
12
- {},
13
- { disableExperimentalWarning: true }
12
+ {
13
+ experimental: {
14
+ disableExperimentalWarning: true,
15
+ disableDevRegistry: true,
16
+ },
17
+ }
14
18
  );
15
19
  const resp = await worker.fetch();
16
20
  if (resp) {
@@ -23,8 +27,12 @@ describe("unstable_dev", () => {
23
27
  it("should return the port that the server started on (1)", async () => {
24
28
  const worker = await unstable_dev(
25
29
  "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
26
- {},
27
- { disableExperimentalWarning: true }
30
+ {
31
+ experimental: {
32
+ disableExperimentalWarning: true,
33
+ disableDevRegistry: true,
34
+ },
35
+ }
28
36
  );
29
37
  expect(worker.port).toBeGreaterThan(0);
30
38
  await worker.stop();
@@ -33,8 +41,13 @@ describe("unstable_dev", () => {
33
41
  it("should return the port that the server started on (2)", async () => {
34
42
  const worker = await unstable_dev(
35
43
  "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
36
- { port: 9191 },
37
- { disableExperimentalWarning: true }
44
+ {
45
+ port: 9191,
46
+ experimental: {
47
+ disableExperimentalWarning: true,
48
+ disableDevRegistry: true,
49
+ },
50
+ }
38
51
  );
39
52
  expect(worker.port).toBe(9191);
40
53
  await worker.stop();
@@ -45,8 +58,13 @@ describe("unstable dev fetch input protocol", () => {
45
58
  it("should use http localProtocol", async () => {
46
59
  const worker = await unstable_dev(
47
60
  "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
48
- { localProtocol: "http" },
49
- { disableExperimentalWarning: true }
61
+ {
62
+ localProtocol: "http",
63
+ experimental: {
64
+ disableExperimentalWarning: true,
65
+ disableDevRegistry: true,
66
+ },
67
+ }
50
68
  );
51
69
  const res = await worker.fetch();
52
70
  if (res) {
@@ -59,8 +77,13 @@ describe("unstable dev fetch input protocol", () => {
59
77
  it("should use undefined localProtocol", async () => {
60
78
  const worker = await unstable_dev(
61
79
  "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
62
- { localProtocol: undefined },
63
- { disableExperimentalWarning: true }
80
+ {
81
+ localProtocol: undefined,
82
+ experimental: {
83
+ disableExperimentalWarning: true,
84
+ disableDevRegistry: true,
85
+ },
86
+ }
64
87
  );
65
88
  const res = await worker.fetch();
66
89
  if (res) {
@@ -91,11 +114,13 @@ describe("unstable dev fetch input parsing", () => {
91
114
  `;
92
115
  fs.writeFileSync("index.js", scriptContent);
93
116
  const port = 21213;
94
- const worker = await unstable_dev(
95
- "index.js",
96
- { port },
97
- { disableExperimentalWarning: true }
98
- );
117
+ const worker = await unstable_dev("index.js", {
118
+ port,
119
+ experimental: {
120
+ disableExperimentalWarning: true,
121
+ disableDevRegistry: true,
122
+ },
123
+ });
99
124
  const req = new Request("http://0.0.0.0:21213/test", {
100
125
  method: "POST",
101
126
  });
@@ -119,11 +144,12 @@ describe("unstable dev fetch input parsing", () => {
119
144
  };
120
145
  `;
121
146
  fs.writeFileSync("index.js", scriptContent);
122
- const worker = await unstable_dev(
123
- "index.js",
124
- {},
125
- { disableExperimentalWarning: true }
126
- );
147
+ const worker = await unstable_dev("index.js", {
148
+ experimental: {
149
+ disableExperimentalWarning: true,
150
+ disableDevRegistry: true,
151
+ },
152
+ });
127
153
  const url = new URL("http://localhost:80/test");
128
154
  const resp = await worker.fetch(url);
129
155
  let text;
@@ -145,11 +171,12 @@ describe("unstable dev fetch input parsing", () => {
145
171
  };
146
172
  `;
147
173
  fs.writeFileSync("index.js", scriptContent);
148
- const worker = await unstable_dev(
149
- "index.js",
150
- {},
151
- { disableExperimentalWarning: true }
152
- );
174
+ const worker = await unstable_dev("index.js", {
175
+ experimental: {
176
+ disableExperimentalWarning: true,
177
+ disableDevRegistry: true,
178
+ },
179
+ });
153
180
  const resp = await worker.fetch("http://example.com/test");
154
181
  let text;
155
182
  if (resp) text = await resp.text();
@@ -170,11 +197,12 @@ describe("unstable dev fetch input parsing", () => {
170
197
  };
171
198
  `;
172
199
  fs.writeFileSync("index.js", scriptContent);
173
- const worker = await unstable_dev(
174
- "index.js",
175
- {},
176
- { disableExperimentalWarning: true }
177
- );
200
+ const worker = await unstable_dev("index.js", {
201
+ experimental: {
202
+ disableExperimentalWarning: true,
203
+ disableDevRegistry: true,
204
+ },
205
+ });
178
206
  const resp = await worker.fetch("/test");
179
207
  let text;
180
208
  if (resp) text = await resp.text();
@@ -195,11 +223,12 @@ describe("unstable dev fetch input parsing", () => {
195
223
  };
196
224
  `;
197
225
  fs.writeFileSync("index.js", scriptContent);
198
- const worker = await unstable_dev(
199
- "index.js",
200
- {},
201
- { disableExperimentalWarning: true }
202
- );
226
+ const worker = await unstable_dev("index.js", {
227
+ experimental: {
228
+ disableExperimentalWarning: true,
229
+ disableDevRegistry: true,
230
+ },
231
+ });
203
232
  const resp = await worker.fetch("");
204
233
  let text;
205
234
  if (resp) text = await resp.text();