wrangler 0.0.0-e87ad068 → 0.0.0-e8997b87

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 (326) hide show
  1. package/README.md +11 -13
  2. package/bin/wrangler.js +13 -102
  3. package/config-schema.json +3052 -0
  4. package/package.json +197 -199
  5. package/templates/__tests__/tsconfig.json +1 -1
  6. package/templates/checked-fetch.js +11 -4
  7. package/templates/facade.d.ts +7 -2
  8. package/templates/gitignore +2 -4
  9. package/templates/init-tests/test-vitest-new-worker.js +1 -1
  10. package/templates/init-tests/test-vitest-new-worker.ts +1 -1
  11. package/templates/middleware/common.ts +9 -4
  12. package/templates/middleware/loader-modules.ts +94 -44
  13. package/templates/middleware/loader-sw.ts +6 -10
  14. package/templates/middleware/middleware-ensure-req-body-drained.ts +18 -0
  15. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  16. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  17. package/templates/modules-watch-stub.js +4 -0
  18. package/templates/new-worker-scheduled.ts +1 -1
  19. package/templates/new-worker.ts +1 -1
  20. package/templates/pages-dev-pipeline.ts +2 -1
  21. package/templates/pages-shim.ts +0 -3
  22. package/templates/pages-template-plugin.ts +14 -4
  23. package/templates/pages-template-worker.ts +12 -3
  24. package/templates/startDevWorker/InspectorProxyWorker.ts +664 -0
  25. package/templates/startDevWorker/ProxyWorker.ts +334 -0
  26. package/templates/tsconfig.init.json +1 -1
  27. package/templates/tsconfig.json +1 -1
  28. package/wrangler-dist/InspectorProxyWorker.js +464 -0
  29. package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
  30. package/wrangler-dist/ProxyWorker.js +240 -0
  31. package/wrangler-dist/ProxyWorker.js.map +6 -0
  32. package/wrangler-dist/cli.d.ts +24940 -306
  33. package/wrangler-dist/cli.js +173787 -118025
  34. package/wrangler-dist/wasm-sync.wasm +0 -0
  35. package/Cloudflare_CA.pem +0 -18
  36. package/import_meta_url.js +0 -3
  37. package/miniflare-config-stubs/.env.empty +0 -0
  38. package/miniflare-config-stubs/package.empty.json +0 -1
  39. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  40. package/miniflare-dist/index.mjs +0 -6442
  41. package/src/__tests__/access.test.ts +0 -25
  42. package/src/__tests__/api-dev.test.ts +0 -238
  43. package/src/__tests__/api-devregistry.test.ts +0 -121
  44. package/src/__tests__/api.test.ts +0 -102
  45. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  46. package/src/__tests__/config-cache.test.ts +0 -42
  47. package/src/__tests__/configuration.test.ts +0 -4727
  48. package/src/__tests__/constellation.test.ts +0 -371
  49. package/src/__tests__/d1/d1.test.ts +0 -82
  50. package/src/__tests__/d1/execute.test.ts +0 -66
  51. package/src/__tests__/d1/migrate.test.ts +0 -257
  52. package/src/__tests__/d1/splitter.test.ts +0 -255
  53. package/src/__tests__/delete.test.ts +0 -272
  54. package/src/__tests__/deployments.test.ts +0 -369
  55. package/src/__tests__/dev.test.tsx +0 -1617
  56. package/src/__tests__/generate.test.ts +0 -237
  57. package/src/__tests__/get-host-from-url.test.ts +0 -16
  58. package/src/__tests__/guess-worker-format.test.ts +0 -120
  59. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  60. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  61. package/src/__tests__/helpers/end-event-loop.ts +0 -6
  62. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  63. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  64. package/src/__tests__/helpers/mock-bin.ts +0 -36
  65. package/src/__tests__/helpers/mock-console.ts +0 -112
  66. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  67. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
  68. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  69. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  70. package/src/__tests__/helpers/mock-istty.ts +0 -74
  71. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  72. package/src/__tests__/helpers/mock-kv.ts +0 -46
  73. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  74. package/src/__tests__/helpers/mock-process.ts +0 -34
  75. package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
  76. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  77. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  78. package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
  79. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  80. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -160
  81. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  82. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  83. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  84. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  85. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  86. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  87. package/src/__tests__/helpers/msw/index.ts +0 -52
  88. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  89. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  90. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  91. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
  92. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  93. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  94. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  95. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -11
  96. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  97. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  98. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  99. package/src/__tests__/https-options.test.ts +0 -163
  100. package/src/__tests__/index.test.ts +0 -282
  101. package/src/__tests__/init.test.ts +0 -3302
  102. package/src/__tests__/jest.setup.ts +0 -179
  103. package/src/__tests__/kv.test.ts +0 -1799
  104. package/src/__tests__/logger.test.ts +0 -207
  105. package/src/__tests__/logout.test.ts +0 -47
  106. package/src/__tests__/metrics.test.ts +0 -493
  107. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  108. package/src/__tests__/middleware.test.ts +0 -816
  109. package/src/__tests__/mtls-certificates.test.ts +0 -589
  110. package/src/__tests__/package-manager.test.ts +0 -353
  111. package/src/__tests__/pages/deployment-list.test.ts +0 -80
  112. package/src/__tests__/pages/functions-build.test.ts +0 -529
  113. package/src/__tests__/pages/pages.test.ts +0 -81
  114. package/src/__tests__/pages/project-create.test.ts +0 -63
  115. package/src/__tests__/pages/project-list.test.ts +0 -110
  116. package/src/__tests__/pages/project-upload.test.ts +0 -500
  117. package/src/__tests__/pages/publish.test.ts +0 -2864
  118. package/src/__tests__/pages-deployment-tail.test.ts +0 -957
  119. package/src/__tests__/parse.test.ts +0 -436
  120. package/src/__tests__/paths.test.ts +0 -39
  121. package/src/__tests__/publish.test.ts +0 -8882
  122. package/src/__tests__/pubsub.test.ts +0 -496
  123. package/src/__tests__/queues.test.ts +0 -532
  124. package/src/__tests__/r2.test.ts +0 -374
  125. package/src/__tests__/route.test.ts +0 -45
  126. package/src/__tests__/secret.test.ts +0 -693
  127. package/src/__tests__/tail.test.ts +0 -1000
  128. package/src/__tests__/test-old-node-version.js +0 -31
  129. package/src/__tests__/traverse-module-graph.test.ts +0 -220
  130. package/src/__tests__/tsconfig-sanity.ts +0 -12
  131. package/src/__tests__/tsconfig.json +0 -8
  132. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  133. package/src/__tests__/type-generation.test.ts +0 -234
  134. package/src/__tests__/unstableDev.test.ts +0 -61
  135. package/src/__tests__/user.test.ts +0 -118
  136. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  137. package/src/__tests__/validate-dev-props.test.ts +0 -56
  138. package/src/__tests__/version.test.ts +0 -35
  139. package/src/__tests__/whoami.test.tsx +0 -172
  140. package/src/__tests__/worker-namespace.test.ts +0 -340
  141. package/src/abort.d.ts +0 -3
  142. package/src/api/dev.ts +0 -328
  143. package/src/api/index.ts +0 -11
  144. package/src/api/mtls-certificate.ts +0 -148
  145. package/src/api/pages/create-worker-bundle-contents.ts +0 -80
  146. package/src/api/pages/index.ts +0 -5
  147. package/src/api/pages/publish.tsx +0 -371
  148. package/src/bundle-reporter.ts +0 -68
  149. package/src/bundle.ts +0 -952
  150. package/src/cfetch/index.ts +0 -158
  151. package/src/cfetch/internal.ts +0 -263
  152. package/src/cli.ts +0 -28
  153. package/src/config/README.md +0 -107
  154. package/src/config/config.ts +0 -282
  155. package/src/config/diagnostics.ts +0 -80
  156. package/src/config/environment.ts +0 -659
  157. package/src/config/index.ts +0 -424
  158. package/src/config/validation-helpers.ts +0 -597
  159. package/src/config/validation.ts +0 -2524
  160. package/src/config-cache.ts +0 -85
  161. package/src/constellation/createProject.tsx +0 -51
  162. package/src/constellation/deleteProject.ts +0 -51
  163. package/src/constellation/deleteProjectModel.ts +0 -76
  164. package/src/constellation/index.ts +0 -75
  165. package/src/constellation/listCatalog.tsx +0 -35
  166. package/src/constellation/listModel.tsx +0 -49
  167. package/src/constellation/listProject.tsx +0 -28
  168. package/src/constellation/listRuntime.tsx +0 -28
  169. package/src/constellation/options.ts +0 -17
  170. package/src/constellation/types.ts +0 -17
  171. package/src/constellation/uploadModel.tsx +0 -84
  172. package/src/constellation/utils.ts +0 -90
  173. package/src/create-worker-preview.ts +0 -293
  174. package/src/create-worker-upload-form.ts +0 -384
  175. package/src/d1/backups.tsx +0 -219
  176. package/src/d1/constants.ts +0 -5
  177. package/src/d1/create.tsx +0 -102
  178. package/src/d1/delete.ts +0 -53
  179. package/src/d1/execute.tsx +0 -371
  180. package/src/d1/formatTimeAgo.ts +0 -14
  181. package/src/d1/index.ts +0 -100
  182. package/src/d1/list.tsx +0 -62
  183. package/src/d1/migrations/apply.tsx +0 -235
  184. package/src/d1/migrations/create.tsx +0 -79
  185. package/src/d1/migrations/helpers.ts +0 -171
  186. package/src/d1/migrations/index.ts +0 -3
  187. package/src/d1/migrations/list.tsx +0 -95
  188. package/src/d1/migrations/options.ts +0 -23
  189. package/src/d1/options.ts +0 -22
  190. package/src/d1/splitter.ts +0 -161
  191. package/src/d1/types.ts +0 -32
  192. package/src/d1/utils.ts +0 -49
  193. package/src/delete.ts +0 -100
  194. package/src/deployments.ts +0 -368
  195. package/src/deprecated/index.ts +0 -144
  196. package/src/dev/dev-vars.ts +0 -39
  197. package/src/dev/dev.tsx +0 -607
  198. package/src/dev/get-local-persistence-path.ts +0 -31
  199. package/src/dev/local.tsx +0 -952
  200. package/src/dev/remote.tsx +0 -636
  201. package/src/dev/start-server.ts +0 -558
  202. package/src/dev/use-esbuild.ts +0 -230
  203. package/src/dev/validate-dev-props.ts +0 -40
  204. package/src/dev-registry.ts +0 -213
  205. package/src/dev.tsx +0 -946
  206. package/src/dialogs.ts +0 -136
  207. package/src/dispatch-namespace.ts +0 -211
  208. package/src/docs/helpers.ts +0 -50
  209. package/src/docs/index.ts +0 -54
  210. package/src/durable.ts +0 -102
  211. package/src/entry.ts +0 -344
  212. package/src/environment-variables/factory.ts +0 -89
  213. package/src/environment-variables/misc-variables.ts +0 -30
  214. package/src/errors.ts +0 -11
  215. package/src/generate/index.ts +0 -303
  216. package/src/git-client.ts +0 -135
  217. package/src/global-wrangler-config-path.ts +0 -26
  218. package/src/https-options.ts +0 -127
  219. package/src/index.ts +0 -769
  220. package/src/init.ts +0 -1074
  221. package/src/inspect.ts +0 -883
  222. package/src/intl-polyfill.d.ts +0 -139
  223. package/src/is-ci.ts +0 -14
  224. package/src/is-interactive.ts +0 -16
  225. package/src/jest.d.ts +0 -4
  226. package/src/kv/helpers.ts +0 -433
  227. package/src/kv/index.ts +0 -594
  228. package/src/logger.ts +0 -123
  229. package/src/metrics/index.ts +0 -5
  230. package/src/metrics/metrics-config.ts +0 -239
  231. package/src/metrics/metrics-dispatcher.ts +0 -96
  232. package/src/metrics/metrics-usage-headers.ts +0 -24
  233. package/src/metrics/send-event.ts +0 -99
  234. package/src/miniflare-cli/README.md +0 -30
  235. package/src/miniflare-cli/assets.ts +0 -251
  236. package/src/miniflare-cli/index.ts +0 -210
  237. package/src/miniflare-cli/request-context.ts +0 -40
  238. package/src/miniflare-cli/tsconfig.json +0 -9
  239. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  240. package/src/miniflare-cli/types.ts +0 -11
  241. package/src/module-collection.ts +0 -333
  242. package/src/mtls-certificate/cli.ts +0 -155
  243. package/src/open-in-browser.ts +0 -17
  244. package/src/package-manager.ts +0 -219
  245. package/src/pages/build.ts +0 -423
  246. package/src/pages/buildFunctions.ts +0 -140
  247. package/src/pages/constants.ts +0 -18
  248. package/src/pages/deployment-tails.ts +0 -281
  249. package/src/pages/deployments.tsx +0 -84
  250. package/src/pages/dev.ts +0 -759
  251. package/src/pages/errors.ts +0 -67
  252. package/src/pages/functions/buildPlugin.ts +0 -114
  253. package/src/pages/functions/buildWorker.ts +0 -381
  254. package/src/pages/functions/filepath-routing.test.ts +0 -234
  255. package/src/pages/functions/filepath-routing.ts +0 -189
  256. package/src/pages/functions/identifiers.ts +0 -78
  257. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  258. package/src/pages/functions/routes-consolidation.ts +0 -73
  259. package/src/pages/functions/routes-transformation.test.ts +0 -282
  260. package/src/pages/functions/routes-transformation.ts +0 -115
  261. package/src/pages/functions/routes-validation.test.ts +0 -403
  262. package/src/pages/functions/routes-validation.ts +0 -202
  263. package/src/pages/functions/routes.ts +0 -151
  264. package/src/pages/functions/tsconfig.json +0 -8
  265. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  266. package/src/pages/functions.ts +0 -86
  267. package/src/pages/hash.ts +0 -13
  268. package/src/pages/index.ts +0 -102
  269. package/src/pages/projects.tsx +0 -159
  270. package/src/pages/prompt-select-project.tsx +0 -31
  271. package/src/pages/publish.tsx +0 -267
  272. package/src/pages/types.ts +0 -46
  273. package/src/pages/upload.tsx +0 -469
  274. package/src/pages/utils.ts +0 -23
  275. package/src/parse.ts +0 -308
  276. package/src/paths.ts +0 -71
  277. package/src/proxy.ts +0 -694
  278. package/src/publish/index.ts +0 -274
  279. package/src/publish/publish.ts +0 -1068
  280. package/src/pubsub/index.ts +0 -286
  281. package/src/pubsub/pubsub-commands.ts +0 -623
  282. package/src/queues/cli/commands/consumer/add.ts +0 -71
  283. package/src/queues/cli/commands/consumer/index.ts +0 -19
  284. package/src/queues/cli/commands/consumer/remove.ts +0 -31
  285. package/src/queues/cli/commands/create.ts +0 -25
  286. package/src/queues/cli/commands/delete.ts +0 -26
  287. package/src/queues/cli/commands/index.ts +0 -35
  288. package/src/queues/cli/commands/list.ts +0 -25
  289. package/src/queues/client.ts +0 -136
  290. package/src/queues/utils.ts +0 -18
  291. package/src/r2/constants.ts +0 -4
  292. package/src/r2/helpers.ts +0 -132
  293. package/src/r2/index.ts +0 -289
  294. package/src/routes.ts +0 -140
  295. package/src/secret/index.ts +0 -380
  296. package/src/selfsigned.d.ts +0 -29
  297. package/src/sites.ts +0 -484
  298. package/src/tail/createTail.ts +0 -415
  299. package/src/tail/filters.ts +0 -277
  300. package/src/tail/index.ts +0 -211
  301. package/src/tail/printing.ts +0 -134
  302. package/src/traverse-module-graph.ts +0 -54
  303. package/src/tsconfig-sanity.ts +0 -16
  304. package/src/type-generation.ts +0 -187
  305. package/src/update-check.ts +0 -19
  306. package/src/user/access.ts +0 -68
  307. package/src/user/auth-variables.ts +0 -113
  308. package/src/user/choose-account.tsx +0 -39
  309. package/src/user/generate-auth-url.ts +0 -33
  310. package/src/user/generate-random-state.ts +0 -16
  311. package/src/user/index.ts +0 -2
  312. package/src/user/user.ts +0 -1234
  313. package/src/utils/collectKeyValues.ts +0 -14
  314. package/src/utils/render.ts +0 -93
  315. package/src/whoami.ts +0 -135
  316. package/src/worker.ts +0 -300
  317. package/src/yargs-types.ts +0 -37
  318. package/src/zones.ts +0 -191
  319. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  320. package/templates/d1-beta-facade.js +0 -244
  321. package/templates/first-party-worker-module-facade.ts +0 -19
  322. package/templates/format-dev-errors.ts +0 -34
  323. package/templates/serve-static-assets.ts +0 -66
  324. package/templates/service-bindings-module-facade.js +0 -55
  325. package/templates/service-bindings-sw-facade.js +0 -42
  326. package/templates/tsconfig.tsbuildinfo +0 -1
@@ -1,333 +0,0 @@
1
- import crypto from "node:crypto";
2
- import { readFile } from "node:fs/promises";
3
- import path from "node:path";
4
- import chalk from "chalk";
5
- import globToRegExp from "glob-to-regexp";
6
- import { logger } from "./logger";
7
- import type { Config, ConfigModuleRuleType } from "./config";
8
- import type { CfModule, CfModuleType, CfScriptFormat } from "./worker";
9
- import type esbuild from "esbuild";
10
-
11
- function flipObject<
12
- K extends string | number | symbol,
13
- V extends string | number | symbol
14
- >(obj: Record<K, V>): Record<V, K> {
15
- return Object.fromEntries(Object.entries(obj).map(([k, v]) => [v, k]));
16
- }
17
-
18
- const RuleTypeToModuleType: Record<ConfigModuleRuleType, CfModuleType> = {
19
- ESModule: "esm",
20
- CommonJS: "commonjs",
21
- CompiledWasm: "compiled-wasm",
22
- Data: "buffer",
23
- Text: "text",
24
- };
25
-
26
- export const ModuleTypeToRuleType = flipObject(RuleTypeToModuleType);
27
-
28
- // This is a combination of an esbuild plugin and a mutable array
29
- // that we use to collect module references from source code.
30
- // There will be modules that _shouldn't_ be inlined directly into
31
- // the bundle. (eg. wasm modules, some text files, etc). We can include
32
- // those files as modules in the multi part worker form upload. This
33
- // plugin+array is used to collect references to these modules, reference
34
- // them correctly in the bundle, and add them to the form upload.
35
-
36
- export const DEFAULT_MODULE_RULES: Config["rules"] = [
37
- { type: "Text", globs: ["**/*.txt", "**/*.html"] },
38
- { type: "Data", globs: ["**/*.bin"] },
39
- { type: "CompiledWasm", globs: ["**/*.wasm", "**/*.wasm?module"] },
40
- ];
41
-
42
- export function parseRules(userRules: Config["rules"] = []) {
43
- const rules: Config["rules"] = [...userRules, ...DEFAULT_MODULE_RULES];
44
-
45
- const completedRuleLocations: Record<string, number> = {};
46
- let index = 0;
47
- const rulesToRemove: Config["rules"] = [];
48
- for (const rule of rules) {
49
- if (rule.type in completedRuleLocations) {
50
- if (rules[completedRuleLocations[rule.type]].fallthrough !== false) {
51
- if (index < userRules.length) {
52
- logger.warn(
53
- `The module rule at position ${index} (${JSON.stringify(
54
- rule
55
- )}) has the same type as a previous rule (at position ${
56
- completedRuleLocations[rule.type]
57
- }, ${JSON.stringify(
58
- rules[completedRuleLocations[rule.type]]
59
- )}). This rule will be ignored. To the previous rule, add \`fallthrough = true\` to allow this one to also be used, or \`fallthrough = false\` to silence this warning.`
60
- );
61
- } else {
62
- logger.warn(
63
- `The default module rule ${JSON.stringify(
64
- rule
65
- )} has the same type as a previous rule (at position ${
66
- completedRuleLocations[rule.type]
67
- }, ${JSON.stringify(
68
- rules[completedRuleLocations[rule.type]]
69
- )}). This rule will be ignored. To the previous rule, add \`fallthrough = true\` to allow the default one to also be used, or \`fallthrough = false\` to silence this warning.`
70
- );
71
- }
72
- }
73
-
74
- rulesToRemove.push(rule);
75
- }
76
- if (!(rule.type in completedRuleLocations) && rule.fallthrough !== true) {
77
- completedRuleLocations[rule.type] = index;
78
- }
79
- index++;
80
- }
81
-
82
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
83
- rulesToRemove.forEach((rule) => rules!.splice(rules!.indexOf(rule), 1));
84
-
85
- return { rules, removedRules: rulesToRemove };
86
- }
87
-
88
- export async function matchFiles(
89
- files: string[],
90
- relativeTo: string,
91
- {
92
- rules,
93
- removedRules,
94
- }: { rules: Config["rules"]; removedRules: Config["rules"] }
95
- ) {
96
- const modules: CfModule[] = [];
97
-
98
- // Deduplicate modules. This is usually a poorly specified `wrangler.toml` configuration, but duplicate modules will cause a crash at runtime
99
- const moduleNames = new Set<string>();
100
- for (const rule of rules) {
101
- for (const glob of rule.globs) {
102
- const regexp = globToRegExp(glob, {
103
- globstar: true,
104
- });
105
- const newModules = await Promise.all(
106
- files
107
- .filter((f) => regexp.test(f))
108
- .map(async (name) => {
109
- const filePath = name;
110
- const fileContent = await readFile(path.join(relativeTo, filePath));
111
-
112
- return {
113
- name: filePath,
114
- content: fileContent,
115
- type: RuleTypeToModuleType[rule.type],
116
- };
117
- })
118
- );
119
- for (const module of newModules) {
120
- if (!moduleNames.has(module.name)) {
121
- moduleNames.add(module.name);
122
- modules.push(module);
123
- } else {
124
- logger.warn(
125
- `Ignoring duplicate module: ${chalk.blue(
126
- module.name
127
- )} (${chalk.green(module.type ?? "")})`
128
- );
129
- }
130
- }
131
- }
132
- }
133
-
134
- // This is just a sanity check verifying that no files match rules that were removed
135
- for (const rule of removedRules) {
136
- for (const glob of rule.globs) {
137
- const regexp = globToRegExp(glob);
138
- for (const file of files) {
139
- if (regexp.test(file)) {
140
- throw new Error(
141
- `The file ${file} matched a module rule in your configuration (${JSON.stringify(
142
- rule
143
- )}), but was ignored because a previous rule with the same type was not marked as \`fallthrough = true\`.`
144
- );
145
- }
146
- }
147
- }
148
- }
149
- return modules;
150
- }
151
-
152
- export default function createModuleCollector(props: {
153
- format: CfScriptFormat;
154
- rules?: Config["rules"];
155
- // a collection of "legacy" style module references, which are just file names
156
- // we will eventually deprecate this functionality, hence the verbose greppable name
157
- wrangler1xlegacyModuleReferences: {
158
- rootDirectory: string;
159
- fileNames: Set<string>;
160
- };
161
- preserveFileNames?: boolean;
162
- }): {
163
- modules: CfModule[];
164
- plugin: esbuild.Plugin;
165
- } {
166
- const { rules, removedRules } = parseRules(props.rules);
167
-
168
- const modules: CfModule[] = [];
169
- return {
170
- modules,
171
- plugin: {
172
- name: "wrangler-module-collector",
173
- setup(build) {
174
- build.onStart(() => {
175
- // reset the module collection array
176
- modules.splice(0);
177
- });
178
-
179
- // ~ start legacy module specifier support ~
180
-
181
- // This section detects usage of "legacy" 1.x style module specifiers
182
- // and modifies them so they "work" in wrangler v2, but with a warning
183
-
184
- const rulesMatchers = rules.flatMap((rule) => {
185
- return rule.globs.map((glob) => {
186
- const regex = globToRegExp(glob);
187
- return {
188
- regex,
189
- rule,
190
- };
191
- });
192
- });
193
-
194
- if (props.wrangler1xlegacyModuleReferences.fileNames.size > 0) {
195
- build.onResolve(
196
- {
197
- filter: new RegExp(
198
- "^(" +
199
- [...props.wrangler1xlegacyModuleReferences.fileNames]
200
- .map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
201
- .join("|") +
202
- ")$"
203
- ),
204
- },
205
- async (args: esbuild.OnResolveArgs) => {
206
- if (
207
- args.kind !== "import-statement" &&
208
- args.kind !== "require-call"
209
- ) {
210
- return;
211
- }
212
- // In the future, this will simply throw an error
213
- logger.warn(
214
- `Deprecation: detected a legacy module import in "./${path.relative(
215
- process.cwd(),
216
- args.importer
217
- )}". This will stop working in the future. Replace references to "${
218
- args.path
219
- }" with "./${args.path}";`
220
- );
221
-
222
- // take the file and massage it to a
223
- // transportable/manageable format
224
- const filePath = path.join(
225
- props.wrangler1xlegacyModuleReferences.rootDirectory,
226
- args.path
227
- );
228
- const fileContent = await readFile(filePath);
229
- const fileHash = crypto
230
- .createHash("sha1")
231
- .update(fileContent)
232
- .digest("hex");
233
- const fileName = `./${fileHash}-${path.basename(args.path)}`;
234
-
235
- const { rule } =
236
- rulesMatchers.find(({ regex }) => regex.test(fileName)) || {};
237
- if (rule) {
238
- // add the module to the array
239
- modules.push({
240
- name: fileName,
241
- content: fileContent,
242
- type: RuleTypeToModuleType[rule.type],
243
- });
244
- return {
245
- path: fileName, // change the reference to the changed module
246
- external: props.format === "modules", // mark it as external in the bundle
247
- namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
248
- watchFiles: [filePath], // we also add the file to esbuild's watch list
249
- };
250
- }
251
- }
252
- );
253
- }
254
-
255
- // ~ end legacy module specifier support ~
256
-
257
- rules?.forEach((rule) => {
258
- if (rule.type === "ESModule" || rule.type === "CommonJS") return; // TODO: we should treat these as js files, and use the jsx loader
259
-
260
- rule.globs.forEach((glob) => {
261
- build.onResolve(
262
- { filter: globToRegExp(glob) },
263
- async (args: esbuild.OnResolveArgs) => {
264
- // take the file and massage it to a
265
- // transportable/manageable format
266
-
267
- const filePath = path.join(args.resolveDir, args.path);
268
- const fileContent = await readFile(filePath);
269
- const fileHash = crypto
270
- .createHash("sha1")
271
- .update(fileContent)
272
- .digest("hex");
273
- const fileName = props.preserveFileNames
274
- ? filePath
275
- : `./${fileHash}-${path.basename(args.path)}`;
276
-
277
- // add the module to the array
278
- modules.push({
279
- name: fileName,
280
- content: fileContent,
281
- type: RuleTypeToModuleType[rule.type],
282
- });
283
-
284
- return {
285
- path: fileName, // change the reference to the changed module
286
- external: props.format === "modules", // mark it as external in the bundle
287
- namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
288
- watchFiles: [filePath], // we also add the file to esbuild's watch list
289
- };
290
- }
291
- );
292
-
293
- if (props.format === "service-worker") {
294
- build.onLoad(
295
- { filter: globToRegExp(glob) },
296
- async (args: esbuild.OnLoadArgs) => {
297
- return {
298
- // We replace the the module with an identifier
299
- // that we'll separately add to the form upload
300
- // as part of [wasm_modules]/[text_blobs]/[data_blobs]. This identifier has to be a valid
301
- // JS identifier, so we replace all non alphanumeric characters
302
- // with an underscore.
303
- contents: `export default ${args.path.replace(
304
- /[^a-zA-Z0-9_$]/g,
305
- "_"
306
- )};`,
307
- };
308
- }
309
- );
310
- }
311
- });
312
- });
313
-
314
- removedRules.forEach((rule) => {
315
- rule.globs.forEach((glob) => {
316
- build.onResolve(
317
- { filter: globToRegExp(glob) },
318
- async (args: esbuild.OnResolveArgs) => {
319
- throw new Error(
320
- `The file ${
321
- args.path
322
- } matched a module rule in your configuration (${JSON.stringify(
323
- rule
324
- )}), but was ignored because a previous rule with the same type was not marked as \`fallthrough = true\`.`
325
- );
326
- }
327
- );
328
- });
329
- });
330
- },
331
- },
332
- };
333
- }
@@ -1,155 +0,0 @@
1
- import {
2
- uploadMTlsCertificateFromFs,
3
- listMTlsCertificates,
4
- deleteMTlsCertificate,
5
- getMTlsCertificate,
6
- getMTlsCertificateByName,
7
- type MTlsCertificateResponse,
8
- } from "../api/mtls-certificate";
9
- import { withConfig } from "../config";
10
- import { confirm } from "../dialogs";
11
- import { logger } from "../logger";
12
- import { requireAuth } from "../user";
13
- import type {
14
- CommonYargsOptions,
15
- CommonYargsArgv,
16
- StrictYargsOptionsToInterface,
17
- } from "../yargs-types";
18
- import type { BuilderCallback } from "yargs";
19
-
20
- function uploadMTlsCertificateOptions(yargs: CommonYargsArgv) {
21
- return yargs
22
- .option("cert", {
23
- describe:
24
- "The path to a certificate file (.pem) containing a chain of certificates to upload",
25
- type: "string",
26
- demandOption: true,
27
- })
28
- .option("key", {
29
- describe:
30
- "The path to a file containing the private key for your leaf certificate",
31
- type: "string",
32
- demandOption: true,
33
- })
34
- .option("name", {
35
- describe: "The name for the certificate",
36
- type: "string",
37
- });
38
- }
39
-
40
- const uploadMTlsCertificateHandler = withConfig<
41
- StrictYargsOptionsToInterface<typeof uploadMTlsCertificateOptions>
42
- >(async ({ config, cert, key, name }) => {
43
- const accountId = await requireAuth(config);
44
- logger.log(
45
- name
46
- ? `Uploading mTLS Certificate ${name}...`
47
- : `Uploading mTLS Certificate...`
48
- );
49
- const certResponse = await uploadMTlsCertificateFromFs(accountId, {
50
- certificateChainFilename: cert,
51
- privateKeyFilename: key,
52
- name: name,
53
- });
54
- const expiresOn = new Date(certResponse.expires_on).toLocaleDateString();
55
- logger.log(
56
- name
57
- ? `Success! Uploaded mTLS Certificate ${name}`
58
- : `Success! Uploaded mTLS Certificate`
59
- );
60
- logger.log(`ID: ${certResponse.id}`);
61
- logger.log(`Issuer: ${certResponse.issuer}`);
62
- logger.log(`Expires on ${expiresOn}`);
63
- });
64
-
65
- const listMTlsCertificatesHandler = withConfig(async ({ config }) => {
66
- const accountId = await requireAuth(config);
67
- const certificates = await listMTlsCertificates(accountId, {});
68
- for (const certificate of certificates) {
69
- logger.log(`ID: ${certificate.id}`);
70
- if (certificate.name) {
71
- logger.log(`Name: ${certificate.name}`);
72
- }
73
- logger.log(`Issuer: ${certificate.issuer}`);
74
- logger.log(
75
- `Created on: ${new Date(certificate.uploaded_on).toLocaleDateString()}`
76
- );
77
- logger.log(
78
- `Expires on: ${new Date(certificate.expires_on).toLocaleDateString()}`
79
- );
80
- logger.log("\n");
81
- }
82
- });
83
-
84
- function deleteMTlsCertificateOptions(yargs: CommonYargsArgv) {
85
- return yargs
86
- .option("id", {
87
- describe: "The id of the mTLS certificate to delete",
88
- type: "string",
89
- })
90
- .option("name", {
91
- describe: "The name of the mTLS certificate record to delete",
92
- type: "string",
93
- });
94
- }
95
-
96
- const deleteMTlsCertificateHandler = withConfig<
97
- StrictYargsOptionsToInterface<typeof deleteMTlsCertificateOptions>
98
- >(async ({ config, id, name }) => {
99
- const accountId = await requireAuth(config);
100
- if (id && name) {
101
- return logger.error(`Error: can't provide both --id and --name.`);
102
- } else if (!id && !name) {
103
- return logger.error(`Error: must provide --id or --name.`);
104
- }
105
- let certificate: MTlsCertificateResponse;
106
- if (id) {
107
- certificate = await getMTlsCertificate(accountId, id);
108
- } else {
109
- certificate = await getMTlsCertificateByName(accountId, name as string);
110
- }
111
-
112
- const response = await confirm(
113
- certificate.name
114
- ? `Are you sure you want to delete certificate ${certificate.id} (${certificate.name})?`
115
- : `Are you sure you want to delete certificate ${certificate.id}?`
116
- );
117
- if (!response) {
118
- logger.log("Not deleting");
119
- return;
120
- }
121
-
122
- await deleteMTlsCertificate(accountId, certificate.id);
123
-
124
- logger.log(
125
- certificate.name
126
- ? `Deleted certificate ${certificate.id} (${certificate.name}) successfully`
127
- : `Deleted certificate ${certificate.id} successfully`
128
- );
129
- });
130
-
131
- export const mTlsCertificateCommands: BuilderCallback<
132
- CommonYargsOptions,
133
- unknown
134
- > = (yargs) => {
135
- yargs.command(
136
- "upload",
137
- "Upload an mTLS certificate",
138
- uploadMTlsCertificateOptions,
139
- uploadMTlsCertificateHandler
140
- );
141
-
142
- yargs.command(
143
- "list",
144
- "List uploaded mTLS certificates",
145
- (a) => a,
146
- listMTlsCertificatesHandler
147
- );
148
-
149
- yargs.command(
150
- "delete",
151
- "Delete an mTLS certificate",
152
- deleteMTlsCertificateOptions,
153
- deleteMTlsCertificateHandler
154
- );
155
- };
@@ -1,17 +0,0 @@
1
- import open from "open";
2
- import { logger } from "./logger";
3
-
4
- /**
5
- * An extremely simple wrapper around the open command.
6
- * Specifically, it adds an 'error' event handler so that when this function
7
- * is called in environments where we can't open the browser (e.g. GitHub Codespaces,
8
- * StackBlitz, remote servers), it doesn't just crash the process.
9
- *
10
- * @param url the URL to point the browser at
11
- */
12
- export default async function openInBrowser(url: string): Promise<void> {
13
- const childProcess = await open(url);
14
- childProcess.on("error", () => {
15
- logger.warn("Failed to open");
16
- });
17
- }