Add schema validators for map state
This commit is contained in:
104
src/validators/MapState.ts
Normal file
104
src/validators/MapState.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
import Ajv from "ajv";
|
||||
import { MapState } from "../types/MapState";
|
||||
|
||||
import { DrawingSchema } from "./Drawing";
|
||||
import { FogSchema } from "./Fog";
|
||||
import { NoteSchema } from "./Note";
|
||||
import { TokenStateSchema } from "./TokenState";
|
||||
import { Vector2Schema } from "./Vector2";
|
||||
import { ColorSchema } from "./Color";
|
||||
import { OutlineSchema } from "./Outline";
|
||||
|
||||
export const MapStateSchema: any = {
|
||||
$id: "https://www.owlbear.rodeo/schemas/map-state.json",
|
||||
properties: {
|
||||
tokens: {
|
||||
$ref: "#/definitions/TokenStates",
|
||||
},
|
||||
drawShapes: {
|
||||
$ref: "#/definitions/DrawingState",
|
||||
},
|
||||
fogShapes: {
|
||||
$ref: "#/definitions/FogState",
|
||||
},
|
||||
editFlags: {
|
||||
items: {
|
||||
enum: ["drawing", "fog", "notes", "tokens"],
|
||||
type: "string",
|
||||
},
|
||||
type: "array",
|
||||
},
|
||||
notes: {
|
||||
$ref: "#/definitions/Notes",
|
||||
},
|
||||
mapId: {
|
||||
type: "string",
|
||||
},
|
||||
},
|
||||
required: [
|
||||
"drawShapes",
|
||||
"editFlags",
|
||||
"fogShapes",
|
||||
"mapId",
|
||||
"notes",
|
||||
"tokens",
|
||||
],
|
||||
type: "object",
|
||||
definitions: {
|
||||
TokenStates: {
|
||||
propertyNames: {
|
||||
type: "string",
|
||||
},
|
||||
additionalProperties: {
|
||||
$ref: "token-state.json",
|
||||
},
|
||||
required: [],
|
||||
type: "object",
|
||||
},
|
||||
DrawingState: {
|
||||
propertyNames: {
|
||||
type: "string",
|
||||
},
|
||||
additionalProperties: {
|
||||
$ref: "drawing.json",
|
||||
},
|
||||
required: [],
|
||||
type: "object",
|
||||
},
|
||||
FogState: {
|
||||
propertyNames: {
|
||||
type: "string",
|
||||
},
|
||||
additionalProperties: {
|
||||
$ref: "fog.json",
|
||||
},
|
||||
required: [],
|
||||
type: "object",
|
||||
},
|
||||
Notes: {
|
||||
propertyNames: {
|
||||
type: "string",
|
||||
},
|
||||
additionalProperties: {
|
||||
$ref: "note.json",
|
||||
},
|
||||
required: [],
|
||||
type: "object",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const ajv = new Ajv({
|
||||
schemas: [
|
||||
MapStateSchema,
|
||||
DrawingSchema,
|
||||
FogSchema,
|
||||
NoteSchema,
|
||||
TokenStateSchema,
|
||||
Vector2Schema,
|
||||
ColorSchema,
|
||||
OutlineSchema,
|
||||
],
|
||||
});
|
||||
|
||||
export const isMapState = ajv.compile<MapState>(MapStateSchema);
|
||||
Reference in New Issue
Block a user