wrangler 0.0.0-e8e684c7 → 0.0.0-e9106dfa5

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 (207) hide show
  1. package/README.md +35 -49
  2. package/bin/wrangler.js +25 -100
  3. package/config-schema.json +2277 -0
  4. package/package.json +182 -174
  5. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  6. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  7. package/templates/__tests__/tsconfig.json +8 -0
  8. package/templates/checked-fetch.js +19 -6
  9. package/templates/facade.d.ts +19 -0
  10. package/templates/gitignore +2 -3
  11. package/templates/init-tests/test-jest-new-worker.js +23 -0
  12. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  13. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  14. package/templates/middleware/common.ts +67 -0
  15. package/templates/middleware/loader-modules.ts +134 -0
  16. package/templates/middleware/loader-sw.ts +229 -0
  17. package/templates/middleware/middleware-ensure-req-body-drained.ts +18 -0
  18. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  19. package/templates/middleware/middleware-mock-analytics-engine.d.ts +3 -0
  20. package/templates/middleware/middleware-mock-analytics-engine.ts +30 -0
  21. package/templates/middleware/middleware-patch-console-prefix.d.ts +3 -0
  22. package/templates/middleware/middleware-patch-console-prefix.ts +21 -0
  23. package/templates/middleware/middleware-pretty-error.ts +40 -0
  24. package/templates/middleware/middleware-scheduled.ts +29 -0
  25. package/templates/modules-watch-stub.js +4 -0
  26. package/templates/new-worker-scheduled.ts +1 -1
  27. package/templates/new-worker.js +1 -1
  28. package/templates/new-worker.ts +4 -1
  29. package/templates/pages-dev-pipeline.ts +33 -0
  30. package/templates/pages-dev-util.ts +55 -0
  31. package/templates/pages-shim.ts +1 -1
  32. package/templates/pages-template-plugin.ts +37 -14
  33. package/templates/pages-template-worker.ts +33 -7
  34. package/templates/startDevWorker/InspectorProxyWorker.ts +679 -0
  35. package/templates/startDevWorker/ProxyWorker.ts +336 -0
  36. package/templates/tsconfig-sanity.ts +11 -0
  37. package/templates/tsconfig.init.json +22 -0
  38. package/templates/tsconfig.json +12 -102
  39. package/templates/tsconfig.tsbuildinfo +1 -0
  40. package/wrangler-dist/InspectorProxyWorker.js +471 -0
  41. package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
  42. package/wrangler-dist/ProxyWorker.js +238 -0
  43. package/wrangler-dist/ProxyWorker.js.map +6 -0
  44. package/wrangler-dist/cli.d.ts +26527 -172
  45. package/wrangler-dist/cli.js +148646 -148093
  46. package/Cloudflare_CA.pem +0 -18
  47. package/import_meta_url.js +0 -3
  48. package/miniflare-config-stubs/.env.empty +0 -0
  49. package/miniflare-config-stubs/package.empty.json +0 -1
  50. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  51. package/miniflare-dist/index.mjs +0 -5542
  52. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  53. package/src/__tests__/config-cache.test.ts +0 -42
  54. package/src/__tests__/configuration.test.ts +0 -4026
  55. package/src/__tests__/dev.test.tsx +0 -1318
  56. package/src/__tests__/generate.test.ts +0 -91
  57. package/src/__tests__/guess-worker-format.test.ts +0 -85
  58. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  59. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  60. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  61. package/src/__tests__/helpers/mock-bin.ts +0 -36
  62. package/src/__tests__/helpers/mock-cfetch.ts +0 -296
  63. package/src/__tests__/helpers/mock-console.ts +0 -97
  64. package/src/__tests__/helpers/mock-dialogs.ts +0 -153
  65. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -8
  66. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  67. package/src/__tests__/helpers/mock-istty.ts +0 -74
  68. package/src/__tests__/helpers/mock-known-routes.ts +0 -7
  69. package/src/__tests__/helpers/mock-kv.ts +0 -33
  70. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -250
  71. package/src/__tests__/helpers/mock-process.ts +0 -39
  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/run-in-tmp.ts +0 -38
  75. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  76. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  77. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  78. package/src/__tests__/https-options.test.ts +0 -163
  79. package/src/__tests__/index.test.ts +0 -245
  80. package/src/__tests__/init.test.ts +0 -2170
  81. package/src/__tests__/jest.setup.ts +0 -157
  82. package/src/__tests__/kv.test.ts +0 -1671
  83. package/src/__tests__/logger.test.ts +0 -141
  84. package/src/__tests__/metrics.test.ts +0 -450
  85. package/src/__tests__/package-manager.test.ts +0 -353
  86. package/src/__tests__/pages.test.ts +0 -1275
  87. package/src/__tests__/parse.test.ts +0 -330
  88. package/src/__tests__/publish.test.ts +0 -6955
  89. package/src/__tests__/pubsub.test.ts +0 -367
  90. package/src/__tests__/r2.test.ts +0 -336
  91. package/src/__tests__/route.test.ts +0 -45
  92. package/src/__tests__/secret.test.ts +0 -492
  93. package/src/__tests__/tail.test.ts +0 -802
  94. package/src/__tests__/test-old-node-version.js +0 -31
  95. package/src/__tests__/user.test.ts +0 -155
  96. package/src/__tests__/validate-dev-props.test.ts +0 -56
  97. package/src/__tests__/version.test.ts +0 -35
  98. package/src/__tests__/whoami.test.tsx +0 -289
  99. package/src/__tests__/worker-namespace.test.ts +0 -329
  100. package/src/abort.d.ts +0 -3
  101. package/src/api/dev.ts +0 -93
  102. package/src/api/index.ts +0 -1
  103. package/src/bundle-reporter.tsx +0 -29
  104. package/src/bundle.ts +0 -473
  105. package/src/cfetch/index.ts +0 -121
  106. package/src/cfetch/internal.ts +0 -298
  107. package/src/cli.ts +0 -27
  108. package/src/config/README.md +0 -107
  109. package/src/config/config.ts +0 -263
  110. package/src/config/diagnostics.ts +0 -80
  111. package/src/config/environment.ts +0 -485
  112. package/src/config/index.ts +0 -251
  113. package/src/config/validation-helpers.ts +0 -597
  114. package/src/config/validation.ts +0 -1862
  115. package/src/config-cache.ts +0 -85
  116. package/src/create-worker-preview.ts +0 -257
  117. package/src/create-worker-upload-form.ts +0 -291
  118. package/src/dev/dev-vars.ts +0 -36
  119. package/src/dev/dev.tsx +0 -545
  120. package/src/dev/local.tsx +0 -449
  121. package/src/dev/remote.tsx +0 -422
  122. package/src/dev/use-esbuild.ts +0 -178
  123. package/src/dev/validate-dev-props.ts +0 -31
  124. package/src/dev-registry.tsx +0 -160
  125. package/src/dev.tsx +0 -696
  126. package/src/dialogs.tsx +0 -135
  127. package/src/dispatch-namespace.ts +0 -206
  128. package/src/durable.ts +0 -102
  129. package/src/entry.ts +0 -328
  130. package/src/environment-variables.ts +0 -35
  131. package/src/errors.ts +0 -11
  132. package/src/faye-websocket.d.ts +0 -6
  133. package/src/generate.ts +0 -131
  134. package/src/git-client.ts +0 -42
  135. package/src/global-wrangler-config-path.ts +0 -26
  136. package/src/https-options.ts +0 -127
  137. package/src/index.tsx +0 -2260
  138. package/src/init.ts +0 -622
  139. package/src/inspect.ts +0 -747
  140. package/src/intl-polyfill.d.ts +0 -139
  141. package/src/is-ci.ts +0 -14
  142. package/src/is-interactive.ts +0 -12
  143. package/src/kv.ts +0 -430
  144. package/src/logger.ts +0 -73
  145. package/src/metrics/index.ts +0 -5
  146. package/src/metrics/metrics-config.ts +0 -239
  147. package/src/metrics/metrics-dispatcher.ts +0 -96
  148. package/src/metrics/metrics-usage-headers.ts +0 -24
  149. package/src/metrics/send-event.ts +0 -92
  150. package/src/miniflare-cli/README.md +0 -30
  151. package/src/miniflare-cli/assets.ts +0 -554
  152. package/src/miniflare-cli/enum-keys.ts +0 -17
  153. package/src/miniflare-cli/index.ts +0 -207
  154. package/src/miniflare-cli/request-context.ts +0 -40
  155. package/src/module-collection.ts +0 -258
  156. package/src/open-in-browser.ts +0 -17
  157. package/src/package-manager.ts +0 -219
  158. package/src/pages/build.tsx +0 -238
  159. package/src/pages/constants.ts +0 -12
  160. package/src/pages/deployments.tsx +0 -106
  161. package/src/pages/dev.tsx +0 -528
  162. package/src/pages/errors.ts +0 -22
  163. package/src/pages/functions/buildPlugin.ts +0 -109
  164. package/src/pages/functions/buildWorker.ts +0 -155
  165. package/src/pages/functions/filepath-routing.test.ts +0 -234
  166. package/src/pages/functions/filepath-routing.ts +0 -189
  167. package/src/pages/functions/identifiers.ts +0 -78
  168. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  169. package/src/pages/functions/routes-consolidation.ts +0 -73
  170. package/src/pages/functions/routes-transformation.test.ts +0 -271
  171. package/src/pages/functions/routes-transformation.ts +0 -122
  172. package/src/pages/functions/routes.ts +0 -151
  173. package/src/pages/functions.tsx +0 -96
  174. package/src/pages/index.tsx +0 -94
  175. package/src/pages/projects.tsx +0 -169
  176. package/src/pages/publish.tsx +0 -391
  177. package/src/pages/types.ts +0 -49
  178. package/src/pages/upload.tsx +0 -413
  179. package/src/pages/utils.ts +0 -12
  180. package/src/parse.ts +0 -286
  181. package/src/paths.ts +0 -26
  182. package/src/preview.ts +0 -31
  183. package/src/proxy.ts +0 -486
  184. package/src/publish.ts +0 -822
  185. package/src/pubsub/index.ts +0 -286
  186. package/src/pubsub/pubsub-commands.tsx +0 -623
  187. package/src/r2.ts +0 -131
  188. package/src/selfsigned.d.ts +0 -29
  189. package/src/sites.tsx +0 -372
  190. package/src/tail/filters.ts +0 -281
  191. package/src/tail/index.ts +0 -312
  192. package/src/tail/printing.ts +0 -107
  193. package/src/update-check.ts +0 -19
  194. package/src/user/choose-account.tsx +0 -69
  195. package/src/user/env-vars.ts +0 -46
  196. package/src/user/generate-auth-url.ts +0 -33
  197. package/src/user/generate-random-state.ts +0 -16
  198. package/src/user/index.ts +0 -3
  199. package/src/user/user.tsx +0 -1191
  200. package/src/whoami.tsx +0 -169
  201. package/src/worker.ts +0 -204
  202. package/src/zones.ts +0 -167
  203. package/templates/first-party-worker-module-facade.ts +0 -18
  204. package/templates/format-dev-errors.ts +0 -32
  205. package/templates/serve-static-assets.ts +0 -63
  206. package/templates/service-bindings-module-facade.js +0 -54
  207. package/templates/service-bindings-sw-facade.js +0 -42
@@ -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,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,12 +0,0 @@
1
- export const PAGES_CONFIG_CACHE_FILENAME = "pages.json";
2
- export const MAX_BUCKET_SIZE = 50 * 1024 * 1024;
3
- export const MAX_BUCKET_FILE_COUNT = 5000;
4
- export const BULK_UPLOAD_CONCURRENCY = 3;
5
- export const MAX_UPLOAD_ATTEMPTS = 5;
6
- export const MAX_CHECK_MISSING_ATTEMPTS = 5;
7
- export const SECONDS_TO_WAIT_FOR_PROXY = 5;
8
- export const isInPagesCI = !!process.env.CF_PAGES;
9
- /** The max number of rules in _routes.json */
10
- export const MAX_FUNCTIONS_ROUTES_RULES = 100;
11
- export const MAX_FUNCTIONS_ROUTES_RULE_LENGTH = 100;
12
- export const ROUTES_SPEC_VERSION = 1;
@@ -1,106 +0,0 @@
1
- import { render, Text } from "ink";
2
- import SelectInput from "ink-select-input";
3
- import Table from "ink-table";
4
- import React from "react";
5
- import { format as timeagoFormat } from "timeago.js";
6
- import { fetchResult } from "../cfetch";
7
- import { getConfigCache, saveToConfigCache } from "../config-cache";
8
- import { FatalError } from "../errors";
9
- import * as metrics from "../metrics";
10
- import { requireAuth } from "../user";
11
- import { PAGES_CONFIG_CACHE_FILENAME } from "./constants";
12
- import { listProjects } from "./projects";
13
- import { pagesBetaWarning } from "./utils";
14
- import type {
15
- Deployment,
16
- PagesConfigCache,
17
- YargsOptionsToInterface,
18
- } from "./types";
19
- import type { Argv } from "yargs";
20
-
21
- type ListArgs = YargsOptionsToInterface<typeof ListOptions>;
22
-
23
- export function ListOptions(yargs: Argv) {
24
- return yargs
25
- .options({
26
- "project-name": {
27
- type: "string",
28
- description:
29
- "The name of the project you would like to list deployments for",
30
- },
31
- })
32
- .epilogue(pagesBetaWarning);
33
- }
34
-
35
- export async function ListHandler({ projectName }: ListArgs) {
36
- const config = getConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME);
37
- const accountId = await requireAuth(config);
38
-
39
- projectName ??= config.project_name;
40
-
41
- const isInteractive = process.stdin.isTTY;
42
- if (!projectName && isInteractive) {
43
- const projects = await listProjects({ accountId });
44
- projectName = await new Promise((resolve) => {
45
- const { unmount } = render(
46
- <>
47
- <Text>Select a project:</Text>
48
- <SelectInput
49
- items={projects.map((project) => ({
50
- key: project.name,
51
- label: project.name,
52
- value: project,
53
- }))}
54
- onSelect={async (selected) => {
55
- resolve(selected.value.name);
56
- unmount();
57
- }}
58
- />
59
- </>
60
- );
61
- });
62
- }
63
-
64
- if (!projectName) {
65
- throw new FatalError("Must specify a project name.", 1);
66
- }
67
-
68
- const deployments: Array<Deployment> = await fetchResult(
69
- `/accounts/${accountId}/pages/projects/${projectName}/deployments`
70
- );
71
-
72
- const titleCase = (word: string) =>
73
- word.charAt(0).toUpperCase() + word.slice(1);
74
-
75
- const shortSha = (sha: string) => sha.slice(0, 7);
76
-
77
- const getStatus = (deployment: Deployment) => {
78
- // Return a pretty time since timestamp if successful otherwise the status
79
- if (deployment.latest_stage.status === `success`) {
80
- return timeagoFormat(deployment.latest_stage.ended_on);
81
- }
82
- return titleCase(deployment.latest_stage.status);
83
- };
84
-
85
- const data = deployments.map((deployment) => {
86
- return {
87
- Environment: titleCase(deployment.environment),
88
- Branch: deployment.deployment_trigger.metadata.branch,
89
- Source: shortSha(deployment.deployment_trigger.metadata.commit_hash),
90
- Deployment: deployment.url,
91
- Status: getStatus(deployment),
92
- // TODO: Use a url shortener
93
- Build: `https://dash.cloudflare.com/${accountId}/pages/view/${deployment.project_name}/${deployment.id}`,
94
- };
95
- });
96
-
97
- saveToConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME, {
98
- account_id: accountId,
99
- });
100
-
101
- const { unmount } = render(<Table data={data}></Table>, {
102
- patchConsole: false,
103
- });
104
- unmount();
105
- await metrics.sendMetricsEvent("list pages deployments");
106
- }