UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 3.9 kB
"use strict";var _ParameterPathBuilder_parts,_ParameterPathBuilder_path,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(e,t,r,a,i){if("m"===a)throw new TypeError("Private method is not writable");if("a"===a&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===a?i.call(e,r):i?i.value=r:t.set(e,r),r},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(e,t,r,a){if("a"===r&&!a)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?a:"a"===r?a.call(e):a?a.value:t.get(e)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ParameterPathBuilder=void 0;const Numerics_1=require("../../common/CustomTypes/Numerics"),AltoError_1=require("../../common/Errors/AltoError"),every_1=require("@reactivex/ix-es2015-cjs/iterable/every"),first_1=require("@reactivex/ix-es2015-cjs/iterable/first"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),zip_1=require("@reactivex/ix-es2015-cjs/iterable/zip"),Iterable_1=require("../Helpers/Iterable"),ImmutableList_1=require("./ImmutableList"),ParameterPath_1=require("./ParameterPath");class ParameterPathBuilder{constructor(e){if(this.pathSeparator=ParameterPathBuilder.pathSeparator,_ParameterPathBuilder_parts.set(this,void 0),_ParameterPathBuilder_path.set(this,void 0),e instanceof ImmutableList_1.ListNode){if(!ParameterPath_1.validPathPrefixes.has((0,first_1.first)(e)))throw AltoError_1.AltoError.create("Invalid path: "+toPathString(e),{data:{path:e}});__classPrivateFieldSet(this,_ParameterPathBuilder_parts,e,"f")}else{const t=(0,ParameterPath_1.parameterPath)(e);__classPrivateFieldSet(this,_ParameterPathBuilder_path,t,"f"),__classPrivateFieldSet(this,_ParameterPathBuilder_parts,ImmutableList_1.ListNode.fromIterable(t.split(this.pathSeparator).map(decodeURIComponent)),"f")}}get path(){return this.toString()}get length(){return __classPrivateFieldGet(this,_ParameterPathBuilder_parts,"f").length}get parts(){return __classPrivateFieldGet(this,_ParameterPathBuilder_parts,"f")}append(...e){return new ParameterPathBuilder(__classPrivateFieldGet(this,_ParameterPathBuilder_parts,"f").append(...e))}backUp(e=(0,Numerics_1.naturalNumber)(1)){if(__classPrivateFieldGet(this,_ParameterPathBuilder_parts,"f").length-e<1)throw AltoError_1.AltoError.create("Cannot truncate parameter path",{data:{pathBuilder:this,levels:e}});return new ParameterPathBuilder(__classPrivateFieldGet(this,_ParameterPathBuilder_parts,"f").pop(e))}toString(){return"string"!=typeof __classPrivateFieldGet(this,_ParameterPathBuilder_path,"f")&&__classPrivateFieldSet(this,_ParameterPathBuilder_path,toPathString(this.parts),"f"),__classPrivateFieldGet(this,_ParameterPathBuilder_path,"f")}valueOf(){return this.toString()}startsWith(e){if(e instanceof ParameterPathBuilder||(e=new ParameterPathBuilder(e)),this.length<e.length)return!1;const t=(0,zip_1.zip)(this.parts,e.parts);for(const[e,r]of t)if(e!==r)return!1;return!0}isConflictingWith(e){return e instanceof ParameterPathBuilder||(e=new ParameterPathBuilder(e)),this.startsWith(e)||e.startsWith(this)}equals(e){return e instanceof ParameterPathBuilder?this.length===e.length&&(0,every_1.every)((0,zip_1.zip)(this.parts,e.parts),([e,t])=>e===t):this.path===e}}function toPathString(e){return(0,Iterable_1.join)((0,from_1.from)(e).pipe((0,map_1.map)(encodeURIComponent)),ParameterPathBuilder.pathSeparator)}exports.ParameterPathBuilder=ParameterPathBuilder,_ParameterPathBuilder_parts=new WeakMap,_ParameterPathBuilder_path=new WeakMap,ParameterPathBuilder.pathSeparator="/";