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

Monster/ci/6f90be11 a84e 4782 9cec 2afc05fbef98

parent 9132e25b
No related branches found
No related tags found
No related merge requests found
Showing
with 53 additions and 41 deletions
......@@ -63,7 +63,7 @@ import {Monster} from '../namespace.js';
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/object.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/object.js';
* console.log(new Monster.Types.Object())
* console.log(new Monster.Types.Object())
* </script>
......@@ -73,7 +73,7 @@ import {Monster} from '../namespace.js';
*
* ```
* <script type="module">
* import {Object} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/object.js';
* import {Object} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/object.js';
* console.log(new Object())
* console.log(new Object())
* </script>
......
......@@ -63,7 +63,7 @@ import '../types/object.js';
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/observer.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/observer.js';
* console.log(new Monster.Types.Observer())
* console.log(new Monster.Types.Observer())
* </script>
......@@ -73,7 +73,7 @@ import '../types/object.js';
*
* ```
* <script type="module">
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/observer.js';
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/observer.js';
* console.log(Observer())
* console.log(Observer())
* </script>
......
......@@ -63,7 +63,7 @@ import '../types/object.js';
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/observerlist.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/observerlist.js';
* console.log(new Monster.Types.ObserverList())
* console.log(new Monster.Types.ObserverList())
* </script>
......@@ -73,7 +73,7 @@ import '../types/object.js';
*
* ```
* <script type="module">
* import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/observerlist.js';
* import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/observerlist.js';
* console.log(ObserverList())
* console.log(ObserverList())
* </script>
......
......@@ -63,7 +63,7 @@ import {isPrimitive, isBoolean, isString, isObject, isArray, isFunction} from '.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(Monster.Types.validatePrimitive('2')) // ↦ undefined
* console.log(Monster.Types.validatePrimitive([])) // ↦ TypeError
* </script>
......@@ -73,7 +73,7 @@ import {isPrimitive, isBoolean, isString, isObject, isArray, isFunction} from '.
*
* ```
* <script type="module">
* import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(validatePrimitive('2')) // ↦ undefined
* console.log(validatePrimitive([])) // ↦ TypeError
* </script>
......@@ -102,7 +102,7 @@ function validatePrimitive(value) {
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(Monster.Types.validateBoolean(true)) // ↦ undefined
* console.log(Monster.Types.validateBoolean('2')) // ↦ TypeError
* console.log(Monster.Types.validateBoolean([])) // ↦ TypeError
......@@ -113,7 +113,7 @@ function validatePrimitive(value) {
*
* ```
* <script type="module">
* import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(validateBoolean(false)) // ↦ undefined
* console.log(validateBoolean('2')) // ↦ TypeError
* console.log(validateBoolean([])) // ↦ TypeError
......@@ -141,7 +141,7 @@ function validateBoolean(value) {
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(Monster.Types.validateString('2')) // ↦ undefined
* console.log(Monster.Types.validateString([])) // ↦ TypeError
* </script>
......@@ -151,7 +151,7 @@ function validateBoolean(value) {
*
* ```
* <script type="module">
* import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(validateString('2')) // ↦ undefined
* console.log(validateString([])) // ↦ TypeError
* </script>
......@@ -179,7 +179,7 @@ function validateString(value) {
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(Monster.Types.validateObject({})) // ↦ undefined
* console.log(Monster.Types.validateObject('2')) // ↦ TypeError
* console.log(Monster.Types.validateObject([])) // ↦ TypeError
......@@ -190,7 +190,7 @@ function validateString(value) {
*
* ```
* <script type="module">
* import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(validateObject({})) // ↦ undefined
* console.log(validateObject('2')) // ↦ TypeError
* console.log(validateObject([])) // ↦ TypeError
......@@ -217,7 +217,7 @@ function validateObject(value) {
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(Monster.Types.validateArray('2')) // ↦ TypeError
* console.log(Monster.Types.validateArray([])) // ↦ undefined
* </script>
......@@ -227,7 +227,7 @@ function validateObject(value) {
*
* ```
* <script type="module">
* import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(validateArray('2')) // ↦ TypeError
* console.log(validateArray([])) // ↦ undefined
* </script>
......@@ -253,7 +253,7 @@ function validateArray(value) {
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(Monster.Types.validateFunction(()=>{})) // ↦ undefined
* console.log(Monster.Types.validateFunction('2')) // ↦ TypeError
* console.log(Monster.Types.validateFunction([])) // ↦ TypeError
......@@ -264,7 +264,7 @@ function validateArray(value) {
*
* ```
* <script type="module">
* import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/validate.js';
* import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/validate.js';
* console.log(validateFunction(()=>{})) // ↦ undefined
* console.log(validateFunction('2')) // ↦ TypeError
* console.log(validateFunction([])) // ↦ TypeError
......
......@@ -59,7 +59,7 @@ import '../types/object.js';
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/version.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/version.js';
* console.log(new Monster.Types.Version('1.2.3')) // ↦ 1.2.3
* console.log(new Monster.Types.Version('1')) // ↦ 1.0.0
* </script>
......@@ -69,7 +69,7 @@ import '../types/object.js';
*
* ```
* <script type="module">
* import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/version.js';
* import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/version.js';
* console.log(new Version('1.2.3')) // ↦ 1.2.3
* console.log(new Version('1')) // ↦ 1.0.0
* </script>
......@@ -199,7 +199,7 @@ let monsterVersion;
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/version.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/version.js';
* console.log(Monster.getVersion())
* console.log(Monster.getVersion())
* </script>
......@@ -209,7 +209,7 @@ let monsterVersion;
*
* ```
* <script type="module">
* import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/version.js';
* import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/types/version.js';
* console.log(getVersion())
* console.log(getVersion())
* </script>
......@@ -226,7 +226,7 @@ function getVersion() {
return monsterVersion;
}
/**#@+ dont touch, replaced by make with package.json version */
monsterVersion = new Version('1.0.14')
monsterVersion = new Version('1.1.0')
/**#@-*/
return monsterVersion;
......
......@@ -70,7 +70,7 @@ import {isObject, isFunction, isPrimitive, isArray} from '../types/is.js';
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/util/clone.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/util/clone.js';
* console.log(Monster.Util.clone({}))
* </script>
* ```
......@@ -79,7 +79,7 @@ import {isObject, isFunction, isPrimitive, isArray} from '../types/is.js';
*
* ```
* <script type="module">
* import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/util/clone.js';
* import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/util/clone.js';
* console.log(clone({}))
* </script>
* ```
......
......@@ -63,7 +63,7 @@ import {validateObject} from '../types/validate.js';
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/util/freeze.js';
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/util/freeze.js';
* console.log(Monster.Util.deepFreeze({}))
* </script>
* ```
......@@ -72,7 +72,7 @@ import {validateObject} from '../types/validate.js';
*
* ```
* <script type="module">
* import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/util/freeze.js';
* import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.1.0/dist/modules/util/freeze.js';
* console.log(deepFreeze({}))
* </script>
* ```
......
# Changelog
All notable changes to this project will be documented in this file.
## [1.1.0] - 202106-28
### Added
- Monster.Types
- Monster.Util
- Monster.Math
......@@ -29,7 +29,7 @@ thus supports all browsers that are compatible with ES5.
```
<script type="module">
import {Monster} from 'https://unpkg.com/@schukai/monster@1.0.14/dist/modules/monster.js';
import {Monster} from 'https://unpkg.com/@schukai/monster@1.0.15/dist/modules/monster.js';
console.log(Module.getVersion())
</script>
```
......@@ -38,7 +38,7 @@ nomodule for backwards compatibility
```
<script type="module" src="module.mjs"></script>
<script nomodule src="https://unpkg.com/@schukai/monster@1.0.14/dist/monster.js"></script>
<script nomodule src="https://unpkg.com/@schukai/monster@1.0.15/dist/monster.js"></script>
```
## Documentation
......@@ -66,5 +66,5 @@ you can also purchase a commercial licence
## Changelog
Detailed changes for each release are documented in
the [release notes](https://gitlab.schukai.com/oss/libraries/javascript/monster/-/releases).
the [CHANGELOG](CHANGELOG).
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";function random(min,max){if(min===undefined){min=0}if(max===undefined){max=MAX}if(max<min){throw new Error("max must be greater than min")}return Math.round(create(min,max))}var MAX=1000000000;Math.log2=Math.log2||function(n){return Math.log(n)/Math.log(2)};function create(min,max){var crypt;if(typeof global!=="undefined"){crypt=global?.["crypto"]||global?.["msCrypto"]}else{crypt=typeof crypto!=="undefined"?crypto:undefined}if(typeof crypt==="undefined"){throw new Error("missing crypt")}let rval=0;const range=max-min;if(range<2){return min}const bitsNeeded=Math.ceil(Math.log2(range));if(bitsNeeded>53){throw new Error("we cannot generate numbers larger than 53 bits.")}const bytesNeeded=Math.ceil(bitsNeeded/8);const mask=Math.pow(2,bitsNeeded)-1;const byteArray=new Uint8Array(bytesNeeded);crypt.getRandomValues(byteArray);let p=(bytesNeeded-1)*8;for(var i=0;i<bytesNeeded;i++){rval+=byteArray[i]*Math.pow(2,p);p-=8}rval=rval&mask;if(rval>=range){return create(min,max)}return min+rval}Monster.assignToNamespace("Monster.Math",random);export{Monster,random};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"./namespace.js";import"./types/id.js";import"./types/is.js";import"./types/object.js";import"./types/version.js";import"./types/observer.js";import"./types/observerlist.js";import"./types/validate.js";import"./math/random.js";import"./util/clone.js";import"./util/freeze.js";Monster.Util.deepFreeze(Monster);export{Monster};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';class Namespace{constructor(namespace){if(namespace===undefined||typeof namespace!=="string"){throw new Error("namespace is not a string")}this.namespace=namespace}getNamespace(){return this.namespace}toString(){return this.getNamespace()}}export const Monster=new Namespace("Monster");assignToNamespace("Monster",assignToNamespace);function assignToNamespace(ns,...obj){let current=namespaceFor(ns.split("."));for(let i=0,l=obj.length;i<l;i++){current[objectName(obj[i])]=obj[i]}}function objectName(fn){try{if(typeof fn!=="function"){throw new Error("the first argument is not a function or class.")}if(fn.hasOwnProperty("name")){return fn.name}if("function"===typeof fn.toString){let s=fn.toString();let f=s.match(/^\s*function\s+([^\s(]+)/);if(Array.isArray(f)&&typeof f[1]==="string"){return f[1]}let c=s.match(/^\s*class\s+([^\s(]+)/);if(Array.isArray(c)&&typeof c[1]==="string"){return c[1]}}}catch(e){throw new Error("exception "+e)}throw new Error("the name of the class or function cannot be resolved.")}function namespaceFor(parts){var space=Monster,ns="Monster";for(let i=0;i<parts.length;i++){if("Monster"===parts[i]){continue}ns+="."+parts[i];if(!space.hasOwnProperty(parts[i])){space[parts[i]]=new Namespace(ns)}space=space[parts[i]]}return space}export{assignToNamespace};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";import"../types/object.js";let internalCounter=0;class ID extends Monster.Types.Object{constructor(){super();internalCounter+=1;this.id=global.btoa(Monster.Math.random(1,10000)).replace(/=/g,"").replace(/^[0-9]+/,"X")+internalCounter}toString(){return this.id}}Monster.assignToNamespace("Monster.Types",ID);export{Monster,ID};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";function isPrimitive(value){var type;if(value===undefined||value===null){return true}type=typeof value;if(type==="string"||type==="number"||type==="boolean"||type==="symbol"){return true}return false}function isBoolean(value){if(value===true||value===false){return true}return false}function isString(value){if(value===undefined||typeof value!=="string"){return false}return true}function isObject(value){if(isArray(value))return false;if(isPrimitive(value))return false;if(typeof value==="object"){return true}return false}function isArray(value){if(Array.isArray(value)){return true}return false}function isFunction(value){if(isArray(value))return false;if(isPrimitive(value))return false;if(typeof value==="function"){return true}return false}Monster.assignToNamespace("Monster.Types",isPrimitive,isBoolean,isString,isObject,isArray,isFunction);export{Monster,isPrimitive,isBoolean,isString,isObject,isArray,isFunction};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";class Object{constructor(){}toString(){return JSON.stringify(this)}}Monster.assignToNamespace("Monster.Types",Object);export{Monster,Object};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";import"../types/object.js";class Observer extends Monster.Types.Object{constructor(callback,...args){super();if(typeof callback!=="function"){throw new Error("observer callback must be a function")}this.callback=callback;this.arguments=args;this.tags=new Set}addTag(tag){this.tags.add(tag);return this}removeTag(tag){this.tags.delete(tag);return this}getTags(){return this.tags}hasTag(tag){return this.tags.has(tag)}update(subject){let self=this;return new Promise(function(resolve,reject){if(!(subject instanceof Object)){reject("subject must be an object")}let result=self.callback.apply(subject,self.arguments);resolve(result)})}}Monster.assignToNamespace("Monster.Types",Observer);export{Monster,Observer};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";import"../types/object.js";class ObserverList extends Monster.Types.Object{constructor(){super();this.observers=[]}attach(observer){checkIsObserver(observer);this.observers.push(observer);return this}detach(observer){checkIsObserver(observer);var i=0,l=this.observers.length;for(;i<l;i++){if(this.observers[i]===observer){this.observers.splice(i,1)}}return this}contains(observer){checkIsObserver(observer);var i=0,l=this.observers.length;for(;i<l;i++){if(this.observers[i]===observer){return true}}return false}notify(subject){let pomises=[];var i=0,l=this.observers.length;for(;i<l;i++){pomises.push(this.observers[i].update(subject))}return Promise.all(pomises)}}function checkIsObserver(observer){if(!(observer instanceof Monster.Types.Observer)){throw new Error("argument must be instance of observer")}return true}Monster.assignToNamespace("Monster.Types",ObserverList);export{Monster,ObserverList};
/** Monster 1.0.14, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
/** Monster 1.1.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
'use strict';import{Monster}from"../namespace.js";import{isPrimitive,isBoolean,isString,isObject,isArray,isFunction}from"../types/is.js";function validatePrimitive(value){if(!isPrimitive(value)){throw new TypeError("value is not a primitive")}}function validateBoolean(value){if(!isBoolean(value)){throw new TypeError("value is not a boolean")}}function validateString(value){if(!isString(value)){throw new TypeError("value is not a string")}}function validateObject(value){if(!isObject(value)){throw new TypeError("value is not a object")}}function validateArray(value){if(!isArray(value)){throw new TypeError("value is not not a array")}}function validateFunction(value){if(!isFunction(value)){throw new TypeError("value is not a function")}}Monster.assignToNamespace("Monster.Types",validatePrimitive,validateBoolean,validateString,validateObject,validateArray,validateFunction);export{Monster,validatePrimitive,validateBoolean,validateString,validateObject,validateArray,validateFunction};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment