@mapletip/data 0.3.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +216 -2
- package/client/contract-compatibility.mjs +10 -0
- package/client/items.d.ts +28 -5
- package/client/items.js +94 -5
- package/client/map-geography.d.ts +4 -0
- package/client/map-geography.js +2 -0
- package/client/maps.d.ts +22 -0
- package/client/maps.js +25 -0
- package/client/monster-client.d.ts +22 -3
- package/client/monster-client.js +115 -5
- package/client/monsters.d.ts +33 -7
- package/client/monsters.js +36 -4
- package/client/static-client.d.ts +7 -5
- package/client/static-client.js +3 -2
- package/client/static-domains.d.ts +8 -1
- package/client/static-domains.js +27 -3
- package/generated/item-browse-pack-2.d.ts +83 -1
- package/generated/item-browse-pack-2.validator.js +2 -2
- package/generated/item-related-entity-browse-1.d.ts +48 -0
- package/generated/item-related-entity-browse-1.validator.js +1 -0
- package/generated/map-catalog-2-1.d.ts +103 -0
- package/generated/map-catalog-2-1.validator.d.ts +18 -0
- package/generated/map-catalog-2-1.validator.js +1 -0
- package/generated/map-geography.d.ts +79 -0
- package/generated/map-geography.validator.d.ts +18 -0
- package/generated/map-geography.validator.js +1 -0
- package/generated/monster-catalog-2-2.d.ts +332 -0
- package/generated/monster-catalog-2-2.validator.js +17 -0
- package/generated/monster-catalog-2-3.d.ts +339 -0
- package/generated/monster-catalog-2-3.validator.js +17 -0
- package/generated/monster-catalog-2-4.d.ts +378 -0
- package/generated/monster-catalog-2-4.validator.js +17 -0
- package/generated/monster-drop-browse-1-1.d.ts +150 -0
- package/generated/monster-drop-browse-1-1.validator.js +17 -0
- package/generated/monster-drop-browse.d.ts +123 -0
- package/generated/monster-drop-browse.validator.js +17 -0
- package/generated/monster-location-browse-1-1.d.ts +79 -0
- package/generated/monster-location-browse-1-1.validator.js +17 -0
- package/generated/monster-location-browse.d.ts +69 -0
- package/generated/monster-location-browse.validator.js +17 -0
- package/generated/product-manifest.d.ts +23 -0
- package/generated/product-manifest.validator.js +1 -1
- package/package.json +40 -2
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* Generated automatically from Rust-owned wire definitions. Do not edit. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* One of the seven public Items browse relationship kinds.
|
|
5
|
+
*/
|
|
6
|
+
export type ItemBrowseRelationshipKind =
|
|
7
|
+
| "monster-drop"
|
|
8
|
+
| "quest-reward"
|
|
9
|
+
| "needed-for-quest"
|
|
10
|
+
| "used-in-recipe"
|
|
11
|
+
| "made-by-recipe"
|
|
12
|
+
| "found-in-container"
|
|
13
|
+
| "cash-shop-listing";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A lazy index-table roster for one Items browse relationship kind.
|
|
17
|
+
*/
|
|
18
|
+
export interface ItemRelatedEntityBrowsePack {
|
|
19
|
+
contractVersion: "1.0";
|
|
20
|
+
format: "item-related-entity-browse/1";
|
|
21
|
+
records: {
|
|
22
|
+
[k: string]: number[] | undefined;
|
|
23
|
+
};
|
|
24
|
+
relationshipKind: ItemBrowseRelationshipKind;
|
|
25
|
+
scope: BuildScope;
|
|
26
|
+
targets: ItemRelatedEntityTarget[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build scope specifying the game family and concrete build identity.
|
|
30
|
+
*/
|
|
31
|
+
export interface BuildScope {
|
|
32
|
+
/**
|
|
33
|
+
* Exact build identity (e.g., 'gms-v83', 'cw-cot2').
|
|
34
|
+
*/
|
|
35
|
+
build_id: string;
|
|
36
|
+
/**
|
|
37
|
+
* Family identity (e.g., 'gms', 'classic-world').
|
|
38
|
+
*/
|
|
39
|
+
family_id: string;
|
|
40
|
+
[k: string]: unknown | undefined;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Identity and optional display name for one roster target.
|
|
44
|
+
*/
|
|
45
|
+
export interface ItemRelatedEntityTarget {
|
|
46
|
+
displayName?: string | null;
|
|
47
|
+
key: string;
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const validate = validate20;export default validate20;const schema31 = {"$schema":"https://json-schema.org/draft/2020-12/schema","title":"ItemRelatedEntityBrowsePack","description":"A lazy index-table roster for one Items browse relationship kind.","type":"object","properties":{"contractVersion":{"type":"string","const":"1.0"},"format":{"type":"string","const":"item-related-entity-browse/1"},"records":{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer","format":"uint32","minimum":0}}},"relationshipKind":{"$ref":"#/$defs/ItemBrowseRelationshipKind"},"scope":{"$ref":"#/$defs/BuildScope"},"targets":{"type":"array","items":{"$ref":"#/$defs/ItemRelatedEntityTarget"}}},"additionalProperties":false,"required":["format","contractVersion","scope","relationshipKind","targets","records"],"$defs":{"BuildScope":{"description":"Build scope specifying the game family and concrete build identity.","type":"object","properties":{"build_id":{"description":"Exact build identity (e.g., 'gms-v83', 'cw-cot2').","type":"string"},"family_id":{"description":"Family identity (e.g., 'gms', 'classic-world').","type":"string"}},"required":["family_id","build_id"]},"ItemBrowseRelationshipKind":{"description":"One of the seven public Items browse relationship kinds.","type":"string","enum":["monster-drop","quest-reward","needed-for-quest","used-in-recipe","made-by-recipe","found-in-container","cash-shop-listing"]},"ItemRelatedEntityTarget":{"description":"Identity and optional display name for one roster target.","type":"object","properties":{"displayName":{"type":["string","null"]},"key":{"type":"string"}},"additionalProperties":false,"required":["key"]}}};const schema32 = {"description":"One of the seven public Items browse relationship kinds.","type":"string","enum":["monster-drop","quest-reward","needed-for-quest","used-in-recipe","made-by-recipe","found-in-container","cash-shop-listing"]};const schema33 = {"description":"Build scope specifying the game family and concrete build identity.","type":"object","properties":{"build_id":{"description":"Exact build identity (e.g., 'gms-v83', 'cw-cot2').","type":"string"},"family_id":{"description":"Family identity (e.g., 'gms', 'classic-world').","type":"string"}},"required":["family_id","build_id"]};const schema34 = {"description":"Identity and optional display name for one roster target.","type":"object","properties":{"displayName":{"type":["string","null"]},"key":{"type":"string"}},"additionalProperties":false,"required":["key"]};function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate20.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.format === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "format"},message:"must have required property '"+"format"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.contractVersion === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "contractVersion"},message:"must have required property '"+"contractVersion"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.scope === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "scope"},message:"must have required property '"+"scope"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.relationshipKind === undefined){const err3 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "relationshipKind"},message:"must have required property '"+"relationshipKind"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.targets === undefined){const err4 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "targets"},message:"must have required property '"+"targets"+"'"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(data.records === undefined){const err5 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "records"},message:"must have required property '"+"records"+"'"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}for(const key0 in data){if(!((((((key0 === "contractVersion") || (key0 === "format")) || (key0 === "records")) || (key0 === "relationshipKind")) || (key0 === "scope")) || (key0 === "targets"))){const err6 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.contractVersion !== undefined){let data0 = data.contractVersion;if(typeof data0 !== "string"){const err7 = {instancePath:instancePath+"/contractVersion",schemaPath:"#/properties/contractVersion/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if("1.0" !== data0){const err8 = {instancePath:instancePath+"/contractVersion",schemaPath:"#/properties/contractVersion/const",keyword:"const",params:{allowedValue: "1.0"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.format !== undefined){let data1 = data.format;if(typeof data1 !== "string"){const err9 = {instancePath:instancePath+"/format",schemaPath:"#/properties/format/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if("item-related-entity-browse/1" !== data1){const err10 = {instancePath:instancePath+"/format",schemaPath:"#/properties/format/const",keyword:"const",params:{allowedValue: "item-related-entity-browse/1"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.records !== undefined){let data2 = data.records;if(data2 && typeof data2 == "object" && !Array.isArray(data2)){for(const key1 in data2){let data3 = data2[key1];if(Array.isArray(data3)){const len0 = data3.length;for(let i0=0; i0<len0; i0++){let data4 = data3[i0];if(!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))){const err11 = {instancePath:instancePath+"/records/" + key1.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/properties/records/additionalProperties/items/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if((typeof data4 == "number") && (isFinite(data4))){if(data4 < 0 || isNaN(data4)){const err12 = {instancePath:instancePath+"/records/" + key1.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/properties/records/additionalProperties/items/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}}else {const err13 = {instancePath:instancePath+"/records/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/properties/records/additionalProperties/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}else {const err14 = {instancePath:instancePath+"/records",schemaPath:"#/properties/records/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.relationshipKind !== undefined){let data5 = data.relationshipKind;if(typeof data5 !== "string"){const err15 = {instancePath:instancePath+"/relationshipKind",schemaPath:"#/$defs/ItemBrowseRelationshipKind/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(!(((((((data5 === "monster-drop") || (data5 === "quest-reward")) || (data5 === "needed-for-quest")) || (data5 === "used-in-recipe")) || (data5 === "made-by-recipe")) || (data5 === "found-in-container")) || (data5 === "cash-shop-listing"))){const err16 = {instancePath:instancePath+"/relationshipKind",schemaPath:"#/$defs/ItemBrowseRelationshipKind/enum",keyword:"enum",params:{allowedValues: schema32.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.scope !== undefined){let data6 = data.scope;if(data6 && typeof data6 == "object" && !Array.isArray(data6)){if(data6.family_id === undefined){const err17 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/required",keyword:"required",params:{missingProperty: "family_id"},message:"must have required property '"+"family_id"+"'"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if(data6.build_id === undefined){const err18 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/required",keyword:"required",params:{missingProperty: "build_id"},message:"must have required property '"+"build_id"+"'"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}if(data6.build_id !== undefined){if(typeof data6.build_id !== "string"){const err19 = {instancePath:instancePath+"/scope/build_id",schemaPath:"#/$defs/BuildScope/properties/build_id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}if(data6.family_id !== undefined){if(typeof data6.family_id !== "string"){const err20 = {instancePath:instancePath+"/scope/family_id",schemaPath:"#/$defs/BuildScope/properties/family_id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}}else {const err21 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.targets !== undefined){let data9 = data.targets;if(Array.isArray(data9)){const len1 = data9.length;for(let i1=0; i1<len1; i1++){let data10 = data9[i1];if(data10 && typeof data10 == "object" && !Array.isArray(data10)){if(data10.key === undefined){const err22 = {instancePath:instancePath+"/targets/" + i1,schemaPath:"#/$defs/ItemRelatedEntityTarget/required",keyword:"required",params:{missingProperty: "key"},message:"must have required property '"+"key"+"'"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}for(const key2 in data10){if(!((key2 === "displayName") || (key2 === "key"))){const err23 = {instancePath:instancePath+"/targets/" + i1,schemaPath:"#/$defs/ItemRelatedEntityTarget/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data10.displayName !== undefined){let data11 = data10.displayName;if((typeof data11 !== "string") && (data11 !== null)){const err24 = {instancePath:instancePath+"/targets/" + i1+"/displayName",schemaPath:"#/$defs/ItemRelatedEntityTarget/properties/displayName/type",keyword:"type",params:{type: schema34.properties.displayName.type},message:"must be string,null"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data10.key !== undefined){if(typeof data10.key !== "string"){const err25 = {instancePath:instancePath+"/targets/" + i1+"/key",schemaPath:"#/$defs/ItemRelatedEntityTarget/properties/key/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}}else {const err26 = {instancePath:instancePath+"/targets/" + i1,schemaPath:"#/$defs/ItemRelatedEntityTarget/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}}else {const err27 = {instancePath:instancePath+"/targets",schemaPath:"#/properties/targets/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}}else {const err28 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}validate20.errors = vErrors;return errors === 0;}validate20.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/* Generated automatically from Rust-owned wire definitions. Do not edit. */
|
|
2
|
+
|
|
3
|
+
export type MapCatalogV2_1 = {
|
|
4
|
+
records?: {
|
|
5
|
+
[k: string]: unknown | undefined;
|
|
6
|
+
}[];
|
|
7
|
+
[k: string]: unknown | undefined;
|
|
8
|
+
} & {
|
|
9
|
+
contractVersion: "2.1";
|
|
10
|
+
coverage: Coverage;
|
|
11
|
+
domain: "maps";
|
|
12
|
+
format: "mapletip.domain-catalog/1";
|
|
13
|
+
recordCount: number;
|
|
14
|
+
records: MapCatalogRecordV2_1[];
|
|
15
|
+
scope: BuildScope;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Universal completeness and coverage indicator (contracts.md § Shared semantic shapes).
|
|
19
|
+
*/
|
|
20
|
+
export type Coverage = "complete" | "partial" | "unknown" | "unsupported";
|
|
21
|
+
export type MapGeographyProvenance =
|
|
22
|
+
"reviewed-overlay" | "source-region-allowlist" | "source-map-mark" | "source-classification" | "none";
|
|
23
|
+
export type MapGeographyReviewStatus = "verified" | "supported";
|
|
24
|
+
/**
|
|
25
|
+
* State-tagged fact representation according to contracts.md § Shared semantic shapes.
|
|
26
|
+
*/
|
|
27
|
+
export type FactState =
|
|
28
|
+
| {
|
|
29
|
+
state: "known";
|
|
30
|
+
/**
|
|
31
|
+
* Observed value.
|
|
32
|
+
*/
|
|
33
|
+
value: string;
|
|
34
|
+
[k: string]: unknown | undefined;
|
|
35
|
+
}
|
|
36
|
+
| {
|
|
37
|
+
/**
|
|
38
|
+
* Reason for absence if known.
|
|
39
|
+
*/
|
|
40
|
+
reason?: string | null;
|
|
41
|
+
state: "unknown";
|
|
42
|
+
[k: string]: unknown | undefined;
|
|
43
|
+
}
|
|
44
|
+
| {
|
|
45
|
+
/**
|
|
46
|
+
* Name of the unsupported capability.
|
|
47
|
+
*/
|
|
48
|
+
capability: string;
|
|
49
|
+
state: "unsupported";
|
|
50
|
+
[k: string]: unknown | undefined;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export interface MapCatalogRecordV2_1 {
|
|
54
|
+
facts: {
|
|
55
|
+
[k: string]: unknown | undefined;
|
|
56
|
+
};
|
|
57
|
+
geography: MapGeographyFact;
|
|
58
|
+
key: string;
|
|
59
|
+
name: FactState;
|
|
60
|
+
sourceIdentity: SourceIdentity;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Compact per-Map geography fact. Labels live once in the build vocabulary.
|
|
64
|
+
*/
|
|
65
|
+
export interface MapGeographyFact {
|
|
66
|
+
areaKey?: string | null;
|
|
67
|
+
collectionKey?: string | null;
|
|
68
|
+
provenance: MapGeographyProvenance;
|
|
69
|
+
regionKey?: string | null;
|
|
70
|
+
status?: MapGeographyReviewStatus | null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Upstream source identity coordinates.
|
|
74
|
+
*/
|
|
75
|
+
export interface SourceIdentity {
|
|
76
|
+
/**
|
|
77
|
+
* Explicit source discriminator when one ID has multiple records (empty or omitted when unused).
|
|
78
|
+
*/
|
|
79
|
+
discriminator?: string | null;
|
|
80
|
+
/**
|
|
81
|
+
* Exact upstream source identifier (e.g., '0100100').
|
|
82
|
+
*/
|
|
83
|
+
id: string;
|
|
84
|
+
/**
|
|
85
|
+
* Source namespace (e.g., 'wz.mob', 'wz.item', 'wz.map'). None when missing or ambiguous.
|
|
86
|
+
*/
|
|
87
|
+
namespace?: string | null;
|
|
88
|
+
[k: string]: unknown | undefined;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Build scope specifying the game family and concrete build identity.
|
|
92
|
+
*/
|
|
93
|
+
export interface BuildScope {
|
|
94
|
+
/**
|
|
95
|
+
* Exact build identity (e.g., 'gms-v83', 'cw-cot2').
|
|
96
|
+
*/
|
|
97
|
+
build_id: string;
|
|
98
|
+
/**
|
|
99
|
+
* Family identity (e.g., 'gms', 'classic-world').
|
|
100
|
+
*/
|
|
101
|
+
family_id: string;
|
|
102
|
+
[k: string]: unknown | undefined;
|
|
103
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Generated automatically from Rust-owned wire definitions. Do not edit. */
|
|
2
|
+
import type { MapCatalogV2_1 } from './map-catalog-2-1.d.ts';
|
|
3
|
+
|
|
4
|
+
export interface ValidationError {
|
|
5
|
+
keyword: string;
|
|
6
|
+
instancePath: string;
|
|
7
|
+
schemaPath: string;
|
|
8
|
+
params: Record<string, unknown>;
|
|
9
|
+
message?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ValidateFunction<T> {
|
|
13
|
+
(data: unknown): data is T;
|
|
14
|
+
errors?: ValidationError[] | null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare const validate: ValidateFunction<MapCatalogV2_1>;
|
|
18
|
+
export default validate;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const validate = validate20;export default validate20;const schema31 = {"$defs":{"BuildScope":{"description":"Build scope specifying the game family and concrete build identity.","properties":{"build_id":{"description":"Exact build identity (e.g., 'gms-v83', 'cw-cot2').","type":"string"},"family_id":{"description":"Family identity (e.g., 'gms', 'classic-world').","type":"string"}},"required":["family_id","build_id"],"type":"object"},"Coverage":{"description":"Universal completeness and coverage indicator (contracts.md § Shared semantic shapes).","oneOf":[{"const":"complete","description":"100% of upstream source records represented.","type":"string"},{"const":"partial","description":"Bounded or deliberate subset.","type":"string"},{"const":"unknown","description":"Upstream source completeness cannot be certified.","type":"string"},{"const":"unsupported","description":"Domain or capability not provided by upstream.","type":"string"}]},"FactState":{"description":"State-tagged fact representation according to contracts.md § Shared semantic shapes.","oneOf":[{"description":"Fact is positively known and observed.","properties":{"state":{"const":"known","type":"string"},"value":{"description":"Observed value.","type":"string"}},"required":["state","value"],"type":"object"},{"description":"Fact is unobserved or incomplete in upstream source.","properties":{"reason":{"description":"Reason for absence if known.","type":["string","null"]},"state":{"const":"unknown","type":"string"}},"required":["state"],"type":"object"},{"description":"Upstream source capability is unsupported.","properties":{"capability":{"description":"Name of the unsupported capability.","type":"string"},"state":{"const":"unsupported","type":"string"}},"required":["state","capability"],"type":"object"}]},"MapCatalogRecordV2_1":{"additionalProperties":false,"properties":{"facts":{"additionalProperties":true,"type":"object"},"geography":{"$ref":"#/$defs/MapGeographyFact"},"key":{"type":"string"},"name":{"$ref":"#/$defs/FactState"},"sourceIdentity":{"$ref":"#/$defs/SourceIdentity"}},"required":["key","sourceIdentity","name","facts","geography"],"type":"object"},"MapGeographyFact":{"additionalProperties":false,"description":"Compact per-Map geography fact. Labels live once in the build vocabulary.","properties":{"areaKey":{"type":["string","null"]},"collectionKey":{"type":["string","null"]},"provenance":{"$ref":"#/$defs/MapGeographyProvenance"},"regionKey":{"type":["string","null"]},"status":{"anyOf":[{"$ref":"#/$defs/MapGeographyReviewStatus"},{"type":"null"}]}},"required":["provenance"],"type":"object"},"MapGeographyProvenance":{"enum":["reviewed-overlay","source-region-allowlist","source-map-mark","source-classification","none"],"type":"string"},"MapGeographyReviewStatus":{"enum":["verified","supported"],"type":"string"},"SourceIdentity":{"description":"Upstream source identity coordinates.","properties":{"discriminator":{"description":"Explicit source discriminator when one ID has multiple records (empty or omitted when unused).","type":["string","null"]},"id":{"description":"Exact upstream source identifier (e.g., '0100100').","type":"string"},"namespace":{"description":"Source namespace (e.g., 'wz.mob', 'wz.item', 'wz.map'). None when missing or ambiguous.","type":["string","null"]}},"required":["id"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"properties":{"records":{"items":{"allOf":[{"if":{"properties":{"geography":{"required":["regionKey"]}}},"then":{"properties":{"geography":{"not":{"required":["collectionKey"]}}}}}]}}}}],"properties":{"contractVersion":{"const":"2.1","type":"string"},"coverage":{"$ref":"#/$defs/Coverage"},"domain":{"const":"maps","type":"string"},"format":{"const":"mapletip.domain-catalog/1","type":"string"},"recordCount":{"format":"uint","minimum":0,"type":"integer"},"records":{"items":{"$ref":"#/$defs/MapCatalogRecordV2_1"},"type":"array"},"scope":{"$ref":"#/$defs/BuildScope"}},"required":["format","contractVersion","scope","domain","coverage","recordCount","records"],"title":"MapCatalogV2_1","type":"object"};const schema32 = {"description":"Universal completeness and coverage indicator (contracts.md § Shared semantic shapes).","oneOf":[{"const":"complete","description":"100% of upstream source records represented.","type":"string"},{"const":"partial","description":"Bounded or deliberate subset.","type":"string"},{"const":"unknown","description":"Upstream source completeness cannot be certified.","type":"string"},{"const":"unsupported","description":"Domain or capability not provided by upstream.","type":"string"}]};const schema39 = {"description":"Build scope specifying the game family and concrete build identity.","properties":{"build_id":{"description":"Exact build identity (e.g., 'gms-v83', 'cw-cot2').","type":"string"},"family_id":{"description":"Family identity (e.g., 'gms', 'classic-world').","type":"string"}},"required":["family_id","build_id"],"type":"object"};const schema33 = {"additionalProperties":false,"properties":{"facts":{"additionalProperties":true,"type":"object"},"geography":{"$ref":"#/$defs/MapGeographyFact"},"key":{"type":"string"},"name":{"$ref":"#/$defs/FactState"},"sourceIdentity":{"$ref":"#/$defs/SourceIdentity"}},"required":["key","sourceIdentity","name","facts","geography"],"type":"object"};const schema37 = {"description":"State-tagged fact representation according to contracts.md § Shared semantic shapes.","oneOf":[{"description":"Fact is positively known and observed.","properties":{"state":{"const":"known","type":"string"},"value":{"description":"Observed value.","type":"string"}},"required":["state","value"],"type":"object"},{"description":"Fact is unobserved or incomplete in upstream source.","properties":{"reason":{"description":"Reason for absence if known.","type":["string","null"]},"state":{"const":"unknown","type":"string"}},"required":["state"],"type":"object"},{"description":"Upstream source capability is unsupported.","properties":{"capability":{"description":"Name of the unsupported capability.","type":"string"},"state":{"const":"unsupported","type":"string"}},"required":["state","capability"],"type":"object"}]};const schema38 = {"description":"Upstream source identity coordinates.","properties":{"discriminator":{"description":"Explicit source discriminator when one ID has multiple records (empty or omitted when unused).","type":["string","null"]},"id":{"description":"Exact upstream source identifier (e.g., '0100100').","type":"string"},"namespace":{"description":"Source namespace (e.g., 'wz.mob', 'wz.item', 'wz.map'). None when missing or ambiguous.","type":["string","null"]}},"required":["id"],"type":"object"};const schema34 = {"additionalProperties":false,"description":"Compact per-Map geography fact. Labels live once in the build vocabulary.","properties":{"areaKey":{"type":["string","null"]},"collectionKey":{"type":["string","null"]},"provenance":{"$ref":"#/$defs/MapGeographyProvenance"},"regionKey":{"type":["string","null"]},"status":{"anyOf":[{"$ref":"#/$defs/MapGeographyReviewStatus"},{"type":"null"}]}},"required":["provenance"],"type":"object"};const schema35 = {"enum":["reviewed-overlay","source-region-allowlist","source-map-mark","source-classification","none"],"type":"string"};const schema36 = {"enum":["verified","supported"],"type":"string"};function validate22(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate22.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.provenance === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "provenance"},message:"must have required property '"+"provenance"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}for(const key0 in data){if(!(((((key0 === "areaKey") || (key0 === "collectionKey")) || (key0 === "provenance")) || (key0 === "regionKey")) || (key0 === "status"))){const err1 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.areaKey !== undefined){let data0 = data.areaKey;if((typeof data0 !== "string") && (data0 !== null)){const err2 = {instancePath:instancePath+"/areaKey",schemaPath:"#/properties/areaKey/type",keyword:"type",params:{type: schema34.properties.areaKey.type},message:"must be string,null"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.collectionKey !== undefined){let data1 = data.collectionKey;if((typeof data1 !== "string") && (data1 !== null)){const err3 = {instancePath:instancePath+"/collectionKey",schemaPath:"#/properties/collectionKey/type",keyword:"type",params:{type: schema34.properties.collectionKey.type},message:"must be string,null"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.provenance !== undefined){let data2 = data.provenance;if(typeof data2 !== "string"){const err4 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/MapGeographyProvenance/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(!(((((data2 === "reviewed-overlay") || (data2 === "source-region-allowlist")) || (data2 === "source-map-mark")) || (data2 === "source-classification")) || (data2 === "none"))){const err5 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/MapGeographyProvenance/enum",keyword:"enum",params:{allowedValues: schema35.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.regionKey !== undefined){let data3 = data.regionKey;if((typeof data3 !== "string") && (data3 !== null)){const err6 = {instancePath:instancePath+"/regionKey",schemaPath:"#/properties/regionKey/type",keyword:"type",params:{type: schema34.properties.regionKey.type},message:"must be string,null"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.status !== undefined){let data4 = data.status;const _errs12 = errors;let valid2 = false;const _errs13 = errors;if(typeof data4 !== "string"){const err7 = {instancePath:instancePath+"/status",schemaPath:"#/$defs/MapGeographyReviewStatus/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(!((data4 === "verified") || (data4 === "supported"))){const err8 = {instancePath:instancePath+"/status",schemaPath:"#/$defs/MapGeographyReviewStatus/enum",keyword:"enum",params:{allowedValues: schema36.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}var _valid0 = _errs13 === errors;valid2 = valid2 || _valid0;const _errs16 = errors;if(data4 !== null){const err9 = {instancePath:instancePath+"/status",schemaPath:"#/properties/status/anyOf/1/type",keyword:"type",params:{type: "null"},message:"must be null"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var _valid0 = _errs16 === errors;valid2 = valid2 || _valid0;if(!valid2){const err10 = {instancePath:instancePath+"/status",schemaPath:"#/properties/status/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}else {errors = _errs12;if(vErrors !== null){if(_errs12){vErrors.length = _errs12;}else {vErrors = null;}}}}}else {const err11 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}validate22.errors = vErrors;return errors === 0;}validate22.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};function validate21(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate21.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.key === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "key"},message:"must have required property '"+"key"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.sourceIdentity === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "sourceIdentity"},message:"must have required property '"+"sourceIdentity"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.name === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "name"},message:"must have required property '"+"name"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.facts === undefined){const err3 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "facts"},message:"must have required property '"+"facts"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.geography === undefined){const err4 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "geography"},message:"must have required property '"+"geography"+"'"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}for(const key0 in data){if(!(((((key0 === "facts") || (key0 === "geography")) || (key0 === "key")) || (key0 === "name")) || (key0 === "sourceIdentity"))){const err5 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.facts !== undefined){let data0 = data.facts;if(data0 && typeof data0 == "object" && !Array.isArray(data0)){}else {const err6 = {instancePath:instancePath+"/facts",schemaPath:"#/properties/facts/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.geography !== undefined){if(!(validate22(data.geography, {instancePath:instancePath+"/geography",parentData:data,parentDataProperty:"geography",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate22.errors : vErrors.concat(validate22.errors);errors = vErrors.length;}}if(data.key !== undefined){if(typeof data.key !== "string"){const err7 = {instancePath:instancePath+"/key",schemaPath:"#/properties/key/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.name !== undefined){let data3 = data.name;const _errs10 = errors;let valid2 = false;let passing0 = null;const _errs11 = errors;if(data3 && typeof data3 == "object" && !Array.isArray(data3)){if(data3.state === undefined){const err8 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/0/required",keyword:"required",params:{missingProperty: "state"},message:"must have required property '"+"state"+"'"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(data3.value === undefined){const err9 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/0/required",keyword:"required",params:{missingProperty: "value"},message:"must have required property '"+"value"+"'"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data3.state !== undefined){let data4 = data3.state;if(typeof data4 !== "string"){const err10 = {instancePath:instancePath+"/name/state",schemaPath:"#/$defs/FactState/oneOf/0/properties/state/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if("known" !== data4){const err11 = {instancePath:instancePath+"/name/state",schemaPath:"#/$defs/FactState/oneOf/0/properties/state/const",keyword:"const",params:{allowedValue: "known"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data3.value !== undefined){if(typeof data3.value !== "string"){const err12 = {instancePath:instancePath+"/name/value",schemaPath:"#/$defs/FactState/oneOf/0/properties/value/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}else {const err13 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/0/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var _valid0 = _errs11 === errors;if(_valid0){valid2 = true;passing0 = 0;var props0 = {};props0.state = true;props0.value = true;}const _errs17 = errors;if(data3 && typeof data3 == "object" && !Array.isArray(data3)){if(data3.state === undefined){const err14 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/1/required",keyword:"required",params:{missingProperty: "state"},message:"must have required property '"+"state"+"'"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}if(data3.reason !== undefined){let data6 = data3.reason;if((typeof data6 !== "string") && (data6 !== null)){const err15 = {instancePath:instancePath+"/name/reason",schemaPath:"#/$defs/FactState/oneOf/1/properties/reason/type",keyword:"type",params:{type: schema37.oneOf[1].properties.reason.type},message:"must be string,null"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data3.state !== undefined){let data7 = data3.state;if(typeof data7 !== "string"){const err16 = {instancePath:instancePath+"/name/state",schemaPath:"#/$defs/FactState/oneOf/1/properties/state/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if("unknown" !== data7){const err17 = {instancePath:instancePath+"/name/state",schemaPath:"#/$defs/FactState/oneOf/1/properties/state/const",keyword:"const",params:{allowedValue: "unknown"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}}else {const err18 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}var _valid0 = _errs17 === errors;if(_valid0 && valid2){valid2 = false;passing0 = [passing0, 1];}else {if(_valid0){valid2 = true;passing0 = 1;if(props0 !== true){props0 = props0 || {};props0.reason = true;props0.state = true;}}const _errs23 = errors;if(data3 && typeof data3 == "object" && !Array.isArray(data3)){if(data3.state === undefined){const err19 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/2/required",keyword:"required",params:{missingProperty: "state"},message:"must have required property '"+"state"+"'"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(data3.capability === undefined){const err20 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/2/required",keyword:"required",params:{missingProperty: "capability"},message:"must have required property '"+"capability"+"'"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(data3.capability !== undefined){if(typeof data3.capability !== "string"){const err21 = {instancePath:instancePath+"/name/capability",schemaPath:"#/$defs/FactState/oneOf/2/properties/capability/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data3.state !== undefined){let data9 = data3.state;if(typeof data9 !== "string"){const err22 = {instancePath:instancePath+"/name/state",schemaPath:"#/$defs/FactState/oneOf/2/properties/state/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}if("unsupported" !== data9){const err23 = {instancePath:instancePath+"/name/state",schemaPath:"#/$defs/FactState/oneOf/2/properties/state/const",keyword:"const",params:{allowedValue: "unsupported"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}}else {const err24 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf/2/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}var _valid0 = _errs23 === errors;if(_valid0 && valid2){valid2 = false;passing0 = [passing0, 2];}else {if(_valid0){valid2 = true;passing0 = 2;if(props0 !== true){props0 = props0 || {};props0.capability = true;props0.state = true;}}}}if(!valid2){const err25 = {instancePath:instancePath+"/name",schemaPath:"#/$defs/FactState/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}else {errors = _errs10;if(vErrors !== null){if(_errs10){vErrors.length = _errs10;}else {vErrors = null;}}}}if(data.sourceIdentity !== undefined){let data10 = data.sourceIdentity;if(data10 && typeof data10 == "object" && !Array.isArray(data10)){if(data10.id === undefined){const err26 = {instancePath:instancePath+"/sourceIdentity",schemaPath:"#/$defs/SourceIdentity/required",keyword:"required",params:{missingProperty: "id"},message:"must have required property '"+"id"+"'"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}if(data10.discriminator !== undefined){let data11 = data10.discriminator;if((typeof data11 !== "string") && (data11 !== null)){const err27 = {instancePath:instancePath+"/sourceIdentity/discriminator",schemaPath:"#/$defs/SourceIdentity/properties/discriminator/type",keyword:"type",params:{type: schema38.properties.discriminator.type},message:"must be string,null"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}if(data10.id !== undefined){if(typeof data10.id !== "string"){const err28 = {instancePath:instancePath+"/sourceIdentity/id",schemaPath:"#/$defs/SourceIdentity/properties/id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}if(data10.namespace !== undefined){let data13 = data10.namespace;if((typeof data13 !== "string") && (data13 !== null)){const err29 = {instancePath:instancePath+"/sourceIdentity/namespace",schemaPath:"#/$defs/SourceIdentity/properties/namespace/type",keyword:"type",params:{type: schema38.properties.namespace.type},message:"must be string,null"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}}else {const err30 = {instancePath:instancePath+"/sourceIdentity",schemaPath:"#/$defs/SourceIdentity/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}else {const err31 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}validate21.errors = vErrors;return errors === 0;}validate21.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate20.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.records !== undefined){let data0 = data.records;if(Array.isArray(data0)){const len0 = data0.length;for(let i0=0; i0<len0; i0++){let data1 = data0[i0];const _errs5 = errors;let valid5 = true;const _errs6 = errors;if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.geography !== undefined){let data2 = data1.geography;if(data2 && typeof data2 == "object" && !Array.isArray(data2)){let missing0;if((data2.regionKey === undefined) && (missing0 = "regionKey")){const err0 = {};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}}}var _valid0 = _errs6 === errors;errors = _errs5;if(vErrors !== null){if(_errs5){vErrors.length = _errs5;}else {vErrors = null;}}if(_valid0){const _errs8 = errors;if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.geography !== undefined){let data3 = data1.geography;const _errs10 = errors;const _errs11 = errors;if(data3 && typeof data3 == "object" && !Array.isArray(data3)){let missing1;if((data3.collectionKey === undefined) && (missing1 = "collectionKey")){const err1 = {};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}var valid8 = _errs11 === errors;if(valid8){const err2 = {instancePath:instancePath+"/records/" + i0+"/geography",schemaPath:"#/allOf/0/properties/records/items/allOf/0/then/properties/geography/not",keyword:"not",params:{},message:"must NOT be valid"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}else {errors = _errs10;if(vErrors !== null){if(_errs10){vErrors.length = _errs10;}else {vErrors = null;}}}}}var _valid0 = _errs8 === errors;valid5 = _valid0;if(valid5){var props0 = {};props0.geography = true;}}if(!valid5){const err3 = {instancePath:instancePath+"/records/" + i0,schemaPath:"#/allOf/0/properties/records/items/allOf/0/if",keyword:"if",params:{failingKeyword: "then"},message:"must match \"then\" schema"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}}}}if(data && typeof data == "object" && !Array.isArray(data)){if(data.format === undefined){const err4 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "format"},message:"must have required property '"+"format"+"'"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(data.contractVersion === undefined){const err5 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "contractVersion"},message:"must have required property '"+"contractVersion"+"'"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(data.scope === undefined){const err6 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "scope"},message:"must have required property '"+"scope"+"'"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(data.domain === undefined){const err7 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "domain"},message:"must have required property '"+"domain"+"'"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(data.coverage === undefined){const err8 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "coverage"},message:"must have required property '"+"coverage"+"'"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(data.recordCount === undefined){const err9 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "recordCount"},message:"must have required property '"+"recordCount"+"'"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data.records === undefined){const err10 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "records"},message:"must have required property '"+"records"+"'"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}for(const key0 in data){if(!(((((((key0 === "contractVersion") || (key0 === "coverage")) || (key0 === "domain")) || (key0 === "format")) || (key0 === "recordCount")) || (key0 === "records")) || (key0 === "scope"))){const err11 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.contractVersion !== undefined){let data4 = data.contractVersion;if(typeof data4 !== "string"){const err12 = {instancePath:instancePath+"/contractVersion",schemaPath:"#/properties/contractVersion/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if("2.1" !== data4){const err13 = {instancePath:instancePath+"/contractVersion",schemaPath:"#/properties/contractVersion/const",keyword:"const",params:{allowedValue: "2.1"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.coverage !== undefined){let data5 = data.coverage;const _errs17 = errors;let valid11 = false;let passing0 = null;const _errs18 = errors;if(typeof data5 !== "string"){const err14 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}if("complete" !== data5){const err15 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/0/const",keyword:"const",params:{allowedValue: "complete"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}var _valid1 = _errs18 === errors;if(_valid1){valid11 = true;passing0 = 0;}const _errs20 = errors;if(typeof data5 !== "string"){const err16 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/1/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if("partial" !== data5){const err17 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/1/const",keyword:"const",params:{allowedValue: "partial"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var _valid1 = _errs20 === errors;if(_valid1 && valid11){valid11 = false;passing0 = [passing0, 1];}else {if(_valid1){valid11 = true;passing0 = 1;}const _errs22 = errors;if(typeof data5 !== "string"){const err18 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/2/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}if("unknown" !== data5){const err19 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/2/const",keyword:"const",params:{allowedValue: "unknown"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var _valid1 = _errs22 === errors;if(_valid1 && valid11){valid11 = false;passing0 = [passing0, 2];}else {if(_valid1){valid11 = true;passing0 = 2;}const _errs24 = errors;if(typeof data5 !== "string"){const err20 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/3/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if("unsupported" !== data5){const err21 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf/3/const",keyword:"const",params:{allowedValue: "unsupported"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}var _valid1 = _errs24 === errors;if(_valid1 && valid11){valid11 = false;passing0 = [passing0, 3];}else {if(_valid1){valid11 = true;passing0 = 3;}}}}if(!valid11){const err22 = {instancePath:instancePath+"/coverage",schemaPath:"#/$defs/Coverage/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}else {errors = _errs17;if(vErrors !== null){if(_errs17){vErrors.length = _errs17;}else {vErrors = null;}}}}if(data.domain !== undefined){let data6 = data.domain;if(typeof data6 !== "string"){const err23 = {instancePath:instancePath+"/domain",schemaPath:"#/properties/domain/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}if("maps" !== data6){const err24 = {instancePath:instancePath+"/domain",schemaPath:"#/properties/domain/const",keyword:"const",params:{allowedValue: "maps"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.format !== undefined){let data7 = data.format;if(typeof data7 !== "string"){const err25 = {instancePath:instancePath+"/format",schemaPath:"#/properties/format/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}if("mapletip.domain-catalog/1" !== data7){const err26 = {instancePath:instancePath+"/format",schemaPath:"#/properties/format/const",keyword:"const",params:{allowedValue: "mapletip.domain-catalog/1"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data.recordCount !== undefined){let data8 = data.recordCount;if(!(((typeof data8 == "number") && (!(data8 % 1) && !isNaN(data8))) && (isFinite(data8)))){const err27 = {instancePath:instancePath+"/recordCount",schemaPath:"#/properties/recordCount/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if((typeof data8 == "number") && (isFinite(data8))){if(data8 < 0 || isNaN(data8)){const err28 = {instancePath:instancePath+"/recordCount",schemaPath:"#/properties/recordCount/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}}if(data.records !== undefined){let data9 = data.records;if(Array.isArray(data9)){const len1 = data9.length;for(let i1=0; i1<len1; i1++){if(!(validate21(data9[i1], {instancePath:instancePath+"/records/" + i1,parentData:data9,parentDataProperty:i1,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);errors = vErrors.length;}}}else {const err29 = {instancePath:instancePath+"/records",schemaPath:"#/properties/records/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}if(data.scope !== undefined){let data11 = data.scope;if(data11 && typeof data11 == "object" && !Array.isArray(data11)){if(data11.family_id === undefined){const err30 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/required",keyword:"required",params:{missingProperty: "family_id"},message:"must have required property '"+"family_id"+"'"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if(data11.build_id === undefined){const err31 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/required",keyword:"required",params:{missingProperty: "build_id"},message:"must have required property '"+"build_id"+"'"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}if(data11.build_id !== undefined){if(typeof data11.build_id !== "string"){const err32 = {instancePath:instancePath+"/scope/build_id",schemaPath:"#/$defs/BuildScope/properties/build_id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data11.family_id !== undefined){if(typeof data11.family_id !== "string"){const err33 = {instancePath:instancePath+"/scope/family_id",schemaPath:"#/$defs/BuildScope/properties/family_id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}else {const err34 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}}else {const err35 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}validate20.errors = vErrors;return errors === 0;}validate20.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* Generated automatically from Rust-owned wire definitions. Do not edit. */
|
|
2
|
+
|
|
3
|
+
export type MapGeographyReviewStatus = "verified" | "supported";
|
|
4
|
+
|
|
5
|
+
export interface MapGeographyModel {
|
|
6
|
+
collections: MapGeographyCollection[];
|
|
7
|
+
contractVersion: "1.0";
|
|
8
|
+
format: "mapletip.map-geography";
|
|
9
|
+
placements: MapGeographyReviewedPlacement[];
|
|
10
|
+
regions: MapGeographyRegion[];
|
|
11
|
+
scope: BuildScope;
|
|
12
|
+
}
|
|
13
|
+
export interface MapGeographyCollection {
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
mapCount: number;
|
|
17
|
+
}
|
|
18
|
+
export interface MapGeographyReviewedPlacement {
|
|
19
|
+
activity?: string | null;
|
|
20
|
+
citations?: MapGeographyCitation[];
|
|
21
|
+
classification: string;
|
|
22
|
+
entryArea?: string | null;
|
|
23
|
+
entryPoints?: MapGeographyEntryPoint[];
|
|
24
|
+
localWitnesses?: MapGeographyWitnessCount[];
|
|
25
|
+
mapKey: string;
|
|
26
|
+
rationale: string;
|
|
27
|
+
reviewId: string;
|
|
28
|
+
reviewedStreetName: string;
|
|
29
|
+
sourceMapId: string;
|
|
30
|
+
status: MapGeographyReviewStatus;
|
|
31
|
+
unknowns?: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface MapGeographyCitation {
|
|
34
|
+
id: string;
|
|
35
|
+
proves: string;
|
|
36
|
+
url: string;
|
|
37
|
+
}
|
|
38
|
+
export interface MapGeographyEntryPoint {
|
|
39
|
+
kind: string;
|
|
40
|
+
mapId?: string | null;
|
|
41
|
+
mapName?: string | null;
|
|
42
|
+
note?: string | null;
|
|
43
|
+
npcId?: string | null;
|
|
44
|
+
npcName?: string | null;
|
|
45
|
+
place?: string | null;
|
|
46
|
+
portalId?: string | null;
|
|
47
|
+
portalIds?: string[];
|
|
48
|
+
role?: string | null;
|
|
49
|
+
scripts?: string | null;
|
|
50
|
+
}
|
|
51
|
+
export interface MapGeographyWitnessCount {
|
|
52
|
+
count: number;
|
|
53
|
+
kind: string;
|
|
54
|
+
}
|
|
55
|
+
export interface MapGeographyRegion {
|
|
56
|
+
areas: MapGeographyArea[];
|
|
57
|
+
key: string;
|
|
58
|
+
label: string;
|
|
59
|
+
mapCount: number;
|
|
60
|
+
}
|
|
61
|
+
export interface MapGeographyArea {
|
|
62
|
+
key: string;
|
|
63
|
+
label: string;
|
|
64
|
+
mapCount: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Build scope specifying the game family and concrete build identity.
|
|
68
|
+
*/
|
|
69
|
+
export interface BuildScope {
|
|
70
|
+
/**
|
|
71
|
+
* Exact build identity (e.g., 'gms-v83', 'cw-cot2').
|
|
72
|
+
*/
|
|
73
|
+
build_id: string;
|
|
74
|
+
/**
|
|
75
|
+
* Family identity (e.g., 'gms', 'classic-world').
|
|
76
|
+
*/
|
|
77
|
+
family_id: string;
|
|
78
|
+
[k: string]: unknown | undefined;
|
|
79
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Generated automatically from Rust-owned wire definitions. Do not edit. */
|
|
2
|
+
import type { MapGeographyModel } from './map-geography.d.ts';
|
|
3
|
+
|
|
4
|
+
export interface ValidationError {
|
|
5
|
+
keyword: string;
|
|
6
|
+
instancePath: string;
|
|
7
|
+
schemaPath: string;
|
|
8
|
+
params: Record<string, unknown>;
|
|
9
|
+
message?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ValidateFunction<T> {
|
|
13
|
+
(data: unknown): data is T;
|
|
14
|
+
errors?: ValidationError[] | null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare const validate: ValidateFunction<MapGeographyModel>;
|
|
18
|
+
export default validate;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const validate = validate20;export default validate20;const schema31 = {"$defs":{"BuildScope":{"description":"Build scope specifying the game family and concrete build identity.","properties":{"build_id":{"description":"Exact build identity (e.g., 'gms-v83', 'cw-cot2').","type":"string"},"family_id":{"description":"Family identity (e.g., 'gms', 'classic-world').","type":"string"}},"required":["family_id","build_id"],"type":"object"},"MapGeographyArea":{"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"mapCount":{"format":"uint","minimum":0,"type":"integer"}},"required":["key","label","mapCount"],"type":"object"},"MapGeographyCitation":{"additionalProperties":false,"properties":{"id":{"type":"string"},"proves":{"type":"string"},"url":{"type":"string"}},"required":["id","url","proves"],"type":"object"},"MapGeographyCollection":{"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"mapCount":{"format":"uint","minimum":0,"type":"integer"}},"required":["key","label","mapCount"],"type":"object"},"MapGeographyEntryPoint":{"additionalProperties":false,"properties":{"kind":{"type":"string"},"mapId":{"type":["string","null"]},"mapName":{"type":["string","null"]},"note":{"type":["string","null"]},"npcId":{"type":["string","null"]},"npcName":{"type":["string","null"]},"place":{"type":["string","null"]},"portalId":{"type":["string","null"]},"portalIds":{"items":{"type":"string"},"type":"array"},"role":{"type":["string","null"]},"scripts":{"type":["string","null"]}},"required":["kind"],"type":"object"},"MapGeographyRegion":{"additionalProperties":false,"properties":{"areas":{"items":{"$ref":"#/$defs/MapGeographyArea"},"type":"array"},"key":{"type":"string"},"label":{"type":"string"},"mapCount":{"format":"uint","minimum":0,"type":"integer"}},"required":["key","label","mapCount","areas"],"type":"object"},"MapGeographyReviewStatus":{"enum":["verified","supported"],"type":"string"},"MapGeographyReviewedPlacement":{"additionalProperties":false,"properties":{"activity":{"type":["string","null"]},"citations":{"items":{"$ref":"#/$defs/MapGeographyCitation"},"type":"array"},"classification":{"type":"string"},"entryArea":{"type":["string","null"]},"entryPoints":{"items":{"$ref":"#/$defs/MapGeographyEntryPoint"},"type":"array"},"localWitnesses":{"items":{"$ref":"#/$defs/MapGeographyWitnessCount"},"type":"array"},"mapKey":{"type":"string"},"rationale":{"type":"string"},"reviewId":{"type":"string"},"reviewedStreetName":{"type":"string"},"sourceMapId":{"type":"string"},"status":{"$ref":"#/$defs/MapGeographyReviewStatus"},"unknowns":{"items":{"type":"string"},"type":"array"}},"required":["mapKey","sourceMapId","reviewedStreetName","status","reviewId","rationale","classification"],"type":"object"},"MapGeographyWitnessCount":{"additionalProperties":false,"properties":{"count":{"format":"uint","minimum":0,"type":"integer"},"kind":{"type":"string"}},"required":["kind","count"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"collections":{"items":{"$ref":"#/$defs/MapGeographyCollection"},"type":"array"},"contractVersion":{"const":"1.0","type":"string"},"format":{"const":"mapletip.map-geography","type":"string"},"placements":{"items":{"$ref":"#/$defs/MapGeographyReviewedPlacement"},"type":"array"},"regions":{"items":{"$ref":"#/$defs/MapGeographyRegion"},"type":"array"},"scope":{"$ref":"#/$defs/BuildScope"}},"required":["format","contractVersion","scope","regions","collections","placements"],"title":"MapGeographyModel","type":"object"};const schema32 = {"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"mapCount":{"format":"uint","minimum":0,"type":"integer"}},"required":["key","label","mapCount"],"type":"object"};const schema40 = {"description":"Build scope specifying the game family and concrete build identity.","properties":{"build_id":{"description":"Exact build identity (e.g., 'gms-v83', 'cw-cot2').","type":"string"},"family_id":{"description":"Family identity (e.g., 'gms', 'classic-world').","type":"string"}},"required":["family_id","build_id"],"type":"object"};const schema33 = {"additionalProperties":false,"properties":{"activity":{"type":["string","null"]},"citations":{"items":{"$ref":"#/$defs/MapGeographyCitation"},"type":"array"},"classification":{"type":"string"},"entryArea":{"type":["string","null"]},"entryPoints":{"items":{"$ref":"#/$defs/MapGeographyEntryPoint"},"type":"array"},"localWitnesses":{"items":{"$ref":"#/$defs/MapGeographyWitnessCount"},"type":"array"},"mapKey":{"type":"string"},"rationale":{"type":"string"},"reviewId":{"type":"string"},"reviewedStreetName":{"type":"string"},"sourceMapId":{"type":"string"},"status":{"$ref":"#/$defs/MapGeographyReviewStatus"},"unknowns":{"items":{"type":"string"},"type":"array"}},"required":["mapKey","sourceMapId","reviewedStreetName","status","reviewId","rationale","classification"],"type":"object"};const schema34 = {"additionalProperties":false,"properties":{"id":{"type":"string"},"proves":{"type":"string"},"url":{"type":"string"}},"required":["id","url","proves"],"type":"object"};const schema35 = {"additionalProperties":false,"properties":{"kind":{"type":"string"},"mapId":{"type":["string","null"]},"mapName":{"type":["string","null"]},"note":{"type":["string","null"]},"npcId":{"type":["string","null"]},"npcName":{"type":["string","null"]},"place":{"type":["string","null"]},"portalId":{"type":["string","null"]},"portalIds":{"items":{"type":"string"},"type":"array"},"role":{"type":["string","null"]},"scripts":{"type":["string","null"]}},"required":["kind"],"type":"object"};const schema36 = {"additionalProperties":false,"properties":{"count":{"format":"uint","minimum":0,"type":"integer"},"kind":{"type":"string"}},"required":["kind","count"],"type":"object"};const schema37 = {"enum":["verified","supported"],"type":"string"};const func1 = Object.prototype.hasOwnProperty;function validate21(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate21.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.mapKey === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "mapKey"},message:"must have required property '"+"mapKey"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.sourceMapId === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "sourceMapId"},message:"must have required property '"+"sourceMapId"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.reviewedStreetName === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "reviewedStreetName"},message:"must have required property '"+"reviewedStreetName"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.status === undefined){const err3 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "status"},message:"must have required property '"+"status"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.reviewId === undefined){const err4 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "reviewId"},message:"must have required property '"+"reviewId"+"'"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(data.rationale === undefined){const err5 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "rationale"},message:"must have required property '"+"rationale"+"'"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(data.classification === undefined){const err6 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "classification"},message:"must have required property '"+"classification"+"'"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}for(const key0 in data){if(!(func1.call(schema33.properties, key0))){const err7 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.activity !== undefined){let data0 = data.activity;if((typeof data0 !== "string") && (data0 !== null)){const err8 = {instancePath:instancePath+"/activity",schemaPath:"#/properties/activity/type",keyword:"type",params:{type: schema33.properties.activity.type},message:"must be string,null"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.citations !== undefined){let data1 = data.citations;if(Array.isArray(data1)){const len0 = data1.length;for(let i0=0; i0<len0; i0++){let data2 = data1[i0];if(data2 && typeof data2 == "object" && !Array.isArray(data2)){if(data2.id === undefined){const err9 = {instancePath:instancePath+"/citations/" + i0,schemaPath:"#/$defs/MapGeographyCitation/required",keyword:"required",params:{missingProperty: "id"},message:"must have required property '"+"id"+"'"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data2.url === undefined){const err10 = {instancePath:instancePath+"/citations/" + i0,schemaPath:"#/$defs/MapGeographyCitation/required",keyword:"required",params:{missingProperty: "url"},message:"must have required property '"+"url"+"'"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(data2.proves === undefined){const err11 = {instancePath:instancePath+"/citations/" + i0,schemaPath:"#/$defs/MapGeographyCitation/required",keyword:"required",params:{missingProperty: "proves"},message:"must have required property '"+"proves"+"'"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}for(const key1 in data2){if(!(((key1 === "id") || (key1 === "proves")) || (key1 === "url"))){const err12 = {instancePath:instancePath+"/citations/" + i0,schemaPath:"#/$defs/MapGeographyCitation/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data2.id !== undefined){if(typeof data2.id !== "string"){const err13 = {instancePath:instancePath+"/citations/" + i0+"/id",schemaPath:"#/$defs/MapGeographyCitation/properties/id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data2.proves !== undefined){if(typeof data2.proves !== "string"){const err14 = {instancePath:instancePath+"/citations/" + i0+"/proves",schemaPath:"#/$defs/MapGeographyCitation/properties/proves/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data2.url !== undefined){if(typeof data2.url !== "string"){const err15 = {instancePath:instancePath+"/citations/" + i0+"/url",schemaPath:"#/$defs/MapGeographyCitation/properties/url/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}}else {const err16 = {instancePath:instancePath+"/citations/" + i0,schemaPath:"#/$defs/MapGeographyCitation/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}}else {const err17 = {instancePath:instancePath+"/citations",schemaPath:"#/properties/citations/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data.classification !== undefined){if(typeof data.classification !== "string"){const err18 = {instancePath:instancePath+"/classification",schemaPath:"#/properties/classification/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.entryArea !== undefined){let data7 = data.entryArea;if((typeof data7 !== "string") && (data7 !== null)){const err19 = {instancePath:instancePath+"/entryArea",schemaPath:"#/properties/entryArea/type",keyword:"type",params:{type: schema33.properties.entryArea.type},message:"must be string,null"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}if(data.entryPoints !== undefined){let data8 = data.entryPoints;if(Array.isArray(data8)){const len1 = data8.length;for(let i1=0; i1<len1; i1++){let data9 = data8[i1];if(data9 && typeof data9 == "object" && !Array.isArray(data9)){if(data9.kind === undefined){const err20 = {instancePath:instancePath+"/entryPoints/" + i1,schemaPath:"#/$defs/MapGeographyEntryPoint/required",keyword:"required",params:{missingProperty: "kind"},message:"must have required property '"+"kind"+"'"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}for(const key2 in data9){if(!(func1.call(schema35.properties, key2))){const err21 = {instancePath:instancePath+"/entryPoints/" + i1,schemaPath:"#/$defs/MapGeographyEntryPoint/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data9.kind !== undefined){if(typeof data9.kind !== "string"){const err22 = {instancePath:instancePath+"/entryPoints/" + i1+"/kind",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/kind/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data9.mapId !== undefined){let data11 = data9.mapId;if((typeof data11 !== "string") && (data11 !== null)){const err23 = {instancePath:instancePath+"/entryPoints/" + i1+"/mapId",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/mapId/type",keyword:"type",params:{type: schema35.properties.mapId.type},message:"must be string,null"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data9.mapName !== undefined){let data12 = data9.mapName;if((typeof data12 !== "string") && (data12 !== null)){const err24 = {instancePath:instancePath+"/entryPoints/" + i1+"/mapName",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/mapName/type",keyword:"type",params:{type: schema35.properties.mapName.type},message:"must be string,null"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data9.note !== undefined){let data13 = data9.note;if((typeof data13 !== "string") && (data13 !== null)){const err25 = {instancePath:instancePath+"/entryPoints/" + i1+"/note",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/note/type",keyword:"type",params:{type: schema35.properties.note.type},message:"must be string,null"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data9.npcId !== undefined){let data14 = data9.npcId;if((typeof data14 !== "string") && (data14 !== null)){const err26 = {instancePath:instancePath+"/entryPoints/" + i1+"/npcId",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/npcId/type",keyword:"type",params:{type: schema35.properties.npcId.type},message:"must be string,null"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data9.npcName !== undefined){let data15 = data9.npcName;if((typeof data15 !== "string") && (data15 !== null)){const err27 = {instancePath:instancePath+"/entryPoints/" + i1+"/npcName",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/npcName/type",keyword:"type",params:{type: schema35.properties.npcName.type},message:"must be string,null"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}if(data9.place !== undefined){let data16 = data9.place;if((typeof data16 !== "string") && (data16 !== null)){const err28 = {instancePath:instancePath+"/entryPoints/" + i1+"/place",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/place/type",keyword:"type",params:{type: schema35.properties.place.type},message:"must be string,null"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}if(data9.portalId !== undefined){let data17 = data9.portalId;if((typeof data17 !== "string") && (data17 !== null)){const err29 = {instancePath:instancePath+"/entryPoints/" + i1+"/portalId",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/portalId/type",keyword:"type",params:{type: schema35.properties.portalId.type},message:"must be string,null"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}if(data9.portalIds !== undefined){let data18 = data9.portalIds;if(Array.isArray(data18)){const len2 = data18.length;for(let i2=0; i2<len2; i2++){if(typeof data18[i2] !== "string"){const err30 = {instancePath:instancePath+"/entryPoints/" + i1+"/portalIds/" + i2,schemaPath:"#/$defs/MapGeographyEntryPoint/properties/portalIds/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}else {const err31 = {instancePath:instancePath+"/entryPoints/" + i1+"/portalIds",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/portalIds/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data9.role !== undefined){let data20 = data9.role;if((typeof data20 !== "string") && (data20 !== null)){const err32 = {instancePath:instancePath+"/entryPoints/" + i1+"/role",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/role/type",keyword:"type",params:{type: schema35.properties.role.type},message:"must be string,null"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data9.scripts !== undefined){let data21 = data9.scripts;if((typeof data21 !== "string") && (data21 !== null)){const err33 = {instancePath:instancePath+"/entryPoints/" + i1+"/scripts",schemaPath:"#/$defs/MapGeographyEntryPoint/properties/scripts/type",keyword:"type",params:{type: schema35.properties.scripts.type},message:"must be string,null"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}else {const err34 = {instancePath:instancePath+"/entryPoints/" + i1,schemaPath:"#/$defs/MapGeographyEntryPoint/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}}else {const err35 = {instancePath:instancePath+"/entryPoints",schemaPath:"#/properties/entryPoints/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.localWitnesses !== undefined){let data22 = data.localWitnesses;if(Array.isArray(data22)){const len3 = data22.length;for(let i3=0; i3<len3; i3++){let data23 = data22[i3];if(data23 && typeof data23 == "object" && !Array.isArray(data23)){if(data23.kind === undefined){const err36 = {instancePath:instancePath+"/localWitnesses/" + i3,schemaPath:"#/$defs/MapGeographyWitnessCount/required",keyword:"required",params:{missingProperty: "kind"},message:"must have required property '"+"kind"+"'"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}if(data23.count === undefined){const err37 = {instancePath:instancePath+"/localWitnesses/" + i3,schemaPath:"#/$defs/MapGeographyWitnessCount/required",keyword:"required",params:{missingProperty: "count"},message:"must have required property '"+"count"+"'"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}for(const key3 in data23){if(!((key3 === "count") || (key3 === "kind"))){const err38 = {instancePath:instancePath+"/localWitnesses/" + i3,schemaPath:"#/$defs/MapGeographyWitnessCount/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key3},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}if(data23.count !== undefined){let data24 = data23.count;if(!(((typeof data24 == "number") && (!(data24 % 1) && !isNaN(data24))) && (isFinite(data24)))){const err39 = {instancePath:instancePath+"/localWitnesses/" + i3+"/count",schemaPath:"#/$defs/MapGeographyWitnessCount/properties/count/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}if((typeof data24 == "number") && (isFinite(data24))){if(data24 < 0 || isNaN(data24)){const err40 = {instancePath:instancePath+"/localWitnesses/" + i3+"/count",schemaPath:"#/$defs/MapGeographyWitnessCount/properties/count/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}}if(data23.kind !== undefined){if(typeof data23.kind !== "string"){const err41 = {instancePath:instancePath+"/localWitnesses/" + i3+"/kind",schemaPath:"#/$defs/MapGeographyWitnessCount/properties/kind/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}}else {const err42 = {instancePath:instancePath+"/localWitnesses/" + i3,schemaPath:"#/$defs/MapGeographyWitnessCount/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}else {const err43 = {instancePath:instancePath+"/localWitnesses",schemaPath:"#/properties/localWitnesses/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}}if(data.mapKey !== undefined){if(typeof data.mapKey !== "string"){const err44 = {instancePath:instancePath+"/mapKey",schemaPath:"#/properties/mapKey/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}if(data.rationale !== undefined){if(typeof data.rationale !== "string"){const err45 = {instancePath:instancePath+"/rationale",schemaPath:"#/properties/rationale/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}}if(data.reviewId !== undefined){if(typeof data.reviewId !== "string"){const err46 = {instancePath:instancePath+"/reviewId",schemaPath:"#/properties/reviewId/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}}if(data.reviewedStreetName !== undefined){if(typeof data.reviewedStreetName !== "string"){const err47 = {instancePath:instancePath+"/reviewedStreetName",schemaPath:"#/properties/reviewedStreetName/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}}if(data.sourceMapId !== undefined){if(typeof data.sourceMapId !== "string"){const err48 = {instancePath:instancePath+"/sourceMapId",schemaPath:"#/properties/sourceMapId/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}}if(data.status !== undefined){let data31 = data.status;if(typeof data31 !== "string"){const err49 = {instancePath:instancePath+"/status",schemaPath:"#/$defs/MapGeographyReviewStatus/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}if(!((data31 === "verified") || (data31 === "supported"))){const err50 = {instancePath:instancePath+"/status",schemaPath:"#/$defs/MapGeographyReviewStatus/enum",keyword:"enum",params:{allowedValues: schema37.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}}if(data.unknowns !== undefined){let data32 = data.unknowns;if(Array.isArray(data32)){const len4 = data32.length;for(let i4=0; i4<len4; i4++){if(typeof data32[i4] !== "string"){const err51 = {instancePath:instancePath+"/unknowns/" + i4,schemaPath:"#/properties/unknowns/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}}else {const err52 = {instancePath:instancePath+"/unknowns",schemaPath:"#/properties/unknowns/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}}}else {const err53 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}validate21.errors = vErrors;return errors === 0;}validate21.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};const schema38 = {"additionalProperties":false,"properties":{"areas":{"items":{"$ref":"#/$defs/MapGeographyArea"},"type":"array"},"key":{"type":"string"},"label":{"type":"string"},"mapCount":{"format":"uint","minimum":0,"type":"integer"}},"required":["key","label","mapCount","areas"],"type":"object"};const schema39 = {"additionalProperties":false,"properties":{"key":{"type":"string"},"label":{"type":"string"},"mapCount":{"format":"uint","minimum":0,"type":"integer"}},"required":["key","label","mapCount"],"type":"object"};function validate23(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate23.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.key === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "key"},message:"must have required property '"+"key"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.label === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "label"},message:"must have required property '"+"label"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.mapCount === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "mapCount"},message:"must have required property '"+"mapCount"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.areas === undefined){const err3 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "areas"},message:"must have required property '"+"areas"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}for(const key0 in data){if(!((((key0 === "areas") || (key0 === "key")) || (key0 === "label")) || (key0 === "mapCount"))){const err4 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.areas !== undefined){let data0 = data.areas;if(Array.isArray(data0)){const len0 = data0.length;for(let i0=0; i0<len0; i0++){let data1 = data0[i0];if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.key === undefined){const err5 = {instancePath:instancePath+"/areas/" + i0,schemaPath:"#/$defs/MapGeographyArea/required",keyword:"required",params:{missingProperty: "key"},message:"must have required property '"+"key"+"'"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(data1.label === undefined){const err6 = {instancePath:instancePath+"/areas/" + i0,schemaPath:"#/$defs/MapGeographyArea/required",keyword:"required",params:{missingProperty: "label"},message:"must have required property '"+"label"+"'"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(data1.mapCount === undefined){const err7 = {instancePath:instancePath+"/areas/" + i0,schemaPath:"#/$defs/MapGeographyArea/required",keyword:"required",params:{missingProperty: "mapCount"},message:"must have required property '"+"mapCount"+"'"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}for(const key1 in data1){if(!(((key1 === "key") || (key1 === "label")) || (key1 === "mapCount"))){const err8 = {instancePath:instancePath+"/areas/" + i0,schemaPath:"#/$defs/MapGeographyArea/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data1.key !== undefined){if(typeof data1.key !== "string"){const err9 = {instancePath:instancePath+"/areas/" + i0+"/key",schemaPath:"#/$defs/MapGeographyArea/properties/key/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data1.label !== undefined){if(typeof data1.label !== "string"){const err10 = {instancePath:instancePath+"/areas/" + i0+"/label",schemaPath:"#/$defs/MapGeographyArea/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data1.mapCount !== undefined){let data4 = data1.mapCount;if(!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))){const err11 = {instancePath:instancePath+"/areas/" + i0+"/mapCount",schemaPath:"#/$defs/MapGeographyArea/properties/mapCount/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if((typeof data4 == "number") && (isFinite(data4))){if(data4 < 0 || isNaN(data4)){const err12 = {instancePath:instancePath+"/areas/" + i0+"/mapCount",schemaPath:"#/$defs/MapGeographyArea/properties/mapCount/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}}else {const err13 = {instancePath:instancePath+"/areas/" + i0,schemaPath:"#/$defs/MapGeographyArea/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}}else {const err14 = {instancePath:instancePath+"/areas",schemaPath:"#/properties/areas/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.key !== undefined){if(typeof data.key !== "string"){const err15 = {instancePath:instancePath+"/key",schemaPath:"#/properties/key/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.label !== undefined){if(typeof data.label !== "string"){const err16 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.mapCount !== undefined){let data7 = data.mapCount;if(!(((typeof data7 == "number") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))){const err17 = {instancePath:instancePath+"/mapCount",schemaPath:"#/properties/mapCount/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if((typeof data7 == "number") && (isFinite(data7))){if(data7 < 0 || isNaN(data7)){const err18 = {instancePath:instancePath+"/mapCount",schemaPath:"#/properties/mapCount/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}}else {const err19 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}validate23.errors = vErrors;return errors === 0;}validate23.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate20.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.format === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "format"},message:"must have required property '"+"format"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.contractVersion === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "contractVersion"},message:"must have required property '"+"contractVersion"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.scope === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "scope"},message:"must have required property '"+"scope"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.regions === undefined){const err3 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "regions"},message:"must have required property '"+"regions"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.collections === undefined){const err4 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "collections"},message:"must have required property '"+"collections"+"'"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}if(data.placements === undefined){const err5 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "placements"},message:"must have required property '"+"placements"+"'"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}for(const key0 in data){if(!((((((key0 === "collections") || (key0 === "contractVersion")) || (key0 === "format")) || (key0 === "placements")) || (key0 === "regions")) || (key0 === "scope"))){const err6 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.collections !== undefined){let data0 = data.collections;if(Array.isArray(data0)){const len0 = data0.length;for(let i0=0; i0<len0; i0++){let data1 = data0[i0];if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.key === undefined){const err7 = {instancePath:instancePath+"/collections/" + i0,schemaPath:"#/$defs/MapGeographyCollection/required",keyword:"required",params:{missingProperty: "key"},message:"must have required property '"+"key"+"'"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(data1.label === undefined){const err8 = {instancePath:instancePath+"/collections/" + i0,schemaPath:"#/$defs/MapGeographyCollection/required",keyword:"required",params:{missingProperty: "label"},message:"must have required property '"+"label"+"'"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(data1.mapCount === undefined){const err9 = {instancePath:instancePath+"/collections/" + i0,schemaPath:"#/$defs/MapGeographyCollection/required",keyword:"required",params:{missingProperty: "mapCount"},message:"must have required property '"+"mapCount"+"'"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}for(const key1 in data1){if(!(((key1 === "key") || (key1 === "label")) || (key1 === "mapCount"))){const err10 = {instancePath:instancePath+"/collections/" + i0,schemaPath:"#/$defs/MapGeographyCollection/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data1.key !== undefined){if(typeof data1.key !== "string"){const err11 = {instancePath:instancePath+"/collections/" + i0+"/key",schemaPath:"#/$defs/MapGeographyCollection/properties/key/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data1.label !== undefined){if(typeof data1.label !== "string"){const err12 = {instancePath:instancePath+"/collections/" + i0+"/label",schemaPath:"#/$defs/MapGeographyCollection/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data1.mapCount !== undefined){let data4 = data1.mapCount;if(!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))){const err13 = {instancePath:instancePath+"/collections/" + i0+"/mapCount",schemaPath:"#/$defs/MapGeographyCollection/properties/mapCount/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if((typeof data4 == "number") && (isFinite(data4))){if(data4 < 0 || isNaN(data4)){const err14 = {instancePath:instancePath+"/collections/" + i0+"/mapCount",schemaPath:"#/$defs/MapGeographyCollection/properties/mapCount/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}}else {const err15 = {instancePath:instancePath+"/collections/" + i0,schemaPath:"#/$defs/MapGeographyCollection/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}}else {const err16 = {instancePath:instancePath+"/collections",schemaPath:"#/properties/collections/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.contractVersion !== undefined){let data5 = data.contractVersion;if(typeof data5 !== "string"){const err17 = {instancePath:instancePath+"/contractVersion",schemaPath:"#/properties/contractVersion/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if("1.0" !== data5){const err18 = {instancePath:instancePath+"/contractVersion",schemaPath:"#/properties/contractVersion/const",keyword:"const",params:{allowedValue: "1.0"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.format !== undefined){let data6 = data.format;if(typeof data6 !== "string"){const err19 = {instancePath:instancePath+"/format",schemaPath:"#/properties/format/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if("mapletip.map-geography" !== data6){const err20 = {instancePath:instancePath+"/format",schemaPath:"#/properties/format/const",keyword:"const",params:{allowedValue: "mapletip.map-geography"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.placements !== undefined){let data7 = data.placements;if(Array.isArray(data7)){const len1 = data7.length;for(let i1=0; i1<len1; i1++){if(!(validate21(data7[i1], {instancePath:instancePath+"/placements/" + i1,parentData:data7,parentDataProperty:i1,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);errors = vErrors.length;}}}else {const err21 = {instancePath:instancePath+"/placements",schemaPath:"#/properties/placements/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.regions !== undefined){let data9 = data.regions;if(Array.isArray(data9)){const len2 = data9.length;for(let i2=0; i2<len2; i2++){if(!(validate23(data9[i2], {instancePath:instancePath+"/regions/" + i2,parentData:data9,parentDataProperty:i2,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate23.errors : vErrors.concat(validate23.errors);errors = vErrors.length;}}}else {const err22 = {instancePath:instancePath+"/regions",schemaPath:"#/properties/regions/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.scope !== undefined){let data11 = data.scope;if(data11 && typeof data11 == "object" && !Array.isArray(data11)){if(data11.family_id === undefined){const err23 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/required",keyword:"required",params:{missingProperty: "family_id"},message:"must have required property '"+"family_id"+"'"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}if(data11.build_id === undefined){const err24 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/required",keyword:"required",params:{missingProperty: "build_id"},message:"must have required property '"+"build_id"+"'"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}if(data11.build_id !== undefined){if(typeof data11.build_id !== "string"){const err25 = {instancePath:instancePath+"/scope/build_id",schemaPath:"#/$defs/BuildScope/properties/build_id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data11.family_id !== undefined){if(typeof data11.family_id !== "string"){const err26 = {instancePath:instancePath+"/scope/family_id",schemaPath:"#/$defs/BuildScope/properties/family_id/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}}else {const err27 = {instancePath:instancePath+"/scope",schemaPath:"#/$defs/BuildScope/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}}else {const err28 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}validate20.errors = vErrors;return errors === 0;}validate20.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};
|