wrangler 0.0.0-c2d3286f → 0.0.0-c302bec6

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 (240) hide show
  1. package/README.md +12 -18
  2. package/bin/wrangler.js +19 -65
  3. package/package.json +30 -25
  4. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  5. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  6. package/templates/__tests__/tsconfig.json +8 -0
  7. package/templates/checked-fetch.js +19 -6
  8. package/templates/facade.d.ts +17 -0
  9. package/templates/gitignore +1 -0
  10. package/templates/init-tests/test-jest-new-worker.js +3 -5
  11. package/templates/init-tests/test-vitest-new-worker.js +3 -5
  12. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  13. package/templates/middleware/common.ts +9 -4
  14. package/templates/middleware/loader-modules.ts +64 -11
  15. package/templates/middleware/loader-sw.ts +47 -32
  16. package/templates/middleware/middleware-d1-beta.d.ts +3 -0
  17. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  18. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  19. package/templates/middleware/middleware-multiworker-dev.ts +59 -0
  20. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  21. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  22. package/templates/new-worker-scheduled.ts +1 -1
  23. package/templates/new-worker.ts +4 -1
  24. package/templates/pages-dev-pipeline.ts +9 -13
  25. package/templates/pages-dev-util.ts +55 -0
  26. package/templates/pages-shim.ts +1 -1
  27. package/templates/pages-template-plugin.ts +35 -12
  28. package/templates/pages-template-worker.ts +32 -6
  29. package/templates/tsconfig-sanity.ts +11 -0
  30. package/templates/tsconfig.init.json +105 -0
  31. package/templates/tsconfig.json +5 -102
  32. package/wrangler-dist/cli.d.ts +1003 -113
  33. package/wrangler-dist/cli.js +129740 -140939
  34. package/wrangler-dist/wasm-sync.wasm +0 -0
  35. package/import_meta_url.js +0 -3
  36. package/miniflare-config-stubs/.env.empty +0 -0
  37. package/miniflare-config-stubs/package.empty.json +0 -1
  38. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  39. package/miniflare-dist/index.mjs +0 -6310
  40. package/src/__tests__/api-dev.test.ts +0 -209
  41. package/src/__tests__/api-devregistry.test.js +0 -56
  42. package/src/__tests__/api.test.ts +0 -80
  43. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  44. package/src/__tests__/config-cache.test.ts +0 -42
  45. package/src/__tests__/configuration.test.ts +0 -3864
  46. package/src/__tests__/d1.test.ts +0 -70
  47. package/src/__tests__/delete.test.ts +0 -116
  48. package/src/__tests__/dev.test.tsx +0 -1357
  49. package/src/__tests__/dialogs.test.tsx +0 -40
  50. package/src/__tests__/generate.test.ts +0 -235
  51. package/src/__tests__/get-host-from-url.test.ts +0 -16
  52. package/src/__tests__/guess-worker-format.test.ts +0 -85
  53. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  54. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  55. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  56. package/src/__tests__/helpers/mock-bin.ts +0 -36
  57. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  58. package/src/__tests__/helpers/mock-console.ts +0 -106
  59. package/src/__tests__/helpers/mock-dialogs.ts +0 -153
  60. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -8
  61. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  62. package/src/__tests__/helpers/mock-istty.ts +0 -74
  63. package/src/__tests__/helpers/mock-known-routes.ts +0 -7
  64. package/src/__tests__/helpers/mock-kv.ts +0 -33
  65. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -252
  66. package/src/__tests__/helpers/mock-process.ts +0 -39
  67. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  68. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  69. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -104
  70. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -36
  71. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -80
  72. package/src/__tests__/helpers/msw/handlers/script.ts +0 -75
  73. package/src/__tests__/helpers/msw/handlers/user.ts +0 -63
  74. package/src/__tests__/helpers/msw/index.ts +0 -15
  75. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  76. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  77. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  78. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  79. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  80. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  81. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  82. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  83. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  84. package/src/__tests__/https-options.test.ts +0 -163
  85. package/src/__tests__/index.test.ts +0 -251
  86. package/src/__tests__/init.test.ts +0 -2816
  87. package/src/__tests__/jest.setup.ts +0 -191
  88. package/src/__tests__/kv.test.ts +0 -1675
  89. package/src/__tests__/logger.test.ts +0 -141
  90. package/src/__tests__/metrics.test.ts +0 -450
  91. package/src/__tests__/middleware.scheduled.test.ts +0 -135
  92. package/src/__tests__/middleware.test.ts +0 -726
  93. package/src/__tests__/package-manager.test.ts +0 -353
  94. package/src/__tests__/pages.test.ts +0 -2111
  95. package/src/__tests__/parse.test.ts +0 -330
  96. package/src/__tests__/paths.test.ts +0 -39
  97. package/src/__tests__/publish.test.ts +0 -7119
  98. package/src/__tests__/pubsub.test.ts +0 -367
  99. package/src/__tests__/r2.test.ts +0 -371
  100. package/src/__tests__/route.test.ts +0 -45
  101. package/src/__tests__/secret.test.ts +0 -644
  102. package/src/__tests__/tail.test.ts +0 -800
  103. package/src/__tests__/test-old-node-version.js +0 -31
  104. package/src/__tests__/user.test.ts +0 -155
  105. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  106. package/src/__tests__/validate-dev-props.test.ts +0 -56
  107. package/src/__tests__/version.test.ts +0 -35
  108. package/src/__tests__/whoami.test.tsx +0 -278
  109. package/src/__tests__/worker-namespace.test.ts +0 -321
  110. package/src/abort.d.ts +0 -3
  111. package/src/api/dev.ts +0 -207
  112. package/src/api/index.ts +0 -2
  113. package/src/bundle-reporter.tsx +0 -29
  114. package/src/bundle.ts +0 -756
  115. package/src/cfetch/index.ts +0 -160
  116. package/src/cfetch/internal.ts +0 -263
  117. package/src/cli.ts +0 -29
  118. package/src/config/README.md +0 -107
  119. package/src/config/config.ts +0 -275
  120. package/src/config/diagnostics.ts +0 -80
  121. package/src/config/environment.ts +0 -505
  122. package/src/config/index.ts +0 -293
  123. package/src/config/validation-helpers.ts +0 -597
  124. package/src/config/validation.ts +0 -1930
  125. package/src/config-cache.ts +0 -85
  126. package/src/create-worker-preview.ts +0 -275
  127. package/src/create-worker-upload-form.ts +0 -301
  128. package/src/d1/backups.tsx +0 -212
  129. package/src/d1/create.tsx +0 -54
  130. package/src/d1/delete.tsx +0 -56
  131. package/src/d1/execute.tsx +0 -294
  132. package/src/d1/formatTimeAgo.ts +0 -14
  133. package/src/d1/index.ts +0 -75
  134. package/src/d1/list.tsx +0 -48
  135. package/src/d1/options.ts +0 -12
  136. package/src/d1/types.tsx +0 -14
  137. package/src/d1/utils.ts +0 -39
  138. package/src/delete.ts +0 -86
  139. package/src/deprecated/index.ts +0 -453
  140. package/src/dev/dev-vars.ts +0 -36
  141. package/src/dev/dev.tsx +0 -575
  142. package/src/dev/get-local-persistence-path.tsx +0 -31
  143. package/src/dev/local.tsx +0 -686
  144. package/src/dev/remote.tsx +0 -601
  145. package/src/dev/start-server.ts +0 -506
  146. package/src/dev/use-esbuild.ts +0 -197
  147. package/src/dev/validate-dev-props.ts +0 -31
  148. package/src/dev-registry.tsx +0 -190
  149. package/src/dev.tsx +0 -865
  150. package/src/dialogs.tsx +0 -163
  151. package/src/dispatch-namespace.ts +0 -206
  152. package/src/durable.ts +0 -102
  153. package/src/entry.ts +0 -329
  154. package/src/environment-variables.ts +0 -50
  155. package/src/errors.ts +0 -11
  156. package/src/git-client.ts +0 -124
  157. package/src/global-wrangler-config-path.ts +0 -26
  158. package/src/https-options.ts +0 -127
  159. package/src/index.tsx +0 -582
  160. package/src/init.ts +0 -970
  161. package/src/inspect.ts +0 -747
  162. package/src/intl-polyfill.d.ts +0 -139
  163. package/src/is-ci.ts +0 -14
  164. package/src/is-interactive.ts +0 -12
  165. package/src/kv/helpers.ts +0 -430
  166. package/src/kv/index.ts +0 -645
  167. package/src/logger.ts +0 -80
  168. package/src/metrics/index.ts +0 -5
  169. package/src/metrics/metrics-config.ts +0 -239
  170. package/src/metrics/metrics-dispatcher.ts +0 -96
  171. package/src/metrics/metrics-usage-headers.ts +0 -24
  172. package/src/metrics/send-event.ts +0 -94
  173. package/src/miniflare-cli/README.md +0 -30
  174. package/src/miniflare-cli/assets.ts +0 -215
  175. package/src/miniflare-cli/index.ts +0 -208
  176. package/src/miniflare-cli/request-context.ts +0 -40
  177. package/src/module-collection.ts +0 -267
  178. package/src/open-in-browser.ts +0 -17
  179. package/src/package-manager.ts +0 -219
  180. package/src/pages/build.tsx +0 -238
  181. package/src/pages/constants.ts +0 -16
  182. package/src/pages/deployments.tsx +0 -106
  183. package/src/pages/dev.tsx +0 -689
  184. package/src/pages/errors.ts +0 -66
  185. package/src/pages/functions/buildPlugin.ts +0 -110
  186. package/src/pages/functions/buildWorker.ts +0 -156
  187. package/src/pages/functions/filepath-routing.test.ts +0 -234
  188. package/src/pages/functions/filepath-routing.ts +0 -189
  189. package/src/pages/functions/identifiers.ts +0 -78
  190. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  191. package/src/pages/functions/routes-consolidation.ts +0 -73
  192. package/src/pages/functions/routes-transformation.test.ts +0 -282
  193. package/src/pages/functions/routes-transformation.ts +0 -115
  194. package/src/pages/functions/routes-validation.test.ts +0 -403
  195. package/src/pages/functions/routes-validation.ts +0 -202
  196. package/src/pages/functions/routes.ts +0 -151
  197. package/src/pages/functions.tsx +0 -82
  198. package/src/pages/hash.tsx +0 -13
  199. package/src/pages/index.tsx +0 -94
  200. package/src/pages/projects.tsx +0 -169
  201. package/src/pages/publish.tsx +0 -436
  202. package/src/pages/types.ts +0 -49
  203. package/src/pages/upload.tsx +0 -398
  204. package/src/pages/utils.ts +0 -12
  205. package/src/parse.ts +0 -286
  206. package/src/paths.ts +0 -71
  207. package/src/proxy.ts +0 -657
  208. package/src/publish/index.ts +0 -267
  209. package/src/publish/publish.ts +0 -913
  210. package/src/pubsub/index.ts +0 -286
  211. package/src/pubsub/pubsub-commands.tsx +0 -623
  212. package/src/r2/helpers.ts +0 -131
  213. package/src/r2/index.ts +0 -277
  214. package/src/routes.ts +0 -140
  215. package/src/secret/index.ts +0 -403
  216. package/src/selfsigned.d.ts +0 -29
  217. package/src/sites.tsx +0 -372
  218. package/src/tail/createTail.ts +0 -315
  219. package/src/tail/filters.ts +0 -277
  220. package/src/tail/index.ts +0 -217
  221. package/src/tail/printing.ts +0 -107
  222. package/src/update-check.ts +0 -19
  223. package/src/user/choose-account.tsx +0 -69
  224. package/src/user/env-vars.ts +0 -46
  225. package/src/user/generate-auth-url.ts +0 -33
  226. package/src/user/generate-random-state.ts +0 -16
  227. package/src/user/index.ts +0 -3
  228. package/src/user/user.tsx +0 -1192
  229. package/src/utils/collectKeyValues.ts +0 -14
  230. package/src/whoami.tsx +0 -169
  231. package/src/worker.ts +0 -234
  232. package/src/yargs-types.ts +0 -7
  233. package/src/zones.ts +0 -165
  234. package/templates/d1-beta-facade.js +0 -174
  235. package/templates/experimental-local-cache-stubs.js +0 -27
  236. package/templates/first-party-worker-module-facade.ts +0 -18
  237. package/templates/format-dev-errors.ts +0 -32
  238. package/templates/serve-static-assets.ts +0 -63
  239. package/templates/service-bindings-module-facade.js +0 -54
  240. package/templates/service-bindings-sw-facade.js +0 -42
package/README.md CHANGED
@@ -1,13 +1,11 @@
1
1
  <h1 align="center"> ⛅️ wrangler </h1>
2
2
  <section align="center" id="shieldio-badges">
3
3
  <a href="https://www.npmjs.com/package/wrangler"><img alt="npm" src="https://img.shields.io/npm/dw/wrangler?style=flat-square"></a>
4
- <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/cloudflare/wrangler2?style=flat-square">
5
- <img alt="GitHub commit activity (branch)" src="https://img.shields.io/github/commit-activity/w/cloudflare/wrangler2/main?style=flat-square">
4
+ <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/cloudflare/workers-sdk?style=flat-square">
5
+ <img alt="GitHub commit activity (branch)" src="https://img.shields.io/github/commit-activity/w/cloudflare/workers-sdk/main?style=flat-square">
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.
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
 
@@ -82,7 +80,3 @@ For more commands and options, refer to the [documentation](https://developers.c
82
80
  ## Documentation
83
81
 
84
82
  For the latest Wrangler documentation, [click here](https://developers.cloudflare.com/workers/wrangler/).
85
-
86
- ```
87
-
88
- ```
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
  );
@@ -62,77 +62,23 @@ 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
- );
74
- }
75
-
76
- /**
77
- * Runs a locally-installed version of wrangler, delegating from this version.
78
- * @throws {MODULE_NOT_FOUND} if there isn't a locally installed version of wrangler.
79
- */
80
- function runDelegatedWrangler() {
81
- const packageJsonPath = require.resolve("wrangler/package.json", {
82
- paths: [process.cwd()],
83
- });
84
- const {
85
- bin: { wrangler: binaryPath },
86
- version,
87
- } = JSON.parse(fs.readFileSync(packageJsonPath));
88
- const resolvedBinaryPath = path.resolve(packageJsonPath, "..", binaryPath);
89
-
90
- debug(`Delegating to locally-installed version of wrangler @ v${version}`);
91
-
92
- // this call to `spawn` is simpler because the delegated version will do all
93
- // of the other work.
94
- return spawn(
95
- process.execPath,
96
- [resolvedBinaryPath, ...process.argv.slice(2)],
97
- {
98
- stdio: "inherit",
99
- }
100
- ).on("exit", (code) =>
101
- process.exit(code === undefined || code === null ? 0 : code)
102
- );
103
- }
104
-
105
- /**
106
- * Indicates if this invocation of `wrangler` should delegate
107
- * to a locally-installed version.
108
- */
109
- function shouldDelegate() {
110
- try {
111
- // `require.resolve` will throw if it can't find
112
- // a locally-installed version of `wrangler`
113
- const delegatedPackageJson = require.resolve("wrangler/package.json", {
114
- paths: [process.cwd()],
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
+ }
115
79
  });
116
- const thisPackageJson = path.resolve(__dirname, "..", "package.json");
117
- // if it's the same path, then we're already a local install -- no need to delegate
118
- return thisPackageJson !== delegatedPackageJson;
119
- } catch (e) {
120
- // there's no local version to delegate to -- `require.resolve` threw
121
- return false;
122
- }
123
80
  }
124
81
 
125
- async function main() {
126
- wranglerProcess = shouldDelegate() ? runDelegatedWrangler() : runWrangler();
127
- }
128
-
129
- process.on("SIGINT", () => {
130
- wranglerProcess && wranglerProcess.kill();
131
- });
132
- process.on("SIGTERM", () => {
133
- wranglerProcess && wranglerProcess.kill();
134
- });
135
-
136
82
  // semiver implementation via https://github.com/lukeed/semiver/blob/ae7eebe6053c96be63032b14fb0b68e2553fcac4/src/index.js
137
83
 
138
84
  /**
@@ -165,4 +111,12 @@ function semiver(a, b, bool) {
165
111
 
166
112
  // end semiver implementation
167
113
 
168
- 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-c2d3286f",
3
+ "version": "0.0.0-c302bec6",
4
4
  "description": "Command-line interface for all things Cloudflare Workers",
5
5
  "keywords": [
6
6
  "wrangler",
@@ -24,13 +24,13 @@
24
24
  "http",
25
25
  "cli"
26
26
  ],
27
- "homepage": "https://github.com/cloudflare/wrangler2#readme",
27
+ "homepage": "https://github.com/cloudflare/workers-sdk#readme",
28
28
  "bugs": {
29
- "url": "https://github.com/cloudflare/wrangler2/issues"
29
+ "url": "https://github.com/cloudflare/workers-sdk/issues"
30
30
  },
31
31
  "repository": {
32
32
  "type": "git",
33
- "url": "https://github.com/cloudflare/wrangler2.git",
33
+ "url": "https://github.com/cloudflare/workers-sdk.git",
34
34
  "directory": "packages/wrangler"
35
35
  },
36
36
  "license": "MIT OR Apache-2.0",
@@ -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",
56
+ "check:lint": "eslint .",
60
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",
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.10.0",
104
- "@miniflare/d1": "2.10.0",
105
- "@miniflare/durable-objects": "2.10.0",
106
103
  "blake3-wasm": "^2.1.5",
107
104
  "chokidar": "^3.5.3",
108
- "esbuild": "0.14.51",
109
- "miniflare": "2.10.0",
105
+ "esbuild": "0.16.3",
106
+ "miniflare": "3.20230724.0",
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": {
117
- "@databases/split-sql-query": "^1.0.3",
118
- "@databases/sql": "^3.2.0",
114
+ "@cloudflare/eslint-config-worker": "*",
115
+ "@cloudflare/types": "^6.18.4",
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.2",
122
120
  "@types/better-sqlite3": "^7.6.0",
123
121
  "@types/busboy": "^1.5.0",
124
122
  "@types/command-exists": "^1.2.0",
@@ -133,8 +131,10 @@
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",
136
+ "chalk": "^2.4.2",
137
+ "cli-table3": "^0.6.3",
138
138
  "clipboardy": "^3.0.0",
139
139
  "cmd-shim": "^4.1.0",
140
140
  "command-exists": "^1.2.9",
@@ -160,7 +160,8 @@
160
160
  "jest-fetch-mock": "^3.0.3",
161
161
  "jest-websocket-mock": "^2.3.0",
162
162
  "mime": "^3.0.0",
163
- "msw": "^0.47.1",
163
+ "minimatch": "^5.1.0",
164
+ "msw": "^0.49.1",
164
165
  "npx-import": "^1.1.3",
165
166
  "open": "^8.4.0",
166
167
  "p-queue": "^7.2.0",
@@ -171,16 +172,20 @@
171
172
  "remove-accents-esm": "^0.0.1",
172
173
  "semiver": "^1.1.0",
173
174
  "serve-static": "^1.15.0",
175
+ "shellac": "^0.8.0",
174
176
  "signal-exit": "^3.0.7",
177
+ "strip-ansi": "^7.0.1",
175
178
  "supports-color": "^9.2.2",
176
179
  "timeago.js": "^4.0.2",
177
180
  "tmp-promise": "^3.0.3",
178
181
  "ts-dedent": "^2.2.0",
179
- "undici": "^5.11.0",
182
+ "undici": "5.20.0",
180
183
  "update-check": "^1.5.4",
184
+ "vitest": "^0.31.0",
181
185
  "ws": "^8.5.0",
182
186
  "xdg-app-paths": "^7.3.0",
183
- "yargs": "^17.4.1"
187
+ "yargs": "^17.4.1",
188
+ "yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz"
184
189
  },
185
190
  "optionalDependencies": {
186
191
  "fsevents": "~2.3.2"
@@ -0,0 +1,128 @@
1
+ import { isRoutingRuleMatch } from "../pages-dev-util";
2
+
3
+ describe("isRoutingRuleMatch", () => {
4
+ it("should match rules referencing root level correctly", () => {
5
+ const routingRule = "/";
6
+
7
+ expect(isRoutingRuleMatch("/", routingRule)).toBeTruthy();
8
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeFalsy();
9
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeFalsy();
10
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeFalsy();
11
+ });
12
+
13
+ it("should match include-all rules correctly", () => {
14
+ const routingRule = "/*";
15
+
16
+ expect(isRoutingRuleMatch("/", routingRule)).toBeTruthy();
17
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
18
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
19
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
20
+ expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
21
+ expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
22
+ expect(isRoutingRuleMatch("/foo/bar/baz/", routingRule)).toBeTruthy();
23
+ });
24
+
25
+ it("should match `/*` suffix-ed rules correctly", () => {
26
+ let routingRule = "/foo/*";
27
+
28
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
29
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
30
+ expect(isRoutingRuleMatch("/foobar", routingRule)).toBeFalsy();
31
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
32
+ expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
33
+ expect(isRoutingRuleMatch("/bar/foo", routingRule)).toBeFalsy();
34
+ expect(isRoutingRuleMatch("/bar/foo/baz", routingRule)).toBeFalsy();
35
+
36
+ routingRule = "/foo/bar/*";
37
+
38
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeFalsy();
39
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeFalsy();
40
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
41
+ expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
42
+ expect(isRoutingRuleMatch("/foo/barfoo", routingRule)).toBeFalsy();
43
+ expect(isRoutingRuleMatch("baz/foo/bar", routingRule)).toBeFalsy();
44
+ expect(isRoutingRuleMatch("baz/foo/bar/", routingRule)).toBeFalsy();
45
+ });
46
+
47
+ it("should match `/` suffix-ed rules correctly", () => {
48
+ let routingRule = "/foo/";
49
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
50
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
51
+
52
+ routingRule = "/foo/bar/";
53
+ expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
54
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
55
+ });
56
+
57
+ it("should match `*` suffix-ed rules correctly", () => {
58
+ let routingRule = "/foo*";
59
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
60
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
61
+ expect(isRoutingRuleMatch("/foobar", routingRule)).toBeTruthy();
62
+ expect(isRoutingRuleMatch("/barfoo", routingRule)).toBeFalsy();
63
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
64
+ expect(isRoutingRuleMatch("/bar/foo", routingRule)).toBeFalsy();
65
+ expect(isRoutingRuleMatch("/bar/foobar", routingRule)).toBeFalsy();
66
+ expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
67
+ expect(isRoutingRuleMatch("/bar/foo/baz", routingRule)).toBeFalsy();
68
+
69
+ routingRule = "/foo/bar*";
70
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
71
+ expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
72
+ expect(isRoutingRuleMatch("/foo/barfoo", routingRule)).toBeTruthy();
73
+ expect(isRoutingRuleMatch("/bar/foo/barfoo", routingRule)).toBeFalsy();
74
+ expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
75
+ expect(isRoutingRuleMatch("/bar/foo/bar/baz", routingRule)).toBeFalsy();
76
+ });
77
+
78
+ it("should match rules without wildcards correctly", () => {
79
+ let routingRule = "/foo";
80
+
81
+ expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
82
+ expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
83
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeFalsy();
84
+ expect(isRoutingRuleMatch("/bar/foo", routingRule)).toBeFalsy();
85
+
86
+ routingRule = "/foo/bar";
87
+ expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
88
+ expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
89
+ expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeFalsy();
90
+ expect(isRoutingRuleMatch("/baz/foo/bar", routingRule)).toBeFalsy();
91
+ });
92
+
93
+ it("should throw an error if pathname or routing rule params are missing", () => {
94
+ // MISSING PATHNAME
95
+ expect(() =>
96
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
97
+ // @ts-ignore: sanity check
98
+ isRoutingRuleMatch(undefined, "/*")
99
+ ).toThrow("Pathname is undefined.");
100
+
101
+ expect(() =>
102
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
103
+ // @ts-ignore: sanity check
104
+ isRoutingRuleMatch(null, "/*")
105
+ ).toThrow("Pathname is undefined.");
106
+
107
+ expect(() => isRoutingRuleMatch("", "/*")).toThrow(
108
+ "Pathname is undefined."
109
+ );
110
+
111
+ // MISSING ROUTING RULE
112
+ expect(() =>
113
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
114
+ // @ts-ignore: sanity check
115
+ isRoutingRuleMatch("/foo", undefined)
116
+ ).toThrow("Routing rule is undefined.");
117
+
118
+ expect(() =>
119
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
120
+ // @ts-ignore: sanity check
121
+ isRoutingRuleMatch("/foo", null)
122
+ ).toThrow("Routing rule is undefined.");
123
+
124
+ expect(() => isRoutingRuleMatch("/foo", "")).toThrow(
125
+ "Routing rule is undefined."
126
+ );
127
+ });
128
+ });
@@ -0,0 +1,12 @@
1
+ // `@types/node` should be included
2
+ Buffer.from("test");
3
+
4
+ // `@types/jest` should be included
5
+ test("test");
6
+
7
+ // @ts-expect-error `@cloudflare/workers-types` should NOT be included
8
+ const _handler: ExportedHandler = {};
9
+ // @ts-expect-error `@cloudflare/workers-types` should NOT be included
10
+ new HTMLRewriter();
11
+
12
+ export {};
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "@cloudflare/workers-tsconfig/tsconfig.json",
3
+ "compilerOptions": {
4
+ "types": ["node", "jest"]
5
+ },
6
+ "include": ["**/*.ts"],
7
+ "exclude": []
8
+ }
@@ -1,17 +1,30 @@
1
1
  const urls = new Set();
2
2
 
3
- export function checkedFetch(request, init) {
4
- const url = new URL(
5
- (typeof request === "string" ? new Request(request, init) : request).url
6
- );
3
+ function checkURL(request, init) {
4
+ const url =
5
+ request instanceof URL
6
+ ? request
7
+ : new URL(
8
+ (typeof request === "string"
9
+ ? new Request(request, init)
10
+ : request
11
+ ).url
12
+ );
7
13
  if (url.port && url.port !== "443" && url.protocol === "https:") {
8
14
  if (!urls.has(url.toString())) {
9
15
  urls.add(url.toString());
10
16
  console.warn(
11
17
  `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` +
12
- ` - ${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`
13
19
  );
14
20
  }
15
21
  }
16
- return globalThis.fetch(request, init);
17
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
+ });
@@ -0,0 +1,17 @@
1
+ declare module "__ENTRY_POINT__" {
2
+ import type { Middleware } from "./middleware/common";
3
+ const worker: ExportedHandler & {
4
+ middleware?: Middleware[];
5
+ envWrappers: ((env: Record<string, unknown>) => Record<string, unknown>)[];
6
+ };
7
+ export default worker;
8
+ }
9
+
10
+ declare module "__KV_ASSET_HANDLER__" {
11
+ export * from "@cloudflare/kv-asset-handler";
12
+ }
13
+
14
+ declare module "__STATIC_CONTENT_MANIFEST" {
15
+ const manifest: string;
16
+ export default manifest;
17
+ }
@@ -169,3 +169,4 @@ dist
169
169
  # wrangler project
170
170
 
171
171
  .dev.vars
172
+ .wrangler/
@@ -4,11 +4,9 @@ describe("Worker", () => {
4
4
  let worker;
5
5
 
6
6
  beforeAll(async () => {
7
- worker = await unstable_dev(
8
- "src/index.js",
9
- {},
10
- { disableExperimentalWarning: true }
11
- );
7
+ worker = await unstable_dev("src/index.js", {
8
+ experimental: { disableExperimentalWarning: true },
9
+ });
12
10
  });
13
11
 
14
12
  afterAll(async () => {
@@ -5,11 +5,9 @@ describe("Worker", () => {
5
5
  let worker;
6
6
 
7
7
  beforeAll(async () => {
8
- worker = await unstable_dev(
9
- "src/index.js",
10
- {},
11
- { disableExperimentalWarning: true }
12
- );
8
+ worker = await unstable_dev("src/index.js", {
9
+ experimental: { disableExperimentalWarning: true },
10
+ });
13
11
  });
14
12
 
15
13
  afterAll(async () => {
@@ -0,0 +1,25 @@
1
+ import { unstable_dev } from "wrangler";
2
+ import type { UnstableDevWorker } from "wrangler";
3
+ import { describe, expect, it, beforeAll, afterAll } from "vitest";
4
+
5
+ describe("Worker", () => {
6
+ let worker: UnstableDevWorker;
7
+
8
+ beforeAll(async () => {
9
+ worker = await unstable_dev("src/index.ts", {
10
+ experimental: { disableExperimentalWarning: true },
11
+ });
12
+ });
13
+
14
+ afterAll(async () => {
15
+ await worker.stop();
16
+ });
17
+
18
+ it("should return Hello World", async () => {
19
+ const resp = await worker.fetch();
20
+ if (resp) {
21
+ const text = await resp.text();
22
+ expect(text).toMatchInlineSnapshot(`"Hello World!"`);
23
+ }
24
+ });
25
+ });
@@ -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,