Skip to content
File

Blob: src/shared/contracts/common.ts

typescript41 lines
1import { eg, type TypeFromCodec } from "@cloudflare/util-en-garde";
2 
3export const ADMIN_ACCESS_DISABLED_ERROR_CODE = "ADMIN_ACCESS_DISABLED" as const;
4export const AdminAccessDisabledErrorCode = eg.literal(ADMIN_ACCESS_DISABLED_ERROR_CODE);
5export type AdminAccessDisabledErrorCode = TypeFromCodec<typeof AdminAccessDisabledErrorCode>;
6 
7export const NullableString = eg.union([eg.string, eg.null]);
8export type NullableString = TypeFromCodec<typeof NullableString>;
9 
10export const NullableNumber = eg.union([eg.number, eg.null]);
11export type NullableNumber = TypeFromCodec<typeof NullableNumber>;
12 
13export const TurnstileToken = eg.string;
14export type TurnstileToken = TypeFromCodec<typeof TurnstileToken>;
15 
16export const OkResponse = eg.object({
17 ok: eg.boolean,
18});
19export type OkResponse = TypeFromCodec<typeof OkResponse>;
20 
21export const ErrorResponse = eg.object({
22 code: AdminAccessDisabledErrorCode.optional,
23 error: eg.string.optional,
24});
25export type ErrorResponse = TypeFromCodec<typeof ErrorResponse>;
26 
27export const WebSocketTicketResponse = eg.object({
28 ticket: eg.string,
29});
30export type WebSocketTicketResponse = TypeFromCodec<typeof WebSocketTicketResponse>;
31 
32export const DomainsResponse = eg.object({
33 domains: eg.array(eg.string),
34});
35export type DomainsResponse = TypeFromCodec<typeof DomainsResponse>;
36 
37export const PublicConfigResponse = eg.object({
38 turnstileSiteKey: eg.string,
39});
40export type PublicConfigResponse = TypeFromCodec<typeof PublicConfigResponse>;