UNPKG

@digitalasset/daml-ledger

Version:
65 lines 2.16 kB
"use strict"; // Copyright (c) 2021 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 Object.defineProperty(exports, "__esModule", { value: true }); exports.object = void 0; const Validation_1 = require("./Validation"); function checkRequired(object, required, node) { for (const key in required) { if (object.hasOwnProperty(key)) { required[key].validate(object[key], key, node); } else { node.errors.push({ errorType: 'missing-key', expectedKey: key, expectedType: required[key].type }); } } } function checkOptional(object, optional, node) { for (const key in optional) { if (object.hasOwnProperty(key) && object[key] !== undefined) { optional[key].validate(object[key], key, node); } } } function checkUnexpected(object, keys, node) { for (const key in object) { if (!keys || !keys.hasOwnProperty(key)) { node.errors.push({ errorType: 'unexpected-key', key: key }); } } } function object(type, required, optional) { return { type: type, required: required, optional: optional, validate(value, key, validation) { const node = Validation_1.init(key, validation); const actualType = Validation_1.typeOf(value); if (actualType !== 'object') { node.errors.push({ errorType: 'type-error', expectedType: type, actualType: actualType }); } else { const required = this.required(); const optional = this.optional(); checkRequired(value, required, node); checkOptional(value, optional, node); checkUnexpected(value, Object.assign({}, required, optional), node); } return validation || node; } }; } exports.object = object; //# sourceMappingURL=Object.js.map