wrangler 0.0.0-e6733a3 → 0.0.0-e9307365

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 (220) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +51 -14
  3. package/bin/wrangler.js +159 -27
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +5416 -0
  6. package/package.json +171 -124
  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 +4022 -0
  10. package/src/__tests__/dev.test.tsx +1290 -62
  11. package/src/__tests__/generate.test.ts +93 -0
  12. package/src/__tests__/guess-worker-format.test.ts +85 -0
  13. package/src/__tests__/{clipboardy-mock.js → helpers/clipboardy-mock.js} +0 -0
  14. package/src/__tests__/helpers/cmd-shim.d.ts +11 -0
  15. package/src/__tests__/helpers/mock-account-id.ts +48 -0
  16. package/src/__tests__/helpers/mock-bin.ts +36 -0
  17. package/src/__tests__/helpers/mock-cfetch.ts +263 -0
  18. package/src/__tests__/helpers/mock-console.ts +97 -0
  19. package/src/__tests__/helpers/mock-dialogs.ts +153 -0
  20. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  21. package/src/__tests__/helpers/mock-istty.ts +74 -0
  22. package/src/__tests__/helpers/mock-kv.ts +33 -0
  23. package/src/__tests__/helpers/mock-oauth-flow.ts +250 -0
  24. package/src/__tests__/helpers/mock-process.ts +39 -0
  25. package/src/__tests__/helpers/mock-stdin.ts +108 -0
  26. package/src/__tests__/helpers/mock-web-socket.ts +29 -0
  27. package/src/__tests__/helpers/run-in-tmp.ts +38 -0
  28. package/src/__tests__/helpers/run-wrangler.ts +16 -0
  29. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  30. package/src/__tests__/helpers/write-wrangler-toml.ts +17 -0
  31. package/src/__tests__/https-options.test.ts +163 -0
  32. package/src/__tests__/index.test.ts +242 -284
  33. package/src/__tests__/init.test.ts +1992 -0
  34. package/src/__tests__/jest.setup.ts +138 -10
  35. package/src/__tests__/kv.test.ts +1459 -886
  36. package/src/__tests__/logger.test.ts +141 -0
  37. package/src/__tests__/metrics.test.ts +450 -0
  38. package/src/__tests__/package-manager.test.ts +353 -0
  39. package/src/__tests__/pages.test.ts +1261 -0
  40. package/src/__tests__/parse.test.ts +330 -0
  41. package/src/__tests__/publish.test.ts +6914 -0
  42. package/src/__tests__/pubsub.test.ts +367 -0
  43. package/src/__tests__/r2.test.ts +317 -0
  44. package/src/__tests__/route.test.ts +45 -0
  45. package/src/__tests__/secret.test.ts +492 -0
  46. package/src/__tests__/tail.test.ts +698 -0
  47. package/src/__tests__/test-old-node-version.js +31 -0
  48. package/src/__tests__/user.test.ts +144 -0
  49. package/src/__tests__/validate-dev-props.test.ts +56 -0
  50. package/src/__tests__/version.test.ts +35 -0
  51. package/src/__tests__/whoami.test.tsx +289 -0
  52. package/src/__tests__/worker-namespace.test.ts +327 -0
  53. package/src/abort.d.ts +3 -0
  54. package/src/api/dev.ts +86 -0
  55. package/src/api/index.ts +1 -0
  56. package/src/bundle-reporter.tsx +29 -0
  57. package/src/bundle.ts +472 -0
  58. package/src/cfetch/index.ts +88 -69
  59. package/src/cfetch/internal.ts +156 -44
  60. package/src/cli.ts +24 -6
  61. package/src/config/README.md +107 -0
  62. package/src/config/config.ts +263 -0
  63. package/src/config/diagnostics.ts +80 -0
  64. package/src/config/environment.ts +485 -0
  65. package/src/config/index.ts +251 -0
  66. package/src/config/validation-helpers.ts +584 -0
  67. package/src/config/validation.ts +1856 -0
  68. package/src/config-cache.ts +84 -0
  69. package/src/create-worker-preview.ts +257 -0
  70. package/src/create-worker-upload-form.ts +288 -0
  71. package/src/dev/dev-vars.ts +36 -0
  72. package/src/dev/dev.tsx +531 -0
  73. package/src/dev/local.tsx +385 -0
  74. package/src/dev/remote.tsx +413 -0
  75. package/src/dev/use-esbuild.ts +175 -0
  76. package/src/dev/validate-dev-props.ts +31 -0
  77. package/src/dev-registry.tsx +157 -0
  78. package/src/dev.tsx +603 -758
  79. package/src/dialogs.tsx +117 -59
  80. package/src/durable.ts +102 -0
  81. package/src/entry.ts +328 -0
  82. package/src/environment-variables.ts +35 -0
  83. package/src/errors.ts +11 -0
  84. package/src/faye-websocket.d.ts +6 -0
  85. package/src/generate.ts +131 -0
  86. package/src/git-client.ts +42 -0
  87. package/src/global-wrangler-config-path.ts +26 -0
  88. package/src/https-options.ts +127 -0
  89. package/src/index.tsx +2166 -1956
  90. package/src/init.ts +549 -0
  91. package/src/inspect.ts +703 -477
  92. package/src/intl-polyfill.d.ts +139 -0
  93. package/src/is-interactive.ts +12 -0
  94. package/src/kv.ts +430 -0
  95. package/src/logger.ts +73 -0
  96. package/src/metrics/index.ts +5 -0
  97. package/src/metrics/is-ci.ts +14 -0
  98. package/src/metrics/metrics-config.ts +239 -0
  99. package/src/metrics/metrics-dispatcher.ts +96 -0
  100. package/src/metrics/metrics-usage-headers.ts +24 -0
  101. package/src/metrics/send-event.ts +92 -0
  102. package/src/miniflare-cli/README.md +30 -0
  103. package/src/miniflare-cli/assets.ts +543 -0
  104. package/src/miniflare-cli/enum-keys.ts +17 -0
  105. package/src/miniflare-cli/index.ts +85 -0
  106. package/src/miniflare-cli/request-context.ts +40 -0
  107. package/src/module-collection.ts +247 -53
  108. package/src/open-in-browser.ts +17 -0
  109. package/src/package-manager.ts +219 -0
  110. package/src/pages/build.tsx +204 -0
  111. package/src/pages/constants.ts +8 -0
  112. package/src/pages/deployments.tsx +106 -0
  113. package/src/pages/dev.tsx +414 -0
  114. package/src/pages/functions/buildPlugin.ts +105 -0
  115. package/src/pages/functions/buildWorker.ts +151 -0
  116. package/src/pages/functions/filepath-routing.test.ts +234 -0
  117. package/src/pages/functions/filepath-routing.ts +189 -0
  118. package/src/pages/functions/identifiers.ts +78 -0
  119. package/src/pages/functions/routes.ts +151 -0
  120. package/src/pages/index.tsx +84 -0
  121. package/src/pages/projects.tsx +163 -0
  122. package/src/pages/publish.tsx +338 -0
  123. package/src/pages/types.ts +40 -0
  124. package/src/pages/upload.tsx +415 -0
  125. package/src/pages/utils.ts +12 -0
  126. package/src/parse.ts +286 -0
  127. package/src/paths.ts +26 -0
  128. package/src/preview.ts +31 -0
  129. package/src/proxy.ts +434 -252
  130. package/src/publish.ts +794 -345
  131. package/src/pubsub/index.ts +286 -0
  132. package/src/pubsub/pubsub-commands.tsx +623 -0
  133. package/src/r2.ts +118 -0
  134. package/src/selfsigned.d.ts +29 -0
  135. package/src/sites.tsx +357 -99
  136. package/src/tail/filters.ts +279 -0
  137. package/src/tail/index.ts +299 -0
  138. package/src/tail/printing.ts +67 -0
  139. package/src/update-check.ts +19 -0
  140. package/src/user/choose-account.tsx +69 -0
  141. package/src/user/env-vars.ts +46 -0
  142. package/src/user/generate-auth-url.ts +33 -0
  143. package/src/user/generate-random-state.ts +16 -0
  144. package/src/user/index.ts +3 -0
  145. package/src/user/user.tsx +1189 -0
  146. package/src/whoami.tsx +169 -0
  147. package/src/worker-namespace.ts +206 -0
  148. package/src/worker.ts +203 -0
  149. package/src/zones.ts +76 -0
  150. package/templates/checked-fetch.js +17 -0
  151. package/templates/first-party-worker-module-facade.ts +18 -0
  152. package/templates/format-dev-errors.ts +32 -0
  153. package/templates/gitignore +171 -0
  154. package/templates/new-worker-scheduled.js +17 -0
  155. package/templates/new-worker-scheduled.ts +32 -0
  156. package/templates/new-worker.js +15 -0
  157. package/templates/new-worker.ts +30 -0
  158. package/templates/no-op-worker.js +10 -0
  159. package/templates/pages-shim.ts +9 -0
  160. package/templates/pages-template-plugin.ts +155 -0
  161. package/templates/pages-template-worker.ts +161 -0
  162. package/templates/serve-static-assets.ts +63 -0
  163. package/templates/service-bindings-module-facade.js +51 -0
  164. package/templates/service-bindings-sw-facade.js +39 -0
  165. package/templates/tsconfig.json +105 -0
  166. package/wrangler-dist/cli.d.ts +327 -0
  167. package/wrangler-dist/cli.js +134880 -109997
  168. package/pages/functions/buildWorker.ts +0 -62
  169. package/pages/functions/filepath-routing.test.ts +0 -39
  170. package/pages/functions/filepath-routing.ts +0 -221
  171. package/pages/functions/identifiers.ts +0 -78
  172. package/pages/functions/routes.ts +0 -158
  173. package/pages/functions/template-worker.ts +0 -144
  174. package/src/__tests__/mock-cfetch.ts +0 -171
  175. package/src/__tests__/mock-dialogs.ts +0 -65
  176. package/src/__tests__/run-in-tmp.ts +0 -19
  177. package/src/__tests__/run-wrangler.ts +0 -32
  178. package/src/api/form_data.ts +0 -131
  179. package/src/api/preview.ts +0 -128
  180. package/src/api/worker.ts +0 -155
  181. package/src/config.ts +0 -487
  182. package/src/kv.tsx +0 -267
  183. package/src/pages.tsx +0 -1031
  184. package/src/tail.tsx +0 -73
  185. package/src/user.tsx +0 -1025
  186. package/static-asset-facade.js +0 -47
  187. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  188. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  189. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  190. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  191. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  192. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  193. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  194. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  195. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  196. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  197. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  198. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  199. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  200. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  201. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  202. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  203. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  204. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  205. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  206. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  207. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  208. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  209. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  210. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  211. package/vendor/wrangler-mime/LICENSE +0 -21
  212. package/vendor/wrangler-mime/Mime.js +0 -97
  213. package/vendor/wrangler-mime/README.md +0 -187
  214. package/vendor/wrangler-mime/cli.js +0 -46
  215. package/vendor/wrangler-mime/index.js +0 -4
  216. package/vendor/wrangler-mime/lite.js +0 -4
  217. package/vendor/wrangler-mime/package.json +0 -52
  218. package/vendor/wrangler-mime/types/other.js +0 -1
  219. package/vendor/wrangler-mime/types/standard.js +0 -1
  220. package/wrangler-dist/cli.js.map +0 -7
@@ -0,0 +1,69 @@
1
+ import { Text } from "ink";
2
+ import SelectInput from "ink-select-input";
3
+ import React from "react";
4
+ import { fetchListResult } from "../cfetch";
5
+ import { logger } from "../logger";
6
+ import { getCloudflareAccountIdFromEnv } from "./env-vars";
7
+
8
+ export type ChooseAccountItem = {
9
+ id: string;
10
+ name: string;
11
+ };
12
+
13
+ /**
14
+ * A component that allows the user to select from a list of available accounts.
15
+ */
16
+ export function ChooseAccount(props: {
17
+ accounts: ChooseAccountItem[];
18
+ onSelect: (account: { name: string; id: string }) => void;
19
+ onError: (error: Error) => void;
20
+ }) {
21
+ return (
22
+ <>
23
+ <Text bold>Select an account from below:</Text>
24
+ <SelectInput
25
+ items={props.accounts.map((item) => ({
26
+ key: item.id,
27
+ label: item.name,
28
+ value: item,
29
+ }))}
30
+ onSelect={(item) => {
31
+ logger.log(`Using account: "${item.value.name} - ${item.value.id}"`);
32
+ props.onSelect({ id: item.value.id, name: item.value.name });
33
+ }}
34
+ />
35
+ </>
36
+ );
37
+ }
38
+
39
+ /**
40
+ * Infer a list of available accounts for the current user.
41
+ */
42
+ export async function getAccountChoices(): Promise<ChooseAccountItem[]> {
43
+ const accountIdFromEnv = getCloudflareAccountIdFromEnv();
44
+ if (accountIdFromEnv) {
45
+ return [{ id: accountIdFromEnv, name: "" }];
46
+ } else {
47
+ try {
48
+ const response = await fetchListResult<{
49
+ account: ChooseAccountItem;
50
+ }>(`/memberships`);
51
+ const accounts = response.map((r) => r.account);
52
+ if (accounts.length === 0) {
53
+ throw new Error(
54
+ "Failed to automatically retrieve account IDs for the logged in user.\n" +
55
+ "In a non-interactive environment, it is mandatory to specify an account ID, either by assigning its value to CLOUDFLARE_ACCOUNT_ID, or as `account_id` in your `wrangler.toml` file."
56
+ );
57
+ } else {
58
+ return accounts;
59
+ }
60
+ } catch (err) {
61
+ if ((err as { code: number }).code === 9109) {
62
+ throw new Error(
63
+ `Failed to automatically retrieve account IDs for the logged in user.
64
+ You may have incorrect permissions on your API token. You can skip this account check by adding an \`account_id\` in your \`wrangler.toml\`, or by setting the value of CLOUDFLARE_ACCOUNT_ID"`
65
+ );
66
+ } else throw err;
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,46 @@
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
+ });
@@ -0,0 +1,33 @@
1
+ interface GenerateAuthUrlProps {
2
+ authUrl: string;
3
+ clientId: string;
4
+ callbackUrl: string;
5
+ scopes: string[];
6
+ stateQueryParam: string;
7
+ codeChallenge: string;
8
+ }
9
+
10
+ /**
11
+ * generateAuthUrl was extracted from getAuthURL in user.tsx
12
+ * to make it possible to mock the generated URL
13
+ */
14
+ export const generateAuthUrl = ({
15
+ authUrl,
16
+ clientId,
17
+ callbackUrl,
18
+ scopes,
19
+ stateQueryParam,
20
+ codeChallenge,
21
+ }: GenerateAuthUrlProps) => {
22
+ return (
23
+ authUrl +
24
+ `?response_type=code&` +
25
+ `client_id=${encodeURIComponent(clientId)}&` +
26
+ `redirect_uri=${encodeURIComponent(callbackUrl)}&` +
27
+ // we add offline_access manually for every request
28
+ `scope=${encodeURIComponent([...scopes, "offline_access"].join(" "))}&` +
29
+ `state=${stateQueryParam}&` +
30
+ `code_challenge=${encodeURIComponent(codeChallenge)}&` +
31
+ `code_challenge_method=S256`
32
+ );
33
+ };
@@ -0,0 +1,16 @@
1
+ import { webcrypto as crypto } from "node:crypto";
2
+ import { PKCE_CHARSET } from "../user";
3
+
4
+ /**
5
+ * Generates random state to be passed for anti-csrf.
6
+ * extracted from user.tsx to make it possible to
7
+ * mock the generated URL
8
+ */
9
+ export function generateRandomState(lengthOfState: number): string {
10
+ const output = new Uint32Array(lengthOfState);
11
+ // @ts-expect-error crypto's types aren't there yet
12
+ crypto.getRandomValues(output);
13
+ return Array.from(output)
14
+ .map((num: number) => PKCE_CHARSET[num % PKCE_CHARSET.length])
15
+ .join("");
16
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./user";
2
+ export * from "./env-vars";
3
+ export * from "./choose-account";