@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
JavaScript
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' },
},
}),
};