wrangler 0.0.0-e9ab55a → 0.0.0-e9e9872

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 (201) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +33 -14
  3. package/bin/wrangler.js +126 -25
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +4894 -0
  6. package/package.json +159 -125
  7. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  8. package/src/__tests__/config-cache.test.ts +42 -0
  9. package/src/__tests__/configuration.test.ts +3946 -0
  10. package/src/__tests__/dev.test.tsx +1155 -63
  11. package/src/__tests__/guess-worker-format.test.ts +85 -0
  12. package/src/__tests__/{clipboardy-mock.js → helpers/clipboardy-mock.js} +0 -0
  13. package/src/__tests__/helpers/cmd-shim.d.ts +11 -0
  14. package/src/__tests__/helpers/mock-account-id.ts +48 -0
  15. package/src/__tests__/helpers/mock-bin.ts +36 -0
  16. package/src/__tests__/helpers/mock-cfetch.ts +211 -0
  17. package/src/__tests__/helpers/mock-console.ts +97 -0
  18. package/src/__tests__/helpers/mock-dialogs.ts +153 -0
  19. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  20. package/src/__tests__/helpers/mock-istty.ts +74 -0
  21. package/src/__tests__/helpers/mock-kv.ts +33 -0
  22. package/src/__tests__/helpers/mock-oauth-flow.ts +250 -0
  23. package/src/__tests__/helpers/mock-process.ts +39 -0
  24. package/src/__tests__/helpers/mock-stdin.ts +108 -0
  25. package/src/__tests__/helpers/mock-web-socket.ts +29 -0
  26. package/src/__tests__/helpers/run-in-tmp.ts +38 -0
  27. package/src/__tests__/helpers/run-wrangler.ts +16 -0
  28. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  29. package/src/__tests__/helpers/write-wrangler-toml.ts +17 -0
  30. package/src/__tests__/https-options.test.ts +163 -0
  31. package/src/__tests__/index.test.ts +259 -284
  32. package/src/__tests__/init.test.ts +1992 -0
  33. package/src/__tests__/jest.setup.ts +108 -10
  34. package/src/__tests__/kv.test.ts +1433 -909
  35. package/src/__tests__/logger.test.ts +141 -0
  36. package/src/__tests__/package-manager.test.ts +353 -0
  37. package/src/__tests__/pages.test.ts +1254 -0
  38. package/src/__tests__/parse.test.ts +330 -0
  39. package/src/__tests__/publish.test.ts +6586 -93
  40. package/src/__tests__/pubsub.test.ts +367 -0
  41. package/src/__tests__/r2.test.ts +233 -0
  42. package/src/__tests__/route.test.ts +45 -0
  43. package/src/__tests__/secret.test.ts +492 -0
  44. package/src/__tests__/tail.test.ts +698 -0
  45. package/src/__tests__/user.test.ts +143 -0
  46. package/src/__tests__/whoami.test.tsx +230 -0
  47. package/src/__tests__/worker-namespace.test.ts +327 -0
  48. package/src/abort.d.ts +3 -0
  49. package/src/api/dev.ts +52 -0
  50. package/src/api/index.ts +1 -0
  51. package/src/bundle-reporter.tsx +29 -0
  52. package/src/bundle.ts +212 -0
  53. package/src/cfetch/index.ts +88 -69
  54. package/src/cfetch/internal.ts +124 -44
  55. package/src/cli.ts +24 -6
  56. package/src/config/README.md +107 -0
  57. package/src/config/config.ts +243 -0
  58. package/src/config/diagnostics.ts +80 -0
  59. package/src/config/environment.ts +453 -0
  60. package/src/config/index.ts +238 -0
  61. package/src/config/validation-helpers.ts +584 -0
  62. package/src/config/validation.ts +1745 -0
  63. package/src/config-cache.ts +83 -0
  64. package/src/create-worker-preview.ts +255 -0
  65. package/src/create-worker-upload-form.ts +263 -0
  66. package/src/dev/dev-vars.ts +36 -0
  67. package/src/dev/dev.tsx +417 -0
  68. package/src/dev/local.tsx +354 -0
  69. package/src/dev/remote.tsx +382 -0
  70. package/src/dev/use-esbuild.ts +150 -0
  71. package/src/dev.tsx +527 -773
  72. package/src/dialogs.tsx +117 -59
  73. package/src/durable.ts +102 -0
  74. package/src/entry.ts +328 -0
  75. package/src/environment-variables.ts +35 -0
  76. package/src/errors.ts +11 -0
  77. package/src/faye-websocket.d.ts +6 -0
  78. package/src/generate.ts +33 -0
  79. package/src/git-client.ts +42 -0
  80. package/src/global-wrangler-config-path.ts +26 -0
  81. package/src/https-options.ts +127 -0
  82. package/src/index.tsx +1869 -1901
  83. package/src/init.ts +549 -0
  84. package/src/inspect.ts +615 -496
  85. package/src/intl-polyfill.d.ts +139 -0
  86. package/src/is-interactive.ts +12 -0
  87. package/src/kv.ts +430 -0
  88. package/src/logger.ts +73 -0
  89. package/src/miniflare-cli/README.md +30 -0
  90. package/src/miniflare-cli/enum-keys.ts +17 -0
  91. package/src/miniflare-cli/index.ts +53 -0
  92. package/src/miniflare-cli/request-context.ts +40 -0
  93. package/src/module-collection.ts +247 -53
  94. package/src/open-in-browser.ts +17 -0
  95. package/src/package-manager.ts +219 -0
  96. package/src/pages/build.tsx +202 -0
  97. package/src/pages/constants.ts +7 -0
  98. package/src/pages/deployments.tsx +101 -0
  99. package/src/pages/dev.tsx +964 -0
  100. package/src/pages/functions/buildPlugin.ts +105 -0
  101. package/src/pages/functions/buildWorker.ts +151 -0
  102. package/src/pages/functions/filepath-routing.test.ts +234 -0
  103. package/src/pages/functions/filepath-routing.ts +189 -0
  104. package/src/pages/functions/identifiers.ts +78 -0
  105. package/src/pages/functions/routes.ts +151 -0
  106. package/src/pages/index.tsx +84 -0
  107. package/src/pages/projects.tsx +157 -0
  108. package/src/pages/publish.tsx +335 -0
  109. package/src/pages/types.ts +40 -0
  110. package/src/pages/upload.tsx +396 -0
  111. package/src/pages/utils.ts +12 -0
  112. package/src/parse.ts +286 -0
  113. package/src/paths.ts +26 -0
  114. package/src/preview.ts +31 -0
  115. package/src/proxy.ts +428 -254
  116. package/src/publish.ts +764 -366
  117. package/src/pubsub/index.ts +286 -0
  118. package/src/pubsub/pubsub-commands.tsx +577 -0
  119. package/src/r2.ts +50 -0
  120. package/src/selfsigned.d.ts +29 -0
  121. package/src/sites.tsx +357 -103
  122. package/src/tail/filters.ts +279 -0
  123. package/src/tail/index.ts +299 -0
  124. package/src/tail/printing.ts +67 -0
  125. package/src/update-check.ts +19 -0
  126. package/src/user/choose-account.tsx +60 -0
  127. package/src/user/env-vars.ts +46 -0
  128. package/src/user/generate-auth-url.ts +33 -0
  129. package/src/user/generate-random-state.ts +16 -0
  130. package/src/user/index.ts +3 -0
  131. package/src/user/user.tsx +1170 -0
  132. package/src/whoami.tsx +90 -0
  133. package/src/worker-namespace.ts +190 -0
  134. package/src/worker.ts +191 -0
  135. package/src/zones.ts +76 -0
  136. package/templates/checked-fetch.js +17 -0
  137. package/templates/gitignore +171 -0
  138. package/templates/new-worker-scheduled.js +17 -0
  139. package/templates/new-worker-scheduled.ts +32 -0
  140. package/templates/new-worker.js +15 -0
  141. package/templates/new-worker.ts +30 -0
  142. package/templates/no-op-worker.js +10 -0
  143. package/templates/pages-template-plugin.ts +155 -0
  144. package/templates/pages-template-worker.ts +161 -0
  145. package/templates/static-asset-facade.js +49 -0
  146. package/templates/tsconfig.json +105 -0
  147. package/wrangler-dist/cli.d.ts +298 -0
  148. package/wrangler-dist/cli.js +107673 -103262
  149. package/pages/functions/buildWorker.ts +0 -62
  150. package/pages/functions/filepath-routing.test.ts +0 -39
  151. package/pages/functions/filepath-routing.ts +0 -228
  152. package/pages/functions/identifiers.ts +0 -78
  153. package/pages/functions/routes.ts +0 -158
  154. package/pages/functions/template-worker.ts +0 -136
  155. package/src/__tests__/mock-cfetch.ts +0 -171
  156. package/src/__tests__/mock-dialogs.ts +0 -65
  157. package/src/__tests__/run-in-tmp.ts +0 -19
  158. package/src/__tests__/run-wrangler.ts +0 -32
  159. package/src/api/form_data.ts +0 -131
  160. package/src/api/preview.ts +0 -128
  161. package/src/api/worker.ts +0 -155
  162. package/src/config.ts +0 -646
  163. package/src/kv.tsx +0 -276
  164. package/src/pages.tsx +0 -1040
  165. package/src/tail.tsx +0 -73
  166. package/src/user.tsx +0 -1027
  167. package/static-asset-facade.js +0 -47
  168. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  169. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  170. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  171. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  172. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  173. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  174. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  175. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  176. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  177. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  178. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  179. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  180. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  181. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  182. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  183. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  184. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  185. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  186. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  187. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  188. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  189. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  190. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  191. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  192. package/vendor/wrangler-mime/LICENSE +0 -21
  193. package/vendor/wrangler-mime/Mime.js +0 -97
  194. package/vendor/wrangler-mime/README.md +0 -187
  195. package/vendor/wrangler-mime/cli.js +0 -46
  196. package/vendor/wrangler-mime/index.js +0 -4
  197. package/vendor/wrangler-mime/lite.js +0 -4
  198. package/vendor/wrangler-mime/package.json +0 -52
  199. package/vendor/wrangler-mime/types/other.js +0 -1
  200. package/vendor/wrangler-mime/types/standard.js +0 -1
  201. package/wrangler-dist/cli.js.map +0 -7
@@ -0,0 +1,202 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { logger } from "../logger";
5
+ import { toUrlPath } from "../paths";
6
+ import { isInPagesCI } from "./constants";
7
+ import { buildPlugin } from "./functions/buildPlugin";
8
+ import { buildWorker } from "./functions/buildWorker";
9
+ import { generateConfigFromFileTree } from "./functions/filepath-routing";
10
+ import { writeRoutesModule } from "./functions/routes";
11
+ import { pagesBetaWarning, RUNNING_BUILDERS } from "./utils";
12
+ import type { Config } from "./functions/routes";
13
+ import type { ArgumentsCamelCase, Argv } from "yargs";
14
+
15
+ type PagesBuildArgs = {
16
+ directory: string;
17
+ outfile: string;
18
+ "output-config-path"?: string;
19
+ minify: boolean;
20
+ sourcemap: boolean;
21
+ "fallback-service": string;
22
+ watch: boolean;
23
+ plugin: boolean;
24
+ "build-output-directory"?: string;
25
+ "node-compat": boolean;
26
+ };
27
+
28
+ export function Options(yargs: Argv): Argv<PagesBuildArgs> {
29
+ return yargs
30
+ .positional("directory", {
31
+ type: "string",
32
+ default: "functions",
33
+ description: "The directory of Pages Functions",
34
+ })
35
+ .options({
36
+ outfile: {
37
+ type: "string",
38
+ default: "_worker.js",
39
+ description: "The location of the output Worker script",
40
+ },
41
+ "output-config-path": {
42
+ type: "string",
43
+ description: "The location for the output config file",
44
+ },
45
+ minify: {
46
+ type: "boolean",
47
+ default: false,
48
+ description: "Minify the output Worker script",
49
+ },
50
+ sourcemap: {
51
+ type: "boolean",
52
+ default: false,
53
+ description: "Generate a sourcemap for the output Worker script",
54
+ },
55
+ "fallback-service": {
56
+ type: "string",
57
+ default: "ASSETS",
58
+ description:
59
+ "The service to fallback to at the end of the `next` chain. Setting to '' will fallback to the global `fetch`.",
60
+ },
61
+ watch: {
62
+ type: "boolean",
63
+ default: false,
64
+ description:
65
+ "Watch for changes to the functions and automatically rebuild the Worker script",
66
+ },
67
+ plugin: {
68
+ type: "boolean",
69
+ default: false,
70
+ description: "Build a plugin rather than a Worker script",
71
+ },
72
+ "build-output-directory": {
73
+ type: "string",
74
+ description: "The directory to output static assets to",
75
+ },
76
+ "node-compat": {
77
+ describe: "Enable node.js compatibility",
78
+ default: false,
79
+ type: "boolean",
80
+ hidden: true,
81
+ },
82
+ })
83
+ .epilogue(pagesBetaWarning);
84
+ }
85
+
86
+ export const Handler = async ({
87
+ directory,
88
+ outfile,
89
+ "output-config-path": outputConfigPath,
90
+ minify,
91
+ sourcemap,
92
+ fallbackService,
93
+ watch,
94
+ plugin,
95
+ "build-output-directory": buildOutputDirectory,
96
+ "node-compat": nodeCompat,
97
+ }: ArgumentsCamelCase<PagesBuildArgs>) => {
98
+ if (!isInPagesCI) {
99
+ // Beta message for `wrangler pages <commands>` usage
100
+ logger.log(pagesBetaWarning);
101
+ }
102
+
103
+ if (nodeCompat) {
104
+ console.warn(
105
+ "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."
106
+ );
107
+ }
108
+
109
+ buildOutputDirectory ??= dirname(outfile);
110
+
111
+ await buildFunctions({
112
+ outfile,
113
+ outputConfigPath,
114
+ functionsDirectory: directory,
115
+ minify,
116
+ sourcemap,
117
+ fallbackService,
118
+ watch,
119
+ plugin,
120
+ buildOutputDirectory,
121
+ nodeCompat,
122
+ });
123
+ };
124
+
125
+ export async function buildFunctions({
126
+ outfile,
127
+ outputConfigPath,
128
+ functionsDirectory,
129
+ minify = false,
130
+ sourcemap = false,
131
+ fallbackService = "ASSETS",
132
+ watch = false,
133
+ onEnd,
134
+ plugin = false,
135
+ buildOutputDirectory,
136
+ nodeCompat,
137
+ }: {
138
+ outfile: string;
139
+ outputConfigPath?: string;
140
+ functionsDirectory: string;
141
+ minify?: boolean;
142
+ sourcemap?: boolean;
143
+ fallbackService?: string;
144
+ watch?: boolean;
145
+ onEnd?: () => void;
146
+ plugin?: boolean;
147
+ buildOutputDirectory?: string;
148
+ nodeCompat?: boolean;
149
+ }) {
150
+ RUNNING_BUILDERS.forEach(
151
+ (runningBuilder) => runningBuilder.stop && runningBuilder.stop()
152
+ );
153
+
154
+ const routesModule = join(tmpdir(), `./functionsRoutes-${Math.random()}.mjs`);
155
+ const baseURL = toUrlPath("/");
156
+
157
+ const config: Config = await generateConfigFromFileTree({
158
+ baseDir: functionsDirectory,
159
+ baseURL,
160
+ });
161
+
162
+ if (outputConfigPath) {
163
+ writeFileSync(
164
+ outputConfigPath,
165
+ JSON.stringify({ ...config, baseURL }, null, 2)
166
+ );
167
+ }
168
+
169
+ await writeRoutesModule({
170
+ config,
171
+ srcDir: functionsDirectory,
172
+ outfile: routesModule,
173
+ });
174
+
175
+ if (plugin) {
176
+ RUNNING_BUILDERS.push(
177
+ await buildPlugin({
178
+ routesModule,
179
+ outfile,
180
+ minify,
181
+ sourcemap,
182
+ watch,
183
+ nodeCompat,
184
+ onEnd,
185
+ })
186
+ );
187
+ } else {
188
+ RUNNING_BUILDERS.push(
189
+ await buildWorker({
190
+ routesModule,
191
+ outfile,
192
+ minify,
193
+ sourcemap,
194
+ fallbackService,
195
+ watch,
196
+ onEnd,
197
+ buildOutputDirectory,
198
+ nodeCompat,
199
+ })
200
+ );
201
+ }
202
+ }
@@ -0,0 +1,7 @@
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 SECONDS_TO_WAIT_FOR_PROXY = 5;
7
+ export const isInPagesCI = !!process.env.CF_PAGES;
@@ -0,0 +1,101 @@
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 { requireAuth } from "../user";
10
+ import { PAGES_CONFIG_CACHE_FILENAME } from "./constants";
11
+ import { listProjects } from "./projects";
12
+ import { pagesBetaWarning } from "./utils";
13
+ import type { Deployment, PagesConfigCache } from "./types";
14
+ import type { ArgumentsCamelCase, Argv } from "yargs";
15
+
16
+ type ListArgs = {
17
+ "project-name"?: string;
18
+ };
19
+
20
+ export function ListOptions(yargs: Argv): Argv<ListArgs> {
21
+ return yargs
22
+ .options({
23
+ "project-name": {
24
+ type: "string",
25
+ description:
26
+ "The name of the project you would like to list deployments for",
27
+ },
28
+ })
29
+ .epilogue(pagesBetaWarning);
30
+ }
31
+
32
+ export async function ListHandler({
33
+ projectName,
34
+ }: ArgumentsCamelCase<ListArgs>) {
35
+ const config = getConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME);
36
+ const accountId = await requireAuth(config);
37
+
38
+ projectName ??= config.project_name;
39
+
40
+ const isInteractive = process.stdin.isTTY;
41
+ if (!projectName && isInteractive) {
42
+ const projects = await listProjects({ accountId });
43
+ projectName = await new Promise((resolve) => {
44
+ const { unmount } = render(
45
+ <>
46
+ <Text>Select a project:</Text>
47
+ <SelectInput
48
+ items={projects.map((project) => ({
49
+ key: project.name,
50
+ label: project.name,
51
+ value: project,
52
+ }))}
53
+ onSelect={async (selected) => {
54
+ resolve(selected.value.name);
55
+ unmount();
56
+ }}
57
+ />
58
+ </>
59
+ );
60
+ });
61
+ }
62
+
63
+ if (!projectName) {
64
+ throw new FatalError("Must specify a project name.", 1);
65
+ }
66
+
67
+ const deployments: Array<Deployment> = await fetchResult(
68
+ `/accounts/${accountId}/pages/projects/${projectName}/deployments`
69
+ );
70
+
71
+ const titleCase = (word: string) =>
72
+ word.charAt(0).toUpperCase() + word.slice(1);
73
+
74
+ const shortSha = (sha: string) => sha.slice(0, 7);
75
+
76
+ const getStatus = (deployment: Deployment) => {
77
+ // Return a pretty time since timestamp if successful otherwise the status
78
+ if (deployment.latest_stage.status === `success`) {
79
+ return timeagoFormat(deployment.latest_stage.ended_on);
80
+ }
81
+ return titleCase(deployment.latest_stage.status);
82
+ };
83
+
84
+ const data = deployments.map((deployment) => {
85
+ return {
86
+ Environment: titleCase(deployment.environment),
87
+ Branch: deployment.deployment_trigger.metadata.branch,
88
+ Source: shortSha(deployment.deployment_trigger.metadata.commit_hash),
89
+ Deployment: deployment.url,
90
+ Status: getStatus(deployment),
91
+ // TODO: Use a url shortener
92
+ Build: `https://dash.cloudflare.com/${accountId}/pages/view/${deployment.project_name}/${deployment.id}`,
93
+ };
94
+ });
95
+
96
+ saveToConfigCache<PagesConfigCache>(PAGES_CONFIG_CACHE_FILENAME, {
97
+ account_id: accountId,
98
+ });
99
+
100
+ render(<Table data={data}></Table>, { patchConsole: false });
101
+ }