Skip to content
Snippets Groups Projects
Verified Commit f98f5b2d authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

release

parent 18c104bc
No related branches found
No related tags found
No related merge requests found
Showing
with 20 additions and 20 deletions
This diff is collapsed.
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{Monster}from"./namespace.js";const internalSymbol=Symbol("internalData"),internalStateSymbol=Symbol("state");export{Monster,internalSymbol,internalStateSymbol};
\ No newline at end of file
'use strict';import{Monster}from"./namespace.js";const internalSymbol=Symbol("internalData");const internalStateSymbol=Symbol("state");export{Monster,internalSymbol,internalStateSymbol};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{Base}from"../types/base.js";class AbstractConstraint extends Base{constructor(){super()}isValid(s){return Promise.reject(s)}}assignToNamespace("Monster.Constraints",AbstractConstraint);export{Monster,AbstractConstraint};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{Base}from"../types/base.js";class AbstractConstraint extends Base{constructor(){super()}isValid(value){return Promise.reject(value)}}assignToNamespace("Monster.Constraints",AbstractConstraint);export{Monster,AbstractConstraint};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{AbstractConstraint}from"./abstract.js";class AbstractOperator extends AbstractConstraint{constructor(t,r){if(super(),!(t instanceof AbstractConstraint&&r instanceof AbstractConstraint))throw new TypeError("parameters must be from type AbstractConstraint");this.operantA=t,this.operantB=r}}assignToNamespace("Monster.Constraints",AbstractOperator);export{Monster,AbstractOperator};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{AbstractConstraint}from"./abstract.js";class AbstractOperator extends AbstractConstraint{constructor(operantA,operantB){super();if(!(operantA instanceof AbstractConstraint)||!(operantB instanceof AbstractConstraint)){throw new TypeError("parameters must be from type AbstractConstraint")}this.operantA=operantA;this.operantB=operantB}}assignToNamespace("Monster.Constraints",AbstractOperator);export{Monster,AbstractOperator};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{AbstractOperator}from"./abstractoperator.js";class AndOperator extends AbstractOperator{isValid(r){return Promise.all([this.operantA.isValid(r),this.operantB.isValid(r)])}}assignToNamespace("Monster.Constraints",AndOperator);export{Monster,AndOperator};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{AbstractOperator}from"./abstractoperator.js";class AndOperator extends AbstractOperator{isValid(value){return Promise.all([this.operantA.isValid(value),this.operantB.isValid(value)])}}assignToNamespace("Monster.Constraints",AndOperator);export{Monster,AndOperator};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{AbstractConstraint}from"./abstract.js";class Invalid extends AbstractConstraint{isValid(s){return Promise.reject(s)}}assignToNamespace("Monster.Constraints",Invalid);export{Monster,Invalid};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{AbstractConstraint}from"./abstract.js";class Invalid extends AbstractConstraint{isValid(value){return Promise.reject(value)}}assignToNamespace("Monster.Constraints",Invalid);export{Monster,Invalid};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{isArray}from"../types/is.js";import{AbstractConstraint}from"./abstract.js";class IsArray extends AbstractConstraint{isValid(s){return isArray(s)?Promise.resolve(s):Promise.reject(s)}}assignToNamespace("Monster.Constraints",IsArray);export{Monster,IsArray};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{isArray}from"../types/is.js";import{AbstractConstraint}from"./abstract.js";class IsArray extends AbstractConstraint{isValid(value){if(isArray(value)){return Promise.resolve(value)}return Promise.reject(value)}}assignToNamespace("Monster.Constraints",IsArray);export{Monster,IsArray};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{isObject}from"../types/is.js";import{AbstractConstraint}from"./abstract.js";class IsObject extends AbstractConstraint{isValid(s){return isObject(s)?Promise.resolve(s):Promise.reject(s)}}assignToNamespace("Monster.Constraints",IsObject);export{Monster,IsObject};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{isObject}from"../types/is.js";import{AbstractConstraint}from"./abstract.js";class IsObject extends AbstractConstraint{isValid(value){if(isObject(value)){return Promise.resolve(value)}return Promise.reject(value)}}assignToNamespace("Monster.Constraints",IsObject);export{Monster,IsObject};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";const namespace="Monster.Constraints";export{namespace};
\ No newline at end of file
'use strict';export const namespace="Monster.Constraints";
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{AbstractOperator}from"./abstractoperator.js";class OrOperator extends AbstractOperator{isValid(s){var o=this;return new Promise(function(t,r){let a,e;o.operantA.isValid(s).then(function(){t()}).catch(function(){(a=!1)===e&&r()}),o.operantB.isValid(s).then(function(){t()}).catch(function(){(e=!1)===a&&r()})})}}assignToNamespace("Monster.Constraints",OrOperator);export{Monster,OrOperator};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{AbstractOperator}from"./abstractoperator.js";class OrOperator extends AbstractOperator{isValid(value){var self=this;return new Promise(function(resolve,reject){let a,b;self.operantA.isValid(value).then(function(){resolve()}).catch(function(){a=false;if(b===false){reject()}});self.operantB.isValid(value).then(function(){resolve()}).catch(function(){b=false;if(a===false){reject()}})})}}assignToNamespace("Monster.Constraints",OrOperator);export{Monster,OrOperator};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{AbstractConstraint}from"./abstract.js";class Valid extends AbstractConstraint{isValid(s){return Promise.resolve(s)}}assignToNamespace("Monster.Constraints",Valid);export{Monster,Valid};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{AbstractConstraint}from"./abstract.js";class Valid extends AbstractConstraint{isValid(value){return Promise.resolve(value)}}assignToNamespace("Monster.Constraints",Valid);export{Monster,Valid};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{assignToNamespace,Monster}from"../namespace.js";import{isFunction,isObject,isString}from"../types/is.js";import{validateString}from"../types/validate.js";import{clone}from"../util/clone.js";import{DELIMITER,Pathfinder,WILDCARD}from"./pathfinder.js";function buildMap(t,e,a,n,r){const o=new Map;let i;if(isFunction(e)){if(i=e(t),!(i instanceof Map))throw new TypeError("the selector callback must return a map")}else{if(!isString(e))throw new TypeError("value is neither a string nor a function");i=new Map,buildFlatMap.call(i,t,e)}return i instanceof Map&&i.forEach((t,e,i)=>{isFunction(r)&&!0!==r.call(i,t,e)||(e=build(t,n,e),t=build(t,a),o.set(e,t))}),o}function buildFlatMap(i,t,a,n){var r=this;const o=new Map;var e=r.size;void 0===a&&(a=[]);let l=t.split(DELIMITER),s,p=[];do{if(s=l.shift(),p.push(s),s===WILDCARD){let t=new Pathfinder(i),e;try{e=t.getVia(p.join(DELIMITER))}catch(t){e=new Map}for(const[d,h]of e){let e=clone(a);p.map(t=>{e.push(t===WILDCARD?d:t)});var c=e.join(DELIMITER);let t=buildFlatMap.call(r,h,l.join(DELIMITER),e,h);isObject(t)&&(t["^"]=n),o.set(c,t)}}}while(0<l.length);if(e===r.size)for(var[f,u]of o)r.set(f,u);return i}function build(t,a,n){if(void 0===a)return n||t;validateString(a);const e=[...a.matchAll(/(?<placeholder>\${(?<path>[a-z\^A-Z.\-_0-9]*)})/gm)];let r=new Pathfinder(t);return 0===e.length?r.getVia(a):(e.forEach(e=>{var i=e?.groups,e=i?.placeholder;if(void 0!==e){i=i?.path;let t=r.getVia(i);void 0===t&&(t=n),a=a.replaceAll(e,t)}}),a)}assignToNamespace("Monster.Data",buildMap);export{Monster,buildMap};
\ No newline at end of file
'use strict';import{assignToNamespace,Monster}from"../namespace.js";import{isFunction,isObject,isString}from"../types/is.js";import{validateString}from"../types/validate.js";import{clone}from"../util/clone.js";import{DELIMITER,Pathfinder,WILDCARD}from"./pathfinder.js";function buildMap(subject,selector,valueTemplate,keyTemplate,filter){const result=new Map;let map;if(isFunction(selector)){map=selector(subject);if(!(map instanceof Map)){throw new TypeError("the selector callback must return a map")}}else if(isString(selector)){map=new Map;buildFlatMap.call(map,subject,selector)}else{throw new TypeError("value is neither a string nor a function")}if(!(map instanceof Map)){return result}map.forEach((v,k,m)=>{if(isFunction(filter)){if(filter.call(m,v,k)!==true)return}k=build(v,keyTemplate,k);v=build(v,valueTemplate);result.set(k,v)});return result}function buildFlatMap(subject,selector,key,parentMap){const result=this;const currentMap=new Map;const resultLength=result.size;if(key===undefined)key=[];let parts=selector.split(DELIMITER);let current="",currentPath=[];do{current=parts.shift();currentPath.push(current);if(current===WILDCARD){let finder=new Pathfinder(subject);let map;try{map=finder.getVia(currentPath.join(DELIMITER))}catch(e){let a=e;map=new Map}for(const[k,o]of map){let copyKey=clone(key);currentPath.map(a=>{copyKey.push(a===WILDCARD?k:a)});let kk=copyKey.join(DELIMITER);let sub=buildFlatMap.call(result,o,parts.join(DELIMITER),copyKey,o);if(isObject(sub)){sub["^"]=parentMap}currentMap.set(kk,sub)}}}while(parts.length>0);if(resultLength===result.size){for(const[k,o]of currentMap){result.set(k,o)}}return subject}function build(subject,definition,defaultValue){if(definition===undefined)return defaultValue?defaultValue:subject;validateString(definition);const regexp=/(?<placeholder>\${(?<path>[a-z\^A-Z.\-_0-9]*)})/gm;const array=[...definition.matchAll(regexp)];let finder=new Pathfinder(subject);if(array.length===0){return finder.getVia(definition)}array.forEach(a=>{let groups=a?.["groups"];let placeholder=groups?.["placeholder"];if(placeholder===undefined)return;let path=groups?.["path"];let v=finder.getVia(path);if(v===undefined)v=defaultValue;definition=definition.replaceAll(placeholder,v)});return definition}assignToNamespace("Monster.Data",buildMap);export{Monster,buildMap};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{internalSymbol}from"../constants.js";import{assignToNamespace,Monster}from"../namespace.js";import{Base}from"../types/base.js";import{parseDataURL}from"../types/dataurl.js";import{isString}from"../types/is.js";import{ProxyObserver}from"../types/proxyobserver.js";import{validateObject}from"../types/validate.js";import{extend}from"./extend.js";import{Pathfinder}from"./pathfinder.js";const internalDataSymbol=Symbol("internalData");class Datasource extends Base{constructor(){super(),this[internalSymbol]=new ProxyObserver({options:extend({},this.defaults)}),this[internalDataSymbol]=new ProxyObserver({})}attachObserver(t){return this[internalDataSymbol].attachObserver(t),this}detachObserver(t){return this[internalDataSymbol].detachObserver(t),this}containsObserver(t){return this[internalDataSymbol].containsObserver(t)}get defaults(){return{}}setOption(t,e){return new Pathfinder(this[internalSymbol].getSubject().options).setVia(t,e),this}setOptions(t){isString(t)&&(t=parseOptionsJSON(t));var e=this;return extend(e[internalSymbol].getSubject().options,e.defaults,t),e}getOption(t,e){let r;try{r=new Pathfinder(this[internalSymbol].getRealSubject().options).getVia(t)}catch(t){}return void 0===r?e:r}read(){throw new Error("this method must be implemented by derived classes")}write(){throw new Error("this method must be implemented by derived classes")}get(){return this[internalDataSymbol].getRealSubject()}set(t){return this[internalDataSymbol].setSubject(t),this}}function parseOptionsJSON(e){if(isString(e)){try{e=parseDataURL(e).content}catch(t){}try{var t=JSON.parse(e);return validateObject(t),t}catch(t){throw new Error("the options does not contain a valid json definition (actual: "+e+").")}}return{}}assignToNamespace("Monster.Data",Datasource);export{Monster,Datasource};
\ No newline at end of file
'use strict';import{internalSymbol}from"../constants.js";import{assignToNamespace,Monster}from"../namespace.js";import{Base}from"../types/base.js";import{parseDataURL}from"../types/dataurl.js";import{isString}from"../types/is.js";import{ProxyObserver}from"../types/proxyobserver.js";import{validateObject}from"../types/validate.js";import{extend}from"./extend.js";import{Pathfinder}from"./pathfinder.js";const internalDataSymbol=Symbol("internalData");class Datasource extends Base{constructor(){super();this[internalSymbol]=new ProxyObserver({"options":extend({},this.defaults)});this[internalDataSymbol]=new ProxyObserver({})}attachObserver(observer){this[internalDataSymbol].attachObserver(observer);return this}detachObserver(observer){this[internalDataSymbol].detachObserver(observer);return this}containsObserver(observer){return this[internalDataSymbol].containsObserver(observer)}get defaults(){return{}}setOption(path,value){new Pathfinder(this[internalSymbol].getSubject()["options"]).setVia(path,value);return this}setOptions(options){if(isString(options)){options=parseOptionsJSON(options)}const self=this;extend(self[internalSymbol].getSubject()["options"],self.defaults,options);return self}getOption(path,defaultValue){let value;try{value=new Pathfinder(this[internalSymbol].getRealSubject()["options"]).getVia(path)}catch(e){}if(value===undefined)return defaultValue;return value}read(){throw new Error("this method must be implemented by derived classes")}write(){throw new Error("this method must be implemented by derived classes")}get(){const self=this;return self[internalDataSymbol].getRealSubject()}set(data){const self=this;self[internalDataSymbol].setSubject(data);return self}}function parseOptionsJSON(data){if(isString(data)){try{let dataUrl=parseDataURL(data);data=dataUrl.content}catch(e){}try{let obj=JSON.parse(data);validateObject(obj);return obj}catch(e){throw new Error("the options does not contain a valid json definition (actual: "+data+").")}}return{}}assignToNamespace("Monster.Data",Datasource);export{Monster,Datasource};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";const namespace="Monster.Data.Datasource";export{namespace};
\ No newline at end of file
'use strict';export const namespace="Monster.Data.Datasource";
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{internalSymbol}from"../../constants.js";import{assignToNamespace,Monster}from"../../namespace.js";import{isObject}from"../../types/is.js";import{Datasource}from"../datasource.js";import{Pathfinder}from"../pathfinder.js";import{Pipe}from"../pipe.js";import{WriteError}from"./restapi/writeerror.js";class RestAPI extends Datasource{constructor(t,e){super();const r={};isObject(t)&&(r.read=t),isObject(e)&&(r.write=e),this.setOptions(r)}get defaults(){return Object.assign({},super.defaults,{write:{init:{method:"POST"},acceptedStatus:[200,201],url:void 0,mapping:{transformer:void 0,callbacks:[]},report:{path:void 0}},read:{init:{method:"GET"},acceptedStatus:[200],url:void 0,mapping:{transformer:void 0,callbacks:[]}}})}read(){const s=this;let n,t=s.getOption("read.init");return isObject(t)||(t={}),fetch(s.getOption("read.url"),t).then(t=>{n=t;const e=s.getOption("read.acceptedStatus",[200]);if(-1===e.indexOf(t.status))throw Error("the data cannot be read (response "+t.status+")");return t.text()}).then(e=>{let t;try{t=JSON.parse(e)}catch(t){throw 100<e.length&&(e=e.substring(0,97)+"..."),new Error("the response does not contain a valid json (actual: "+e+").")}e=s.getOption("read.mapping.transformer");if(void 0!==e){const r=new Pipe(e);t=r.run(t)}return s.set(t),n})}write(){const e=this;let t=e.getOption("write.init");isObject(t)||(t={}),"object"!=typeof t.headers&&(t.headers={"Content-Type":"application/json"});let r=e.get();var s=e.getOption("write.mapping.transformer");if(void 0!==s){const a=new Pipe(s);r=a.run(r)}var n=e.getOption("write.sheathing.object"),i=e.getOption("write.sheathing.path");let o=e.getOption("write.report.path");return n&&i&&(s=r,r=n,new Pathfinder(r).setVia(i,s)),t.body=JSON.stringify(r),fetch(e.getOption("write.url"),t).then(s=>{const t=e.getOption("write.acceptedStatus",[200,2001]);return-1===t.indexOf(s.status)?s.text().then(e=>{let t,r;try{t=JSON.parse(e),r=new Pathfinder(t).getVia(o)}catch(t){throw 100<e.length&&(e=e.substring(0,97)+"..."),new Error("the response does not contain a valid json (actual: "+e+").")}throw new WriteError("the data cannot be written (response "+s.status+")",s,r)}):s})}getClone(){return new RestAPI(this[internalSymbol].getRealSubject().options.read,this[internalSymbol].getRealSubject().options.write)}}assignToNamespace("Monster.Data.Datasource",RestAPI);export{Monster,RestAPI};
\ No newline at end of file
'use strict';import{internalSymbol}from"../../constants.js";import{assignToNamespace,Monster}from"../../namespace.js";import{isObject}from"../../types/is.js";import{Datasource}from"../datasource.js";import{Pathfinder}from"../pathfinder.js";import{Pipe}from"../pipe.js";import{WriteError}from"./restapi/writeerror.js";class RestAPI extends Datasource{constructor(readDefinition,writeDefinition){super();const options={};if(isObject(readDefinition))options.read=readDefinition;if(isObject(writeDefinition))options.write=writeDefinition;this.setOptions(options)}get defaults(){return Object.assign({},super.defaults,{write:{init:{method:"POST"},acceptedStatus:[200,201],url:undefined,mapping:{transformer:undefined,callbacks:[]},report:{path:undefined}},read:{init:{method:"GET"},acceptedStatus:[200],url:undefined,mapping:{transformer:undefined,callbacks:[]}}})}read(){const self=this;let response;let init=self.getOption("read.init");if(!isObject(init))init={};return fetch(self.getOption("read.url"),init).then(resp=>{response=resp;const acceptedStatus=self.getOption("read.acceptedStatus",[200]);if(acceptedStatus.indexOf(resp.status)===-1){throw Error("the data cannot be read (response "+resp.status+")")}return resp.text()}).then(body=>{let obj;try{obj=JSON.parse(body)}catch(e){if(body.length>100){body=body.substring(0,97)+"..."}throw new Error("the response does not contain a valid json (actual: "+body+").")}let transformation=self.getOption("read.mapping.transformer");if(transformation!==undefined){const pipe=new Pipe(transformation);obj=pipe.run(obj)}self.set(obj);return response})}write(){const self=this;let init=self.getOption("write.init");if(!isObject(init))init={};if(typeof init["headers"]!=="object"){init["headers"]={"Content-Type":"application/json"}}let obj=self.get();let transformation=self.getOption("write.mapping.transformer");if(transformation!==undefined){const pipe=new Pipe(transformation);obj=pipe.run(obj)}let sheathingObject=self.getOption("write.sheathing.object");let sheathingPath=self.getOption("write.sheathing.path");let reportPath=self.getOption("write.report.path");if(sheathingObject&&sheathingPath){const sub=obj;obj=sheathingObject;new Pathfinder(obj).setVia(sheathingPath,sub)}init["body"]=JSON.stringify(obj);return fetch(self.getOption("write.url"),init).then(response=>{const acceptedStatus=self.getOption("write.acceptedStatus",[200,2001]);if(acceptedStatus.indexOf(response.status)===-1){return response.text().then(body=>{let obj,validation;try{obj=JSON.parse(body);validation=new Pathfinder(obj).getVia(reportPath)}catch(e){if(body.length>100){body=body.substring(0,97)+"..."}throw new Error("the response does not contain a valid json (actual: "+body+").")}throw new WriteError("the data cannot be written (response "+response.status+")",response,validation)})}return response})}getClone(){const self=this;return new RestAPI(self[internalSymbol].getRealSubject()["options"].read,self[internalSymbol].getRealSubject()["options"].write)}}assignToNamespace("Monster.Data.Datasource",RestAPI);export{Monster,RestAPI};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{internalSymbol}from"../../../constants.js";import{assignToNamespace,Monster}from"../../../namespace.js";class WriteError extends Error{constructor(r,e,t){super(r),this[internalSymbol]={response:e,validation:t}}getResponse(){return this[internalSymbol].response}getValidation(){return this[internalSymbol].validation}}assignToNamespace("Monster.Data.Datasource.RestAPI",WriteError);export{Monster,WriteError};
\ No newline at end of file
'use strict';import{internalSymbol}from"../../../constants.js";import{assignToNamespace,Monster}from"../../../namespace.js";class WriteError extends Error{constructor(message,response,validation){super(message);this[internalSymbol]={response:response,validation:validation}}getResponse(){return this[internalSymbol]["response"]}getValidation(){return this[internalSymbol]["validation"]}}assignToNamespace("Monster.Data.Datasource.RestAPI",WriteError);export{Monster,WriteError};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{internalSymbol}from"../../constants.js";import{assignToNamespace,Monster}from"../../namespace.js";import{validateString}from"../../types/validate.js";import{Datasource}from"../datasource.js";const storageObjectSymbol=Symbol("storageObject");class Storage extends Datasource{constructor(e){super(),this.setOption("key",validateString(e))}get defaults(){return Object.assign({},super.defaults,{key:void 0})}[storageObjectSymbol](){throw new Error("this method must be implemented by derived classes")}read(){const o=this,s=o[storageObjectSymbol]();return new Promise(function(e){var t=JSON.parse(s.getItem(o.getOption("key")));o.set(t??{}),e()})}write(){const o=this,s=o[storageObjectSymbol]();return new Promise(function(e){var t=o.get();void 0===t?s.removeItem(o.getOption("key")):s.setItem(o.getOption("key"),JSON.stringify(t)),e()})}getClone(){return new Storage(this[internalSymbol].getRealSubject().options.key)}}assignToNamespace("Monster.Data.Datasource",Storage);export{Monster,Storage,storageObjectSymbol};
\ No newline at end of file
'use strict';import{internalSymbol}from"../../constants.js";import{assignToNamespace,Monster}from"../../namespace.js";import{validateString}from"../../types/validate.js";import{Datasource}from"../datasource.js";const storageObjectSymbol=Symbol("storageObject");class Storage extends Datasource{constructor(key){super();this.setOption("key",validateString(key))}get defaults(){return Object.assign({},super.defaults,{key:undefined})}[storageObjectSymbol](){throw new Error("this method must be implemented by derived classes")}read(){const self=this;const storage=self[storageObjectSymbol]();return new Promise(function(resolve){const data=JSON.parse(storage.getItem(self.getOption("key")));self.set(data??{});resolve()})}write(){const self=this;const storage=self[storageObjectSymbol]();return new Promise(function(resolve){const data=self.get();if(data===undefined){storage.removeItem(self.getOption("key"))}else{storage.setItem(self.getOption("key"),JSON.stringify(data))}resolve()})}getClone(){const self=this;return new Storage(self[internalSymbol].getRealSubject()["options"].key)}}assignToNamespace("Monster.Data.Datasource",Storage);export{Monster,Storage,storageObjectSymbol};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{internalSymbol}from"../../../constants.js";import{assignToNamespace,Monster}from"../../../namespace.js";import{getGlobalObject}from"../../../types/global.js";import{Datasource}from"../../datasource.js";import{Storage,storageObjectSymbol}from"../storage.js";class LocalStorage extends Storage{[storageObjectSymbol](){return getGlobalObject("localStorage")}getClone(){return new LocalStorage(this[internalSymbol].getRealSubject().options.key)}}assignToNamespace("Monster.Data.Datasource.Storage",LocalStorage);export{Monster,LocalStorage};
\ No newline at end of file
'use strict';import{internalSymbol}from"../../../constants.js";import{assignToNamespace,Monster}from"../../../namespace.js";import{getGlobalObject}from"../../../types/global.js";import{Datasource}from"../../datasource.js";import{Storage,storageObjectSymbol}from"../storage.js";class LocalStorage extends Storage{[storageObjectSymbol](){return getGlobalObject("localStorage")}getClone(){const self=this;return new LocalStorage(self[internalSymbol].getRealSubject()["options"].key)}}assignToNamespace("Monster.Data.Datasource.Storage",LocalStorage);export{Monster,LocalStorage};
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";const namespace="Monster.Data.Datasource.Storage";export{namespace};
\ No newline at end of file
'use strict';export const namespace="Monster.Data.Datasource.Storage";
/** Monster 1.25.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{internalSymbol}from"../../../constants.js";import{assignToNamespace,Monster}from"../../../namespace.js";import{getGlobalObject}from"../../../types/global.js";import{Datasource}from"../../datasource.js";import{Storage,storageObjectSymbol}from"../storage.js";class SessionStorage extends Storage{[storageObjectSymbol](){return getGlobalObject("sessionStorage")}getClone(){return new SessionStorage(this[internalSymbol].getRealSubject().options.key)}}assignToNamespace("Monster.Data.Datasource.Storage",SessionStorage);export{Monster,SessionStorage};
\ No newline at end of file
'use strict';import{internalSymbol}from"../../../constants.js";import{assignToNamespace,Monster}from"../../../namespace.js";import{getGlobalObject}from"../../../types/global.js";import{Datasource}from"../../datasource.js";import{Storage,storageObjectSymbol}from"../storage.js";class SessionStorage extends Storage{[storageObjectSymbol](){return getGlobalObject("sessionStorage")}getClone(){const self=this;return new SessionStorage(self[internalSymbol].getRealSubject()["options"].key)}}assignToNamespace("Monster.Data.Datasource.Storage",SessionStorage);export{Monster,SessionStorage};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment