wrangler 0.0.0-e1c2f5b9 → 0.0.0-e1d50407

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 (287) hide show
  1. package/README.md +12 -14
  2. package/bin/wrangler.js +14 -75
  3. package/package.json +213 -194
  4. package/templates/__tests__/tsconfig.json +1 -1
  5. package/templates/checked-fetch.js +19 -6
  6. package/templates/facade.d.ts +4 -1
  7. package/templates/gitignore +1 -0
  8. package/templates/init-tests/test-vitest-new-worker.ts +1 -1
  9. package/templates/middleware/common.ts +9 -4
  10. package/templates/middleware/loader-modules.ts +64 -9
  11. package/templates/middleware/loader-sw.ts +2 -7
  12. package/templates/middleware/middleware-d1-beta.d.ts +3 -0
  13. package/templates/middleware/middleware-miniflare3-json-error.ts +18 -5
  14. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  15. package/templates/middleware/middleware-multiworker-dev.ts +68 -0
  16. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  17. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  18. package/templates/modules-watch-stub.js +4 -0
  19. package/templates/new-worker-scheduled.ts +1 -1
  20. package/templates/new-worker.ts +4 -1
  21. package/templates/pages-dev-util.ts +4 -1
  22. package/templates/pages-shim.ts +0 -3
  23. package/templates/pages-template-plugin.ts +30 -11
  24. package/templates/pages-template-worker.ts +11 -2
  25. package/templates/startDevWorker/InspectorProxyWorker.ts +652 -0
  26. package/templates/startDevWorker/ProxyWorker.ts +252 -0
  27. package/templates/tsconfig.init.json +1 -2
  28. package/templates/tsconfig.json +1 -1
  29. package/wrangler-dist/InspectorProxyWorker.js +460 -0
  30. package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
  31. package/wrangler-dist/ProxyWorker.js +186 -0
  32. package/wrangler-dist/ProxyWorker.js.map +6 -0
  33. package/wrangler-dist/cli.d.ts +23110 -509
  34. package/wrangler-dist/cli.js +133619 -137696
  35. package/wrangler-dist/wasm-sync.wasm +0 -0
  36. package/import_meta_url.js +0 -3
  37. package/miniflare-config-stubs/.env.empty +0 -0
  38. package/miniflare-config-stubs/package.empty.json +0 -1
  39. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  40. package/miniflare-dist/index.mjs +0 -6364
  41. package/src/__tests__/access.test.ts +0 -25
  42. package/src/__tests__/api-dev.test.ts +0 -238
  43. package/src/__tests__/api-devregistry.test.js +0 -64
  44. package/src/__tests__/api.test.ts +0 -80
  45. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  46. package/src/__tests__/config-cache.test.ts +0 -42
  47. package/src/__tests__/configuration.test.ts +0 -4163
  48. package/src/__tests__/d1.test.ts +0 -123
  49. package/src/__tests__/delete.test.ts +0 -263
  50. package/src/__tests__/deployments.test.ts +0 -105
  51. package/src/__tests__/dev.test.tsx +0 -1586
  52. package/src/__tests__/dialogs.test.tsx +0 -40
  53. package/src/__tests__/generate.test.ts +0 -235
  54. package/src/__tests__/get-host-from-url.test.ts +0 -16
  55. package/src/__tests__/guess-worker-format.test.ts +0 -85
  56. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  57. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  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-cfetch.ts +0 -277
  62. package/src/__tests__/helpers/mock-console.ts +0 -106
  63. package/src/__tests__/helpers/mock-dialogs.ts +0 -153
  64. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -8
  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 -7
  68. package/src/__tests__/helpers/mock-kv.ts +0 -33
  69. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -271
  70. package/src/__tests__/helpers/mock-process.ts +0 -34
  71. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  72. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  73. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  74. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -59
  75. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -104
  76. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  77. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -80
  78. package/src/__tests__/helpers/msw/handlers/script.ts +0 -75
  79. package/src/__tests__/helpers/msw/handlers/user.ts +0 -63
  80. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -22
  81. package/src/__tests__/helpers/msw/index.ts +0 -21
  82. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  83. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  84. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  85. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  86. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  87. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  88. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  89. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  90. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  91. package/src/__tests__/https-options.test.ts +0 -163
  92. package/src/__tests__/index.test.ts +0 -268
  93. package/src/__tests__/init.test.ts +0 -3094
  94. package/src/__tests__/jest.setup.ts +0 -203
  95. package/src/__tests__/kv.test.ts +0 -1786
  96. package/src/__tests__/logger.test.ts +0 -141
  97. package/src/__tests__/logout.test.ts +0 -47
  98. package/src/__tests__/metrics.test.ts +0 -495
  99. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  100. package/src/__tests__/middleware.test.ts +0 -750
  101. package/src/__tests__/package-manager.test.ts +0 -353
  102. package/src/__tests__/pages-deployment-tail.test.ts +0 -884
  103. package/src/__tests__/pages.test.ts +0 -2443
  104. package/src/__tests__/parse.test.ts +0 -330
  105. package/src/__tests__/paths.test.ts +0 -39
  106. package/src/__tests__/publish.test.ts +0 -7757
  107. package/src/__tests__/pubsub.test.ts +0 -490
  108. package/src/__tests__/queues.test.ts +0 -522
  109. package/src/__tests__/r2.test.ts +0 -393
  110. package/src/__tests__/route.test.ts +0 -45
  111. package/src/__tests__/secret.test.ts +0 -694
  112. package/src/__tests__/tail.test.ts +0 -899
  113. package/src/__tests__/test-old-node-version.js +0 -31
  114. package/src/__tests__/tsconfig-sanity.ts +0 -12
  115. package/src/__tests__/tsconfig.json +0 -8
  116. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  117. package/src/__tests__/type-generation.test.ts +0 -233
  118. package/src/__tests__/user.test.ts +0 -129
  119. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  120. package/src/__tests__/validate-dev-props.test.ts +0 -56
  121. package/src/__tests__/version.test.ts +0 -35
  122. package/src/__tests__/whoami.test.tsx +0 -278
  123. package/src/__tests__/worker-namespace.test.ts +0 -326
  124. package/src/abort.d.ts +0 -3
  125. package/src/api/dev.ts +0 -218
  126. package/src/api/index.ts +0 -2
  127. package/src/bundle-reporter.tsx +0 -68
  128. package/src/bundle.ts +0 -823
  129. package/src/cfetch/index.ts +0 -158
  130. package/src/cfetch/internal.ts +0 -261
  131. package/src/cli.ts +0 -28
  132. package/src/config/README.md +0 -107
  133. package/src/config/config.ts +0 -275
  134. package/src/config/diagnostics.ts +0 -80
  135. package/src/config/environment.ts +0 -577
  136. package/src/config/index.ts +0 -358
  137. package/src/config/validation-helpers.ts +0 -597
  138. package/src/config/validation.ts +0 -2151
  139. package/src/config-cache.ts +0 -85
  140. package/src/create-worker-preview.ts +0 -282
  141. package/src/create-worker-upload-form.ts +0 -325
  142. package/src/d1/backups.tsx +0 -223
  143. package/src/d1/constants.ts +0 -2
  144. package/src/d1/create.tsx +0 -63
  145. package/src/d1/delete.tsx +0 -56
  146. package/src/d1/execute.tsx +0 -352
  147. package/src/d1/formatTimeAgo.ts +0 -14
  148. package/src/d1/index.ts +0 -101
  149. package/src/d1/list.tsx +0 -48
  150. package/src/d1/migrations/apply.tsx +0 -196
  151. package/src/d1/migrations/create.tsx +0 -77
  152. package/src/d1/migrations/helpers.ts +0 -147
  153. package/src/d1/migrations/index.tsx +0 -3
  154. package/src/d1/migrations/list.tsx +0 -79
  155. package/src/d1/migrations/options.ts +0 -18
  156. package/src/d1/options.ts +0 -22
  157. package/src/d1/types.tsx +0 -24
  158. package/src/d1/utils.ts +0 -48
  159. package/src/delete.ts +0 -108
  160. package/src/deployments.ts +0 -83
  161. package/src/deprecated/index.ts +0 -145
  162. package/src/dev/dev-vars.ts +0 -39
  163. package/src/dev/dev.tsx +0 -614
  164. package/src/dev/get-local-persistence-path.tsx +0 -31
  165. package/src/dev/local.tsx +0 -932
  166. package/src/dev/remote.tsx +0 -603
  167. package/src/dev/start-server.ts +0 -543
  168. package/src/dev/use-esbuild.ts +0 -204
  169. package/src/dev/validate-dev-props.ts +0 -31
  170. package/src/dev-registry.tsx +0 -201
  171. package/src/dev.tsx +0 -949
  172. package/src/dialogs.tsx +0 -168
  173. package/src/dispatch-namespace.ts +0 -207
  174. package/src/docs/index.ts +0 -97
  175. package/src/durable.ts +0 -102
  176. package/src/entry.ts +0 -329
  177. package/src/environment-variables/factory.ts +0 -88
  178. package/src/environment-variables/misc-variables.ts +0 -30
  179. package/src/errors.ts +0 -11
  180. package/src/generate/index.ts +0 -300
  181. package/src/git-client.ts +0 -135
  182. package/src/global-wrangler-config-path.ts +0 -26
  183. package/src/https-options.ts +0 -127
  184. package/src/index.tsx +0 -694
  185. package/src/init.ts +0 -1025
  186. package/src/inspect.ts +0 -767
  187. package/src/intl-polyfill.d.ts +0 -139
  188. package/src/is-ci.ts +0 -14
  189. package/src/is-interactive.ts +0 -16
  190. package/src/jest.d.ts +0 -4
  191. package/src/kv/helpers.ts +0 -430
  192. package/src/kv/index.ts +0 -596
  193. package/src/logger.ts +0 -92
  194. package/src/metrics/index.ts +0 -5
  195. package/src/metrics/metrics-config.ts +0 -239
  196. package/src/metrics/metrics-dispatcher.ts +0 -96
  197. package/src/metrics/metrics-usage-headers.ts +0 -24
  198. package/src/metrics/send-event.ts +0 -97
  199. package/src/miniflare-cli/README.md +0 -30
  200. package/src/miniflare-cli/assets.ts +0 -250
  201. package/src/miniflare-cli/index.ts +0 -210
  202. package/src/miniflare-cli/request-context.ts +0 -40
  203. package/src/miniflare-cli/tsconfig.json +0 -9
  204. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  205. package/src/miniflare-cli/types.ts +0 -11
  206. package/src/module-collection.ts +0 -267
  207. package/src/open-in-browser.ts +0 -17
  208. package/src/package-manager.ts +0 -219
  209. package/src/pages/build.tsx +0 -270
  210. package/src/pages/constants.ts +0 -18
  211. package/src/pages/deployment-tails.tsx +0 -284
  212. package/src/pages/deployments.tsx +0 -84
  213. package/src/pages/dev.tsx +0 -710
  214. package/src/pages/errors.ts +0 -66
  215. package/src/pages/functions/buildPlugin.ts +0 -107
  216. package/src/pages/functions/buildWorker.ts +0 -166
  217. package/src/pages/functions/filepath-routing.test.ts +0 -234
  218. package/src/pages/functions/filepath-routing.ts +0 -189
  219. package/src/pages/functions/identifiers.ts +0 -78
  220. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  221. package/src/pages/functions/routes-consolidation.ts +0 -73
  222. package/src/pages/functions/routes-transformation.test.ts +0 -282
  223. package/src/pages/functions/routes-transformation.ts +0 -115
  224. package/src/pages/functions/routes-validation.test.ts +0 -403
  225. package/src/pages/functions/routes-validation.ts +0 -202
  226. package/src/pages/functions/routes.ts +0 -151
  227. package/src/pages/functions/tsconfig.json +0 -8
  228. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  229. package/src/pages/functions.tsx +0 -82
  230. package/src/pages/hash.tsx +0 -13
  231. package/src/pages/index.tsx +0 -102
  232. package/src/pages/projects.tsx +0 -169
  233. package/src/pages/prompt-select-project.tsx +0 -31
  234. package/src/pages/publish.tsx +0 -461
  235. package/src/pages/types.ts +0 -41
  236. package/src/pages/upload.tsx +0 -447
  237. package/src/pages/utils.ts +0 -23
  238. package/src/parse.ts +0 -286
  239. package/src/paths.ts +0 -71
  240. package/src/proxy.ts +0 -694
  241. package/src/publish/index.ts +0 -270
  242. package/src/publish/publish.ts +0 -1036
  243. package/src/pubsub/index.ts +0 -286
  244. package/src/pubsub/pubsub-commands.tsx +0 -624
  245. package/src/queues/cli/commands/consumer/add.ts +0 -71
  246. package/src/queues/cli/commands/consumer/index.ts +0 -22
  247. package/src/queues/cli/commands/consumer/remove.ts +0 -38
  248. package/src/queues/cli/commands/create.ts +0 -25
  249. package/src/queues/cli/commands/delete.ts +0 -26
  250. package/src/queues/cli/commands/index.ts +0 -36
  251. package/src/queues/cli/commands/list.ts +0 -25
  252. package/src/queues/client.ts +0 -135
  253. package/src/queues/utils.ts +0 -18
  254. package/src/r2/constants.ts +0 -4
  255. package/src/r2/helpers.ts +0 -131
  256. package/src/r2/index.ts +0 -289
  257. package/src/routes.ts +0 -140
  258. package/src/secret/index.ts +0 -379
  259. package/src/selfsigned.d.ts +0 -29
  260. package/src/sites.tsx +0 -372
  261. package/src/tail/createTail.ts +0 -379
  262. package/src/tail/filters.ts +0 -277
  263. package/src/tail/index.ts +0 -214
  264. package/src/tail/printing.ts +0 -107
  265. package/src/tsconfig-sanity.ts +0 -16
  266. package/src/type-generation.ts +0 -181
  267. package/src/update-check.ts +0 -19
  268. package/src/user/access.ts +0 -68
  269. package/src/user/auth-variables.ts +0 -113
  270. package/src/user/choose-account.tsx +0 -69
  271. package/src/user/generate-auth-url.ts +0 -33
  272. package/src/user/generate-random-state.ts +0 -16
  273. package/src/user/index.ts +0 -2
  274. package/src/user/user.tsx +0 -1238
  275. package/src/utils/collectKeyValues.ts +0 -14
  276. package/src/whoami.tsx +0 -169
  277. package/src/worker.ts +0 -251
  278. package/src/yargs-types.ts +0 -24
  279. package/src/zones.ts +0 -191
  280. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  281. package/templates/d1-beta-facade.js +0 -205
  282. package/templates/first-party-worker-module-facade.ts +0 -19
  283. package/templates/format-dev-errors.ts +0 -33
  284. package/templates/serve-static-assets.ts +0 -65
  285. package/templates/service-bindings-module-facade.js +0 -54
  286. package/templates/service-bindings-sw-facade.js +0 -42
  287. package/templates/tsconfig.tsbuildinfo +0 -1
@@ -1,31 +0,0 @@
1
- import { render, Text } from "ink";
2
- import SelectInput from "ink-select-input";
3
- import React from "react";
4
- import { listProjects } from "./projects";
5
-
6
- export async function promptSelectProject({
7
- accountId,
8
- }: {
9
- accountId: string;
10
- }): Promise<string> {
11
- const projects = await listProjects({ accountId });
12
-
13
- return new Promise((resolve) => {
14
- const { unmount } = render(
15
- <>
16
- <Text>Select a project:</Text>
17
- <SelectInput
18
- items={projects.map((project) => ({
19
- key: project.name,
20
- label: project.name,
21
- value: project,
22
- }))}
23
- onSelect={async (selected) => {
24
- resolve(selected.value.name);
25
- unmount();
26
- }}
27
- />
28
- </>
29
- );
30
- });
31
- }
@@ -1,461 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { existsSync, readFileSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { dirname, join } from "node:path";
5
- import { cwd } from "node:process";
6
- import { render, Text } from "ink";
7
- import SelectInput from "ink-select-input";
8
- import React from "react";
9
- import { File, FormData } from "undici";
10
- import { fetchResult } from "../cfetch";
11
- import { getConfigCache, saveToConfigCache } from "../config-cache";
12
- import { prompt } from "../dialogs";
13
- import { FatalError } from "../errors";
14
- import { logger } from "../logger";
15
- import * as metrics from "../metrics";
16
- import { requireAuth } from "../user";
17
- import { buildFunctions } from "./build";
18
- import { PAGES_CONFIG_CACHE_FILENAME } from "./constants";
19
- import { FunctionsNoRoutesError, getFunctionsNoRoutesWarning } from "./errors";
20
- import { validateRoutes } from "./functions/routes-validation";
21
- import { listProjects } from "./projects";
22
- import { promptSelectProject } from "./prompt-select-project";
23
- import { upload } from "./upload";
24
- import { pagesBetaWarning } from "./utils";
25
- import type { YargsOptionsToInterface } from "../yargs-types";
26
- import type { PagesConfigCache } from "./types";
27
- import type { Project, Deployment } from "@cloudflare/types";
28
- import type { Argv } from "yargs";
29
-
30
- type PublishArgs = YargsOptionsToInterface<typeof Options>;
31
-
32
- export function Options(yargs: Argv) {
33
- return yargs
34
- .positional("directory", {
35
- type: "string",
36
- demandOption: true,
37
- description: "The directory of static files to upload",
38
- })
39
- .options({
40
- "project-name": {
41
- type: "string",
42
- description: "The name of the project you want to deploy to",
43
- },
44
- branch: {
45
- type: "string",
46
- description: "The name of the branch you want to deploy to",
47
- },
48
- "commit-hash": {
49
- type: "string",
50
- description: "The SHA to attach to this deployment",
51
- },
52
- "commit-message": {
53
- type: "string",
54
- description: "The commit message to attach to this deployment",
55
- },
56
- "commit-dirty": {
57
- type: "boolean",
58
- description:
59
- "Whether or not the workspace should be considered dirty for this deployment",
60
- },
61
- "skip-caching": {
62
- type: "boolean",
63
- description: "Skip asset caching which speeds up builds",
64
- },
65
- config: {
66
- describe: "Pages does not support wrangler.toml",
67
- type: "string",
68
- hidden: true,
69
- },
70
- })
71
- .epilogue(pagesBetaWarning);
72
- }
73
-
74
- export const Handler = async ({
75
- directory,
76
- projectName,
77
- branch,
78
- commitHash,
79
- commitMessage,
80
- commitDirty,
81
- skipCaching,
82
- config: wranglerConfig,
83
- }: PublishArgs) => {
84
- if (wranglerConfig) {
85
- throw new FatalError("Pages does not support wrangler.toml", 1);
86
- }
87
-
88
- if (!directory) {
89
- throw new FatalError("Must specify a directory.", 1);
90
- }
91
-
92
- const config = getConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME);
93
- const accountId = await requireAuth(config);
94
-
95
- projectName ??= config.project_name;
96
-
97
- const isInteractive = process.stdin.isTTY;
98
- if (!projectName && isInteractive) {
99
- const projects = (await listProjects({ accountId })).filter(
100
- (project) => !project.source
101
- );
102
-
103
- let existingOrNew: "existing" | "new" = "new";
104
-
105
- if (projects.length > 0) {
106
- existingOrNew = await new Promise<"new" | "existing">((resolve) => {
107
- const { unmount } = render(
108
- <>
109
- <Text>
110
- No project selected. Would you like to create one or use an
111
- existing project?
112
- </Text>
113
- <SelectInput
114
- items={[
115
- {
116
- key: "new",
117
- label: "Create a new project",
118
- value: "new",
119
- },
120
- {
121
- key: "existing",
122
- label: "Use an existing project",
123
- value: "existing",
124
- },
125
- ]}
126
- onSelect={async (selected) => {
127
- resolve(selected.value as "new" | "existing");
128
- unmount();
129
- }}
130
- />
131
- </>
132
- );
133
- });
134
- }
135
-
136
- switch (existingOrNew) {
137
- case "existing": {
138
- projectName = await promptSelectProject({ accountId });
139
- break;
140
- }
141
- case "new": {
142
- projectName = await prompt("Enter the name of your new project:");
143
-
144
- if (!projectName) {
145
- throw new FatalError("Must specify a project name.", 1);
146
- }
147
-
148
- let isGitDir = true;
149
- try {
150
- execSync(`git rev-parse --is-inside-work-tree`, {
151
- stdio: "ignore",
152
- });
153
- } catch (err) {
154
- isGitDir = false;
155
- }
156
-
157
- const productionBranch = await prompt(
158
- "Enter the production branch name:",
159
- "text",
160
- isGitDir
161
- ? execSync(`git rev-parse --abbrev-ref HEAD`).toString().trim()
162
- : "production"
163
- );
164
-
165
- if (!productionBranch) {
166
- throw new FatalError("Must specify a production branch.", 1);
167
- }
168
-
169
- await fetchResult<Project>(`/accounts/${accountId}/pages/projects`, {
170
- method: "POST",
171
- body: JSON.stringify({
172
- name: projectName,
173
- production_branch: productionBranch,
174
- }),
175
- });
176
-
177
- saveToConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME, {
178
- account_id: accountId,
179
- project_name: projectName,
180
- });
181
-
182
- logger.log(`✨ Successfully created the '${projectName}' project.`);
183
- await metrics.sendMetricsEvent("create pages project");
184
- break;
185
- }
186
- }
187
- }
188
-
189
- if (!projectName) {
190
- throw new FatalError("Must specify a project name.", 1);
191
- }
192
-
193
- // We infer git info by default is not passed in
194
- let isGitDir = true;
195
- try {
196
- execSync(`git rev-parse --is-inside-work-tree`, {
197
- stdio: "ignore",
198
- });
199
- } catch (err) {
200
- isGitDir = false;
201
- }
202
-
203
- let isGitDirty = false;
204
-
205
- if (isGitDir) {
206
- try {
207
- isGitDirty = Boolean(
208
- execSync(`git status --porcelain`).toString().length
209
- );
210
-
211
- if (!branch) {
212
- branch = execSync(`git rev-parse --abbrev-ref HEAD`).toString().trim();
213
- }
214
-
215
- if (!commitHash) {
216
- commitHash = execSync(`git rev-parse HEAD`).toString().trim();
217
- }
218
-
219
- if (!commitMessage) {
220
- commitMessage = execSync(`git show -s --format=%B ${commitHash}`)
221
- .toString()
222
- .trim();
223
- }
224
- } catch (err) {}
225
-
226
- if (isGitDirty && !commitDirty) {
227
- logger.warn(
228
- `Warning: Your working directory is a git repo and has uncommitted changes\nTo silence this warning, pass in --commit-dirty=true`
229
- );
230
- }
231
-
232
- if (commitDirty === undefined) {
233
- commitDirty = isGitDirty;
234
- }
235
- }
236
-
237
- let _headers: string | undefined,
238
- _redirects: string | undefined,
239
- _routesGenerated: string | undefined,
240
- _routesCustom: string | undefined,
241
- _workerJS: string | undefined;
242
-
243
- try {
244
- _headers = readFileSync(join(directory, "_headers"), "utf-8");
245
- } catch {}
246
-
247
- try {
248
- _redirects = readFileSync(join(directory, "_redirects"), "utf-8");
249
- } catch {}
250
-
251
- try {
252
- /**
253
- * Developers can specify a custom _routes.json file, for projects with Pages
254
- * Functions or projects in Advanced Mode
255
- */
256
- _routesCustom = readFileSync(join(directory, "_routes.json"), "utf-8");
257
- } catch {}
258
-
259
- try {
260
- _workerJS = readFileSync(join(directory, "_worker.js"), "utf-8");
261
- } catch {}
262
-
263
- // Grab the bindings from the API, we need these for shims and other such hacky inserts
264
- const project = await fetchResult<Project>(
265
- `/accounts/${accountId}/pages/projects/${projectName}`
266
- );
267
- let isProduction = true;
268
- if (branch) {
269
- isProduction = project.production_branch === branch;
270
- }
271
-
272
- /**
273
- * Evaluate if this is an Advanced Mode or Pages Functions project. If Advanced Mode, we'll
274
- * go ahead and upload `_worker.js` as is, but if Pages Functions, we need to attempt to build
275
- * Functions first and exit if it failed
276
- */
277
- let builtFunctions: string | undefined = undefined;
278
- const functionsDirectory = join(cwd(), "functions");
279
- const routesOutputPath = !existsSync(join(directory, "_routes.json"))
280
- ? join(tmpdir(), `_routes-${Math.random()}.json`)
281
- : undefined;
282
-
283
- // Routing configuration displayed in the Functions tab of a deployment in Dash
284
- let filepathRoutingConfig: string | undefined;
285
-
286
- if (!_workerJS && existsSync(functionsDirectory)) {
287
- const outfile = join(tmpdir(), `./functionsWorker-${Math.random()}.js`);
288
- const outputConfigPath = join(
289
- tmpdir(),
290
- `functions-filepath-routing-config-${Math.random()}.json`
291
- );
292
-
293
- try {
294
- await buildFunctions({
295
- outfile,
296
- outputConfigPath,
297
- functionsDirectory,
298
- onEnd: () => {},
299
- buildOutputDirectory: dirname(outfile),
300
- routesOutputPath,
301
- local: false,
302
- d1Databases: Object.keys(
303
- project.deployment_configs[isProduction ? "production" : "preview"]
304
- .d1_databases ?? {}
305
- ),
306
- });
307
-
308
- builtFunctions = readFileSync(outfile, "utf-8");
309
- filepathRoutingConfig = readFileSync(outputConfigPath, "utf-8");
310
- } catch (e) {
311
- if (e instanceof FunctionsNoRoutesError) {
312
- logger.warn(
313
- getFunctionsNoRoutesWarning(functionsDirectory, "skipping")
314
- );
315
- } else {
316
- throw e;
317
- }
318
- }
319
- }
320
-
321
- const manifest = await upload({
322
- directory,
323
- accountId,
324
- projectName,
325
- skipCaching: skipCaching ?? false,
326
- });
327
-
328
- const formData = new FormData();
329
-
330
- formData.append("manifest", JSON.stringify(manifest));
331
-
332
- if (branch) {
333
- formData.append("branch", branch);
334
- }
335
-
336
- if (commitMessage) {
337
- formData.append("commit_message", commitMessage);
338
- }
339
-
340
- if (commitHash) {
341
- formData.append("commit_hash", commitHash);
342
- }
343
-
344
- if (commitDirty !== undefined) {
345
- formData.append("commit_dirty", commitDirty);
346
- }
347
-
348
- if (_headers) {
349
- formData.append("_headers", new File([_headers], "_headers"));
350
- logger.log(`✨ Uploading _headers`);
351
- }
352
-
353
- if (_redirects) {
354
- formData.append("_redirects", new File([_redirects], "_redirects"));
355
- logger.log(`✨ Uploading _redirects`);
356
- }
357
-
358
- if (filepathRoutingConfig) {
359
- formData.append(
360
- "functions-filepath-routing-config.json",
361
- new File(
362
- [filepathRoutingConfig],
363
- "functions-filepath-routing-config.json"
364
- )
365
- );
366
- }
367
-
368
- /**
369
- * Advanced Mode
370
- * https://developers.cloudflare.com/pages/platform/functions/#advanced-mode
371
- *
372
- * When using a _worker.js file, the entire /functions directory is ignored
373
- * – this includes its routing and middleware characteristics.
374
- */
375
- if (_workerJS) {
376
- formData.append("_worker.js", new File([_workerJS], "_worker.js"));
377
- logger.log(`✨ Uploading _worker.js`);
378
-
379
- if (_routesCustom) {
380
- // user provided a custom _routes.json file
381
- try {
382
- const routesCustomJSON = JSON.parse(_routesCustom);
383
- validateRoutes(routesCustomJSON, join(directory, "_routes.json"));
384
-
385
- formData.append(
386
- "_routes.json",
387
- new File([_routesCustom], "_routes.json")
388
- );
389
- logger.log(`✨ Uploading _routes.json`);
390
- logger.warn(
391
- `_routes.json is an experimental feature and is subject to change. Please use with care.`
392
- );
393
- } catch (err) {
394
- if (err instanceof FatalError) {
395
- throw err;
396
- }
397
- }
398
- }
399
- }
400
-
401
- /**
402
- * Pages Functions
403
- * https://developers.cloudflare.com/pages/platform/functions/
404
- */
405
- if (builtFunctions && !_workerJS) {
406
- // if Functions were build successfully, proceed to uploading the build file
407
- formData.append("_worker.js", new File([builtFunctions], "_worker.js"));
408
- logger.log(`✨ Uploading Functions`);
409
-
410
- if (_routesCustom) {
411
- // user provided a custom _routes.json file
412
- try {
413
- const routesCustomJSON = JSON.parse(_routesCustom);
414
- validateRoutes(routesCustomJSON, join(directory, "_routes.json"));
415
-
416
- formData.append(
417
- "_routes.json",
418
- new File([_routesCustom], "_routes.json")
419
- );
420
- logger.log(`✨ Uploading _routes.json`);
421
- logger.warn(
422
- `_routes.json is an experimental feature and is subject to change. Please use with care.`
423
- );
424
- } catch (err) {
425
- if (err instanceof FatalError) {
426
- throw err;
427
- }
428
- }
429
- } else if (routesOutputPath) {
430
- // no custom _routes.json file found, so fallback to the generated one
431
- try {
432
- _routesGenerated = readFileSync(routesOutputPath, "utf-8");
433
-
434
- if (_routesGenerated) {
435
- formData.append(
436
- "_routes.json",
437
- new File([_routesGenerated], "_routes.json")
438
- );
439
- }
440
- } catch {}
441
- }
442
- }
443
-
444
- const deploymentResponse = await fetchResult<Deployment>(
445
- `/accounts/${accountId}/pages/projects/${projectName}/deployments`,
446
- {
447
- method: "POST",
448
- body: formData,
449
- }
450
- );
451
-
452
- saveToConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME, {
453
- account_id: accountId,
454
- project_name: projectName,
455
- });
456
-
457
- logger.log(
458
- `✨ Deployment complete! Take a peek over at ${deploymentResponse.url}`
459
- );
460
- await metrics.sendMetricsEvent("create pages deployment");
461
- };
@@ -1,41 +0,0 @@
1
- export type Project = {
2
- name: string;
3
- subdomain: string;
4
- domains: Array<string>;
5
- source?: {
6
- type: string;
7
- };
8
- latest_deployment?: {
9
- modified_on: string;
10
- };
11
- created_on: string;
12
- production_branch: string;
13
- };
14
- export type Deployment = {
15
- id: string;
16
- created_on: string;
17
- environment: string;
18
- deployment_trigger: {
19
- metadata: {
20
- commit_hash: string;
21
- branch: string;
22
- };
23
- };
24
- url: string;
25
- latest_stage: {
26
- status: string;
27
- ended_on: string;
28
- };
29
- project_name: string;
30
- };
31
- export type UploadPayloadFile = {
32
- key: string;
33
- value: string;
34
- metadata: { contentType: string };
35
- base64: boolean;
36
- };
37
-
38
- export interface PagesConfigCache {
39
- account_id?: string;
40
- project_name?: string;
41
- }