| 289 | ); |
| 290 | }, |
| 291 | map(keyValidator: Validator, valueValidator: Validator): Validator { |
| 292 | return withShape( |
| 293 | (value, path) => { |
| 294 | if (!(value instanceof Map)) fail(path, "Map", value); |
| 295 | if (path.length >= MAX_VALIDATION_DEPTH) |
| 296 | fail(path, `a value nested at most ${MAX_VALIDATION_DEPTH} levels deep`, value); |
| 297 | let i = 0; |
| 298 | for (let [key, entryValue] of value) { |
| 299 | keyValidator(key, [...path, i, "key"]); |
| 300 | valueValidator(entryValue, [...path, i, "value"]); |
| 301 | i++; |
| 302 | } |
| 303 | }, |
| 304 | { kind: "map", key: keyValidator, value: valueValidator } |
| 305 | ); |
| 306 | }, |
| 307 | set(elem: Validator): Validator { |
| 308 | return withShape( |
| 309 | (value, path) => { |