@altostra/core
Version:
Core library for shared types and logic
1 lines • 1.37 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.isParametersDict=exports.hasNoConflicts=exports.hasConflicts=exports.isParameterSpec=void 0;const type_validations_1=require("@altostra/type-validations"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),distinct_1=require("@reactivex/ix-es2015-cjs/iterable/operators/distinct"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),some_1=require("@reactivex/ix-es2015-cjs/iterable/some"),ParameterPath_1=require("./ParameterPath"),ParameterPathBuilder_1=require("./ParameterPathBuilder");function hasConflicts(e){if(!e)return!1;const t={},r=new Set;for(const t of Object.values(e)){if(!t)continue;const e=(0,from_1.from)(t.paths).pipe((0,distinct_1.distinct)(),(0,map_1.map)(a));for(const t of e){if((0,some_1.some)(r,e=>t.isConflictingWith(e)))return!0;r.add(t)}}return!1;function a(e){return t[e]||(t[e]=new ParameterPathBuilder_1.ParameterPathBuilder(e)),t[e]}}function hasNoConflicts(e){return!hasConflicts(e)}exports.isParameterSpec=(0,type_validations_1.objectOf)({paths:(0,type_validations_1.arrayOf)(ParameterPath_1.isParameterPath)}),exports.hasConflicts=hasConflicts,exports.hasNoConflicts=hasNoConflicts,exports.isParametersDict=(0,type_validations_1.maybe)((0,type_validations_1.allOf)((0,type_validations_1.recordOf)(exports.isParameterSpec),hasNoConflicts));