UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines • 7.75 kB
"use strict";var _ParametersHelper_paramsContainer,_ParametersHelper_pathsBuilders,_ParametersHelper_getPathBuilder,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,r,t,a,s){if("m"===a)throw new TypeError("Private method is not writable");if("a"===a&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof r?e!==r||!s:!r.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===a?s.call(e,t):s?s.value=t:r.set(e,t),t},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,r,t,a){if("a"===t&&!a)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof r?e!==r||!a:!r.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?a:"a"===t?a.call(e):a?a.value:r.get(e)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ParametersHelper=void 0;const AltoError_1=require("../../../common/Errors/AltoError"),Iterable_1=require("../../../common/Iterable"),Object_1=require("../../../common/Utils/Object"),concat_1=require("@reactivex/ix-es2015-cjs/iterable/concat"),empty_1=require("@reactivex/ix-es2015-cjs/iterable/empty"),find_1=require("@reactivex/ix-es2015-cjs/iterable/find"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),distinct_1=require("@reactivex/ix-es2015-cjs/iterable/operators/distinct"),filter_1=require("@reactivex/ix-es2015-cjs/iterable/operators/filter"),flatmap_1=require("@reactivex/ix-es2015-cjs/iterable/operators/flatmap"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),some_1=require("@reactivex/ix-es2015-cjs/iterable/some"),common_1=require("../../Blueprint/common"),Parameters_1=require("../../Parameters"),Parameters_2=require("../Parameters");class ParametersHelper{constructor(e){this.resourcesRoot=ParametersHelper.resourcesRoot,this.connectionsRoot=ParametersHelper.connectionsRoot,_ParametersHelper_paramsContainer.set(this,void 0),_ParametersHelper_pathsBuilders.set(this,void 0),_ParametersHelper_getPathBuilder.set(this,e=>(__classPrivateFieldGet(this,_ParametersHelper_pathsBuilders,"f")[e]||(__classPrivateFieldGet(this,_ParametersHelper_pathsBuilders,"f")[e]=new Parameters_1.ParameterPathBuilder(e)),__classPrivateFieldGet(this,_ParametersHelper_pathsBuilders,"f")[e])),__classPrivateFieldSet(this,_ParametersHelper_pathsBuilders,{},"f"),__classPrivateFieldSet(this,_ParametersHelper_paramsContainer,e,"f")}get parameters(){return __classPrivateFieldGet(this,_ParametersHelper_paramsContainer,"f").parameters}get _blueprintParams(){return __classPrivateFieldGet(this,_ParametersHelper_paramsContainer,"f").parameters||(__classPrivateFieldGet(this,_ParametersHelper_paramsContainer,"f").parameters={}),__classPrivateFieldGet(this,_ParametersHelper_paramsContainer,"f").parameters}set _blueprintParams(e){__classPrivateFieldGet(this,_ParametersHelper_paramsContainer,"f").parameters=Object.keys(e).length>0?e:void 0}iterateParams(){return this.parameters?(0,Iterable_1.entries)(this.parameters).pipe((0,filter_1.filter)(([,e])=>!!e)):(0,empty_1.empty)()}iteratePaths(){return this.iterateParams().pipe((0,flatmap_1.flatMap)(([e,r])=>r?(0,from_1.from)(r.paths).pipe((0,map_1.map)(r=>[e,r])):[]))}iteratePathBuilders(){return this.iteratePaths().pipe((0,map_1.map)(([e,r])=>[e,__classPrivateFieldGet(this,_ParametersHelper_getPathBuilder,"f").call(this,r)]))}add(e,r){var t,a;if((0,Parameters_1.isParameterSpec)(r)&&0===r.paths.length)return null!==(a=null===(t=this.parameters)||void 0===t?void 0:t[e])&&void 0!==a?a:r;const s=(0,Parameters_1.isParameterSpec)(r)?r:{paths:[r]},i=this._blueprintParams,l=(0,find_1.find)(this.iteratePathBuilders(),([r,t])=>(0,some_1.some)((0,from_1.from)(s.paths).pipe((0,map_1.map)(__classPrivateFieldGet(this,_ParametersHelper_getPathBuilder,"f"))),a=>a.isConflictingWith(t)&&(e!==r||!t.equals(a))));if(l){const[r,t]=l;throw AltoError_1.AltoError.create(`Cannot add new parameter [${e}] because of conflict with an old one [${r}]`,{data:{conflictingName:r,conflictingPath:t,newParamName:e,newParamSpec:s}})}try{if(!i[e]){return i[e]=s}const r=i[e];return r.paths=[...(0,concat_1.concat)(r.paths,s.paths).pipe((0,distinct_1.distinct)())],r}finally{this._blueprintParams=i}}remove(e,r){const t=this._blueprintParams;try{if(!r||!t[e])return void delete t[e];(0,Parameters_1.isParameterSpec)(r)||(r={paths:[r]});const a=new Set(r.paths),s=t[e];return s.paths=s.paths.filter(e=>!a.has(e)),s.paths.length>0?s:void delete t[e]}finally{this._blueprintParams=t}}deleteAllFromPath(e){if(!this.parameters)return;const r=this._blueprintParams;try{for(const[t,a]of Object.entries(r))if(a){e=e instanceof Parameters_1.ParameterPathBuilder?e:__classPrivateFieldGet(this,_ParametersHelper_getPathBuilder,"f").call(this,e);const s=[...(0,from_1.from)(a.paths).pipe((0,map_1.map)(e=>({path:e,builder:new Parameters_1.ParameterPathBuilder(e)})),(0,filter_1.filter)(({builder:r})=>r.startsWith(e)),(0,map_1.map)(({path:e})=>e))];if(s.length>0){const e=removePath(a,...s);e?r[t]=e:delete r[t]}}else delete r[t]}finally{this._blueprintParams=r}}getPathParameters(e){return this.parameters?(e instanceof Parameters_1.ParameterPathBuilder||(e=new Parameters_1.ParameterPathBuilder(e)),(0,Object_1.fromEntries)((0,Iterable_1.entries)(this.parameters).pipe((0,filter_1.filter)(([,e])=>!!e),(0,map_1.map)(([e,r])=>({key:e,paths:(0,from_1.from)(r.paths).pipe((0,map_1.map)(__classPrivateFieldGet(this,_ParametersHelper_getPathBuilder,"f")))})),(0,filter_1.filter)(({paths:r})=>(0,some_1.some)(r,r=>r.startsWith(e))),(0,map_1.map)(({key:r,paths:t})=>[r,{paths:[...t.pipe((0,filter_1.filter)(r=>r.startsWith(e)),(0,map_1.map)(e=>e.path))]}])))):{}}setParametersFrom({root:e,parameterized:r,valueSetter:t,defaultParameterValue:a}){var s;e=e instanceof Parameters_1.ParameterPathBuilder?e:__classPrivateFieldGet(this,_ParametersHelper_getPathBuilder,"f").call(this,e);const i=new ParametersHelper({}),l=function e(r,t,s,i){var l;if(s.has(t))return s.get(t);const n=Array.isArray(t)?[...t]:Object.assign({},t);s.set(t,n);for(const[o,p]of Object.entries(t)){const t=o;if((0,Parameters_2.isParameter)(p)){const e=r.append(o);i.add(p.$param$,e.path),n[t]=p.overrideDefault?p.defaultValue:null!==(l=null==a?void 0:a(e))&&void 0!==l?l:p.defaultValue}else(0,Object_1.isObject)(p)&&(n[t]=e(r.append(o),p,s,i))}return n}(e,r,new Map,i);null==t||t(l);const n=this.getPathParameters(e),{added:o,deleted:p}=diffParams(null!==(s=i.parameters)&&void 0!==s?s:{},n),m=Object.assign({},this.parameters);try{return Object.entries(p).forEach(([e,r])=>r&&this.remove(e,r)),Object.entries(o).forEach(([e,r])=>r&&this.add(e,r)),l}catch(e){throw this._blueprintParams=m,e}}}function removePath(e,...r){const t=new Set(r),a=e.paths.filter(e=>!t.has(e));return a.length>0?{paths:a}:void 0}function diffParams(e,r){var t,a;const s=new ParametersHelper({}),i=new ParametersHelper({});for(const[t,a]of Object.entries(e))a&&(r[t]?(s.add(t,{paths:a.paths.filter(e=>!r[t].paths.includes(e))}),i.add(t,{paths:r[t].paths.filter(e=>!a.paths.includes(e))})):s.add(t,a));for(const[t,a]of Object.entries(r))a&&!e[t]&&i.add(t,a);return{added:null!==(t=s.parameters)&&void 0!==t?t:{},deleted:null!==(a=i.parameters)&&void 0!==a?a:{}}}exports.ParametersHelper=ParametersHelper,_ParametersHelper_paramsContainer=new WeakMap,_ParametersHelper_pathsBuilders=new WeakMap,_ParametersHelper_getPathBuilder=new WeakMap,ParametersHelper.resourcesRoot=new Parameters_1.ParameterPathBuilder("resources"),ParametersHelper.connectionsRoot=new Parameters_1.ParameterPathBuilder("connections"),ParametersHelper.globalEnvironmentRoot=new Parameters_1.ParameterPathBuilder(common_1.globalEnvironmentVariablesKey);