Skip to content

Commit 9b56517

Browse files
WC-3584 Add eyeball routing config
Provided via a new optional param binding. When provided, it contains info about free tier limiting for this account.
1 parent ed154eb commit 9b56517

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed
Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
1-
import type { RouterConfig } from "../../utils/types";
1+
import type { EyeballRouterConfig, RouterConfig } from "../../utils/types";
2+
3+
type RequiredEyeballRouterConfig = Required<Exclude<EyeballRouterConfig, null>>;
24

35
export const applyConfigurationDefaults = (
4-
configuration?: RouterConfig
5-
): Required<RouterConfig> => {
6-
return {
7-
invoke_user_worker_ahead_of_assets:
8-
configuration?.invoke_user_worker_ahead_of_assets ?? false,
9-
has_user_worker: configuration?.has_user_worker ?? false,
10-
account_id: configuration?.account_id ?? -1,
11-
script_id: configuration?.script_id ?? -1,
12-
debug: configuration?.debug ?? false,
13-
static_routing: configuration?.static_routing ?? {
14-
user_worker: [],
6+
configuration?: RouterConfig,
7+
eyeballConfiguration?: EyeballRouterConfig
8+
): [Required<RouterConfig>, RequiredEyeballRouterConfig] => {
9+
return [
10+
{
11+
invoke_user_worker_ahead_of_assets:
12+
configuration?.invoke_user_worker_ahead_of_assets ?? false,
13+
has_user_worker: configuration?.has_user_worker ?? false,
14+
account_id: configuration?.account_id ?? -1,
15+
script_id: configuration?.script_id ?? -1,
16+
debug: configuration?.debug ?? false,
17+
static_routing: configuration?.static_routing ?? {
18+
user_worker: [],
19+
},
20+
},
21+
{
22+
limitedAssetsOnly: eyeballConfiguration?.limitedAssetsOnly ?? false,
1523
},
16-
};
24+
];
1725
};

packages/workers-shared/router-worker/src/worker.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Analytics, DISPATCH_TYPE, STATIC_ROUTING_DECISION } from "./analytics";
66
import { applyConfigurationDefaults } from "./configuration";
77
import type AssetWorker from "../../asset-worker";
88
import type {
9+
EyeballRouterConfig,
910
JaegerTracing,
1011
RouterConfig,
1112
UnsafePerformanceTimer,
@@ -16,6 +17,7 @@ export interface Env {
1617
ASSET_WORKER: Service<AssetWorker>;
1718
USER_WORKER: Fetcher;
1819
CONFIG: RouterConfig;
20+
EYEBALL_CONFIG: EyeballRouterConfig;
1921

2022
SENTRY_DSN: string;
2123
ENVIRONMENT: Environment;
@@ -55,7 +57,10 @@ export default {
5557
);
5658

5759
const hasStaticRouting = env.CONFIG.static_routing !== undefined;
58-
const config = applyConfigurationDefaults(env.CONFIG);
60+
const [config, eyeballConfig] = applyConfigurationDefaults(
61+
env.CONFIG,
62+
env.EYEBALL_CONFIG
63+
);
5964

6065
const url = new URL(request.url);
6166

packages/workers-shared/router-worker/wrangler.jsonc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
"type": "param",
2626
"param": "routerConfig",
2727
},
28+
{
29+
"name": "EYEBALL_CONFIG",
30+
"type": "param",
31+
"param": "eyeballRouterConfig",
32+
"optional": true,
33+
},
2834
{
2935
"name": "ASSET_WORKER",
3036
"type": "internal_assets",

packages/workers-shared/utils/types.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ export const RouterConfigSchema = z.object({
2020
...InternalConfigSchema.shape,
2121
});
2222

23+
export const EyeballRouterConfigSchema = z.union([
24+
z.object({
25+
limitedAssetsOnly: z.boolean().optional(),
26+
}),
27+
z.null(),
28+
]);
29+
2330
const MetadataStaticRedirectEntry = z.object({
2431
status: z.number(),
2532
to: z.string(),
@@ -79,6 +86,7 @@ export const AssetConfigSchema = z.object({
7986
...InternalConfigSchema.shape,
8087
});
8188

89+
export type EyeballRouterConfig = z.infer<typeof EyeballRouterConfigSchema>;
8290
export type RouterConfig = z.infer<typeof RouterConfigSchema>;
8391
export type AssetConfig = z.infer<typeof AssetConfigSchema>;
8492

0 commit comments

Comments
 (0)