wrangler 0.0.0-e6e1daba → 0.0.0-e70806f1

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 (310) hide show
  1. package/README.md +11 -13
  2. package/bin/wrangler.js +14 -103
  3. package/config-schema.json +2947 -0
  4. package/package.json +194 -194
  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 +0 -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-miniflare3-json-error.ts +17 -5
  16. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  17. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  18. package/templates/modules-watch-stub.js +4 -0
  19. package/templates/new-worker-scheduled.ts +1 -1
  20. package/templates/new-worker.ts +1 -1
  21. package/templates/pages-dev-pipeline.ts +2 -1
  22. package/templates/pages-dev-util.ts +4 -1
  23. package/templates/pages-shim.ts +0 -3
  24. package/templates/pages-template-plugin.ts +14 -4
  25. package/templates/pages-template-worker.ts +12 -3
  26. package/templates/startDevWorker/InspectorProxyWorker.ts +664 -0
  27. package/templates/startDevWorker/ProxyWorker.ts +334 -0
  28. package/templates/tsconfig.init.json +1 -2
  29. package/templates/tsconfig.json +1 -1
  30. package/wrangler-dist/InspectorProxyWorker.js +464 -0
  31. package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
  32. package/wrangler-dist/ProxyWorker.js +240 -0
  33. package/wrangler-dist/ProxyWorker.js.map +6 -0
  34. package/wrangler-dist/cli.d.ts +23790 -1052
  35. package/wrangler-dist/cli.js +155835 -98941
  36. package/wrangler-dist/wasm-sync.wasm +0 -0
  37. package/Cloudflare_CA.pem +0 -18
  38. package/import_meta_url.js +0 -3
  39. package/miniflare-config-stubs/.env.empty +0 -0
  40. package/miniflare-config-stubs/package.empty.json +0 -1
  41. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  42. package/miniflare-dist/index.mjs +0 -6368
  43. package/src/__tests__/access.test.ts +0 -25
  44. package/src/__tests__/api-dev.test.ts +0 -238
  45. package/src/__tests__/api-devregistry.test.js +0 -64
  46. package/src/__tests__/api.test.ts +0 -80
  47. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  48. package/src/__tests__/config-cache.test.ts +0 -42
  49. package/src/__tests__/configuration.test.ts +0 -4233
  50. package/src/__tests__/d1/d1.test.ts +0 -82
  51. package/src/__tests__/d1/execute.test.ts +0 -64
  52. package/src/__tests__/d1/migrate.test.ts +0 -155
  53. package/src/__tests__/d1/splitter.test.ts +0 -255
  54. package/src/__tests__/delete.test.ts +0 -266
  55. package/src/__tests__/deployments.test.ts +0 -129
  56. package/src/__tests__/dev.test.tsx +0 -1587
  57. package/src/__tests__/generate.test.ts +0 -238
  58. package/src/__tests__/get-host-from-url.test.ts +0 -16
  59. package/src/__tests__/guess-worker-format.test.ts +0 -120
  60. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  61. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  62. package/src/__tests__/helpers/end-event-loop.ts +0 -6
  63. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  64. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  65. package/src/__tests__/helpers/mock-bin.ts +0 -36
  66. package/src/__tests__/helpers/mock-console.ts +0 -106
  67. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  68. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
  69. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  70. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  71. package/src/__tests__/helpers/mock-istty.ts +0 -74
  72. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  73. package/src/__tests__/helpers/mock-kv.ts +0 -46
  74. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  75. package/src/__tests__/helpers/mock-process.ts +0 -34
  76. package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
  77. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  78. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  79. package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
  80. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  81. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -93
  82. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  83. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  84. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  85. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  86. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  87. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  88. package/src/__tests__/helpers/msw/index.ts +0 -50
  89. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  90. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  91. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  92. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
  93. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  94. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  95. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  96. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  97. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  98. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  99. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  100. package/src/__tests__/https-options.test.ts +0 -163
  101. package/src/__tests__/index.test.ts +0 -274
  102. package/src/__tests__/init.test.ts +0 -3164
  103. package/src/__tests__/jest.setup.ts +0 -175
  104. package/src/__tests__/kv.test.ts +0 -1799
  105. package/src/__tests__/logger.test.ts +0 -141
  106. package/src/__tests__/logout.test.ts +0 -47
  107. package/src/__tests__/metrics.test.ts +0 -493
  108. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  109. package/src/__tests__/middleware.test.ts +0 -815
  110. package/src/__tests__/mtls-certificates.test.ts +0 -585
  111. package/src/__tests__/package-manager.test.ts +0 -353
  112. package/src/__tests__/pages/deployment-list.test.ts +0 -78
  113. package/src/__tests__/pages/functions-build.test.ts +0 -402
  114. package/src/__tests__/pages/pages.test.ts +0 -81
  115. package/src/__tests__/pages/project-create.test.ts +0 -63
  116. package/src/__tests__/pages/project-list.test.ts +0 -108
  117. package/src/__tests__/pages/project-upload.test.ts +0 -481
  118. package/src/__tests__/pages/publish.test.ts +0 -2745
  119. package/src/__tests__/pages-deployment-tail.test.ts +0 -955
  120. package/src/__tests__/parse.test.ts +0 -436
  121. package/src/__tests__/paths.test.ts +0 -39
  122. package/src/__tests__/publish.test.ts +0 -8167
  123. package/src/__tests__/pubsub.test.ts +0 -493
  124. package/src/__tests__/queues.test.ts +0 -529
  125. package/src/__tests__/r2.test.ts +0 -374
  126. package/src/__tests__/route.test.ts +0 -45
  127. package/src/__tests__/secret.test.ts +0 -693
  128. package/src/__tests__/tail.test.ts +0 -958
  129. package/src/__tests__/test-old-node-version.js +0 -31
  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 -233
  134. package/src/__tests__/user.test.ts +0 -118
  135. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  136. package/src/__tests__/validate-dev-props.test.ts +0 -56
  137. package/src/__tests__/version.test.ts +0 -35
  138. package/src/__tests__/whoami.test.tsx +0 -172
  139. package/src/__tests__/worker-namespace.test.ts +0 -339
  140. package/src/abort.d.ts +0 -3
  141. package/src/api/dev.ts +0 -328
  142. package/src/api/index.ts +0 -11
  143. package/src/api/mtls-certificate.ts +0 -148
  144. package/src/api/pages/create-worker-bundle-contents.ts +0 -75
  145. package/src/api/pages/index.ts +0 -5
  146. package/src/api/pages/publish.tsx +0 -368
  147. package/src/bundle-reporter.ts +0 -68
  148. package/src/bundle.ts +0 -877
  149. package/src/cfetch/index.ts +0 -158
  150. package/src/cfetch/internal.ts +0 -258
  151. package/src/cli.ts +0 -28
  152. package/src/config/README.md +0 -107
  153. package/src/config/config.ts +0 -282
  154. package/src/config/diagnostics.ts +0 -80
  155. package/src/config/environment.ts +0 -586
  156. package/src/config/index.ts +0 -375
  157. package/src/config/validation-helpers.ts +0 -597
  158. package/src/config/validation.ts +0 -2198
  159. package/src/config-cache.ts +0 -85
  160. package/src/create-worker-preview.ts +0 -293
  161. package/src/create-worker-upload-form.ts +0 -334
  162. package/src/d1/backups.tsx +0 -215
  163. package/src/d1/constants.ts +0 -2
  164. package/src/d1/create.tsx +0 -64
  165. package/src/d1/delete.ts +0 -53
  166. package/src/d1/execute.tsx +0 -354
  167. package/src/d1/formatTimeAgo.ts +0 -14
  168. package/src/d1/index.ts +0 -100
  169. package/src/d1/list.tsx +0 -60
  170. package/src/d1/migrations/apply.tsx +0 -206
  171. package/src/d1/migrations/create.tsx +0 -76
  172. package/src/d1/migrations/helpers.ts +0 -172
  173. package/src/d1/migrations/index.ts +0 -3
  174. package/src/d1/migrations/list.tsx +0 -92
  175. package/src/d1/migrations/options.ts +0 -23
  176. package/src/d1/options.ts +0 -22
  177. package/src/d1/splitter.ts +0 -161
  178. package/src/d1/types.ts +0 -25
  179. package/src/d1/utils.ts +0 -49
  180. package/src/delete.ts +0 -100
  181. package/src/deployments.ts +0 -116
  182. package/src/deprecated/index.ts +0 -144
  183. package/src/dev/dev-vars.ts +0 -39
  184. package/src/dev/dev.tsx +0 -600
  185. package/src/dev/get-local-persistence-path.ts +0 -31
  186. package/src/dev/local.tsx +0 -922
  187. package/src/dev/remote.tsx +0 -632
  188. package/src/dev/start-server.ts +0 -538
  189. package/src/dev/use-esbuild.ts +0 -205
  190. package/src/dev/validate-dev-props.ts +0 -31
  191. package/src/dev-registry.ts +0 -201
  192. package/src/dev.tsx +0 -914
  193. package/src/dialogs.ts +0 -136
  194. package/src/dispatch-namespace.ts +0 -211
  195. package/src/docs/index.ts +0 -97
  196. package/src/durable.ts +0 -102
  197. package/src/entry.ts +0 -327
  198. package/src/environment-variables/factory.ts +0 -88
  199. package/src/environment-variables/misc-variables.ts +0 -30
  200. package/src/errors.ts +0 -11
  201. package/src/generate/index.ts +0 -298
  202. package/src/git-client.ts +0 -135
  203. package/src/global-wrangler-config-path.ts +0 -26
  204. package/src/https-options.ts +0 -127
  205. package/src/index.ts +0 -705
  206. package/src/init.ts +0 -1022
  207. package/src/inspect.ts +0 -782
  208. package/src/intl-polyfill.d.ts +0 -139
  209. package/src/is-ci.ts +0 -14
  210. package/src/is-interactive.ts +0 -16
  211. package/src/jest.d.ts +0 -4
  212. package/src/kv/helpers.ts +0 -430
  213. package/src/kv/index.ts +0 -594
  214. package/src/logger.ts +0 -104
  215. package/src/metrics/index.ts +0 -5
  216. package/src/metrics/metrics-config.ts +0 -239
  217. package/src/metrics/metrics-dispatcher.ts +0 -96
  218. package/src/metrics/metrics-usage-headers.ts +0 -24
  219. package/src/metrics/send-event.ts +0 -98
  220. package/src/miniflare-cli/README.md +0 -30
  221. package/src/miniflare-cli/assets.ts +0 -251
  222. package/src/miniflare-cli/index.ts +0 -210
  223. package/src/miniflare-cli/request-context.ts +0 -40
  224. package/src/miniflare-cli/tsconfig.json +0 -9
  225. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  226. package/src/miniflare-cli/types.ts +0 -11
  227. package/src/module-collection.ts +0 -267
  228. package/src/mtls-certificate/cli.ts +0 -155
  229. package/src/open-in-browser.ts +0 -17
  230. package/src/package-manager.ts +0 -219
  231. package/src/pages/build.ts +0 -232
  232. package/src/pages/buildFunctions.ts +0 -130
  233. package/src/pages/constants.ts +0 -18
  234. package/src/pages/deployment-tails.ts +0 -281
  235. package/src/pages/deployments.tsx +0 -86
  236. package/src/pages/dev.ts +0 -716
  237. package/src/pages/errors.ts +0 -66
  238. package/src/pages/functions/buildPlugin.ts +0 -90
  239. package/src/pages/functions/buildWorker.ts +0 -288
  240. package/src/pages/functions/filepath-routing.test.ts +0 -234
  241. package/src/pages/functions/filepath-routing.ts +0 -189
  242. package/src/pages/functions/identifiers.ts +0 -78
  243. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  244. package/src/pages/functions/routes-consolidation.ts +0 -73
  245. package/src/pages/functions/routes-transformation.test.ts +0 -282
  246. package/src/pages/functions/routes-transformation.ts +0 -115
  247. package/src/pages/functions/routes-validation.test.ts +0 -403
  248. package/src/pages/functions/routes-validation.ts +0 -202
  249. package/src/pages/functions/routes.ts +0 -151
  250. package/src/pages/functions/tsconfig.json +0 -8
  251. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  252. package/src/pages/functions.ts +0 -86
  253. package/src/pages/hash.ts +0 -13
  254. package/src/pages/index.ts +0 -102
  255. package/src/pages/projects.tsx +0 -162
  256. package/src/pages/prompt-select-project.tsx +0 -31
  257. package/src/pages/publish.tsx +0 -276
  258. package/src/pages/types.ts +0 -46
  259. package/src/pages/upload.tsx +0 -449
  260. package/src/pages/utils.ts +0 -23
  261. package/src/parse.ts +0 -308
  262. package/src/paths.ts +0 -71
  263. package/src/proxy.ts +0 -694
  264. package/src/publish/index.ts +0 -274
  265. package/src/publish/publish.ts +0 -1065
  266. package/src/pubsub/index.ts +0 -286
  267. package/src/pubsub/pubsub-commands.ts +0 -623
  268. package/src/queues/cli/commands/consumer/add.ts +0 -65
  269. package/src/queues/cli/commands/consumer/index.ts +0 -19
  270. package/src/queues/cli/commands/consumer/remove.ts +0 -31
  271. package/src/queues/cli/commands/create.ts +0 -25
  272. package/src/queues/cli/commands/delete.ts +0 -26
  273. package/src/queues/cli/commands/index.ts +0 -35
  274. package/src/queues/cli/commands/list.ts +0 -25
  275. package/src/queues/client.ts +0 -135
  276. package/src/queues/utils.ts +0 -18
  277. package/src/r2/constants.ts +0 -4
  278. package/src/r2/helpers.ts +0 -132
  279. package/src/r2/index.ts +0 -289
  280. package/src/routes.ts +0 -140
  281. package/src/secret/index.ts +0 -375
  282. package/src/selfsigned.d.ts +0 -29
  283. package/src/sites.ts +0 -372
  284. package/src/tail/createTail.ts +0 -406
  285. package/src/tail/filters.ts +0 -277
  286. package/src/tail/index.ts +0 -211
  287. package/src/tail/printing.ts +0 -122
  288. package/src/tsconfig-sanity.ts +0 -16
  289. package/src/type-generation.ts +0 -181
  290. package/src/update-check.ts +0 -19
  291. package/src/user/access.ts +0 -68
  292. package/src/user/auth-variables.ts +0 -113
  293. package/src/user/choose-account.tsx +0 -39
  294. package/src/user/generate-auth-url.ts +0 -33
  295. package/src/user/generate-random-state.ts +0 -16
  296. package/src/user/index.ts +0 -2
  297. package/src/user/user.ts +0 -1233
  298. package/src/utils/collectKeyValues.ts +0 -14
  299. package/src/whoami.ts +0 -135
  300. package/src/worker.ts +0 -257
  301. package/src/yargs-types.ts +0 -37
  302. package/src/zones.ts +0 -191
  303. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  304. package/templates/d1-beta-facade.js +0 -241
  305. package/templates/first-party-worker-module-facade.ts +0 -19
  306. package/templates/format-dev-errors.ts +0 -34
  307. package/templates/serve-static-assets.ts +0 -66
  308. package/templates/service-bindings-module-facade.js +0 -55
  309. package/templates/service-bindings-sw-facade.js +0 -42
  310. package/templates/tsconfig.tsbuildinfo +0 -1
@@ -1,267 +0,0 @@
1
- import crypto from "node:crypto";
2
- import { readFile } from "node:fs/promises";
3
- import path from "node:path";
4
- import globToRegExp from "glob-to-regexp";
5
- import { logger } from "./logger";
6
- import type { Config, ConfigModuleRuleType } from "./config";
7
- import type { CfModule, CfModuleType, CfScriptFormat } from "./worker";
8
- import type esbuild from "esbuild";
9
-
10
- function flipObject<
11
- K extends string | number | symbol,
12
- V extends string | number | symbol
13
- >(obj: Record<K, V>): Record<V, K> {
14
- return Object.fromEntries(Object.entries(obj).map(([k, v]) => [v, k]));
15
- }
16
-
17
- const RuleTypeToModuleType: Record<ConfigModuleRuleType, CfModuleType> = {
18
- ESModule: "esm",
19
- CommonJS: "commonjs",
20
- CompiledWasm: "compiled-wasm",
21
- Data: "buffer",
22
- Text: "text",
23
- };
24
-
25
- export const ModuleTypeToRuleType = flipObject(RuleTypeToModuleType);
26
-
27
- // This is a combination of an esbuild plugin and a mutable array
28
- // that we use to collect module references from source code.
29
- // There will be modules that _shouldn't_ be inlined directly into
30
- // the bundle. (eg. wasm modules, some text files, etc). We can include
31
- // those files as modules in the multi part worker form upload. This
32
- // plugin+array is used to collect references to these modules, reference
33
- // them correctly in the bundle, and add them to the form upload.
34
-
35
- export const DEFAULT_MODULE_RULES: Config["rules"] = [
36
- { type: "Text", globs: ["**/*.txt", "**/*.html"] },
37
- { type: "Data", globs: ["**/*.bin"] },
38
- { type: "CompiledWasm", globs: ["**/*.wasm"] },
39
- ];
40
-
41
- export default function createModuleCollector(props: {
42
- format: CfScriptFormat;
43
- rules?: Config["rules"];
44
- // a collection of "legacy" style module references, which are just file names
45
- // we will eventually deprecate this functionality, hence the verbose greppable name
46
- wrangler1xlegacyModuleReferences: {
47
- rootDirectory: string;
48
- fileNames: Set<string>;
49
- };
50
- }): {
51
- modules: CfModule[];
52
- plugin: esbuild.Plugin;
53
- } {
54
- const rules: Config["rules"] = [
55
- ...(props.rules || []),
56
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
57
- ...DEFAULT_MODULE_RULES!,
58
- ];
59
-
60
- // First, we want to add some validations to the module rules
61
- // We want to warn if rules are accidentally configured in such a way that
62
- // subsequent rules will never match because `fallthrough` hasn't been set
63
-
64
- const completedRuleLocations: Record<string, number> = {};
65
- let index = 0;
66
- const rulesToRemove: Config["rules"] = [];
67
- for (const rule of rules) {
68
- if (rule.type in completedRuleLocations) {
69
- if (rules[completedRuleLocations[rule.type]].fallthrough !== false) {
70
- if (index < (props.rules || []).length) {
71
- logger.warn(
72
- `The module rule at position ${index} (${JSON.stringify(
73
- rule
74
- )}) has the same type as a previous rule (at position ${
75
- completedRuleLocations[rule.type]
76
- }, ${JSON.stringify(
77
- rules[completedRuleLocations[rule.type]]
78
- )}). 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.`
79
- );
80
- } else {
81
- logger.warn(
82
- `The default module rule ${JSON.stringify(
83
- rule
84
- )} has the same type as a previous rule (at position ${
85
- completedRuleLocations[rule.type]
86
- }, ${JSON.stringify(
87
- rules[completedRuleLocations[rule.type]]
88
- )}). 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.`
89
- );
90
- }
91
- }
92
-
93
- rulesToRemove.push(rule);
94
- }
95
- if (!(rule.type in completedRuleLocations) && rule.fallthrough !== true) {
96
- completedRuleLocations[rule.type] = index;
97
- }
98
- index++;
99
- }
100
-
101
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
102
- rulesToRemove.forEach((rule) => rules!.splice(rules!.indexOf(rule), 1));
103
-
104
- const modules: CfModule[] = [];
105
- return {
106
- modules,
107
- plugin: {
108
- name: "wrangler-module-collector",
109
- setup(build) {
110
- build.onStart(() => {
111
- // reset the module collection array
112
- modules.splice(0);
113
- });
114
-
115
- // ~ start legacy module specifier support ~
116
-
117
- // This section detects usage of "legacy" 1.x style module specifiers
118
- // and modifies them so they "work" in wrangler v2, but with a warning
119
-
120
- const rulesMatchers = rules.flatMap((rule) => {
121
- return rule.globs.map((glob) => {
122
- const regex = globToRegExp(glob);
123
- return {
124
- regex,
125
- rule,
126
- };
127
- });
128
- });
129
-
130
- if (props.wrangler1xlegacyModuleReferences.fileNames.size > 0) {
131
- build.onResolve(
132
- {
133
- filter: new RegExp(
134
- "^(" +
135
- [...props.wrangler1xlegacyModuleReferences.fileNames]
136
- .map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
137
- .join("|") +
138
- ")$"
139
- ),
140
- },
141
- async (args: esbuild.OnResolveArgs) => {
142
- if (
143
- args.kind !== "import-statement" &&
144
- args.kind !== "require-call"
145
- ) {
146
- return;
147
- }
148
- // In the future, this will simply throw an error
149
- logger.warn(
150
- `Deprecation: detected a legacy module import in "./${path.relative(
151
- process.cwd(),
152
- args.importer
153
- )}". This will stop working in the future. Replace references to "${
154
- args.path
155
- }" with "./${args.path}";`
156
- );
157
-
158
- // take the file and massage it to a
159
- // transportable/manageable format
160
- const filePath = path.join(
161
- props.wrangler1xlegacyModuleReferences.rootDirectory,
162
- args.path
163
- );
164
- const fileContent = await readFile(filePath);
165
- const fileHash = crypto
166
- .createHash("sha1")
167
- .update(fileContent)
168
- .digest("hex");
169
- const fileName = `./${fileHash}-${path.basename(args.path)}`;
170
-
171
- const { rule } =
172
- rulesMatchers.find(({ regex }) => regex.test(fileName)) || {};
173
- if (rule) {
174
- // add the module to the array
175
- modules.push({
176
- name: fileName,
177
- content: fileContent,
178
- type: RuleTypeToModuleType[rule.type],
179
- });
180
- return {
181
- path: fileName, // change the reference to the changed module
182
- external: props.format === "modules", // mark it as external in the bundle
183
- namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
184
- watchFiles: [filePath], // we also add the file to esbuild's watch list
185
- };
186
- }
187
- }
188
- );
189
- }
190
-
191
- // ~ end legacy module specifier support ~
192
-
193
- rules?.forEach((rule) => {
194
- if (rule.type === "ESModule" || rule.type === "CommonJS") return; // TODO: we should treat these as js files, and use the jsx loader
195
-
196
- rule.globs.forEach((glob) => {
197
- build.onResolve(
198
- { filter: globToRegExp(glob) },
199
- async (args: esbuild.OnResolveArgs) => {
200
- // take the file and massage it to a
201
- // transportable/manageable format
202
-
203
- const filePath = path.join(args.resolveDir, args.path);
204
- const fileContent = await readFile(filePath);
205
- const fileHash = crypto
206
- .createHash("sha1")
207
- .update(fileContent)
208
- .digest("hex");
209
- const fileName = `./${fileHash}-${path.basename(args.path)}`;
210
-
211
- // add the module to the array
212
- modules.push({
213
- name: fileName,
214
- content: fileContent,
215
- type: RuleTypeToModuleType[rule.type],
216
- });
217
-
218
- return {
219
- path: fileName, // change the reference to the changed module
220
- external: props.format === "modules", // mark it as external in the bundle
221
- namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
222
- watchFiles: [filePath], // we also add the file to esbuild's watch list
223
- };
224
- }
225
- );
226
-
227
- if (props.format === "service-worker") {
228
- build.onLoad(
229
- { filter: globToRegExp(glob) },
230
- async (args: esbuild.OnLoadArgs) => {
231
- return {
232
- // We replace the the module with an identifier
233
- // that we'll separately add to the form upload
234
- // as part of [wasm_modules]/[text_blobs]/[data_blobs]. This identifier has to be a valid
235
- // JS identifier, so we replace all non alphanumeric characters
236
- // with an underscore.
237
- contents: `export default ${args.path.replace(
238
- /[^a-zA-Z0-9_$]/g,
239
- "_"
240
- )};`,
241
- };
242
- }
243
- );
244
- }
245
- });
246
- });
247
-
248
- rulesToRemove.forEach((rule) => {
249
- rule.globs.forEach((glob) => {
250
- build.onResolve(
251
- { filter: globToRegExp(glob) },
252
- async (args: esbuild.OnResolveArgs) => {
253
- throw new Error(
254
- `The file ${
255
- args.path
256
- } matched a module rule in your configuration (${JSON.stringify(
257
- rule
258
- )}), but was ignored because a previous rule with the same type was not marked as \`fallthrough = true\`.`
259
- );
260
- }
261
- );
262
- });
263
- });
264
- },
265
- },
266
- };
267
- }
@@ -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
- }
@@ -1,219 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { env } from "node:process";
4
- import { execa, execaCommandSync } from "execa";
5
- import { logger } from "./logger";
6
-
7
- export interface PackageManager {
8
- cwd: string;
9
- type: "npm" | "yarn" | "pnpm";
10
- addDevDeps(...packages: string[]): Promise<void>;
11
- install(): Promise<void>;
12
- }
13
-
14
- export async function getPackageManager(cwd: string): Promise<PackageManager> {
15
- const [hasYarn, hasNpm, hasPnpm] = await Promise.all([
16
- supportsYarn(),
17
- supportsNpm(),
18
- supportsPnpm(),
19
- ]);
20
- const hasYarnLock = existsSync(join(cwd, "yarn.lock"));
21
- const hasNpmLock = existsSync(join(cwd, "package-lock.json"));
22
- const hasPnpmLock = existsSync(join(cwd, "pnpm-lock.yaml"));
23
- const userAgent = sniffUserAgent();
24
-
25
- // check for lockfiles
26
- if (hasNpmLock) {
27
- if (hasNpm) {
28
- logger.log(
29
- "Using npm as package manager, as there is already a package-lock.json file."
30
- );
31
- return { ...NpmPackageManager, cwd };
32
- } else if (hasYarn) {
33
- logger.log("Using yarn as package manager.");
34
- logger.warn(
35
- "There is already a package-lock.json file but could not find npm on the PATH."
36
- );
37
- return { ...YarnPackageManager, cwd };
38
- }
39
- } else if (hasPnpmLock) {
40
- if (hasPnpm) {
41
- logger.log(
42
- "Using pnpm as package manager, as there is already a pnpm-lock.yaml file."
43
- );
44
- return { ...PnpmPackageManager, cwd };
45
- } else {
46
- logger.warn(
47
- "There is already a pnpm-lock.yaml file but could not find pnpm on the PATH."
48
- );
49
- // will simply fallback to the first found of [npm, yaml, pnpm] in the next if round.
50
- }
51
- } else if (hasYarnLock) {
52
- if (hasYarn) {
53
- logger.log(
54
- "Using yarn as package manager, as there is already a yarn.lock file."
55
- );
56
- return { ...YarnPackageManager, cwd };
57
- } else if (hasNpm) {
58
- logger.log("Using npm as package manager.");
59
- logger.warn(
60
- "There is already a yarn.lock file but could not find yarn on the PATH."
61
- );
62
- return { ...NpmPackageManager, cwd };
63
- }
64
- }
65
-
66
- // check the user agent
67
- if (userAgent === "npm" && hasNpm) {
68
- logger.log("Using npm as package manager.");
69
- return { ...NpmPackageManager, cwd };
70
- } else if (userAgent === "pnpm" && hasPnpm) {
71
- logger.log("Using pnpm as package manager.");
72
- return { ...PnpmPackageManager, cwd };
73
- } else if (userAgent === "yarn" && hasYarn) {
74
- logger.log("Using yarn as package manager.");
75
- return { ...YarnPackageManager, cwd };
76
- }
77
-
78
- // lastly, check what's installed
79
- if (hasNpm) {
80
- logger.log("Using npm as package manager.");
81
- return { ...NpmPackageManager, cwd };
82
- } else if (hasYarn) {
83
- logger.log("Using yarn as package manager.");
84
- return { ...YarnPackageManager, cwd };
85
- } else if (hasPnpm) {
86
- logger.log("Using pnpm as package manager.");
87
- return { ...PnpmPackageManager, cwd };
88
- } else {
89
- throw new Error(
90
- "Unable to find a package manager. Supported managers are: npm, yarn, and pnpm."
91
- );
92
- }
93
- }
94
-
95
- /**
96
- * Get the name of the given `packageManager`.
97
- */
98
- export function getPackageManagerName(packageManager: PackageManager): string {
99
- return packageManager.type ?? "unknown";
100
- }
101
-
102
- /**
103
- * Manage packages using npm
104
- */
105
- const NpmPackageManager: PackageManager = {
106
- cwd: process.cwd(),
107
- type: "npm",
108
- /** Add and install a new devDependency into the local package.json. */
109
- async addDevDeps(...packages: string[]): Promise<void> {
110
- await execa("npm", ["install", ...packages, "--save-dev"], {
111
- stdio: "inherit",
112
- cwd: this.cwd,
113
- });
114
- },
115
-
116
- /** Install all the dependencies in the local package.json. */
117
- async install(): Promise<void> {
118
- await execa("npm", ["install"], {
119
- stdio: "inherit",
120
- cwd: this.cwd,
121
- });
122
- },
123
- };
124
-
125
- /**
126
- * Manage packages using pnpm
127
- */
128
- const PnpmPackageManager: PackageManager = {
129
- cwd: process.cwd(),
130
- type: "pnpm",
131
- /** Add and install a new devDependency into the local package.json. */
132
- async addDevDeps(...packages: string[]): Promise<void> {
133
- await execa("pnpm", ["install", ...packages, "--save-dev"], {
134
- stdio: "inherit",
135
- cwd: this.cwd,
136
- });
137
- },
138
-
139
- /** Install all the dependencies in the local package.json. */
140
- async install(): Promise<void> {
141
- await execa("pnpm", ["install"], {
142
- stdio: "inherit",
143
- cwd: this.cwd,
144
- });
145
- },
146
- };
147
-
148
- /**
149
- * Manage packages using yarn
150
- */
151
- const YarnPackageManager: PackageManager = {
152
- cwd: process.cwd(),
153
- type: "yarn",
154
- /** Add and install a new devDependency into the local package.json. */
155
- async addDevDeps(...packages: string[]): Promise<void> {
156
- await execa("yarn", ["add", ...packages, "--dev"], {
157
- stdio: "inherit",
158
- cwd: this.cwd,
159
- });
160
- },
161
-
162
- /** Install all the dependencies in the local package.json. */
163
- async install(): Promise<void> {
164
- await execa("yarn", ["install"], {
165
- stdio: "inherit",
166
- cwd: this.cwd,
167
- });
168
- },
169
- };
170
-
171
- async function supports(name: string): Promise<boolean> {
172
- try {
173
- execaCommandSync(`${name} --version`, { stdio: "ignore" });
174
- return true;
175
- } catch {
176
- return false;
177
- }
178
- }
179
-
180
- function supportsYarn(): Promise<boolean> {
181
- return supports("yarn");
182
- }
183
-
184
- function supportsNpm(): Promise<boolean> {
185
- return supports("npm");
186
- }
187
-
188
- function supportsPnpm(): Promise<boolean> {
189
- return supports("pnpm");
190
- }
191
-
192
- /**
193
- * The environment variable `npm_config_user_agent` can be used to
194
- * guess the package manager that was used to execute wrangler.
195
- * It's imperfect (just like regular user agent sniffing!)
196
- * but the package managers we support all set this property:
197
- *
198
- * - [npm](https://github.com/npm/cli/blob/1415b4bdeeaabb6e0ba12b6b1b0cc56502bd64ab/lib/utils/config/definitions.js#L1945-L1979)
199
- * - [pnpm](https://github.com/pnpm/pnpm/blob/cd4f9341e966eb8b411462b48ff0c0612e0a51a7/packages/plugin-commands-script-runners/src/makeEnv.ts#L14)
200
- * - [yarn](https://yarnpkg.com/advanced/lifecycle-scripts#environment-variables)
201
- */
202
- function sniffUserAgent(): "npm" | "pnpm" | "yarn" | undefined {
203
- const userAgent = env.npm_config_user_agent;
204
- if (userAgent === undefined) {
205
- return undefined;
206
- }
207
-
208
- if (userAgent.includes("yarn")) {
209
- return "yarn";
210
- }
211
-
212
- if (userAgent.includes("pnpm")) {
213
- return "pnpm";
214
- }
215
-
216
- if (userAgent.includes("npm")) {
217
- return "npm";
218
- }
219
- }