wrangler 0.0.0-e7a0cd5b → 0.0.0-e87ad068

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 (255) hide show
  1. package/README.md +3 -3
  2. package/bin/wrangler.js +30 -10
  3. package/miniflare-dist/index.mjs +254 -128
  4. package/package.json +27 -19
  5. package/src/__tests__/api-dev.test.ts +65 -36
  6. package/src/__tests__/api-devregistry.test.ts +121 -0
  7. package/src/__tests__/api.test.ts +27 -5
  8. package/src/__tests__/configuration.test.ts +797 -98
  9. package/src/__tests__/constellation.test.ts +371 -0
  10. package/src/__tests__/d1/d1.test.ts +82 -0
  11. package/src/__tests__/d1/execute.test.ts +66 -0
  12. package/src/__tests__/d1/migrate.test.ts +257 -0
  13. package/src/__tests__/d1/splitter.test.ts +255 -0
  14. package/src/__tests__/delete.test.ts +91 -49
  15. package/src/__tests__/deployments.test.ts +330 -56
  16. package/src/__tests__/dev.test.tsx +198 -90
  17. package/src/__tests__/generate.test.ts +12 -10
  18. package/src/__tests__/guess-worker-format.test.ts +35 -0
  19. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  20. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  21. package/src/__tests__/helpers/mock-console.ts +6 -0
  22. package/src/__tests__/helpers/mock-dialogs.ts +71 -85
  23. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  24. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
  25. package/src/__tests__/helpers/mock-known-routes.ts +7 -2
  26. package/src/__tests__/helpers/mock-kv.ts +29 -16
  27. package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
  28. package/src/__tests__/helpers/mock-process.ts +8 -13
  29. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  30. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  31. package/src/__tests__/helpers/msw/handlers/deployments.ts +128 -27
  32. package/src/__tests__/helpers/msw/handlers/namespaces.ts +18 -41
  33. package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
  34. package/src/__tests__/helpers/msw/handlers/r2.ts +14 -34
  35. package/src/__tests__/helpers/msw/handlers/script.ts +9 -28
  36. package/src/__tests__/helpers/msw/handlers/user.ts +13 -24
  37. package/src/__tests__/helpers/msw/handlers/zones.ts +6 -8
  38. package/src/__tests__/helpers/msw/index.ts +32 -1
  39. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  40. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  41. package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
  42. package/src/__tests__/index.test.ts +92 -72
  43. package/src/__tests__/init.test.ts +1033 -631
  44. package/src/__tests__/jest.setup.ts +19 -42
  45. package/src/__tests__/kv.test.ts +355 -231
  46. package/src/__tests__/logger.test.ts +68 -2
  47. package/src/__tests__/logout.test.ts +47 -0
  48. package/src/__tests__/metrics.test.ts +94 -51
  49. package/src/__tests__/middleware.scheduled.test.ts +42 -32
  50. package/src/__tests__/middleware.test.ts +212 -122
  51. package/src/__tests__/mtls-certificates.test.ts +589 -0
  52. package/src/__tests__/pages/deployment-list.test.ts +80 -0
  53. package/src/__tests__/pages/functions-build.test.ts +529 -0
  54. package/src/__tests__/pages/pages.test.ts +81 -0
  55. package/src/__tests__/pages/project-create.test.ts +63 -0
  56. package/src/__tests__/pages/project-list.test.ts +110 -0
  57. package/src/__tests__/pages/project-upload.test.ts +500 -0
  58. package/src/__tests__/pages/publish.test.ts +2864 -0
  59. package/src/__tests__/pages-deployment-tail.test.ts +957 -0
  60. package/src/__tests__/parse.test.ts +106 -0
  61. package/src/__tests__/publish.test.ts +2227 -1005
  62. package/src/__tests__/pubsub.test.ts +226 -100
  63. package/src/__tests__/queues.test.ts +238 -77
  64. package/src/__tests__/r2.test.ts +55 -57
  65. package/src/__tests__/secret.test.ts +179 -130
  66. package/src/__tests__/tail.test.ts +313 -113
  67. package/src/__tests__/test-old-node-version.js +3 -3
  68. package/src/__tests__/traverse-module-graph.test.ts +220 -0
  69. package/src/__tests__/tsconfig-sanity.ts +12 -0
  70. package/src/__tests__/tsconfig.json +8 -0
  71. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  72. package/src/__tests__/type-generation.test.ts +43 -26
  73. package/src/__tests__/unstableDev.test.ts +61 -0
  74. package/src/__tests__/user.test.ts +35 -72
  75. package/src/__tests__/whoami.test.tsx +8 -114
  76. package/src/__tests__/worker-namespace.test.ts +83 -69
  77. package/src/api/dev.ts +180 -60
  78. package/src/api/index.ts +10 -1
  79. package/src/api/mtls-certificate.ts +148 -0
  80. package/src/api/pages/create-worker-bundle-contents.ts +80 -0
  81. package/src/api/pages/index.ts +5 -0
  82. package/src/api/pages/publish.tsx +371 -0
  83. package/src/bundle.ts +315 -148
  84. package/src/cfetch/index.ts +0 -2
  85. package/src/cfetch/internal.ts +33 -33
  86. package/src/cli.ts +4 -4
  87. package/src/config/config.ts +14 -7
  88. package/src/config/environment.ts +120 -24
  89. package/src/config/index.ts +117 -35
  90. package/src/config/validation-helpers.ts +1 -1
  91. package/src/config/validation.ts +430 -19
  92. package/src/constellation/createProject.tsx +51 -0
  93. package/src/constellation/deleteProject.ts +51 -0
  94. package/src/constellation/deleteProjectModel.ts +76 -0
  95. package/src/constellation/index.ts +75 -0
  96. package/src/constellation/listCatalog.tsx +35 -0
  97. package/src/constellation/listModel.tsx +49 -0
  98. package/src/constellation/listProject.tsx +28 -0
  99. package/src/constellation/listRuntime.tsx +28 -0
  100. package/src/constellation/options.ts +17 -0
  101. package/src/constellation/types.ts +17 -0
  102. package/src/constellation/uploadModel.tsx +84 -0
  103. package/src/constellation/utils.ts +90 -0
  104. package/src/create-worker-preview.ts +19 -8
  105. package/src/create-worker-upload-form.ts +81 -18
  106. package/src/d1/backups.tsx +47 -46
  107. package/src/d1/constants.ts +5 -0
  108. package/src/d1/create.tsx +85 -37
  109. package/src/d1/{delete.tsx → delete.ts} +12 -15
  110. package/src/d1/execute.tsx +228 -156
  111. package/src/d1/index.ts +31 -7
  112. package/src/d1/list.tsx +27 -13
  113. package/src/d1/migrations/apply.tsx +235 -0
  114. package/src/d1/migrations/create.tsx +79 -0
  115. package/src/d1/migrations/helpers.ts +171 -0
  116. package/src/d1/migrations/index.ts +3 -0
  117. package/src/d1/migrations/list.tsx +95 -0
  118. package/src/d1/migrations/options.ts +23 -0
  119. package/src/d1/options.ts +12 -2
  120. package/src/d1/splitter.ts +161 -0
  121. package/src/d1/types.ts +32 -0
  122. package/src/d1/utils.ts +12 -2
  123. package/src/delete.ts +8 -16
  124. package/src/deployments.ts +340 -46
  125. package/src/deprecated/index.ts +8 -302
  126. package/src/dev/dev.tsx +66 -46
  127. package/src/dev/local.tsx +339 -104
  128. package/src/dev/remote.tsx +36 -3
  129. package/src/dev/start-server.ts +146 -101
  130. package/src/dev/use-esbuild.ts +82 -56
  131. package/src/dev/validate-dev-props.ts +9 -0
  132. package/src/{dev-registry.tsx → dev-registry.ts} +13 -1
  133. package/src/dev.tsx +202 -125
  134. package/src/dialogs.ts +136 -0
  135. package/src/dispatch-namespace.ts +21 -17
  136. package/src/docs/helpers.ts +50 -0
  137. package/src/docs/index.ts +54 -0
  138. package/src/entry.ts +26 -11
  139. package/src/environment-variables/factory.ts +89 -0
  140. package/src/environment-variables/misc-variables.ts +30 -0
  141. package/src/generate/index.ts +303 -0
  142. package/src/git-client.ts +15 -4
  143. package/src/{index.tsx → index.ts} +148 -63
  144. package/src/init.ts +301 -197
  145. package/src/inspect.ts +122 -6
  146. package/src/jest.d.ts +4 -0
  147. package/src/kv/helpers.ts +7 -4
  148. package/src/kv/index.ts +15 -17
  149. package/src/logger.ts +36 -5
  150. package/src/metrics/metrics-config.ts +3 -3
  151. package/src/metrics/send-event.ts +6 -1
  152. package/src/miniflare-cli/assets.ts +64 -28
  153. package/src/miniflare-cli/index.ts +6 -9
  154. package/src/miniflare-cli/tsconfig.json +9 -0
  155. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  156. package/src/miniflare-cli/types.ts +11 -0
  157. package/src/module-collection.ts +92 -26
  158. package/src/mtls-certificate/cli.ts +155 -0
  159. package/src/pages/build.ts +423 -0
  160. package/src/pages/buildFunctions.ts +140 -0
  161. package/src/pages/deployment-tails.ts +281 -0
  162. package/src/pages/deployments.tsx +11 -33
  163. package/src/pages/{dev.tsx → dev.ts} +192 -126
  164. package/src/pages/errors.ts +1 -0
  165. package/src/pages/functions/buildPlugin.ts +73 -69
  166. package/src/pages/functions/buildWorker.ts +342 -117
  167. package/src/pages/functions/tsconfig.json +8 -0
  168. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  169. package/src/pages/{functions.tsx → functions.ts} +8 -4
  170. package/src/pages/{index.tsx → index.ts} +11 -3
  171. package/src/pages/projects.tsx +12 -22
  172. package/src/pages/prompt-select-project.tsx +31 -0
  173. package/src/pages/publish.tsx +45 -214
  174. package/src/pages/types.ts +6 -9
  175. package/src/pages/upload.tsx +58 -14
  176. package/src/pages/utils.ts +14 -3
  177. package/src/parse.ts +23 -1
  178. package/src/paths.ts +1 -1
  179. package/src/proxy.ts +5 -0
  180. package/src/publish/index.ts +20 -16
  181. package/src/publish/publish.ts +81 -48
  182. package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +19 -20
  183. package/src/queues/cli/commands/consumer/add.ts +24 -24
  184. package/src/queues/cli/commands/consumer/index.ts +3 -6
  185. package/src/queues/cli/commands/consumer/remove.ts +11 -18
  186. package/src/queues/cli/commands/create.ts +8 -8
  187. package/src/queues/cli/commands/delete.ts +8 -8
  188. package/src/queues/cli/commands/index.ts +6 -4
  189. package/src/queues/cli/commands/list.ts +8 -8
  190. package/src/queues/client.ts +1 -0
  191. package/src/queues/utils.ts +18 -0
  192. package/src/r2/constants.ts +4 -0
  193. package/src/r2/helpers.ts +1 -0
  194. package/src/r2/index.ts +40 -28
  195. package/src/secret/index.ts +18 -17
  196. package/src/{sites.tsx → sites.ts} +165 -53
  197. package/src/tail/createTail.ts +103 -3
  198. package/src/tail/filters.ts +1 -1
  199. package/src/tail/index.ts +8 -11
  200. package/src/tail/printing.ts +27 -0
  201. package/src/traverse-module-graph.ts +54 -0
  202. package/src/tsconfig-sanity.ts +16 -0
  203. package/src/type-generation.ts +85 -57
  204. package/src/user/access.ts +0 -1
  205. package/src/user/auth-variables.ts +113 -0
  206. package/src/user/choose-account.tsx +1 -31
  207. package/src/user/index.ts +0 -1
  208. package/src/user/{user.tsx → user.ts} +124 -82
  209. package/src/utils/render.ts +93 -0
  210. package/src/{whoami.tsx → whoami.ts} +37 -71
  211. package/src/worker.ts +61 -3
  212. package/src/yargs-types.ts +22 -5
  213. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  214. package/templates/__tests__/tsconfig.json +8 -0
  215. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  216. package/templates/checked-fetch.js +9 -3
  217. package/templates/d1-beta-facade.js +95 -25
  218. package/templates/facade.d.ts +14 -0
  219. package/templates/first-party-worker-module-facade.ts +4 -3
  220. package/templates/format-dev-errors.ts +8 -6
  221. package/templates/gitignore +1 -0
  222. package/templates/init-tests/test-jest-new-worker.js +3 -5
  223. package/templates/init-tests/test-vitest-new-worker.js +3 -5
  224. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  225. package/templates/middleware/loader-modules.ts +2 -2
  226. package/templates/middleware/loader-sw.ts +51 -31
  227. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  228. package/templates/new-worker.ts +3 -0
  229. package/templates/pages-dev-pipeline.ts +4 -1
  230. package/templates/pages-dev-util.ts +4 -1
  231. package/templates/pages-shim.ts +4 -1
  232. package/templates/pages-template-plugin.ts +19 -10
  233. package/templates/serve-static-assets.ts +17 -14
  234. package/templates/service-bindings-module-facade.js +1 -0
  235. package/templates/tsconfig-sanity.ts +11 -0
  236. package/templates/tsconfig.init.json +105 -0
  237. package/templates/tsconfig.json +5 -103
  238. package/templates/tsconfig.tsbuildinfo +1 -0
  239. package/wrangler-dist/cli.d.ts +902 -77
  240. package/wrangler-dist/cli.js +131685 -140615
  241. package/wrangler-dist/wasm-sync.wasm +0 -0
  242. package/src/__tests__/api-devregistry.test.js +0 -57
  243. package/src/__tests__/d1.test.ts +0 -72
  244. package/src/__tests__/dialogs.test.tsx +0 -40
  245. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  246. package/src/__tests__/pages.test.ts +0 -2223
  247. package/src/d1/types.tsx +0 -14
  248. package/src/dialogs.tsx +0 -163
  249. package/src/environment-variables.ts +0 -50
  250. package/src/pages/build.tsx +0 -238
  251. package/src/user/env-vars.ts +0 -46
  252. package/templates/experimental-local-cache-stubs.js +0 -27
  253. /package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
  254. /package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
  255. /package/src/pages/{hash.tsx → hash.ts} +0 -0
package/src/d1/types.tsx DELETED
@@ -1,14 +0,0 @@
1
- export type Database = {
2
- uuid: string;
3
- name: string;
4
- };
5
-
6
- export type Backup = {
7
- id: string;
8
- database_id: string;
9
- created_at: string;
10
- state: "progress" | "done";
11
- num_tables: number;
12
- file_size: number;
13
- size?: string;
14
- };
package/src/dialogs.tsx DELETED
@@ -1,163 +0,0 @@
1
- import chalk from "chalk";
2
- import { Box, Text, useInput, render } from "ink";
3
- import SelectInput from "ink-select-input";
4
- import TextInput from "ink-text-input";
5
- import * as React from "react";
6
- import { useState } from "react";
7
-
8
- import { CI } from "./is-ci";
9
- import isInteractive from "./is-interactive";
10
- import { logger } from "./logger";
11
-
12
- type ConfirmProps = {
13
- text: string;
14
- onConfirm: (answer: boolean) => void;
15
- };
16
- function Confirm(props: ConfirmProps) {
17
- useInput((input: string, key) => {
18
- if (input === "y" || key.return === true) {
19
- props.onConfirm(true);
20
- } else if (input === "n") {
21
- props.onConfirm(false);
22
- } else {
23
- logger.warn("Unrecognised input:", input);
24
- }
25
- });
26
- return (
27
- <Box>
28
- <Text>
29
- {props.text} ({chalk.bold("y")}/n)
30
- </Text>
31
- </Box>
32
- );
33
- }
34
-
35
- export function confirm(text: string): Promise<boolean> {
36
- return new Promise((resolve) => {
37
- const { unmount } = render(
38
- <Confirm
39
- text={text}
40
- onConfirm={(answer: boolean) => {
41
- unmount();
42
- resolve(answer);
43
- }}
44
- />
45
- );
46
- });
47
- }
48
-
49
- type PromptProps = {
50
- text: string;
51
- defaultValue?: string;
52
- type?: "text" | "password";
53
- onSubmit: (text: string) => void;
54
- };
55
-
56
- function Prompt(props: PromptProps) {
57
- const [value, setValue] = useState(props.defaultValue || "");
58
-
59
- return (
60
- <Box>
61
- <Text>{props.text} </Text>
62
- <Box>
63
- <TextInput
64
- mask={props.type === "password" ? "*" : undefined}
65
- value={value}
66
- onChange={setValue}
67
- onSubmit={props.onSubmit}
68
- />
69
- </Box>
70
- </Box>
71
- );
72
- }
73
-
74
- export async function prompt(
75
- text: string,
76
- type: "text" | "password" = "text",
77
- defaultValue?: string
78
- ): Promise<string> {
79
- return new Promise((resolve) => {
80
- const { unmount } = render(
81
- <Prompt
82
- text={text}
83
- defaultValue={defaultValue}
84
- type={type}
85
- onSubmit={(inputText) => {
86
- unmount();
87
- resolve(inputText);
88
- }}
89
- />
90
- );
91
- });
92
- }
93
-
94
- type SelectOption = {
95
- value: string;
96
- label: string;
97
- };
98
-
99
- type SelectProps = {
100
- text: string;
101
- options: SelectOption[];
102
- initialIndex: number;
103
- onSelect: (value: string) => void;
104
- };
105
-
106
- function Select(props: SelectProps) {
107
- return (
108
- <Box flexDirection="column">
109
- <Text>{props.text}</Text>
110
- <SelectInput
111
- initialIndex={props.initialIndex}
112
- items={props.options}
113
- onSelect={async (selected) => {
114
- props.onSelect(selected.value);
115
- }}
116
- />
117
- </Box>
118
- );
119
- }
120
-
121
- export function select(
122
- text: string,
123
- options: SelectOption[],
124
- initialIndex: number
125
- ): Promise<string> {
126
- return new Promise((resolve) => {
127
- const { unmount } = render(
128
- <Select
129
- text={text}
130
- options={options}
131
- initialIndex={initialIndex}
132
- onSelect={(option: string) => {
133
- unmount();
134
- resolve(option);
135
- }}
136
- />
137
- );
138
- });
139
- }
140
-
141
- export function logDim(msg: string) {
142
- console.log(chalk.gray(msg));
143
- }
144
-
145
- export async function fromDashMessagePrompt(
146
- deploySource: "dash" | "wrangler" | "api"
147
- ): Promise<boolean | void> {
148
- if (deploySource === "dash") {
149
- logger.warn(
150
- `You are about to publish a Workers Service that was last published via the Cloudflare Dashboard.
151
- Edits that have been made via the dashboard will be overridden by your local code and config.`
152
- );
153
-
154
- if (!isInteractive() || CI.isCI()) return true;
155
-
156
- return await confirm("Would you like to continue?");
157
- }
158
- }
159
- export async function tailDOLogPrompt(): Promise<boolean | void> {
160
- if (!isInteractive() || CI.isCI()) return true;
161
-
162
- return await confirm("Would you like to continue?");
163
- }
@@ -1,50 +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
-
12
- type DeprecatedNames =
13
- | "CF_ACCOUNT_ID"
14
- | "CF_API_TOKEN"
15
- | "CF_API_KEY"
16
- | "CF_EMAIL"
17
- | "CF_API_BASE_URL";
18
- /**
19
- * Create a function used to access an environment variable.
20
- *
21
- * This is not memoized to allow us to change the value at runtime, such as in testing.
22
- * A warning is shown if the client is using a deprecated version - but only once.
23
- */
24
- export function getEnvironmentVariableFactory({
25
- variableName,
26
- deprecatedName,
27
- defaultValue,
28
- }: {
29
- variableName: VariableNames;
30
- deprecatedName?: DeprecatedNames;
31
- defaultValue?: string;
32
- }) {
33
- let hasWarned = false;
34
- return () => {
35
- if (process.env[variableName]) {
36
- return process.env[variableName];
37
- } else if (deprecatedName && process.env[deprecatedName]) {
38
- if (!hasWarned) {
39
- // Only show the warning once.
40
- hasWarned = true;
41
- logger.warn(
42
- `Using "${deprecatedName}" environment variable. This is deprecated. Please use "${variableName}", instead.`
43
- );
44
- }
45
- return process.env[deprecatedName];
46
- } else {
47
- return defaultValue;
48
- }
49
- };
50
- }
@@ -1,238 +0,0 @@
1
- import { writeFileSync } from "node:fs";
2
- import { tmpdir } from "node:os";
3
- import { dirname, join } from "node:path";
4
- import { FatalError } from "../errors";
5
- import { logger } from "../logger";
6
- import * as metrics from "../metrics";
7
- import { toUrlPath } from "../paths";
8
- import { isInPagesCI } from "./constants";
9
- import {
10
- EXIT_CODE_FUNCTIONS_NO_ROUTES_ERROR,
11
- FunctionsNoRoutesError,
12
- getFunctionsNoRoutesWarning,
13
- } from "./errors";
14
- import { buildPlugin } from "./functions/buildPlugin";
15
- import { buildWorker } from "./functions/buildWorker";
16
- import { generateConfigFromFileTree } from "./functions/filepath-routing";
17
- import { writeRoutesModule } from "./functions/routes";
18
- import { convertRoutesToRoutesJSONSpec } from "./functions/routes-transformation";
19
- import { pagesBetaWarning, RUNNING_BUILDERS } from "./utils";
20
- import type { Config } from "./functions/routes";
21
- import type { YargsOptionsToInterface } from "./types";
22
- import type { Argv } from "yargs";
23
-
24
- type PagesBuildArgs = YargsOptionsToInterface<typeof Options>;
25
-
26
- export function Options(yargs: Argv) {
27
- return yargs
28
- .positional("directory", {
29
- type: "string",
30
- default: "functions",
31
- description: "The directory of Pages Functions",
32
- })
33
- .options({
34
- outfile: {
35
- type: "string",
36
- default: "_worker.js",
37
- description: "The location of the output Worker script",
38
- },
39
- "output-config-path": {
40
- type: "string",
41
- description: "The location for the output config file",
42
- },
43
- "output-routes-path": {
44
- type: "string",
45
- description: "The location for the output _routes.json file",
46
- },
47
- minify: {
48
- type: "boolean",
49
- default: false,
50
- description: "Minify the output Worker script",
51
- },
52
- sourcemap: {
53
- type: "boolean",
54
- default: false,
55
- description: "Generate a sourcemap for the output Worker script",
56
- },
57
- "fallback-service": {
58
- type: "string",
59
- default: "ASSETS",
60
- description:
61
- "The service to fallback to at the end of the `next` chain. Setting to '' will fallback to the global `fetch`.",
62
- },
63
- watch: {
64
- type: "boolean",
65
- default: false,
66
- description:
67
- "Watch for changes to the functions and automatically rebuild the Worker script",
68
- },
69
- plugin: {
70
- type: "boolean",
71
- default: false,
72
- description: "Build a plugin rather than a Worker script",
73
- },
74
- "build-output-directory": {
75
- type: "string",
76
- description: "The directory to output static assets to",
77
- },
78
- "node-compat": {
79
- describe: "Enable node.js compatibility",
80
- default: false,
81
- type: "boolean",
82
- hidden: true,
83
- },
84
- })
85
- .epilogue(pagesBetaWarning);
86
- }
87
-
88
- export const Handler = async ({
89
- directory,
90
- outfile,
91
- outputConfigPath,
92
- outputRoutesPath: routesOutputPath,
93
- minify,
94
- sourcemap,
95
- fallbackService,
96
- watch,
97
- plugin,
98
- buildOutputDirectory,
99
- nodeCompat,
100
- }: PagesBuildArgs) => {
101
- if (!isInPagesCI) {
102
- // Beta message for `wrangler pages <commands>` usage
103
- logger.log(pagesBetaWarning);
104
- }
105
-
106
- if (nodeCompat) {
107
- console.warn(
108
- "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."
109
- );
110
- }
111
-
112
- buildOutputDirectory ??= dirname(outfile);
113
- try {
114
- await buildFunctions({
115
- outfile,
116
- outputConfigPath,
117
- functionsDirectory: directory,
118
- minify,
119
- sourcemap,
120
- fallbackService,
121
- watch,
122
- plugin,
123
- buildOutputDirectory,
124
- nodeCompat,
125
- routesOutputPath,
126
- });
127
- } catch (e) {
128
- if (e instanceof FunctionsNoRoutesError) {
129
- throw new FatalError(
130
- getFunctionsNoRoutesWarning(directory),
131
- EXIT_CODE_FUNCTIONS_NO_ROUTES_ERROR
132
- );
133
- } else {
134
- throw e;
135
- }
136
- }
137
- await metrics.sendMetricsEvent("build pages functions");
138
- };
139
-
140
- /**
141
- * Builds a Functions worker based on the functions directory, with filepath and handler based routing.
142
- * @throws FunctionsNoRoutesError when there are no routes found in the functions directory
143
- */
144
- export async function buildFunctions({
145
- outfile,
146
- outputConfigPath,
147
- functionsDirectory,
148
- minify = false,
149
- sourcemap = false,
150
- fallbackService = "ASSETS",
151
- watch = false,
152
- onEnd,
153
- plugin = false,
154
- buildOutputDirectory,
155
- routesOutputPath,
156
- nodeCompat,
157
- }: Partial<
158
- Pick<
159
- PagesBuildArgs,
160
- | "outputConfigPath"
161
- | "minify"
162
- | "sourcemap"
163
- | "fallbackService"
164
- | "watch"
165
- | "plugin"
166
- | "buildOutputDirectory"
167
- | "nodeCompat"
168
- >
169
- > & {
170
- functionsDirectory: string;
171
- onEnd?: () => void;
172
- outfile: Required<PagesBuildArgs>["outfile"];
173
- routesOutputPath?: PagesBuildArgs["outputRoutesPath"];
174
- }) {
175
- RUNNING_BUILDERS.forEach(
176
- (runningBuilder) => runningBuilder.stop && runningBuilder.stop()
177
- );
178
-
179
- const routesModule = join(tmpdir(), `./functionsRoutes-${Math.random()}.mjs`);
180
- const baseURL = toUrlPath("/");
181
-
182
- const config: Config = await generateConfigFromFileTree({
183
- baseDir: functionsDirectory,
184
- baseURL,
185
- });
186
-
187
- if (!config.routes || config.routes.length === 0) {
188
- throw new FunctionsNoRoutesError(
189
- `Failed to find any routes while compiling Functions in: ${functionsDirectory}`
190
- );
191
- }
192
-
193
- if (routesOutputPath) {
194
- const routesJSON = convertRoutesToRoutesJSONSpec(config.routes);
195
- writeFileSync(routesOutputPath, JSON.stringify(routesJSON, null, 2));
196
- }
197
-
198
- if (outputConfigPath) {
199
- writeFileSync(
200
- outputConfigPath,
201
- JSON.stringify({ ...config, baseURL }, null, 2)
202
- );
203
- }
204
-
205
- await writeRoutesModule({
206
- config,
207
- srcDir: functionsDirectory,
208
- outfile: routesModule,
209
- });
210
-
211
- if (plugin) {
212
- RUNNING_BUILDERS.push(
213
- await buildPlugin({
214
- routesModule,
215
- outfile,
216
- minify,
217
- sourcemap,
218
- watch,
219
- nodeCompat,
220
- onEnd,
221
- })
222
- );
223
- } else {
224
- RUNNING_BUILDERS.push(
225
- await buildWorker({
226
- routesModule,
227
- outfile,
228
- minify,
229
- sourcemap,
230
- fallbackService,
231
- watch,
232
- onEnd,
233
- buildOutputDirectory,
234
- nodeCompat,
235
- })
236
- );
237
- }
238
- }
@@ -1,46 +0,0 @@
1
- import { getEnvironmentVariableFactory } from "../environment-variables";
2
-
3
- export type ApiCredentials =
4
- | {
5
- apiToken: string;
6
- }
7
- | {
8
- authKey: string;
9
- authEmail: string;
10
- };
11
-
12
- const getCloudflareAPITokenFromEnv = getEnvironmentVariableFactory({
13
- variableName: "CLOUDFLARE_API_TOKEN",
14
- deprecatedName: "CF_API_TOKEN",
15
- });
16
- const getCloudflareGlobalAuthKeyFromEnv = getEnvironmentVariableFactory({
17
- variableName: "CLOUDFLARE_API_KEY",
18
- deprecatedName: "CF_API_KEY",
19
- });
20
- const getCloudflareGlobalAuthEmailFromEnv = getEnvironmentVariableFactory({
21
- variableName: "CLOUDFLARE_EMAIL",
22
- deprecatedName: "CF_EMAIL",
23
- });
24
-
25
- /**
26
- * Try to read an API token or Global Auth from the environment.
27
- */
28
- export function getAuthFromEnv(): ApiCredentials | undefined {
29
- const globalApiKey = getCloudflareGlobalAuthKeyFromEnv();
30
- const globalApiEmail = getCloudflareGlobalAuthEmailFromEnv();
31
- const apiToken = getCloudflareAPITokenFromEnv();
32
-
33
- if (globalApiKey && globalApiEmail) {
34
- return { authKey: globalApiKey, authEmail: globalApiEmail };
35
- } else if (apiToken) {
36
- return { apiToken };
37
- }
38
- }
39
-
40
- /**
41
- * Try to read the account ID from the environment.
42
- */
43
- export const getCloudflareAccountIdFromEnv = getEnvironmentVariableFactory({
44
- variableName: "CLOUDFLARE_ACCOUNT_ID",
45
- deprecatedName: "CF_ACCOUNT_ID",
46
- });
@@ -1,27 +0,0 @@
1
- // `workerd` currently throws on any use of the Cache API. Workers Sites
2
- // requires the Cache API to function though, so stub it out to no-ops, like in
3
- // regular `wrangler dev`.
4
-
5
- class Cache {
6
- async put(req, res) {}
7
-
8
- async match(req, options) {}
9
-
10
- async delete(req, options) {
11
- return false;
12
- }
13
- }
14
-
15
- class CacheStorage {
16
- #cache = new Cache();
17
-
18
- get default() {
19
- return this.#cache;
20
- }
21
-
22
- async open(cacheName) {
23
- return this.#cache;
24
- }
25
- }
26
-
27
- globalThis.caches = new CacheStorage();
File without changes
File without changes