| import { tuple } from './tuple.js'; | |
| import { uniqueArray } from './uniqueArray.js'; | |
| import { keyValuePairsToObjectMapper, keyValuePairsToObjectUnmapper } from './_internals/mappers/KeyValuePairsToObject.js'; | |
| import { constant } from './constant.js'; | |
| import { boolean } from './boolean.js'; | |
| function dictionaryKeyExtractor(entry) { | |
| return entry[0]; | |
| } | |
| export function dictionary(keyArb, valueArb, constraints = {}) { | |
| const noNullPrototype = constraints.noNullPrototype !== false; | |
| return tuple(uniqueArray(tuple(keyArb, valueArb), { | |
| minLength: constraints.minKeys, | |
| maxLength: constraints.maxKeys, | |
| size: constraints.size, | |
| selector: dictionaryKeyExtractor, | |
| depthIdentifier: constraints.depthIdentifier, | |
| }), noNullPrototype ? constant(false) : boolean()).map(keyValuePairsToObjectMapper, keyValuePairsToObjectUnmapper); | |
| } | |