Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 1.31
  • master
  • 1.10.0
  • 1.30.1
  • 1.31.0
  • 1.8.0
  • 1.9.0
  • 3.100.0
  • 3.100.1
  • 3.100.10
  • 3.100.11
  • 3.100.12
  • 3.100.13
  • 3.100.14
  • 3.100.15
  • 3.100.16
  • 3.100.17
  • 3.100.18
  • 3.100.19
  • 3.100.2
  • 3.100.20
  • 3.100.3
  • 3.100.4
  • 3.100.5
  • 3.100.6
  • 3.100.7
  • 3.100.8
  • 3.100.9
  • 3.101.0
  • 3.101.1
  • 3.101.2
  • 3.101.3
  • 3.102.0
  • 3.102.1
  • 3.102.2
  • 3.102.3
  • 3.102.4
  • 3.102.5
  • 3.102.6
  • 3.103.0
  • 3.103.1
  • 3.104.0
  • 3.104.1
  • 3.105.0
  • 3.105.1
  • 3.105.2
  • 3.106.0
  • 3.106.1
  • 3.107.0
  • 3.108.0
  • 3.108.1
  • 3.108.2
  • 3.108.3
  • 3.108.4
  • 3.108.5
  • 3.109.0
  • 3.110.0
  • 3.110.1
  • 3.110.2
  • 3.110.3
  • 3.110.4
  • 3.111.0
  • 3.112.0
  • 3.112.1
  • 3.112.2
  • 3.112.3
  • 3.112.4
  • 3.113.0
  • 3.114.0
  • 3.114.1
  • 3.114.2
  • 3.114.3
  • 3.114.4
  • 3.114.5
  • 3.114.6
  • 3.114.7
  • 3.115.0
  • 3.115.1
  • 3.115.2
  • 3.115.3
  • 3.115.4
  • 3.116.0
  • 3.116.1
  • 3.117.0
  • 3.117.1
  • 3.117.2
  • 3.117.3
  • 3.118.0
  • 3.118.1
  • 3.119.0
  • 3.120.0
  • 3.121.0
  • 3.51.5
  • 3.52.0
  • 3.52.1
  • 3.53.0
  • 3.54.0
  • 3.55.0
  • 3.55.1
  • 3.55.2
  • 3.55.3
  • 3.55.4
102 results

Target

Select target project
  • oss/libraries/javascript/monster
1 result
Select Git revision
  • 1.31
  • master
  • 1.10.0
  • 1.30.1
  • 1.31.0
  • 1.8.0
  • 1.9.0
  • 3.100.0
  • 3.100.1
  • 3.100.10
  • 3.100.11
  • 3.100.12
  • 3.100.13
  • 3.100.14
  • 3.100.15
  • 3.100.16
  • 3.100.17
  • 3.100.18
  • 3.100.19
  • 3.100.2
  • 3.100.20
  • 3.100.3
  • 3.100.4
  • 3.100.5
  • 3.100.6
  • 3.100.7
  • 3.100.8
  • 3.100.9
  • 3.101.0
  • 3.101.1
  • 3.101.2
  • 3.101.3
  • 3.102.0
  • 3.102.1
  • 3.102.2
  • 3.102.3
  • 3.102.4
  • 3.102.5
  • 3.102.6
  • 3.103.0
  • 3.103.1
  • 3.104.0
  • 3.104.1
  • 3.105.0
  • 3.105.1
  • 3.105.2
  • 3.106.0
  • 3.106.1
  • 3.107.0
  • 3.108.0
  • 3.108.1
  • 3.108.2
  • 3.108.3
  • 3.108.4
  • 3.108.5
  • 3.109.0
  • 3.110.0
  • 3.110.1
  • 3.110.2
  • 3.110.3
  • 3.110.4
  • 3.111.0
  • 3.112.0
  • 3.112.1
  • 3.112.2
  • 3.112.3
  • 3.112.4
  • 3.113.0
  • 3.114.0
  • 3.114.1
  • 3.114.2
  • 3.114.3
  • 3.114.4
  • 3.114.5
  • 3.114.6
  • 3.114.7
  • 3.115.0
  • 3.115.1
  • 3.115.2
  • 3.115.3
  • 3.115.4
  • 3.116.0
  • 3.116.1
  • 3.117.0
  • 3.117.1
  • 3.117.2
  • 3.117.3
  • 3.118.0
  • 3.118.1
  • 3.119.0
  • 3.120.0
  • 3.121.0
  • 3.51.5
  • 3.52.0
  • 3.52.1
  • 3.53.0
  • 3.54.0
  • 3.55.0
  • 3.55.1
  • 3.55.2
  • 3.55.3
  • 3.55.4
102 results
Show changes
Showing
with 405 additions and 436 deletions
......@@ -5,12 +5,12 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import {Base} from '../types/base.mjs';
import { Base } from "../types/base.mjs";
import { validateInstance, validateInteger } from "../types/validate.mjs";
import { LogEntry } from "./logentry.mjs";
import { ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN } from "./logger.mjs";
export {Handler}
export { Handler };
/**
* The log handler is the interface between the log entries and the log listeners.
......@@ -59,7 +59,7 @@ export {Handler}
* @since 1.5.0
*/
setLogLevel(loglevel) {
validateInteger(loglevel)
validateInteger(loglevel);
this.loglevel = loglevel;
return this;
}
......@@ -83,7 +83,7 @@ export {Handler}
setAll() {
this.setLogLevel(ALL);
return this;
};
}
/**
* Set log level to Trace
......@@ -94,7 +94,7 @@ export {Handler}
setTrace() {
this.setLogLevel(TRACE);
return this;
};
}
/**
* Set log level to Debug
......@@ -105,7 +105,7 @@ export {Handler}
setDebug() {
this.setLogLevel(DEBUG);
return this;
};
}
/**
* Set log level to Info
......@@ -116,7 +116,7 @@ export {Handler}
setInfo() {
this.setLogLevel(INFO);
return this;
};
}
/**
* Set log level to Warn
......@@ -127,7 +127,7 @@ export {Handler}
setWarn() {
this.setLogLevel(WARN);
return this;
};
}
/**
* Set log level to Error
......@@ -138,7 +138,7 @@ export {Handler}
setError() {
this.setLogLevel(ERROR);
return this;
};
}
/**
* Set log level to Fatal
......@@ -149,8 +149,7 @@ export {Handler}
setFatal() {
this.setLogLevel(FATAL);
return this;
};
}
/**
* Set log level to Off
......@@ -161,7 +160,5 @@ export {Handler}
setOff() {
this.setLogLevel(OFF);
return this;
};
}
}
......@@ -6,11 +6,11 @@
*/
import { getGlobalObject } from "../../types/global.mjs";
import {Handler} from '../handler.mjs';
import { Handler } from "../handler.mjs";
import { LogEntry } from "../logentry.mjs";
import { TRACE, WARN, DEBUG, ERROR, FATAL, INFO } from "../logger.mjs";
export {ConsoleHandler}
export { ConsoleHandler };
/**
* You can create an object of the class simply by using the namespace `new Monster.Logging.Handler.ConsoleHandler()`.
......@@ -36,7 +36,7 @@ class ConsoleHandler extends Handler {
*/
log(entry) {
if (super.log(entry)) {
let console = getGlobalObject('console');
let console = getGlobalObject("console");
if (!console) return false;
if (!console.error) console.error = console.log;
......@@ -58,7 +58,6 @@ class ConsoleHandler extends Handler {
default:
console.log(entry.toString());
break;
}
return true;
......@@ -66,7 +65,4 @@ class ConsoleHandler extends Handler {
return false;
}
}
......@@ -5,10 +5,10 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import {Base} from '../types/base.mjs';
import {validateInteger} from '../types/validate.mjs';
import { Base } from "../types/base.mjs";
import { validateInteger } from "../types/validate.mjs";
export {LogEntry}
export { LogEntry };
/**
* A log entry for the logger
......@@ -28,8 +28,8 @@ export {LogEntry}
super();
validateInteger(loglevel);
this.loglevel = loglevel
this.arguments = args
this.loglevel = loglevel;
this.arguments = args;
}
/**
......@@ -37,7 +37,7 @@ export {LogEntry}
* @returns {integerr}
*/
getLogLevel() {
return this.loglevel
return this.loglevel;
}
/**
......@@ -45,7 +45,6 @@ export {LogEntry}
* @returns {array}
*/
getArguments() {
return this.arguments
return this.arguments;
}
}
......@@ -5,11 +5,11 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import {Handler} from '../logging/handler.mjs';
import {LogEntry} from '../logging/logentry.mjs';
import { Handler } from "../logging/handler.mjs";
import { LogEntry } from "../logging/logentry.mjs";
import {Base} from '../types/base.mjs';
import {validateInteger, validateObject, validateString} from '../types/validate.mjs';
import { Base } from "../types/base.mjs";
import { validateInteger, validateObject, validateString } from "../types/validate.mjs";
export { Logger, ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF };
......@@ -71,13 +71,12 @@ const OFF = 0;
* @memberOf Monster.Logging
*/
class Logger extends Base {
/**
*
*/
constructor() {
super();
this.handler = new Set;
this.handler = new Set();
}
/**
......@@ -87,12 +86,12 @@ class Logger extends Base {
* @throws {Error} the handler must be an instance of Handler
*/
addHandler(handler) {
validateObject(handler)
validateObject(handler);
if (!(handler instanceof Handler)) {
throw new Error("the handler must be an instance of Handler")
throw new Error("the handler must be an instance of Handler");
}
this.handler.add(handler)
this.handler.add(handler);
return this;
}
......@@ -103,9 +102,9 @@ class Logger extends Base {
* @throws {Error} the handler must be an instance of Handler
*/
removeHandler(handler) {
validateObject(handler)
validateObject(handler);
if (!(handler instanceof Handler)) {
throw new Error("the handler must be an instance of Handler")
throw new Error("the handler must be an instance of Handler");
}
this.handler.delete(handler);
......@@ -121,10 +120,14 @@ class Logger extends Base {
* @returns {Logger}
* @since 1.5.0
*/
logTrace() {
triggerLog.apply(this, [TRACE, ...arguments]);
logTrace(...args) {
if (typeof args !== "object" || args[0] === null) {
throw new Error("the first argument must be an object");
}
triggerLog.apply(this, [TRACE, ...args]);
return this;
};
}
/**
* log Debug message
......@@ -135,10 +138,14 @@ class Logger extends Base {
* @returns {Logger}
* @since 1.5.0
*/
logDebug() {
triggerLog.apply(this, [DEBUG, ...arguments]);
logDebug(...args) {
if (typeof args !== "object" || args[0] === null) {
throw new Error("the first argument must be an object");
}
triggerLog.apply(this, [DEBUG, ...args]);
return this;
};
}
/**
* log Info message
......@@ -150,10 +157,14 @@ class Logger extends Base {
* @returns {Logger}
* @since 1.5.0
*/
logInfo() {
triggerLog.apply(this, [INFO, ...arguments]);
logInfo(...args) {
if (typeof args !== "object" || args[0] === null) {
throw new Error("the first argument must be an object");
}
triggerLog.apply(this, [INFO, ...args]);
return this;
};
}
/**
* log Warn message
......@@ -164,10 +175,14 @@ class Logger extends Base {
* @returns {Logger}
* @since 1.5.0
*/
logWarn() {
triggerLog.apply(this, [WARN, ...arguments]);
logWarn(...args) {
if (typeof args !== "object" || args[0] === null) {
throw new Error("the first argument must be an object");
}
triggerLog.apply(this, [WARN, ...args]);
return this;
};
}
/**
* log Error message
......@@ -178,10 +193,14 @@ class Logger extends Base {
* @returns {Logger}
* @since 1.5.0
*/
logError() {
triggerLog.apply(this, [ERROR, ...arguments]);
logError(...args) {
if (typeof args !== "object" || args[0] === null) {
throw new Error("the first argument must be an object");
}
triggerLog.apply(this, [ERROR, ...args]);
return this;
};
}
/**
* log Fatal message
......@@ -192,11 +211,14 @@ class Logger extends Base {
* @returns {Logger}
* @since 1.5.0
*/
logFatal() {
triggerLog.apply(this, [FATAL, ...arguments]);
return this;
};
logFatal(...args) {
if (typeof args !== "object" || args[0] === null) {
throw new Error("the first argument must be an object");
}
triggerLog.apply(this, [FATAL, ...args]);
return this;
}
/**
* Labels
......@@ -207,17 +229,17 @@ class Logger extends Base {
getLabel(level) {
validateInteger(level);
if (level === ALL) return 'ALL';
if (level === TRACE) return 'TRACE';
if (level === DEBUG) return 'DEBUG';
if (level === INFO) return 'INFO';
if (level === WARN) return 'WARN';
if (level === ERROR) return 'ERROR';
if (level === FATAL) return 'FATAL';
if (level === OFF) return 'OFF';
if (level === ALL) return "ALL";
if (level === TRACE) return "TRACE";
if (level === DEBUG) return "DEBUG";
if (level === INFO) return "INFO";
if (level === WARN) return "WARN";
if (level === ERROR) return "ERROR";
if (level === FATAL) return "FATAL";
if (level === OFF) return "OFF";
return 'unknown';
};
return "unknown";
}
/**
* Level
......@@ -228,21 +250,18 @@ class Logger extends Base {
getLevel(label) {
validateString(label);
if (label === 'ALL') return ALL;
if (label === 'TRACE') return TRACE;
if (label === 'DEBUG') return DEBUG;
if (label === 'INFO') return INFO;
if (label === 'WARN') return WARN;
if (label === 'ERROR') return ERROR;
if (label === 'FATAL') return FATAL;
if (label === 'OFF') return OFF;
if (label === "ALL") return ALL;
if (label === "TRACE") return TRACE;
if (label === "DEBUG") return DEBUG;
if (label === "INFO") return INFO;
if (label === "WARN") return WARN;
if (label === "ERROR") return ERROR;
if (label === "FATAL") return FATAL;
if (label === "OFF") return OFF;
return 0;
};
}
}
/**
* Log triggern
......@@ -256,9 +275,8 @@ function triggerLog(loglevel, ...args) {
var logger = this;
for (let handler of logger.handler) {
handler.log(new LogEntry(loglevel, args))
handler.log(new LogEntry(loglevel, args));
}
return logger;
}
......@@ -5,9 +5,9 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import {getGlobal} from '../types/global.mjs';
import { getGlobal } from "../types/global.mjs";
export {random}
export { random };
/**
* this function uses crypt and returns a random number.
......@@ -25,7 +25,6 @@ export {random}
* @copyright schukai GmbH
*/
function random(min, max) {
if (min === undefined) {
min = 0;
}
......@@ -38,7 +37,6 @@ export {random}
}
return Math.round(create(min, max));
}
/**
......@@ -47,7 +45,9 @@ export {random}
*/
var MAX = 1000000000;
Math.log2 = Math.log2 || function (n) {
Math.log2 =
Math.log2 ||
function (n) {
return Math.log(n) / Math.log(2);
};
......@@ -65,16 +65,16 @@ function create(min, max) {
let crypt;
let globalReference = getGlobal();
crypt = globalReference?.['crypto'] || globalReference?.['msCrypto'] || globalReference?.['crypto'] || undefined;
crypt = globalReference?.["crypto"] || globalReference?.["msCrypto"] || globalReference?.["crypto"] || undefined;
if (typeof crypt === "undefined") {
throw new Error("missing crypt")
throw new Error("missing crypt");
}
let rval = 0;
const range = max - min;
if (range < 2) {
throw new Error('the distance is too small to create a random number.')
throw new Error("the distance is too small to create a random number.");
}
const bitsNeeded = Math.ceil(Math.log2(range));
......@@ -104,5 +104,4 @@ function create(min, max) {
}
return rval;
}
......@@ -14,30 +14,49 @@
*/
// development/script/grep-exports.cjs
export {IsObject} from "./constraints/isobject.mjs"
export {Invalid} from "./constraints/invalid.mjs"
export {AndOperator} from "./constraints/andoperator.mjs"
export {OrOperator} from "./constraints/oroperator.mjs"
export {AbstractConstraint} from "./constraints/abstract.mjs"
export {IsArray} from "./constraints/isarray.mjs"
export {AbstractOperator} from "./constraints/abstractoperator.mjs"
export {Valid} from "./constraints/valid.mjs"
export {Logger, ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF} from "./logging/logger.mjs"
export {LogEntry} from "./logging/logentry.mjs"
export {ConsoleHandler} from "./logging/handler/console.mjs"
export {Handler} from "./logging/handler.mjs"
export {Formatter} from "./text/formatter.mjs"
export {Stylesheet} from "./dom/resource/link/stylesheet.mjs"
export {Data} from "./dom/resource/data.mjs"
export {Link} from "./dom/resource/link.mjs"
export {Script} from "./dom/resource/script.mjs"
export {Updater, addObjectWithUpdaterToElement} from "./dom/updater.mjs"
export {CustomControl} from "./dom/customcontrol.mjs"
export {getLocaleOfDocument} from "./dom/locale.mjs"
export {Theme, getDocumentTheme} from "./dom/theme.mjs"
export {Resource, KEY_DOCUMENT, KEY_QUERY, referenceSymbol} from "./dom/resource.mjs"
export {ResourceManager} from "./dom/resourcemanager.mjs"
export {getDocument, getWindow, getDocumentFragmentFromString} from "./dom/util.mjs"
export { IsObject } from "./constraints/isobject.mjs";
export { Invalid } from "./constraints/invalid.mjs";
export { AndOperator } from "./constraints/andoperator.mjs";
export { OrOperator } from "./constraints/oroperator.mjs";
export { AbstractConstraint } from "./constraints/abstract.mjs";
export { IsArray } from "./constraints/isarray.mjs";
export { AbstractOperator } from "./constraints/abstractoperator.mjs";
export { Valid } from "./constraints/valid.mjs";
export {
Logger,
ALL,
TRACE,
DEBUG,
INFO,
WARN,
ERROR,
FATAL,
OFF,
} from "./logging/logger.mjs";
export { LogEntry } from "./logging/logentry.mjs";
export { ConsoleHandler } from "./logging/handler/console.mjs";
export { Handler } from "./logging/handler.mjs";
export { Formatter } from "./text/formatter.mjs";
export { Stylesheet } from "./dom/resource/link/stylesheet.mjs";
export { Data } from "./dom/resource/data.mjs";
export { Link } from "./dom/resource/link.mjs";
export { Script } from "./dom/resource/script.mjs";
export { Updater, addObjectWithUpdaterToElement } from "./dom/updater.mjs";
export { CustomControl } from "./dom/customcontrol.mjs";
export { getLocaleOfDocument } from "./dom/locale.mjs";
export { Theme, getDocumentTheme } from "./dom/theme.mjs";
export {
Resource,
KEY_DOCUMENT,
KEY_QUERY,
referenceSymbol,
} from "./dom/resource.mjs";
export { ResourceManager } from "./dom/resourcemanager.mjs";
export {
getDocument,
getWindow,
getDocumentFragmentFromString,
} from "./dom/util.mjs";
export {
DEFAULT_THEME,
ATTRIBUTE_PREFIX,
......@@ -91,17 +110,16 @@ export {
ATTRIBUTE_EXPORTPARTS,
ATTRIBUTE_HIDDEN,
objectUpdaterLinkSymbol,
customElementUpdaterLinkSymbol
} from "./dom/constants.mjs"
customElementUpdaterLinkSymbol,
} from "./dom/constants.mjs";
export {
CustomElement,
initMethodSymbol,
assembleMethodSymbol,
attributeObserverSymbol,
registerCustomElement,
getSlottedElements
} from "./dom/customelement.mjs"
getSlottedElements,
} from "./dom/customelement.mjs";
export {
findClosestObjectLink,
addToObjectLink,
......@@ -115,46 +133,54 @@ export {
replaceAttributeToken,
clearAttributeTokens,
findClosestByAttribute,
findClosestByClass
} from "./dom/attributes.mjs"
export {fireEvent, fireCustomEvent, findTargetElementFromEvent} from "./dom/events.mjs"
export {Factory} from "./dom/worker/factory.mjs"
export {Template} from "./dom/template.mjs"
export {domReady, windowReady} from "./dom/ready.mjs"
export {FocusManager} from "./dom/focusmanager.mjs"
export {ATTRIBUTEPREFIX, Assembler} from "./dom/assembler.mjs"
export {Translations} from "./i18n/translations.mjs"
export {Locale, parseLocale} from "./i18n/locale.mjs"
export {Formatter as I18nFormatter} from "./i18n/formatter.mjs"
export {Fetch} from "./i18n/providers/fetch.mjs"
export {Provider} from "./i18n/provider.mjs"
export {Message} from "./net/webconnect/message.mjs"
export {WebConnect as NetWebConnect} from "./net/webconnect.mjs"
findClosestByClass,
} from "./dom/attributes.mjs";
export {
fireEvent,
fireCustomEvent,
findTargetElementFromEvent,
} from "./dom/events.mjs";
export { Factory } from "./dom/worker/factory.mjs";
export { Template } from "./dom/template.mjs";
export { domReady, windowReady } from "./dom/ready.mjs";
export { FocusManager } from "./dom/focusmanager.mjs";
export { ATTRIBUTEPREFIX, Assembler } from "./dom/assembler.mjs";
export { Translations } from "./i18n/translations.mjs";
export { Locale, parseLocale } from "./i18n/locale.mjs";
export { Formatter as I18nFormatter } from "./i18n/formatter.mjs";
export { Fetch } from "./i18n/providers/fetch.mjs";
export { Provider } from "./i18n/provider.mjs";
export { Message } from "./net/webconnect/message.mjs";
export { WebConnect as NetWebConnect } from "./net/webconnect.mjs";
export {
internalSymbol,
internalStateSymbol,
instanceSymbol
} from "./constants.mjs"
export {MediaType, parseMediaType} from "./types/mediatype.mjs"
export {typeOf} from "./types/typeof.mjs"
export {ObserverList} from "./types/observerlist.mjs"
export {RandomID} from "./types/randomid.mjs"
export {ObservableQueue} from "./types/observablequeue.mjs"
export {UUID} from "./types/uuid.mjs"
export {Observer} from "./types/observer.mjs"
export {TokenList} from "./types/tokenlist.mjs"
export {Queue} from "./types/queue.mjs"
export {Stack} from "./types/stack.mjs"
export {toBinary, fromBinary} from "./types/binary.mjs"
export {BaseWithOptions} from "./types/basewithoptions.mjs"
export {escapeString} from "./types/regex.mjs"
export {ProxyObserver} from "./types/proxyobserver.mjs"
export {NodeList} from "./types/nodelist.mjs"
export {Version, getMonsterVersion} from "./types/version.mjs"
export {Node} from "./types/node.mjs"
export {NodeRecursiveIterator} from "./types/noderecursiveiterator.mjs"
export {getGlobal, getGlobalObject, getGlobalFunction} from "./types/global.mjs"
export {DataUrl, parseDataURL} from "./types/dataurl.mjs"
instanceSymbol,
} from "./constants.mjs";
export { MediaType, parseMediaType } from "./types/mediatype.mjs";
export { typeOf } from "./types/typeof.mjs";
export { ObserverList } from "./types/observerlist.mjs";
export { RandomID } from "./types/randomid.mjs";
export { ObservableQueue } from "./types/observablequeue.mjs";
export { UUID } from "./types/uuid.mjs";
export { Observer } from "./types/observer.mjs";
export { TokenList } from "./types/tokenlist.mjs";
export { Queue } from "./types/queue.mjs";
export { Stack } from "./types/stack.mjs";
export { toBinary, fromBinary } from "./types/binary.mjs";
export { BaseWithOptions } from "./types/basewithoptions.mjs";
export { escapeString } from "./types/regex.mjs";
export { ProxyObserver } from "./types/proxyobserver.mjs";
export { NodeList } from "./types/nodelist.mjs";
export { Version, getMonsterVersion } from "./types/version.mjs";
export { Node } from "./types/node.mjs";
export { NodeRecursiveIterator } from "./types/noderecursiveiterator.mjs";
export {
getGlobal,
getGlobalObject,
getGlobalFunction,
} from "./types/global.mjs";
export { DataUrl, parseDataURL } from "./types/dataurl.mjs";
export {
validateIterable,
validatePrimitive,
......@@ -165,39 +191,47 @@ export {
validateArray,
validateSymbol,
validateFunction,
validateInteger
} from "./types/validate.mjs"
export {UniqueQueue} from "./types/uniquequeue.mjs"
export {Base} from "./types/base.mjs"
validateInteger,
} from "./types/validate.mjs";
export { UniqueQueue } from "./types/uniquequeue.mjs";
export { Base } from "./types/base.mjs";
export {
isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInstance, isArray, isFunction, isInteger
} from "./types/is.mjs"
export {ID} from "./types/id.mjs"
export {trimSpaces} from "./util/trimspaces.mjs"
export {DeadMansSwitch} from "./util/deadmansswitch.mjs"
export {deepFreeze} from "./util/freeze.mjs"
export {Comparator} from "./util/comparator.mjs"
export {clone} from "./util/clone.mjs"
export {Processing} from "./util/processing.mjs"
export {extend} from "./data/extend.mjs"
export {Pipe} from "./data/pipe.mjs"
export {buildMap, PARENT, assembleParts} from "./data/buildmap.mjs"
export {Datasource} from "./data/datasource.mjs"
export {buildTree} from "./data/buildtree.mjs"
export {Transformer} from "./data/transformer.mjs"
export {Pathfinder, DELIMITER, WILDCARD} from "./data/pathfinder.mjs"
export {diff} from "./data/diff.mjs"
export {Server} from "./data/datasource/server.mjs"
export {SessionStorage} from "./data/datasource/storage/sessionstorage.mjs"
export {LocalStorage} from "./data/datasource/storage/localstorage.mjs"
export {RestAPI} from "./data/datasource/server/restapi.mjs"
export {WebConnect} from "./data/datasource/server/webconnect.mjs"
export {WriteError} from "./data/datasource/server/restapi/writeerror.mjs"
export {Storage, storageObjectSymbol} from "./data/datasource/storage.mjs"
export {random} from "./math/random.mjs"
isIterable,
isPrimitive,
isSymbol,
isBoolean,
isString,
isObject,
isInstance,
isArray,
isFunction,
isInteger,
} from "./types/is.mjs";
export { ID } from "./types/id.mjs";
export { trimSpaces } from "./util/trimspaces.mjs";
export { DeadMansSwitch } from "./util/deadmansswitch.mjs";
export { deepFreeze } from "./util/freeze.mjs";
export { Comparator } from "./util/comparator.mjs";
export { clone } from "./util/clone.mjs";
export { Processing } from "./util/processing.mjs";
export { extend } from "./data/extend.mjs";
export { Pipe } from "./data/pipe.mjs";
export { buildMap, PARENT, assembleParts } from "./data/buildmap.mjs";
export { Datasource } from "./data/datasource.mjs";
export { buildTree } from "./data/buildtree.mjs";
export { Transformer } from "./data/transformer.mjs";
export { Pathfinder, DELIMITER, WILDCARD } from "./data/pathfinder.mjs";
export { diff } from "./data/diff.mjs";
export { Server } from "./data/datasource/server.mjs";
export { SessionStorage } from "./data/datasource/storage/sessionstorage.mjs";
export { LocalStorage } from "./data/datasource/storage/localstorage.mjs";
export { RestAPI } from "./data/datasource/server/restapi.mjs";
export { WebConnect } from "./data/datasource/server/webconnect.mjs";
export { WriteError } from "./data/datasource/server/restapi/writeerror.mjs";
export { Storage, storageObjectSymbol } from "./data/datasource/storage.mjs";
export { random } from "./math/random.mjs";
export {Monster}
export { Monster };
/**
* This class has no other purpose than to exist.
......@@ -207,6 +241,4 @@ export {Monster}
* @copyright schukai GmbH
* @memberOf Monster
*/
class Monster {
}
class Monster {}
......@@ -3,8 +3,6 @@
* SPDX-License-Identifier: AGPL-3.0
*/
/**
* In this namespace you will find classes and methods for handling connections.
*
......
......@@ -11,8 +11,7 @@ import {BaseWithOptions} from "../types/basewithoptions.mjs";
import { ObservableQueue } from "../types/observablequeue.mjs";
import { Message } from "./webconnect/message.mjs";
export {WebConnect}
export { WebConnect };
/**
* @private
......@@ -57,7 +56,7 @@ const connectionStatusCode = {
1009: "Message too big",
1010: "Mandatory extension",
1011: "Internal server error",
1015: "TLS handshake"
1015: "TLS handshake",
};
/**
......@@ -68,15 +67,15 @@ const connectionStatusCode = {
function connectServer(resolve, reject) {
const self = this;
const url = self.getOption('url');
const url = self.getOption("url");
if (!url) {
reject('No url defined for webconnect.');
reject("No url defined for webconnect.");
return;
}
let promiseAllredyResolved = false;
let connectionTimeout = self.getOption('connection.timeout');
let connectionTimeout = self.getOption("connection.timeout");
if (!isInteger(connectionTimeout) || connectionTimeout < 100) {
connectionTimeout = 5000;
}
......@@ -88,11 +87,11 @@ function connectServer(resolve, reject) {
reject(new Error("Connection timeout"));
}, connectionTimeout);
let reconnectTimeout = self.getOption('connection.reconnect.timeout');
let reconnectTimeout = self.getOption("connection.reconnect.timeout");
if (!isInteger(reconnectTimeout) || reconnectTimeout < 1000) reconnectTimeout = 1000;
let reconnectAttempts = self.getOption('connection.reconnect.attempts');
let reconnectAttempts = self.getOption("connection.reconnect.attempts");
if (!isInteger(reconnectAttempts) || reconnectAttempts < 1) reconnectAttempts = 1;
let reconnectEnabled = self.getOption('connection.reconnect.enabled');
let reconnectEnabled = self.getOption("connection.reconnect.enabled");
if (reconnectEnabled !== true) reconnectEnabled = false;
self[manualCloseSymbol] = false;
......@@ -108,7 +107,7 @@ function connectServer(resolve, reject) {
if (event.data instanceof Blob) {
const reader = new FileReader();
reader.addEventListener("loadend", function () {
self[receiveQueueSymbol].add(new Message(reader.result))
self[receiveQueueSymbol].add(new Message(reader.result));
});
reader.readAsText(new Message(event.data));
} else {
......@@ -118,14 +117,13 @@ function connectServer(resolve, reject) {
self[connectionSymbol].socket.onopen = function () {
self[connectionSymbol].reconnectCounter = 0;
if (typeof resolve === 'function' && !promiseAllredyResolved) {
if (typeof resolve === "function" && !promiseAllredyResolved) {
promiseAllredyResolved = true;
resolve();
}
};
self[connectionSymbol].socket.close = function (event) {
if (self[manualCloseSymbol]) {
self[manualCloseSymbol] = false;
return;
......@@ -136,22 +134,19 @@ function connectServer(resolve, reject) {
self.connect();
}, reconnectTimeout * this[connectionSymbol].reconnectCounter);
}
};
self[connectionSymbol].socket.onerror = (error) => {
if (reconnectEnabled && self[connectionSymbol].reconnectCounter < reconnectAttempts) {
setTimeout(() => {
self.connect();
}, reconnectTimeout * this[connectionSymbol].reconnectCounter);
} else {
if (typeof reject === 'function' && !promiseAllredyResolved) {
if (typeof reject === "function" && !promiseAllredyResolved) {
promiseAllredyResolved = true;
reject(error);
}
}
};
}
......@@ -166,13 +161,11 @@ function connectServer(resolve, reject) {
* @summary The LocalStorage class encapsulates the access to data objects.
*/
class WebConnect extends BaseWithOptions {
/**
*
* @param {Object} [options] options contains definitions for the webconnect.
*/
constructor(options) {
if (isString(options)) {
options = { url: options };
}
......@@ -232,8 +225,8 @@ class WebConnect extends BaseWithOptions {
timeout: 1000,
attempts: 1,
enabled: false,
}
}
},
},
});
}
......@@ -250,7 +243,7 @@ class WebConnect extends BaseWithOptions {
statusCode = 1000;
}
if (!isString(reason)) {
reason = '';
reason = "";
}
return new Promise((resolve, reject) => {
......@@ -264,7 +257,6 @@ class WebConnect extends BaseWithOptions {
}
resolve();
});
}
/**
......@@ -332,15 +324,12 @@ class WebConnect extends BaseWithOptions {
const self = this;
return new Promise((resolve, reject) => {
if (self[connectionSymbol].socket.readyState !== 1) {
reject('the socket is not ready');
reject("the socket is not ready");
}
self[connectionSymbol].socket.send(JSON.stringify(message))
self[connectionSymbol].socket.send(JSON.stringify(message));
resolve();
});
}
}
......@@ -8,7 +8,7 @@
import { Base } from "../../types/base.mjs";
import { validateObject, validateString } from "../../types/validate.mjs";
export {Message}
export { Message };
const dataSymbol = Symbol("@@data");
......@@ -22,7 +22,6 @@ const dataSymbol = Symbol("@@data");
* @summary The Message class encapsulates a WebSocket message.
*/
class Message extends Base {
/**
* @param {Object} data
* @throws {TypeError} value is not a object
......@@ -57,5 +56,4 @@ class Message extends Base {
validateString(json);
return new Message(JSON.parse(json));
}
}
......@@ -3,8 +3,6 @@
* SPDX-License-Identifier: AGPL-3.0
*/
/**
* In this namespace you will find classes and methods for handling data.
*
......
......@@ -13,38 +13,37 @@ import {BaseWithOptions} from "../types/basewithoptions.mjs";
import { isObject, isString } from "../types/is.mjs";
import { validateArray, validateString } from "../types/validate.mjs";
export {Formatter}
export { Formatter };
/**
* @private
* @type {symbol}
*/
const internalObjectSymbol = Symbol('internalObject');
const internalObjectSymbol = Symbol("internalObject");
/**
* @private
* @type {symbol}
*/
const watchdogSymbol = Symbol('watchdog');
const watchdogSymbol = Symbol("watchdog");
/**
* @private
* @type {symbol}
*/
const markerOpenIndexSymbol = Symbol('markerOpenIndex');
const markerOpenIndexSymbol = Symbol("markerOpenIndex");
/**
* @private
* @type {symbol}
*/
const markerCloseIndexSymbol = Symbol('markercloseIndex');
const markerCloseIndexSymbol = Symbol("markercloseIndex");
/**
* @private
* @type {symbol}
*/
const workingDataSymbol = Symbol('workingData');
const workingDataSymbol = Symbol("workingData");
/**
* Messages can be formatted with the formatter. To do this, an object with the values must be passed to the formatter. The message can then contain placeholders.
......@@ -110,7 +109,6 @@ const workingDataSymbol = Symbol('workingData');
* @memberOf Monster.Text
*/
class Formatter extends BaseWithOptions {
/**
* Default values for the markers are `${` and `}`
*
......@@ -119,7 +117,7 @@ const workingDataSymbol = Symbol('workingData');
*/
constructor(object, options) {
super(options);
this[internalObjectSymbol] = object || {}
this[internalObjectSymbol] = object || {};
this[markerOpenIndexSymbol] = 0;
this[markerCloseIndexSymbol] = 0;
}
......@@ -136,18 +134,17 @@ const workingDataSymbol = Symbol('workingData');
get defaults() {
return extend({}, super.defaults, {
marker: {
open: ['${'],
close: ['}']
open: ["${"],
close: ["}"],
},
parameter: {
delimiter: '::',
assignment: '='
delimiter: "::",
assignment: "=",
},
callbacks: {},
})
});
}
/**
* Set new Parameter Character
*
......@@ -166,13 +163,12 @@ const workingDataSymbol = Symbol('workingData');
* @throws {TypeError} value is not a string
*/
setParameterChars(delimiter, assignment) {
if (delimiter !== undefined) {
this[internalSymbol]['parameter']['delimiter'] = validateString(delimiter);
this[internalSymbol]["parameter"]["delimiter"] = validateString(delimiter);
}
if (assignment !== undefined) {
this[internalSymbol]['parameter']['assignment'] = validateString(assignment);
this[internalSymbol]["parameter"]["assignment"] = validateString(assignment);
}
return this;
......@@ -196,7 +192,6 @@ const workingDataSymbol = Symbol('workingData');
* @throws {TypeError} value is not a string
*/
setMarker(open, close) {
if (close === undefined) {
close = open;
}
......@@ -204,8 +199,8 @@ const workingDataSymbol = Symbol('workingData');
if (isString(open)) open = [open];
if (isString(close)) close = [close];
this[internalSymbol]['marker']['open'] = validateArray(open);
this[internalSymbol]['marker']['close'] = validateArray(close);
this[internalSymbol]["marker"]["open"] = validateArray(open);
this[internalSymbol]["marker"]["close"] = validateArray(close);
return this;
}
......@@ -223,7 +218,6 @@ const workingDataSymbol = Symbol('workingData');
this[workingDataSymbol] = {};
return format.call(this, text);
}
}
/**
......@@ -235,28 +229,28 @@ function format(text) {
self[watchdogSymbol]++;
if (this[watchdogSymbol] > 20) {
throw new Error('too deep nesting')
throw new Error("too deep nesting");
}
let openMarker = self[internalSymbol]['marker']['open']?.[this[markerOpenIndexSymbol]];
let closeMarker = self[internalSymbol]['marker']['close']?.[this[markerCloseIndexSymbol]];
let openMarker = self[internalSymbol]["marker"]["open"]?.[this[markerOpenIndexSymbol]];
let closeMarker = self[internalSymbol]["marker"]["close"]?.[this[markerCloseIndexSymbol]];
// contains no placeholders
if (text.indexOf(openMarker) === -1 || text.indexOf(closeMarker) === -1) {
return text;
}
let result = tokenize.call(this, validateString(text), openMarker, closeMarker)
let result = tokenize.call(this, validateString(text), openMarker, closeMarker);
if (self[internalSymbol]['marker']['open']?.[this[markerOpenIndexSymbol] + 1]) {
if (self[internalSymbol]["marker"]["open"]?.[this[markerOpenIndexSymbol] + 1]) {
this[markerOpenIndexSymbol]++;
}
if (self[internalSymbol]['marker']['close']?.[this[markerCloseIndexSymbol] + 1]) {
if (self[internalSymbol]["marker"]["close"]?.[this[markerCloseIndexSymbol] + 1]) {
this[markerCloseIndexSymbol]++;
}
result = format.call(self, result)
result = format.call(self, result);
return result;
}
......@@ -273,20 +267,19 @@ function tokenize(text, openMarker, closeMarker) {
let formatted = [];
const parameterAssignment = self[internalSymbol]['parameter']['assignment']
const parameterDelimiter = self[internalSymbol]['parameter']['delimiter']
const callbacks = self[internalSymbol]['callbacks'];
const parameterAssignment = self[internalSymbol]["parameter"]["assignment"];
const parameterDelimiter = self[internalSymbol]["parameter"]["delimiter"];
const callbacks = self[internalSymbol]["callbacks"];
while (true) {
let startIndex = text.indexOf(openMarker);
// no marker
if (startIndex === -1) {
formatted.push(text);
break;
} else if (startIndex > 0) {
formatted.push(text.substring(0, startIndex))
text = text.substring(startIndex)
formatted.push(text.substring(0, startIndex));
text = text.substring(startIndex);
}
let endIndex = text.substring(openMarker.length).indexOf(closeMarker);
......@@ -296,15 +289,14 @@ function tokenize(text, openMarker, closeMarker) {
insideStartIndex += openMarker.length;
if (insideStartIndex < endIndex) {
let result = tokenize.call(self, text.substring(insideStartIndex), openMarker, closeMarker);
text = text.substring(0, insideStartIndex) + result
text = text.substring(0, insideStartIndex) + result;
endIndex = text.substring(openMarker.length).indexOf(closeMarker);
if (endIndex !== -1) endIndex += openMarker.length;
}
}
if (endIndex === -1) {
throw new Error("syntax error in formatter template")
return;
throw new Error("syntax error in formatter template");
}
let key = text.substring(openMarker.length, endIndex);
......@@ -318,15 +310,13 @@ function tokenize(text, openMarker, closeMarker) {
self[workingDataSymbol][k] = v;
}
const t1 = key.split('|').shift().trim(); // pipe symbol
const t2 = t1.split('::').shift().trim(); // key value delimiter
const t3 = t2.split('.').shift().trim(); // path delimiter
let prefix = self[workingDataSymbol]?.[t3] ? 'path:' : 'static:';
const t1 = key.split("|").shift().trim(); // pipe symbol
const t2 = t1.split("::").shift().trim(); // key value delimiter
const t3 = t2.split(".").shift().trim(); // path delimiter
let prefix = self[workingDataSymbol]?.[t3] ? "path:" : "static:";
let command = "";
if (prefix && key.indexOf(prefix) !== 0
&& key.indexOf('path:') !== 0
&& key.indexOf('static:') !== 0) {
if (prefix && key.indexOf(prefix) !== 0 && key.indexOf("path:") !== 0 && key.indexOf("static:") !== 0) {
command = prefix;
}
......@@ -343,8 +333,7 @@ function tokenize(text, openMarker, closeMarker) {
formatted.push(validateString(pipe.run(self[workingDataSymbol])));
text = text.substring(endIndex + closeMarker.length);
}
return formatted.join('');
return formatted.join("");
}
......@@ -7,8 +7,7 @@
import { instanceSymbol } from "../constants.mjs";
export {Base}
export { Base };
/**
* This is the base class from which all monster classes are derived.
......@@ -37,14 +36,13 @@ export {Base}
* @memberOf Monster.Types
*/
class Base extends Object {
/**
*
* @returns {string}
*/
toString() {
return JSON.stringify(this);
};
}
/**
* This method is called by the `instanceof` operator.
......@@ -62,13 +60,16 @@ class Base extends Object {
* @since 2.1.0
*/
static [Symbol.hasInstance](that) {
if (that === undefined || that === null || (typeof that !== "object" && typeof that !== "function")) {
return false;
}
const thatClass = Object.getPrototypeOf(that)
if (thatClass === undefined || thatClass === null || (typeof thatClass !== "object" && typeof thatClass !== "function")) {
const thatClass = Object.getPrototypeOf(that);
if (
thatClass === undefined ||
thatClass === null ||
(typeof thatClass !== "object" && typeof thatClass !== "function")
) {
return false;
}
......@@ -76,12 +77,9 @@ class Base extends Object {
return true;
}
// this call the static method of the super class, if there is one
return super[Symbol.hasInstance](that);
}
}
/**
......@@ -93,7 +91,6 @@ class Base extends Object {
* @since 2.1.0
*/
function checkInstanceSymbol(obj) {
if (this.hasOwnProperty(instanceSymbol) === false) {
return false;
}
......@@ -109,13 +106,11 @@ function checkInstanceSymbol(obj) {
const symbol = proto[instanceSymbol];
if (symbol === undefined) {
if (obj.__proto__) {
return checkInstanceSymbol(obj.__proto__);
} else {
return false;
}
}
if (symbol === this[instanceSymbol]) {
......@@ -123,9 +118,4 @@ function checkInstanceSymbol(obj) {
}
return checkInstanceSymbol.apply(this, [obj.__proto__]);
}
......@@ -11,7 +11,7 @@ import {Pathfinder} from "../data/pathfinder.mjs";
import { Base } from "./base.mjs";
import { validateObject } from "./validate.mjs";
export {BaseWithOptions}
export { BaseWithOptions };
/**
* This is the base class with options from which some monster classes are derived.
......@@ -28,7 +28,6 @@ export {BaseWithOptions}
* @memberOf Monster.Types
*/
class BaseWithOptions extends Base {
/**
*
* @param {object} options
......@@ -41,7 +40,6 @@ class BaseWithOptions extends Base {
}
this[internalSymbol] = extend({}, this.defaults, validateObject(options));
}
/**
......@@ -61,7 +59,7 @@ class BaseWithOptions extends Base {
* @return {object}
*/
get defaults() {
return {}
return {};
}
/**
......@@ -77,13 +75,9 @@ class BaseWithOptions extends Base {
try {
value = new Pathfinder(this[internalSymbol]).getVia(path);
} catch (e) {
}
} catch (e) {}
if (value === undefined) return defaultValue;
return value;
}
}
......@@ -7,7 +7,7 @@
import { validateString } from "./validate.mjs";
export {toBinary, fromBinary}
export { toBinary, fromBinary };
/**
* You can call the function via the monster namespace `Monster.Types.toBinary()`.
......@@ -26,7 +26,7 @@ function toBinary(string) {
}
const charCodes = new Uint8Array(codeUnits.buffer);
let result = '';
let result = "";
for (let i = 0; i < charCodes.byteLength; i++) {
result += String.fromCharCode(charCodes[i]);
......@@ -51,10 +51,9 @@ function fromBinary(binary) {
bytes[i] = binary.charCodeAt(i);
}
const charCodes = new Uint16Array(bytes.buffer);
let result = '';
let result = "";
for (let i = 0; i < charCodes.length; i++) {
result += String.fromCharCode(charCodes[i]);
}
return result;
}
......@@ -9,14 +9,14 @@ import {Base} from "./base.mjs";
import { isString } from "./is.mjs";
import { MediaType, parseMediaType } from "./mediatype.mjs";
import { validateBoolean, validateInstance, validateString } from "./validate.mjs";
import {instanceSymbol} from '../constants.mjs';
export {DataUrl, parseDataURL}
import { instanceSymbol } from "../constants.mjs";
export { DataUrl, parseDataURL };
/**
* @private
* @type {symbol}
*/
const internal = Symbol('internal');
const internal = Symbol("internal");
/**
* You can create an object via the monster namespace `new Monster.Types.DataUrl()`.
......@@ -29,7 +29,6 @@ const internal = Symbol('internal');
* @see https://datatracker.ietf.org/doc/html/rfc2397
*/
class DataUrl extends Base {
/**
*
* @param {String} content
......@@ -46,10 +45,8 @@ class DataUrl extends Base {
this[internal] = {
content: validateString(content),
mediatype: validateInstance(mediatype, MediaType),
base64: validateBoolean(base64 === undefined ? true : base64)
}
base64: validateBoolean(base64 === undefined ? true : base64),
};
}
/**
......@@ -61,7 +58,6 @@ class DataUrl extends Base {
return Symbol.for("@schukai/monster/types/data-url");
}
get content() {
return this[internal].base64 ? atob(this[internal].content) : this[internal].content;
}
......@@ -70,25 +66,22 @@ class DataUrl extends Base {
return this[internal].mediatype;
}
/**
*
* @return {string}
* @see https://datatracker.ietf.org/doc/html/rfc2397
*/
toString() {
let content = this[internal].content;
if (this[internal].base64 === true) {
content = ';base64,' + content;
content = `;base64,${content}`;
} else {
content = ',' + encodeURIComponent(content);
content = `,${encodeURIComponent(content)}`;
}
return 'data:' + this[internal].mediatype.toString() + content;
return `data:${this[internal].mediatype.toString()}${content}`;
}
}
/**
......@@ -112,31 +105,30 @@ class DataUrl extends Base {
* @memberOf Monster.Types
*/
function parseDataURL(dataurl) {
validateString(dataurl);
dataurl = dataurl.trim();
if (dataurl.substring(0, 5) !== 'data:') {
throw new TypeError('incorrect or missing data protocol')
if (dataurl.substring(0, 5) !== "data:") {
throw new TypeError("incorrect or missing data protocol");
}
dataurl = dataurl.substring(5);
let p = dataurl.indexOf(',');
let p = dataurl.indexOf(",");
if (p === -1) {
throw new TypeError('malformed data url')
throw new TypeError("malformed data url");
}
let content = dataurl.substring(p + 1);
let mediatypeAndBase64 = dataurl.substring(0, p).trim();
let mediatype = 'text/plain;charset=US-ASCII';
let mediatype = "text/plain;charset=US-ASCII";
let base64Flag = false;
if (mediatypeAndBase64 !== "") {
mediatype = mediatypeAndBase64;
if (mediatypeAndBase64.endsWith('base64')) {
let i = mediatypeAndBase64.lastIndexOf(';');
if (mediatypeAndBase64.endsWith("base64")) {
let i = mediatypeAndBase64.lastIndexOf(";");
mediatype = mediatypeAndBase64.substring(0, i);
base64Flag = true;
} else {
......
/**
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
* Node module: @schukai/monster
......@@ -7,10 +5,9 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import { validateFunction, validateObject, validateString } from "./validate.mjs";
export {getGlobal, getGlobalObject, getGlobalFunction}
export { getGlobal, getGlobalObject, getGlobalFunction };
/**
* @type {objec}
......@@ -23,28 +20,27 @@ let globalReference;
* @throws {Error} unsupported environment.
*/
(function () {
if (typeof globalThis === 'object') {
if (typeof globalThis === "object") {
globalReference = globalThis;
return;
}
if (typeof self !== 'undefined') {
if (typeof self !== "undefined") {
globalReference = self;
return;
} else if (typeof window !== 'undefined') {
} else if (typeof window !== "undefined") {
globalReference = window;
return;
}
Object.defineProperty(Object.prototype, '__monster__', {
Object.defineProperty(Object.prototype, "__monster__", {
get: function () {
return this;
},
configurable: true
configurable: true,
});
if (typeof __monster__ === 'object') {
if (typeof __monster__ === "object") {
__monster__.globalThis = __monster__;
delete Object.prototype.__monster__;
......@@ -53,15 +49,11 @@ let globalReference;
}
try {
globalReference = Function('return this')();
} catch (e) {
}
globalReference = Function("return this")();
} catch (e) {}
throw new Error("unsupported environment.")
}());
throw new Error("unsupported environment.");
})();
/**
* Return globalThis
......@@ -112,7 +104,7 @@ function getGlobal() {
function getGlobalObject(name) {
validateString(name);
let o = globalReference?.[name];
if (typeof o === 'undefined') throw new Error('the object ' + name + ' is not defined');
if (typeof o === "undefined") throw new Error(`the object ${name} is not defined`);
validateObject(o);
return o;
}
......@@ -150,11 +142,7 @@ function getGlobalObject(name) {
function getGlobalFunction(name) {
validateString(name);
let f = globalReference?.[name];
if (typeof f === 'undefined') throw new Error('the function ' + name + ' is not defined');
if (typeof f === "undefined") throw new Error(`the function ${name} is not defined`);
validateFunction(f);
return f;
}
......@@ -5,16 +5,16 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
import {Base} from './base.mjs';
import { Base } from "./base.mjs";
import { validateString } from "./validate.mjs";
export {ID}
export { ID };
/**
* @private
* @type {Map<string, integer>}
*/
let internalCounter = new Map;
let internalCounter = new Map();
/**
* With the id class, sequences of ids can be created. for this purpose, an internal counter is incremented for each prefix.
......@@ -32,7 +32,6 @@ let internalCounter = new Map;
* @summary Automatic generation of ids
*/
class ID extends Base {
/**
* create new id with prefix
*
......@@ -63,5 +62,4 @@ class ID extends Base {
toString() {
return this.id;
}
}
......@@ -5,7 +5,7 @@
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
*/
export {isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInstance, isArray, isFunction, isInteger}
export { isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInstance, isArray, isFunction, isInteger };
/**
* With this function you can check if a value is iterable.
......@@ -25,10 +25,9 @@ export {isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInst
function isIterable(value) {
if (value === undefined) return false;
if (value === null) return false;
return typeof value?.[Symbol.iterator] === 'function';
return typeof value?.[Symbol.iterator] === "function";
}
/**
* Checks whether the value passed is a primitive (string, number, boolean, NaN, undefined, null or symbol)
*
......@@ -51,7 +50,7 @@ function isPrimitive(value) {
type = typeof value;
if (type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol') {
if (type === "string" || type === "number" || type === "boolean" || type === "symbol") {
return true;
}
......@@ -72,7 +71,7 @@ function isPrimitive(value) {
* @memberOf Monster.Types
*/
function isSymbol(value) {
return ('symbol' === typeof value) ? true : false;
return "symbol" === typeof value ? true : false;
}
/**
......@@ -89,7 +88,6 @@ function isSymbol(value) {
* @memberOf Monster.Types
*/
function isBoolean(value) {
if (value === true || value === false) {
return true;
}
......@@ -111,7 +109,7 @@ function isBoolean(value) {
* @memberOf Monster.Types
*/
function isString(value) {
if (value === undefined || typeof value !== 'string') {
if (value === undefined || typeof value !== "string") {
return false;
}
return true;
......@@ -131,11 +129,10 @@ function isString(value) {
* @memberOf Monster.Types
*/
function isObject(value) {
if (isArray(value)) return false;
if (isPrimitive(value)) return false;
if (typeof value === 'object') {
if (typeof value === "object") {
return true;
}
......@@ -159,8 +156,8 @@ function isObject(value) {
function isInstance(value, instance) {
if (!isObject(value)) return false;
if (!isFunction(instance)) return false;
if (!instance.hasOwnProperty('prototype')) return false;
return (value instanceof instance) ? true : false;
if (!instance.hasOwnProperty("prototype")) return false;
return value instanceof instance ? true : false;
}
/**
......@@ -198,12 +195,11 @@ function isFunction(value) {
if (isArray(value)) return false;
if (isPrimitive(value)) return false;
if (typeof value === 'function') {
if (typeof value === "function") {
return true;
}
return false;
}
/**
......@@ -222,4 +218,3 @@ function isFunction(value) {
function isInteger(value) {
return Number.isInteger(value);
}