wrangler 0.0.0-e464fcdb → 0.0.0-e4aff81a

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 (316) hide show
  1. package/README.md +10 -12
  2. package/bin/wrangler.js +13 -74
  3. package/package.json +211 -199
  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/middleware/common.ts +9 -4
  8. package/templates/middleware/loader-modules.ts +64 -11
  9. package/templates/middleware/loader-sw.ts +2 -7
  10. package/templates/middleware/middleware-d1-beta.d.ts +3 -0
  11. package/templates/middleware/middleware-miniflare3-json-error.ts +1 -0
  12. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  13. package/templates/middleware/middleware-multiworker-dev.ts +68 -0
  14. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  15. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  16. package/templates/modules-watch-stub.js +4 -0
  17. package/templates/new-worker-scheduled.ts +1 -1
  18. package/templates/new-worker.ts +1 -1
  19. package/templates/pages-dev-util.ts +4 -1
  20. package/templates/pages-shim.ts +0 -3
  21. package/templates/pages-template-plugin.ts +12 -2
  22. package/templates/pages-template-worker.ts +11 -2
  23. package/templates/tsconfig.json +1 -1
  24. package/wrangler-dist/cli.d.ts +293 -195
  25. package/wrangler-dist/cli.js +100095 -102156
  26. package/wrangler-dist/wasm-sync.wasm +0 -0
  27. package/import_meta_url.js +0 -3
  28. package/miniflare-config-stubs/.env.empty +0 -0
  29. package/miniflare-config-stubs/package.empty.json +0 -1
  30. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  31. package/miniflare-dist/index.mjs +0 -6442
  32. package/src/__tests__/access.test.ts +0 -25
  33. package/src/__tests__/api-dev.test.ts +0 -238
  34. package/src/__tests__/api-devregistry.test.ts +0 -121
  35. package/src/__tests__/api.test.ts +0 -102
  36. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  37. package/src/__tests__/config-cache.test.ts +0 -42
  38. package/src/__tests__/configuration.test.ts +0 -4509
  39. package/src/__tests__/constellation.test.ts +0 -371
  40. package/src/__tests__/d1/d1.test.ts +0 -82
  41. package/src/__tests__/d1/execute.test.ts +0 -66
  42. package/src/__tests__/d1/migrate.test.ts +0 -257
  43. package/src/__tests__/d1/splitter.test.ts +0 -255
  44. package/src/__tests__/delete.test.ts +0 -272
  45. package/src/__tests__/deployments.test.ts +0 -369
  46. package/src/__tests__/dev.test.tsx +0 -1617
  47. package/src/__tests__/generate.test.ts +0 -237
  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 -112
  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 -160
  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 -52
  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 -11
  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 -282
  92. package/src/__tests__/init.test.ts +0 -3196
  93. package/src/__tests__/jest.setup.ts +0 -179
  94. package/src/__tests__/kv.test.ts +0 -1799
  95. package/src/__tests__/logger.test.ts +0 -207
  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 -816
  100. package/src/__tests__/mtls-certificates.test.ts +0 -589
  101. package/src/__tests__/package-manager.test.ts +0 -353
  102. package/src/__tests__/pages/deployment-list.test.ts +0 -80
  103. package/src/__tests__/pages/functions-build.test.ts +0 -452
  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 -110
  107. package/src/__tests__/pages/project-upload.test.ts +0 -500
  108. package/src/__tests__/pages/publish.test.ts +0 -2864
  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 -8849
  113. package/src/__tests__/pubsub.test.ts +0 -496
  114. package/src/__tests__/queues.test.ts +0 -532
  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__/traverse-module-graph.test.ts +0 -220
  121. package/src/__tests__/tsconfig-sanity.ts +0 -12
  122. package/src/__tests__/tsconfig.json +0 -8
  123. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  124. package/src/__tests__/type-generation.test.ts +0 -234
  125. package/src/__tests__/user.test.ts +0 -118
  126. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  127. package/src/__tests__/validate-dev-props.test.ts +0 -56
  128. package/src/__tests__/version.test.ts +0 -35
  129. package/src/__tests__/whoami.test.tsx +0 -172
  130. package/src/__tests__/worker-namespace.test.ts +0 -340
  131. package/src/abort.d.ts +0 -3
  132. package/src/api/dev.ts +0 -316
  133. package/src/api/index.ts +0 -11
  134. package/src/api/mtls-certificate.ts +0 -148
  135. package/src/api/pages/create-worker-bundle-contents.ts +0 -76
  136. package/src/api/pages/index.ts +0 -5
  137. package/src/api/pages/publish.tsx +0 -355
  138. package/src/bundle-reporter.ts +0 -68
  139. package/src/bundle.ts +0 -908
  140. package/src/cfetch/index.ts +0 -158
  141. package/src/cfetch/internal.ts +0 -258
  142. package/src/cli.ts +0 -28
  143. package/src/config/README.md +0 -107
  144. package/src/config/config.ts +0 -282
  145. package/src/config/diagnostics.ts +0 -80
  146. package/src/config/environment.ts +0 -618
  147. package/src/config/index.ts +0 -403
  148. package/src/config/validation-helpers.ts +0 -597
  149. package/src/config/validation.ts +0 -2342
  150. package/src/config-cache.ts +0 -85
  151. package/src/constellation/createProject.tsx +0 -51
  152. package/src/constellation/deleteProject.ts +0 -51
  153. package/src/constellation/deleteProjectModel.ts +0 -68
  154. package/src/constellation/index.ts +0 -75
  155. package/src/constellation/listCatalog.tsx +0 -35
  156. package/src/constellation/listModel.tsx +0 -41
  157. package/src/constellation/listProject.tsx +0 -28
  158. package/src/constellation/listRuntime.tsx +0 -28
  159. package/src/constellation/options.ts +0 -17
  160. package/src/constellation/types.ts +0 -17
  161. package/src/constellation/uploadModel.tsx +0 -64
  162. package/src/constellation/utils.ts +0 -90
  163. package/src/create-worker-preview.ts +0 -293
  164. package/src/create-worker-upload-form.ts +0 -359
  165. package/src/d1/backups.tsx +0 -219
  166. package/src/d1/constants.ts +0 -6
  167. package/src/d1/create.tsx +0 -103
  168. package/src/d1/delete.ts +0 -53
  169. package/src/d1/execute.tsx +0 -371
  170. package/src/d1/formatTimeAgo.ts +0 -14
  171. package/src/d1/index.ts +0 -100
  172. package/src/d1/list.tsx +0 -62
  173. package/src/d1/migrations/apply.tsx +0 -235
  174. package/src/d1/migrations/create.tsx +0 -79
  175. package/src/d1/migrations/helpers.ts +0 -171
  176. package/src/d1/migrations/index.ts +0 -3
  177. package/src/d1/migrations/list.tsx +0 -95
  178. package/src/d1/migrations/options.ts +0 -23
  179. package/src/d1/options.ts +0 -22
  180. package/src/d1/splitter.ts +0 -161
  181. package/src/d1/types.ts +0 -32
  182. package/src/d1/utils.ts +0 -49
  183. package/src/delete.ts +0 -100
  184. package/src/deployments.ts +0 -368
  185. package/src/deprecated/index.ts +0 -144
  186. package/src/dev/dev-vars.ts +0 -39
  187. package/src/dev/dev.tsx +0 -600
  188. package/src/dev/get-local-persistence-path.ts +0 -31
  189. package/src/dev/local.tsx +0 -948
  190. package/src/dev/remote.tsx +0 -632
  191. package/src/dev/start-server.ts +0 -534
  192. package/src/dev/use-esbuild.ts +0 -203
  193. package/src/dev/validate-dev-props.ts +0 -40
  194. package/src/dev-registry.ts +0 -202
  195. package/src/dev.tsx +0 -929
  196. package/src/dialogs.ts +0 -136
  197. package/src/dispatch-namespace.ts +0 -211
  198. package/src/docs/helpers.ts +0 -50
  199. package/src/docs/index.ts +0 -54
  200. package/src/durable.ts +0 -102
  201. package/src/entry.ts +0 -337
  202. package/src/environment-variables/factory.ts +0 -89
  203. package/src/environment-variables/misc-variables.ts +0 -30
  204. package/src/errors.ts +0 -11
  205. package/src/generate/index.ts +0 -298
  206. package/src/git-client.ts +0 -135
  207. package/src/global-wrangler-config-path.ts +0 -26
  208. package/src/https-options.ts +0 -127
  209. package/src/index.ts +0 -768
  210. package/src/init.ts +0 -1032
  211. package/src/inspect.ts +0 -782
  212. package/src/intl-polyfill.d.ts +0 -139
  213. package/src/is-ci.ts +0 -14
  214. package/src/is-interactive.ts +0 -16
  215. package/src/jest.d.ts +0 -4
  216. package/src/kv/helpers.ts +0 -433
  217. package/src/kv/index.ts +0 -594
  218. package/src/logger.ts +0 -123
  219. package/src/metrics/index.ts +0 -5
  220. package/src/metrics/metrics-config.ts +0 -239
  221. package/src/metrics/metrics-dispatcher.ts +0 -96
  222. package/src/metrics/metrics-usage-headers.ts +0 -24
  223. package/src/metrics/send-event.ts +0 -99
  224. package/src/miniflare-cli/README.md +0 -30
  225. package/src/miniflare-cli/assets.ts +0 -251
  226. package/src/miniflare-cli/index.ts +0 -210
  227. package/src/miniflare-cli/request-context.ts +0 -40
  228. package/src/miniflare-cli/tsconfig.json +0 -9
  229. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  230. package/src/miniflare-cli/types.ts +0 -11
  231. package/src/module-collection.ts +0 -333
  232. package/src/mtls-certificate/cli.ts +0 -155
  233. package/src/open-in-browser.ts +0 -17
  234. package/src/package-manager.ts +0 -219
  235. package/src/pages/build.ts +0 -410
  236. package/src/pages/buildFunctions.ts +0 -140
  237. package/src/pages/constants.ts +0 -18
  238. package/src/pages/deployment-tails.ts +0 -281
  239. package/src/pages/deployments.tsx +0 -84
  240. package/src/pages/dev.ts +0 -716
  241. package/src/pages/errors.ts +0 -67
  242. package/src/pages/functions/buildPlugin.ts +0 -113
  243. package/src/pages/functions/buildWorker.ts +0 -291
  244. package/src/pages/functions/filepath-routing.test.ts +0 -234
  245. package/src/pages/functions/filepath-routing.ts +0 -189
  246. package/src/pages/functions/identifiers.ts +0 -78
  247. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  248. package/src/pages/functions/routes-consolidation.ts +0 -73
  249. package/src/pages/functions/routes-transformation.test.ts +0 -282
  250. package/src/pages/functions/routes-transformation.ts +0 -115
  251. package/src/pages/functions/routes-validation.test.ts +0 -403
  252. package/src/pages/functions/routes-validation.ts +0 -202
  253. package/src/pages/functions/routes.ts +0 -151
  254. package/src/pages/functions/tsconfig.json +0 -8
  255. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  256. package/src/pages/functions.ts +0 -86
  257. package/src/pages/hash.ts +0 -13
  258. package/src/pages/index.ts +0 -102
  259. package/src/pages/projects.tsx +0 -159
  260. package/src/pages/prompt-select-project.tsx +0 -31
  261. package/src/pages/publish.tsx +0 -267
  262. package/src/pages/types.ts +0 -46
  263. package/src/pages/upload.tsx +0 -469
  264. package/src/pages/utils.ts +0 -23
  265. package/src/parse.ts +0 -308
  266. package/src/paths.ts +0 -71
  267. package/src/proxy.ts +0 -694
  268. package/src/publish/index.ts +0 -274
  269. package/src/publish/publish.ts +0 -1060
  270. package/src/pubsub/index.ts +0 -286
  271. package/src/pubsub/pubsub-commands.ts +0 -623
  272. package/src/queues/cli/commands/consumer/add.ts +0 -71
  273. package/src/queues/cli/commands/consumer/index.ts +0 -19
  274. package/src/queues/cli/commands/consumer/remove.ts +0 -31
  275. package/src/queues/cli/commands/create.ts +0 -25
  276. package/src/queues/cli/commands/delete.ts +0 -26
  277. package/src/queues/cli/commands/index.ts +0 -35
  278. package/src/queues/cli/commands/list.ts +0 -25
  279. package/src/queues/client.ts +0 -136
  280. package/src/queues/utils.ts +0 -18
  281. package/src/r2/constants.ts +0 -4
  282. package/src/r2/helpers.ts +0 -132
  283. package/src/r2/index.ts +0 -289
  284. package/src/routes.ts +0 -140
  285. package/src/secret/index.ts +0 -376
  286. package/src/selfsigned.d.ts +0 -29
  287. package/src/sites.ts +0 -484
  288. package/src/tail/createTail.ts +0 -406
  289. package/src/tail/filters.ts +0 -277
  290. package/src/tail/index.ts +0 -211
  291. package/src/tail/printing.ts +0 -122
  292. package/src/traverse-module-graph.ts +0 -53
  293. package/src/tsconfig-sanity.ts +0 -16
  294. package/src/type-generation.ts +0 -181
  295. package/src/update-check.ts +0 -19
  296. package/src/user/access.ts +0 -68
  297. package/src/user/auth-variables.ts +0 -113
  298. package/src/user/choose-account.tsx +0 -39
  299. package/src/user/generate-auth-url.ts +0 -33
  300. package/src/user/generate-random-state.ts +0 -16
  301. package/src/user/index.ts +0 -2
  302. package/src/user/user.ts +0 -1234
  303. package/src/utils/collectKeyValues.ts +0 -14
  304. package/src/utils/render.ts +0 -93
  305. package/src/whoami.ts +0 -135
  306. package/src/worker.ts +0 -274
  307. package/src/yargs-types.ts +0 -37
  308. package/src/zones.ts +0 -191
  309. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  310. package/templates/d1-beta-facade.js +0 -244
  311. package/templates/first-party-worker-module-facade.ts +0 -19
  312. package/templates/format-dev-errors.ts +0 -34
  313. package/templates/serve-static-assets.ts +0 -66
  314. package/templates/service-bindings-module-facade.js +0 -55
  315. package/templates/service-bindings-sw-facade.js +0 -42
  316. package/templates/tsconfig.tsbuildinfo +0 -1
@@ -1,234 +0,0 @@
1
- import * as fs from "fs";
2
- import * as TOML from "@iarna/toml";
3
- import { mockConsoleMethods } from "./helpers/mock-console";
4
- import { runInTempDir } from "./helpers/run-in-tmp";
5
- import { runWrangler } from "./helpers/run-wrangler";
6
- import type { Config } from "../config";
7
-
8
- const bindingsConfigMock: Partial<Config> = {
9
- kv_namespaces: [{ binding: "TEST_KV_NAMESPACE", id: "1234" }],
10
- vars: {
11
- SOMETHING: "asdasdfasdf",
12
- ANOTHER: "thing",
13
- OBJECT_VAR: {
14
- enterprise: "1701-D",
15
- activeDuty: true,
16
- captian: "Picard",
17
- }, // We can assume the objects will be stringified
18
- },
19
- queues: {
20
- producers: [
21
- {
22
- binding: "TEST_QUEUE_BINDING",
23
- queue: "TEST_QUEUE",
24
- },
25
- ],
26
- consumers: [
27
- {
28
- queue: "my-queue",
29
- max_batch_size: 10,
30
- max_batch_timeout: 1,
31
- max_retries: 3,
32
- },
33
- ],
34
- },
35
- durable_objects: {
36
- bindings: [
37
- { name: "DURABLE_TEST1", class_name: "Durability1" },
38
- { name: "DURABLE_TEST2", class_name: "Durability2" },
39
- ],
40
- },
41
- r2_buckets: [
42
- {
43
- binding: "R2_BUCKET_BINDING",
44
- bucket_name: "R2BUCKET_NAME_TEST",
45
- },
46
- ],
47
- d1_databases: [
48
- {
49
- binding: "D1_TESTING_SOMETHING",
50
- database_name: "D1_BINDING",
51
- database_id: "1234",
52
- },
53
- ],
54
- services: [{ binding: "SERVICE_BINDING", service: "SERVICE_NAME" }],
55
- analytics_engine_datasets: [
56
- {
57
- binding: "AE_DATASET_BINDING",
58
- dataset: "AE_DATASET_TEST",
59
- },
60
- ],
61
- dispatch_namespaces: [
62
- { binding: "NAMESPACE_BINDING", namespace: "NAMESPACE_ID" },
63
- ],
64
- logfwdr: {
65
- schema: "LOGFWDER_SCHEMA",
66
- bindings: [{ name: "LOGFWDR_BINDING", destination: "LOGFWDR_DESTINATION" }],
67
- },
68
- data_blobs: {
69
- SOME_DATA_BLOB1: "SOME_DATA_BLOB1.bin",
70
- SOME_DATA_BLOB2: "SOME_DATA_BLOB2.bin",
71
- },
72
- text_blobs: {
73
- SOME_TEXT_BLOB1: "SOME_TEXT_BLOB1.txt",
74
- SOME_TEXT_BLOB2: "SOME_TEXT_BLOB2.txt",
75
- },
76
- wasm_modules: { MODULE1: "module1.wasm", MODULE2: "module2.wasm" },
77
- unsafe: {
78
- bindings: [{ name: "testing_unsafe", type: "plain_text" }],
79
- metadata: { some_key: "some_value" },
80
- },
81
- rules: [
82
- {
83
- type: "Text",
84
- globs: ["**/*.txt"],
85
- fallthrough: true,
86
- },
87
- {
88
- type: "Data",
89
- globs: ["**/*.webp"],
90
- fallthrough: true,
91
- },
92
- { type: "CompiledWasm", globs: ["**/*.wasm"], fallthrough: true },
93
- ],
94
- };
95
-
96
- describe("generateTypes()", () => {
97
- const std = mockConsoleMethods();
98
- runInTempDir();
99
-
100
- it("should log the interface type generated and declare modules", async () => {
101
- fs.writeFileSync("./index.ts", "export default { async fetch () {} };");
102
- fs.writeFileSync(
103
- "./wrangler.toml",
104
- TOML.stringify({
105
- compatibility_date: "2022-01-12",
106
- name: "test-name",
107
- main: "./index.ts",
108
- ...bindingsConfigMock,
109
- unsafe: bindingsConfigMock.unsafe ?? {},
110
- } as unknown as TOML.JsonMap),
111
- "utf-8"
112
- );
113
-
114
- await runWrangler("types");
115
- expect(std.out).toMatchInlineSnapshot(`
116
- "interface Env {
117
- TEST_KV_NAMESPACE: KVNamespace;
118
- SOMETHING: \\"asdasdfasdf\\";
119
- ANOTHER: \\"thing\\";
120
- OBJECT_VAR: {\\"enterprise\\":\\"1701-D\\",\\"activeDuty\\":true,\\"captian\\":\\"Picard\\"};
121
- DURABLE_TEST1: DurableObjectNamespace;
122
- DURABLE_TEST2: DurableObjectNamespace;
123
- R2_BUCKET_BINDING: R2Bucket;
124
- D1_TESTING_SOMETHING: D1Database;
125
- SERVICE_BINDING: Fetcher;
126
- AE_DATASET_BINDING: AnalyticsEngineDataset;
127
- NAMESPACE_BINDING: any;
128
- LOGFWDR_SCHEMA: any;
129
- SOME_DATA_BLOB1: ArrayBuffer;
130
- SOME_DATA_BLOB2: ArrayBuffer;
131
- SOME_TEXT_BLOB1: string;
132
- SOME_TEXT_BLOB2: string;
133
- testing_unsafe: any;
134
- TEST_QUEUE_BINDING: Queue;
135
- }
136
- declare module \\"*.txt\\" {
137
- const value: string;
138
- export default value;
139
- }
140
- declare module \\"*.webp\\" {
141
- const value: ArrayBuffer;
142
- export default value;
143
- }
144
- declare module \\"*.wasm\\" {
145
- const value: WebAssembly.Module;
146
- export default value;
147
- }"
148
- `);
149
- });
150
-
151
- it("should create a DTS file at the location that the command is executed from", async () => {
152
- fs.writeFileSync("./index.ts", "export default { async fetch () {} };");
153
- fs.writeFileSync(
154
- "./wrangler.toml",
155
- TOML.stringify({
156
- compatibility_date: "2022-01-12",
157
- name: "test-name",
158
- main: "./index.ts",
159
- vars: bindingsConfigMock.vars,
160
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
161
- } as any),
162
- "utf-8"
163
- );
164
- await runWrangler("types");
165
- expect(fs.existsSync("./worker-configuration.d.ts")).toBe(true);
166
- });
167
-
168
- it("should not create DTS file if there is nothing in the config to generate types from", async () => {
169
- fs.writeFileSync("./index.ts", "export default { async fetch () {} };");
170
- fs.writeFileSync(
171
- "./wrangler.toml",
172
- TOML.stringify({
173
- compatibility_date: "2022-01-12",
174
- name: "test-name",
175
- main: "./index.ts",
176
- }),
177
- "utf-8"
178
- );
179
-
180
- await runWrangler("types");
181
- expect(fs.existsSync("./worker-configuration.d.ts")).toBe(false);
182
- expect(std.out).toMatchInlineSnapshot(`""`);
183
- });
184
-
185
- it("should create a DTS file at the location that the command is executed from", async () => {
186
- fs.writeFileSync(
187
- "./worker-configuration.d.ts",
188
- "NOT THE CONTENTS OF THE GENERATED FILE"
189
- );
190
- fs.writeFileSync("./index.ts", "export default { async fetch () {} };");
191
- fs.writeFileSync(
192
- "./wrangler.toml",
193
- TOML.stringify({
194
- compatibility_date: "2022-01-12",
195
- name: "test-name",
196
- main: "./index.ts",
197
- vars: bindingsConfigMock.vars,
198
- } as TOML.JsonMap),
199
- "utf-8"
200
- );
201
-
202
- await expect(runWrangler("types")).rejects.toMatchInlineSnapshot(
203
- `[Error: A non-wrangler worker-configuration.d.ts already exists, please rename and try again.]`
204
- );
205
- expect(fs.existsSync("./worker-configuration.d.ts")).toBe(true);
206
- });
207
-
208
- it("should log the declare global type generated and declare modules", async () => {
209
- fs.writeFileSync(
210
- "./index.ts",
211
- `addEventListener('fetch', event => { event.respondWith(handleRequest(event.request));
212
- }); async function handleRequest(request) { return new Response('Hello worker!', {headers: { 'content-type': 'text/plain' },});}`
213
- );
214
- fs.writeFileSync(
215
- "./wrangler.toml",
216
- TOML.stringify({
217
- compatibility_date: "2022-01-12",
218
- name: "test-name",
219
- main: "./index.ts",
220
- unsafe: bindingsConfigMock.unsafe ?? {},
221
- } as TOML.JsonMap),
222
- "utf-8"
223
- );
224
-
225
- await runWrangler("types");
226
- expect(std.out).toMatchInlineSnapshot(`
227
- "export {};
228
- declare global {
229
- const testing_unsafe: any;
230
- }
231
- "
232
- `);
233
- });
234
- });
@@ -1,118 +0,0 @@
1
- import { rest } from "msw";
2
- import { CI } from "../is-ci";
3
- import {
4
- loginOrRefreshIfRequired,
5
- readAuthConfigFile,
6
- requireAuth,
7
- writeAuthConfigFile,
8
- } from "../user";
9
- import { mockConsoleMethods } from "./helpers/mock-console";
10
- import { useMockIsTTY } from "./helpers/mock-istty";
11
- import {
12
- mockExchangeRefreshTokenForAccessToken,
13
- mockOAuthFlow,
14
- } from "./helpers/mock-oauth-flow";
15
- import {
16
- msw,
17
- mswSuccessOauthHandlers,
18
- mswSuccessUserHandlers,
19
- } from "./helpers/msw";
20
- import { runInTempDir } from "./helpers/run-in-tmp";
21
- import { runWrangler } from "./helpers/run-wrangler";
22
- import type { Config } from "../config";
23
- import type { UserAuthConfig } from "../user";
24
-
25
- describe("User", () => {
26
- let isCISpy: jest.SpyInstance;
27
- runInTempDir();
28
- const std = mockConsoleMethods();
29
- // TODO: Implement these two mocks with MSW
30
- const { mockOAuthServerCallback } = mockOAuthFlow();
31
- const { setIsTTY } = useMockIsTTY();
32
-
33
- beforeEach(() => {
34
- msw.use(...mswSuccessOauthHandlers, ...mswSuccessUserHandlers);
35
- isCISpy = jest.spyOn(CI, "isCI").mockReturnValue(false);
36
- });
37
-
38
- describe("login", () => {
39
- it("should login a user when `wrangler login` is run", async () => {
40
- mockOAuthServerCallback("success");
41
-
42
- let counter = 0;
43
- msw.use(
44
- rest.post("*/oauth2/token", async (_, response, context) => {
45
- counter += 1;
46
-
47
- return response.once(
48
- context.json({
49
- access_token: "test-access-token",
50
- expires_in: 100000,
51
- refresh_token: "test-refresh-token",
52
- scope: "account:read",
53
- })
54
- );
55
- })
56
- );
57
-
58
- await runWrangler("login");
59
-
60
- expect(counter).toBe(1);
61
- expect(std.out).toMatchInlineSnapshot(`
62
- "Attempting to login via OAuth...
63
- Opening a link in your default browser: https://dash.cloudflare.com/oauth2/auth?response_type=code&client_id=54d11594-84e4-41aa-b438-e81b8fa78ee7&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&scope=account%3Aread%20user%3Aread%20workers%3Awrite%20workers_kv%3Awrite%20workers_routes%3Awrite%20workers_scripts%3Awrite%20workers_tail%3Aread%20d1%3Awrite%20pages%3Awrite%20zone%3Aread%20ssl_certs%3Awrite%20constellation%3Awrite%20offline_access&state=MOCK_STATE_PARAM&code_challenge=MOCK_CODE_CHALLENGE&code_challenge_method=S256
64
- Successfully logged in."
65
- `);
66
- expect(readAuthConfigFile()).toEqual<UserAuthConfig>({
67
- api_token: undefined,
68
- oauth_token: "test-access-token",
69
- refresh_token: "test-refresh-token",
70
- expiration_time: expect.any(String),
71
- scopes: ["account:read"],
72
- });
73
- });
74
- });
75
-
76
- it("should handle errors for failed token refresh in a non-interactive environment", async () => {
77
- setIsTTY(false);
78
- writeAuthConfigFile({
79
- oauth_token: "hunter2",
80
- refresh_token: "Order 66",
81
- });
82
- mockExchangeRefreshTokenForAccessToken({ respondWith: "refreshError" });
83
-
84
- // Handles the requireAuth error throw from failed login that is unhandled due to directly calling it here
85
- await expect(
86
- requireAuth({} as Config)
87
- ).rejects.toThrowErrorMatchingInlineSnapshot(
88
- `"In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN environment variable for wrangler to work. Please go to https://developers.cloudflare.com/fundamentals/api/get-started/create-token/ for instructions on how to create an api token, and assign its value to CLOUDFLARE_API_TOKEN."`
89
- );
90
- });
91
-
92
- it("should confirm no error message when refresh is successful", async () => {
93
- setIsTTY(false);
94
- writeAuthConfigFile({
95
- oauth_token: "hunter2",
96
- refresh_token: "Order 66",
97
- });
98
-
99
- // Handles the requireAuth error throw from failed login that is unhandled due to directly calling it here
100
- await expect(requireAuth({} as Config)).rejects.toThrowError();
101
- expect(std.err).toContain("");
102
- });
103
-
104
- it("should revert to non-interactive mode if in CI", async () => {
105
- isCISpy.mockReturnValue(true);
106
- await expect(loginOrRefreshIfRequired()).resolves.toEqual(false);
107
- });
108
-
109
- it("should revert to non-interactive mode if isTTY throws an error", async () => {
110
- setIsTTY({
111
- stdin() {
112
- throw new Error("stdin is not tty");
113
- },
114
- stdout: true,
115
- });
116
- await expect(loginOrRefreshIfRequired()).resolves.toEqual(false);
117
- });
118
- });
@@ -1,47 +0,0 @@
1
- import { collectKeyValues } from "../utils/collectKeyValues";
2
-
3
- describe("collectKeyValues()", () => {
4
- it("should return an empty object when passed undefined", () => {
5
- expect(collectKeyValues(undefined)).toEqual({});
6
- });
7
-
8
- it("should return an empty object when passed an empty array", () => {
9
- expect(collectKeyValues([])).toEqual({});
10
- });
11
-
12
- it("should parse a key:value string with no value by returning an empty string for the value", () => {
13
- expect(collectKeyValues(["some-string-with-no-colon"])).toEqual({
14
- "some-string-with-no-colon": "",
15
- });
16
- });
17
-
18
- it("should return an object with a single key/value pair when passed an array with a single string", () => {
19
- expect(collectKeyValues(["some-key:some-value"])).toEqual({
20
- "some-key": "some-value",
21
- });
22
- });
23
-
24
- it("should return an object with multiple key/value pairs when passed an array with multiple strings", () => {
25
- expect(
26
- collectKeyValues([
27
- "some-key:some-value",
28
- "some-other-key:some-other-value",
29
- ])
30
- ).toEqual({
31
- "some-key": "some-value",
32
- "some-other-key": "some-other-value",
33
- });
34
- });
35
-
36
- it("should return an object with multiple key/value pairs when passed an array with multiple strings with multiple colons", () => {
37
- expect(
38
- collectKeyValues([
39
- "some-key:https://some-value.com",
40
- "some-other-key:https://some-other-value.com",
41
- ])
42
- ).toEqual({
43
- "some-key": "https://some-value.com",
44
- "some-other-key": "https://some-other-value.com",
45
- });
46
- });
47
- });
@@ -1,56 +0,0 @@
1
- import { validateDevProps } from "../dev/validate-dev-props";
2
- import type { DevProps } from "../dev/dev";
3
-
4
- describe("validateDevProps", () => {
5
- it("should throw if the user tries to use the service-worker format with an `assets` directory", () => {
6
- const props = {
7
- isWorkersSite: false,
8
- assetPaths: ["assets"],
9
- entry: { format: "service-worker" },
10
- bindings: {},
11
- };
12
-
13
- expect(() => validateDevProps(props as unknown as DevProps)).toThrowError(
14
- "You cannot use the service-worker format with an `assets` directory yet. For information on how to migrate to the module-worker format, see: https://developers.cloudflare.com/workers/learning/migrating-to-module-workers/"
15
- );
16
- });
17
-
18
- it("should throw if the user tries to configure [wasm_modules] with an ES module worker", () => {
19
- const props = {
20
- isWorkersSite: false,
21
- assetPaths: [],
22
- entry: { format: "modules" },
23
- bindings: { wasm_modules: true },
24
- };
25
-
26
- expect(() => validateDevProps(props as unknown as DevProps)).toThrowError(
27
- "You cannot configure [wasm_modules] with an ES module worker. Instead, import the .wasm module directly in your code"
28
- );
29
- });
30
-
31
- it("should throw if the user tries to configure [text_blobs] with an ES module worker", () => {
32
- const props = {
33
- isWorkersSite: false,
34
- assetPaths: [],
35
- entry: { format: "modules" },
36
- bindings: { text_blobs: true },
37
- };
38
-
39
- expect(() => validateDevProps(props as unknown as DevProps)).toThrowError(
40
- "You cannot configure [text_blobs] with an ES module worker. Instead, import the file directly in your code, and optionally configure `[rules]` in your wrangler.toml"
41
- );
42
- });
43
-
44
- it("should throw if the user tries to configure [data_blobs] with an ES module worker", () => {
45
- const props = {
46
- isWorkersSite: false,
47
- assetPaths: [],
48
- entry: { format: "modules" },
49
- bindings: { data_blobs: true },
50
- };
51
-
52
- expect(() => validateDevProps(props as unknown as DevProps)).toThrowError(
53
- "You cannot configure [data_blobs] with an ES module worker. Instead, import the file directly in your code, and optionally configure `[rules]` in your wrangler.toml"
54
- );
55
- });
56
- });
@@ -1,35 +0,0 @@
1
- import { version } from "./../../package.json";
2
- import { mockConsoleMethods } from "./helpers/mock-console";
3
- import { useMockIsTTY } from "./helpers/mock-istty";
4
- import { runWrangler } from "./helpers/run-wrangler";
5
-
6
- describe("version", () => {
7
- const std = mockConsoleMethods();
8
- const { setIsTTY } = useMockIsTTY();
9
-
10
- // We cannot test output of version banner,
11
- // as it is disabled in jest environments
12
-
13
- // it("should output version banner", async () => {
14
- // await runWrangler("-v");
15
- // expect(std.out).toMatchInlineSnapshot(`
16
- // " ⛅️ wrangler 2.0.22
17
- // --------------------"
18
- // `);
19
- // });
20
-
21
- it("should output current version if !isTTY calling -v", async () => {
22
- setIsTTY(false);
23
-
24
- await runWrangler("-v");
25
- expect(std.out).toMatch(version);
26
- });
27
-
28
- // This run separately as command handling is different
29
- it("should output current version if !isTTY calling --version", async () => {
30
- setIsTTY(false);
31
-
32
- await runWrangler("--version");
33
- expect(std.out).toMatch(version);
34
- });
35
- });
@@ -1,172 +0,0 @@
1
- import { rest } from "msw";
2
- import { writeAuthConfigFile } from "../user";
3
- import { getUserInfo } from "../whoami";
4
- import { mockConsoleMethods } from "./helpers/mock-console";
5
- import { useMockIsTTY } from "./helpers/mock-istty";
6
- import {
7
- createFetchResult,
8
- msw,
9
- mswSuccessOauthHandlers,
10
- mswSuccessUserHandlers,
11
- } from "./helpers/msw";
12
- import { runInTempDir } from "./helpers/run-in-tmp";
13
-
14
- describe("getUserInfo()", () => {
15
- const ENV_COPY = process.env;
16
-
17
- runInTempDir();
18
- const std = mockConsoleMethods();
19
- const { setIsTTY } = useMockIsTTY();
20
-
21
- beforeEach(() => {
22
- msw.use(...mswSuccessOauthHandlers, ...mswSuccessUserHandlers);
23
- setIsTTY(true);
24
- });
25
-
26
- afterEach(() => {
27
- process.env = ENV_COPY;
28
- });
29
-
30
- it("should return undefined if there is no config file", async () => {
31
- const userInfo = await getUserInfo();
32
- expect(userInfo).toBeUndefined();
33
- });
34
-
35
- it("should return undefined if there is an empty config file", async () => {
36
- writeAuthConfigFile({});
37
- const userInfo = await getUserInfo();
38
- expect(userInfo).toBeUndefined();
39
- });
40
-
41
- it("should return undefined for email if the user settings API request fails with 9109", async () => {
42
- process.env = {
43
- CLOUDFLARE_API_TOKEN: "123456789",
44
- };
45
- msw.use(
46
- rest.get("*/user", (_, res, ctx) => {
47
- return res.once(
48
- ctx.json(
49
- createFetchResult({}, false, [
50
- {
51
- code: 9109,
52
- message: "Uauthorized to access requested resource",
53
- },
54
- ])
55
- )
56
- );
57
- }),
58
- rest.get("*/accounts", (request, res, ctx) => {
59
- const headersObject = request.headers.all();
60
- delete headersObject["user-agent"];
61
-
62
- expect(headersObject).toMatchInlineSnapshot(`
63
- Object {
64
- "accept": "*/*",
65
- "accept-encoding": "gzip,deflate",
66
- "authorization": "Bearer 123456789",
67
- "connection": "close",
68
- "host": "api.cloudflare.com",
69
- }
70
- `);
71
- return res.once(ctx.json(createFetchResult([])));
72
- })
73
- );
74
- const userInfo = await getUserInfo();
75
- expect(userInfo?.email).toBeUndefined();
76
- });
77
- it("should say it's using an API token when one is set", async () => {
78
- process.env = {
79
- CLOUDFLARE_API_TOKEN: "123456789",
80
- };
81
-
82
- const userInfo = await getUserInfo();
83
- expect(userInfo).toEqual({
84
- authType: "API Token",
85
- apiToken: "123456789",
86
- email: "user@example.com",
87
- accounts: [
88
- { name: "Account One", id: "account-1" },
89
- { name: "Account Two", id: "account-2" },
90
- { name: "Account Three", id: "account-3" },
91
- ],
92
- });
93
- });
94
-
95
- it("should say it's using a Global API Key when one is set", async () => {
96
- process.env = {
97
- CLOUDFLARE_API_KEY: "123456789",
98
- CLOUDFLARE_EMAIL: "user@example.com",
99
- };
100
-
101
- const userInfo = await getUserInfo();
102
- expect(userInfo).toEqual({
103
- authType: "Global API Key",
104
- apiToken: "123456789",
105
- email: "user@example.com",
106
- accounts: [
107
- { name: "Account One", id: "account-1" },
108
- { name: "Account Two", id: "account-2" },
109
- { name: "Account Three", id: "account-3" },
110
- ],
111
- });
112
- });
113
-
114
- it("should use a Global API Key in preference to an API token", async () => {
115
- process.env = {
116
- CLOUDFLARE_API_KEY: "123456789",
117
- CLOUDFLARE_EMAIL: "user@example.com",
118
- CLOUDFLARE_API_TOKEN: "123456789",
119
- };
120
-
121
- const userInfo = await getUserInfo();
122
- expect(userInfo).toEqual({
123
- authType: "Global API Key",
124
- apiToken: "123456789",
125
- email: "user@example.com",
126
- accounts: [
127
- { name: "Account One", id: "account-1" },
128
- { name: "Account Two", id: "account-2" },
129
- { name: "Account Three", id: "account-3" },
130
- ],
131
- });
132
- });
133
-
134
- it("should return undefined only a Global API Key, but not Email, is set", async () => {
135
- process.env = {
136
- CLOUDFLARE_API_KEY: "123456789",
137
- };
138
- const userInfo = await getUserInfo();
139
- expect(userInfo).toEqual(undefined);
140
- });
141
-
142
- it("should return the user's email and accounts if authenticated via config token", async () => {
143
- writeAuthConfigFile({ oauth_token: "some-oauth-token" });
144
- const userInfo = await getUserInfo();
145
-
146
- expect(userInfo).toEqual({
147
- authType: "OAuth Token",
148
- apiToken: "some-oauth-token",
149
- email: "user@example.com",
150
- accounts: [
151
- { name: "Account One", id: "account-1" },
152
- { name: "Account Two", id: "account-2" },
153
- { name: "Account Three", id: "account-3" },
154
- ],
155
- });
156
- });
157
-
158
- it("should display a warning message if the config file contains a legacy api_token field", async () => {
159
- writeAuthConfigFile({ api_token: "API_TOKEN" });
160
- await getUserInfo();
161
-
162
- expect(std.warn).toMatchInlineSnapshot(`
163
- "▲ [WARNING] It looks like you have used Wrangler v1's \`config\` command to login with an API token.
164
-
165
- This is no longer supported in the current version of Wrangler.
166
- If you wish to authenticate via an API token then please set the \`CLOUDFLARE_API_TOKEN\`
167
- environment variable.
168
-
169
- "
170
- `);
171
- });
172
- });