wrangler 0.0.0-fa8e5232 → 0.0.0-fac199ba

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 (299) hide show
  1. package/README.md +10 -12
  2. package/bin/wrangler.js +10 -76
  3. package/package.json +20 -19
  4. package/templates/__tests__/tsconfig.json +1 -1
  5. package/templates/checked-fetch.js +10 -3
  6. package/templates/facade.d.ts +4 -1
  7. package/templates/gitignore +1 -0
  8. package/templates/middleware/common.ts +9 -4
  9. package/templates/middleware/loader-modules.ts +64 -11
  10. package/templates/middleware/loader-sw.ts +2 -7
  11. package/templates/middleware/middleware-d1-beta.d.ts +3 -0
  12. package/templates/middleware/middleware-miniflare3-json-error.ts +17 -5
  13. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  14. package/templates/middleware/middleware-multiworker-dev.ts +59 -0
  15. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  16. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  17. package/templates/new-worker-scheduled.ts +1 -1
  18. package/templates/new-worker.ts +1 -1
  19. package/templates/pages-dev-util.ts +4 -1
  20. package/templates/pages-shim.ts +0 -3
  21. package/templates/pages-template-plugin.ts +19 -5
  22. package/templates/pages-template-worker.ts +11 -2
  23. package/templates/tsconfig.init.json +1 -2
  24. package/templates/tsconfig.json +1 -1
  25. package/wrangler-dist/cli.d.ts +758 -134
  26. package/wrangler-dist/cli.js +91931 -87171
  27. package/import_meta_url.js +0 -3
  28. package/miniflare-config-stubs/.env.empty +0 -0
  29. package/miniflare-config-stubs/package.empty.json +0 -1
  30. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  31. package/miniflare-dist/index.mjs +0 -6368
  32. package/src/__tests__/access.test.ts +0 -25
  33. package/src/__tests__/api-dev.test.ts +0 -238
  34. package/src/__tests__/api-devregistry.test.js +0 -64
  35. package/src/__tests__/api.test.ts +0 -80
  36. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  37. package/src/__tests__/config-cache.test.ts +0 -42
  38. package/src/__tests__/configuration.test.ts +0 -4233
  39. package/src/__tests__/d1/d1.test.ts +0 -82
  40. package/src/__tests__/d1/execute.test.ts +0 -64
  41. package/src/__tests__/d1/migrate.test.ts +0 -155
  42. package/src/__tests__/d1/splitter.test.ts +0 -255
  43. package/src/__tests__/delete.test.ts +0 -266
  44. package/src/__tests__/deployments.test.ts +0 -129
  45. package/src/__tests__/dev.test.tsx +0 -1587
  46. package/src/__tests__/generate.test.ts +0 -238
  47. package/src/__tests__/get-host-from-url.test.ts +0 -16
  48. package/src/__tests__/guess-worker-format.test.ts +0 -85
  49. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  50. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  51. package/src/__tests__/helpers/end-event-loop.ts +0 -6
  52. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  53. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  54. package/src/__tests__/helpers/mock-bin.ts +0 -36
  55. package/src/__tests__/helpers/mock-console.ts +0 -106
  56. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  57. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
  58. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  59. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  60. package/src/__tests__/helpers/mock-istty.ts +0 -74
  61. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  62. package/src/__tests__/helpers/mock-kv.ts +0 -46
  63. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  64. package/src/__tests__/helpers/mock-process.ts +0 -34
  65. package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
  66. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  67. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  68. package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
  69. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  70. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -93
  71. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  72. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  73. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  74. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  75. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  76. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  77. package/src/__tests__/helpers/msw/index.ts +0 -50
  78. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  79. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  80. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  81. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
  82. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  83. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  84. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  85. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  86. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  87. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  88. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  89. package/src/__tests__/https-options.test.ts +0 -163
  90. package/src/__tests__/index.test.ts +0 -274
  91. package/src/__tests__/init.test.ts +0 -3164
  92. package/src/__tests__/jest.setup.ts +0 -175
  93. package/src/__tests__/kv.test.ts +0 -1799
  94. package/src/__tests__/logger.test.ts +0 -141
  95. package/src/__tests__/logout.test.ts +0 -47
  96. package/src/__tests__/metrics.test.ts +0 -493
  97. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  98. package/src/__tests__/middleware.test.ts +0 -815
  99. package/src/__tests__/mtls-certificates.test.ts +0 -585
  100. package/src/__tests__/package-manager.test.ts +0 -353
  101. package/src/__tests__/pages/deployment-list.test.ts +0 -78
  102. package/src/__tests__/pages/functions-build.test.ts +0 -402
  103. package/src/__tests__/pages/pages.test.ts +0 -81
  104. package/src/__tests__/pages/project-create.test.ts +0 -63
  105. package/src/__tests__/pages/project-list.test.ts +0 -108
  106. package/src/__tests__/pages/project-upload.test.ts +0 -481
  107. package/src/__tests__/pages/publish.test.ts +0 -2745
  108. package/src/__tests__/pages-deployment-tail.test.ts +0 -955
  109. package/src/__tests__/parse.test.ts +0 -436
  110. package/src/__tests__/paths.test.ts +0 -39
  111. package/src/__tests__/publish.test.ts +0 -8167
  112. package/src/__tests__/pubsub.test.ts +0 -493
  113. package/src/__tests__/queues.test.ts +0 -529
  114. package/src/__tests__/r2.test.ts +0 -374
  115. package/src/__tests__/route.test.ts +0 -45
  116. package/src/__tests__/secret.test.ts +0 -693
  117. package/src/__tests__/tail.test.ts +0 -958
  118. package/src/__tests__/test-old-node-version.js +0 -31
  119. package/src/__tests__/tsconfig-sanity.ts +0 -12
  120. package/src/__tests__/tsconfig.json +0 -8
  121. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  122. package/src/__tests__/type-generation.test.ts +0 -233
  123. package/src/__tests__/user.test.ts +0 -118
  124. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  125. package/src/__tests__/validate-dev-props.test.ts +0 -56
  126. package/src/__tests__/version.test.ts +0 -35
  127. package/src/__tests__/whoami.test.tsx +0 -172
  128. package/src/__tests__/worker-namespace.test.ts +0 -339
  129. package/src/abort.d.ts +0 -3
  130. package/src/api/dev.ts +0 -328
  131. package/src/api/index.ts +0 -11
  132. package/src/api/mtls-certificate.ts +0 -148
  133. package/src/api/pages/create-worker-bundle-contents.ts +0 -75
  134. package/src/api/pages/index.ts +0 -5
  135. package/src/api/pages/publish.tsx +0 -368
  136. package/src/bundle-reporter.ts +0 -68
  137. package/src/bundle.ts +0 -877
  138. package/src/cfetch/index.ts +0 -158
  139. package/src/cfetch/internal.ts +0 -258
  140. package/src/cli.ts +0 -28
  141. package/src/config/README.md +0 -107
  142. package/src/config/config.ts +0 -282
  143. package/src/config/diagnostics.ts +0 -80
  144. package/src/config/environment.ts +0 -586
  145. package/src/config/index.ts +0 -375
  146. package/src/config/validation-helpers.ts +0 -597
  147. package/src/config/validation.ts +0 -2198
  148. package/src/config-cache.ts +0 -85
  149. package/src/create-worker-preview.ts +0 -293
  150. package/src/create-worker-upload-form.ts +0 -334
  151. package/src/d1/backups.tsx +0 -215
  152. package/src/d1/constants.ts +0 -2
  153. package/src/d1/create.tsx +0 -64
  154. package/src/d1/delete.ts +0 -53
  155. package/src/d1/execute.tsx +0 -354
  156. package/src/d1/formatTimeAgo.ts +0 -14
  157. package/src/d1/index.ts +0 -100
  158. package/src/d1/list.tsx +0 -60
  159. package/src/d1/migrations/apply.tsx +0 -206
  160. package/src/d1/migrations/create.tsx +0 -76
  161. package/src/d1/migrations/helpers.ts +0 -172
  162. package/src/d1/migrations/index.ts +0 -3
  163. package/src/d1/migrations/list.tsx +0 -92
  164. package/src/d1/migrations/options.ts +0 -23
  165. package/src/d1/options.ts +0 -22
  166. package/src/d1/splitter.ts +0 -161
  167. package/src/d1/types.ts +0 -25
  168. package/src/d1/utils.ts +0 -49
  169. package/src/delete.ts +0 -100
  170. package/src/deployments.ts +0 -116
  171. package/src/deprecated/index.ts +0 -144
  172. package/src/dev/dev-vars.ts +0 -39
  173. package/src/dev/dev.tsx +0 -600
  174. package/src/dev/get-local-persistence-path.ts +0 -31
  175. package/src/dev/local.tsx +0 -923
  176. package/src/dev/remote.tsx +0 -632
  177. package/src/dev/start-server.ts +0 -538
  178. package/src/dev/use-esbuild.ts +0 -205
  179. package/src/dev/validate-dev-props.ts +0 -31
  180. package/src/dev-registry.ts +0 -201
  181. package/src/dev.tsx +0 -914
  182. package/src/dialogs.ts +0 -136
  183. package/src/dispatch-namespace.ts +0 -211
  184. package/src/docs/index.ts +0 -97
  185. package/src/durable.ts +0 -102
  186. package/src/entry.ts +0 -328
  187. package/src/environment-variables/factory.ts +0 -88
  188. package/src/environment-variables/misc-variables.ts +0 -30
  189. package/src/errors.ts +0 -11
  190. package/src/generate/index.ts +0 -298
  191. package/src/git-client.ts +0 -135
  192. package/src/global-wrangler-config-path.ts +0 -26
  193. package/src/https-options.ts +0 -127
  194. package/src/index.ts +0 -705
  195. package/src/init.ts +0 -1022
  196. package/src/inspect.ts +0 -779
  197. package/src/intl-polyfill.d.ts +0 -139
  198. package/src/is-ci.ts +0 -14
  199. package/src/is-interactive.ts +0 -16
  200. package/src/jest.d.ts +0 -4
  201. package/src/kv/helpers.ts +0 -430
  202. package/src/kv/index.ts +0 -594
  203. package/src/logger.ts +0 -104
  204. package/src/metrics/index.ts +0 -5
  205. package/src/metrics/metrics-config.ts +0 -239
  206. package/src/metrics/metrics-dispatcher.ts +0 -96
  207. package/src/metrics/metrics-usage-headers.ts +0 -24
  208. package/src/metrics/send-event.ts +0 -98
  209. package/src/miniflare-cli/README.md +0 -30
  210. package/src/miniflare-cli/assets.ts +0 -250
  211. package/src/miniflare-cli/index.ts +0 -210
  212. package/src/miniflare-cli/request-context.ts +0 -40
  213. package/src/miniflare-cli/tsconfig.json +0 -9
  214. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  215. package/src/miniflare-cli/types.ts +0 -11
  216. package/src/module-collection.ts +0 -267
  217. package/src/mtls-certificate/cli.ts +0 -155
  218. package/src/open-in-browser.ts +0 -17
  219. package/src/package-manager.ts +0 -219
  220. package/src/pages/build.ts +0 -232
  221. package/src/pages/buildFunctions.ts +0 -130
  222. package/src/pages/constants.ts +0 -18
  223. package/src/pages/deployment-tails.ts +0 -281
  224. package/src/pages/deployments.tsx +0 -86
  225. package/src/pages/dev.ts +0 -716
  226. package/src/pages/errors.ts +0 -66
  227. package/src/pages/functions/buildPlugin.ts +0 -90
  228. package/src/pages/functions/buildWorker.ts +0 -288
  229. package/src/pages/functions/filepath-routing.test.ts +0 -234
  230. package/src/pages/functions/filepath-routing.ts +0 -189
  231. package/src/pages/functions/identifiers.ts +0 -78
  232. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  233. package/src/pages/functions/routes-consolidation.ts +0 -73
  234. package/src/pages/functions/routes-transformation.test.ts +0 -282
  235. package/src/pages/functions/routes-transformation.ts +0 -115
  236. package/src/pages/functions/routes-validation.test.ts +0 -403
  237. package/src/pages/functions/routes-validation.ts +0 -202
  238. package/src/pages/functions/routes.ts +0 -151
  239. package/src/pages/functions/tsconfig.json +0 -8
  240. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  241. package/src/pages/functions.ts +0 -86
  242. package/src/pages/hash.ts +0 -13
  243. package/src/pages/index.ts +0 -102
  244. package/src/pages/projects.tsx +0 -162
  245. package/src/pages/prompt-select-project.tsx +0 -31
  246. package/src/pages/publish.tsx +0 -276
  247. package/src/pages/types.ts +0 -46
  248. package/src/pages/upload.tsx +0 -449
  249. package/src/pages/utils.ts +0 -23
  250. package/src/parse.ts +0 -308
  251. package/src/paths.ts +0 -71
  252. package/src/proxy.ts +0 -694
  253. package/src/publish/index.ts +0 -274
  254. package/src/publish/publish.ts +0 -1065
  255. package/src/pubsub/index.ts +0 -286
  256. package/src/pubsub/pubsub-commands.ts +0 -623
  257. package/src/queues/cli/commands/consumer/add.ts +0 -65
  258. package/src/queues/cli/commands/consumer/index.ts +0 -19
  259. package/src/queues/cli/commands/consumer/remove.ts +0 -31
  260. package/src/queues/cli/commands/create.ts +0 -25
  261. package/src/queues/cli/commands/delete.ts +0 -26
  262. package/src/queues/cli/commands/index.ts +0 -35
  263. package/src/queues/cli/commands/list.ts +0 -25
  264. package/src/queues/client.ts +0 -135
  265. package/src/queues/utils.ts +0 -18
  266. package/src/r2/constants.ts +0 -4
  267. package/src/r2/helpers.ts +0 -131
  268. package/src/r2/index.ts +0 -289
  269. package/src/routes.ts +0 -140
  270. package/src/secret/index.ts +0 -375
  271. package/src/selfsigned.d.ts +0 -29
  272. package/src/sites.ts +0 -372
  273. package/src/tail/createTail.ts +0 -406
  274. package/src/tail/filters.ts +0 -277
  275. package/src/tail/index.ts +0 -211
  276. package/src/tail/printing.ts +0 -122
  277. package/src/tsconfig-sanity.ts +0 -16
  278. package/src/type-generation.ts +0 -181
  279. package/src/update-check.ts +0 -19
  280. package/src/user/access.ts +0 -68
  281. package/src/user/auth-variables.ts +0 -113
  282. package/src/user/choose-account.tsx +0 -39
  283. package/src/user/generate-auth-url.ts +0 -33
  284. package/src/user/generate-random-state.ts +0 -16
  285. package/src/user/index.ts +0 -2
  286. package/src/user/user.ts +0 -1233
  287. package/src/utils/collectKeyValues.ts +0 -14
  288. package/src/whoami.ts +0 -135
  289. package/src/worker.ts +0 -257
  290. package/src/yargs-types.ts +0 -37
  291. package/src/zones.ts +0 -191
  292. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  293. package/templates/d1-beta-facade.js +0 -241
  294. package/templates/first-party-worker-module-facade.ts +0 -19
  295. package/templates/format-dev-errors.ts +0 -34
  296. package/templates/serve-static-assets.ts +0 -66
  297. package/templates/service-bindings-module-facade.js +0 -55
  298. package/templates/service-bindings-sw-facade.js +0 -42
  299. package/templates/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -6,8 +6,6 @@
6
6
  <a href="https://discord.gg/CloudflareDev"><img alt="Discord" src="https://img.shields.io/discord/595317990191398933?color=%23F48120&style=flat-square"></a>
7
7
  </section>
8
8
 
9
- > This package is for wrangler v2.x, released first in May 2022. If you're looking for v1.x of the `@cloudflare/wrangler` package, visit https://www.npmjs.com/package/@cloudflare/wrangler / https://github.com/cloudflare/wrangler-legacy.
10
-
11
9
  `wrangler` is a command line tool for building [Cloudflare Workers](https://workers.cloudflare.com/).
12
10
 
13
11
  ## Quick Start
@@ -17,8 +15,8 @@
17
15
  echo "export default { fetch() { return new Response('hello world') } }" > index.js
18
16
  # try it out
19
17
  npx wrangler dev index.js
20
- # and then publish it
21
- npx wrangler publish index.js --name my-worker
18
+ # and then deploy it
19
+ npx wrangler deploy index.js --name my-worker
22
20
  # visit https://my-worker.<your workers subdomain>.workers.dev
23
21
  ```
24
22
 
@@ -26,10 +24,10 @@ npx wrangler publish index.js --name my-worker
26
24
 
27
25
  ```bash
28
26
  # Generate a new project
29
- npx wrangler init my-worker
27
+ npx wrangler init my-worker --no-delegate-c3
30
28
  # try it out
31
29
  cd my-worker && npm run start
32
- # and then publish it
30
+ # and then deploy it
33
31
  npm run deploy
34
32
  ```
35
33
 
@@ -43,15 +41,15 @@ $ npm install wrangler --save-dev
43
41
 
44
42
  Wrangler is configured via a `wrangler.toml` file in the project root. When utilizing the `wrangler init` command, a `wrangler.toml` file will be created for you.
45
43
 
46
- example:
44
+ Example:
47
45
 
48
46
  ```toml
49
- main = "./src/index.ts" # init w/ TypeScript
50
47
  name = "my-worker"
51
- compatibility_date = "YYY-MM-DD"
48
+ main = "./src/index.ts" # init w/ TypeScript
49
+ compatibility_date = "YYYY-MM-DD"
52
50
  ```
53
51
 
54
- for more detailed information about configuration, see the [documentation](https://developers.cloudflare.com/workers/cli-wrangler/configuration)
52
+ For more detailed information about configuration, refer to the [documentation](https://developers.cloudflare.com/workers/wrangler/configuration/).
55
53
 
56
54
  ## Commands
57
55
 
@@ -63,11 +61,11 @@ Creates a Worker project. For details on configuration keys and values, refer to
63
61
 
64
62
  Start a local development server, with live reloading and devtools.
65
63
 
66
- ### `wrangler publish`
64
+ ### `wrangler deploy`
67
65
 
68
66
  Publish the given script to the worldwide Cloudflare network.
69
67
 
70
- For more commands and options, refer to the [documentation](https://developers.cloudflare.com/workers/cli-wrangler/commands).
68
+ For more commands and options, refer to the [documentation](https://developers.cloudflare.com/workers/wrangler/commands/).
71
69
 
72
70
  ## Pages
73
71
 
package/bin/wrangler.js CHANGED
@@ -20,7 +20,7 @@ function runWrangler() {
20
20
  // Note Volta and nvm are also recommended in the official docs:
21
21
  // https://developers.cloudflare.com/workers/get-started/guide#2-install-the-workers-cli
22
22
  console.error(
23
- `Wrangler requires at least node.js v${MIN_NODE_VERSION}. You are using v${process.versions.node}. Please update your version of node.js.
23
+ `Wrangler requires at least Node.js v${MIN_NODE_VERSION}. You are using v${process.versions.node}. Please update your version of Node.js.
24
24
 
25
25
  Consider using a Node.js version manager such as https://volta.sh/ or https://github.com/nvm-sh/nvm.`
26
26
  );
@@ -79,80 +79,6 @@ Consider using a Node.js version manager such as https://volta.sh/ or https://gi
79
79
  });
80
80
  }
81
81
 
82
- /**
83
- * Runs a locally-installed version of wrangler, delegating from this version.
84
- * @throws {MODULE_NOT_FOUND} if there isn't a locally installed version of wrangler.
85
- */
86
- function runDelegatedWrangler() {
87
- const packageJsonPath = require.resolve("wrangler/package.json", {
88
- paths: [process.cwd()],
89
- });
90
- const {
91
- bin: { wrangler: binaryPath },
92
- version,
93
- } = JSON.parse(fs.readFileSync(packageJsonPath));
94
- const resolvedBinaryPath = path.resolve(packageJsonPath, "..", binaryPath);
95
-
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
- );
105
-
106
- // this call to `spawn` is simpler because the delegated version will do all
107
- // of the other work.
108
- return spawn(
109
- process.execPath,
110
- [resolvedBinaryPath, ...process.argv.slice(2)],
111
- {
112
- stdio: ["inherit", "inherit", "inherit", "ipc"],
113
- }
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
- });
123
- }
124
-
125
- /**
126
- * Indicates if this invocation of `wrangler` should delegate
127
- * to a locally-installed version.
128
- */
129
- function shouldDelegate() {
130
- try {
131
- // `require.resolve` will throw if it can't find
132
- // a locally-installed version of `wrangler`
133
- const delegatedPackageJson = require.resolve("wrangler/package.json", {
134
- paths: [process.cwd()],
135
- });
136
- const thisPackageJson = path.resolve(__dirname, "..", "package.json");
137
- // if it's the same path, then we're already a local install -- no need to delegate
138
- return thisPackageJson !== delegatedPackageJson;
139
- } catch (e) {
140
- // there's no local version to delegate to -- `require.resolve` threw
141
- return false;
142
- }
143
- }
144
-
145
- async function main() {
146
- wranglerProcess = shouldDelegate() ? runDelegatedWrangler() : runWrangler();
147
- }
148
-
149
- process.on("SIGINT", () => {
150
- wranglerProcess && wranglerProcess.kill();
151
- });
152
- process.on("SIGTERM", () => {
153
- wranglerProcess && wranglerProcess.kill();
154
- });
155
-
156
82
  // semiver implementation via https://github.com/lukeed/semiver/blob/ae7eebe6053c96be63032b14fb0b68e2553fcac4/src/index.js
157
83
 
158
84
  /**
@@ -185,4 +111,12 @@ function semiver(a, b, bool) {
185
111
 
186
112
  // end semiver implementation
187
113
 
188
- void main();
114
+ if (module === require.main) {
115
+ wranglerProcess = runWrangler();
116
+ process.on("SIGINT", () => {
117
+ wranglerProcess && wranglerProcess.kill();
118
+ });
119
+ process.on("SIGTERM", () => {
120
+ wranglerProcess && wranglerProcess.kill();
121
+ });
122
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrangler",
3
- "version": "0.0.0-fa8e5232",
3
+ "version": "0.0.0-fac199ba",
4
4
  "description": "Command-line interface for all things Cloudflare Workers",
5
5
  "keywords": [
6
6
  "wrangler",
@@ -42,14 +42,10 @@
42
42
  "wrangler2": "./bin/wrangler.js"
43
43
  },
44
44
  "files": [
45
- "src",
46
45
  "bin",
47
- "miniflare-config-stubs",
48
46
  "miniflare-dist",
49
47
  "wrangler-dist",
50
48
  "templates",
51
- "vendor",
52
- "import_meta_url.js",
53
49
  "kv-asset-handler.js",
54
50
  "Cloudflare_CA.pem"
55
51
  ],
@@ -57,15 +53,19 @@
57
53
  "assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
58
54
  "build": "npm run clean && npm run bundle && npm run emit-types",
59
55
  "bundle": "node -r esbuild-register scripts/bundle.ts",
60
- "check:type": "node -r esbuild-register scripts/tsc-all.ts",
56
+ "check:lint": "eslint .",
57
+ "check:type": "tsc",
61
58
  "clean": "rimraf wrangler-dist miniflare-dist emitted-types",
62
59
  "dev": "npm run clean && concurrently -c black,blue --kill-others-on-fail false 'npm run bundle -- --watch' 'npm run check:type -- --watch --preserveWatchOutput'",
63
60
  "emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
64
61
  "prepublishOnly": "SOURCEMAPS=false npm run build",
65
62
  "start": "npm run bundle && cross-env NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
66
- "test": "npm run assert-git-version && jest --silent=false --verbose=true --forceExit",
67
- "test-watch": "npm run test -- --runInBand --testTimeout=50000 --watch",
68
- "test:ci": "npm run test -- --verbose=true --coverage"
63
+ "test": "npm run assert-git-version && jest",
64
+ "test:ci": "npm run test -- --coverage",
65
+ "test:debug": "npm run test -- --silent=false --verbose=true",
66
+ "test:e2e": "vitest --test-timeout 240000 --single-thread --dir ./e2e run",
67
+ "test:watch": "npm run test -- --runInBand --testTimeout=50000 --watch",
68
+ "type:tests": "tsc -p ./src/__tests__/tsconfig.json && tsc -p ./e2e/tsconfig.json"
69
69
  },
70
70
  "jest": {
71
71
  "coverageReporters": [
@@ -82,8 +82,8 @@
82
82
  "setupFilesAfterEnv": [
83
83
  "<rootDir>/src/__tests__/jest.setup.ts"
84
84
  ],
85
- "testRegex": ".*.(test|spec)\\.[jt]sx?$",
86
- "testTimeout": 30000,
85
+ "testRegex": "src/__tests__/.*\\.(test|spec)\\.[jt]sx?$",
86
+ "testTimeout": 50000,
87
87
  "transform": {
88
88
  "^.+\\.c?(t|j)sx?$": [
89
89
  "esbuild-jest",
@@ -100,13 +100,10 @@
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.12.0",
104
- "@miniflare/d1": "2.12.0",
105
- "@miniflare/durable-objects": "2.12.0",
106
103
  "blake3-wasm": "^2.1.5",
107
104
  "chokidar": "^3.5.3",
108
105
  "esbuild": "0.16.3",
109
- "miniflare": "2.12.0",
106
+ "miniflare": "3.20230814.1",
110
107
  "nanoid": "^3.3.3",
111
108
  "path-to-regexp": "^6.2.0",
112
109
  "selfsigned": "^2.0.1",
@@ -114,11 +111,12 @@
114
111
  "xxhash-wasm": "^1.0.1"
115
112
  },
116
113
  "devDependencies": {
114
+ "@cloudflare/eslint-config-worker": "*",
117
115
  "@cloudflare/types": "^6.18.4",
118
- "@cloudflare/workers-types": "^4.20221111.1",
116
+ "@cloudflare/workers-tsconfig": "*",
117
+ "@cloudflare/workers-types": "^4.20230724.0",
119
118
  "@iarna/toml": "^3.0.0",
120
119
  "@microsoft/api-extractor": "^7.28.3",
121
- "@miniflare/tre": "^3.0.0-next.8",
122
120
  "@types/better-sqlite3": "^7.6.0",
123
121
  "@types/busboy": "^1.5.0",
124
122
  "@types/command-exists": "^1.2.0",
@@ -133,7 +131,7 @@
133
131
  "@types/supports-color": "^8.1.1",
134
132
  "@types/ws": "^8.5.3",
135
133
  "@types/yargs": "^17.0.10",
136
- "@webcontainer/env": "^1.0.1",
134
+ "@webcontainer/env": "^1.1.0",
137
135
  "body-parser": "^1.20.0",
138
136
  "chalk": "^2.4.2",
139
137
  "cli-table3": "^0.6.3",
@@ -174,13 +172,16 @@
174
172
  "remove-accents-esm": "^0.0.1",
175
173
  "semiver": "^1.1.0",
176
174
  "serve-static": "^1.15.0",
175
+ "shellac": "^0.8.0",
177
176
  "signal-exit": "^3.0.7",
177
+ "strip-ansi": "^7.0.1",
178
178
  "supports-color": "^9.2.2",
179
179
  "timeago.js": "^4.0.2",
180
180
  "tmp-promise": "^3.0.3",
181
181
  "ts-dedent": "^2.2.0",
182
- "undici": "5.11.0",
182
+ "undici": "5.20.0",
183
183
  "update-check": "^1.5.4",
184
+ "vitest": "^0.31.0",
184
185
  "ws": "^8.5.0",
185
186
  "xdg-app-paths": "^7.3.0",
186
187
  "yargs": "^17.4.1",
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "../../tsconfig.json",
2
+ "extends": "@cloudflare/workers-tsconfig/tsconfig.json",
3
3
  "compilerOptions": {
4
4
  "types": ["node", "jest"]
5
5
  },
@@ -1,6 +1,6 @@
1
1
  const urls = new Set();
2
2
 
3
- export function checkedFetch(request, init) {
3
+ function checkURL(request, init) {
4
4
  const url =
5
5
  request instanceof URL
6
6
  ? request
@@ -15,9 +15,16 @@ export function checkedFetch(request, init) {
15
15
  urls.add(url.toString());
16
16
  console.warn(
17
17
  `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` +
18
- ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler publish\` command.\n`
18
+ ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n`
19
19
  );
20
20
  }
21
21
  }
22
- return globalThis.fetch(request, init);
23
22
  }
23
+
24
+ globalThis.fetch = new Proxy(globalThis.fetch, {
25
+ apply(target, thisArg, argArray) {
26
+ const [request, init] = argArray;
27
+ checkURL(request, init);
28
+ return Reflect.apply(target, thisArg, argArray);
29
+ },
30
+ });
@@ -1,6 +1,9 @@
1
1
  declare module "__ENTRY_POINT__" {
2
2
  import type { Middleware } from "./middleware/common";
3
- const worker: ExportedHandler & { middleware?: Middleware[] };
3
+ const worker: ExportedHandler & {
4
+ middleware?: Middleware[];
5
+ envWrappers: ((env: Record<string, unknown>) => Record<string, unknown>)[];
6
+ };
4
7
  export default worker;
5
8
  }
6
9
 
@@ -169,3 +169,4 @@ dist
169
169
  # wrangler project
170
170
 
171
171
  .dev.vars
172
+ .wrangler/
@@ -5,13 +5,18 @@ export type Dispatcher = (
5
5
  init: { cron?: string }
6
6
  ) => Awaitable<void>;
7
7
 
8
+ export type IncomingRequest = Request<
9
+ unknown,
10
+ IncomingRequestCfProperties<unknown>
11
+ >;
12
+
8
13
  export interface MiddlewareContext {
9
14
  dispatch: Dispatcher;
10
- next(request: Request, env: any): Awaitable<Response>;
15
+ next(request: IncomingRequest, env: any): Awaitable<Response>;
11
16
  }
12
17
 
13
18
  export type Middleware = (
14
- request: Request,
19
+ request: IncomingRequest,
15
20
  env: any,
16
21
  ctx: ExecutionContext,
17
22
  middlewareCtx: MiddlewareContext
@@ -32,7 +37,7 @@ export function __facade_registerInternal__(
32
37
  }
33
38
 
34
39
  function __facade_invokeChain__(
35
- request: Request,
40
+ request: IncomingRequest,
36
41
  env: any,
37
42
  ctx: ExecutionContext,
38
43
  dispatch: Dispatcher,
@@ -49,7 +54,7 @@ function __facade_invokeChain__(
49
54
  }
50
55
 
51
56
  export function __facade_invoke__(
52
- request: Request,
57
+ request: IncomingRequest,
53
58
  env: any,
54
59
  ctx: ExecutionContext,
55
60
  dispatch: Dispatcher,
@@ -36,17 +36,68 @@ class __Facade_ScheduledController__ implements ScheduledController {
36
36
  }
37
37
  }
38
38
 
39
- const __facade_modules_fetch__: Middleware = function (request, env, ctx) {
40
- if (worker.fetch === undefined) throw new Error("No fetch handler!"); // TODO: proper error message
39
+ const __facade_modules_fetch__: ExportedHandlerFetchHandler = function (
40
+ request,
41
+ env,
42
+ ctx
43
+ ) {
44
+ if (worker.fetch === undefined)
45
+ throw new Error("Handler does not export a fetch() function.");
41
46
  return worker.fetch(request, env, ctx);
42
47
  };
43
48
 
44
- const facade: ExportedHandler<unknown> = {
45
- fetch(request, env, ctx) {
49
+ function getMaskedEnv(rawEnv: unknown) {
50
+ let env = rawEnv as Record<string, unknown>;
51
+ if (worker.envWrappers && worker.envWrappers.length > 0) {
52
+ for (const wrapFn of worker.envWrappers) {
53
+ env = wrapFn(env);
54
+ }
55
+ }
56
+ return env;
57
+ }
58
+
59
+ /**
60
+ * This type is here to cause a type error if a new export handler is added to
61
+ * `ExportHandler` without it being included in the `facade` below.
62
+ */
63
+ type MissingExportHandlers = Omit<
64
+ Required<ExportedHandler>,
65
+ "tail" | "trace" | "scheduled" | "queue" | "test" | "email" | "fetch"
66
+ >;
67
+
68
+ let registeredMiddleware = false;
69
+
70
+ const facade: ExportedHandler<unknown> & MissingExportHandlers = {
71
+ ...(worker.tail && {
72
+ tail: maskHandlerEnv(worker.tail),
73
+ }),
74
+ ...(worker.trace && {
75
+ trace: maskHandlerEnv(worker.trace),
76
+ }),
77
+ ...(worker.scheduled && {
78
+ scheduled: maskHandlerEnv(worker.scheduled),
79
+ }),
80
+ ...(worker.queue && {
81
+ queue: maskHandlerEnv(worker.queue),
82
+ }),
83
+ ...(worker.test && {
84
+ test: maskHandlerEnv(worker.test),
85
+ }),
86
+ ...(worker.email && {
87
+ email: maskHandlerEnv(worker.email),
88
+ }),
89
+
90
+ fetch(request, rawEnv, ctx) {
91
+ const env = getMaskedEnv(rawEnv);
46
92
  // Get the chain of middleware from the worker object
47
93
  if (worker.middleware && worker.middleware.length > 0) {
48
- for (const middleware of worker.middleware) {
49
- __facade_register__(middleware);
94
+ // Make sure we only register middleware once:
95
+ // https://github.com/cloudflare/workers-sdk/issues/2386#issuecomment-1614715911
96
+ if (!registeredMiddleware) {
97
+ registeredMiddleware = true;
98
+ for (const middleware of worker.middleware) {
99
+ __facade_register__(middleware);
100
+ }
50
101
  }
51
102
 
52
103
  const __facade_modules_dispatch__: Dispatcher = function (type, init) {
@@ -71,14 +122,16 @@ const facade: ExportedHandler<unknown> = {
71
122
  // We didn't have any middleware so we can skip the invocation chain,
72
123
  // and just call the fetch handler directly
73
124
 
74
- // We "don't care" if this is undefined as we want to have the same behaviour
125
+ // We "don't care" if this is undefined as we want to have the same behavior
75
126
  // as if the worker completely bypassed middleware.
76
- return worker.fetch!(request, env, ctx);
127
+ return __facade_modules_fetch__(request, env, ctx);
77
128
  }
78
129
  },
79
- scheduled: worker.scheduled,
80
- queue: worker.queue,
81
- trace: worker.trace,
82
130
  };
83
131
 
132
+ type HandlerFn<D, R> = (data: D, env: unknown, ctx: ExecutionContext) => R;
133
+ function maskHandlerEnv<D, R>(handler: HandlerFn<D, R>): HandlerFn<D, R> {
134
+ return (data, env, ctx) => handler(data, getMaskedEnv(env), ctx);
135
+ }
136
+
84
137
  export default facade;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  Awaitable,
3
3
  Dispatcher,
4
+ IncomingRequest,
4
5
  Middleware,
5
6
  __facade_invoke__,
6
7
  __facade_register__,
@@ -183,8 +184,6 @@ __facade__originalAddEventListener__("fetch", (event) => {
183
184
  });
184
185
 
185
186
  __FACADE_EVENT_TARGET__.dispatchEvent(facadeEvent);
186
- // @ts-expect-error `waitUntil` types are currently broken, blocked on
187
- // https://github.com/cloudflare/workerd/pull/191
188
187
  event.waitUntil(Promise.all(facadeEvent[__facade_waitUntil__]));
189
188
  }
190
189
  };
@@ -197,8 +196,6 @@ __facade__originalAddEventListener__("fetch", (event) => {
197
196
 
198
197
  __FACADE_EVENT_TARGET__.dispatchEvent(facadeEvent);
199
198
  facadeEvent[__facade_dispatched__] = true;
200
- // @ts-expect-error `waitUntil` types are currently broken, blocked on
201
- // https://github.com/cloudflare/workerd/pull/191
202
199
  event.waitUntil(Promise.all(facadeEvent[__facade_waitUntil__]));
203
200
 
204
201
  const response = facadeEvent[__facade_response__];
@@ -210,7 +207,7 @@ __facade__originalAddEventListener__("fetch", (event) => {
210
207
 
211
208
  event.respondWith(
212
209
  __facade_invoke__(
213
- event.request,
210
+ event.request as IncomingRequest,
214
211
  globalThis,
215
212
  ctx,
216
213
  __facade_sw_dispatch__,
@@ -227,7 +224,5 @@ __facade__originalAddEventListener__("scheduled", (event) => {
227
224
  });
228
225
 
229
226
  __FACADE_EVENT_TARGET__.dispatchEvent(facadeEvent);
230
- // @ts-expect-error `waitUntil` types are currently broken, blocked on
231
- // https://github.com/cloudflare/workerd/pull/191
232
227
  event.waitUntil(Promise.all(facadeEvent[__facade_waitUntil__]));
233
228
  });
@@ -0,0 +1,3 @@
1
+ declare module "config:middleware/d1-beta" {
2
+ export const D1_IMPORTS: string[];
3
+ }
@@ -1,15 +1,27 @@
1
1
  import type { Middleware } from "./common";
2
2
 
3
+ interface JsonError {
4
+ message?: string;
5
+ name?: string;
6
+ stack?: string;
7
+ cause?: JsonError;
8
+ }
9
+
10
+ function reduceError(e: any): JsonError {
11
+ return {
12
+ name: e?.name,
13
+ message: e?.message ?? String(e),
14
+ stack: e?.stack,
15
+ cause: e?.cause === undefined ? undefined : reduceError(e.cause),
16
+ };
17
+ }
18
+
3
19
  // See comment in `bundle.ts` for details on why this is needed
4
20
  const jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {
5
21
  try {
6
22
  return await middlewareCtx.next(request, env);
7
23
  } catch (e: any) {
8
- const error = {
9
- name: e?.name,
10
- message: e?.message ?? String(e),
11
- stack: e?.stack,
12
- };
24
+ const error = reduceError(e);
13
25
  return Response.json(error, {
14
26
  status: 500,
15
27
  headers: { "MF-Experimental-Error-Stack": "true" },
@@ -0,0 +1,4 @@
1
+ declare module "config:middleware/multiworker-dev" {
2
+ import type { WorkerRegistry } from "../../src/dev-registry";
3
+ export const workers: WorkerRegistry;
4
+ }
@@ -0,0 +1,59 @@
1
+ // @ts-nocheck
2
+ /// <reference path="middleware-multiworker-dev.d.ts"/>
3
+
4
+ import { workers } from "config:middleware/multiworker-dev";
5
+ import type { WorkerRegistry } from "../../src/dev-registry";
6
+
7
+ export function wrap(env: Record<string, unknown>) {
8
+ const facadeEnv = { ...env };
9
+ // For every Worker definition that's available,
10
+ // create a fetcher for it on the facade env.
11
+ // for const [name, binding] of env
12
+ // if Workers[name]
13
+ // const details = Workers[name];
14
+
15
+ for (const [name, details] of Object.entries(workers as WorkerRegistry)) {
16
+ if (details) {
17
+ facadeEnv[name] = {
18
+ async fetch(...reqArgs: Parameters<Fetcher["fetch"]>) {
19
+ const reqFromArgs = new Request(...reqArgs);
20
+ if (details.headers) {
21
+ for (const [key, value] of Object.entries(details.headers)) {
22
+ // In remote mode, you need to add a couple of headers
23
+ // to make sure it's talking to the 'dev' preview session
24
+ // (much like wrangler dev already does via proxy.ts)
25
+ reqFromArgs.headers.set(key, value);
26
+ }
27
+ return (env[name] as Fetcher).fetch(reqFromArgs);
28
+ }
29
+
30
+ const url = new URL(reqFromArgs.url);
31
+ if (details.protocol !== undefined) {
32
+ url.protocol = details.protocol;
33
+ }
34
+ if (details.host !== undefined) {
35
+ url.host = details.host;
36
+ }
37
+ if (details.port !== undefined) {
38
+ url.port = details.port.toString();
39
+ }
40
+
41
+ const request = new Request(url.toString(), reqFromArgs);
42
+ return fetch(request);
43
+ },
44
+ };
45
+ } else {
46
+ // This means there's no dev binding available.
47
+ // Let's use whatever's available, or put a shim with a message.
48
+ facadeEnv[name] = facadeEnv[name] || {
49
+ async fetch() {
50
+ return new Response(
51
+ `You should start up wrangler dev --local on the ${name} worker`,
52
+ { status: 404 }
53
+ );
54
+ },
55
+ };
56
+ }
57
+ }
58
+ return facadeEnv;
59
+ }
@@ -0,0 +1,6 @@
1
+ declare module "config:middleware/serve-static-assets" {
2
+ import type { CacheControl } from "@cloudflare/kv-asset-handler";
3
+
4
+ export const spaMode: boolean;
5
+ export const cacheControl: Partial<CacheControl>;
6
+ }