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
package/src/entry.ts DELETED
@@ -1,337 +0,0 @@
1
- import assert from "node:assert";
2
- import { existsSync, statSync } from "node:fs";
3
- import path from "node:path";
4
- import * as esbuild from "esbuild";
5
- import { execaCommand } from "execa";
6
- import { COMMON_ESBUILD_OPTIONS } from "./bundle";
7
- import { logger } from "./logger";
8
- import { getBasePath } from "./paths";
9
- import type { Config } from "./config";
10
- import type { DurableObjectBindings } from "./config/environment";
11
- import type { CfScriptFormat } from "./worker";
12
- import type { Metafile } from "esbuild";
13
-
14
- /**
15
- * An entry point for the Worker.
16
- *
17
- * It consists not just of a `file`, but also of a `directory` that is used to resolve relative paths.
18
- */
19
- export type Entry = {
20
- /** A worker's entrypoint */
21
- file: string;
22
- /** A worker's directory. Usually where the wrangler.toml file is located */
23
- directory: string;
24
- /** Is this a module worker or a service worker? */
25
- format: CfScriptFormat;
26
- /** The directory that contains all of a `--no-bundle` worker's modules. Usually `${directory}/src`. Defaults to path.dirname(file) */
27
- moduleRoot: string;
28
- };
29
-
30
- /**
31
- * Compute the entry-point for the Worker.
32
- */
33
- export async function getEntry(
34
- args: {
35
- script?: string;
36
- format?: CfScriptFormat | undefined;
37
- assets?: string | undefined;
38
- },
39
- config: Config,
40
- command: "dev" | "publish" | "types"
41
- ): Promise<Entry> {
42
- let file: string;
43
- let directory = process.cwd();
44
- if (args.script) {
45
- // If the script name comes from the command line it is relative to the current working directory.
46
- file = path.resolve(args.script);
47
- } else if (config.main === undefined) {
48
- if (config.site?.["entry-point"]) {
49
- directory = path.resolve(path.dirname(config.configPath ?? "."));
50
- file = path.extname(config.site?.["entry-point"])
51
- ? path.resolve(config.site?.["entry-point"])
52
- : // site.entry-point could be a directory
53
- path.resolve(config.site?.["entry-point"], "index.js");
54
- } else if (args.assets || config.assets) {
55
- file = path.resolve(getBasePath(), "templates/no-op-worker.js");
56
- } else {
57
- throw new Error(
58
- `Missing entry-point: The entry-point should be specified via the command line (e.g. \`wrangler ${command} path/to/script\`) or the \`main\` config field.`
59
- );
60
- }
61
- } else {
62
- directory = path.resolve(path.dirname(config.configPath ?? "."));
63
- file = path.resolve(directory, config.main);
64
- }
65
-
66
- const relativeFile = path.relative(directory, file) || ".";
67
- await runCustomBuild(file, relativeFile, config.build);
68
-
69
- if (fileExists(file) === false) {
70
- throw new Error(
71
- getMissingEntryPointMessage(
72
- `The entry-point file at "${relativeFile}" was not found.`,
73
- file,
74
- relativeFile
75
- )
76
- );
77
- }
78
- const format = await guessWorkerFormat(
79
- file,
80
- directory,
81
- args.format ?? config.build?.upload?.format,
82
- config.tsconfig
83
- );
84
-
85
- const { localBindings, remoteBindings } =
86
- partitionDurableObjectBindings(config);
87
-
88
- if (command === "dev" && remoteBindings.length > 0) {
89
- logger.warn(
90
- "WARNING: You have Durable Object bindings that are not defined locally in the worker being developed.\n" +
91
- "Be aware that changes to the data stored in these Durable Objects will be permanent and affect the live instances.\n" +
92
- "Remote Durable Objects that are affected:\n" +
93
- remoteBindings.map((b) => `- ${JSON.stringify(b)}`).join("\n")
94
- );
95
- }
96
-
97
- if (format === "service-worker" && localBindings.length > 0) {
98
- const errorMessage =
99
- "You seem to be trying to use Durable Objects in a Worker written as a service-worker.";
100
- const addScriptName =
101
- "You can use Durable Objects defined in other Workers by specifying a `script_name` in your wrangler.toml, where `script_name` is the name of the Worker that implements that Durable Object. For example:";
102
- const addScriptNameExamples = generateAddScriptNameExamples(localBindings);
103
- const migrateText =
104
- "Alternatively, migrate your worker to ES Module syntax to implement a Durable Object in this Worker:";
105
- const migrateUrl =
106
- "https://developers.cloudflare.com/workers/learning/migrating-to-module-workers/";
107
- throw new Error(
108
- `${errorMessage}\n${addScriptName}\n${addScriptNameExamples}\n${migrateText}\n${migrateUrl}`
109
- );
110
- }
111
-
112
- return {
113
- file,
114
- directory,
115
- format,
116
- moduleRoot: config.base_dir ?? path.dirname(file),
117
- };
118
- }
119
-
120
- export async function runCustomBuild(
121
- expectedEntryAbsolute: string,
122
- expectedEntryRelative: string,
123
- build: Config["build"]
124
- ) {
125
- if (build?.command) {
126
- // TODO: add a deprecation message here?
127
- logger.log("Running custom build:", build.command);
128
- await execaCommand(build.command, {
129
- shell: true,
130
- // we keep these two as "inherit" so that
131
- // logs are still visible.
132
- stdout: "inherit",
133
- stderr: "inherit",
134
- ...(build.cwd && { cwd: build.cwd }),
135
- });
136
-
137
- if (fileExists(expectedEntryAbsolute) === false) {
138
- throw new Error(
139
- getMissingEntryPointMessage(
140
- `The expected output file at "${expectedEntryRelative}" was not found after running custom build: ${build.command}.\n` +
141
- "The `main` property in wrangler.toml should point to the file generated by the custom build.",
142
- expectedEntryAbsolute,
143
- expectedEntryRelative
144
- )
145
- );
146
- }
147
- }
148
- }
149
-
150
- /**
151
- * A function to "guess" the type of worker.
152
- * We do this by running a lightweight build of the actual script,
153
- * and looking at the metafile generated by esbuild. If it has a default
154
- * export (or really, any exports), that means it's a "modules" worker.
155
- * Else, it's a "service-worker" worker. This seems hacky, but works remarkably
156
- * well in practice.
157
- */
158
- export default async function guessWorkerFormat(
159
- entryFile: string,
160
- entryWorkingDirectory: string,
161
- hint: CfScriptFormat | undefined,
162
- tsconfig?: string | undefined
163
- ): Promise<CfScriptFormat> {
164
- const result = await esbuild.build({
165
- ...COMMON_ESBUILD_OPTIONS,
166
- entryPoints: [entryFile],
167
- absWorkingDir: entryWorkingDirectory,
168
- metafile: true,
169
- bundle: false,
170
- write: false,
171
- ...(tsconfig && { tsconfig }),
172
- });
173
- // result.metafile is defined because of the `metafile: true` option above.
174
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
175
- const metafile = result.metafile!;
176
- const entryPoints = Object.entries(metafile.outputs).filter(
177
- ([_path, output]) => output.entryPoint !== undefined
178
- );
179
- assert(
180
- entryPoints.length > 0,
181
- `Cannot find entry-point "${entryFile}" in generated bundle.` +
182
- listEntryPoints(entryPoints)
183
- );
184
- assert(
185
- entryPoints.length < 2,
186
- "More than one entry-point found for generated bundle." +
187
- listEntryPoints(entryPoints)
188
- );
189
-
190
- let guessedWorkerFormat: CfScriptFormat;
191
- const scriptExports = entryPoints[0][1].exports;
192
- if (scriptExports.length > 0) {
193
- if (scriptExports.includes("default")) {
194
- guessedWorkerFormat = "modules";
195
- } else {
196
- logger.warn(
197
- `The entrypoint ${path.relative(
198
- process.cwd(),
199
- entryFile
200
- )} has exports like an ES Module, but hasn't defined a default export like a module worker normally would. Building the worker using "service-worker" format...`
201
- );
202
- guessedWorkerFormat = "service-worker";
203
- }
204
- } else {
205
- guessedWorkerFormat = "service-worker";
206
- }
207
-
208
- if (hint) {
209
- if (hint !== guessedWorkerFormat) {
210
- if (hint === "service-worker") {
211
- throw new Error(
212
- "You configured this worker to be a 'service-worker', but the file you are trying to build appears to have a `default` export like a module worker. Please pass `--format modules`, or simply remove the configuration."
213
- );
214
- } else {
215
- throw new Error(
216
- "You configured this worker to be 'modules', but the file you are trying to build doesn't export a handler. Please pass `--format service-worker`, or simply remove the configuration."
217
- );
218
- }
219
- }
220
- }
221
- return guessedWorkerFormat;
222
- }
223
-
224
- function listEntryPoints(
225
- outputs: [string, ValueOf<Metafile["outputs"]>][]
226
- ): string {
227
- return outputs.map(([_input, output]) => output.entryPoint).join("\n");
228
- }
229
-
230
- type ValueOf<T> = T[keyof T];
231
-
232
- /**
233
- * Returns true if the given `filePath` exists as-is,
234
- * or if some version of it (by appending a common extension) exists.
235
- */
236
- export function fileExists(filePath: string): boolean {
237
- if (path.extname(filePath) !== "") {
238
- return existsSync(filePath);
239
- }
240
- const base = path.join(path.dirname(filePath), path.basename(filePath));
241
- for (const ext of [".ts", ".tsx", ".js", ".jsx"]) {
242
- if (existsSync(base + ext)) {
243
- return true;
244
- }
245
- }
246
- return false;
247
- }
248
-
249
- /**
250
- * Groups the durable object bindings into two lists:
251
- * those that are defined locally and those that refer to a durable object defined in another script.
252
- */
253
- function partitionDurableObjectBindings(config: Config): {
254
- localBindings: DurableObjectBindings;
255
- remoteBindings: DurableObjectBindings;
256
- } {
257
- const localBindings: DurableObjectBindings = [];
258
- const remoteBindings: DurableObjectBindings = [];
259
- for (const binding of config.durable_objects.bindings) {
260
- if (binding.script_name === undefined) {
261
- localBindings.push(binding);
262
- } else {
263
- remoteBindings.push(binding);
264
- }
265
- }
266
- return { localBindings, remoteBindings };
267
- }
268
-
269
- /**
270
- * Generates some help text based on the Durable Object bindings in a given
271
- * config indicating how the user can add a `script_name` field to bind an
272
- * externally defined Durable Object.
273
- */
274
- function generateAddScriptNameExamples(
275
- localBindings: DurableObjectBindings
276
- ): string {
277
- function exampleScriptName(binding_name: string): string {
278
- return `${binding_name.toLowerCase().replaceAll("_", "-")}-worker`;
279
- }
280
-
281
- return localBindings
282
- .map(({ name, class_name }) => {
283
- const script_name = exampleScriptName(name);
284
- const currentBinding = `{ name = ${name}, class_name = ${class_name} }`;
285
- const fixedBinding = `{ name = ${name}, class_name = ${class_name}, script_name = ${script_name} }`;
286
-
287
- return `${currentBinding} ==> ${fixedBinding}`;
288
- })
289
- .join("\n");
290
- }
291
-
292
- /**
293
- * Generate an appropriate message for when the entry-point is missing.
294
- *
295
- * To be more helpful to developers, we check whether there is a suitable file
296
- * nearby to the expected file path.
297
- */
298
- function getMissingEntryPointMessage(
299
- message: string,
300
- absoluteEntryPointPath: string,
301
- relativeEntryPointPath: string
302
- ): string {
303
- if (
304
- existsSync(absoluteEntryPointPath) &&
305
- statSync(absoluteEntryPointPath).isDirectory()
306
- ) {
307
- // The expected entry-point is a directory, so offer further guidance.
308
- message += `\nThe provided entry-point path, "${relativeEntryPointPath}", points to a directory, rather than a file.\n`;
309
-
310
- // Perhaps we can even guess what the correct path should be...
311
- const possiblePaths: string[] = [];
312
- for (const basenamePath of [
313
- "worker",
314
- "dist/worker",
315
- "index",
316
- "dist/index",
317
- ]) {
318
- for (const extension of [".ts", ".tsx", ".js", ".jsx"]) {
319
- const filePath = basenamePath + extension;
320
- if (fileExists(path.resolve(absoluteEntryPointPath, filePath))) {
321
- possiblePaths.push(path.join(relativeEntryPointPath, filePath));
322
- }
323
- }
324
- }
325
-
326
- if (possiblePaths.length > 0) {
327
- message +=
328
- `\nDid you mean to set the main field to${
329
- possiblePaths.length > 1 ? " one of" : ""
330
- }:\n` +
331
- "```\n" +
332
- possiblePaths.map((filePath) => `main = "./${filePath}"\n`).join("") +
333
- "```";
334
- }
335
- }
336
- return message;
337
- }
@@ -1,88 +0,0 @@
1
- import { logger } from "../logger";
2
-
3
- type VariableNames =
4
- | "CLOUDFLARE_ACCOUNT_ID"
5
- | "CLOUDFLARE_API_TOKEN"
6
- | "CLOUDFLARE_API_KEY"
7
- | "CLOUDFLARE_EMAIL"
8
- | "WRANGLER_SEND_METRICS"
9
- | "CLOUDFLARE_API_BASE_URL"
10
- | "WRANGLER_LOG"
11
- | "WRANGLER_API_ENVIRONMENT"
12
- | "WRANGLER_CLIENT_ID"
13
- | "WRANGLER_AUTH_DOMAIN"
14
- | "WRANGLER_AUTH_URL"
15
- | "WRANGLER_TOKEN_URL"
16
- | "WRANGLER_REVOKE_URL"
17
- | "WRANGLER_CF_AUTHORIZATION_TOKEN";
18
-
19
- type DeprecatedNames =
20
- | "CF_ACCOUNT_ID"
21
- | "CF_API_TOKEN"
22
- | "CF_API_KEY"
23
- | "CF_EMAIL"
24
- | "CF_API_BASE_URL";
25
-
26
- /**
27
- * Create a function used to access an environment variable.
28
- *
29
- * This is not memoized to allow us to change the value at runtime, such as in testing.
30
- * A warning is shown if the client is using a deprecated version - but only once.
31
- */
32
- export function getEnvironmentVariableFactory({
33
- variableName,
34
- deprecatedName,
35
- }: {
36
- variableName: VariableNames;
37
- deprecatedName?: DeprecatedNames;
38
- }): () => string | undefined;
39
-
40
- /**
41
- * Create a function used to access an environment variable, with a default value.
42
- *
43
- * This is not memoized to allow us to change the value at runtime, such as in testing.
44
- * A warning is shown if the client is using a deprecated version - but only once.
45
- */
46
- export function getEnvironmentVariableFactory({
47
- variableName,
48
- deprecatedName,
49
- defaultValue,
50
- }: {
51
- variableName: VariableNames;
52
- deprecatedName?: DeprecatedNames;
53
- defaultValue: () => string;
54
- }): () => string;
55
-
56
- /**
57
- * Create a function used to access an environment variable.
58
- *
59
- * This is not memoized to allow us to change the value at runtime, such as in testing.
60
- * A warning is shown if the client is using a deprecated version - but only once.
61
- */
62
- export function getEnvironmentVariableFactory({
63
- variableName,
64
- deprecatedName,
65
- defaultValue,
66
- }: {
67
- variableName: VariableNames;
68
- deprecatedName?: DeprecatedNames;
69
- defaultValue?: () => string;
70
- }): () => string | undefined {
71
- let hasWarned = false;
72
- return () => {
73
- if (process.env[variableName]) {
74
- return process.env[variableName];
75
- } else if (deprecatedName && process.env[deprecatedName]) {
76
- if (!hasWarned) {
77
- // Only show the warning once.
78
- hasWarned = true;
79
- logger.warn(
80
- `Using "${deprecatedName}" environment variable. This is deprecated. Please use "${variableName}", instead.`
81
- );
82
- }
83
- return process.env[deprecatedName];
84
- } else {
85
- return defaultValue?.();
86
- }
87
- };
88
- }
@@ -1,30 +0,0 @@
1
- import { getEnvironmentVariableFactory } from "./factory";
2
-
3
- /**
4
- * `WRANGLER_SEND_METRICS` can override whether we attempt to send metrics information to Sparrow.
5
- */
6
- export const getWranglerSendMetricsFromEnv = getEnvironmentVariableFactory({
7
- variableName: "WRANGLER_SEND_METRICS",
8
- });
9
-
10
- /**
11
- * Set `WRANGLER_API_ENVIRONMENT` environment variable to "staging" to tell Wrangler to hit the staging APIs rather than production.
12
- */
13
- export const getCloudflareApiEnvironmentFromEnv = getEnvironmentVariableFactory(
14
- {
15
- variableName: "WRANGLER_API_ENVIRONMENT",
16
- defaultValue: () => "production",
17
- }
18
- );
19
-
20
- /**
21
- * `CLOUDFLARE_API_BASE_URL` specifies the URL to the Cloudflare API.
22
- */
23
- export const getCloudflareApiBaseUrl = getEnvironmentVariableFactory({
24
- variableName: "CLOUDFLARE_API_BASE_URL",
25
- deprecatedName: "CF_API_BASE_URL",
26
- defaultValue: () =>
27
- getCloudflareApiEnvironmentFromEnv() === "staging"
28
- ? "https://api.staging.cloudflare.com/client/v4"
29
- : "https://api.cloudflare.com/client/v4",
30
- });
package/src/errors.ts DELETED
@@ -1,11 +0,0 @@
1
- export class DeprecationError extends Error {
2
- constructor(message: string) {
3
- super(`Deprecation:\n${message}`);
4
- }
5
- }
6
-
7
- export class FatalError extends Error {
8
- constructor(message?: string, readonly code?: number) {
9
- super(message);
10
- }
11
- }