wrangler 0.0.0-e6c71262 → 0.0.0-e6ddf8a7

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 +210 -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-shim.ts +0 -3
  20. package/templates/pages-template-plugin.ts +12 -2
  21. package/templates/pages-template-worker.ts +11 -2
  22. package/templates/tsconfig.json +1 -1
  23. package/wrangler-dist/cli.d.ts +264 -195
  24. package/wrangler-dist/cli.js +90041 -92345
  25. package/wrangler-dist/wasm-sync.wasm +0 -0
  26. package/import_meta_url.js +0 -3
  27. package/miniflare-config-stubs/.env.empty +0 -0
  28. package/miniflare-config-stubs/package.empty.json +0 -1
  29. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  30. package/miniflare-dist/index.mjs +0 -6442
  31. package/src/__tests__/access.test.ts +0 -25
  32. package/src/__tests__/api-dev.test.ts +0 -238
  33. package/src/__tests__/api-devregistry.test.ts +0 -121
  34. package/src/__tests__/api.test.ts +0 -102
  35. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  36. package/src/__tests__/config-cache.test.ts +0 -42
  37. package/src/__tests__/configuration.test.ts +0 -4671
  38. package/src/__tests__/constellation.test.ts +0 -371
  39. package/src/__tests__/d1/d1.test.ts +0 -82
  40. package/src/__tests__/d1/execute.test.ts +0 -66
  41. package/src/__tests__/d1/migrate.test.ts +0 -257
  42. package/src/__tests__/d1/splitter.test.ts +0 -255
  43. package/src/__tests__/delete.test.ts +0 -272
  44. package/src/__tests__/deployments.test.ts +0 -369
  45. package/src/__tests__/dev.test.tsx +0 -1617
  46. package/src/__tests__/generate.test.ts +0 -254
  47. package/src/__tests__/get-host-from-url.test.ts +0 -16
  48. package/src/__tests__/guess-worker-format.test.ts +0 -120
  49. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  50. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  51. package/src/__tests__/helpers/end-event-loop.ts +0 -6
  52. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  53. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  54. package/src/__tests__/helpers/mock-bin.ts +0 -36
  55. package/src/__tests__/helpers/mock-console.ts +0 -112
  56. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  57. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
  58. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  59. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  60. package/src/__tests__/helpers/mock-istty.ts +0 -74
  61. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  62. package/src/__tests__/helpers/mock-kv.ts +0 -46
  63. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  64. package/src/__tests__/helpers/mock-process.ts +0 -34
  65. package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
  66. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  67. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  68. package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
  69. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  70. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -160
  71. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  72. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  73. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  74. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  75. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  76. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  77. package/src/__tests__/helpers/msw/index.ts +0 -52
  78. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  79. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  80. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  81. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
  82. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  83. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  84. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  85. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -11
  86. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  87. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  88. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  89. package/src/__tests__/https-options.test.ts +0 -163
  90. package/src/__tests__/index.test.ts +0 -282
  91. package/src/__tests__/init.test.ts +0 -3419
  92. package/src/__tests__/jest.setup.ts +0 -179
  93. package/src/__tests__/kv.test.ts +0 -1799
  94. package/src/__tests__/logger.test.ts +0 -207
  95. package/src/__tests__/logout.test.ts +0 -47
  96. package/src/__tests__/metrics.test.ts +0 -493
  97. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  98. package/src/__tests__/middleware.test.ts +0 -816
  99. package/src/__tests__/mtls-certificates.test.ts +0 -589
  100. package/src/__tests__/package-manager.test.ts +0 -353
  101. package/src/__tests__/pages/deployment-list.test.ts +0 -80
  102. package/src/__tests__/pages/functions-build.test.ts +0 -528
  103. package/src/__tests__/pages/pages.test.ts +0 -81
  104. package/src/__tests__/pages/project-create.test.ts +0 -63
  105. package/src/__tests__/pages/project-list.test.ts +0 -110
  106. package/src/__tests__/pages/project-upload.test.ts +0 -500
  107. package/src/__tests__/pages/publish.test.ts +0 -2864
  108. package/src/__tests__/pages-deployment-tail.test.ts +0 -957
  109. package/src/__tests__/parse.test.ts +0 -436
  110. package/src/__tests__/paths.test.ts +0 -39
  111. package/src/__tests__/publish.test.ts +0 -8849
  112. package/src/__tests__/pubsub.test.ts +0 -496
  113. package/src/__tests__/queues.test.ts +0 -532
  114. package/src/__tests__/r2.test.ts +0 -374
  115. package/src/__tests__/route.test.ts +0 -45
  116. package/src/__tests__/secret.test.ts +0 -693
  117. package/src/__tests__/tail.test.ts +0 -989
  118. package/src/__tests__/test-old-node-version.js +0 -31
  119. package/src/__tests__/traverse-module-graph.test.ts +0 -220
  120. package/src/__tests__/tsconfig-sanity.ts +0 -12
  121. package/src/__tests__/tsconfig.json +0 -8
  122. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  123. package/src/__tests__/type-generation.test.ts +0 -234
  124. package/src/__tests__/unstableDev.test.ts +0 -61
  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 -321
  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 -79
  136. package/src/api/pages/index.ts +0 -5
  137. package/src/api/pages/publish.tsx +0 -371
  138. package/src/bundle-reporter.ts +0 -68
  139. package/src/bundle.ts +0 -929
  140. package/src/cfetch/index.ts +0 -158
  141. package/src/cfetch/internal.ts +0 -263
  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 -650
  147. package/src/config/index.ts +0 -424
  148. package/src/config/validation-helpers.ts +0 -597
  149. package/src/config/validation.ts +0 -2457
  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 -76
  154. package/src/constellation/index.ts +0 -75
  155. package/src/constellation/listCatalog.tsx +0 -35
  156. package/src/constellation/listModel.tsx +0 -49
  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 -84
  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 -380
  165. package/src/d1/backups.tsx +0 -219
  166. package/src/d1/constants.ts +0 -5
  167. package/src/d1/create.tsx +0 -102
  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 -605
  188. package/src/dev/get-local-persistence-path.ts +0 -31
  189. package/src/dev/local.tsx +0 -952
  190. package/src/dev/remote.tsx +0 -635
  191. package/src/dev/start-server.ts +0 -545
  192. package/src/dev/use-esbuild.ts +0 -215
  193. package/src/dev/validate-dev-props.ts +0 -40
  194. package/src/dev-registry.ts +0 -213
  195. package/src/dev.tsx +0 -937
  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 -344
  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 -304
  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 -769
  210. package/src/init.ts +0 -1123
  211. package/src/inspect.ts +0 -883
  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 -423
  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 -734
  241. package/src/pages/errors.ts +0 -67
  242. package/src/pages/functions/buildPlugin.ts +0 -114
  243. package/src/pages/functions/buildWorker.ts +0 -350
  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 -1067
  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 -379
  286. package/src/selfsigned.d.ts +0 -29
  287. package/src/sites.ts +0 -484
  288. package/src/tail/createTail.ts +0 -415
  289. package/src/tail/filters.ts +0 -277
  290. package/src/tail/index.ts +0 -211
  291. package/src/tail/printing.ts +0 -132
  292. package/src/traverse-module-graph.ts +0 -54
  293. package/src/tsconfig-sanity.ts +0 -16
  294. package/src/type-generation.ts +0 -187
  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 -294
  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,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
- }