UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 2.53 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BlueprintConnectionCollection=void 0;const Common_1=require("../../Common"),Errors_1=require("../../../common/Errors"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),flatmap_1=require("@reactivex/ix-es2015-cjs/iterable/operators/flatmap"),BlueprintError_1=require("../../Blueprint/BlueprintError"),ParametersHelper_1=require("../ParametersHelper"),ConnectionCollectionBase_1=require("./ConnectionCollectionBase");class BlueprintConnectionCollection extends ConnectionCollectionBase_1.ConnectionCollectionBase{constructor(e,r){super(e,r,()=>(0,from_1.from)(Object.values(r.blueprint.connections)).pipe((0,flatmap_1.flatMap)(e=>e?(0,Common_1.validateValues)(Object.values(e)):[])))}has({from:e,to:r}){var t;return!!(null===(t=this._blueprint.blueprint.connections[e])||void 0===t?void 0:t[r])}addByType(e,r){return this.add(Object.assign(Object.assign({},r),{type:e}))}add(e){var r,t;if(null===(r=this._blueprint.blueprint.connections[e.from])||void 0===r?void 0:r[e.to])throw new BlueprintError_1.BlueprintError(`Connection from resource id ${e.from} to resource id ${e.to} already exists`);const o=this._getWrapper(e);o.validateConnection();return(this._blueprint.blueprint.connections[e.from]=null!==(t=this._blueprint.blueprint.connections[e.from])&&void 0!==t?t:{})[e.to]=e,o}addParameterizedConnectionByType(e,r){return this.addParameterizedConnection(Object.assign(Object.assign({},r),{type:e}))}addParameterizedConnection(e){var r;if(null===(r=this._blueprint.blueprint.connections[e.from])||void 0===r?void 0:r[e.to])throw new BlueprintError_1.BlueprintError("Connection already exists");let t;if(this._blueprint.parameters.setParametersFrom({root:ParametersHelper_1.ParametersHelper.connectionsRoot.append(e.from).append(e.to),parameterized:e,valueSetter:e=>(t=this.add(e),t)}),!t)throw Errors_1.AltoError.create("Connection helper was not created for parameterized resource.",{data:{args:[...arguments]}});return t}delete(e){if(!e)return;const r=this._blueprint.blueprint.connections[e.sourceId];r&&Object.prototype.hasOwnProperty.call(r,e.targetId)&&(delete r[e.targetId],0===Object.keys(r).length&&delete this._blueprint.blueprint.connections[e.sourceId]),this._blueprint.parameters.deleteAllFromPath(e.rootPath)}deleteAll(){this._blueprint.blueprint.connections={},this._blueprint.parameters.deleteAllFromPath(ParametersHelper_1.ParametersHelper.connectionsRoot)}}exports.BlueprintConnectionCollection=BlueprintConnectionCollection;