Skip to content

Commit 8405add

Browse files
Merge pull request #17 from Crowdhandler/feature/force-cloudflare-worker
Add forceCloudflareWorkers option to bypass runtime inference
2 parents 23dba31 + 8c00364 commit 8405add

20 files changed

Lines changed: 271 additions & 57 deletions

dist/client/base_client.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ var BaseClient = /** @class */ (function () {
7575
this.apiUrl = options.apiUrl || apiUrl;
7676
this.key = key;
7777
this.timeout = options.timeout || 5000;
78-
if (!runtime_1.isCloudflareWorkers) {
78+
if (!(0, runtime_1.isCloudflareWorkers)()) {
7979
// axios.defaults is process-global state and is meaningless in Workers
8080
// (we don't use axios there). Skip in Workers to avoid touching axios's
8181
// internal config which can drag in Node-only deps during import.
@@ -97,7 +97,7 @@ var BaseClient = /** @class */ (function () {
9797
switch (_e.label) {
9898
case 0:
9999
requestTimeout = (_a = options.timeout) !== null && _a !== void 0 ? _a : this.timeout;
100-
if (!!runtime_1.isCloudflareWorkers) return [3 /*break*/, 2];
100+
if (!!(0, runtime_1.isCloudflareWorkers)()) return [3 /*break*/, 2];
101101
return [4 /*yield*/, axios_1.default.request({
102102
method: method,
103103
url: url,

dist/common/runtime.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,32 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.isCloudflareWorkers = void 0;
3+
exports.isCloudflareWorkers = exports.getCloudflareWorkersOverride = exports.setCloudflareWorkersOverride = void 0;
44
/**
55
* Detect if we're running in the Cloudflare Workers (workerd) runtime.
66
* Workers sets navigator.userAgent to "Cloudflare-Workers" — this is the
77
* documented and stable detection signal:
88
* https://developers.cloudflare.com/workers/runtime-apis/web-standards/
9+
*
10+
* The override (set via init({ options: { forceCloudflareWorkers } }) or
11+
* setCloudflareWorkersOverride directly) takes precedence over the navigator
12+
* check so callers that already know they are on Workers can bypass inference.
913
*/
10-
exports.isCloudflareWorkers = typeof navigator !== "undefined" &&
11-
navigator.userAgent === "Cloudflare-Workers";
14+
var cloudflareWorkersOverride = null;
15+
function detectCloudflareWorkers() {
16+
return (typeof navigator !== "undefined" &&
17+
navigator.userAgent === "Cloudflare-Workers");
18+
}
19+
function setCloudflareWorkersOverride(value) {
20+
cloudflareWorkersOverride = value;
21+
}
22+
exports.setCloudflareWorkersOverride = setCloudflareWorkersOverride;
23+
function getCloudflareWorkersOverride() {
24+
return cloudflareWorkersOverride;
25+
}
26+
exports.getCloudflareWorkersOverride = getCloudflareWorkersOverride;
27+
function isCloudflareWorkers() {
28+
if (cloudflareWorkersOverride !== null)
29+
return cloudflareWorkersOverride;
30+
return detectCloudflareWorkers();
31+
}
32+
exports.isCloudflareWorkers = isCloudflareWorkers;

dist/crowdhandler.cjs.js

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

dist/crowdhandler.cjs.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/crowdhandler.esm.js

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

dist/crowdhandler.esm.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)