Skip to content

Commit 3306228

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 f7cffac commit 3306228

File tree

4 files changed

+42
-15
lines changed

4 files changed

+42
-15
lines changed
Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
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-
version: 1,
15-
include: [],
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+
version: 1,
19+
include: [],
20+
},
21+
},
22+
{
23+
limitedAssetsOnly: eyeballConfiguration?.limitedAssetsOnly ?? false,
1624
},
17-
};
25+
];
1826
};

packages/workers-shared/router-worker/src/index.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/src/index";
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
@@ -19,6 +19,13 @@ export const RouterConfigSchema = z.object({
1919
...InternalConfigSchema.shape,
2020
});
2121

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

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

0 commit comments

Comments
 (0)