UNPKG

@4players/odin-common

Version:

A collection of commonly used type definitions and utility functions across ODIN web projects

30 lines (29 loc) 874 B
import { z } from 'zod'; export const TokenAudienceSchema = z.enum(['sfu', 'gateway']); export const TokenSubjectSchema = z.enum([ 'connect', 'roomclose', 'roomupdate', 'roombanclient', 'roomsendmessage', ]); export const TokenClaimsSchema = z.object({ uid: z.string(), cid: z.optional(z.string()), rid: oneOrMany(z.string()), nsp: z.optional(z.string()), adr: z.optional(z.string()), aud: z.optional(oneOrMany(TokenAudienceSchema)), sub: z.optional(oneOrMany(TokenSubjectSchema)), exp: z.optional(z.number()), nbf: z.optional(z.number()), ups: z.optional(z.string()), tgs: z.optional(oneOrMany(z.string())), tsp: z.optional(z.number()), internal: z.optional(z.object({ server: z.optional(z.string()), })), }); export function oneOrMany(type) { return z.union([type, z.array(type)]); }