@schukai/monster 1.31.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +11 -0
- package/README.md +55 -58
- package/example/constraints/andoperator.mjs +17 -0
- package/example/constraints/invalid.mjs +6 -0
- package/example/constraints/isarray.mjs +11 -0
- package/example/constraints/isobject.mjs +12 -0
- package/example/constraints/oroperator.mjs +15 -0
- package/example/constraints/valid.mjs +6 -0
- package/example/data/buildmap.mjs +67 -0
- package/example/data/datasource.mjs +7 -0
- package/example/data/diff.mjs +39 -0
- package/example/data/pathfinder-1.mjs +23 -0
- package/example/data/pathfinder-2.mjs +19 -0
- package/example/data/pipe.mjs +14 -0
- package/example/data/storage/restapi.mjs +11 -0
- package/example/data/transformer.mjs +9 -0
- package/example/dom/customelement.mjs +13 -0
- package/example/dom/theme.mjs +5 -0
- package/example/dom/updater.mjs +23 -0
- package/example/i18n/formatter.mjs +10 -0
- package/example/i18n/providers/fetch.mjs +5 -0
- package/example/i18n/translations.mjs +20 -0
- package/example/types/basewithoptions.mjs +10 -0
- package/example/types/is-1.mjs +5 -0
- package/example/types/is-10.mjs +6 -0
- package/example/types/is-2.mjs +4 -0
- package/example/types/is-3.mjs +4 -0
- package/example/types/is-4.mjs +5 -0
- package/example/types/is-5.mjs +4 -0
- package/example/types/is-6.mjs +4 -0
- package/example/types/is-7.mjs +4 -0
- package/example/types/is-8.mjs +4 -0
- package/example/types/is-9.mjs +6 -0
- package/example/types/noderecursiveiterator.mjs +32 -0
- package/example/types/observer.mjs +9 -0
- package/example/types/proxyobserver.mjs +25 -0
- package/example/types/queue.mjs +20 -0
- package/example/types/tokenlist-1.mjs +4 -0
- package/example/types/tokenlist-2.mjs +7 -0
- package/example/types/tokenlist-3.mjs +5 -0
- package/example/types/tokenlist-4.mjs +5 -0
- package/example/types/tokenlist-5.mjs +5 -0
- package/example/types/typeof.mjs +9 -0
- package/example/types/version-1.mjs +6 -0
- package/example/types/version-2.mjs +3 -0
- package/example/util/comparator.mjs +10 -0
- package/example/util/deadmansswitch.mjs +9 -0
- package/example/util/processing.mjs +17 -0
- package/package.json +6 -60
- package/source/{constants.js → constants.mjs} +7 -10
- package/source/constraints/{abstract.js → abstract.mjs} +8 -9
- package/source/constraints/{abstractoperator.js → abstractoperator.mjs} +11 -8
- package/source/constraints/andoperator.mjs +38 -0
- package/source/constraints/invalid.mjs +38 -0
- package/source/constraints/isarray.mjs +41 -0
- package/source/constraints/isobject.mjs +41 -0
- package/source/constraints/{namespace.js → namespace.mjs} +3 -8
- package/source/constraints/{oroperator.js → oroperator.mjs} +10 -42
- package/source/constraints/valid.mjs +38 -0
- package/source/data/{buildmap.js → buildmap.mjs} +18 -104
- package/source/data/{buildtree.js → buildtree.mjs} +11 -31
- package/source/data/datasource/{namespace.js → namespace.mjs} +1 -9
- package/source/data/datasource/restapi/namespace.mjs +8 -0
- package/source/data/datasource/restapi/{writeerror.js → writeerror.mjs} +8 -9
- package/source/data/datasource/{restapi.js → restapi.mjs} +15 -45
- package/source/data/datasource/storage/localstorage.mjs +45 -0
- package/source/data/datasource/storage/{namespace.js → namespace.mjs} +1 -9
- package/source/data/datasource/storage/sessionstorage.mjs +45 -0
- package/source/data/datasource/{storage.js → storage.mjs} +12 -35
- package/source/data/{datasource.js → datasource.mjs} +17 -45
- package/source/data/{diff.js → diff.mjs} +10 -69
- package/source/data/{extend.js → extend.mjs} +10 -28
- package/source/data/{namespace.js → namespace.mjs} +2 -8
- package/source/data/{pathfinder.js → pathfinder.mjs} +18 -77
- package/source/data/{pipe.js → pipe.mjs} +14 -46
- package/source/data/{transformer.js → transformer.mjs} +18 -43
- package/source/dom/{assembler.js → assembler.mjs} +12 -28
- package/source/dom/{attributes.js → attributes.mjs} +42 -253
- package/source/dom/{constants.js → constants.mjs} +110 -61
- package/source/dom/{customcontrol.js → customcontrol.mjs} +10 -17
- package/source/dom/{customelement.js → customelement.mjs} +28 -52
- package/source/dom/{events.js → events.mjs} +15 -64
- package/source/dom/{focusmanager.js → focusmanager.mjs} +13 -34
- package/source/dom/{locale.js → locale.mjs} +11 -26
- package/source/dom/{namespace.js → namespace.mjs} +1 -8
- package/source/dom/{ready.js → ready.mjs} +12 -30
- package/source/dom/resource/{data.js → data.mjs} +11 -31
- package/source/dom/resource/link/namespace.mjs +10 -0
- package/source/dom/resource/link/stylesheet.mjs +35 -0
- package/source/dom/resource/{link.js → link.mjs} +9 -29
- package/source/dom/resource/namespace.mjs +8 -0
- package/source/dom/resource/{script.js → script.mjs} +9 -29
- package/source/dom/{resource.js → resource.mjs} +19 -39
- package/source/dom/{resourcemanager.js → resourcemanager.mjs} +17 -35
- package/source/dom/{template.js → template.mjs} +18 -43
- package/source/dom/{theme.js → theme.mjs} +14 -36
- package/source/dom/{updater.js → updater.mjs} +34 -68
- package/source/dom/{util.js → util.mjs} +17 -66
- package/source/dom/worker/{factory.js → factory.mjs} +13 -34
- package/source/dom/worker/namespace.mjs +8 -0
- package/source/i18n/{formatter.js → formatter.mjs} +14 -45
- package/source/i18n/{locale.js → locale.mjs} +15 -30
- package/source/i18n/{namespace.js → namespace.mjs} +1 -9
- package/source/i18n/provider.mjs +40 -0
- package/source/i18n/providers/{fetch.js → fetch.mjs} +18 -43
- package/source/i18n/providers/namespace.mjs +8 -0
- package/source/i18n/{translations.js → translations.mjs} +12 -52
- package/source/logging/handler/console.mjs +50 -0
- package/source/logging/handler/namespace.mjs +6 -0
- package/source/logging/{handler.js → handler.mjs} +13 -30
- package/source/logging/logentry.mjs +51 -0
- package/source/logging/{logger.js → logger.mjs} +12 -28
- package/source/logging/{namespace.js → namespace.mjs} +1 -9
- package/source/math/{namespace.js → namespace.mjs} +1 -9
- package/source/math/{random.js → random.mjs} +8 -34
- package/source/monster.mjs +114 -0
- package/source/text/{formatter.js → formatter.mjs} +17 -33
- package/source/text/{namespace.js → namespace.mjs} +1 -9
- package/source/types/base.mjs +31 -0
- package/source/types/{basewithoptions.js → basewithoptions.mjs} +17 -46
- package/source/types/{binary.js → binary.mjs} +10 -42
- package/source/types/{dataurl.js → dataurl.mjs} +12 -46
- package/source/types/{global.js → global.mjs} +20 -12
- package/source/types/{id.js → id.mjs} +10 -27
- package/source/types/is.mjs +225 -0
- package/source/types/{mediatype.js → mediatype.mjs} +13 -29
- package/source/types/{namespace.js → namespace.mjs} +1 -8
- package/source/types/{node.js → node.mjs} +11 -28
- package/source/types/{nodelist.js → nodelist.mjs} +17 -32
- package/source/types/{noderecursiveiterator.js → noderecursiveiterator.mjs} +14 -65
- package/source/types/{observer.js → observer.mjs} +15 -42
- package/source/types/{observerlist.js → observerlist.mjs} +12 -29
- package/source/types/{proxyobserver.js → proxyobserver.mjs} +19 -62
- package/source/types/{queue.js → queue.mjs} +10 -47
- package/source/types/randomid.mjs +45 -0
- package/source/types/regex.mjs +27 -0
- package/source/types/{stack.js → stack.mjs} +8 -24
- package/source/types/{tokenlist.js → tokenlist.mjs} +20 -64
- package/source/types/typeof.mjs +37 -0
- package/source/types/{uniquequeue.js → uniquequeue.mjs} +11 -27
- package/source/types/{uuid.js → uuid.mjs} +15 -33
- package/source/types/{validate.js → validate.mjs} +38 -155
- package/source/types/{version.js → version.mjs} +19 -62
- package/source/util/{clone.js → clone.mjs} +10 -28
- package/source/util/{comparator.js → comparator.mjs} +13 -43
- package/source/util/{deadmansswitch.js → deadmansswitch.mjs} +15 -40
- package/source/util/freeze.mjs +39 -0
- package/source/util/{namespace.js → namespace.mjs} +1 -9
- package/source/util/{processing.js → processing.mjs} +13 -51
- package/source/util/{trimspaces.js → trimspaces.mjs} +14 -21
- package/test/cases/constraint/{andoperator.js → andoperator.mjs} +3 -3
- package/test/cases/constraint/{invalid.js → invalid.mjs} +1 -1
- package/test/cases/constraint/{isarray.js → isarray.mjs} +1 -1
- package/test/cases/constraint/{isobject.js → isobject.mjs} +1 -1
- package/test/cases/constraint/{oroperator.js → oroperator.mjs} +3 -3
- package/test/cases/constraint/{valid.js → valid.mjs} +1 -1
- package/test/cases/data/{buildmap.js → buildmap.mjs} +1 -1
- package/test/cases/data/{buildtree.js → buildtree.mjs} +2 -2
- package/test/cases/data/datasource/{restapi.js → restapi.mjs} +5 -5
- package/test/cases/data/datasource/storage/{localstorage.js → localstorage.mjs} +5 -5
- package/test/cases/data/datasource/storage/{sessionstorage.js → sessionstorage.mjs} +5 -5
- package/test/cases/data/{datasource.js → datasource.mjs} +1 -1
- package/test/cases/data/{diff.js → diff.mjs} +2 -2
- package/test/cases/data/{extend.js → extend.mjs} +1 -1
- package/test/cases/data/{pathfinder.js → pathfinder.mjs} +1 -1
- package/test/cases/data/{pipe.js → pipe.mjs} +19 -5
- package/test/cases/data/{transformer.js → transformer.mjs} +14 -10
- package/test/cases/dom/{assembler.js → assembler.mjs} +2 -2
- package/test/cases/dom/{attributes.js → attributes.mjs} +2 -2
- package/test/cases/dom/{customcontrol.js → customcontrol.mjs} +6 -6
- package/test/cases/dom/{customelement.js → customelement.mjs} +6 -6
- package/test/cases/dom/{events.js → events.mjs} +2 -2
- package/test/cases/dom/{focusmanager.js → focusmanager.mjs} +3 -3
- package/test/cases/dom/{locale.js → locale.mjs} +2 -2
- package/test/cases/dom/{ready.js → ready.mjs} +2 -2
- package/test/cases/dom/resource/{data.js → data.mjs} +9 -9
- package/test/cases/dom/resource/link/{stylesheet.js → stylesheet.mjs} +6 -6
- package/test/cases/dom/resource/{link.js → link.mjs} +6 -6
- package/test/cases/dom/resource/{script.js → script.mjs} +6 -6
- package/test/cases/dom/{resourcemanager.js → resourcemanager.mjs} +6 -6
- package/test/cases/dom/{template.js → template.mjs} +3 -3
- package/test/cases/dom/{theme.js → theme.mjs} +3 -3
- package/test/cases/dom/{updater.js → updater.mjs} +6 -6
- package/test/cases/dom/{util.js → util.mjs} +2 -2
- package/test/cases/dom/worker/{factory.js → factory.mjs} +4 -4
- package/test/cases/i18n/{formatter.js → formatter.mjs} +2 -2
- package/test/cases/i18n/{locale.js → locale.mjs} +1 -1
- package/test/cases/i18n/{provider.js → provider.mjs} +1 -1
- package/test/cases/i18n/providers/{fetch.js → fetch.mjs} +3 -3
- package/test/cases/i18n/{translations.js → translations.mjs} +2 -2
- package/test/cases/logging/handler/{console.js → console.mjs} +3 -3
- package/test/cases/logging/{handler.js → handler.mjs} +3 -3
- package/test/cases/logging/{logentry.js → logentry.mjs} +1 -1
- package/test/cases/logging/{logger.js → logger.mjs} +1 -1
- package/test/cases/math/random.mjs +101 -0
- package/test/cases/monster.mjs +20 -0
- package/test/cases/text/{formatter.js → formatter.mjs} +1 -1
- package/test/cases/types/{base.js → base.mjs} +1 -1
- package/test/cases/types/{basewithoptions.js → basewithoptions.mjs} +1 -1
- package/test/cases/types/{binary.js → binary.mjs} +1 -1
- package/test/cases/types/{dataurl.js → dataurl.mjs} +1 -1
- package/test/cases/types/{global.js → global.mjs} +1 -1
- package/test/cases/types/{id.js → id.mjs} +17 -6
- package/test/cases/types/{is.js → is.mjs} +20 -8
- package/test/cases/types/{mediatype.js → mediatype.mjs} +1 -1
- package/test/cases/types/{node.js → node.mjs} +3 -3
- package/test/cases/types/{nodelist.js → nodelist.mjs} +2 -2
- package/test/cases/types/{noderecursiveiterator.js → noderecursiveiterator.mjs} +3 -3
- package/test/cases/types/{observer.js → observer.mjs} +1 -1
- package/test/cases/types/{observerlist.js → observerlist.mjs} +2 -2
- package/test/cases/types/{proxyobserver.js → proxyobserver.mjs} +4 -4
- package/test/cases/types/{queue.js → queue.mjs} +1 -1
- package/test/cases/types/randomid.mjs +39 -0
- package/test/cases/types/regex.mjs +46 -0
- package/test/cases/types/{stack.js → stack.mjs} +1 -1
- package/test/cases/types/{tokenlist.js → tokenlist.mjs} +1 -1
- package/test/cases/types/{typeof.js → typeof.mjs} +3 -4
- package/test/cases/types/{uniquequeue.js → uniquequeue.mjs} +1 -1
- package/test/cases/types/{uuid.js → uuid.mjs} +30 -10
- package/test/cases/types/{validate.js → validate.mjs} +3 -4
- package/test/cases/types/{version.js → version.mjs} +1 -2
- package/test/cases/util/{clone.js → clone.mjs} +1 -1
- package/test/cases/util/{comparator.js → comparator.mjs} +1 -1
- package/test/cases/util/{deadmansswitch.js → deadmansswitch.mjs} +1 -1
- package/test/cases/util/{freeze.js → freeze.mjs} +1 -1
- package/test/cases/util/{processing.js → processing.mjs} +1 -1
- package/test/cases/util/{trimspaces.js → trimspaces.mjs} +1 -1
- package/test/util/{chai-dom.js → chai-dom.mjs} +0 -0
- package/test/util/{cleanupdom.js → cleanupdom.mjs} +0 -0
- package/test/util/{jsdom.js → jsdom.mjs} +2 -2
- package/test/util/{localstorage.js → localstorage.mjs} +0 -0
- package/test/web/import.js +77 -78
- package/test/web/prepare.js +0 -8
- package/test/web/test.html +5 -4
- package/test/web/tests.js +25731 -587
- package/dist/modules/constants.js +0 -2
- package/dist/modules/constraints/abstract.js +0 -2
- package/dist/modules/constraints/abstractoperator.js +0 -2
- package/dist/modules/constraints/andoperator.js +0 -2
- package/dist/modules/constraints/invalid.js +0 -2
- package/dist/modules/constraints/isarray.js +0 -2
- package/dist/modules/constraints/isobject.js +0 -2
- package/dist/modules/constraints/namespace.js +0 -2
- package/dist/modules/constraints/oroperator.js +0 -2
- package/dist/modules/constraints/valid.js +0 -2
- package/dist/modules/data/buildmap.js +0 -2
- package/dist/modules/data/buildtree.js +0 -2
- package/dist/modules/data/datasource/namespace.js +0 -2
- package/dist/modules/data/datasource/restapi/writeerror.js +0 -2
- package/dist/modules/data/datasource/restapi.js +0 -2
- package/dist/modules/data/datasource/storage/localstorage.js +0 -2
- package/dist/modules/data/datasource/storage/namespace.js +0 -2
- package/dist/modules/data/datasource/storage/sessionstorage.js +0 -2
- package/dist/modules/data/datasource/storage.js +0 -2
- package/dist/modules/data/datasource.js +0 -2
- package/dist/modules/data/diff.js +0 -2
- package/dist/modules/data/extend.js +0 -2
- package/dist/modules/data/namespace.js +0 -2
- package/dist/modules/data/pathfinder.js +0 -2
- package/dist/modules/data/pipe.js +0 -2
- package/dist/modules/data/transformer.js +0 -2
- package/dist/modules/dom/assembler.js +0 -2
- package/dist/modules/dom/attributes.js +0 -2
- package/dist/modules/dom/constants.js +0 -2
- package/dist/modules/dom/customcontrol.js +0 -2
- package/dist/modules/dom/customelement.js +0 -2
- package/dist/modules/dom/events.js +0 -2
- package/dist/modules/dom/focusmanager.js +0 -2
- package/dist/modules/dom/locale.js +0 -2
- package/dist/modules/dom/namespace.js +0 -2
- package/dist/modules/dom/ready.js +0 -2
- package/dist/modules/dom/resource/data.js +0 -2
- package/dist/modules/dom/resource/link/stylesheet.js +0 -2
- package/dist/modules/dom/resource/link.js +0 -2
- package/dist/modules/dom/resource/script.js +0 -2
- package/dist/modules/dom/resource.js +0 -2
- package/dist/modules/dom/resourcemanager.js +0 -2
- package/dist/modules/dom/template.js +0 -2
- package/dist/modules/dom/theme.js +0 -2
- package/dist/modules/dom/updater.js +0 -2
- package/dist/modules/dom/util.js +0 -2
- package/dist/modules/dom/worker/factory.js +0 -2
- package/dist/modules/i18n/formatter.js +0 -2
- package/dist/modules/i18n/locale.js +0 -2
- package/dist/modules/i18n/namespace.js +0 -2
- package/dist/modules/i18n/provider.js +0 -2
- package/dist/modules/i18n/providers/fetch.js +0 -2
- package/dist/modules/i18n/providers/namespace.js +0 -2
- package/dist/modules/i18n/translations.js +0 -2
- package/dist/modules/logging/handler/console.js +0 -2
- package/dist/modules/logging/handler/namespace.js +0 -2
- package/dist/modules/logging/handler.js +0 -2
- package/dist/modules/logging/logentry.js +0 -2
- package/dist/modules/logging/logger.js +0 -2
- package/dist/modules/logging/namespace.js +0 -2
- package/dist/modules/math/namespace.js +0 -2
- package/dist/modules/math/random.js +0 -2
- package/dist/modules/monster.js +0 -2
- package/dist/modules/namespace.js +0 -2
- package/dist/modules/text/formatter.js +0 -2
- package/dist/modules/text/namespace.js +0 -2
- package/dist/modules/types/base.js +0 -2
- package/dist/modules/types/basewithoptions.js +0 -2
- package/dist/modules/types/binary.js +0 -2
- package/dist/modules/types/dataurl.js +0 -2
- package/dist/modules/types/global.js +0 -2
- package/dist/modules/types/id.js +0 -2
- package/dist/modules/types/is.js +0 -2
- package/dist/modules/types/mediatype.js +0 -2
- package/dist/modules/types/namespace.js +0 -2
- package/dist/modules/types/node.js +0 -2
- package/dist/modules/types/nodelist.js +0 -2
- package/dist/modules/types/noderecursiveiterator.js +0 -2
- package/dist/modules/types/observer.js +0 -2
- package/dist/modules/types/observerlist.js +0 -2
- package/dist/modules/types/proxyobserver.js +0 -2
- package/dist/modules/types/queue.js +0 -2
- package/dist/modules/types/randomid.js +0 -2
- package/dist/modules/types/regex.js +0 -2
- package/dist/modules/types/stack.js +0 -2
- package/dist/modules/types/tokenlist.js +0 -2
- package/dist/modules/types/typeof.js +0 -2
- package/dist/modules/types/uniquequeue.js +0 -2
- package/dist/modules/types/uuid.js +0 -2
- package/dist/modules/types/validate.js +0 -2
- package/dist/modules/types/version.js +0 -2
- package/dist/modules/util/clone.js +0 -2
- package/dist/modules/util/comparator.js +0 -2
- package/dist/modules/util/deadmansswitch.js +0 -2
- package/dist/modules/util/freeze.js +0 -2
- package/dist/modules/util/namespace.js +0 -2
- package/dist/modules/util/processing.js +0 -2
- package/dist/modules/util/trimspaces.js +0 -2
- package/dist/monster.dev.js +0 -15490
- package/dist/monster.dev.js.map +0 -1
- package/dist/monster.js +0 -2
- package/source/constraints/andoperator.js +0 -71
- package/source/constraints/invalid.js +0 -63
- package/source/constraints/isarray.js +0 -71
- package/source/constraints/isobject.js +0 -72
- package/source/constraints/valid.js +0 -63
- package/source/data/datasource/storage/localstorage.js +0 -64
- package/source/data/datasource/storage/sessionstorage.js +0 -61
- package/source/dom/resource/link/stylesheet.js +0 -54
- package/source/i18n/provider.js +0 -58
- package/source/i18n/providers/namespace.js +0 -16
- package/source/logging/handler/console.js +0 -66
- package/source/logging/handler/namespace.js +0 -14
- package/source/logging/logentry.js +0 -68
- package/source/monster.js +0 -80
- package/source/namespace.js +0 -171
- package/source/types/base.js +0 -50
- package/source/types/is.js +0 -429
- package/source/types/package.d.ts +0 -1
- package/source/types/randomid.js +0 -60
- package/source/types/regex.js +0 -49
- package/source/types/typeof.js +0 -63
- package/source/util/freeze.js +0 -57
- package/test/cases/math/random.js +0 -82
- package/test/cases/monster.js +0 -23
- package/test/cases/namespace.js +0 -93
- package/test/cases/types/randomid.js +0 -24
- package/test/cases/types/regex.js +0 -32
- package/test/web/monster-dev.html +0 -22
- package/test/web/monster.html +0 -21
|
@@ -1,36 +1,24 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
8
|
+
import {Base} from './base.mjs';
|
|
9
|
+
import {isObject} from './is.mjs';
|
|
10
|
+
import {TokenList} from './tokenlist.mjs';
|
|
11
|
+
import {UniqueQueue} from './uniquequeue.mjs';
|
|
12
|
+
|
|
13
|
+
export {Observer}
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* An observer manages a callback function
|
|
15
17
|
*
|
|
16
|
-
* You can call the method via the monster namespace `new Monster.Types.Observer()`.
|
|
17
|
-
*
|
|
18
|
-
* ```
|
|
19
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
20
|
-
* new Monster.Types.Observer()
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* Alternatively, you can also integrate this function individually.
|
|
24
|
-
*
|
|
25
|
-
* ```
|
|
26
|
-
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/observer.js';
|
|
27
|
-
* new Observer()
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
18
|
* The update method is called with the subject object as this pointer. For this reason the callback should not
|
|
31
|
-
* be an arrow function, because it gets
|
|
19
|
+
* be an arrow function, because it gets this pointer of its own context.
|
|
32
20
|
*
|
|
33
|
-
* ```
|
|
21
|
+
* ```js
|
|
34
22
|
* new Observer(()=>{
|
|
35
23
|
* // this is not subject
|
|
36
24
|
* })
|
|
@@ -42,7 +30,7 @@ import {UniqueQueue} from './uniquequeue.js';
|
|
|
42
30
|
*
|
|
43
31
|
* Additional arguments can be passed to the callback. To do this, simply specify them.
|
|
44
32
|
*
|
|
45
|
-
* ```
|
|
33
|
+
* ```js
|
|
46
34
|
* Observer(function(a, b, c) {
|
|
47
35
|
* console.log(a, b, c); // ↦ "a", 2, true
|
|
48
36
|
* }, "a", 2, true)
|
|
@@ -50,17 +38,8 @@ import {UniqueQueue} from './uniquequeue.js';
|
|
|
50
38
|
*
|
|
51
39
|
* The callback function must have as many parameters as arguments are given.
|
|
52
40
|
*
|
|
53
|
-
* @example
|
|
54
|
-
*
|
|
55
|
-
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/observer.js';
|
|
56
|
-
*
|
|
57
|
-
* const observer = new Observer(function(a, b, c) {
|
|
58
|
-
* console.log(this, a, b, c); // ↦ "a", 2, true
|
|
59
|
-
* }, "a", 2, true);
|
|
60
|
-
*
|
|
61
|
-
* observer.update({value:true}).then(()=>{});
|
|
62
|
-
* // ↦ {value: true} "a" 2 true
|
|
63
|
-
*
|
|
41
|
+
* @externalExample ../../example/types/observer.mjs
|
|
42
|
+
* @license AGPLv3
|
|
64
43
|
* @since 1.0.0
|
|
65
44
|
* @copyright schukai GmbH
|
|
66
45
|
* @memberOf Monster.Types
|
|
@@ -168,9 +147,3 @@ class Observer extends Base {
|
|
|
168
147
|
};
|
|
169
148
|
|
|
170
149
|
}
|
|
171
|
-
|
|
172
|
-
assignToNamespace('Monster.Types', Observer);
|
|
173
|
-
export {Monster, Observer}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
@@ -1,37 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
5
|
+
* Node module: @schukai/monster
|
|
6
|
+
* This file is licensed under the AGPLv3 License.
|
|
7
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
8
|
*/
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
import {Base} from './base.
|
|
9
|
-
import {Observer} from "./observer.
|
|
10
|
-
import {validateInstance} from "./validate.
|
|
10
|
+
|
|
11
|
+
import {Base} from './base.mjs';
|
|
12
|
+
import {Observer} from "./observer.mjs";
|
|
13
|
+
import {validateInstance} from "./validate.mjs";
|
|
14
|
+
|
|
15
|
+
export {ObserverList}
|
|
11
16
|
|
|
12
17
|
/**
|
|
13
18
|
* With the help of the ObserverList class, observer can be managed.
|
|
14
19
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* ```
|
|
18
|
-
* <script type="module">
|
|
19
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
20
|
-
* console.log(new Monster.Types.ObserverList())
|
|
21
|
-
* console.log(new Monster.Types.ObserverList())
|
|
22
|
-
* </script>
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* Alternatively, you can also integrate this function individually.
|
|
26
|
-
*
|
|
27
|
-
* ```
|
|
28
|
-
* <script type="module">
|
|
29
|
-
* import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/observerlist.js';
|
|
30
|
-
* console.log(ObserverList())
|
|
31
|
-
* console.log(ObserverList())
|
|
32
|
-
* </script>
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
20
|
+
* @license AGPLv3
|
|
35
21
|
* @since 1.0.0
|
|
36
22
|
* @copyright schukai GmbH
|
|
37
23
|
* @memberOf Monster.Types
|
|
@@ -113,6 +99,3 @@ class ObserverList extends Base {
|
|
|
113
99
|
};
|
|
114
100
|
|
|
115
101
|
}
|
|
116
|
-
|
|
117
|
-
assignToNamespace('Monster.Types', ObserverList);
|
|
118
|
-
export {Monster, ObserverList}
|
|
@@ -1,74 +1,34 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
import {Base} from './base.
|
|
8
|
-
import {isArray, isObject, isPrimitive} from "./is.
|
|
9
|
-
import {Observer} from "./observer.
|
|
10
|
-
import {ObserverList} from "./observerlist.
|
|
11
|
-
import {validateObject} from "./validate.
|
|
12
|
-
import {extend} from "../data/extend.
|
|
7
|
+
|
|
8
|
+
import {Base} from './base.mjs';
|
|
9
|
+
import {isArray, isObject, isPrimitive} from "./is.mjs";
|
|
10
|
+
import {Observer} from "./observer.mjs";
|
|
11
|
+
import {ObserverList} from "./observerlist.mjs";
|
|
12
|
+
import {validateObject} from "./validate.mjs";
|
|
13
|
+
import {extend} from "../data/extend.mjs";
|
|
14
|
+
|
|
15
|
+
export {ProxyObserver}
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* An observer manages a callback function
|
|
16
19
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* ```
|
|
20
|
-
* <script type="module">
|
|
21
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
22
|
-
* new Monster.Types.ProxyObserver()
|
|
23
|
-
* </script>
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* Alternatively, you can also integrate this class individually.
|
|
27
|
-
*
|
|
28
|
-
* ```
|
|
29
|
-
* <script type="module">
|
|
30
|
-
* import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/proxyobserver.js';
|
|
31
|
-
* new ProxyObserver()
|
|
32
|
-
* </script>
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* with the ProxyObserver you can attach observer for observation. with each change at the object to be observed an update takes place.
|
|
20
|
+
* With the ProxyObserver you can attach observer for observation.
|
|
21
|
+
* With each change at the object to be observed an update takes place.
|
|
36
22
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
*
|
|
41
|
-
* import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/proxyobserver.js';
|
|
42
|
-
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/observer.js';
|
|
43
|
-
* import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/is.js';
|
|
44
|
-
*
|
|
45
|
-
* const o = new Observer(function () {
|
|
46
|
-
* if (isObject(this) && this instanceof ProxyObserver) {
|
|
47
|
-
* // do something (this ist ProxyObserver)
|
|
48
|
-
* const subject = this.getSubject();
|
|
49
|
-
* console.log(subject);
|
|
50
|
-
* }
|
|
51
|
-
* });
|
|
52
|
-
*
|
|
53
|
-
* let realSubject = {
|
|
54
|
-
* a: {
|
|
55
|
-
* b: {
|
|
56
|
-
* c: true
|
|
57
|
-
* },
|
|
58
|
-
* d: 9
|
|
59
|
-
* }
|
|
60
|
-
* }
|
|
61
|
-
*
|
|
62
|
-
* const p = new ProxyObserver(realSubject);
|
|
63
|
-
* p.attachObserver(o);
|
|
64
|
-
* const s = p.getSubject();
|
|
65
|
-
* s.a.b.c = false;
|
|
23
|
+
* This also applies to nested objects.
|
|
66
24
|
*
|
|
25
|
+
* @externalExample ../../example/types/proxyobserver.mjs
|
|
26
|
+
* @license AGPLv3
|
|
67
27
|
* @since 1.0.0
|
|
68
28
|
* @copyright schukai GmbH
|
|
69
29
|
* @memberOf Monster.Types
|
|
70
30
|
*/
|
|
71
|
-
class ProxyObserver extends Base {
|
|
31
|
+
class ProxyObserver extends Base {
|
|
72
32
|
|
|
73
33
|
/**
|
|
74
34
|
*
|
|
@@ -167,9 +127,6 @@ class ProxyObserver extends Base {
|
|
|
167
127
|
|
|
168
128
|
}
|
|
169
129
|
|
|
170
|
-
assignToNamespace('Monster.Types', ProxyObserver);
|
|
171
|
-
export {Monster, ProxyObserver}
|
|
172
|
-
|
|
173
130
|
/**
|
|
174
131
|
*
|
|
175
132
|
* @returns {{defineProperty: (function(*=, *=, *=): *), setPrototypeOf: (function(*, *=): boolean), set: (function(*, *, *, *): boolean), get: ((function(*=, *=, *=): (undefined))|*), deleteProperty: ((function(*, *): (boolean))|*)}}
|
|
@@ -1,53 +1,19 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
import {Base} from './base.
|
|
7
|
+
|
|
8
|
+
import {Base} from './base.mjs';
|
|
9
|
+
|
|
10
|
+
export {Queue}
|
|
8
11
|
|
|
9
12
|
/**
|
|
10
13
|
* You can create the instance via the monster namespace `new Monster.Types.Queue()`.
|
|
11
14
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
15
|
-
* new Monster.Types.Queue()
|
|
16
|
-
* </script>
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* Alternatively, you can also integrate this function individually.
|
|
20
|
-
*
|
|
21
|
-
* ```
|
|
22
|
-
* <script type="module">
|
|
23
|
-
* import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/queue.js';
|
|
24
|
-
* new Queue()
|
|
25
|
-
* </script>
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
*
|
|
30
|
-
* import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/queue.js';
|
|
31
|
-
*
|
|
32
|
-
* const queue = new Queue;
|
|
33
|
-
*
|
|
34
|
-
* queue.add(2);
|
|
35
|
-
* queue.add(true);
|
|
36
|
-
* queue.add("Hello");
|
|
37
|
-
* queue.add(4.5);
|
|
38
|
-
*
|
|
39
|
-
* console.log(queue.poll());
|
|
40
|
-
* // ↦ 2
|
|
41
|
-
* console.log(queue.poll());
|
|
42
|
-
* // ↦ true
|
|
43
|
-
* console.log(queue.poll());
|
|
44
|
-
* // ↦ "Hello"
|
|
45
|
-
* console.log(queue.poll());
|
|
46
|
-
* // ↦ 4.5
|
|
47
|
-
* console.log(queue.poll());
|
|
48
|
-
* // ↦ undefined
|
|
49
|
-
*
|
|
50
|
-
*
|
|
15
|
+
* @externalExample ../../example/types/queue.mjs
|
|
16
|
+
* @license AGPLv3
|
|
51
17
|
* @since 1.4.0
|
|
52
18
|
* @copyright schukai GmbH
|
|
53
19
|
* @memberOf Monster.Types
|
|
@@ -120,6 +86,3 @@ class Queue extends Base {
|
|
|
120
86
|
|
|
121
87
|
|
|
122
88
|
}
|
|
123
|
-
|
|
124
|
-
assignToNamespace('Monster.Types', Queue);
|
|
125
|
-
export {Monster, Queue}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {random} from "../math/random.mjs";
|
|
9
|
+
import {getGlobal} from "./global.mjs";
|
|
10
|
+
import {ID} from "./id.mjs";
|
|
11
|
+
|
|
12
|
+
export {RandomID}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @private
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
let internalCounter = 0;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The `RandomID` class provides a unique ID for an item.
|
|
22
|
+
*
|
|
23
|
+
* @license AGPLv3
|
|
24
|
+
* @since 1.6.0
|
|
25
|
+
* @copyright schukai GmbH
|
|
26
|
+
* @memberOf Monster.Types
|
|
27
|
+
* @summary class to generate random numbers
|
|
28
|
+
*/
|
|
29
|
+
class RandomID extends ID {
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* create new object
|
|
33
|
+
*/
|
|
34
|
+
constructor() {
|
|
35
|
+
super();
|
|
36
|
+
|
|
37
|
+
internalCounter += 1;
|
|
38
|
+
|
|
39
|
+
this.id = getGlobal().btoa(random(1, 10000))
|
|
40
|
+
.replace(/=/g, '')
|
|
41
|
+
/** No numbers at the beginning of the ID, because of possible problems with DOM */
|
|
42
|
+
.replace(/^[0-9]+/, 'X') + internalCounter;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {validateString} from "./validate.mjs";
|
|
9
|
+
|
|
10
|
+
export {escapeString}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This function prefixes all special characters that may appear in a regex with a slash.
|
|
14
|
+
*
|
|
15
|
+
* @param {string} value
|
|
16
|
+
* @return {string}
|
|
17
|
+
* @license AGPLv3
|
|
18
|
+
* @since 1.26.0
|
|
19
|
+
* @copyright schukai GmbH
|
|
20
|
+
* @memberOf Monster.Types
|
|
21
|
+
* @throws {TypeError} value is not a string
|
|
22
|
+
*/
|
|
23
|
+
function escapeString(value) {
|
|
24
|
+
return validateString(value)
|
|
25
|
+
.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
|
|
26
|
+
.replace(/-/g, '\\x2d');
|
|
27
|
+
}
|
|
@@ -1,31 +1,18 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
|
|
8
|
+
import {Base} from './base.mjs';
|
|
9
|
+
|
|
10
|
+
export {Stack}
|
|
9
11
|
|
|
10
12
|
/**
|
|
11
13
|
* You can call the method via the monster namespace `new Monster.Types.Queue()`.
|
|
12
14
|
*
|
|
13
|
-
*
|
|
14
|
-
* <script type="module">
|
|
15
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
16
|
-
* console.log(new Monster.Types.Stack())
|
|
17
|
-
* </script>
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* Alternatively, you can also integrate this function individually.
|
|
21
|
-
*
|
|
22
|
-
* ```
|
|
23
|
-
* <script type="module">
|
|
24
|
-
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/stack.js';
|
|
25
|
-
* console.log(new Stack())
|
|
26
|
-
* </script>
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
15
|
+
* @license AGPLv3
|
|
29
16
|
* @since 1.4.0
|
|
30
17
|
* @copyright schukai GmbH
|
|
31
18
|
* @memberOf Monster.Types
|
|
@@ -98,6 +85,3 @@ class Stack extends Base {
|
|
|
98
85
|
|
|
99
86
|
|
|
100
87
|
}
|
|
101
|
-
|
|
102
|
-
assignToNamespace('Monster.Types', Stack);
|
|
103
|
-
export {Monster, Stack}
|
|
@@ -1,44 +1,25 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
8
|
+
import {isIterable, isString} from '../types/is.mjs';
|
|
9
|
+
import {validateFunction, validateString} from '../types/validate.mjs';
|
|
10
|
+
import {Base} from './base.mjs';
|
|
11
|
+
|
|
12
|
+
export {TokenList}
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
|
-
* A
|
|
14
|
-
*
|
|
15
|
-
* The tokenlist offers various functions to manipulate values. For example, you can add, remove or replace a class in a CSS list.
|
|
16
|
-
*
|
|
17
|
-
* You can call the method via the monster namespace `new Monster.Types.TokenList()`.
|
|
18
|
-
*
|
|
19
|
-
* ```
|
|
20
|
-
* <script type="module">
|
|
21
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
22
|
-
* new Monster.Types.TokenList("myclass row")
|
|
23
|
-
* </script>
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* Alternatively, you can also integrate this function individually.
|
|
15
|
+
* A `TokenList` allows you to manage tokens (individual character strings such as css classes in an attribute string).
|
|
27
16
|
*
|
|
28
|
-
*
|
|
29
|
-
* <script type="module">
|
|
30
|
-
* import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/tokenlist.js';
|
|
31
|
-
* new TokenList("myclass row")
|
|
32
|
-
* </script>
|
|
33
|
-
* ```
|
|
17
|
+
* The `TokenList` offers various functions to manipulate values. For example, you can add, remove or replace a class in a CSS list.
|
|
34
18
|
*
|
|
35
19
|
* This class implements the [iteration protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols).
|
|
36
20
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* // ↦ "function"
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
21
|
+
* @externalExample ../../example/types/tokenlist-1.mjs
|
|
22
|
+
* @license AGPLv3
|
|
42
23
|
* @since 1.2.0
|
|
43
24
|
* @copyright schukai GmbH
|
|
44
25
|
* @memberOf Monster.Types
|
|
@@ -94,14 +75,7 @@ class TokenList extends Base {
|
|
|
94
75
|
/**
|
|
95
76
|
* Returns true if it contains token, otherwise false
|
|
96
77
|
*
|
|
97
|
-
*
|
|
98
|
-
* new TokenList("start middle end").contains('start')); // ↦ true
|
|
99
|
-
* new TokenList("start middle end").contains('end')); // ↦ true
|
|
100
|
-
* new TokenList("start middle end").contains('xyz')); // ↦ false
|
|
101
|
-
* new TokenList("start middle end").contains(['end','start','middle'])); // ↦ true
|
|
102
|
-
* new TokenList("start middle end").contains(['end','start','xyz'])); // ↦ false
|
|
103
|
-
* ```
|
|
104
|
-
*
|
|
78
|
+
* @externalExample ../../example/types/tokenlist-2.mjs
|
|
105
79
|
* @param {array|string|iteratable} value
|
|
106
80
|
* @returns {boolean}
|
|
107
81
|
*/
|
|
@@ -130,14 +104,9 @@ class TokenList extends Base {
|
|
|
130
104
|
}
|
|
131
105
|
|
|
132
106
|
/**
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
* ```
|
|
136
|
-
* new TokenList().add("abc xyz").toString(); // ↦ "abc xyz"
|
|
137
|
-
* new TokenList().add(["abc","xyz"]).toString(); // ↦ "abc xyz"
|
|
138
|
-
* new TokenList().add(undefined); // ↦ add nothing
|
|
139
|
-
* ```
|
|
107
|
+
* Add tokens
|
|
140
108
|
*
|
|
109
|
+
* @externalExample ../../example/types/tokenlist-3.mjs
|
|
141
110
|
* @param {array|string|iteratable} value
|
|
142
111
|
* @returns {TokenList}
|
|
143
112
|
* @throws {TypeError} unsupported value
|
|
@@ -172,12 +141,7 @@ class TokenList extends Base {
|
|
|
172
141
|
/**
|
|
173
142
|
* Removes token
|
|
174
143
|
*
|
|
175
|
-
*
|
|
176
|
-
* new TokenList("abc xyz").remove("xyz").toString(); // ↦ "abc"
|
|
177
|
-
* new TokenList("abc xyz").remove(["xyz"]).toString(); // ↦ "abc"
|
|
178
|
-
* new TokenList("abc xyz").remove(undefined); // ↦ remove nothing
|
|
179
|
-
* ```
|
|
180
|
-
*
|
|
144
|
+
* @externalExample ../../example/types/tokenlist-4.mjs
|
|
181
145
|
* @param {array|string|iteratable} value
|
|
182
146
|
* @returns {TokenList}
|
|
183
147
|
* @throws {TypeError} unsupported value
|
|
@@ -193,7 +157,7 @@ class TokenList extends Base {
|
|
|
193
157
|
this.tokens.delete(token.trim());
|
|
194
158
|
}
|
|
195
159
|
} else if (typeof value !== "undefined") {
|
|
196
|
-
throw new TypeError("unsupported value", "types/tokenlist.
|
|
160
|
+
throw new TypeError("unsupported value", "types/tokenlist.mjs");
|
|
197
161
|
}
|
|
198
162
|
|
|
199
163
|
return this;
|
|
@@ -232,12 +196,7 @@ class TokenList extends Base {
|
|
|
232
196
|
/**
|
|
233
197
|
* Removes token from string. If token doesn't exist it's added.
|
|
234
198
|
*
|
|
235
|
-
*
|
|
236
|
-
* new TokenList("abc def ghi").toggle("def xyz").toString(); // ↦ "abc ghi xyz"
|
|
237
|
-
* new TokenList("abc def ghi").toggle(["abc","xyz"]).toString(); // ↦ "def ghi xyz"
|
|
238
|
-
* new TokenList().toggle(undefined); // ↦ nothing
|
|
239
|
-
* ```
|
|
240
|
-
*
|
|
199
|
+
* @externalExample ../../example/types/tokenlist-5.mjs
|
|
241
200
|
* @param {array|string|iteratable} value
|
|
242
201
|
* @returns {boolean}
|
|
243
202
|
* @throws {TypeError} unsupported value
|
|
@@ -253,7 +212,7 @@ class TokenList extends Base {
|
|
|
253
212
|
toggleValue.call(this, token);
|
|
254
213
|
}
|
|
255
214
|
} else if (typeof value !== "undefined") {
|
|
256
|
-
throw new TypeError("unsupported value", "types/tokenlist.
|
|
215
|
+
throw new TypeError("unsupported value", "types/tokenlist.mjs");
|
|
257
216
|
}
|
|
258
217
|
|
|
259
218
|
return this;
|
|
@@ -309,6 +268,3 @@ function toggleValue(token) {
|
|
|
309
268
|
this.add(token);
|
|
310
269
|
return this;
|
|
311
270
|
}
|
|
312
|
-
|
|
313
|
-
assignToNamespace('Monster.Types', TokenList);
|
|
314
|
-
export {Monster, TokenList}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export {typeOf}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The built-in typeof method is known to have some historical weaknesses. This function tries to provide a better and more accurate result.
|
|
12
|
+
*
|
|
13
|
+
* @externalExample ../../example/types/typeof.mjs
|
|
14
|
+
* @param {*} value
|
|
15
|
+
* @return {string}
|
|
16
|
+
* @license AGPLv3
|
|
17
|
+
* @since 1.7.0
|
|
18
|
+
* @copyright schukai GmbH
|
|
19
|
+
* @memberOf Monster.Types
|
|
20
|
+
* @throws {TypeError} value is not a primitive
|
|
21
|
+
*/
|
|
22
|
+
function typeOf(value) {
|
|
23
|
+
let type = ({}).toString.call(value).match(/\s([a-zA-Z]+)/)[1];
|
|
24
|
+
if ('Object' === type) {
|
|
25
|
+
|
|
26
|
+
const name = value.constructor.name;
|
|
27
|
+
if (name) {
|
|
28
|
+
return name.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const results = (/^(class|function)\s+(\w+)/).exec(value.constructor.toString());
|
|
32
|
+
type = (results && results.length > 2) ? results[2] : '';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return type.toLowerCase();
|
|
36
|
+
}
|
|
37
|
+
|
|
@@ -1,38 +1,25 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
2
|
+
* Copyright schukai GmbH and contributors 2022. All Rights Reserved.
|
|
3
|
+
* Node module: @schukai/monster
|
|
4
|
+
* This file is licensed under the AGPLv3 License.
|
|
5
|
+
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import {Queue} from "./queue.mjs";
|
|
9
|
+
import {validateObject} from "./validate.mjs";
|
|
10
|
+
|
|
11
|
+
export {UniqueQueue}
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* ```
|
|
15
|
-
* <script type="module">
|
|
16
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/monster.js';
|
|
17
|
-
* new Monster.Types.UniqueQueue()
|
|
18
|
-
* </script>
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* Alternatively, you can also integrate this function individually.
|
|
22
|
-
*
|
|
23
|
-
* ```
|
|
24
|
-
* <script type="module">
|
|
25
|
-
* import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.31.0/dist/modules/types/uniquequeue.js';
|
|
26
|
-
* new UniqueQueue()
|
|
27
|
-
* </script>
|
|
28
|
-
* ```
|
|
14
|
+
* A UniqueQueue is a queue that contains items only once.
|
|
29
15
|
*
|
|
16
|
+
* @license AGPLv3
|
|
30
17
|
* @since 1.4.0
|
|
31
18
|
* @copyright schukai GmbH
|
|
32
19
|
* @memberOf Monster.Types
|
|
33
20
|
* @summary A queue for unique values
|
|
34
21
|
*/
|
|
35
|
-
class UniqueQueue extends Queue {
|
|
22
|
+
class UniqueQueue extends Queue {
|
|
36
23
|
|
|
37
24
|
/**
|
|
38
25
|
*
|
|
@@ -90,6 +77,3 @@ class UniqueQueue extends Queue {
|
|
|
90
77
|
|
|
91
78
|
|
|
92
79
|
}
|
|
93
|
-
|
|
94
|
-
assignToNamespace('Monster.Types', UniqueQueue);
|
|
95
|
-
export {Monster, UniqueQueue}
|