UNPKG

@4players/odin

Version:

A cross-platform SDK enabling developers to integrate real-time VoIP chat technology into their projects

113 lines (112 loc) 2.85 kB
import { create } from './schema-validation'; const MEDIA = create({ type: 'Object', optional: true, fields: { id: { type: 'Number' }, paused: { type: 'Boolean', optional: true }, properties: { type: 'Object', fields: { kind: { type: 'String', optional: true, }, }, }, }, }); const MEDIAS = create({ array: true, type: 'Object', fields: { id: { type: 'Number' }, paused: { type: 'Boolean', optional: true }, properties: { type: 'Object', fields: { kind: { type: 'String', optional: true, }, }, }, }, }); const PEER = create({ type: 'Object', fields: { id: { type: 'Number' }, medias: MEDIAS, user_data: { type: 'U8' }, user_id: { type: 'String' }, }, optional: true, }); const PEERS = create({ array: true, type: 'Object', fields: { id: { type: 'Number' }, medias: MEDIAS, user_data: { type: 'U8' }, user_id: { type: 'String' }, }, }); const ROOM = create({ type: 'Object', fields: { customer: { type: 'String' }, id: { type: 'String' }, peers: PEERS, user_data: { type: 'U8' }, }, optional: true, }); export const EVENT_SCHEMAS = { RoomUpdated: create({ type: 'Object', fields: { updates: { type: 'Object', array: true, fields: { kind: { type: 'String' }, media_ids: { array: true, type: 'Number', optional: true }, own_peer_id: { type: 'Number', optional: true }, room: ROOM, peer: PEER, user_data: { type: 'U8', optional: true }, peer_id: { type: 'Number', optional: true }, }, }, }, }), PeerUpdated: create({ type: 'Object', fields: { kind: { type: 'String' }, peer_id: { type: 'Number' }, media: MEDIA, properties: { type: 'Object', fields: { kind: { type: 'String', optional: true }, }, optional: true, }, media_id: { type: 'Number', optional: true }, user_data: { type: 'U8', optional: true, }, }, }), MessageReceived: create({ type: 'Object', fields: { sender_peer_id: { type: 'Number' }, message: { type: 'U8' }, }, }), };