wrangler 0.0.0-e7cf0caa → 0.0.0-e8053554

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 (308) hide show
  1. package/README.md +10 -12
  2. package/bin/wrangler.js +13 -74
  3. package/package.json +213 -199
  4. package/templates/__tests__/tsconfig.json +1 -1
  5. package/templates/checked-fetch.js +10 -3
  6. package/templates/facade.d.ts +4 -1
  7. package/templates/middleware/common.ts +9 -4
  8. package/templates/middleware/loader-modules.ts +64 -11
  9. package/templates/middleware/loader-sw.ts +2 -7
  10. package/templates/middleware/middleware-d1-beta.d.ts +3 -0
  11. package/templates/middleware/middleware-miniflare3-json-error.ts +1 -0
  12. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  13. package/templates/middleware/middleware-multiworker-dev.ts +68 -0
  14. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  15. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  16. package/templates/modules-watch-stub.js +4 -0
  17. package/templates/new-worker-scheduled.ts +1 -1
  18. package/templates/new-worker.ts +1 -1
  19. package/templates/pages-dev-util.ts +4 -1
  20. package/templates/pages-shim.ts +0 -3
  21. package/templates/pages-template-plugin.ts +12 -2
  22. package/templates/pages-template-worker.ts +11 -2
  23. package/templates/startDevWorker/InspectorProxyWorker.ts +652 -0
  24. package/templates/startDevWorker/ProxyWorker.ts +252 -0
  25. package/templates/tsconfig.json +1 -1
  26. package/wrangler-dist/InspectorProxyWorker.js +460 -0
  27. package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
  28. package/wrangler-dist/ProxyWorker.js +186 -0
  29. package/wrangler-dist/ProxyWorker.js.map +6 -0
  30. package/wrangler-dist/cli.d.ts +22048 -182
  31. package/wrangler-dist/cli.js +113098 -104303
  32. package/wrangler-dist/wasm-sync.wasm +0 -0
  33. package/import_meta_url.js +0 -3
  34. package/miniflare-config-stubs/.env.empty +0 -0
  35. package/miniflare-config-stubs/package.empty.json +0 -1
  36. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  37. package/miniflare-dist/index.mjs +0 -6368
  38. package/src/__tests__/access.test.ts +0 -25
  39. package/src/__tests__/api-dev.test.ts +0 -238
  40. package/src/__tests__/api-devregistry.test.ts +0 -121
  41. package/src/__tests__/api.test.ts +0 -102
  42. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  43. package/src/__tests__/config-cache.test.ts +0 -42
  44. package/src/__tests__/configuration.test.ts +0 -4509
  45. package/src/__tests__/d1/d1.test.ts +0 -82
  46. package/src/__tests__/d1/execute.test.ts +0 -66
  47. package/src/__tests__/d1/migrate.test.ts +0 -157
  48. package/src/__tests__/d1/splitter.test.ts +0 -255
  49. package/src/__tests__/delete.test.ts +0 -272
  50. package/src/__tests__/deployments.test.ts +0 -369
  51. package/src/__tests__/dev.test.tsx +0 -1617
  52. package/src/__tests__/generate.test.ts +0 -237
  53. package/src/__tests__/get-host-from-url.test.ts +0 -16
  54. package/src/__tests__/guess-worker-format.test.ts +0 -120
  55. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  56. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  57. package/src/__tests__/helpers/end-event-loop.ts +0 -6
  58. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  59. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  60. package/src/__tests__/helpers/mock-bin.ts +0 -36
  61. package/src/__tests__/helpers/mock-console.ts +0 -112
  62. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  63. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
  64. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  65. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  66. package/src/__tests__/helpers/mock-istty.ts +0 -74
  67. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  68. package/src/__tests__/helpers/mock-kv.ts +0 -46
  69. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  70. package/src/__tests__/helpers/mock-process.ts +0 -34
  71. package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
  72. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  73. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  74. package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
  75. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  76. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -160
  77. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  78. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  79. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  80. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  81. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  82. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  83. package/src/__tests__/helpers/msw/index.ts +0 -52
  84. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  85. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  86. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  87. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
  88. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  89. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  90. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  91. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -11
  92. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  93. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  94. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  95. package/src/__tests__/https-options.test.ts +0 -163
  96. package/src/__tests__/index.test.ts +0 -280
  97. package/src/__tests__/init.test.ts +0 -3196
  98. package/src/__tests__/jest.setup.ts +0 -179
  99. package/src/__tests__/kv.test.ts +0 -1799
  100. package/src/__tests__/logger.test.ts +0 -207
  101. package/src/__tests__/logout.test.ts +0 -47
  102. package/src/__tests__/metrics.test.ts +0 -493
  103. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  104. package/src/__tests__/middleware.test.ts +0 -816
  105. package/src/__tests__/mtls-certificates.test.ts +0 -588
  106. package/src/__tests__/package-manager.test.ts +0 -353
  107. package/src/__tests__/pages/deployment-list.test.ts +0 -80
  108. package/src/__tests__/pages/functions-build.test.ts +0 -452
  109. package/src/__tests__/pages/pages.test.ts +0 -81
  110. package/src/__tests__/pages/project-create.test.ts +0 -63
  111. package/src/__tests__/pages/project-list.test.ts +0 -110
  112. package/src/__tests__/pages/project-upload.test.ts +0 -500
  113. package/src/__tests__/pages/publish.test.ts +0 -2864
  114. package/src/__tests__/pages-deployment-tail.test.ts +0 -955
  115. package/src/__tests__/parse.test.ts +0 -436
  116. package/src/__tests__/paths.test.ts +0 -39
  117. package/src/__tests__/publish.test.ts +0 -8423
  118. package/src/__tests__/pubsub.test.ts +0 -496
  119. package/src/__tests__/queues.test.ts +0 -532
  120. package/src/__tests__/r2.test.ts +0 -374
  121. package/src/__tests__/route.test.ts +0 -45
  122. package/src/__tests__/secret.test.ts +0 -693
  123. package/src/__tests__/tail.test.ts +0 -958
  124. package/src/__tests__/test-old-node-version.js +0 -31
  125. package/src/__tests__/traverse-module-graph.test.ts +0 -220
  126. package/src/__tests__/tsconfig-sanity.ts +0 -12
  127. package/src/__tests__/tsconfig.json +0 -8
  128. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  129. package/src/__tests__/type-generation.test.ts +0 -234
  130. package/src/__tests__/user.test.ts +0 -118
  131. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  132. package/src/__tests__/validate-dev-props.test.ts +0 -56
  133. package/src/__tests__/version.test.ts +0 -35
  134. package/src/__tests__/whoami.test.tsx +0 -172
  135. package/src/__tests__/worker-namespace.test.ts +0 -340
  136. package/src/abort.d.ts +0 -3
  137. package/src/api/dev.ts +0 -316
  138. package/src/api/index.ts +0 -11
  139. package/src/api/mtls-certificate.ts +0 -148
  140. package/src/api/pages/create-worker-bundle-contents.ts +0 -76
  141. package/src/api/pages/index.ts +0 -5
  142. package/src/api/pages/publish.tsx +0 -355
  143. package/src/bundle-reporter.ts +0 -68
  144. package/src/bundle.ts +0 -908
  145. package/src/cfetch/index.ts +0 -158
  146. package/src/cfetch/internal.ts +0 -258
  147. package/src/cli.ts +0 -28
  148. package/src/config/README.md +0 -107
  149. package/src/config/config.ts +0 -282
  150. package/src/config/diagnostics.ts +0 -80
  151. package/src/config/environment.ts +0 -618
  152. package/src/config/index.ts +0 -403
  153. package/src/config/validation-helpers.ts +0 -597
  154. package/src/config/validation.ts +0 -2342
  155. package/src/config-cache.ts +0 -85
  156. package/src/create-worker-preview.ts +0 -293
  157. package/src/create-worker-upload-form.ts +0 -359
  158. package/src/d1/backups.tsx +0 -219
  159. package/src/d1/constants.ts +0 -2
  160. package/src/d1/create.tsx +0 -68
  161. package/src/d1/delete.ts +0 -53
  162. package/src/d1/execute.tsx +0 -357
  163. package/src/d1/formatTimeAgo.ts +0 -14
  164. package/src/d1/index.ts +0 -100
  165. package/src/d1/list.tsx +0 -60
  166. package/src/d1/migrations/apply.tsx +0 -212
  167. package/src/d1/migrations/create.tsx +0 -79
  168. package/src/d1/migrations/helpers.ts +0 -172
  169. package/src/d1/migrations/index.ts +0 -3
  170. package/src/d1/migrations/list.tsx +0 -95
  171. package/src/d1/migrations/options.ts +0 -23
  172. package/src/d1/options.ts +0 -22
  173. package/src/d1/splitter.ts +0 -161
  174. package/src/d1/types.ts +0 -25
  175. package/src/d1/utils.ts +0 -49
  176. package/src/delete.ts +0 -100
  177. package/src/deployments.ts +0 -368
  178. package/src/deprecated/index.ts +0 -144
  179. package/src/dev/dev-vars.ts +0 -39
  180. package/src/dev/dev.tsx +0 -600
  181. package/src/dev/get-local-persistence-path.ts +0 -31
  182. package/src/dev/local.tsx +0 -920
  183. package/src/dev/remote.tsx +0 -632
  184. package/src/dev/start-server.ts +0 -534
  185. package/src/dev/use-esbuild.ts +0 -203
  186. package/src/dev/validate-dev-props.ts +0 -40
  187. package/src/dev-registry.ts +0 -202
  188. package/src/dev.tsx +0 -929
  189. package/src/dialogs.ts +0 -136
  190. package/src/dispatch-namespace.ts +0 -211
  191. package/src/docs/index.ts +0 -97
  192. package/src/durable.ts +0 -102
  193. package/src/entry.ts +0 -337
  194. package/src/environment-variables/factory.ts +0 -88
  195. package/src/environment-variables/misc-variables.ts +0 -30
  196. package/src/errors.ts +0 -11
  197. package/src/generate/index.ts +0 -298
  198. package/src/git-client.ts +0 -135
  199. package/src/global-wrangler-config-path.ts +0 -26
  200. package/src/https-options.ts +0 -127
  201. package/src/index.ts +0 -758
  202. package/src/init.ts +0 -1032
  203. package/src/inspect.ts +0 -782
  204. package/src/intl-polyfill.d.ts +0 -139
  205. package/src/is-ci.ts +0 -14
  206. package/src/is-interactive.ts +0 -16
  207. package/src/jest.d.ts +0 -4
  208. package/src/kv/helpers.ts +0 -430
  209. package/src/kv/index.ts +0 -594
  210. package/src/logger.ts +0 -119
  211. package/src/metrics/index.ts +0 -5
  212. package/src/metrics/metrics-config.ts +0 -239
  213. package/src/metrics/metrics-dispatcher.ts +0 -96
  214. package/src/metrics/metrics-usage-headers.ts +0 -24
  215. package/src/metrics/send-event.ts +0 -99
  216. package/src/miniflare-cli/README.md +0 -30
  217. package/src/miniflare-cli/assets.ts +0 -251
  218. package/src/miniflare-cli/index.ts +0 -210
  219. package/src/miniflare-cli/request-context.ts +0 -40
  220. package/src/miniflare-cli/tsconfig.json +0 -9
  221. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  222. package/src/miniflare-cli/types.ts +0 -11
  223. package/src/module-collection.ts +0 -333
  224. package/src/mtls-certificate/cli.ts +0 -155
  225. package/src/open-in-browser.ts +0 -17
  226. package/src/package-manager.ts +0 -219
  227. package/src/pages/build.ts +0 -410
  228. package/src/pages/buildFunctions.ts +0 -140
  229. package/src/pages/constants.ts +0 -18
  230. package/src/pages/deployment-tails.ts +0 -281
  231. package/src/pages/deployments.tsx +0 -84
  232. package/src/pages/dev.ts +0 -716
  233. package/src/pages/errors.ts +0 -67
  234. package/src/pages/functions/buildPlugin.ts +0 -113
  235. package/src/pages/functions/buildWorker.ts +0 -291
  236. package/src/pages/functions/filepath-routing.test.ts +0 -234
  237. package/src/pages/functions/filepath-routing.ts +0 -189
  238. package/src/pages/functions/identifiers.ts +0 -78
  239. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  240. package/src/pages/functions/routes-consolidation.ts +0 -73
  241. package/src/pages/functions/routes-transformation.test.ts +0 -282
  242. package/src/pages/functions/routes-transformation.ts +0 -115
  243. package/src/pages/functions/routes-validation.test.ts +0 -403
  244. package/src/pages/functions/routes-validation.ts +0 -202
  245. package/src/pages/functions/routes.ts +0 -151
  246. package/src/pages/functions/tsconfig.json +0 -8
  247. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  248. package/src/pages/functions.ts +0 -86
  249. package/src/pages/hash.ts +0 -13
  250. package/src/pages/index.ts +0 -102
  251. package/src/pages/projects.tsx +0 -159
  252. package/src/pages/prompt-select-project.tsx +0 -31
  253. package/src/pages/publish.tsx +0 -267
  254. package/src/pages/types.ts +0 -46
  255. package/src/pages/upload.tsx +0 -469
  256. package/src/pages/utils.ts +0 -23
  257. package/src/parse.ts +0 -308
  258. package/src/paths.ts +0 -71
  259. package/src/proxy.ts +0 -694
  260. package/src/publish/index.ts +0 -274
  261. package/src/publish/publish.ts +0 -1060
  262. package/src/pubsub/index.ts +0 -286
  263. package/src/pubsub/pubsub-commands.ts +0 -623
  264. package/src/queues/cli/commands/consumer/add.ts +0 -71
  265. package/src/queues/cli/commands/consumer/index.ts +0 -19
  266. package/src/queues/cli/commands/consumer/remove.ts +0 -31
  267. package/src/queues/cli/commands/create.ts +0 -25
  268. package/src/queues/cli/commands/delete.ts +0 -26
  269. package/src/queues/cli/commands/index.ts +0 -35
  270. package/src/queues/cli/commands/list.ts +0 -25
  271. package/src/queues/client.ts +0 -136
  272. package/src/queues/utils.ts +0 -18
  273. package/src/r2/constants.ts +0 -4
  274. package/src/r2/helpers.ts +0 -132
  275. package/src/r2/index.ts +0 -289
  276. package/src/routes.ts +0 -140
  277. package/src/secret/index.ts +0 -376
  278. package/src/selfsigned.d.ts +0 -29
  279. package/src/sites.ts +0 -372
  280. package/src/tail/createTail.ts +0 -406
  281. package/src/tail/filters.ts +0 -277
  282. package/src/tail/index.ts +0 -211
  283. package/src/tail/printing.ts +0 -122
  284. package/src/traverse-module-graph.ts +0 -53
  285. package/src/tsconfig-sanity.ts +0 -16
  286. package/src/type-generation.ts +0 -181
  287. package/src/update-check.ts +0 -19
  288. package/src/user/access.ts +0 -68
  289. package/src/user/auth-variables.ts +0 -113
  290. package/src/user/choose-account.tsx +0 -39
  291. package/src/user/generate-auth-url.ts +0 -33
  292. package/src/user/generate-random-state.ts +0 -16
  293. package/src/user/index.ts +0 -2
  294. package/src/user/user.ts +0 -1233
  295. package/src/utils/collectKeyValues.ts +0 -14
  296. package/src/utils/render.ts +0 -93
  297. package/src/whoami.ts +0 -135
  298. package/src/worker.ts +0 -274
  299. package/src/yargs-types.ts +0 -37
  300. package/src/zones.ts +0 -191
  301. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  302. package/templates/d1-beta-facade.js +0 -244
  303. package/templates/first-party-worker-module-facade.ts +0 -19
  304. package/templates/format-dev-errors.ts +0 -34
  305. package/templates/serve-static-assets.ts +0 -66
  306. package/templates/service-bindings-module-facade.js +0 -55
  307. package/templates/service-bindings-sw-facade.js +0 -42
  308. package/templates/tsconfig.tsbuildinfo +0 -1
@@ -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
- }
@@ -1,410 +0,0 @@
1
- import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
- import { basename, dirname, relative, resolve as resolvePath } from "node:path";
3
- import { createUploadWorkerBundleContents } from "../api/pages/create-worker-bundle-contents";
4
- import { FatalError } from "../errors";
5
- import { logger } from "../logger";
6
- import * as metrics from "../metrics";
7
- import { buildFunctions } from "./buildFunctions";
8
- import { isInPagesCI } from "./constants";
9
- import {
10
- EXIT_CODE_FUNCTIONS_NOTHING_TO_BUILD_ERROR,
11
- EXIT_CODE_FUNCTIONS_NO_ROUTES_ERROR,
12
- FunctionsNoRoutesError,
13
- getFunctionsNoRoutesWarning,
14
- } from "./errors";
15
- import { buildRawWorker } from "./functions/buildWorker";
16
- import { pagesBetaWarning } from "./utils";
17
- import type { BundleResult } from "../bundle";
18
- import type {
19
- CommonYargsArgv,
20
- StrictYargsOptionsToInterface,
21
- } from "../yargs-types";
22
-
23
- export type PagesBuildArgs = StrictYargsOptionsToInterface<typeof Options>;
24
-
25
- export function Options(yargs: CommonYargsArgv) {
26
- return yargs
27
- .positional("directory", {
28
- type: "string",
29
- default: "functions",
30
- description: "The directory of Pages Functions",
31
- })
32
- .options({
33
- outfile: {
34
- type: "string",
35
- description: "The location of the output Worker script",
36
- },
37
- outdir: {
38
- type: "string",
39
- description: "Output directory for the bundled Worker",
40
- },
41
- "output-config-path": {
42
- type: "string",
43
- description: "The location for the output config file",
44
- },
45
- "output-routes-path": {
46
- type: "string",
47
- description: "The location for the output _routes.json file",
48
- },
49
- minify: {
50
- type: "boolean",
51
- default: false,
52
- description: "Minify the output Worker script",
53
- },
54
- sourcemap: {
55
- type: "boolean",
56
- default: false,
57
- description: "Generate a sourcemap for the output Worker script",
58
- },
59
- "fallback-service": {
60
- type: "string",
61
- default: "ASSETS",
62
- description:
63
- "The service to fallback to at the end of the `next` chain. Setting to '' will fallback to the global `fetch`.",
64
- },
65
- watch: {
66
- type: "boolean",
67
- default: false,
68
- description:
69
- "Watch for changes to the functions and automatically rebuild the Worker script",
70
- },
71
- plugin: {
72
- type: "boolean",
73
- default: false,
74
- description: "Build a plugin rather than a Worker script",
75
- },
76
- "build-output-directory": {
77
- type: "string",
78
- description: "The directory to output static assets to",
79
- },
80
- "node-compat": {
81
- describe: "Enable Node.js compatibility",
82
- default: false,
83
- type: "boolean",
84
- hidden: true,
85
- },
86
- "compatibility-date": {
87
- describe: "Date to use for compatibility checks",
88
- type: "string",
89
- requiresArg: true,
90
- },
91
- "compatibility-flags": {
92
- describe: "Flags to use for compatibility checks",
93
- alias: "compatibility-flag",
94
- type: "string",
95
- requiresArg: true,
96
- array: true,
97
- },
98
- bindings: {
99
- type: "string",
100
- describe:
101
- "Bindings used in Functions (used to register beta product shims)",
102
- deprecated: true,
103
- hidden: true,
104
- },
105
- })
106
- .epilogue(pagesBetaWarning);
107
- }
108
-
109
- export const Handler = async (args: PagesBuildArgs) => {
110
- if (!isInPagesCI) {
111
- // Beta message for `wrangler pages <commands>` usage
112
- logger.log(pagesBetaWarning);
113
- }
114
-
115
- const validatedArgs = validateArgs(args);
116
-
117
- let bundle: BundleResult | undefined = undefined;
118
-
119
- if (validatedArgs.plugin) {
120
- const {
121
- directory,
122
- outfile,
123
- outdir,
124
- outputConfigPath,
125
- outputRoutesPath: routesOutputPath,
126
- minify,
127
- sourcemap,
128
- fallbackService,
129
- watch,
130
- plugin,
131
- nodejsCompat,
132
- legacyNodeCompat,
133
- } = validatedArgs;
134
-
135
- try {
136
- /**
137
- * `buildFunctions` builds `/functions`, but doesn't give us the bundle
138
- * we want to return, which includes the external dependencies (like wasm,
139
- * binary, text). Let's output that build result to memory and only write
140
- * to disk once we have the final bundle
141
- */
142
- bundle = await buildFunctions({
143
- outfile,
144
- outdir,
145
- outputConfigPath,
146
- functionsDirectory: directory,
147
- minify,
148
- sourcemap,
149
- fallbackService,
150
- watch,
151
- plugin,
152
- legacyNodeCompat,
153
- nodejsCompat,
154
- routesOutputPath,
155
- local: false,
156
- });
157
- } catch (e) {
158
- if (e instanceof FunctionsNoRoutesError) {
159
- throw new FatalError(
160
- getFunctionsNoRoutesWarning(directory),
161
- EXIT_CODE_FUNCTIONS_NO_ROUTES_ERROR
162
- );
163
- } else {
164
- throw e;
165
- }
166
- }
167
-
168
- if (outfile && outfile !== bundle.resolvedEntryPointPath) {
169
- writeFileSync(
170
- outfile,
171
- `export { default } from './${relative(
172
- dirname(outfile),
173
- bundle.resolvedEntryPointPath
174
- )}'`
175
- );
176
- }
177
- } else {
178
- const {
179
- directory,
180
- outfile,
181
- outdir,
182
- outputConfigPath,
183
- outputRoutesPath: routesOutputPath,
184
- minify,
185
- sourcemap,
186
- fallbackService,
187
- watch,
188
- plugin,
189
- buildOutputDirectory,
190
- nodejsCompat,
191
- legacyNodeCompat,
192
- bindings,
193
- workerScriptPath,
194
- } = validatedArgs;
195
-
196
- let d1Databases: string[] | undefined = undefined;
197
- if (bindings) {
198
- try {
199
- const decodedBindings = JSON.parse(bindings);
200
- d1Databases = Object.keys(decodedBindings?.d1_databases || {});
201
- } catch {
202
- throw new FatalError("Could not parse a valid set of 'bindings'.", 1);
203
- }
204
- }
205
-
206
- /**
207
- * prioritize building `_worker.js` over Pages Functions, if both exist
208
- * and if we were able to resolve _worker.js
209
- */
210
- if (workerScriptPath) {
211
- /**
212
- * `buildRawWorker` builds `_worker.js`, but doesn't give us the bundle
213
- * we want to return, which includes the external dependencies (like wasm,
214
- * binary, text). Let's output that build result to memory and only write
215
- * to disk once we have the final bundle
216
- */
217
- bundle = await buildRawWorker({
218
- workerScriptPath,
219
- outdir,
220
- directory: buildOutputDirectory,
221
- local: false,
222
- sourcemap,
223
- watch,
224
- betaD1Shims: d1Databases,
225
- });
226
- } else {
227
- try {
228
- /**
229
- * `buildFunctions` builds `/functions`, but doesn't give us the bundle
230
- * we want to return, which includes the external dependencies (like wasm,
231
- * binary, text). Let's output that build result to memory and only write
232
- * to disk once we have the final bundle
233
- */
234
- bundle = await buildFunctions({
235
- outdir,
236
- outputConfigPath,
237
- functionsDirectory: directory,
238
- minify,
239
- sourcemap,
240
- fallbackService,
241
- watch,
242
- plugin,
243
- buildOutputDirectory,
244
- legacyNodeCompat,
245
- nodejsCompat,
246
- routesOutputPath,
247
- local: false,
248
- d1Databases,
249
- });
250
- } catch (e) {
251
- if (e instanceof FunctionsNoRoutesError) {
252
- throw new FatalError(
253
- getFunctionsNoRoutesWarning(directory),
254
- EXIT_CODE_FUNCTIONS_NO_ROUTES_ERROR
255
- );
256
- } else {
257
- throw e;
258
- }
259
- }
260
- }
261
-
262
- if (outfile) {
263
- const workerBundleContents = await createUploadWorkerBundleContents(
264
- bundle as BundleResult
265
- );
266
-
267
- mkdirSync(dirname(outfile), { recursive: true });
268
- writeFileSync(
269
- outfile,
270
- Buffer.from(await workerBundleContents.arrayBuffer())
271
- );
272
- }
273
- }
274
-
275
- await metrics.sendMetricsEvent("build pages functions");
276
- };
277
-
278
- type WorkerBundleArgs = Omit<PagesBuildArgs, "nodeCompat"> & {
279
- plugin: false;
280
- buildOutputDirectory: string;
281
- legacyNodeCompat: boolean;
282
- nodejsCompat: boolean;
283
-
284
- workerScriptPath: string;
285
- };
286
- type PluginArgs = Omit<
287
- PagesBuildArgs,
288
- "buildOutputDirectory" | "bindings" | "nodeCompat"
289
- > & {
290
- plugin: true;
291
- outdir: string;
292
- legacyNodeCompat: boolean;
293
- nodejsCompat: boolean;
294
- };
295
-
296
- type ValidatedArgs = WorkerBundleArgs | PluginArgs;
297
-
298
- const validateArgs = (args: PagesBuildArgs): ValidatedArgs => {
299
- if (args.outdir && args.outfile) {
300
- throw new FatalError(
301
- "Cannot specify both an `--outdir` and an `--outfile`.",
302
- 1
303
- );
304
- }
305
-
306
- if (args.plugin) {
307
- if (args.outfile) {
308
- // Explicit old behavior. Encourage to migrate to `--outdir` instead.
309
- logger.warn(
310
- "Creating a Pages Plugin with `--outfile` is now deprecated. Please use `--outdir` instead."
311
- );
312
-
313
- args.outdir = dirname(resolvePath(args.outfile));
314
- } else if (!args.outfile && !args.outdir) {
315
- // Didn't specify `--outfile`, but didn't specify `--outdir` either. Implicit old behavior defaults. Encourage to migrate to `--outdir`.
316
- args.outfile ??= "_worker.js";
317
- args.outdir = ".";
318
-
319
- logger.warn(
320
- "Creating a Pages Plugin without `--outdir` is now deprecated. Please add an `--outdir` argument."
321
- );
322
- }
323
-
324
- if (args.bindings) {
325
- throw new FatalError(
326
- "The `--bindings` flag cannot be used when creating a Pages Plugin with `--plugin`.",
327
- 1
328
- );
329
- }
330
-
331
- if (args.buildOutputDirectory) {
332
- throw new FatalError(
333
- "The `--build-output-directory` flag cannot be used when creating a Pages Plugin with `--plugin`.",
334
- 1
335
- );
336
- }
337
- } else {
338
- if (!args.outdir) {
339
- args.outfile ??= "_worker.bundle";
340
- }
341
-
342
- args.buildOutputDirectory ??= args.outfile ? dirname(args.outfile) : ".";
343
- }
344
-
345
- if (args.buildOutputDirectory) {
346
- args.buildOutputDirectory = resolvePath(args.buildOutputDirectory);
347
- }
348
- if (args.outdir) {
349
- args.outdir = resolvePath(args.outdir);
350
- }
351
- if (args.outfile) {
352
- args.outfile = resolvePath(args.outfile);
353
- }
354
-
355
- const { nodeCompat: legacyNodeCompat, ...argsExceptNodeCompat } = args;
356
- if (legacyNodeCompat) {
357
- console.warn(
358
- "Enabling Node.js compatibility mode for builtins and globals. This is experimental and has serious tradeoffs. Please see https://github.com/ionic-team/rollup-plugin-node-polyfills/ for more details."
359
- );
360
- }
361
- const nodejsCompat = !!args.compatibilityFlags?.includes("nodejs_compat");
362
- if (legacyNodeCompat && nodejsCompat) {
363
- throw new Error(
364
- "The `nodejs_compat` compatibility flag cannot be used in conjunction with the legacy `--node-compat` flag. If you want to use the Workers runtime Node.js compatibility features, please remove the `--node-compat` argument from your CLI command."
365
- );
366
- }
367
-
368
- let workerScriptPath: string | undefined;
369
-
370
- if (args.buildOutputDirectory) {
371
- const prospectiveWorkerScriptPath = resolvePath(
372
- args.buildOutputDirectory,
373
- "_worker.js"
374
- );
375
-
376
- const foundWorkerScript = existsSync(prospectiveWorkerScriptPath);
377
-
378
- if (foundWorkerScript) {
379
- workerScriptPath = prospectiveWorkerScriptPath;
380
- } else if (!foundWorkerScript && !existsSync(args.directory)) {
381
- throw new FatalError(
382
- `Could not find anything to build.
383
- We first looked inside the build output directory (${basename(
384
- resolvePath(args.buildOutputDirectory)
385
- )}), then looked for the Functions directory (${basename(
386
- args.directory
387
- )}) but couldn't find anything to build.
388
- ➤ If you are trying to build _worker.js, please make sure you provide the [--build-output-directory] containing your static files.
389
- ➤ If you are trying to build Pages Functions, please make sure [directory] points to the location of your Functions files.`,
390
- EXIT_CODE_FUNCTIONS_NOTHING_TO_BUILD_ERROR
391
- );
392
- }
393
- } else if (!existsSync(args.directory)) {
394
- throw new FatalError(
395
- `Could not find anything to build.
396
- We looked for the Functions directory (${basename(
397
- args.directory
398
- )}) but couldn't find anything to build.
399
- ➤ Please make sure [directory] points to the location of your Functions files.`,
400
- EXIT_CODE_FUNCTIONS_NOTHING_TO_BUILD_ERROR
401
- );
402
- }
403
-
404
- return {
405
- ...argsExceptNodeCompat,
406
- workerScriptPath,
407
- nodejsCompat,
408
- legacyNodeCompat,
409
- } as ValidatedArgs;
410
- };