@schukai/monster 1.12.0 → 1.15.0
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 +40 -1
- package/README.md +5 -5
- package/dist/modules/constants.js +2 -0
- package/dist/modules/constraints/abstract.js +2 -2
- package/dist/modules/constraints/abstractoperator.js +2 -2
- package/dist/modules/constraints/andoperator.js +2 -2
- package/dist/modules/constraints/invalid.js +2 -2
- package/dist/modules/constraints/isarray.js +2 -2
- package/dist/modules/constraints/isobject.js +2 -2
- package/dist/modules/constraints/namespace.js +1 -1
- package/dist/modules/constraints/oroperator.js +2 -2
- package/dist/modules/constraints/valid.js +2 -2
- package/dist/modules/data/buildmap.js +2 -2
- package/dist/modules/data/diff.js +2 -2
- package/dist/modules/data/extend.js +2 -2
- package/dist/modules/data/namespace.js +1 -1
- package/dist/modules/data/pathfinder.js +2 -2
- package/dist/modules/data/pipe.js +2 -2
- package/dist/modules/data/transformer.js +2 -2
- package/dist/modules/dom/assembler.js +2 -2
- package/dist/modules/dom/attributes.js +2 -2
- package/dist/modules/dom/constants.js +2 -2
- package/dist/modules/dom/customcontrol.js +2 -0
- package/dist/modules/dom/customelement.js +2 -2
- package/dist/modules/dom/events.js +2 -2
- package/dist/modules/dom/locale.js +2 -0
- package/dist/modules/dom/namespace.js +1 -1
- package/dist/modules/dom/template.js +2 -2
- package/dist/modules/dom/theme.js +2 -2
- package/dist/modules/dom/updater.js +2 -2
- package/dist/modules/dom/util.js +2 -2
- package/dist/modules/i18n/locale.js +2 -0
- package/dist/modules/i18n/namespace.js +2 -0
- package/dist/modules/i18n/provider.js +2 -0
- package/dist/modules/i18n/providers/fetch.js +2 -0
- package/dist/modules/i18n/providers/namespace.js +2 -0
- package/dist/modules/i18n/translations.js +2 -0
- package/dist/modules/logging/handler/console.js +2 -2
- package/dist/modules/logging/handler/namespace.js +1 -1
- package/dist/modules/logging/handler.js +2 -2
- package/dist/modules/logging/logentry.js +2 -2
- package/dist/modules/logging/logger.js +2 -2
- package/dist/modules/logging/namespace.js +1 -1
- package/dist/modules/math/namespace.js +1 -1
- package/dist/modules/math/random.js +2 -2
- package/dist/modules/monster.js +2 -2
- package/dist/modules/namespace.js +1 -1
- package/dist/modules/text/formatter.js +2 -2
- package/dist/modules/text/namespace.js +1 -1
- package/dist/modules/types/base.js +2 -2
- package/dist/modules/types/basewithoptions.js +2 -0
- package/dist/modules/types/global.js +2 -2
- package/dist/modules/types/id.js +2 -2
- package/dist/modules/types/is.js +2 -2
- package/dist/modules/types/namespace.js +1 -1
- package/dist/modules/types/observer.js +2 -2
- package/dist/modules/types/observerlist.js +2 -2
- package/dist/modules/types/proxyobserver.js +2 -2
- package/dist/modules/types/queue.js +2 -2
- package/dist/modules/types/randomid.js +2 -2
- package/dist/modules/types/stack.js +2 -2
- package/dist/modules/types/tokenlist.js +2 -2
- package/dist/modules/types/typeof.js +2 -2
- package/dist/modules/types/uniquequeue.js +2 -2
- package/dist/modules/types/validate.js +2 -2
- package/dist/modules/types/version.js +2 -2
- package/dist/modules/util/clone.js +2 -2
- package/dist/modules/util/comparator.js +2 -2
- package/dist/modules/util/freeze.js +2 -2
- package/dist/modules/util/namespace.js +1 -1
- package/dist/monster.dev.js +8692 -6669
- package/dist/monster.dev.js.map +1 -1
- package/dist/monster.js +3 -3
- package/package.json +1 -1
- package/source/constants.js +22 -0
- package/source/constraints/abstract.js +2 -2
- package/source/constraints/abstractoperator.js +3 -3
- package/source/constraints/andoperator.js +7 -7
- package/source/constraints/invalid.js +6 -6
- package/source/constraints/isarray.js +6 -6
- package/source/constraints/isobject.js +6 -6
- package/source/constraints/namespace.js +2 -0
- package/source/constraints/oroperator.js +8 -8
- package/source/constraints/valid.js +6 -6
- package/source/data/buildmap.js +15 -15
- package/source/data/diff.js +6 -6
- package/source/data/extend.js +55 -13
- package/source/data/namespace.js +2 -0
- package/source/data/pathfinder.js +6 -7
- package/source/data/pipe.js +5 -5
- package/source/data/transformer.js +6 -6
- package/source/dom/assembler.js +5 -5
- package/source/dom/attributes.js +89 -45
- package/source/dom/constants.js +8 -9
- package/source/dom/customcontrol.js +301 -0
- package/source/dom/customelement.js +149 -31
- package/source/dom/events.js +58 -8
- package/source/dom/locale.js +59 -0
- package/source/dom/namespace.js +2 -0
- package/source/dom/template.js +7 -7
- package/source/dom/theme.js +6 -6
- package/source/dom/updater.js +38 -11
- package/source/dom/util.js +10 -10
- package/source/i18n/locale.js +322 -0
- package/source/i18n/namespace.js +15 -0
- package/source/i18n/provider.js +58 -0
- package/source/i18n/providers/fetch.js +121 -0
- package/source/i18n/providers/namespace.js +15 -0
- package/source/i18n/translations.js +209 -0
- package/source/logging/handler/console.js +4 -4
- package/source/logging/handler.js +4 -4
- package/source/logging/logentry.js +4 -4
- package/source/logging/logger.js +4 -4
- package/source/logging/namespace.js +2 -0
- package/source/math/namespace.js +2 -0
- package/source/math/random.js +5 -5
- package/source/monster.js +26 -16
- package/source/namespace.js +10 -8
- package/source/text/formatter.js +4 -5
- package/source/text/namespace.js +1 -1
- package/source/types/base.js +4 -7
- package/source/types/basewithoptions.js +97 -0
- package/source/types/global.js +6 -6
- package/source/types/id.js +6 -6
- package/source/types/is.js +22 -22
- package/source/types/namespace.js +3 -1
- package/source/types/observer.js +5 -5
- package/source/types/observerlist.js +4 -4
- package/source/types/proxyobserver.js +32 -26
- package/source/types/queue.js +13 -7
- package/source/types/randomid.js +5 -5
- package/source/types/stack.js +11 -4
- package/source/types/tokenlist.js +4 -4
- package/source/types/typeof.js +5 -5
- package/source/types/uniquequeue.js +11 -4
- package/source/types/validate.js +22 -22
- package/source/types/version.js +9 -9
- package/source/util/clone.js +4 -4
- package/source/util/comparator.js +6 -6
- package/source/util/freeze.js +4 -4
- package/source/util/namespace.js +2 -0
- package/test/cases/data/extend.js +66 -13
- package/test/cases/dom/attributes.js +56 -1
- package/test/cases/dom/customcontrol.js +264 -0
- package/test/cases/dom/customelement.js +112 -51
- package/test/cases/dom/events.js +32 -14
- package/test/cases/dom/locale.js +44 -0
- package/test/cases/i18n/locale.js +80 -0
- package/test/cases/i18n/provider.js +15 -0
- package/test/cases/i18n/providers/fetch.js +65 -0
- package/test/cases/i18n/translations.js +57 -0
- package/test/cases/monster.js +3 -1
- package/test/cases/{util → text}/formatter.js +2 -0
- package/test/cases/types/basewithoptions.js +25 -0
- package/test/cases/types/proxyobserver.js +9 -0
- package/test/cases/{text → util}/clone.js +0 -0
- package/test/cases/{text → util}/comparator.js +0 -0
- package/test/util/jsdom.js +4 -0
- package/test/web/import.js +10 -3
- package/test/web/monster-dev.html +3 -3
- package/test/web/monster.html +3 -3
- package/test/web/test.html +3 -3
- package/test/web/tests.js +3 -3
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @author schukai GmbH
|
|
5
|
+
*/
|
|
6
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
7
|
+
import { Base} from "../types/base.js";
|
|
8
|
+
import {isObject, isString} from "../types/is.js";
|
|
9
|
+
import {validateInstance, validateInteger, validateObject, validateString} from "../types/validate.js";
|
|
10
|
+
import {Locale, parseLocale} from "./locale.js";
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* With this class you can manage translations and access the keys.
|
|
15
|
+
*
|
|
16
|
+
* You can call the method via the monster namespace `new Monster.I18n.Translations()`.
|
|
17
|
+
*
|
|
18
|
+
* ```
|
|
19
|
+
* <script type="module">
|
|
20
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/i18n/translations.js';
|
|
21
|
+
* console.log(new Monster.I18n.Translations())
|
|
22
|
+
* </script>
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Alternatively, you can also integrate this function individually.
|
|
26
|
+
*
|
|
27
|
+
* ```
|
|
28
|
+
* <script type="module">
|
|
29
|
+
* import {Translations} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/i18n/translations.js';
|
|
30
|
+
* console.log(new Translations())
|
|
31
|
+
* </script>
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
*
|
|
36
|
+
* const translation = new Translations(parseLocale('en-GB'));
|
|
37
|
+
*
|
|
38
|
+
* translation.assignTranslations({
|
|
39
|
+
* text1: "abc",
|
|
40
|
+
* text2: {'other': 'xyz'}
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* translation.getText('text1);
|
|
44
|
+
* translation.getPluralRuleText('text1',2);
|
|
45
|
+
*
|
|
46
|
+
* @since 1.13.0
|
|
47
|
+
* @copyright schukai GmbH
|
|
48
|
+
* @memberOf Monster/I18n
|
|
49
|
+
* @see https://datatracker.ietf.org/doc/html/rfc3066
|
|
50
|
+
*/
|
|
51
|
+
class Translations extends Base {
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param {Locale} locale
|
|
56
|
+
*/
|
|
57
|
+
constructor(locale) {
|
|
58
|
+
super();
|
|
59
|
+
|
|
60
|
+
if (isString(locale)) {
|
|
61
|
+
locale = parseLocale(locale);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
this.locale = validateInstance(locale, Locale);
|
|
65
|
+
this.storage = new Map();
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Fetches a text using the specified key.
|
|
72
|
+
* If no suitable key is found, `defaultText` is taken.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} key
|
|
75
|
+
* @param {string|undefined} defaultText
|
|
76
|
+
* @return {string}
|
|
77
|
+
* @throws {Error} key not found
|
|
78
|
+
*/
|
|
79
|
+
getText(key, defaultText) {
|
|
80
|
+
if (!this.storage.has(key)) {
|
|
81
|
+
if (defaultText === undefined) {
|
|
82
|
+
throw new Error('key ' + key + ' not found');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return validateString(defaultText);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let r = this.storage.get(key);
|
|
89
|
+
if (isObject(r)) {
|
|
90
|
+
return this.getPluralRuleText(key, 'other', defaultText);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return this.storage.get(key);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* A number `count` can be passed to this method. In addition to a number, one of the keywords can also be passed directly.
|
|
98
|
+
* "zero", "one", "two", "few", "many" and "other". Remember: not every language has all rules.
|
|
99
|
+
*
|
|
100
|
+
* The appropriate text for this number is then selected. If no suitable key is found, `defaultText` is taken.
|
|
101
|
+
*
|
|
102
|
+
* @param {string} key
|
|
103
|
+
* @param {integer|count} count
|
|
104
|
+
* @param {string|undefined} defaultText
|
|
105
|
+
* @return {string}
|
|
106
|
+
*/
|
|
107
|
+
getPluralRuleText(key, count, defaultText) {
|
|
108
|
+
if (!this.storage.has(key)) {
|
|
109
|
+
return validateString(defaultText);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
let r = validateObject(this.storage.get(key));
|
|
113
|
+
|
|
114
|
+
let keyword;
|
|
115
|
+
if (isString(count)) {
|
|
116
|
+
keyword = count.toLocaleString();
|
|
117
|
+
} else {
|
|
118
|
+
count = validateInteger(count);
|
|
119
|
+
if (count === 0) {
|
|
120
|
+
// special handlig for zero count
|
|
121
|
+
if (r.hasOwnProperty('zero')) {
|
|
122
|
+
return validateString(r['zero']);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
keyword = new Intl.PluralRules(this.locale.toString()).select(validateInteger(count));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (r.hasOwnProperty(keyword)) {
|
|
130
|
+
return validateString(r[keyword]);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (r.hasOwnProperty(DEFAULT_KEY)) {
|
|
134
|
+
return validateString(r[DEFAULT_KEY]);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return validateString(defaultText);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Set a text for a key
|
|
142
|
+
*
|
|
143
|
+
* ```
|
|
144
|
+
* translations.setText("text1": "Make my day!");
|
|
145
|
+
* // plural rules
|
|
146
|
+
* translations.setText("text6": {
|
|
147
|
+
* "zero": "There are no files on Disk.",
|
|
148
|
+
* "one": "There is one file on Disk.",
|
|
149
|
+
* "other": "There are files on Disk."
|
|
150
|
+
* "default": "There are files on Disk."
|
|
151
|
+
* });
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @param {string} key
|
|
155
|
+
* @param {string|object} text
|
|
156
|
+
* @return {Translations}
|
|
157
|
+
* @throws {TypeError} value is not a string or object
|
|
158
|
+
*/
|
|
159
|
+
setText(key, text) {
|
|
160
|
+
|
|
161
|
+
if (isString(text) || isObject(text)) {
|
|
162
|
+
this.storage.set(validateString(key), text);
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
throw new TypeError('value is not a string or object');
|
|
167
|
+
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* This method can be used to transfer overlays from an object. The keys are transferred and the values are entered as text.
|
|
172
|
+
*
|
|
173
|
+
* The values can either be character strings or, in the case of texts with plural forms, objects. The plural forms must be stored as text via a standard key "zero", "one", "two", "few", "many" and "other".
|
|
174
|
+
*
|
|
175
|
+
* Additionally, the key default can be specified, which will be used if no other key fits.
|
|
176
|
+
*
|
|
177
|
+
* In some languages, like for example in german, there is no own more number at the value 0. In these languages the function applies additionally zero.
|
|
178
|
+
*
|
|
179
|
+
* ```
|
|
180
|
+
* translations.assignTranslations({
|
|
181
|
+
* "text1": "Make my day!",
|
|
182
|
+
* "text2": "I'll be back!",
|
|
183
|
+
* "text6": {
|
|
184
|
+
* "zero": "There are no files on Disk.",
|
|
185
|
+
* "one": "There is one file on Disk.",
|
|
186
|
+
* "other": "There are files on Disk."
|
|
187
|
+
* "default": "There are files on Disk."
|
|
188
|
+
* });
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* @param {object} translations
|
|
192
|
+
* @return {Translations}
|
|
193
|
+
*/
|
|
194
|
+
assignTranslations(translations) {
|
|
195
|
+
validateObject(translations);
|
|
196
|
+
|
|
197
|
+
for (const [k, v] of Object.entries(translations)) {
|
|
198
|
+
this.setText(k, v);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return this;
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
assignToNamespace('Monster.I18n', Translations);
|
|
209
|
+
export {Monster, Translations}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {Monster} from '
|
|
7
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
8
8
|
import {Base} from '../../types/base.js';
|
|
9
9
|
import {Handler} from '../../logging/handler.js';
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ import {Handler} from '../../logging/handler.js';
|
|
|
13
13
|
*
|
|
14
14
|
* ```
|
|
15
15
|
* <script type="module">
|
|
16
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
16
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/handler/console.js';
|
|
17
17
|
* console.log(new Monster.Logging.Handler.ConsoleHandler())
|
|
18
18
|
* </script>
|
|
19
19
|
* ```
|
|
@@ -22,7 +22,7 @@ import {Handler} from '../../logging/handler.js';
|
|
|
22
22
|
*
|
|
23
23
|
* ```
|
|
24
24
|
* <script type="module">
|
|
25
|
-
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
25
|
+
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/handler/console.js';
|
|
26
26
|
* console.log(new ConsoleHandler())
|
|
27
27
|
* </script>
|
|
28
28
|
* ```
|
|
@@ -38,5 +38,5 @@ class ConsoleHandler extends Base {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
assignToNamespace('Monster.Logging', ConsoleHandler);
|
|
42
42
|
export {Monster, Handler};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {Monster} from '../namespace.js';
|
|
7
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
8
8
|
import {Base} from '../types/base.js';
|
|
9
9
|
import {ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN} from "./logger.js";
|
|
10
10
|
import {LogEntry} from "./logentry.js";
|
|
@@ -15,7 +15,7 @@ import {validateInstance, validateInteger} from "../types/validate.js";
|
|
|
15
15
|
*
|
|
16
16
|
* ```
|
|
17
17
|
* <script type="module">
|
|
18
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
18
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/handler.js';
|
|
19
19
|
* console.log(new Monster.Logging.Handler())
|
|
20
20
|
* </script>
|
|
21
21
|
* ```
|
|
@@ -24,7 +24,7 @@ import {validateInstance, validateInteger} from "../types/validate.js";
|
|
|
24
24
|
*
|
|
25
25
|
* ```
|
|
26
26
|
* <script type="module">
|
|
27
|
-
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
27
|
+
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/handler.js';
|
|
28
28
|
* console.log(new Handler())
|
|
29
29
|
* </script>
|
|
30
30
|
* ```
|
|
@@ -180,5 +180,5 @@ class Handler extends Base {
|
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
assignToNamespace('Monster.Logging', Handler);
|
|
184
184
|
export {Monster, Handler};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {Monster} from '../namespace.js';
|
|
7
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
8
8
|
import {validateInteger} from '../types/validate.js';
|
|
9
9
|
import {Base} from '../types/base.js';
|
|
10
10
|
|
|
@@ -14,7 +14,7 @@ import {Base} from '../types/base.js';
|
|
|
14
14
|
*
|
|
15
15
|
* ```
|
|
16
16
|
* <script type="module">
|
|
17
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
17
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/logentry.js';
|
|
18
18
|
* console.log(new Monster.Logging.LogEntry())
|
|
19
19
|
* </script>
|
|
20
20
|
* ```
|
|
@@ -23,7 +23,7 @@ import {Base} from '../types/base.js';
|
|
|
23
23
|
*
|
|
24
24
|
* ```
|
|
25
25
|
* <script type="module">
|
|
26
|
-
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
26
|
+
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/logentry.js';
|
|
27
27
|
* console.log(new LogEntry())
|
|
28
28
|
* </script>
|
|
29
29
|
* ```
|
|
@@ -64,5 +64,5 @@ class LogEntry extends Base {
|
|
|
64
64
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
assignToNamespace('Monster.Logging', LogEntry);
|
|
68
68
|
export {Monster, LogEntry}
|
package/source/logging/logger.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {Monster} from '../namespace.js';
|
|
7
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
8
8
|
import {validateInteger, validateObject, validateString} from '../types/validate.js';
|
|
9
9
|
import {Handler} from '../logging/handler.js';
|
|
10
10
|
import {LogEntry} from '../logging/logentry.js';
|
|
@@ -65,7 +65,7 @@ const OFF = 0;
|
|
|
65
65
|
*
|
|
66
66
|
* ```
|
|
67
67
|
* <script type="module">
|
|
68
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
68
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/logger.js';
|
|
69
69
|
* console.log(new Monster.Logging.Logger())
|
|
70
70
|
* </script>
|
|
71
71
|
* ```
|
|
@@ -74,7 +74,7 @@ const OFF = 0;
|
|
|
74
74
|
*
|
|
75
75
|
* ```
|
|
76
76
|
* <script type="module">
|
|
77
|
-
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
77
|
+
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/logging/logger.js';
|
|
78
78
|
* console.log(new Logger())
|
|
79
79
|
* </script>
|
|
80
80
|
* ```
|
|
@@ -256,7 +256,7 @@ class Logger extends Base {
|
|
|
256
256
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
assignToNamespace('Monster.Logging', Logger);
|
|
260
260
|
export {Monster, Logger, ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF};
|
|
261
261
|
|
|
262
262
|
|
package/source/math/namespace.js
CHANGED
package/source/math/random.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
import {
|
|
7
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
8
|
+
import { getGlobal} from '../types/global.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -15,7 +15,7 @@ import {Monster, getGlobal} from '../types/global.js';
|
|
|
15
15
|
*
|
|
16
16
|
* ```
|
|
17
17
|
* <script type="module">
|
|
18
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
18
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/math/random.js';
|
|
19
19
|
* console.log(Monster.Math.random(1,10)) // ↦ 5
|
|
20
20
|
* </script>
|
|
21
21
|
* ```
|
|
@@ -24,7 +24,7 @@ import {Monster, getGlobal} from '../types/global.js';
|
|
|
24
24
|
*
|
|
25
25
|
* ```
|
|
26
26
|
* <script type="module">
|
|
27
|
-
* import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
27
|
+
* import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/math/random.js';
|
|
28
28
|
* console.log(random(1,10)) // ↦ 5
|
|
29
29
|
* </script>
|
|
30
30
|
* ```
|
|
@@ -120,7 +120,7 @@ function create(min, max) {
|
|
|
120
120
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
assignToNamespace('Monster.Math', random);
|
|
124
124
|
export {Monster, random}
|
|
125
125
|
|
|
126
126
|
|
package/source/monster.js
CHANGED
|
@@ -9,21 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
import {Monster} from './namespace.js';
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import './types/observer.js';
|
|
15
|
-
import './types/global.js';
|
|
16
|
-
import './types/observerlist.js';
|
|
17
|
-
import './types/is.js';
|
|
18
|
-
import './types/proxyobserver.js';
|
|
19
|
-
import './types/uniquequeue.js';
|
|
20
|
-
import './types/tokenlist.js';
|
|
21
|
-
import './types/typeof.js';
|
|
22
|
-
import './types/version.js';
|
|
23
|
-
import './types/id.js';
|
|
24
|
-
import './types/randomid.js';
|
|
25
|
-
import './types/validate.js';
|
|
26
|
-
import './types/stack.js';
|
|
12
|
+
// find . -type f -name "*.js" -not -name "*namespace*" -not -iname "monster.js"
|
|
13
|
+
|
|
27
14
|
import './constraints/isobject.js';
|
|
28
15
|
import './constraints/valid.js';
|
|
29
16
|
import './constraints/invalid.js';
|
|
@@ -36,18 +23,42 @@ import './logging/logger.js';
|
|
|
36
23
|
import './logging/handler.js';
|
|
37
24
|
import './logging/logentry.js';
|
|
38
25
|
import './logging/handler/console.js';
|
|
26
|
+
import './text/formatter.js';
|
|
39
27
|
import './dom/updater.js';
|
|
40
28
|
import './dom/attributes.js';
|
|
41
29
|
import './dom/template.js';
|
|
42
30
|
import './dom/util.js';
|
|
31
|
+
import './dom/locale.js';
|
|
32
|
+
import './dom/customcontrol.js';
|
|
43
33
|
import './dom/constants.js';
|
|
44
34
|
import './dom/assembler.js';
|
|
45
35
|
import './dom/theme.js';
|
|
46
36
|
import './dom/events.js';
|
|
47
37
|
import './dom/customelement.js';
|
|
38
|
+
import './i18n/providers/fetch.js';
|
|
39
|
+
import './i18n/translations.js';
|
|
40
|
+
import './i18n/locale.js';
|
|
41
|
+
import './i18n/provider.js';
|
|
42
|
+
import './types/queue.js';
|
|
43
|
+
import './types/observer.js';
|
|
44
|
+
import './types/global.js';
|
|
45
|
+
import './types/observerlist.js';
|
|
46
|
+
import './types/basewithoptions.js';
|
|
47
|
+
import './types/is.js';
|
|
48
|
+
import './types/proxyobserver.js';
|
|
49
|
+
import './types/uniquequeue.js';
|
|
50
|
+
import './types/tokenlist.js';
|
|
51
|
+
import './types/typeof.js';
|
|
52
|
+
import './types/base.js';
|
|
53
|
+
import './types/version.js';
|
|
54
|
+
import './types/id.js';
|
|
55
|
+
import './types/randomid.js';
|
|
56
|
+
import './types/validate.js';
|
|
57
|
+
import './types/stack.js';
|
|
48
58
|
import './util/comparator.js';
|
|
49
59
|
import './util/clone.js';
|
|
50
60
|
import './util/freeze.js';
|
|
61
|
+
import './constants.js';
|
|
51
62
|
import './data/pathfinder.js';
|
|
52
63
|
import './data/pipe.js';
|
|
53
64
|
import './data/extend.js';
|
|
@@ -55,7 +66,6 @@ import './data/diff.js';
|
|
|
55
66
|
import './data/buildmap.js';
|
|
56
67
|
import './data/transformer.js';
|
|
57
68
|
import './math/random.js';
|
|
58
|
-
import './text/formatter.js';
|
|
59
69
|
|
|
60
70
|
Monster.Util.deepFreeze(Monster);
|
|
61
71
|
|
package/source/namespace.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
+
* Main namespace for Monster.
|
|
5
|
+
*
|
|
4
6
|
* @namespace Monster
|
|
5
7
|
* @author schukai GmbH
|
|
6
8
|
*/
|
|
@@ -55,27 +57,27 @@ class Namespace {
|
|
|
55
57
|
export const Monster = new Namespace("Monster");
|
|
56
58
|
|
|
57
59
|
/**
|
|
58
|
-
* To expand monster, the `Monster.assignToNamespace()` method can be used.
|
|
60
|
+
* To expand monster, the `Monster.assignToNamespace()` method can be used.
|
|
59
61
|
*
|
|
60
62
|
* you must call the method in the monster namespace. this allows you to mount your own classes, objects and functions into the namespace.
|
|
61
|
-
*
|
|
63
|
+
*
|
|
62
64
|
* To avoid confusion and so that you do not accidentally overwrite existing functions, you should use the custom namespace `X`.
|
|
63
65
|
*
|
|
64
66
|
* ```
|
|
65
67
|
* <script type="module">
|
|
66
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
68
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/namespace.js';
|
|
67
69
|
* function hello() {
|
|
68
70
|
* console.log('Hello World!');
|
|
69
71
|
* }
|
|
70
72
|
* Monster.assignToNamespace("Monster.X", hello)
|
|
71
73
|
* Monster.X.hello(); // ↦ Hello World!
|
|
72
74
|
* </script>
|
|
73
|
-
*
|
|
75
|
+
*
|
|
74
76
|
* ```
|
|
75
77
|
*
|
|
76
78
|
* @param {string} ns
|
|
77
79
|
* @param {function} obj
|
|
78
|
-
* @return {current}
|
|
80
|
+
* @return {current}
|
|
79
81
|
* @memberOf Monster
|
|
80
82
|
* @throws {Error} no functions have been passed.
|
|
81
83
|
* @throws {Error} the name of the class or function cannot be resolved.
|
|
@@ -86,14 +88,14 @@ export const Monster = new Namespace("Monster");
|
|
|
86
88
|
function assignToNamespace(ns, ...obj) {
|
|
87
89
|
let current = namespaceFor(ns.split("."));
|
|
88
90
|
|
|
89
|
-
if(obj.length===0) {
|
|
91
|
+
if (obj.length === 0) {
|
|
90
92
|
throw new Error('no functions have been passed.');
|
|
91
93
|
}
|
|
92
|
-
|
|
94
|
+
|
|
93
95
|
for (let i = 0, l = obj.length; i < l; i++) {
|
|
94
96
|
current[objectName(obj[i])] = obj[i];
|
|
95
97
|
}
|
|
96
|
-
|
|
98
|
+
|
|
97
99
|
return current
|
|
98
100
|
}
|
|
99
101
|
|
package/source/text/formatter.js
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
7
7
|
import {Pipe} from "../data/pipe.js";
|
|
8
|
-
import {Monster} from '../namespace.js';
|
|
9
8
|
import {Base} from "../types/base.js";
|
|
10
9
|
import {validateObject, validateString} from "../types/validate.js";
|
|
11
10
|
|
|
@@ -19,7 +18,7 @@ import {validateObject, validateString} from "../types/validate.js";
|
|
|
19
18
|
*
|
|
20
19
|
* ```
|
|
21
20
|
* <script type="module">
|
|
22
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
21
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/text/formatter.js';
|
|
23
22
|
* console.log(new Monster.Text.Formatter())
|
|
24
23
|
* </script>
|
|
25
24
|
* ```
|
|
@@ -28,7 +27,7 @@ import {validateObject, validateString} from "../types/validate.js";
|
|
|
28
27
|
*
|
|
29
28
|
* ```
|
|
30
29
|
* <script type="module">
|
|
31
|
-
* import {
|
|
30
|
+
* import {Formatter} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/text/formatter.js';
|
|
32
31
|
* console.log(new Formatter())
|
|
33
32
|
* </script>
|
|
34
33
|
* ```
|
|
@@ -147,5 +146,5 @@ function tokenizer(text) {
|
|
|
147
146
|
return formatted.join('');
|
|
148
147
|
}
|
|
149
148
|
|
|
150
|
-
|
|
149
|
+
assignToNamespace('Monster.Text', Formatter);
|
|
151
150
|
export {Monster, Formatter}
|
package/source/text/namespace.js
CHANGED
package/source/types/base.js
CHANGED
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* @author schukai GmbH
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {Monster} from '../namespace.js';
|
|
8
|
-
|
|
7
|
+
import {Monster, assignToNamespace} from '../namespace.js';
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* This is the base class from which all monster classes are derived.
|
|
@@ -14,8 +13,7 @@ import {Monster} from '../namespace.js';
|
|
|
14
13
|
*
|
|
15
14
|
* ```
|
|
16
15
|
* <script type="module">
|
|
17
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
18
|
-
* console.log(new Monster.Types.Base())
|
|
16
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/types/base.js';
|
|
19
17
|
* console.log(new Monster.Types.Base())
|
|
20
18
|
* </script>
|
|
21
19
|
* ```
|
|
@@ -24,8 +22,7 @@ import {Monster} from '../namespace.js';
|
|
|
24
22
|
*
|
|
25
23
|
* ```
|
|
26
24
|
* <script type="module">
|
|
27
|
-
* import {
|
|
28
|
-
* console.log(new Base())
|
|
25
|
+
* import {Base} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.15.0/dist/modules/types/base.js';
|
|
29
26
|
* console.log(new Base())
|
|
30
27
|
* </script>
|
|
31
28
|
* ```
|
|
@@ -49,5 +46,5 @@ class Base extends Object {
|
|
|
49
46
|
|
|
50
47
|
}
|
|
51
48
|
|
|
52
|
-
|
|
49
|
+
assignToNamespace('Monster.Types', Base);
|
|
53
50
|
export {Monster, Base}
|