wrangler 0.0.0-e6e1daba → 0.0.0-e72a5794

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 +19 -18
  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/{d1-beta-facade.js → middleware/middleware-d1-beta.ts} +87 -84
  13. package/templates/middleware/middleware-miniflare3-json-error.ts +17 -5
  14. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  15. package/templates/middleware/middleware-multiworker-dev.ts +59 -0
  16. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  17. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  18. package/templates/new-worker-scheduled.ts +1 -1
  19. package/templates/new-worker.ts +1 -1
  20. package/templates/pages-dev-util.ts +4 -1
  21. package/templates/pages-shim.ts +0 -3
  22. package/templates/pages-template-plugin.ts +12 -2
  23. package/templates/pages-template-worker.ts +11 -2
  24. package/templates/tsconfig.init.json +1 -2
  25. package/templates/tsconfig.json +1 -1
  26. package/wrangler-dist/cli.d.ts +192 -87
  27. package/wrangler-dist/cli.js +76158 -78596
  28. package/import_meta_url.js +0 -3
  29. package/miniflare-config-stubs/.env.empty +0 -0
  30. package/miniflare-config-stubs/package.empty.json +0 -1
  31. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  32. package/miniflare-dist/index.mjs +0 -6368
  33. package/src/__tests__/access.test.ts +0 -25
  34. package/src/__tests__/api-dev.test.ts +0 -238
  35. package/src/__tests__/api-devregistry.test.js +0 -64
  36. package/src/__tests__/api.test.ts +0 -80
  37. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  38. package/src/__tests__/config-cache.test.ts +0 -42
  39. package/src/__tests__/configuration.test.ts +0 -4233
  40. package/src/__tests__/d1/d1.test.ts +0 -82
  41. package/src/__tests__/d1/execute.test.ts +0 -64
  42. package/src/__tests__/d1/migrate.test.ts +0 -155
  43. package/src/__tests__/d1/splitter.test.ts +0 -255
  44. package/src/__tests__/delete.test.ts +0 -266
  45. package/src/__tests__/deployments.test.ts +0 -129
  46. package/src/__tests__/dev.test.tsx +0 -1587
  47. package/src/__tests__/generate.test.ts +0 -238
  48. package/src/__tests__/get-host-from-url.test.ts +0 -16
  49. package/src/__tests__/guess-worker-format.test.ts +0 -120
  50. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  51. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  52. package/src/__tests__/helpers/end-event-loop.ts +0 -6
  53. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  54. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  55. package/src/__tests__/helpers/mock-bin.ts +0 -36
  56. package/src/__tests__/helpers/mock-console.ts +0 -106
  57. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  58. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
  59. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  60. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  61. package/src/__tests__/helpers/mock-istty.ts +0 -74
  62. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  63. package/src/__tests__/helpers/mock-kv.ts +0 -46
  64. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  65. package/src/__tests__/helpers/mock-process.ts +0 -34
  66. package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
  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/blob-worker.cjs +0 -19
  70. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  71. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -93
  72. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  73. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  74. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  75. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  76. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  77. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  78. package/src/__tests__/helpers/msw/index.ts +0 -50
  79. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  80. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  81. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  82. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
  83. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  84. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  85. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  86. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  87. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  88. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  89. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  90. package/src/__tests__/https-options.test.ts +0 -163
  91. package/src/__tests__/index.test.ts +0 -274
  92. package/src/__tests__/init.test.ts +0 -3164
  93. package/src/__tests__/jest.setup.ts +0 -175
  94. package/src/__tests__/kv.test.ts +0 -1799
  95. package/src/__tests__/logger.test.ts +0 -141
  96. package/src/__tests__/logout.test.ts +0 -47
  97. package/src/__tests__/metrics.test.ts +0 -493
  98. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  99. package/src/__tests__/middleware.test.ts +0 -815
  100. package/src/__tests__/mtls-certificates.test.ts +0 -585
  101. package/src/__tests__/package-manager.test.ts +0 -353
  102. package/src/__tests__/pages/deployment-list.test.ts +0 -78
  103. package/src/__tests__/pages/functions-build.test.ts +0 -402
  104. package/src/__tests__/pages/pages.test.ts +0 -81
  105. package/src/__tests__/pages/project-create.test.ts +0 -63
  106. package/src/__tests__/pages/project-list.test.ts +0 -108
  107. package/src/__tests__/pages/project-upload.test.ts +0 -481
  108. package/src/__tests__/pages/publish.test.ts +0 -2745
  109. package/src/__tests__/pages-deployment-tail.test.ts +0 -955
  110. package/src/__tests__/parse.test.ts +0 -436
  111. package/src/__tests__/paths.test.ts +0 -39
  112. package/src/__tests__/publish.test.ts +0 -8167
  113. package/src/__tests__/pubsub.test.ts +0 -493
  114. package/src/__tests__/queues.test.ts +0 -529
  115. package/src/__tests__/r2.test.ts +0 -374
  116. package/src/__tests__/route.test.ts +0 -45
  117. package/src/__tests__/secret.test.ts +0 -693
  118. package/src/__tests__/tail.test.ts +0 -958
  119. package/src/__tests__/test-old-node-version.js +0 -31
  120. package/src/__tests__/tsconfig-sanity.ts +0 -12
  121. package/src/__tests__/tsconfig.json +0 -8
  122. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  123. package/src/__tests__/type-generation.test.ts +0 -233
  124. package/src/__tests__/user.test.ts +0 -118
  125. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  126. package/src/__tests__/validate-dev-props.test.ts +0 -56
  127. package/src/__tests__/version.test.ts +0 -35
  128. package/src/__tests__/whoami.test.tsx +0 -172
  129. package/src/__tests__/worker-namespace.test.ts +0 -339
  130. package/src/abort.d.ts +0 -3
  131. package/src/api/dev.ts +0 -328
  132. package/src/api/index.ts +0 -11
  133. package/src/api/mtls-certificate.ts +0 -148
  134. package/src/api/pages/create-worker-bundle-contents.ts +0 -75
  135. package/src/api/pages/index.ts +0 -5
  136. package/src/api/pages/publish.tsx +0 -368
  137. package/src/bundle-reporter.ts +0 -68
  138. package/src/bundle.ts +0 -877
  139. package/src/cfetch/index.ts +0 -158
  140. package/src/cfetch/internal.ts +0 -258
  141. package/src/cli.ts +0 -28
  142. package/src/config/README.md +0 -107
  143. package/src/config/config.ts +0 -282
  144. package/src/config/diagnostics.ts +0 -80
  145. package/src/config/environment.ts +0 -586
  146. package/src/config/index.ts +0 -375
  147. package/src/config/validation-helpers.ts +0 -597
  148. package/src/config/validation.ts +0 -2198
  149. package/src/config-cache.ts +0 -85
  150. package/src/create-worker-preview.ts +0 -293
  151. package/src/create-worker-upload-form.ts +0 -334
  152. package/src/d1/backups.tsx +0 -215
  153. package/src/d1/constants.ts +0 -2
  154. package/src/d1/create.tsx +0 -64
  155. package/src/d1/delete.ts +0 -53
  156. package/src/d1/execute.tsx +0 -354
  157. package/src/d1/formatTimeAgo.ts +0 -14
  158. package/src/d1/index.ts +0 -100
  159. package/src/d1/list.tsx +0 -60
  160. package/src/d1/migrations/apply.tsx +0 -206
  161. package/src/d1/migrations/create.tsx +0 -76
  162. package/src/d1/migrations/helpers.ts +0 -172
  163. package/src/d1/migrations/index.ts +0 -3
  164. package/src/d1/migrations/list.tsx +0 -92
  165. package/src/d1/migrations/options.ts +0 -23
  166. package/src/d1/options.ts +0 -22
  167. package/src/d1/splitter.ts +0 -161
  168. package/src/d1/types.ts +0 -25
  169. package/src/d1/utils.ts +0 -49
  170. package/src/delete.ts +0 -100
  171. package/src/deployments.ts +0 -116
  172. package/src/deprecated/index.ts +0 -144
  173. package/src/dev/dev-vars.ts +0 -39
  174. package/src/dev/dev.tsx +0 -600
  175. package/src/dev/get-local-persistence-path.ts +0 -31
  176. package/src/dev/local.tsx +0 -922
  177. package/src/dev/remote.tsx +0 -632
  178. package/src/dev/start-server.ts +0 -538
  179. package/src/dev/use-esbuild.ts +0 -205
  180. package/src/dev/validate-dev-props.ts +0 -31
  181. package/src/dev-registry.ts +0 -201
  182. package/src/dev.tsx +0 -914
  183. package/src/dialogs.ts +0 -136
  184. package/src/dispatch-namespace.ts +0 -211
  185. package/src/docs/index.ts +0 -97
  186. package/src/durable.ts +0 -102
  187. package/src/entry.ts +0 -327
  188. package/src/environment-variables/factory.ts +0 -88
  189. package/src/environment-variables/misc-variables.ts +0 -30
  190. package/src/errors.ts +0 -11
  191. package/src/generate/index.ts +0 -298
  192. package/src/git-client.ts +0 -135
  193. package/src/global-wrangler-config-path.ts +0 -26
  194. package/src/https-options.ts +0 -127
  195. package/src/index.ts +0 -705
  196. package/src/init.ts +0 -1022
  197. package/src/inspect.ts +0 -782
  198. package/src/intl-polyfill.d.ts +0 -139
  199. package/src/is-ci.ts +0 -14
  200. package/src/is-interactive.ts +0 -16
  201. package/src/jest.d.ts +0 -4
  202. package/src/kv/helpers.ts +0 -430
  203. package/src/kv/index.ts +0 -594
  204. package/src/logger.ts +0 -104
  205. package/src/metrics/index.ts +0 -5
  206. package/src/metrics/metrics-config.ts +0 -239
  207. package/src/metrics/metrics-dispatcher.ts +0 -96
  208. package/src/metrics/metrics-usage-headers.ts +0 -24
  209. package/src/metrics/send-event.ts +0 -98
  210. package/src/miniflare-cli/README.md +0 -30
  211. package/src/miniflare-cli/assets.ts +0 -251
  212. package/src/miniflare-cli/index.ts +0 -210
  213. package/src/miniflare-cli/request-context.ts +0 -40
  214. package/src/miniflare-cli/tsconfig.json +0 -9
  215. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  216. package/src/miniflare-cli/types.ts +0 -11
  217. package/src/module-collection.ts +0 -267
  218. package/src/mtls-certificate/cli.ts +0 -155
  219. package/src/open-in-browser.ts +0 -17
  220. package/src/package-manager.ts +0 -219
  221. package/src/pages/build.ts +0 -232
  222. package/src/pages/buildFunctions.ts +0 -130
  223. package/src/pages/constants.ts +0 -18
  224. package/src/pages/deployment-tails.ts +0 -281
  225. package/src/pages/deployments.tsx +0 -86
  226. package/src/pages/dev.ts +0 -716
  227. package/src/pages/errors.ts +0 -66
  228. package/src/pages/functions/buildPlugin.ts +0 -90
  229. package/src/pages/functions/buildWorker.ts +0 -288
  230. package/src/pages/functions/filepath-routing.test.ts +0 -234
  231. package/src/pages/functions/filepath-routing.ts +0 -189
  232. package/src/pages/functions/identifiers.ts +0 -78
  233. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  234. package/src/pages/functions/routes-consolidation.ts +0 -73
  235. package/src/pages/functions/routes-transformation.test.ts +0 -282
  236. package/src/pages/functions/routes-transformation.ts +0 -115
  237. package/src/pages/functions/routes-validation.test.ts +0 -403
  238. package/src/pages/functions/routes-validation.ts +0 -202
  239. package/src/pages/functions/routes.ts +0 -151
  240. package/src/pages/functions/tsconfig.json +0 -8
  241. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  242. package/src/pages/functions.ts +0 -86
  243. package/src/pages/hash.ts +0 -13
  244. package/src/pages/index.ts +0 -102
  245. package/src/pages/projects.tsx +0 -162
  246. package/src/pages/prompt-select-project.tsx +0 -31
  247. package/src/pages/publish.tsx +0 -276
  248. package/src/pages/types.ts +0 -46
  249. package/src/pages/upload.tsx +0 -449
  250. package/src/pages/utils.ts +0 -23
  251. package/src/parse.ts +0 -308
  252. package/src/paths.ts +0 -71
  253. package/src/proxy.ts +0 -694
  254. package/src/publish/index.ts +0 -274
  255. package/src/publish/publish.ts +0 -1065
  256. package/src/pubsub/index.ts +0 -286
  257. package/src/pubsub/pubsub-commands.ts +0 -623
  258. package/src/queues/cli/commands/consumer/add.ts +0 -65
  259. package/src/queues/cli/commands/consumer/index.ts +0 -19
  260. package/src/queues/cli/commands/consumer/remove.ts +0 -31
  261. package/src/queues/cli/commands/create.ts +0 -25
  262. package/src/queues/cli/commands/delete.ts +0 -26
  263. package/src/queues/cli/commands/index.ts +0 -35
  264. package/src/queues/cli/commands/list.ts +0 -25
  265. package/src/queues/client.ts +0 -135
  266. package/src/queues/utils.ts +0 -18
  267. package/src/r2/constants.ts +0 -4
  268. package/src/r2/helpers.ts +0 -132
  269. package/src/r2/index.ts +0 -289
  270. package/src/routes.ts +0 -140
  271. package/src/secret/index.ts +0 -375
  272. package/src/selfsigned.d.ts +0 -29
  273. package/src/sites.ts +0 -372
  274. package/src/tail/createTail.ts +0 -406
  275. package/src/tail/filters.ts +0 -277
  276. package/src/tail/index.ts +0 -211
  277. package/src/tail/printing.ts +0 -122
  278. package/src/tsconfig-sanity.ts +0 -16
  279. package/src/type-generation.ts +0 -181
  280. package/src/update-check.ts +0 -19
  281. package/src/user/access.ts +0 -68
  282. package/src/user/auth-variables.ts +0 -113
  283. package/src/user/choose-account.tsx +0 -39
  284. package/src/user/generate-auth-url.ts +0 -33
  285. package/src/user/generate-random-state.ts +0 -16
  286. package/src/user/index.ts +0 -2
  287. package/src/user/user.ts +0 -1233
  288. package/src/utils/collectKeyValues.ts +0 -14
  289. package/src/whoami.ts +0 -135
  290. package/src/worker.ts +0 -257
  291. package/src/yargs-types.ts +0 -37
  292. package/src/zones.ts +0 -191
  293. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  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
@@ -1,38 +0,0 @@
1
- import * as fs from "node:fs";
2
- import os from "node:os";
3
- import * as path from "node:path";
4
- import { reinitialiseAuthTokens } from "../../user";
5
-
6
- const originalCwd = process.cwd();
7
-
8
- export function runInTempDir({ homedir } = { homedir: "./home" }) {
9
- let tmpDir: string;
10
-
11
- beforeEach(() => {
12
- // Use realpath because the temporary path can point to a symlink rather than the actual path.
13
- tmpDir = fs.realpathSync(
14
- fs.mkdtempSync(path.join(os.tmpdir(), "wrangler-tests"))
15
- );
16
-
17
- process.chdir(tmpDir);
18
- // The path that is returned from `homedir()` should be absolute.
19
- const absHomedir = path.resolve(tmpDir, homedir);
20
- // Override where the home directory is so that we can write our own user config,
21
- // without destroying the real thing.
22
- fs.mkdirSync(absHomedir, { recursive: true });
23
- // Note it is very important that we use the "default" value from "node:os" (e.g. `import os from "node:os";`)
24
- // rather than an alias to the module (e.g. `import * as os from "node:os";`).
25
- // This is because the module gets transpiled so that the "method" `homedir()` gets converted to a
26
- // getter that is not configurable (and so cannot be spied upon).
27
- jest.spyOn(os, "homedir")?.mockReturnValue(absHomedir);
28
- // Now that we have changed the home directory location, we must reinitialize the user auth state
29
- reinitialiseAuthTokens();
30
- });
31
-
32
- afterEach(() => {
33
- if (fs.existsSync(tmpDir)) {
34
- process.chdir(originalCwd);
35
- fs.rmSync(tmpDir, { recursive: true });
36
- }
37
- });
38
- }
@@ -1,16 +0,0 @@
1
- import { main } from "../../index";
2
- import { normalizeSlashes, stripTimings } from "./mock-console";
3
-
4
- /**
5
- * A helper to 'run' wrangler commands for tests.
6
- */
7
- export async function runWrangler(cmd?: string) {
8
- try {
9
- await main(cmd?.split(" ") ?? []);
10
- } catch (err) {
11
- if (err instanceof Error) {
12
- err.message = normalizeSlashes(stripTimings(err.message));
13
- }
14
- throw err;
15
- }
16
- }
@@ -1,28 +0,0 @@
1
- export type PatternReplacementPair = [string | RegExp, string];
2
-
3
- /**
4
- * Sometimes, we might need to test strings that contain dynamic |
5
- * random | generated data (such as file hashes, IDs, etc.).
6
- *
7
- * This helper function replaces the dynamic parts of such strings with
8
- * static values, thus enabling us to properly test the contents of the
9
- * string.
10
- *
11
- * see https://jestjs.io/docs/snapshot-testing#property-matchers
12
- */
13
- export function replaceRandomWithConstantData(
14
- stringWithRandomData: string,
15
- patternReplacementPairs: Array<PatternReplacementPair>
16
- ) {
17
- let stringWithConstantData = stringWithRandomData;
18
-
19
- patternReplacementPairs.forEach(
20
- (pair) =>
21
- (stringWithConstantData = stringWithConstantData.replace(
22
- pair[0], // pattern
23
- pair[1] // replacement
24
- ))
25
- );
26
-
27
- return stringWithConstantData;
28
- }
@@ -1 +0,0 @@
1
- name = 'child'
@@ -1,5 +0,0 @@
1
- export default {
2
- async fetch() {
3
- return new Response("Hello World!");
4
- },
5
- };
@@ -1 +0,0 @@
1
- name = 'hello-world'
@@ -1,8 +0,0 @@
1
- export default {
2
- async fetch(req, env) {
3
- const resp = await env.CHILD.fetch(req);
4
- const text = await resp.text();
5
- console.log("text: ", text);
6
- return new Response(`Parent worker sees: ${text}`);
7
- },
8
- };
@@ -1,5 +0,0 @@
1
- name = 'parent'
2
-
3
- [[services]]
4
- binding = "CHILD"
5
- service = 'child'
@@ -1,31 +0,0 @@
1
- import fs from "node:fs";
2
-
3
- /** Write a mock Worker script to disk. */
4
- export function writeWorkerSource({
5
- basePath = ".",
6
- format = "js",
7
- type = "esm",
8
- }: {
9
- basePath?: string;
10
- format?: "js" | "ts" | "jsx" | "tsx" | "mjs";
11
- type?: "esm" | "sw";
12
- } = {}) {
13
- if (basePath !== ".") {
14
- fs.mkdirSync(basePath, { recursive: true });
15
- }
16
- fs.writeFileSync(
17
- `${basePath}/index.${format}`,
18
- type === "esm"
19
- ? `import { foo } from "./another";
20
- export default {
21
- async fetch(request) {
22
- return new Response('Hello' + foo);
23
- },
24
- };`
25
- : `import { foo } from "./another";
26
- addEventListener('fetch', event => {
27
- event.respondWith(new Response('Hello' + foo));
28
- })`
29
- );
30
- fs.writeFileSync(`${basePath}/another.${format}`, `export const foo = 100;`);
31
- }
@@ -1,17 +0,0 @@
1
- import * as fs from "fs";
2
- import TOML from "@iarna/toml";
3
- import type { RawConfig } from "../../config";
4
-
5
- /** Write a mock wrangler.toml file to disk. */
6
- export default function writeWranglerToml(config: RawConfig = {}) {
7
- fs.writeFileSync(
8
- "./wrangler.toml",
9
- TOML.stringify({
10
- compatibility_date: "2022-01-12",
11
- name: "test-name",
12
- ...(config as TOML.JsonMap),
13
- }),
14
-
15
- "utf-8"
16
- );
17
- }
@@ -1,163 +0,0 @@
1
- import fs from "node:fs";
2
- import os from "node:os";
3
- import path from "node:path";
4
- import { getGlobalWranglerConfigPath } from "../global-wrangler-config-path";
5
- import { getHttpsOptions } from "../https-options";
6
- import { mockConsoleMethods } from "./helpers/mock-console";
7
- import { runInTempDir } from "./helpers/run-in-tmp";
8
-
9
- describe("getHttpsOptions()", () => {
10
- runInTempDir();
11
- const std = mockConsoleMethods();
12
-
13
- it("should use cached values if they have not expired", async () => {
14
- fs.mkdirSync(path.resolve(getGlobalWranglerConfigPath(), "local-cert"), {
15
- recursive: true,
16
- });
17
- fs.writeFileSync(
18
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/key.pem"),
19
- "PRIVATE KEY"
20
- );
21
- fs.writeFileSync(
22
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/cert.pem"),
23
- "PUBLIC KEY"
24
- );
25
- const result = await getHttpsOptions();
26
- expect(result.key).toEqual("PRIVATE KEY");
27
- expect(result.cert).toEqual("PUBLIC KEY");
28
- expect(std.out).toMatchInlineSnapshot(`""`);
29
- expect(std.warn).toMatchInlineSnapshot(`""`);
30
- expect(std.err).toMatchInlineSnapshot(`""`);
31
- });
32
-
33
- it("should generate and cache new keys if none are cached", async () => {
34
- const result = await getHttpsOptions();
35
- const key = fs.readFileSync(
36
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/key.pem"),
37
- "utf8"
38
- );
39
- const cert = fs.readFileSync(
40
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/cert.pem"),
41
- "utf8"
42
- );
43
- expect(result.key).toEqual(key);
44
- expect(result.cert).toEqual(cert);
45
- expect(std.out).toMatchInlineSnapshot(
46
- `"Generating new self-signed certificate..."`
47
- );
48
- expect(std.warn).toMatchInlineSnapshot(`""`);
49
- expect(std.err).toMatchInlineSnapshot(`""`);
50
- });
51
-
52
- it("should generate and cache new keys if cached files have expired", async () => {
53
- fs.mkdirSync(path.resolve(getGlobalWranglerConfigPath(), "local-cert"), {
54
- recursive: true,
55
- });
56
- const ORIGINAL_KEY = "EXPIRED PRIVATE KEY";
57
- const ORIGINAL_CERT = "EXPIRED PUBLIC KEY";
58
- fs.writeFileSync(
59
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/key.pem"),
60
- ORIGINAL_KEY
61
- );
62
- fs.writeFileSync(
63
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/cert.pem"),
64
- ORIGINAL_CERT
65
- );
66
- mockStatSync(/\.pem$/, { mtimeMs: new Date(2000).valueOf() });
67
-
68
- const result = await getHttpsOptions();
69
- const key = fs.readFileSync(
70
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/key.pem"),
71
- "utf8"
72
- );
73
- const cert = fs.readFileSync(
74
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/cert.pem"),
75
- "utf8"
76
- );
77
- expect(key).not.toEqual(ORIGINAL_KEY);
78
- expect(cert).not.toEqual(ORIGINAL_CERT);
79
- expect(result.key).toEqual(key);
80
- expect(result.cert).toEqual(cert);
81
- expect(std.out).toMatchInlineSnapshot(
82
- `"Generating new self-signed certificate..."`
83
- );
84
- expect(std.warn).toMatchInlineSnapshot(`""`);
85
- expect(std.err).toMatchInlineSnapshot(`""`);
86
- });
87
-
88
- it("should warn if not able to write to the cache (legacy config path)", async () => {
89
- fs.mkdirSync(path.join(os.homedir(), ".wrangler"));
90
- mockWriteFileSyncThrow(/\.pem$/);
91
- await getHttpsOptions();
92
- expect(
93
- fs.existsSync(
94
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/key.pem")
95
- )
96
- ).toBe(false);
97
- expect(
98
- fs.existsSync(
99
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/cert.pem")
100
- )
101
- ).toBe(false);
102
- expect(std.out).toMatchInlineSnapshot(
103
- `"Generating new self-signed certificate..."`
104
- );
105
- expect(std.warn).toMatchInlineSnapshot(`
106
- "▲ [WARNING] Unable to cache generated self-signed certificate in home/.wrangler/local-cert.
107
-
108
- ERROR: Cannot write file
109
-
110
- "
111
- `);
112
- expect(std.err).toMatchInlineSnapshot(`""`);
113
- fs.rmSync(path.join(os.homedir(), ".wrangler"), { recursive: true });
114
- });
115
-
116
- it("should warn if not able to write to the cache", async () => {
117
- mockWriteFileSyncThrow(/\.pem$/);
118
- await getHttpsOptions();
119
- expect(
120
- fs.existsSync(
121
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/key.pem")
122
- )
123
- ).toBe(false);
124
- expect(
125
- fs.existsSync(
126
- path.resolve(getGlobalWranglerConfigPath(), "local-cert/cert.pem")
127
- )
128
- ).toBe(false);
129
- expect(std.out).toMatchInlineSnapshot(
130
- `"Generating new self-signed certificate..."`
131
- );
132
- expect(std.warn).toMatchInlineSnapshot(`
133
- "▲ [WARNING] Unable to cache generated self-signed certificate in test-xdg-config/local-cert.
134
-
135
- ERROR: Cannot write file
136
-
137
- "
138
- `);
139
- expect(std.err).toMatchInlineSnapshot(`""`);
140
- });
141
- });
142
-
143
- function mockStatSync(matcher: RegExp, stats: Partial<fs.Stats>) {
144
- const originalStatSync = jest.requireActual("node:fs").statSync;
145
- jest.spyOn(fs, "statSync").mockImplementation((statPath, options) => {
146
- return matcher.test(statPath.toString())
147
- ? (stats as fs.Stats)
148
- : originalStatSync(statPath, options);
149
- });
150
- }
151
-
152
- function mockWriteFileSyncThrow(matcher: RegExp) {
153
- const originalWriteFileSync = jest.requireActual("node:fs").writeFileSync;
154
- jest
155
- .spyOn(fs, "writeFileSync")
156
- .mockImplementation((filePath, data, options) => {
157
- if (matcher.test(filePath.toString())) {
158
- throw new Error("ERROR: Cannot write file");
159
- } else {
160
- return originalWriteFileSync(filePath, data, options);
161
- }
162
- });
163
- }
@@ -1,274 +0,0 @@
1
- import { getPackageManager } from "../package-manager";
2
- import { endEventLoop } from "./helpers/end-event-loop";
3
- import { mockConsoleMethods } from "./helpers/mock-console";
4
- import { runInTempDir } from "./helpers/run-in-tmp";
5
- import { runWrangler } from "./helpers/run-wrangler";
6
- import { writeWorkerSource } from "./helpers/write-worker-source";
7
- import writeWranglerToml from "./helpers/write-wrangler-toml";
8
- import type { PackageManager } from "../package-manager";
9
-
10
- describe("wrangler", () => {
11
- let mockPackageManager: PackageManager;
12
- runInTempDir();
13
-
14
- beforeEach(() => {
15
- mockPackageManager = {
16
- cwd: process.cwd(),
17
- // @ts-expect-error we're making a fake package manager here
18
- type: "mockpm",
19
- addDevDeps: jest.fn(),
20
- install: jest.fn(),
21
- };
22
- (getPackageManager as jest.Mock).mockResolvedValue(mockPackageManager);
23
- });
24
-
25
- const std = mockConsoleMethods();
26
-
27
- describe("no command", () => {
28
- it("should display a list of available commands", async () => {
29
- await runWrangler();
30
-
31
- expect(std.out).toMatchInlineSnapshot(`
32
- "wrangler
33
-
34
- Commands:
35
- wrangler docs [command] 📚 Open wrangler's docs in your browser
36
- wrangler init [name] 📥 Initialize a basic Worker project, including a wrangler.toml file
37
- wrangler generate [name] [template] ✨ Generate a new Worker project from an existing Worker template. See https://github.com/cloudflare/templates
38
- wrangler dev [script] 👂 Start a local server for developing your worker
39
- wrangler publish [script] 🆙 Publish your Worker to Cloudflare.
40
- wrangler delete [script] 🗑 Delete your Worker from Cloudflare.
41
- wrangler tail [worker] 🦚 Starts a log tailing session for a published Worker.
42
- wrangler secret 🤫 Generate a secret that can be referenced in a Worker
43
- wrangler secret:bulk <json> 🗄️ Bulk upload secrets for a Worker
44
- wrangler kv:namespace 🗂️ Interact with your Workers KV Namespaces
45
- wrangler kv:key 🔑 Individually manage Workers KV key-value pairs
46
- wrangler kv:bulk 💪 Interact with multiple Workers KV key-value pairs at once
47
- wrangler pages ⚡️ Configure Cloudflare Pages
48
- wrangler queues 🇶 Configure Workers Queues
49
- wrangler r2 📦 Interact with an R2 store
50
- wrangler dispatch-namespace 📦 Interact with a dispatch namespace
51
- wrangler d1 🗄 Interact with a D1 database
52
- wrangler pubsub 📮 Interact and manage Pub/Sub Brokers
53
- wrangler mtls-certificate 🪪 Manage certificates used for mTLS connections
54
- wrangler login 🔓 Login to Cloudflare
55
- wrangler logout 🚪 Logout from Cloudflare
56
- wrangler whoami 🕵️ Retrieve your user info and test your auth config
57
- wrangler types 📝 Generate types from bindings & module rules in config
58
- wrangler deployments 🚢 Displays the 10 most recent deployments for a worker
59
-
60
- Flags:
61
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
62
- -c, --config Path to .toml configuration file [string]
63
- -e, --env Environment to use for operations and .env files [string]
64
- -h, --help Show help [boolean]
65
- -v, --version Show version number [boolean]"
66
- `);
67
-
68
- expect(std.err).toMatchInlineSnapshot(`""`);
69
- });
70
- });
71
-
72
- describe("invalid command", () => {
73
- it("should display an error", async () => {
74
- await expect(
75
- runWrangler("invalid-command")
76
- ).rejects.toThrowErrorMatchingInlineSnapshot(
77
- `"Unknown argument: invalid-command"`
78
- );
79
-
80
- expect(std.out).toMatchInlineSnapshot(`
81
- "
82
- wrangler
83
-
84
- Commands:
85
- wrangler docs [command] 📚 Open wrangler's docs in your browser
86
- wrangler init [name] 📥 Initialize a basic Worker project, including a wrangler.toml file
87
- wrangler generate [name] [template] ✨ Generate a new Worker project from an existing Worker template. See https://github.com/cloudflare/templates
88
- wrangler dev [script] 👂 Start a local server for developing your worker
89
- wrangler publish [script] 🆙 Publish your Worker to Cloudflare.
90
- wrangler delete [script] 🗑 Delete your Worker from Cloudflare.
91
- wrangler tail [worker] 🦚 Starts a log tailing session for a published Worker.
92
- wrangler secret 🤫 Generate a secret that can be referenced in a Worker
93
- wrangler secret:bulk <json> 🗄️ Bulk upload secrets for a Worker
94
- wrangler kv:namespace 🗂️ Interact with your Workers KV Namespaces
95
- wrangler kv:key 🔑 Individually manage Workers KV key-value pairs
96
- wrangler kv:bulk 💪 Interact with multiple Workers KV key-value pairs at once
97
- wrangler pages ⚡️ Configure Cloudflare Pages
98
- wrangler queues 🇶 Configure Workers Queues
99
- wrangler r2 📦 Interact with an R2 store
100
- wrangler dispatch-namespace 📦 Interact with a dispatch namespace
101
- wrangler d1 🗄 Interact with a D1 database
102
- wrangler pubsub 📮 Interact and manage Pub/Sub Brokers
103
- wrangler mtls-certificate 🪪 Manage certificates used for mTLS connections
104
- wrangler login 🔓 Login to Cloudflare
105
- wrangler logout 🚪 Logout from Cloudflare
106
- wrangler whoami 🕵️ Retrieve your user info and test your auth config
107
- wrangler types 📝 Generate types from bindings & module rules in config
108
- wrangler deployments 🚢 Displays the 10 most recent deployments for a worker
109
-
110
- Flags:
111
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
112
- -c, --config Path to .toml configuration file [string]
113
- -e, --env Environment to use for operations and .env files [string]
114
- -h, --help Show help [boolean]
115
- -v, --version Show version number [boolean]"
116
- `);
117
- expect(std.err).toMatchInlineSnapshot(`
118
- "X [ERROR] Unknown argument: invalid-command
119
-
120
- "
121
- `);
122
- });
123
- });
124
-
125
- describe("preview", () => {
126
- it("should throw an error if the deprecated command is used with positional arguments", async () => {
127
- await expect(runWrangler("preview GET")).rejects
128
- .toThrowErrorMatchingInlineSnapshot(`
129
- "Deprecation:
130
- The \`wrangler preview\` command has been deprecated.
131
- Try using \`wrangler dev\` to to try out a worker during development.
132
- "
133
- `);
134
- await expect(runWrangler(`preview GET "SomeBody"`)).rejects
135
- .toThrowErrorMatchingInlineSnapshot(`
136
- "Deprecation:
137
- The \`wrangler preview\` command has been deprecated.
138
- Try using \`wrangler dev\` to to try out a worker during development.
139
- "
140
- `);
141
- });
142
- });
143
-
144
- describe("subcommand implicit help ran on incomplete command execution", () => {
145
- it("no subcommand for 'secret' should display a list of available subcommands", async () => {
146
- await runWrangler("secret");
147
- await endEventLoop();
148
- expect(std.out).toMatchInlineSnapshot(`
149
- "wrangler secret
150
-
151
- 🤫 Generate a secret that can be referenced in a Worker
152
-
153
- Commands:
154
- wrangler secret put <key> Create or update a secret variable for a Worker
155
- wrangler secret delete <key> Delete a secret variable from a Worker
156
- wrangler secret list List all secrets for a Worker
157
-
158
- Flags:
159
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
160
- -c, --config Path to .toml configuration file [string]
161
- -e, --env Environment to use for operations and .env files [string]
162
- -h, --help Show help [boolean]
163
- -v, --version Show version number [boolean]"
164
- `);
165
- });
166
-
167
- it("no subcommand 'kv:namespace' should display a list of available subcommands", async () => {
168
- await runWrangler("kv:namespace");
169
- await endEventLoop();
170
- expect(std.out).toMatchInlineSnapshot(`
171
- "wrangler kv:namespace
172
-
173
- 🗂️ Interact with your Workers KV Namespaces
174
-
175
- Commands:
176
- wrangler kv:namespace create <namespace> Create a new namespace
177
- wrangler kv:namespace list Outputs a list of all KV namespaces associated with your account id.
178
- wrangler kv:namespace delete Deletes a given namespace.
179
-
180
- Flags:
181
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
182
- -c, --config Path to .toml configuration file [string]
183
- -e, --env Environment to use for operations and .env files [string]
184
- -h, --help Show help [boolean]
185
- -v, --version Show version number [boolean]"
186
- `);
187
- });
188
-
189
- it("no subcommand 'kv:key' should display a list of available subcommands", async () => {
190
- await runWrangler("kv:key");
191
- await endEventLoop();
192
- expect(std.out).toMatchInlineSnapshot(`
193
- "wrangler kv:key
194
-
195
- 🔑 Individually manage Workers KV key-value pairs
196
-
197
- Commands:
198
- wrangler kv:key put <key> [value] Writes a single key/value pair to the given namespace.
199
- wrangler kv:key list Outputs a list of all keys in a given namespace.
200
- wrangler kv:key get <key> Reads a single value by key from the given namespace.
201
- wrangler kv:key delete <key> Removes a single key value pair from the given namespace.
202
-
203
- Flags:
204
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
205
- -c, --config Path to .toml configuration file [string]
206
- -e, --env Environment to use for operations and .env files [string]
207
- -h, --help Show help [boolean]
208
- -v, --version Show version number [boolean]"
209
- `);
210
- });
211
-
212
- it("no subcommand 'kv:bulk' should display a list of available subcommands", async () => {
213
- await runWrangler("kv:bulk");
214
- await endEventLoop();
215
- expect(std.out).toMatchInlineSnapshot(`
216
- "wrangler kv:bulk
217
-
218
- 💪 Interact with multiple Workers KV key-value pairs at once
219
-
220
- Commands:
221
- wrangler kv:bulk put <filename> Upload multiple key-value pairs to a namespace
222
- wrangler kv:bulk delete <filename> Delete multiple key-value pairs from a namespace
223
-
224
- Flags:
225
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
226
- -c, --config Path to .toml configuration file [string]
227
- -e, --env Environment to use for operations and .env files [string]
228
- -h, --help Show help [boolean]
229
- -v, --version Show version number [boolean]"
230
- `);
231
- });
232
-
233
- it("no subcommand 'r2' should display a list of available subcommands", async () => {
234
- await runWrangler("r2");
235
- await endEventLoop();
236
- expect(std.out).toMatchInlineSnapshot(`
237
- "wrangler r2
238
-
239
- 📦 Interact with an R2 store
240
-
241
- Commands:
242
- wrangler r2 object Manage R2 objects
243
- wrangler r2 bucket Manage R2 buckets
244
-
245
- Flags:
246
- -j, --experimental-json-config Experimental: Support wrangler.json [boolean]
247
- -c, --config Path to .toml configuration file [string]
248
- -e, --env Environment to use for operations and .env files [string]
249
- -h, --help Show help [boolean]
250
- -v, --version Show version number [boolean]"
251
- `);
252
- });
253
- });
254
-
255
- it("should print a deprecation message for 'build' and then try to run `publish --dry-run --outdir`", async () => {
256
- writeWranglerToml({
257
- main: "index.js",
258
- });
259
- writeWorkerSource();
260
- await runWrangler("build");
261
- await endEventLoop();
262
- expect(std.out).toMatchInlineSnapshot(`
263
- "▲ [WARNING] Deprecation: \`wrangler build\` has been deprecated.
264
-
265
- Please refer to https://developers.cloudflare.com/workers/wrangler/migration/deprecations/#build
266
- for more information.
267
- Attempting to run \`wrangler publish --dry-run --outdir=dist\` for you instead:
268
-
269
-
270
- Total Upload: xx KiB / gzip: xx KiB
271
- --dry-run: exiting now."
272
- `);
273
- });
274
- });