| 13 | } |
| 14 | |
| 15 | const schema = <const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) => |
| 16 | Schema.Union([ |
| 17 | ...definitions, |
| 18 | ...(definitions.some((definition) => definition.type === "server.connected") |
| 19 | ? [] |
| 20 | : [ |
| 21 | Schema.Struct({ |
| 22 | ...fields, |
| 23 | type: Schema.Literal("server.connected"), |
| 24 | data: Schema.Struct({}), |
| 25 | }).annotate({ identifier: "V2Event.server.connected" }), |
| 26 | ]), |
| 27 | ]).annotate({ identifier: "V2Event" }) |
| 28 | |
| 29 | const make = <const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) => { |
| 30 | const EventSchema = schema(definitions) |