wrangler 0.0.0-afca1b6c → 0.0.0-afdb7e49

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 (168) hide show
  1. package/README.md +0 -4
  2. package/miniflare-dist/index.mjs +73 -71
  3. package/package.json +25 -8
  4. package/src/__tests__/access.test.ts +25 -0
  5. package/src/__tests__/api-dev.test.ts +24 -4
  6. package/src/__tests__/api-devregistry.test.js +56 -0
  7. package/src/__tests__/configuration.test.ts +303 -348
  8. package/src/__tests__/d1.test.ts +74 -0
  9. package/src/__tests__/delete.test.ts +230 -0
  10. package/src/__tests__/deployments.test.ts +91 -0
  11. package/src/__tests__/dev.test.tsx +249 -33
  12. package/src/__tests__/generate.test.ts +207 -63
  13. package/src/__tests__/get-host-from-url.test.ts +16 -0
  14. package/src/__tests__/helpers/mock-cfetch.ts +18 -1
  15. package/src/__tests__/helpers/mock-kv.ts +1 -1
  16. package/src/__tests__/helpers/mock-oauth-flow.ts +4 -2
  17. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  18. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  19. package/src/__tests__/helpers/msw/handlers/namespaces.ts +7 -7
  20. package/src/__tests__/helpers/msw/handlers/oauth.ts +5 -5
  21. package/src/__tests__/helpers/msw/handlers/r2.ts +8 -8
  22. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  23. package/src/__tests__/helpers/msw/handlers/user.ts +6 -6
  24. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  25. package/src/__tests__/helpers/msw/index.ts +19 -2
  26. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  27. package/src/__tests__/helpers/{hello-world-worker.js → worker-scripts/hello-world-worker.js} +0 -0
  28. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  29. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  30. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  31. package/src/__tests__/index.test.ts +52 -35
  32. package/src/__tests__/init.test.ts +329 -10
  33. package/src/__tests__/jest.setup.ts +20 -4
  34. package/src/__tests__/kv.test.ts +405 -401
  35. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  36. package/src/__tests__/middleware.test.ts +703 -745
  37. package/src/__tests__/pages-deployment-tail.test.ts +820 -0
  38. package/src/__tests__/pages.test.ts +511 -69
  39. package/src/__tests__/paths.test.ts +23 -1
  40. package/src/__tests__/publish.test.ts +1314 -714
  41. package/src/__tests__/pubsub.test.ts +3 -0
  42. package/src/__tests__/queues.test.ts +371 -0
  43. package/src/__tests__/r2.test.ts +290 -268
  44. package/src/__tests__/secret.test.ts +6 -6
  45. package/src/__tests__/tail.test.ts +39 -14
  46. package/src/__tests__/type-generation.test.ts +225 -0
  47. package/src/__tests__/user.test.ts +4 -4
  48. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  49. package/src/__tests__/whoami.test.tsx +6 -2
  50. package/src/__tests__/worker-namespace.test.ts +120 -123
  51. package/src/api/dev.ts +19 -13
  52. package/src/bundle-reporter.tsx +41 -2
  53. package/src/bundle.ts +168 -60
  54. package/src/cfetch/index.ts +40 -1
  55. package/src/cfetch/internal.ts +39 -74
  56. package/src/cli.ts +1 -2
  57. package/src/config/config.ts +12 -0
  58. package/src/config/environment.ts +76 -0
  59. package/src/config/index.ts +87 -4
  60. package/src/config/validation.ts +241 -0
  61. package/src/config-cache.ts +1 -1
  62. package/src/create-worker-preview.ts +10 -3
  63. package/src/create-worker-upload-form.ts +27 -2
  64. package/src/d1/backups.tsx +218 -0
  65. package/src/d1/constants.ts +2 -0
  66. package/src/d1/create.tsx +63 -0
  67. package/src/d1/delete.tsx +56 -0
  68. package/src/d1/execute.tsx +352 -0
  69. package/src/d1/formatTimeAgo.ts +14 -0
  70. package/src/d1/index.ts +99 -0
  71. package/src/d1/list.tsx +48 -0
  72. package/src/d1/migrations.tsx +446 -0
  73. package/src/d1/options.ts +22 -0
  74. package/src/d1/types.tsx +24 -0
  75. package/src/d1/utils.ts +48 -0
  76. package/src/delete.ts +108 -0
  77. package/src/deployments.ts +77 -0
  78. package/src/deprecated/index.ts +438 -0
  79. package/src/dev/dev-vars.ts +11 -8
  80. package/src/dev/dev.tsx +66 -24
  81. package/src/dev/get-local-persistence-path.tsx +31 -0
  82. package/src/dev/local.tsx +292 -17
  83. package/src/dev/remote.tsx +288 -110
  84. package/src/dev/start-server.ts +166 -43
  85. package/src/dev/use-esbuild.ts +24 -6
  86. package/src/dev-registry.tsx +41 -0
  87. package/src/dev.tsx +105 -52
  88. package/src/dialogs.tsx +24 -10
  89. package/src/dispatch-namespace.ts +4 -3
  90. package/src/entry.ts +1 -1
  91. package/src/environment-variables.ts +17 -2
  92. package/src/git-client.ts +85 -3
  93. package/src/index.tsx +218 -1896
  94. package/src/init.ts +52 -18
  95. package/src/inspect.ts +47 -27
  96. package/src/is-interactive.ts +4 -0
  97. package/src/{kv.ts → kv/helpers.ts} +3 -3
  98. package/src/kv/index.ts +596 -0
  99. package/src/logger.ts +25 -6
  100. package/src/metrics/send-event.ts +3 -0
  101. package/src/miniflare-cli/assets.ts +16 -9
  102. package/src/miniflare-cli/index.ts +19 -19
  103. package/src/module-collection.ts +9 -0
  104. package/src/pages/build.tsx +34 -2
  105. package/src/pages/constants.ts +4 -1
  106. package/src/pages/deployment-tails.tsx +284 -0
  107. package/src/pages/deployments.tsx +5 -27
  108. package/src/pages/dev.tsx +209 -58
  109. package/src/pages/errors.ts +48 -4
  110. package/src/pages/functions/buildPlugin.ts +83 -87
  111. package/src/pages/functions/buildWorker.ts +119 -110
  112. package/src/pages/functions/routes-transformation.ts +1 -14
  113. package/src/pages/functions/routes-validation.test.ts +403 -0
  114. package/src/pages/functions/routes-validation.ts +202 -0
  115. package/src/pages/functions.tsx +5 -19
  116. package/src/pages/index.tsx +8 -0
  117. package/src/pages/prompt-select-project.tsx +31 -0
  118. package/src/pages/publish.tsx +110 -94
  119. package/src/pages/types.ts +1 -9
  120. package/src/pages/upload.tsx +44 -16
  121. package/src/pages/utils.ts +13 -2
  122. package/src/paths.ts +30 -4
  123. package/src/proxy.ts +370 -167
  124. package/src/publish/index.ts +270 -0
  125. package/src/{publish.ts → publish/publish.ts} +258 -80
  126. package/src/pubsub/pubsub-commands.tsx +3 -2
  127. package/src/queues/cli/commands/consumer/add.ts +71 -0
  128. package/src/queues/cli/commands/consumer/index.ts +22 -0
  129. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  130. package/src/queues/cli/commands/create.ts +25 -0
  131. package/src/queues/cli/commands/delete.ts +26 -0
  132. package/src/queues/cli/commands/index.ts +33 -0
  133. package/src/queues/cli/commands/list.ts +25 -0
  134. package/src/queues/client.ts +135 -0
  135. package/src/r2/constants.ts +4 -0
  136. package/src/{r2.ts → r2/helpers.ts} +2 -2
  137. package/src/r2/index.ts +289 -0
  138. package/src/routes.ts +140 -0
  139. package/src/secret/index.ts +378 -0
  140. package/src/sites.tsx +3 -3
  141. package/src/tail/createTail.ts +379 -0
  142. package/src/tail/index.ts +199 -300
  143. package/src/tail/printing.ts +2 -2
  144. package/src/type-generation.ts +173 -0
  145. package/src/user/access.ts +69 -0
  146. package/src/user/user.tsx +1 -0
  147. package/src/utils/collectKeyValues.ts +14 -0
  148. package/src/worker.ts +42 -1
  149. package/src/yargs-types.ts +24 -0
  150. package/src/zones.ts +33 -9
  151. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  152. package/templates/d1-beta-facade.js +205 -0
  153. package/templates/{test-new-worker.js → init-tests/test-jest-new-worker.js} +0 -0
  154. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  155. package/templates/middleware/middleware-scheduled.ts +2 -1
  156. package/templates/new-worker.js +1 -1
  157. package/templates/pages-dev-pipeline.ts +28 -0
  158. package/templates/pages-dev-util.ts +52 -0
  159. package/templates/pages-template-plugin.ts +4 -0
  160. package/templates/pages-template-worker.ts +21 -4
  161. package/templates/tsconfig.json +2 -1
  162. package/wrangler-dist/cli.d.ts +491 -6
  163. package/wrangler-dist/cli.js +131489 -123019
  164. package/src/__tests__/helpers/msw/handlers/index.ts +0 -13
  165. package/src/faye-websocket.d.ts +0 -6
  166. package/src/generate.ts +0 -131
  167. package/src/miniflare-cli/enum-keys.ts +0 -17
  168. package/src/preview.ts +0 -31
package/README.md CHANGED
@@ -82,7 +82,3 @@ For more commands and options, refer to the [documentation](https://developers.c
82
82
  ## Documentation
83
83
 
84
84
  For the latest Wrangler documentation, [click here](https://developers.cloudflare.com/workers/wrangler/).
85
-
86
- ```
87
-
88
- ```
@@ -111,10 +111,10 @@ var require_mime = __commonJS({
111
111
  }
112
112
  });
113
113
 
114
- // ../pages-shared/src/environment-polyfills/index.ts
114
+ // ../pages-shared/environment-polyfills/index.ts
115
115
  var polyfill;
116
116
  var init_environment_polyfills = __esm({
117
- "../pages-shared/src/environment-polyfills/index.ts"() {
117
+ "../pages-shared/environment-polyfills/index.ts"() {
118
118
  polyfill = (environment) => {
119
119
  Object.entries(environment).map(([name, value]) => {
120
120
  Object.defineProperty(globalThis, name, {
@@ -128,7 +128,7 @@ var init_environment_polyfills = __esm({
128
128
  }
129
129
  });
130
130
 
131
- // ../pages-shared/src/environment-polyfills/miniflare.ts
131
+ // ../pages-shared/environment-polyfills/miniflare.ts
132
132
  var miniflare_exports = {};
133
133
  import {
134
134
  fetch as miniflareFetch,
@@ -137,7 +137,7 @@ import {
137
137
  Response as MiniflareResponse
138
138
  } from "@miniflare/core";
139
139
  var init_miniflare = __esm({
140
- "../pages-shared/src/environment-polyfills/miniflare.ts"() {
140
+ "../pages-shared/environment-polyfills/miniflare.ts"() {
141
141
  init_environment_polyfills();
142
142
  polyfill({
143
143
  fetch: miniflareFetch,
@@ -148,7 +148,7 @@ var init_miniflare = __esm({
148
148
  }
149
149
  });
150
150
 
151
- // ../pages-shared/src/asset-server/responses.ts
151
+ // ../pages-shared/asset-server/responses.ts
152
152
  function mergeHeaders(base, extra) {
153
153
  base = new Headers(base ?? {});
154
154
  extra = new Headers(extra ?? {});
@@ -159,7 +159,7 @@ function mergeHeaders(base, extra) {
159
159
  }
160
160
  var OkResponse, MovedPermanentlyResponse, FoundResponse, NotModifiedResponse, PermanentRedirectResponse, NotFoundResponse, MethodNotAllowedResponse, NotAcceptableResponse, InternalServerErrorResponse, SeeOtherResponse, TemporaryRedirectResponse;
161
161
  var init_responses = __esm({
162
- "../pages-shared/src/asset-server/responses.ts"() {
162
+ "../pages-shared/asset-server/responses.ts"() {
163
163
  OkResponse = class extends Response {
164
164
  constructor(...[body, init]) {
165
165
  super(body, {
@@ -278,10 +278,10 @@ ${err.stack}`;
278
278
  }
279
279
  });
280
280
 
281
- // ../pages-shared/src/asset-server/rulesEngine.ts
281
+ // ../pages-shared/asset-server/rulesEngine.ts
282
282
  var ESCAPE_REGEX_CHARACTERS, escapeRegex, HOST_PLACEHOLDER_REGEX, PLACEHOLDER_REGEX2, replacer, generateRulesMatcher;
283
283
  var init_rulesEngine = __esm({
284
- "../pages-shared/src/asset-server/rulesEngine.ts"() {
284
+ "../pages-shared/asset-server/rulesEngine.ts"() {
285
285
  ESCAPE_REGEX_CHARACTERS = /[-/\\^$*+?.()|[\]{}]/g;
286
286
  escapeRegex = (str) => {
287
287
  return str.replace(ESCAPE_REGEX_CHARACTERS, "\\$&");
@@ -329,7 +329,7 @@ var init_rulesEngine = __esm({
329
329
  }
330
330
  });
331
331
 
332
- // ../pages-shared/src/asset-server/handler.ts
332
+ // ../pages-shared/asset-server/handler.ts
333
333
  var handler_exports = {};
334
334
  __export(handler_exports, {
335
335
  ANALYTICS_VERSION: () => ANALYTICS_VERSION2,
@@ -491,34 +491,6 @@ async function generateHandler({
491
491
  ...Object.fromEntries(existingHeaders.entries()),
492
492
  ...Object.fromEntries(extraHeaders.entries())
493
493
  });
494
- const headersMatcher = generateRulesMatcher(
495
- headerRules,
496
- ({ set = {}, unset = [] }, replacements) => {
497
- const replacedSet = {};
498
- Object.keys(set).forEach((key) => {
499
- replacedSet[key] = replacer(set[key], replacements);
500
- });
501
- return {
502
- set: replacedSet,
503
- unset
504
- };
505
- }
506
- );
507
- const matches = headersMatcher({ request });
508
- const setMap = /* @__PURE__ */ new Set();
509
- matches.forEach(({ set = {}, unset = [] }) => {
510
- Object.keys(set).forEach((key) => {
511
- if (setMap.has(key.toLowerCase())) {
512
- headers.append(key, set[key]);
513
- } else {
514
- headers.set(key, set[key]);
515
- setMap.add(key.toLowerCase());
516
- }
517
- });
518
- unset.forEach((key) => {
519
- headers.delete(key);
520
- });
521
- });
522
494
  if (earlyHintsCache) {
523
495
  const preEarlyHintsHeaders = new Headers(headers);
524
496
  const earlyHintsCacheKey = `${protocol}//${host}${pathname}`;
@@ -537,8 +509,15 @@ async function generateHandler({
537
509
  (async () => {
538
510
  try {
539
511
  const links = [];
540
- const transformedResponse = new HTMLRewriter().on("link[rel=preconnect],link[rel=preload]", {
512
+ const transformedResponse = new HTMLRewriter().on("link[rel~=preconnect],link[rel~=preload]", {
541
513
  element(element) {
514
+ for (const [attributeName] of element.attributes) {
515
+ if (!ALLOWED_EARLY_HINT_LINK_ATTRIBUTES.includes(
516
+ attributeName.toLowerCase()
517
+ )) {
518
+ return;
519
+ }
520
+ }
542
521
  const href = element.getAttribute("href") || void 0;
543
522
  const rel = element.getAttribute("rel") || void 0;
544
523
  const as = element.getAttribute("as") || void 0;
@@ -568,6 +547,34 @@ async function generateHandler({
568
547
  );
569
548
  }
570
549
  }
550
+ const headersMatcher = generateRulesMatcher(
551
+ headerRules,
552
+ ({ set = {}, unset = [] }, replacements) => {
553
+ const replacedSet = {};
554
+ Object.keys(set).forEach((key) => {
555
+ replacedSet[key] = replacer(set[key], replacements);
556
+ });
557
+ return {
558
+ set: replacedSet,
559
+ unset
560
+ };
561
+ }
562
+ );
563
+ const matches = headersMatcher({ request });
564
+ const setMap = /* @__PURE__ */ new Set();
565
+ matches.forEach(({ set = {}, unset = [] }) => {
566
+ unset.forEach((key) => {
567
+ headers.delete(key);
568
+ });
569
+ Object.keys(set).forEach((key) => {
570
+ if (setMap.has(key.toLowerCase())) {
571
+ headers.append(key, set[key]);
572
+ } else {
573
+ headers.set(key, set[key]);
574
+ setMap.add(key.toLowerCase());
575
+ }
576
+ });
577
+ });
571
578
  return new Response(
572
579
  [101, 204, 205, 304].includes(response.status) ? null : response.body,
573
580
  {
@@ -716,9 +723,9 @@ function isPreview(url) {
716
723
  }
717
724
  return false;
718
725
  }
719
- var ASSET_PRESERVATION_CACHE, CACHE_CONTROL_PRESERVATION, CACHE_CONTROL_BROWSER, REDIRECTS_VERSION2, HEADERS_VERSION2, HEADERS_VERSION_V1, ANALYTICS_VERSION2;
726
+ var ASSET_PRESERVATION_CACHE, CACHE_CONTROL_PRESERVATION, CACHE_CONTROL_BROWSER, REDIRECTS_VERSION2, HEADERS_VERSION2, HEADERS_VERSION_V1, ANALYTICS_VERSION2, ALLOWED_EARLY_HINT_LINK_ATTRIBUTES;
720
727
  var init_handler = __esm({
721
- "../pages-shared/src/asset-server/handler.ts"() {
728
+ "../pages-shared/asset-server/handler.ts"() {
722
729
  init_responses();
723
730
  init_rulesEngine();
724
731
  ASSET_PRESERVATION_CACHE = "assetPreservationCache";
@@ -728,6 +735,7 @@ var init_handler = __esm({
728
735
  HEADERS_VERSION2 = 2;
729
736
  HEADERS_VERSION_V1 = 1;
730
737
  ANALYTICS_VERSION2 = 1;
738
+ ALLOWED_EARLY_HINT_LINK_ATTRIBUTES = ["rel", "as", "href"];
731
739
  }
732
740
  });
733
741
 
@@ -738,11 +746,11 @@ import {
738
746
  DurableObjectStub
739
747
  } from "@miniflare/durable-objects";
740
748
  import {
741
- Log,
742
- LogLevel,
749
+ Log as MiniflareLog,
750
+ LogLevel as MiniflareLogLevel,
743
751
  Miniflare,
744
- Response as MiniflareResponse3,
745
- Request as MiniflareRequest3
752
+ Request as MiniflareRequest3,
753
+ Response as MiniflareResponse3
746
754
  } from "miniflare";
747
755
 
748
756
  // ../../node_modules/yargs/lib/platform-shims/esm.mjs
@@ -5564,7 +5572,7 @@ var FatalError = class extends Error {
5564
5572
  import { existsSync, lstatSync, readFileSync as readFileSync5 } from "node:fs";
5565
5573
  import { join } from "node:path";
5566
5574
 
5567
- // ../pages-shared/src/metadata-generator/constants.ts
5575
+ // ../pages-shared/metadata-generator/constants.ts
5568
5576
  var REDIRECTS_VERSION = 1;
5569
5577
  var HEADERS_VERSION = 2;
5570
5578
  var ANALYTICS_VERSION = 1;
@@ -5578,12 +5586,13 @@ var UNSET_OPERATOR = "! ";
5578
5586
  var SPLAT_REGEX = /\*/g;
5579
5587
  var PLACEHOLDER_REGEX = /:\w+/g;
5580
5588
 
5581
- // ../pages-shared/src/metadata-generator/createMetadataObject.ts
5589
+ // ../pages-shared/metadata-generator/createMetadataObject.ts
5582
5590
  function createMetadataObject({
5583
5591
  redirects,
5584
5592
  headers,
5585
5593
  webAnalyticsToken,
5586
5594
  deploymentId,
5595
+ failOpen,
5587
5596
  logger = (_message) => {
5588
5597
  }
5589
5598
  }) {
@@ -5591,7 +5600,8 @@ function createMetadataObject({
5591
5600
  ...constructRedirects({ redirects, logger }),
5592
5601
  ...constructHeaders({ headers, logger }),
5593
5602
  ...constructWebAnalytics({ webAnalyticsToken, logger }),
5594
- deploymentId
5603
+ deploymentId,
5604
+ failOpen
5595
5605
  };
5596
5606
  }
5597
5607
  function constructRedirects({
@@ -5691,7 +5701,7 @@ function constructWebAnalytics({
5691
5701
  };
5692
5702
  }
5693
5703
 
5694
- // ../pages-shared/src/metadata-generator/validateURL.ts
5704
+ // ../pages-shared/metadata-generator/validateURL.ts
5695
5705
  var extractPathname = (path = "/", includeSearch, includeHash) => {
5696
5706
  if (!path.startsWith("/"))
5697
5707
  path = `/${path}`;
@@ -5734,7 +5744,7 @@ var validateUrl = (token, onlyRelative = false, includeSearch = false, includeHa
5734
5744
  ];
5735
5745
  };
5736
5746
 
5737
- // ../pages-shared/src/metadata-generator/parseHeaders.ts
5747
+ // ../pages-shared/metadata-generator/parseHeaders.ts
5738
5748
  var LINE_IS_PROBABLY_A_PATH = new RegExp(/^([^\s]+:\/\/|^\/)/);
5739
5749
  function parseHeaders(input) {
5740
5750
  const lines = input.split("\n");
@@ -5869,7 +5879,7 @@ function isValidRule(rule) {
5869
5879
  return Object.keys(rule.headers).length > 0 || rule.unsetHeaders.length > 0;
5870
5880
  }
5871
5881
 
5872
- // ../pages-shared/src/metadata-generator/parseRedirects.ts
5882
+ // ../pages-shared/metadata-generator/parseRedirects.ts
5873
5883
  function parseRedirects(input) {
5874
5884
  const lines = input.split("\n");
5875
5885
  const rules = [];
@@ -6099,7 +6109,10 @@ async function generateAssetsFetch(directory, log) {
6099
6109
  );
6100
6110
  }
6101
6111
  const body = readFileSync5(filepath);
6102
- const contentType = (0, import_mime.getType)(filepath) || "application/octet-stream";
6112
+ let contentType = (0, import_mime.getType)(filepath) || "application/octet-stream";
6113
+ if (contentType.startsWith("text/") && !contentType.includes("charset")) {
6114
+ contentType = `${contentType}; charset=utf-8`;
6115
+ }
6103
6116
  return { body, contentType };
6104
6117
  }
6105
6118
  });
@@ -6115,18 +6128,6 @@ var invalidAssetsFetch = () => {
6115
6128
  );
6116
6129
  };
6117
6130
 
6118
- // src/miniflare-cli/enum-keys.ts
6119
- var enumObject = (e) => {
6120
- const copy = { ...e };
6121
- Object.values(e).forEach(
6122
- (value) => typeof value === "number" && delete copy[value]
6123
- );
6124
- return copy;
6125
- };
6126
- var enumKeys = (e) => {
6127
- return Object.keys(enumObject(e));
6128
- };
6129
-
6130
6131
  // src/miniflare-cli/request-context.ts
6131
6132
  var getRequestContextCheckOptions = async () => {
6132
6133
  let hasAsyncLocalStorage = true;
@@ -6147,7 +6148,7 @@ var getRequestContextCheckOptions = async () => {
6147
6148
  };
6148
6149
 
6149
6150
  // src/miniflare-cli/index.ts
6150
- var NoOpLog = class extends Log {
6151
+ var MiniflareNoOpLog = class extends MiniflareLog {
6151
6152
  log() {
6152
6153
  }
6153
6154
  error(message) {
@@ -6155,18 +6156,19 @@ var NoOpLog = class extends Log {
6155
6156
  }
6156
6157
  };
6157
6158
  async function main() {
6158
- const args = await yargs_default(hideBin(process.argv)).help(false).version(false).option("log", {
6159
- choices: enumKeys(LogLevel)
6160
- }).argv;
6161
- const logLevel = LogLevel[args.log ?? "INFO"];
6159
+ const args = await yargs_default(hideBin(process.argv)).help(false).version(false).argv;
6162
6160
  const requestContextCheckOptions = await getRequestContextCheckOptions();
6163
6161
  const config = {
6164
6162
  ...JSON.parse(args._[0] ?? "{}"),
6165
6163
  ...requestContextCheckOptions
6166
6164
  };
6167
- config.log = config.disableLogs ? new NoOpLog() : new Log(logLevel, config.logOptions);
6168
- if (logLevel > LogLevel.INFO) {
6169
- console.log("OPTIONS:\n", JSON.stringify(config, null, 2));
6165
+ let logLevelString = config.logLevel.toUpperCase();
6166
+ if (logLevelString === "LOG")
6167
+ logLevelString = "INFO";
6168
+ const logLevel = MiniflareLogLevel[logLevelString];
6169
+ config.log = logLevel === MiniflareLogLevel.NONE ? new MiniflareNoOpLog() : new MiniflareLog(logLevel, config.logOptions);
6170
+ if (logLevel === MiniflareLogLevel.DEBUG) {
6171
+ console.log("MINIFLARE OPTIONS:\n", JSON.stringify(config, null, 2));
6170
6172
  }
6171
6173
  config.bindings = {
6172
6174
  ...config.bindings,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrangler",
3
- "version": "0.0.0-afca1b6c",
3
+ "version": "0.0.0-afdb7e49",
4
4
  "description": "Command-line interface for all things Cloudflare Workers",
5
5
  "keywords": [
6
6
  "wrangler",
@@ -28,6 +28,11 @@
28
28
  "bugs": {
29
29
  "url": "https://github.com/cloudflare/wrangler2/issues"
30
30
  },
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/cloudflare/wrangler2.git",
34
+ "directory": "packages/wrangler"
35
+ },
31
36
  "license": "MIT OR Apache-2.0",
32
37
  "author": "wrangler@cloudflare.com",
33
38
  "main": "wrangler-dist/cli.js",
@@ -49,6 +54,7 @@
49
54
  "Cloudflare_CA.pem"
50
55
  ],
51
56
  "scripts": {
57
+ "assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
52
58
  "build": "npm run clean && npm run bundle && npm run emit-types",
53
59
  "bundle": "node -r esbuild-register scripts/bundle.ts",
54
60
  "check:type": "tsc",
@@ -57,7 +63,7 @@
57
63
  "emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
58
64
  "prepublishOnly": "SOURCEMAPS=false npm run build",
59
65
  "start": "npm run bundle && cross-env NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
60
- "test": "jest --silent=false --verbose=true",
66
+ "test": "npm run assert-git-version && jest --silent=false --verbose=true",
61
67
  "test-watch": "npm run test -- --runInBand --testTimeout=50000 --watch",
62
68
  "test:ci": "npm run test -- --verbose=true --coverage"
63
69
  },
@@ -87,17 +93,20 @@
87
93
  ]
88
94
  },
89
95
  "transformIgnorePatterns": [
90
- "node_modules/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes)"
96
+ "node_modules/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes|npx-import)"
91
97
  ]
92
98
  },
93
99
  "dependencies": {
94
100
  "@cloudflare/kv-asset-handler": "^0.2.0",
95
101
  "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
96
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",
97
106
  "blake3-wasm": "^2.1.5",
98
107
  "chokidar": "^3.5.3",
99
108
  "esbuild": "0.14.51",
100
- "miniflare": "^2.8.1",
109
+ "miniflare": "2.10.0",
101
110
  "nanoid": "^3.3.3",
102
111
  "path-to-regexp": "^6.2.0",
103
112
  "selfsigned": "^2.0.1",
@@ -105,12 +114,18 @@
105
114
  "xxhash-wasm": "^1.0.1"
106
115
  },
107
116
  "devDependencies": {
117
+ "@cloudflare/types": "^6.18.4",
118
+ "@databases/split-sql-query": "^1.0.3",
119
+ "@databases/sql": "^3.2.0",
108
120
  "@iarna/toml": "^3.0.0",
109
121
  "@microsoft/api-extractor": "^7.28.3",
122
+ "@miniflare/tre": "^3.0.0-next.6",
123
+ "@types/better-sqlite3": "^7.6.0",
110
124
  "@types/busboy": "^1.5.0",
111
125
  "@types/command-exists": "^1.2.0",
112
126
  "@types/express": "^4.17.13",
113
127
  "@types/glob-to-regexp": "0.4.1",
128
+ "@types/javascript-time-ago": "^2.0.3",
114
129
  "@types/mime": "^2.0.3",
115
130
  "@types/prompts": "^2.0.14",
116
131
  "@types/react": "^17.0.37",
@@ -121,17 +136,14 @@
121
136
  "@types/yargs": "^17.0.10",
122
137
  "@webcontainer/env": "^1.0.1",
123
138
  "body-parser": "^1.20.0",
124
- "busboy": "^1.6.0",
125
139
  "clipboardy": "^3.0.0",
126
140
  "cmd-shim": "^4.1.0",
127
141
  "command-exists": "^1.2.9",
128
142
  "concurrently": "^7.2.2",
129
- "create-cloudflare": "^1.0.0",
130
143
  "devtools-protocol": "^0.0.955664",
131
144
  "dotenv": "^16.0.0",
132
145
  "execa": "^6.1.0",
133
146
  "express": "^4.18.1",
134
- "faye-websocket": "^0.11.4",
135
147
  "finalhandler": "^1.2.0",
136
148
  "find-up": "^6.3.0",
137
149
  "get-port": "^6.1.2",
@@ -145,23 +157,28 @@
145
157
  "ink-testing-library": "^2.1.0",
146
158
  "ink-text-input": "^4.0.3",
147
159
  "is-ci": "^3.0.1",
160
+ "javascript-time-ago": "^2.5.4",
148
161
  "jest-fetch-mock": "^3.0.3",
149
162
  "jest-websocket-mock": "^2.3.0",
150
163
  "mime": "^3.0.0",
164
+ "minimatch": "^5.1.0",
151
165
  "msw": "^0.47.1",
166
+ "npx-import": "^1.1.3",
152
167
  "open": "^8.4.0",
153
168
  "p-queue": "^7.2.0",
154
169
  "pretty-bytes": "^6.0.0",
155
170
  "prompts": "^2.4.2",
156
171
  "react": "^17.0.2",
157
172
  "react-error-boundary": "^3.1.4",
173
+ "remove-accents-esm": "^0.0.1",
174
+ "semiver": "^1.1.0",
158
175
  "serve-static": "^1.15.0",
159
176
  "signal-exit": "^3.0.7",
160
177
  "supports-color": "^9.2.2",
161
178
  "timeago.js": "^4.0.2",
162
179
  "tmp-promise": "^3.0.3",
163
180
  "ts-dedent": "^2.2.0",
164
- "undici": "^5.9.1",
181
+ "undici": "^5.11.0",
165
182
  "update-check": "^1.5.4",
166
183
  "ws": "^8.5.0",
167
184
  "xdg-app-paths": "^7.3.0",
@@ -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
+ });
@@ -5,10 +5,10 @@ import { runInTempDir } from "./helpers/run-in-tmp";
5
5
 
6
6
  jest.unmock("undici");
7
7
 
8
- describe("unstable_dev", () => {
8
+ describe.skip("unstable_dev", () => {
9
9
  it("should return Hello World", async () => {
10
10
  const worker = await unstable_dev(
11
- "src/__tests__/helpers/hello-world-worker.js",
11
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
12
12
  {},
13
13
  { disableExperimentalWarning: true }
14
14
  );
@@ -19,12 +19,32 @@ describe("unstable_dev", () => {
19
19
  }
20
20
  await worker.stop();
21
21
  });
22
+
23
+ it("should return the port that the server started on (1)", async () => {
24
+ const worker = await unstable_dev(
25
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
26
+ {},
27
+ { disableExperimentalWarning: true }
28
+ );
29
+ expect(worker.port).toBeGreaterThan(0);
30
+ await worker.stop();
31
+ });
32
+
33
+ it("should return the port that the server started on (2)", async () => {
34
+ const worker = await unstable_dev(
35
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
36
+ { port: 9191 },
37
+ { disableExperimentalWarning: true }
38
+ );
39
+ expect(worker.port).toBe(9191);
40
+ await worker.stop();
41
+ });
22
42
  });
23
43
 
24
44
  describe("unstable dev fetch input protocol", () => {
25
45
  it("should use http localProtocol", async () => {
26
46
  const worker = await unstable_dev(
27
- "src/__tests__/helpers/hello-world-worker.js",
47
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
28
48
  { localProtocol: "http" },
29
49
  { disableExperimentalWarning: true }
30
50
  );
@@ -38,7 +58,7 @@ describe("unstable dev fetch input protocol", () => {
38
58
 
39
59
  it("should use undefined localProtocol", async () => {
40
60
  const worker = await unstable_dev(
41
- "src/__tests__/helpers/hello-world-worker.js",
61
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
42
62
  { localProtocol: undefined },
43
63
  { disableExperimentalWarning: true }
44
64
  );
@@ -0,0 +1,56 @@
1
+ import { unstable_dev } from "../api";
2
+ import { fetch } from "undici";
3
+
4
+ // jest.unmock("undici");
5
+
6
+ /**
7
+ * a huge caveat to how testing multi-worker scripts works:
8
+ * you can't shutdown the first worker you spun up, or it'll kill the devRegistry
9
+ */
10
+ describe.skip("multi-worker testing", () => {
11
+ let childWorker;
12
+ let parentWorker;
13
+
14
+ beforeAll(async () => {
15
+ childWorker = await unstable_dev(
16
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
17
+ { config: "src/__tests__/helpers/worker-scripts/child-wrangler.toml" },
18
+ { disableExperimentalWarning: true }
19
+ );
20
+ parentWorker = await unstable_dev(
21
+ "src/__tests__/helpers/worker-scripts/parent-worker.js",
22
+ { config: "src/__tests__/helpers/worker-scripts/parent-wrangler.toml" },
23
+ { disableExperimentalWarning: true }
24
+ );
25
+ });
26
+
27
+ afterAll(async () => {
28
+ await childWorker.stop();
29
+ await parentWorker.stop();
30
+ });
31
+
32
+ it("parentWorker and childWorker should be added devRegistry", async () => {
33
+ const resp = await fetch("http://localhost:6284/workers");
34
+ if (resp) {
35
+ const parsedResp = await resp.json();
36
+ expect(parsedResp.parent).toBeTruthy();
37
+ expect(parsedResp.child).toBeTruthy();
38
+ }
39
+ });
40
+
41
+ it("childWorker should return Hello World itself", async () => {
42
+ const resp = await childWorker.fetch();
43
+ if (resp) {
44
+ const text = await resp.text();
45
+ expect(text).toMatchInlineSnapshot(`"Hello World!"`);
46
+ }
47
+ });
48
+
49
+ it("parentWorker should return Hello World by invoking the child worker", async () => {
50
+ const resp = await parentWorker.fetch();
51
+ if (resp) {
52
+ const parsedResp = await resp.text();
53
+ expect(parsedResp).toEqual("Parent worker sees: Hello World!");
54
+ }
55
+ });
56
+ });