wrangler 0.0.0-c2940160 → 0.0.0-c2b2dfb8

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 (105) hide show
  1. package/bin/wrangler.js +29 -9
  2. package/miniflare-dist/index.mjs +103 -55
  3. package/package.json +6 -4
  4. package/src/__tests__/api-dev.test.ts +1 -1
  5. package/src/__tests__/api-devregistry.test.js +2 -2
  6. package/src/__tests__/configuration.test.ts +211 -0
  7. package/src/__tests__/d1.test.ts +46 -3
  8. package/src/__tests__/delete.test.ts +81 -48
  9. package/src/__tests__/deployments.test.ts +20 -6
  10. package/src/__tests__/dev.test.tsx +69 -19
  11. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  12. package/src/__tests__/helpers/mock-cfetch.ts +1 -57
  13. package/src/__tests__/helpers/mock-oauth-flow.ts +64 -49
  14. package/src/__tests__/helpers/mock-process.ts +8 -13
  15. package/src/__tests__/index.test.ts +46 -42
  16. package/src/__tests__/init.test.ts +295 -161
  17. package/src/__tests__/jest.setup.ts +8 -7
  18. package/src/__tests__/kv.test.ts +250 -139
  19. package/src/__tests__/logout.test.ts +1 -1
  20. package/src/__tests__/metrics.test.ts +88 -43
  21. package/src/__tests__/pages-deployment-tail.test.ts +165 -101
  22. package/src/__tests__/pages.test.ts +1 -0
  23. package/src/__tests__/publish.test.ts +137 -7
  24. package/src/__tests__/pubsub.test.ts +208 -88
  25. package/src/__tests__/queues.test.ts +155 -67
  26. package/src/__tests__/r2.test.ts +2 -2
  27. package/src/__tests__/secret.test.ts +151 -101
  28. package/src/__tests__/tail.test.ts +207 -108
  29. package/src/__tests__/tsconfig-sanity.ts +12 -0
  30. package/src/__tests__/tsconfig.json +8 -0
  31. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  32. package/src/__tests__/type-generation.test.ts +7 -0
  33. package/src/api/dev.ts +1 -1
  34. package/src/cfetch/index.ts +0 -2
  35. package/src/cfetch/internal.ts +16 -18
  36. package/src/config/environment.ts +16 -0
  37. package/src/config/index.ts +32 -8
  38. package/src/config/validation.ts +49 -0
  39. package/src/create-worker-upload-form.ts +9 -0
  40. package/src/d1/backups.tsx +7 -2
  41. package/src/d1/delete.tsx +4 -4
  42. package/src/d1/index.ts +2 -0
  43. package/src/d1/migrations/apply.tsx +22 -20
  44. package/src/d1/migrations/list.tsx +2 -12
  45. package/src/d1/migrations/options.ts +18 -0
  46. package/src/deployments.ts +6 -0
  47. package/src/deprecated/index.ts +2 -295
  48. package/src/dev/dev.tsx +20 -4
  49. package/src/dev/local.tsx +63 -21
  50. package/src/dev/start-server.ts +17 -17
  51. package/src/dev/use-esbuild.ts +1 -1
  52. package/src/dev.tsx +55 -12
  53. package/src/dispatch-namespace.ts +1 -1
  54. package/src/docs/index.ts +97 -0
  55. package/src/environment-variables/factory.ts +88 -0
  56. package/src/environment-variables/misc-variables.ts +30 -0
  57. package/src/generate/index.ts +300 -0
  58. package/src/git-client.ts +15 -4
  59. package/src/index.tsx +17 -10
  60. package/src/init.ts +54 -34
  61. package/src/jest.d.ts +4 -0
  62. package/src/logger.ts +2 -2
  63. package/src/metrics/metrics-config.ts +1 -1
  64. package/src/metrics/send-event.ts +2 -1
  65. package/src/miniflare-cli/assets.ts +63 -28
  66. package/src/miniflare-cli/index.ts +2 -5
  67. package/src/miniflare-cli/tsconfig.json +9 -0
  68. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  69. package/src/miniflare-cli/types.ts +11 -0
  70. package/src/pages/dev.tsx +8 -1
  71. package/src/pages/functions/tsconfig.json +8 -0
  72. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  73. package/src/pages/publish.tsx +11 -1
  74. package/src/pages/upload.tsx +27 -6
  75. package/src/publish/publish.ts +1 -0
  76. package/src/pubsub/pubsub-commands.tsx +1 -1
  77. package/src/secret/index.ts +1 -0
  78. package/src/tsconfig-sanity.ts +16 -0
  79. package/src/type-generation.ts +10 -2
  80. package/src/user/access.ts +0 -1
  81. package/src/user/auth-variables.ts +113 -0
  82. package/src/user/choose-account.tsx +1 -1
  83. package/src/user/index.ts +0 -1
  84. package/src/user/user.tsx +78 -38
  85. package/src/worker.ts +6 -0
  86. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  87. package/templates/__tests__/tsconfig.json +8 -0
  88. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  89. package/templates/facade.d.ts +14 -0
  90. package/templates/first-party-worker-module-facade.ts +4 -3
  91. package/templates/format-dev-errors.ts +7 -6
  92. package/templates/middleware/loader-modules.ts +0 -2
  93. package/templates/middleware/loader-sw.ts +6 -0
  94. package/templates/pages-dev-pipeline.ts +4 -1
  95. package/templates/pages-shim.ts +4 -1
  96. package/templates/pages-template-plugin.ts +1 -1
  97. package/templates/serve-static-assets.ts +16 -14
  98. package/templates/tsconfig-sanity.ts +11 -0
  99. package/templates/tsconfig.init.json +106 -0
  100. package/templates/tsconfig.json +5 -103
  101. package/templates/tsconfig.tsbuildinfo +1 -0
  102. package/wrangler-dist/cli.d.ts +15 -0
  103. package/wrangler-dist/cli.js +2729 -1094
  104. package/src/environment-variables.ts +0 -50
  105. package/src/user/env-vars.ts +0 -46
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
@@ -5632,7 +5671,11 @@ function constructRedirects({
5632
5671
  for (const rule of redirects.rules) {
5633
5672
  if (!rule.from.match(SPLAT_REGEX) && !rule.from.match(PLACEHOLDER_REGEX)) {
5634
5673
  if (canCreateStaticRule) {
5635
- 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
+ };
5636
5679
  continue;
5637
5680
  } else {
5638
5681
  logger(
@@ -5974,11 +6017,6 @@ function parseRedirects(input) {
5974
6017
 
5975
6018
  // src/miniflare-cli/assets.ts
5976
6019
  var import_mime = __toESM(require_mime());
5977
- import { fetch as miniflareFetch2 } from "@miniflare/core";
5978
- import {
5979
- Response as MiniflareResponse2,
5980
- Request as MiniflareRequest2
5981
- } from "@miniflare/core";
5982
6020
  import { watch } from "chokidar";
5983
6021
 
5984
6022
  // src/pages/hash.tsx
@@ -5994,28 +6032,34 @@ var hashFile = (filepath) => {
5994
6032
 
5995
6033
  // src/miniflare-cli/assets.ts
5996
6034
  async function generateASSETSBinding(options) {
5997
- 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;
5998
6040
  return async function(miniflareRequest) {
5999
6041
  if (options.proxyPort) {
6000
6042
  try {
6001
6043
  const url = new URL(miniflareRequest.url);
6002
6044
  url.host = `localhost:${options.proxyPort}`;
6003
- 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);
6004
6051
  } catch (thrown) {
6005
6052
  options.log.error(new Error(`Could not proxy request: ${thrown}`));
6006
- return new MiniflareResponse2(
6007
- `[wrangler] Could not proxy request: ${thrown}`,
6008
- {
6009
- status: 502
6010
- }
6011
- );
6053
+ return new Response2(`[wrangler] Could not proxy request: ${thrown}`, {
6054
+ status: 502
6055
+ });
6012
6056
  }
6013
6057
  } else {
6014
6058
  try {
6015
6059
  return await assetsFetch(miniflareRequest);
6016
6060
  } catch (thrown) {
6017
6061
  options.log.error(new Error(`Could not serve static asset: ${thrown}`));
6018
- return new MiniflareResponse2(
6062
+ return new Response2(
6019
6063
  `[wrangler] Could not serve static asset: ${thrown}`,
6020
6064
  { status: 502 }
6021
6065
  );
@@ -6023,8 +6067,11 @@ async function generateASSETSBinding(options) {
6023
6067
  }
6024
6068
  };
6025
6069
  }
6026
- async function generateAssetsFetch(directory, log) {
6027
- 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;
6028
6075
  const { generateHandler: generateHandler2, parseQualityWeightedList: parseQualityWeightedList2 } = await Promise.resolve().then(() => (init_handler(), handler_exports));
6029
6076
  const headersFile = join(directory, "_headers");
6030
6077
  const redirectsFile = join(directory, "_redirects");
@@ -6118,7 +6165,7 @@ async function generateAssetsFetch(directory, log) {
6118
6165
  });
6119
6166
  };
6120
6167
  return async (input, init) => {
6121
- const request = new MiniflareRequest2(input, init);
6168
+ const request = new Request(input, init);
6122
6169
  return await generateResponse(request);
6123
6170
  };
6124
6171
  }
@@ -6186,12 +6233,12 @@ async function main() {
6186
6233
  namespace.get = (id) => {
6187
6234
  const stub = new DurableObjectStub(factory, id);
6188
6235
  stub.fetch = (...reqArgs) => {
6189
- const requestFromArgs = new MiniflareRequest3(...reqArgs);
6236
+ const requestFromArgs = new MiniflareRequest(...reqArgs);
6190
6237
  const url = new URL(requestFromArgs.url);
6191
6238
  url.host = host;
6192
6239
  if (port !== void 0)
6193
6240
  url.port = port.toString();
6194
- const request = new MiniflareRequest3(
6241
+ const request = new MiniflareRequest(
6195
6242
  url.toString(),
6196
6243
  requestFromArgs
6197
6244
  );
@@ -6224,7 +6271,8 @@ async function main() {
6224
6271
  const options = {
6225
6272
  log: config.log,
6226
6273
  proxyPort: opts.proxyPort,
6227
- directory: opts.directory
6274
+ directory: opts.directory,
6275
+ tre: false
6228
6276
  };
6229
6277
  config.serviceBindings = {
6230
6278
  ...config.serviceBindings,
@@ -6250,7 +6298,7 @@ async function main() {
6250
6298
  }`,
6251
6299
  serviceBindings: {
6252
6300
  DO: async (request) => {
6253
- request = new MiniflareRequest3(request);
6301
+ request = new MiniflareRequest(request);
6254
6302
  const name = request.headers.get("x-miniflare-durable-object-name");
6255
6303
  const idString = request.headers.get(
6256
6304
  "x-miniflare-durable-object-id"
@@ -6258,7 +6306,7 @@ async function main() {
6258
6306
  request.headers.delete("x-miniflare-durable-object-name");
6259
6307
  request.headers.delete("x-miniflare-durable-object-id");
6260
6308
  if (!name || !idString) {
6261
- return new MiniflareResponse3(
6309
+ return new MiniflareResponse(
6262
6310
  "[durable-object-proxy-err] Missing `x-miniflare-durable-object-name` or `x-miniflare-durable-object-id` headers.",
6263
6311
  { status: 400 }
6264
6312
  );
@@ -6266,14 +6314,14 @@ async function main() {
6266
6314
  const namespace = await mf?.getDurableObjectNamespace(name);
6267
6315
  const id = namespace?.idFromString(idString);
6268
6316
  if (!id) {
6269
- return new MiniflareResponse3(
6317
+ return new MiniflareResponse(
6270
6318
  "[durable-object-proxy-err] Could not generate an ID. Possibly due to a mismatched DO name and ID?",
6271
6319
  { status: 500 }
6272
6320
  );
6273
6321
  }
6274
6322
  const stub = namespace?.get(id);
6275
6323
  if (!stub) {
6276
- return new MiniflareResponse3(
6324
+ return new MiniflareResponse(
6277
6325
  "[durable-object-proxy-err] Could not generate a stub. Possibly due to a mismatched DO name and ID?",
6278
6326
  { status: 500 }
6279
6327
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrangler",
3
- "version": "0.0.0-c2940160",
3
+ "version": "0.0.0-c2b2dfb8",
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",
@@ -115,11 +115,12 @@
115
115
  },
116
116
  "devDependencies": {
117
117
  "@cloudflare/types": "^6.18.4",
118
+ "@cloudflare/workers-types": "^4.20221111.1",
118
119
  "@databases/split-sql-query": "^1.0.3",
119
120
  "@databases/sql": "^3.2.0",
120
121
  "@iarna/toml": "^3.0.0",
121
122
  "@microsoft/api-extractor": "^7.28.3",
122
- "@miniflare/tre": "^3.0.0-next.7",
123
+ "@miniflare/tre": "^3.0.0-next.8",
123
124
  "@types/better-sqlite3": "^7.6.0",
124
125
  "@types/busboy": "^1.5.0",
125
126
  "@types/command-exists": "^1.2.0",
@@ -136,6 +137,7 @@
136
137
  "@types/yargs": "^17.0.10",
137
138
  "@webcontainer/env": "^1.0.1",
138
139
  "body-parser": "^1.20.0",
140
+ "chalk": "^2.4.2",
139
141
  "clipboardy": "^3.0.0",
140
142
  "cmd-shim": "^4.1.0",
141
143
  "command-exists": "^1.2.9",
@@ -162,7 +164,7 @@
162
164
  "jest-websocket-mock": "^2.3.0",
163
165
  "mime": "^3.0.0",
164
166
  "minimatch": "^5.1.0",
165
- "msw": "^0.47.1",
167
+ "msw": "^0.49.1",
166
168
  "npx-import": "^1.1.3",
167
169
  "open": "^8.4.0",
168
170
  "p-queue": "^7.2.0",
@@ -5,7 +5,7 @@ import { runInTempDir } from "./helpers/run-in-tmp";
5
5
 
6
6
  jest.unmock("undici");
7
7
 
8
- describe.skip("unstable_dev", () => {
8
+ 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",
@@ -1,13 +1,13 @@
1
1
  import { unstable_dev } from "../api";
2
2
  import { fetch } from "undici";
3
3
 
4
- // jest.unmock("undici");
4
+ jest.unmock("undici");
5
5
 
6
6
  /**
7
7
  * a huge caveat to how testing multi-worker scripts works:
8
8
  * you can't shutdown the first worker you spun up, or it'll kill the devRegistry
9
9
  */
10
- describe.skip("multi-worker testing", () => {
10
+ describe("multi-worker testing", () => {
11
11
  let childWorker;
12
12
  let parentWorker;
13
13