wrangler 0.0.0-e2b7352 → 0.0.0-e305903a

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 (264) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +51 -14
  3. package/bin/wrangler.js +154 -31
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +6244 -21
  6. package/package.json +185 -141
  7. package/src/__tests__/api-dev.test.ts +209 -0
  8. package/src/__tests__/api-devregistry.test.js +56 -0
  9. package/src/__tests__/api.test.ts +80 -0
  10. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  11. package/src/__tests__/config-cache.test.ts +42 -0
  12. package/src/__tests__/configuration.test.ts +4122 -2810
  13. package/src/__tests__/dev.test.tsx +1341 -527
  14. package/src/__tests__/dialogs.test.tsx +40 -0
  15. package/src/__tests__/generate.test.ts +91 -0
  16. package/src/__tests__/guess-worker-format.test.ts +74 -57
  17. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  18. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  19. package/src/__tests__/helpers/mock-bin.ts +20 -20
  20. package/src/__tests__/helpers/mock-cfetch.ts +202 -93
  21. package/src/__tests__/helpers/mock-console.ts +68 -32
  22. package/src/__tests__/helpers/mock-dialogs.ts +121 -33
  23. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  24. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  25. package/src/__tests__/helpers/mock-istty.ts +74 -0
  26. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  27. package/src/__tests__/helpers/mock-kv.ts +26 -26
  28. package/src/__tests__/helpers/mock-oauth-flow.ts +252 -0
  29. package/src/__tests__/helpers/mock-process.ts +39 -0
  30. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  31. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  32. package/src/__tests__/helpers/msw/handlers/index.ts +13 -0
  33. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  34. package/src/__tests__/helpers/msw/handlers/oauth.ts +36 -0
  35. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  36. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  37. package/src/__tests__/helpers/msw/index.ts +4 -0
  38. package/src/__tests__/helpers/run-in-tmp.ts +28 -22
  39. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  40. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  41. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  42. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  43. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  44. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  45. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  46. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  47. package/src/__tests__/https-options.test.ts +144 -108
  48. package/src/__tests__/index.test.ts +233 -967
  49. package/src/__tests__/init.test.ts +2717 -0
  50. package/src/__tests__/jest.setup.ts +151 -34
  51. package/src/__tests__/kv.test.ts +1376 -1085
  52. package/src/__tests__/logger.test.ts +141 -0
  53. package/src/__tests__/metrics.test.ts +450 -0
  54. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  55. package/src/__tests__/middleware.test.ts +726 -0
  56. package/src/__tests__/package-manager.test.ts +312 -165
  57. package/src/__tests__/pages.test.ts +1990 -77
  58. package/src/__tests__/parse.test.ts +253 -245
  59. package/src/__tests__/paths.test.ts +39 -0
  60. package/src/__tests__/publish.test.ts +6989 -3411
  61. package/src/__tests__/pubsub.test.ts +367 -0
  62. package/src/__tests__/r2.test.ts +363 -190
  63. package/src/__tests__/route.test.ts +22 -22
  64. package/src/__tests__/secret.test.ts +626 -407
  65. package/src/__tests__/tail.test.ts +653 -516
  66. package/src/__tests__/test-old-node-version.js +31 -0
  67. package/src/__tests__/user.test.ts +155 -0
  68. package/src/__tests__/validate-dev-props.test.ts +56 -0
  69. package/src/__tests__/version.test.ts +35 -0
  70. package/src/__tests__/whoami.test.tsx +261 -88
  71. package/src/__tests__/worker-namespace.test.ts +319 -0
  72. package/src/abort.d.ts +3 -0
  73. package/src/api/dev.ts +206 -0
  74. package/src/api/index.ts +2 -0
  75. package/src/bundle-reporter.tsx +29 -0
  76. package/src/bundle.ts +723 -122
  77. package/src/cfetch/index.ts +83 -66
  78. package/src/cfetch/internal.ts +267 -92
  79. package/src/cli.ts +24 -14
  80. package/src/config/README.md +1 -1
  81. package/src/config/config.ts +236 -179
  82. package/src/config/diagnostics.ts +61 -61
  83. package/src/config/environment.ts +450 -316
  84. package/src/config/index.ts +259 -38
  85. package/src/config/validation-helpers.ts +385 -342
  86. package/src/config/validation.ts +1797 -1099
  87. package/src/config-cache.ts +85 -0
  88. package/src/create-worker-preview.ts +233 -124
  89. package/src/create-worker-upload-form.ts +285 -201
  90. package/src/d1/backups.tsx +212 -0
  91. package/src/d1/create.tsx +54 -0
  92. package/src/d1/delete.tsx +56 -0
  93. package/src/d1/execute.tsx +294 -0
  94. package/src/d1/formatTimeAgo.ts +14 -0
  95. package/src/d1/index.ts +75 -0
  96. package/src/d1/list.tsx +48 -0
  97. package/src/d1/options.ts +12 -0
  98. package/src/d1/types.tsx +14 -0
  99. package/src/d1/utils.ts +39 -0
  100. package/src/dev/dev-vars.ts +36 -0
  101. package/src/dev/dev.tsx +501 -328
  102. package/src/dev/get-local-persistence-path.tsx +31 -0
  103. package/src/dev/local.tsx +629 -211
  104. package/src/dev/remote.tsx +398 -188
  105. package/src/dev/start-server.ts +443 -0
  106. package/src/dev/use-esbuild.ts +175 -82
  107. package/src/dev/validate-dev-props.ts +31 -0
  108. package/src/dev-registry.tsx +190 -0
  109. package/src/dev.tsx +869 -0
  110. package/src/dialogs.tsx +138 -57
  111. package/src/dispatch-namespace.ts +206 -0
  112. package/src/durable.ts +102 -0
  113. package/src/entry.ts +260 -171
  114. package/src/environment-variables.ts +40 -23
  115. package/src/errors.ts +11 -0
  116. package/src/faye-websocket.d.ts +6 -0
  117. package/src/generate.ts +131 -0
  118. package/src/git-client.ts +42 -0
  119. package/src/global-wrangler-config-path.ts +26 -0
  120. package/src/https-options.ts +85 -80
  121. package/src/index.tsx +2295 -2315
  122. package/src/init.ts +967 -0
  123. package/src/inspect.ts +687 -557
  124. package/src/intl-polyfill.d.ts +123 -123
  125. package/src/is-ci.ts +14 -0
  126. package/src/is-interactive.ts +12 -0
  127. package/src/kv.ts +353 -242
  128. package/src/logger.ts +80 -0
  129. package/src/metrics/index.ts +5 -0
  130. package/src/metrics/metrics-config.ts +239 -0
  131. package/src/metrics/metrics-dispatcher.ts +96 -0
  132. package/src/metrics/metrics-usage-headers.ts +24 -0
  133. package/src/metrics/send-event.ts +93 -0
  134. package/src/miniflare-cli/assets.ts +215 -0
  135. package/src/miniflare-cli/index.ts +201 -30
  136. package/src/miniflare-cli/request-context.ts +40 -0
  137. package/src/module-collection.ts +213 -213
  138. package/src/open-in-browser.ts +8 -16
  139. package/src/package-manager.ts +183 -90
  140. package/src/pages/build.tsx +238 -0
  141. package/src/pages/constants.ts +16 -0
  142. package/src/pages/deployments.tsx +106 -0
  143. package/src/pages/dev.tsx +684 -0
  144. package/src/pages/errors.ts +66 -0
  145. package/src/pages/functions/buildPlugin.ts +110 -0
  146. package/src/pages/functions/buildWorker.ts +156 -0
  147. package/src/pages/functions/filepath-routing.test.ts +234 -0
  148. package/src/pages/functions/filepath-routing.ts +189 -0
  149. package/src/pages/functions/identifiers.ts +78 -0
  150. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  151. package/src/pages/functions/routes-consolidation.ts +73 -0
  152. package/src/pages/functions/routes-transformation.test.ts +282 -0
  153. package/src/pages/functions/routes-transformation.ts +115 -0
  154. package/src/pages/functions/routes-validation.test.ts +403 -0
  155. package/src/pages/functions/routes-validation.ts +202 -0
  156. package/src/pages/functions/routes.ts +151 -0
  157. package/src/pages/functions.tsx +82 -0
  158. package/src/pages/hash.tsx +13 -0
  159. package/src/pages/index.tsx +94 -0
  160. package/src/pages/projects.tsx +169 -0
  161. package/src/pages/publish.tsx +419 -0
  162. package/src/pages/types.ts +49 -0
  163. package/src/pages/upload.tsx +398 -0
  164. package/src/pages/utils.ts +12 -0
  165. package/src/parse.ts +224 -121
  166. package/src/paths.ts +53 -8
  167. package/src/preview.ts +31 -0
  168. package/src/proxy.ts +436 -370
  169. package/src/publish.ts +839 -324
  170. package/src/pubsub/index.ts +286 -0
  171. package/src/pubsub/pubsub-commands.tsx +623 -0
  172. package/src/r2.ts +100 -19
  173. package/src/selfsigned.d.ts +23 -23
  174. package/src/sites.tsx +281 -189
  175. package/src/tail/filters.ts +108 -110
  176. package/src/tail/index.ts +234 -218
  177. package/src/tail/printing.ts +92 -47
  178. package/src/update-check.ts +19 -0
  179. package/src/user/choose-account.tsx +69 -0
  180. package/src/user/env-vars.ts +46 -0
  181. package/src/user/generate-auth-url.ts +33 -0
  182. package/src/user/generate-random-state.ts +16 -0
  183. package/src/user/index.ts +3 -0
  184. package/src/user/user.tsx +1192 -0
  185. package/src/whoami.tsx +142 -42
  186. package/src/worker.ts +171 -100
  187. package/src/zones.ts +167 -0
  188. package/templates/checked-fetch.js +17 -0
  189. package/templates/d1-beta-facade.js +174 -0
  190. package/templates/experimental-local-cache-stubs.js +27 -0
  191. package/templates/first-party-worker-module-facade.ts +18 -0
  192. package/templates/format-dev-errors.ts +32 -0
  193. package/templates/gitignore +171 -0
  194. package/templates/init-tests/test-jest-new-worker.js +25 -0
  195. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  196. package/templates/middleware/common.ts +62 -0
  197. package/templates/middleware/loader-modules.ts +84 -0
  198. package/templates/middleware/loader-sw.ts +213 -0
  199. package/templates/middleware/middleware-pretty-error.ts +40 -0
  200. package/templates/middleware/middleware-scheduled.ts +15 -0
  201. package/templates/new-worker-scheduled.js +17 -0
  202. package/templates/new-worker-scheduled.ts +32 -0
  203. package/templates/new-worker.js +3 -3
  204. package/templates/new-worker.ts +18 -3
  205. package/templates/no-op-worker.js +10 -0
  206. package/templates/pages-dev-pipeline.ts +35 -0
  207. package/templates/pages-shim.ts +9 -0
  208. package/templates/pages-template-plugin.ts +167 -0
  209. package/templates/pages-template-worker.ts +172 -0
  210. package/templates/serve-static-assets.ts +63 -0
  211. package/templates/service-bindings-module-facade.js +54 -0
  212. package/templates/service-bindings-sw-facade.js +42 -0
  213. package/templates/tsconfig.json +95 -95
  214. package/wrangler-dist/cli.d.ts +841 -0
  215. package/wrangler-dist/cli.js +129492 -108210
  216. package/miniflare-dist/index.mjs.map +0 -7
  217. package/pages/functions/buildWorker.ts +0 -62
  218. package/pages/functions/filepath-routing.test.ts +0 -223
  219. package/pages/functions/filepath-routing.ts +0 -181
  220. package/pages/functions/identifiers.ts +0 -78
  221. package/pages/functions/routes.ts +0 -151
  222. package/pages/functions/template-worker.ts +0 -130
  223. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  224. package/src/__tests__/logout.test.ts +0 -52
  225. package/src/__tests__/sentry.test.ts +0 -146
  226. package/src/miniflare-cli/enum-keys.ts +0 -17
  227. package/src/pages.tsx +0 -1061
  228. package/src/reporting.ts +0 -131
  229. package/src/user.tsx +0 -1127
  230. package/templates/static-asset-facade.js +0 -47
  231. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  232. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  233. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  234. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  235. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  236. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  237. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  238. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  239. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  240. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  241. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  242. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  243. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  244. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  245. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  246. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  247. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  248. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  249. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  250. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  251. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  252. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  253. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  254. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  255. package/vendor/wrangler-mime/LICENSE +0 -21
  256. package/vendor/wrangler-mime/Mime.js +0 -97
  257. package/vendor/wrangler-mime/README.md +0 -187
  258. package/vendor/wrangler-mime/cli.js +0 -46
  259. package/vendor/wrangler-mime/index.js +0 -4
  260. package/vendor/wrangler-mime/lite.js +0 -4
  261. package/vendor/wrangler-mime/package.json +0 -52
  262. package/vendor/wrangler-mime/types/other.js +0 -1
  263. package/vendor/wrangler-mime/types/standard.js +0 -1
  264. package/wrangler-dist/cli.js.map +0 -7
@@ -4,14 +4,14 @@ import type { RawConfig } from "../../config";
4
4
 
5
5
  /** Write a mock wrangler.toml file to disk. */
6
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
- }),
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
14
 
15
- "utf-8"
16
- );
15
+ "utf-8"
16
+ );
17
17
  }
@@ -1,127 +1,163 @@
1
1
  import fs from "node:fs";
2
2
  import os from "node:os";
3
- import { resolve } from "node:path";
3
+ import path from "node:path";
4
+ import { getGlobalWranglerConfigPath } from "../global-wrangler-config-path";
4
5
  import { getHttpsOptions } from "../https-options";
5
6
  import { mockConsoleMethods } from "./helpers/mock-console";
6
7
  import { runInTempDir } from "./helpers/run-in-tmp";
7
8
 
8
9
  describe("getHttpsOptions()", () => {
9
- runInTempDir({ homedir: "./home" });
10
- const std = mockConsoleMethods();
10
+ runInTempDir();
11
+ const std = mockConsoleMethods();
11
12
 
12
- it("should use cached values if they have not expired", async () => {
13
- fs.mkdirSync(resolve(os.homedir(), ".wrangler/local-cert"), {
14
- recursive: true,
15
- });
16
- fs.writeFileSync(
17
- resolve(os.homedir(), ".wrangler/local-cert/key.pem"),
18
- "PRIVATE KEY"
19
- );
20
- fs.writeFileSync(
21
- resolve(os.homedir(), ".wrangler/local-cert/cert.pem"),
22
- "PUBLIC KEY"
23
- );
24
- const result = await getHttpsOptions();
25
- expect(result.key).toEqual("PRIVATE KEY");
26
- expect(result.cert).toEqual("PUBLIC KEY");
27
- expect(std.out).toMatchInlineSnapshot(`""`);
28
- expect(std.warn).toMatchInlineSnapshot(`""`);
29
- expect(std.err).toMatchInlineSnapshot(`""`);
30
- });
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
+ });
31
32
 
32
- it("should generate and cache new keys if none are cached", async () => {
33
- const result = await getHttpsOptions();
34
- const key = fs.readFileSync(
35
- resolve(os.homedir(), ".wrangler/local-cert/key.pem"),
36
- "utf8"
37
- );
38
- const cert = fs.readFileSync(
39
- resolve(os.homedir(), ".wrangler/local-cert/cert.pem"),
40
- "utf8"
41
- );
42
- expect(result.key).toEqual(key);
43
- expect(result.cert).toEqual(cert);
44
- expect(std.out).toMatchInlineSnapshot(
45
- `"Generating new self-signed certificate..."`
46
- );
47
- expect(std.warn).toMatchInlineSnapshot(`""`);
48
- expect(std.err).toMatchInlineSnapshot(`""`);
49
- });
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
+ });
50
51
 
51
- it("should generate and cache new keys if cached files have expired", async () => {
52
- fs.mkdirSync(resolve(os.homedir(), ".wrangler/local-cert"), {
53
- recursive: true,
54
- });
55
- const ORIGINAL_KEY = "EXPIRED PRIVATE KEY";
56
- const ORIGINAL_CERT = "EXPIRED PUBLIC KEY";
57
- fs.writeFileSync(
58
- resolve(os.homedir(), ".wrangler/local-cert/key.pem"),
59
- ORIGINAL_KEY
60
- );
61
- fs.writeFileSync(
62
- resolve(os.homedir(), ".wrangler/local-cert/cert.pem"),
63
- ORIGINAL_CERT
64
- );
65
- mockStatSync(/\.pem$/, { mtimeMs: new Date(2000).valueOf() });
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() });
66
67
 
67
- const result = await getHttpsOptions();
68
- const key = fs.readFileSync(
69
- resolve(os.homedir(), ".wrangler/local-cert/key.pem"),
70
- "utf8"
71
- );
72
- const cert = fs.readFileSync(
73
- resolve(os.homedir(), ".wrangler/local-cert/cert.pem"),
74
- "utf8"
75
- );
76
- expect(key).not.toEqual(ORIGINAL_KEY);
77
- expect(cert).not.toEqual(ORIGINAL_CERT);
78
- expect(result.key).toEqual(key);
79
- expect(result.cert).toEqual(cert);
80
- expect(std.out).toMatchInlineSnapshot(
81
- `"Generating new self-signed certificate..."`
82
- );
83
- expect(std.warn).toMatchInlineSnapshot(`""`);
84
- expect(std.err).toMatchInlineSnapshot(`""`);
85
- });
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
+ });
86
87
 
87
- it("should warn if not able to write to the cache", async () => {
88
- mockWriteFileSyncThrow(/\.pem$/);
89
- await getHttpsOptions();
90
- expect(
91
- fs.existsSync(resolve(os.homedir(), ".wrangler/local-cert/key.pem"))
92
- ).toBe(false);
93
- expect(
94
- fs.existsSync(resolve(os.homedir(), ".wrangler/local-cert/cert.pem"))
95
- ).toBe(false);
96
- expect(std.out).toMatchInlineSnapshot(
97
- `"Generating new self-signed certificate..."`
98
- );
99
- expect(std.warn).toMatchInlineSnapshot(`
100
- "Unable to cache generated self-signed certificate in home/.wrangler/local-cert.
101
- ERROR: Cannot write file"
102
- `);
103
- expect(std.err).toMatchInlineSnapshot(`""`);
104
- });
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
+ });
105
141
  });
106
142
 
107
143
  function mockStatSync(matcher: RegExp, stats: Partial<fs.Stats>) {
108
- const originalStatSync = jest.requireActual("node:fs").statSync;
109
- jest.spyOn(fs, "statSync").mockImplementation((statPath, options) => {
110
- return matcher.test(statPath.toString())
111
- ? (stats as fs.Stats)
112
- : originalStatSync(statPath, options);
113
- });
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
+ });
114
150
  }
115
151
 
116
152
  function mockWriteFileSyncThrow(matcher: RegExp) {
117
- const originalWriteFileSync = jest.requireActual("node:fs").writeFileSync;
118
- jest
119
- .spyOn(fs, "writeFileSync")
120
- .mockImplementation((filePath, data, options) => {
121
- if (matcher.test(filePath.toString())) {
122
- throw new Error("ERROR: Cannot write file");
123
- } else {
124
- return originalWriteFileSync(filePath, data, options);
125
- }
126
- });
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
+ });
127
163
  }