@4players/odin-common
Version:
A collection of commonly used type definitions and utility functions across ODIN web projects
34 lines (33 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenClaimsSchema = exports.TokenSubjectSchema = exports.TokenAudienceSchema = void 0;
exports.oneOrMany = oneOrMany;
const zod_1 = require("zod");
exports.TokenAudienceSchema = zod_1.z.enum(['sfu', 'gateway']);
exports.TokenSubjectSchema = zod_1.z.enum([
'connect',
'roomclose',
'roomupdate',
'roombanclient',
'roomsendmessage',
]);
exports.TokenClaimsSchema = zod_1.z.object({
uid: zod_1.z.string(),
cid: zod_1.z.optional(zod_1.z.string()),
rid: oneOrMany(zod_1.z.string()),
nsp: zod_1.z.optional(zod_1.z.string()),
adr: zod_1.z.optional(zod_1.z.string()),
aud: zod_1.z.optional(oneOrMany(exports.TokenAudienceSchema)),
sub: zod_1.z.optional(oneOrMany(exports.TokenSubjectSchema)),
exp: zod_1.z.optional(zod_1.z.number()),
nbf: zod_1.z.optional(zod_1.z.number()),
ups: zod_1.z.optional(zod_1.z.string()),
tgs: zod_1.z.optional(oneOrMany(zod_1.z.string())),
tsp: zod_1.z.optional(zod_1.z.number()),
internal: zod_1.z.optional(zod_1.z.object({
server: zod_1.z.optional(zod_1.z.string()),
})),
});
function oneOrMany(type) {
return zod_1.z.union([type, zod_1.z.array(type)]);
}