@altostra/core
Version:
Core library for shared types and logic
1 lines • 2.16 kB
JavaScript
"use strict";var __awaiter=this&&this.__awaiter||function(t,e,r,i){return new(r||(r=Promise))((function(s,n){function o(t){try{h(i.next(t))}catch(t){n(t)}}function a(t){try{h(i.throw(t))}catch(t){n(t)}}function h(t){var e;t.done?s(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,a)}h((i=i.apply(t,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Settings=void 0;const AltoError_1=require("../../common/Errors/AltoError"),Object_1=require("../../common/Utils/Object"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),Common_1=require("./Common"),Privates_1=require("./Privates");class Settings{constructor(t,e,r){this.manager=t,this.path=r,this.type=e.type;const{wrapper:i,isOverride:s,deleteKey:n,getNamespace:o,refreshSettings:a,getSettingType:h}=(0,Privates_1.getWrappedSettingsData)(e);this.settings=i,this._isOverride=s,this._deleteKey=n,this._settingsData=i,this._internalSettings=e.settings,this._keys=e.keys,this._getNamespace=o,this._refreshSettings=a,this.getSettingType=h}get activeConfig(){return this.settings[Common_1.KEY_ACTIVE_CONFIG]}set activeConfig(t){this.settings[Common_1.KEY_ACTIVE_CONFIG]=t}get(t){return this.settings[t]}set(t,e,r){return this._settingsData[t]="boolean"!=typeof r?e:{value:e,$overrides:r},e}isOverride(t,e){return this._isOverride(t,e)}getSettingConfiguration(t){return this._getNamespace(t)}delete(t){this._deleteKey(t)}save(){return __awaiter(this,void 0,void 0,(function*(){if(!this.path)throw new AltoError_1.AltoError("Cannot save settings.");const t=cloneOwnProps(this._internalSettings);return yield this.manager[Privates_1.SETTINGS_OPTIONS].persistSettings(this.path,t)}))}refresh(){return __awaiter(this,void 0,void 0,(function*(){if(!this.path)return;const t=yield this.manager[Privates_1.SETTINGS_OPTIONS].settingsProvider(this.path);this._refreshSettings(t)}))}}function cloneOwnProps(t){return"object"!=typeof t||!t||Array.isArray(t)?t:(0,Object_1.fromEntries)((0,from_1.from)(Object.entries(t)).pipe((0,map_1.map)(([t,e])=>[t,cloneOwnProps(e)])))}exports.Settings=Settings;