Skip to content

Commit fe71fe9

Browse files
Surface runtime inference source in debug logs
Adds getCloudflareWorkersOverride() to common/runtime.ts and logs the runtime decision in init() when a Workers context is present, e.g. `[CH] Cloudflare Workers runtime: true (via override)` vs `(via navigator inference)`. Helps integrators confirm at a glance which signal drove the transport decision. Bumps to 2.4.2. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 0496c2f commit fe71fe9

4 files changed

Lines changed: 25 additions & 4 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "crowdhandler-sdk",
3-
"version": "2.4.1",
3+
"version": "2.4.2",
44
"description": "",
55
"homepage": "https://www.crowdhandler.com",
66
"repository": {

src/common/runtime.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ export function setCloudflareWorkersOverride(value: boolean | null): void {
2121
cloudflareWorkersOverride = value;
2222
}
2323

24+
export function getCloudflareWorkersOverride(): boolean | null {
25+
return cloudflareWorkersOverride;
26+
}
27+
2428
export function isCloudflareWorkers(): boolean {
2529
if (cloudflareWorkersOverride !== null) return cloudflareWorkersOverride;
2630
return detectCloudflareWorkers();

src/init.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import { RequestContext } from "./request/requestContext";
44
import { Gatekeeper } from "./gatekeeper/gatekeeper";
55
import { GatekeeperOptions, Mode, Modes } from "./common/types";
66
import { CrowdHandlerError, createError, ErrorCodes } from "./common/errors";
7-
import { setCloudflareWorkersOverride } from "./common/runtime";
7+
import {
8+
getCloudflareWorkersOverride,
9+
isCloudflareWorkers,
10+
setCloudflareWorkersOverride,
11+
} from "./common/runtime";
12+
import { logger } from "./common/logger";
813

914
/**
1015
* Configuration options for initializing CrowdHandler
@@ -191,6 +196,18 @@ export function init(config: InitConfig): InitResult {
191196
setCloudflareWorkersOverride(true);
192197
}
193198

199+
// When a Workers context is provided, surface which signal drove the runtime
200+
// decision so debug logs can distinguish forced overrides from navigator
201+
// inference. Only emitted in debug mode.
202+
if (config.cloudflareWorkersRequest) {
203+
const source = getCloudflareWorkersOverride() !== null ? "override" : "navigator inference";
204+
logger(
205+
!!config.options?.debug,
206+
"info",
207+
`[CH] Cloudflare Workers runtime: ${isCloudflareWorkers()} (via ${source})`
208+
);
209+
}
210+
194211
// Create unified client
195212
const client = new Client({
196213
publicKey: config.publicKey,

0 commit comments

Comments
 (0)