UNPKG

structured-elements

Version:

A TypeScript package for modelling and validating data

57 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isReferenceContainer = void 0; const constants_1 = require("../constants"); const array_1 = require("./array"); const expectation_1 = require("./expectation"); const record_1 = require("./record"); const string_1 = require("./string"); const structureOption_1 = require("./structureOption"); const isReferenceContainer = (api, subject) => { if (!(0, record_1.isRecord)(subject)) { return false; } const reference = subject[constants_1.referenceToken]; if (!reference) { return false; } if (!(0, structureOption_1.isStructureOption)(reference.structure)) { if (api.debugEnabled()) { api.privateFunctions.debug(`StructuredElements#isReferenceContainer found invalid structure:`, { subject, structure: reference.structure, }); } return false; } if ((0, string_1.isString)(reference.target)) { return true; } if ((0, array_1.isArray)(reference.target)) { const failures = reference.target.map((target, index) => { if (!(0, expectation_1.isExpectation)(api, target)) { return { index, target }; } }); if (failures.length === 0) { return true; } if (api.debugEnabled()) { api.privateFunctions.debug(`StructuredElements#isReferenceContainer found invalid target array:`, { subject, failures, }); } } if (typeof reference.target === `function`) { return true; } if (api.debugEnabled()) { api.privateFunctions.debug(`StructuredElements#isReferenceContainer found invalid target:`, { subject, }); } return false; }; exports.isReferenceContainer = isReferenceContainer; //# sourceMappingURL=referenceContainer.js.map