diff --git a/.changeset/pink-beees-brake.md b/.changeset/pink-beees-brake.md new file mode 100644 index 000000000000..b1d05c7fcf9c --- /dev/null +++ b/.changeset/pink-beees-brake.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +Remove dummy auth from SDK setup diff --git a/.changeset/pink-bees-brake.md b/.changeset/pink-bees-brake.md new file mode 100644 index 000000000000..c4787f55139c --- /dev/null +++ b/.changeset/pink-bees-brake.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +Add `WRANGLER_TRACE_ID` environment variable to support internal testing diff --git a/packages/wrangler/package.json b/packages/wrangler/package.json index 173c24b6d457..d3f3ea2fe56b 100644 --- a/packages/wrangler/package.json +++ b/packages/wrangler/package.json @@ -111,7 +111,7 @@ "chalk": "^5.2.0", "chokidar": "^4.0.1", "cli-table3": "^0.6.3", - "cloudflare": "^4.5.0", + "cloudflare": "^5.1.0", "cmd-shim": "^4.1.0", "command-exists": "^1.2.9", "concurrently": "^8.2.2", diff --git a/packages/wrangler/src/cfetch/internal.ts b/packages/wrangler/src/cfetch/internal.ts index 58781946c33d..332704335703 100644 --- a/packages/wrangler/src/cfetch/internal.ts +++ b/packages/wrangler/src/cfetch/internal.ts @@ -2,7 +2,10 @@ import assert from "node:assert"; import Cloudflare from "cloudflare"; import { fetch, FormData, Headers, Request, Response } from "undici"; import { version as wranglerVersion } from "../../package.json"; -import { getCloudflareApiBaseUrl } from "../environment-variables/misc-variables"; +import { + getCloudflareApiBaseUrl, + getTraceHeader, +} from "../environment-variables/misc-variables"; import { UserError } from "../errors"; import { logger } from "../logger"; import { APIError, parseJSON } from "../parse"; @@ -73,10 +76,6 @@ export function createCloudflareClient(complianceConfig: ComplianceConfig) { await logResponse(response); return response; }, - // We inject authentication using Wrangler's existing auth setup and a custom fetcher (see above for the custom fetch) - // However, `cloudflare` doesn't like not being given an API token, so we provide a dummy one - // Otherwise, errors like "Could not resolve authentication method." are thrown. - apiToken: "dummy", baseURL: getCloudflareApiBaseUrl(complianceConfig), }); } @@ -104,6 +103,7 @@ export async function performApiFetch( const headers = cloneHeaders(new Headers(init.headers)); addAuthorizationHeader(headers, apiToken); addUserAgent(headers); + maybeAddTraceHeader(headers); const queryString = queryParams ? `?${queryParams.toString()}` : ""; logger.debug( @@ -243,6 +243,13 @@ export function addUserAgent(headers: Headers): void { headers.set("User-Agent", `wrangler/${wranglerVersion}`); } +export function maybeAddTraceHeader(headers: Headers): void { + const traceHeader = getTraceHeader(); + if (traceHeader) { + headers.set("Cf-Trace-Id", traceHeader); + } +} + /** * The implementation for fetching a kv value from the cloudflare API. * We special-case this one call, because it's the only API call that diff --git a/packages/wrangler/src/environment-variables/factory.ts b/packages/wrangler/src/environment-variables/factory.ts index 0ab232b2a21d..562bce40972e 100644 --- a/packages/wrangler/src/environment-variables/factory.ts +++ b/packages/wrangler/src/environment-variables/factory.ts @@ -34,6 +34,8 @@ type VariableNames = | "CLOUDFLARE_LOAD_DEV_VARS_FROM_DOT_ENV" /** Include process.env in development variables (default: false). */ | "CLOUDFLARE_INCLUDE_PROCESS_ENV" + /** Include a trace header in all API requests that Wrangler makes (for internal use only) */ + | "WRANGLER_TRACE_ID" // ## Logging & Output diff --git a/packages/wrangler/src/environment-variables/misc-variables.ts b/packages/wrangler/src/environment-variables/misc-variables.ts index acab5c02108b..a6828fb87f6d 100644 --- a/packages/wrangler/src/environment-variables/misc-variables.ts +++ b/packages/wrangler/src/environment-variables/misc-variables.ts @@ -290,3 +290,7 @@ export const getCloudflareIncludeProcessEnvFromEnv = variableName: "CLOUDFLARE_INCLUDE_PROCESS_ENV", defaultValue: false, }); + +export const getTraceHeader = getEnvironmentVariableFactory({ + variableName: "WRANGLER_TRACE_ID", +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index edd2d2dc6a13..90c7ef4ba541 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3734,8 +3734,8 @@ importers: specifier: ^0.6.3 version: 0.6.3 cloudflare: - specifier: ^4.5.0 - version: 4.5.0(encoding@0.1.13) + specifier: ^5.1.0 + version: 5.1.0(encoding@0.1.13) cmd-shim: specifier: ^4.1.0 version: 4.1.0 @@ -8324,8 +8324,8 @@ packages: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} - cloudflare@4.5.0: - resolution: {integrity: sha512-fPcbPKx4zF45jBvQ0z7PCdgejVAPBBCZxwqk1k7krQNfpM07Cfj97/Q6wBzvYqlWXx/zt1S9+m8vnfCe06umbQ==} + cloudflare@5.1.0: + resolution: {integrity: sha512-J2vT90WHio8VSbGUmuHckJr9pabH6N+nQKQsgjfwydgV2bgyQoV/KqWw1Df+YKZ5T/QqP7KadKr4bxh+WiRafg==} clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} @@ -18562,7 +18562,7 @@ snapshots: clone@2.1.2: {} - cloudflare@4.5.0(encoding@0.1.13): + cloudflare@5.1.0(encoding@0.1.13): dependencies: '@types/node': 20.19.9 '@types/node-fetch': 2.6.11