wrangler 0.0.0-b08ab1e5 → 0.0.0-b0bbf697

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 (243) hide show
  1. package/README.md +7 -13
  2. package/bin/wrangler.js +19 -65
  3. package/package.json +30 -24
  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 +10 -4
  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 +52 -9
  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-d1-beta.ts +244 -0
  18. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  19. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  20. package/templates/middleware/middleware-multiworker-dev.ts +59 -0
  21. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  22. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  23. package/templates/new-worker-scheduled.ts +1 -1
  24. package/templates/new-worker.ts +4 -1
  25. package/templates/pages-dev-pipeline.ts +9 -13
  26. package/templates/pages-dev-util.ts +55 -0
  27. package/templates/pages-shim.ts +1 -1
  28. package/templates/pages-template-plugin.ts +35 -12
  29. package/templates/pages-template-worker.ts +32 -6
  30. package/templates/tsconfig-sanity.ts +11 -0
  31. package/templates/tsconfig.init.json +105 -0
  32. package/templates/tsconfig.json +5 -102
  33. package/wrangler-dist/cli.d.ts +954 -71
  34. package/wrangler-dist/cli.js +127195 -139241
  35. package/wrangler-dist/wasm-sync.wasm +0 -0
  36. package/import_meta_url.js +0 -3
  37. package/miniflare-config-stubs/.env.empty +0 -0
  38. package/miniflare-config-stubs/package.empty.json +0 -1
  39. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  40. package/miniflare-dist/index.mjs +0 -6310
  41. package/src/__tests__/api-dev.test.ts +0 -209
  42. package/src/__tests__/api-devregistry.test.js +0 -56
  43. package/src/__tests__/api.test.ts +0 -80
  44. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  45. package/src/__tests__/config-cache.test.ts +0 -42
  46. package/src/__tests__/configuration.test.ts +0 -3864
  47. package/src/__tests__/d1.test.ts +0 -70
  48. package/src/__tests__/delete.test.ts +0 -116
  49. package/src/__tests__/dev.test.tsx +0 -1357
  50. package/src/__tests__/dialogs.test.tsx +0 -40
  51. package/src/__tests__/generate.test.ts +0 -235
  52. package/src/__tests__/get-host-from-url.test.ts +0 -16
  53. package/src/__tests__/guess-worker-format.test.ts +0 -85
  54. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  55. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  56. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  57. package/src/__tests__/helpers/mock-bin.ts +0 -36
  58. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  59. package/src/__tests__/helpers/mock-console.ts +0 -106
  60. package/src/__tests__/helpers/mock-dialogs.ts +0 -153
  61. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -8
  62. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  63. package/src/__tests__/helpers/mock-istty.ts +0 -74
  64. package/src/__tests__/helpers/mock-known-routes.ts +0 -7
  65. package/src/__tests__/helpers/mock-kv.ts +0 -33
  66. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -252
  67. package/src/__tests__/helpers/mock-process.ts +0 -39
  68. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  69. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  70. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -104
  71. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -36
  72. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -80
  73. package/src/__tests__/helpers/msw/handlers/script.ts +0 -75
  74. package/src/__tests__/helpers/msw/handlers/user.ts +0 -63
  75. package/src/__tests__/helpers/msw/index.ts +0 -15
  76. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  77. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  78. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  79. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  80. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  81. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  82. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  83. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  84. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  85. package/src/__tests__/https-options.test.ts +0 -163
  86. package/src/__tests__/index.test.ts +0 -253
  87. package/src/__tests__/init.test.ts +0 -2816
  88. package/src/__tests__/jest.setup.ts +0 -191
  89. package/src/__tests__/kv.test.ts +0 -1675
  90. package/src/__tests__/logger.test.ts +0 -141
  91. package/src/__tests__/metrics.test.ts +0 -450
  92. package/src/__tests__/middleware.scheduled.test.ts +0 -135
  93. package/src/__tests__/middleware.test.ts +0 -726
  94. package/src/__tests__/package-manager.test.ts +0 -353
  95. package/src/__tests__/pages.test.ts +0 -2111
  96. package/src/__tests__/parse.test.ts +0 -330
  97. package/src/__tests__/paths.test.ts +0 -39
  98. package/src/__tests__/publish.test.ts +0 -7119
  99. package/src/__tests__/pubsub.test.ts +0 -367
  100. package/src/__tests__/r2.test.ts +0 -371
  101. package/src/__tests__/route.test.ts +0 -45
  102. package/src/__tests__/secret.test.ts +0 -644
  103. package/src/__tests__/tail.test.ts +0 -800
  104. package/src/__tests__/test-old-node-version.js +0 -31
  105. package/src/__tests__/type-generation.test.ts +0 -217
  106. package/src/__tests__/user.test.ts +0 -155
  107. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  108. package/src/__tests__/validate-dev-props.test.ts +0 -56
  109. package/src/__tests__/version.test.ts +0 -35
  110. package/src/__tests__/whoami.test.tsx +0 -278
  111. package/src/__tests__/worker-namespace.test.ts +0 -321
  112. package/src/abort.d.ts +0 -3
  113. package/src/api/dev.ts +0 -208
  114. package/src/api/index.ts +0 -2
  115. package/src/bundle-reporter.tsx +0 -29
  116. package/src/bundle.ts +0 -756
  117. package/src/cfetch/index.ts +0 -160
  118. package/src/cfetch/internal.ts +0 -263
  119. package/src/cli.ts +0 -29
  120. package/src/config/README.md +0 -107
  121. package/src/config/config.ts +0 -275
  122. package/src/config/diagnostics.ts +0 -80
  123. package/src/config/environment.ts +0 -505
  124. package/src/config/index.ts +0 -293
  125. package/src/config/validation-helpers.ts +0 -597
  126. package/src/config/validation.ts +0 -1930
  127. package/src/config-cache.ts +0 -85
  128. package/src/create-worker-preview.ts +0 -275
  129. package/src/create-worker-upload-form.ts +0 -301
  130. package/src/d1/backups.tsx +0 -212
  131. package/src/d1/create.tsx +0 -54
  132. package/src/d1/delete.tsx +0 -56
  133. package/src/d1/execute.tsx +0 -294
  134. package/src/d1/formatTimeAgo.ts +0 -14
  135. package/src/d1/index.ts +0 -75
  136. package/src/d1/list.tsx +0 -48
  137. package/src/d1/options.ts +0 -12
  138. package/src/d1/types.tsx +0 -14
  139. package/src/d1/utils.ts +0 -39
  140. package/src/delete.ts +0 -86
  141. package/src/deprecated/index.ts +0 -453
  142. package/src/dev/dev-vars.ts +0 -36
  143. package/src/dev/dev.tsx +0 -575
  144. package/src/dev/get-local-persistence-path.tsx +0 -31
  145. package/src/dev/local.tsx +0 -686
  146. package/src/dev/remote.tsx +0 -601
  147. package/src/dev/start-server.ts +0 -506
  148. package/src/dev/use-esbuild.ts +0 -197
  149. package/src/dev/validate-dev-props.ts +0 -31
  150. package/src/dev-registry.tsx +0 -201
  151. package/src/dev.tsx +0 -865
  152. package/src/dialogs.tsx +0 -163
  153. package/src/dispatch-namespace.ts +0 -206
  154. package/src/durable.ts +0 -102
  155. package/src/entry.ts +0 -329
  156. package/src/environment-variables.ts +0 -50
  157. package/src/errors.ts +0 -11
  158. package/src/git-client.ts +0 -124
  159. package/src/global-wrangler-config-path.ts +0 -26
  160. package/src/https-options.ts +0 -127
  161. package/src/index.tsx +0 -616
  162. package/src/init.ts +0 -970
  163. package/src/inspect.ts +0 -747
  164. package/src/intl-polyfill.d.ts +0 -139
  165. package/src/is-ci.ts +0 -14
  166. package/src/is-interactive.ts +0 -12
  167. package/src/kv/helpers.ts +0 -430
  168. package/src/kv/index.ts +0 -645
  169. package/src/logger.ts +0 -80
  170. package/src/metrics/index.ts +0 -5
  171. package/src/metrics/metrics-config.ts +0 -239
  172. package/src/metrics/metrics-dispatcher.ts +0 -96
  173. package/src/metrics/metrics-usage-headers.ts +0 -24
  174. package/src/metrics/send-event.ts +0 -94
  175. package/src/miniflare-cli/README.md +0 -30
  176. package/src/miniflare-cli/assets.ts +0 -215
  177. package/src/miniflare-cli/index.ts +0 -208
  178. package/src/miniflare-cli/request-context.ts +0 -40
  179. package/src/module-collection.ts +0 -267
  180. package/src/open-in-browser.ts +0 -17
  181. package/src/package-manager.ts +0 -219
  182. package/src/pages/build.tsx +0 -238
  183. package/src/pages/constants.ts +0 -16
  184. package/src/pages/deployments.tsx +0 -106
  185. package/src/pages/dev.tsx +0 -689
  186. package/src/pages/errors.ts +0 -66
  187. package/src/pages/functions/buildPlugin.ts +0 -110
  188. package/src/pages/functions/buildWorker.ts +0 -156
  189. package/src/pages/functions/filepath-routing.test.ts +0 -234
  190. package/src/pages/functions/filepath-routing.ts +0 -189
  191. package/src/pages/functions/identifiers.ts +0 -78
  192. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  193. package/src/pages/functions/routes-consolidation.ts +0 -73
  194. package/src/pages/functions/routes-transformation.test.ts +0 -282
  195. package/src/pages/functions/routes-transformation.ts +0 -115
  196. package/src/pages/functions/routes-validation.test.ts +0 -403
  197. package/src/pages/functions/routes-validation.ts +0 -202
  198. package/src/pages/functions/routes.ts +0 -151
  199. package/src/pages/functions.tsx +0 -82
  200. package/src/pages/hash.tsx +0 -13
  201. package/src/pages/index.tsx +0 -94
  202. package/src/pages/projects.tsx +0 -169
  203. package/src/pages/publish.tsx +0 -436
  204. package/src/pages/types.ts +0 -49
  205. package/src/pages/upload.tsx +0 -398
  206. package/src/pages/utils.ts +0 -12
  207. package/src/parse.ts +0 -286
  208. package/src/paths.ts +0 -71
  209. package/src/proxy.ts +0 -657
  210. package/src/publish/index.ts +0 -267
  211. package/src/publish/publish.ts +0 -913
  212. package/src/pubsub/index.ts +0 -286
  213. package/src/pubsub/pubsub-commands.tsx +0 -623
  214. package/src/r2/helpers.ts +0 -131
  215. package/src/r2/index.ts +0 -277
  216. package/src/routes.ts +0 -140
  217. package/src/secret/index.ts +0 -403
  218. package/src/selfsigned.d.ts +0 -29
  219. package/src/sites.tsx +0 -372
  220. package/src/tail/createTail.ts +0 -315
  221. package/src/tail/filters.ts +0 -277
  222. package/src/tail/index.ts +0 -217
  223. package/src/tail/printing.ts +0 -107
  224. package/src/type-generation.ts +0 -159
  225. package/src/update-check.ts +0 -19
  226. package/src/user/choose-account.tsx +0 -69
  227. package/src/user/env-vars.ts +0 -46
  228. package/src/user/generate-auth-url.ts +0 -33
  229. package/src/user/generate-random-state.ts +0 -16
  230. package/src/user/index.ts +0 -3
  231. package/src/user/user.tsx +0 -1192
  232. package/src/utils/collectKeyValues.ts +0 -14
  233. package/src/whoami.tsx +0 -169
  234. package/src/worker.ts +0 -234
  235. package/src/yargs-types.ts +0 -7
  236. package/src/zones.ts +0 -165
  237. package/templates/d1-beta-facade.js +0 -174
  238. package/templates/experimental-local-cache-stubs.js +0 -27
  239. package/templates/first-party-worker-module-facade.ts +0 -18
  240. package/templates/format-dev-errors.ts +0 -32
  241. package/templates/serve-static-assets.ts +0 -63
  242. package/templates/service-bindings-module-facade.js +0 -54
  243. 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
 
@@ -63,7 +61,7 @@ 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
 
@@ -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-b08ab1e5",
3
+ "version": "0.0.0-b0bbf697",
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,20 @@
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",
59
+ "create-cloudflare": "create-cloudflare",
62
60
  "dev": "npm run clean && concurrently -c black,blue --kill-others-on-fail false 'npm run bundle -- --watch' 'npm run check:type -- --watch --preserveWatchOutput'",
63
61
  "emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
64
62
  "prepublishOnly": "SOURCEMAPS=false npm run build",
65
63
  "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"
64
+ "test": "npm run assert-git-version && jest",
65
+ "test:ci": "npm run test -- --coverage",
66
+ "test:debug": "npm run test -- --silent=false --verbose=true",
67
+ "test:e2e": "vitest --test-timeout 120000 --single-thread --dir ./e2e run",
68
+ "test:watch": "npm run test -- --runInBand --testTimeout=50000 --watch",
69
+ "type:tests": "tsc -p ./src/__tests__/tsconfig.json && tsc -p ./e2e/tsconfig.json"
69
70
  },
70
71
  "jest": {
71
72
  "coverageReporters": [
@@ -82,7 +83,7 @@
82
83
  "setupFilesAfterEnv": [
83
84
  "<rootDir>/src/__tests__/jest.setup.ts"
84
85
  ],
85
- "testRegex": ".*.(test|spec)\\.[jt]sx?$",
86
+ "testRegex": "src/__tests__/.*\\.(test|spec)\\.[jt]sx?$",
86
87
  "testTimeout": 30000,
87
88
  "transform": {
88
89
  "^.+\\.c?(t|j)sx?$": [
@@ -100,13 +101,10 @@
100
101
  "@cloudflare/kv-asset-handler": "^0.2.0",
101
102
  "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
102
103
  "@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
104
  "blake3-wasm": "^2.1.5",
107
105
  "chokidar": "^3.5.3",
108
- "esbuild": "0.14.51",
109
- "miniflare": "2.10.0",
106
+ "esbuild": "0.16.3",
107
+ "miniflare": "^3.0.1",
110
108
  "nanoid": "^3.3.3",
111
109
  "path-to-regexp": "^6.2.0",
112
110
  "selfsigned": "^2.0.1",
@@ -114,11 +112,12 @@
114
112
  "xxhash-wasm": "^1.0.1"
115
113
  },
116
114
  "devDependencies": {
117
- "@databases/split-sql-query": "^1.0.3",
118
- "@databases/sql": "^3.2.0",
115
+ "@cloudflare/eslint-config-worker": "*",
116
+ "@cloudflare/types": "^6.18.4",
117
+ "@cloudflare/workers-tsconfig": "*",
118
+ "@cloudflare/workers-types": "^4.20230511.0",
119
119
  "@iarna/toml": "^3.0.0",
120
120
  "@microsoft/api-extractor": "^7.28.3",
121
- "@miniflare/tre": "3.0.0-next.2",
122
121
  "@types/better-sqlite3": "^7.6.0",
123
122
  "@types/busboy": "^1.5.0",
124
123
  "@types/command-exists": "^1.2.0",
@@ -133,8 +132,10 @@
133
132
  "@types/supports-color": "^8.1.1",
134
133
  "@types/ws": "^8.5.3",
135
134
  "@types/yargs": "^17.0.10",
136
- "@webcontainer/env": "^1.0.1",
135
+ "@webcontainer/env": "^1.1.0",
137
136
  "body-parser": "^1.20.0",
137
+ "chalk": "^2.4.2",
138
+ "cli-table3": "^0.6.3",
138
139
  "clipboardy": "^3.0.0",
139
140
  "cmd-shim": "^4.1.0",
140
141
  "command-exists": "^1.2.9",
@@ -160,7 +161,8 @@
160
161
  "jest-fetch-mock": "^3.0.3",
161
162
  "jest-websocket-mock": "^2.3.0",
162
163
  "mime": "^3.0.0",
163
- "msw": "^0.47.1",
164
+ "minimatch": "^5.1.0",
165
+ "msw": "^0.49.1",
164
166
  "npx-import": "^1.1.3",
165
167
  "open": "^8.4.0",
166
168
  "p-queue": "^7.2.0",
@@ -171,16 +173,20 @@
171
173
  "remove-accents-esm": "^0.0.1",
172
174
  "semiver": "^1.1.0",
173
175
  "serve-static": "^1.15.0",
176
+ "shellac": "^0.8.0",
174
177
  "signal-exit": "^3.0.7",
178
+ "strip-ansi": "^7.0.1",
175
179
  "supports-color": "^9.2.2",
176
180
  "timeago.js": "^4.0.2",
177
181
  "tmp-promise": "^3.0.3",
178
182
  "ts-dedent": "^2.2.0",
179
- "undici": "^5.11.0",
183
+ "undici": "5.20.0",
180
184
  "update-check": "^1.5.4",
185
+ "vitest": "^0.31.0",
181
186
  "ws": "^8.5.0",
182
187
  "xdg-app-paths": "^7.3.0",
183
- "yargs": "^17.4.1"
188
+ "yargs": "^17.4.1",
189
+ "yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz"
184
190
  },
185
191
  "optionalDependencies": {
186
192
  "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,15 +1,21 @@
1
1
  const urls = new Set();
2
2
 
3
3
  export function checkedFetch(request, init) {
4
- const url = new URL(
5
- (typeof request === "string" ? new Request(request, init) : request).url
6
- );
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
  }
@@ -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,