Skip to content
Snippets Groups Projects
Commit b92996f1 authored by Jorik Schellekens's avatar Jorik Schellekens
Browse files

Future proof schemas by making them nonstrict

parent 75476bce
No related branches found
No related tags found
No related merge requests found
......@@ -17,14 +17,14 @@ limitations under the License.
import { object, string, TypeOf } from 'zod';
const EventSchema = object({
content: object({}).nonstrict(),
type: string(),
event_id: string(),
sender: string(),
origin_server_ts: string(),
unsigned: object({}).nonstrict().optional(),
room_id: string(),
});
content: object({}).nonstrict(),
type: string(),
event_id: string(),
sender: string(),
origin_server_ts: string(),
unsigned: object({}).nonstrict().optional(),
room_id: string(),
}).nonstrict();
export type Event = TypeOf<typeof EventSchema>;
export default EventSchema;
......@@ -17,27 +17,25 @@ limitations under the License.
import { object, array, string, boolean, number, TypeOf } from 'zod';
export const RoomSchema = object({
aliases: array(string()).optional(),
canonical_alias: string().optional(),
name: string().optional(),
num_joined_members: number(),
room_id: string(),
topic: string().optional(),
world_readable: boolean(),
guest_can_join: boolean(),
avatar_url: string().optional(),
});
aliases: array(string()).optional(),
canonical_alias: string().optional(),
name: string().optional(),
num_joined_members: number(),
room_id: string(),
topic: string().optional(),
world_readable: boolean(),
guest_can_join: boolean(),
avatar_url: string().optional(),
}).nonstrict();
const PublicRoomsSchema = object({
chunk: array(RoomSchema),
next_batch: string().optional(),
prev_batch: string().optional(),
total_room_count_estimate: number().optional(),
});
chunk: array(RoomSchema),
next_batch: string().optional(),
prev_batch: string().optional(),
total_room_count_estimate: number().optional(),
}).nonstrict();
export type Room = TypeOf<typeof RoomSchema>;
export type PublicRooms = TypeOf<typeof PublicRoomsSchema>;
export default PublicRoomsSchema;
......@@ -17,10 +17,9 @@ limitations under the License.
import { object, array, string, TypeOf } from 'zod';
const RoomAliasSchema = object({
room_id: string(),
servers: array(string()),
});
room_id: string(),
servers: array(string()),
}).nonstrict();
export type RoomAlias = TypeOf<typeof RoomAliasSchema>;
export default RoomAliasSchema;
......@@ -17,10 +17,9 @@ limitations under the License.
import { object, string, TypeOf } from 'zod';
const UserSchema = object({
avatar_url: string().optional(),
displayname: string().optional(),
})
avatar_url: string().optional(),
displayname: string().optional(),
}).nonstrict();
export type User = TypeOf<typeof UserSchema>;
export default UserSchema;
......@@ -17,13 +17,13 @@ limitations under the License.
import { object, string, TypeOf } from 'zod';
const WellKnownSchema = object({
'm.homeserver': object({
'base_url': string().url(),
}),
'm.identity_server': object({
'base_url': string().url(),
}),
});
'm.homeserver': object({
base_url: string().url(),
}),
'm.identity_server': object({
base_url: string().url(),
}).optional(),
}).nonstrict();
export type WellKnown = TypeOf<typeof WellKnownSchema>;
export default WellKnownSchema;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment