@hkdigital/lib-sveltekit 0.1.5 → 0.1.6
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/README.md +127 -127
- package/dist/classes/data/IterableTree.js +243 -243
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/index.js +3 -3
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/stores/SubscribersCount.js +107 -107
- package/dist/classes/stores/index.js +1 -1
- package/dist/classes/streams/LogTransformStream.js +19 -19
- package/dist/classes/streams/ServerEventsStore.js +110 -110
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
- package/dist/classes/svelte/audio/AudioScene.svelte.js +282 -282
- package/dist/classes/svelte/audio/mocks.js +35 -35
- package/dist/classes/svelte/final-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/final-state-machine/index.js +1 -1
- package/dist/classes/svelte/image/ImageLoader.svelte.js +47 -47
- package/dist/classes/svelte/image/ImageScene.svelte.js +253 -253
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
- package/dist/classes/svelte/image/index.js +4 -4
- package/dist/classes/svelte/image/mocks.js +35 -35
- package/dist/classes/svelte/image/typedef.js +8 -8
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
- package/dist/classes/svelte/loading-state-machine/index.js +3 -3
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +331 -331
- package/dist/classes/svelte/network-loader/constants.js +3 -3
- package/dist/classes/svelte/network-loader/index.js +3 -3
- package/dist/classes/svelte/network-loader/mocks.js +30 -30
- package/dist/classes/svelte/network-loader/typedef.js +8 -8
- package/dist/components/area/HkArea.svelte +49 -49
- package/dist/components/area/HkArea.svelte.d.ts +0 -14
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/HkGridArea.svelte.d.ts +0 -22
- package/dist/components/area/index.js +2 -2
- package/dist/components/boxes/game-box/GameBox.svelte +112 -112
- package/dist/components/boxes/game-box/GameBox.svelte.d.ts +0 -15
- package/dist/components/boxes/game-box/gamebox.util.js +83 -83
- package/dist/components/boxes/index.js +2 -2
- package/dist/components/boxes/virtual-viewport/VirtualViewport.svelte +199 -199
- package/dist/components/boxes/virtual-viewport/VirtualViewport.svelte.d.ts +0 -22
- package/dist/components/buttons/button/Button.svelte +75 -75
- package/dist/components/buttons/button/Button.svelte.d.ts +0 -21
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/button-text/TextButton.svelte.d.ts +0 -7
- package/dist/components/buttons/index.js +2 -2
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/blocks/TextBlock.svelte.d.ts +0 -13
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/hkdev/buttons/CheckButton.svelte.d.ts +0 -18
- package/dist/components/icon/HkIcon.svelte +86 -86
- package/dist/components/icon/HkIcon.svelte.d.ts +0 -12
- package/dist/components/icon/HkTabIcon.svelte +116 -116
- package/dist/components/icon/HkTabIcon.svelte.d.ts +0 -21
- package/dist/components/icon/index.js +4 -4
- package/dist/components/icon/typedef.js +16 -16
- package/dist/components/image/ImageBox.svelte +208 -208
- package/dist/components/image/ImageBox.svelte.d.ts +0 -19
- package/dist/components/image/index.js +5 -5
- package/dist/components/image/typedef.js +32 -32
- package/dist/components/index.js +2 -2
- package/dist/components/inputs/index.js +1 -1
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
- package/dist/components/inputs/text-input/TextInput.svelte +226 -226
- package/dist/components/inputs/text-input/TextInput.svelte.d.ts +0 -28
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/components/layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/components/layout/HkAppLayout.svelte +251 -251
- package/dist/components/layout/HkAppLayout.svelte.d.ts +0 -11
- package/dist/components/layout/HkGridLayers.svelte +82 -82
- package/dist/components/layout/HkGridLayers.svelte.d.ts +0 -23
- package/dist/components/layout/index.js +9 -9
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/plain-panel/PlainPanel.svelte +33 -33
- package/dist/components/panels/plain-panel/PlainPanel.svelte.d.ts +0 -12
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte.d.ts +0 -14
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/rows/panel-row-2/PanelRow2.svelte.d.ts +0 -14
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/components/tab-bar/HkTabBar.svelte +74 -74
- package/dist/components/tab-bar/HkTabBar.svelte.d.ts +0 -18
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/components/tab-bar/HkTabBarSelector.svelte.d.ts +0 -19
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +8 -8
- package/dist/components/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/components/widgets/compare-left-right/CompareLeftRight.svelte.d.ts +0 -10
- package/dist/components/widgets/compare-left-right/index.js +1 -1
- package/dist/components/widgets/scale-control/index.js +1 -1
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +71 -71
- package/dist/config/typedef.js +8 -8
- package/dist/constants/errors/api.js +9 -9
- package/dist/constants/errors/generic.js +5 -5
- package/dist/constants/errors/index.js +3 -3
- package/dist/constants/errors/jwt.js +5 -5
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.js +2 -2
- package/dist/constants/index.js +3 -3
- package/dist/constants/mime/application.js +5 -5
- package/dist/constants/mime/audio.js +13 -13
- package/dist/constants/mime/image.js +3 -3
- package/dist/constants/mime/index.js +4 -4
- package/dist/constants/mime/text.js +2 -2
- package/dist/constants/regexp/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/user.js +32 -32
- package/dist/constants/regexp/web.js +3 -3
- package/dist/constants/state-labels/input-states.js +11 -11
- package/dist/constants/state-labels/submit-states.js +4 -4
- package/dist/constants/time.js +28 -28
- package/dist/css/tw-prose.postcss__ +259 -259
- package/dist/css/utilities.postcss +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.d.ts +4 -4
- package/dist/design/tailwind-theme-extend.js +151 -151
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/validate-url.js +180 -180
- package/dist/server/index.js +1 -1
- package/dist/server/logger.js +94 -94
- package/dist/states/index.js +1 -1
- package/dist/states/navigation.svelte.js +55 -55
- package/dist/stores/index.js +1 -1
- package/dist/stores/theme.js +80 -80
- package/dist/themes/hkdev/components/blocks/text-block.postcss +40 -40
- package/dist/themes/hkdev/components/boxes/game-box.postcss +13 -13
- package/dist/themes/hkdev/components/buttons/button-text.postcss +34 -34
- package/dist/themes/hkdev/components/buttons/button.postcss +138 -138
- package/dist/themes/hkdev/components/buttons/skip-button.postcss +8 -8
- package/dist/themes/hkdev/components/inputs/text-input.postcss +108 -108
- package/dist/themes/hkdev/components/panels/plain-panel.postcss +46 -46
- package/dist/themes/hkdev/components/panels/speech-bubble.postcss +52 -52
- package/dist/themes/hkdev/components/rows/panel-grid-row.postcss +7 -7
- package/dist/themes/hkdev/components/rows/panel-row-2.postcss +9 -9
- package/dist/themes/hkdev/components.postcss +55 -55
- package/dist/themes/hkdev/debug.postcss +1 -1
- package/dist/themes/hkdev/global/layout.postcss +39 -39
- package/dist/themes/hkdev/global/on-colors.postcss +53 -53
- package/dist/themes/hkdev/global/text.postcss__ +34 -34
- package/dist/themes/hkdev/global/vars.postcss__ +7 -7
- package/dist/themes/hkdev/globals.postcss +11 -11
- package/dist/themes/hkdev/responsive.postcss +12 -12
- package/dist/themes/hkdev/theme-ext.js +15 -15
- package/dist/themes/hkdev/theme.js +227 -227
- package/dist/themes/index.js +1 -1
- package/dist/util/array/index.js +455 -455
- package/dist/util/compare/index.js +247 -247
- package/dist/util/css/css-vars.js +83 -83
- package/dist/util/css/index.js +1 -1
- package/dist/util/design-system/components/states.js +22 -22
- package/dist/util/design-system/css/clamp.d.ts +2 -2
- package/dist/util/design-system/css/clamp.js +66 -66
- package/dist/util/design-system/css/root-design-vars.js +100 -100
- package/dist/util/design-system/index.js +5 -5
- package/dist/util/design-system/layout/scaling.js +97 -97
- package/dist/util/design-system/tailwind.js +289 -289
- package/dist/util/expect/arrays.js +47 -47
- package/dist/util/expect/index.js +259 -259
- package/dist/util/expect/primitives.js +55 -55
- package/dist/util/expect/url.js +60 -60
- package/dist/util/function/index.js +218 -218
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +45 -45
- package/dist/util/http/http-request.js +273 -273
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +143 -143
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +228 -228
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.js +2 -2
- package/dist/util/is/index.js +140 -140
- package/dist/util/iterate/index.js +234 -234
- package/dist/util/object/index.js +1361 -1361
- package/dist/util/singleton/index.js +97 -97
- package/dist/util/string/index.js +184 -184
- package/dist/util/svelte/index.js +2 -2
- package/dist/util/svelte/observe/index.js +49 -49
- package/dist/util/svelte/state-context/index.js +83 -83
- package/dist/util/svelte/wait/index.js +38 -38
- package/dist/util/sveltekit/index.js +1 -1
- package/dist/util/sveltekit/route-folders/index.js +82 -82
- package/dist/util/time/index.js +339 -339
- package/dist/valibot/date.js__ +10 -10
- package/dist/valibot/index.js +9 -9
- package/dist/valibot/url.js +95 -95
- package/dist/valibot/user.js +23 -23
- package/dist/zod/all.js +33 -33
- package/dist/zod/generic.js +11 -11
- package/dist/zod/javascript.js +32 -32
- package/dist/zod/user.js +16 -16
- package/dist/zod/web.js +52 -52
- package/package.json +99 -99
- package/dist/themes/hkdev/components/buttons/button.postcss__ +0 -40
- package/dist/themes/hkdev/components/buttons/button.postcss___ +0 -91
@@ -1,190 +1,190 @@
|
|
1
|
-
/**
|
2
|
-
* Selector.js
|
3
|
-
*
|
4
|
-
* @description
|
5
|
-
* This file contains a class that can be used to select items from lists of
|
6
|
-
* objects.
|
7
|
-
*
|
8
|
-
* @TODO
|
9
|
-
* Allow other selection criteria than exact key-value pair matches
|
10
|
-
*
|
11
|
-
* @example
|
12
|
-
*
|
13
|
-
* import Selector from "./Selector.js";
|
14
|
-
*
|
15
|
-
* const selector = new Selector( { age: 42 } );
|
16
|
-
*
|
17
|
-
* const items =
|
18
|
-
* [
|
19
|
-
* { name: "Maria", age: 41 },
|
20
|
-
* { name: "John", age: 42 },
|
21
|
-
* { name: "Max", age: 43 }
|
22
|
-
* ]
|
23
|
-
*
|
24
|
-
* const item = selector.findFirst( items );
|
25
|
-
*
|
26
|
-
* console.log( item );
|
27
|
-
*/
|
28
|
-
|
29
|
-
/* ------------------------------------------------------------------ Imports */
|
30
|
-
|
31
|
-
import * as expect from '../../util/expect/index.js';
|
32
|
-
|
33
|
-
/* ------------------------------------------------------------------- Export */
|
34
|
-
|
35
|
-
/**
|
36
|
-
* Construct a Selector class
|
37
|
-
*/
|
38
|
-
export default class Selector {
|
39
|
-
/** @type {function|null} test function */
|
40
|
-
#testFn = null;
|
41
|
-
|
42
|
-
/**
|
43
|
-
* Constructor
|
44
|
-
*
|
45
|
-
* @param {object|null} selector
|
46
|
-
*/
|
47
|
-
constructor(selector) {
|
48
|
-
this.#updateTestFn(selector);
|
49
|
-
}
|
50
|
-
|
51
|
-
// -------------------------------------------------------------------- Method
|
52
|
-
|
53
|
-
/**
|
54
|
-
* Returns the first item from the list of items that matches the selector
|
55
|
-
*
|
56
|
-
* @template {object} T
|
57
|
-
* @param {T[]|null} items
|
58
|
-
*
|
59
|
-
* @returns {T|null} item or null if not found
|
60
|
-
*/
|
61
|
-
findFirst(items) {
|
62
|
-
if (!items) {
|
63
|
-
return null;
|
64
|
-
}
|
65
|
-
|
66
|
-
for (const item of items) {
|
67
|
-
if (this.#testFn(item)) {
|
68
|
-
return item;
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
return null;
|
73
|
-
}
|
74
|
-
|
75
|
-
// -------------------------------------------------------------------- Method
|
76
|
-
|
77
|
-
/**
|
78
|
-
* Returns all items from the list of items that match the selector
|
79
|
-
*
|
80
|
-
* @template {object} T
|
81
|
-
* @param {T[]|null} items
|
82
|
-
*
|
83
|
-
* @returns {T|null} item or null if not found
|
84
|
-
*/
|
85
|
-
findAll(items) {
|
86
|
-
const result = [];
|
87
|
-
|
88
|
-
if (!items) {
|
89
|
-
return result;
|
90
|
-
}
|
91
|
-
|
92
|
-
for (const item of items) {
|
93
|
-
if (this.#testFn(item)) {
|
94
|
-
result.push(item);
|
95
|
-
}
|
96
|
-
}
|
97
|
-
|
98
|
-
return result;
|
99
|
-
}
|
100
|
-
|
101
|
-
/* ------------------------------------------------------- Internal methods */
|
102
|
-
|
103
|
-
/**
|
104
|
-
* Update the internal selector function
|
105
|
-
*/
|
106
|
-
#updateTestFn(selector) {
|
107
|
-
// > Case A: selector=null
|
108
|
-
|
109
|
-
if (null === selector) {
|
110
|
-
this.#testFn = this.#returnTrue;
|
111
|
-
return;
|
112
|
-
}
|
113
|
-
|
114
|
-
// > Validate selector
|
115
|
-
|
116
|
-
expect.objectOrNull(selector);
|
117
|
-
|
118
|
-
const keys = Object.keys(selector);
|
119
|
-
const n = keys.length;
|
120
|
-
|
121
|
-
// > Case B: selector has not properties
|
122
|
-
|
123
|
-
if (!n) {
|
124
|
-
this.#testFn = this.#returnTrue;
|
125
|
-
return;
|
126
|
-
}
|
127
|
-
|
128
|
-
// > Case C: selector with single key-value pair
|
129
|
-
|
130
|
-
if (1 === n) {
|
131
|
-
const key = keys[0];
|
132
|
-
const value = selector[key];
|
133
|
-
|
134
|
-
this.#testFn = this.#testKeyValue.bind(this, key, value);
|
135
|
-
}
|
136
|
-
|
137
|
-
// > Case D: selector with multiple key-value pairs
|
138
|
-
|
139
|
-
const selectorValues = [];
|
140
|
-
|
141
|
-
for (const key of keys) {
|
142
|
-
selectorValues.push(selector[key]);
|
143
|
-
}
|
144
|
-
|
145
|
-
this.#testFn = this.#testMultipleKeyValues.bind(this, keys, selectorValues);
|
146
|
-
}
|
147
|
-
|
148
|
-
// -------------------------------------------------------------------- Method
|
149
|
-
|
150
|
-
/**
|
151
|
-
* Always return true
|
152
|
-
* - This function is used if the test function should always return true
|
153
|
-
*
|
154
|
-
* @returns {boolean} true
|
155
|
-
*/
|
156
|
-
#returnTrue() {
|
157
|
-
return true;
|
158
|
-
}
|
159
|
-
|
160
|
-
// -------------------------------------------------------------------- Method
|
161
|
-
|
162
|
-
/**
|
163
|
-
* Return true if the item matches the key-value pair
|
164
|
-
* - This function is used if the test function should test a
|
165
|
-
* single key-value pair
|
166
|
-
*/
|
167
|
-
#testKeyValue(key, value, item) {
|
168
|
-
return value === item[key];
|
169
|
-
}
|
170
|
-
|
171
|
-
// -------------------------------------------------------------------- Method
|
172
|
-
|
173
|
-
/**
|
174
|
-
* Return true if the item matches all key-value pairs
|
175
|
-
* - This function is used if the test function should test multiple
|
176
|
-
* key-value pairs
|
177
|
-
*/
|
178
|
-
#testMultipleKeyValues(keys, values, item) {
|
179
|
-
let isMatch = true;
|
180
|
-
|
181
|
-
for (let j = 0, n = keys.length; j < n; j = j + 1) {
|
182
|
-
if (values[j] !== item[keys[j]]) {
|
183
|
-
isMatch = false;
|
184
|
-
break;
|
185
|
-
}
|
186
|
-
} // end for
|
187
|
-
|
188
|
-
return isMatch;
|
189
|
-
}
|
190
|
-
} // end class
|
1
|
+
/**
|
2
|
+
* Selector.js
|
3
|
+
*
|
4
|
+
* @description
|
5
|
+
* This file contains a class that can be used to select items from lists of
|
6
|
+
* objects.
|
7
|
+
*
|
8
|
+
* @TODO
|
9
|
+
* Allow other selection criteria than exact key-value pair matches
|
10
|
+
*
|
11
|
+
* @example
|
12
|
+
*
|
13
|
+
* import Selector from "./Selector.js";
|
14
|
+
*
|
15
|
+
* const selector = new Selector( { age: 42 } );
|
16
|
+
*
|
17
|
+
* const items =
|
18
|
+
* [
|
19
|
+
* { name: "Maria", age: 41 },
|
20
|
+
* { name: "John", age: 42 },
|
21
|
+
* { name: "Max", age: 43 }
|
22
|
+
* ]
|
23
|
+
*
|
24
|
+
* const item = selector.findFirst( items );
|
25
|
+
*
|
26
|
+
* console.log( item );
|
27
|
+
*/
|
28
|
+
|
29
|
+
/* ------------------------------------------------------------------ Imports */
|
30
|
+
|
31
|
+
import * as expect from '../../util/expect/index.js';
|
32
|
+
|
33
|
+
/* ------------------------------------------------------------------- Export */
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Construct a Selector class
|
37
|
+
*/
|
38
|
+
export default class Selector {
|
39
|
+
/** @type {function|null} test function */
|
40
|
+
#testFn = null;
|
41
|
+
|
42
|
+
/**
|
43
|
+
* Constructor
|
44
|
+
*
|
45
|
+
* @param {object|null} selector
|
46
|
+
*/
|
47
|
+
constructor(selector) {
|
48
|
+
this.#updateTestFn(selector);
|
49
|
+
}
|
50
|
+
|
51
|
+
// -------------------------------------------------------------------- Method
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Returns the first item from the list of items that matches the selector
|
55
|
+
*
|
56
|
+
* @template {object} T
|
57
|
+
* @param {T[]|null} items
|
58
|
+
*
|
59
|
+
* @returns {T|null} item or null if not found
|
60
|
+
*/
|
61
|
+
findFirst(items) {
|
62
|
+
if (!items) {
|
63
|
+
return null;
|
64
|
+
}
|
65
|
+
|
66
|
+
for (const item of items) {
|
67
|
+
if (this.#testFn(item)) {
|
68
|
+
return item;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
return null;
|
73
|
+
}
|
74
|
+
|
75
|
+
// -------------------------------------------------------------------- Method
|
76
|
+
|
77
|
+
/**
|
78
|
+
* Returns all items from the list of items that match the selector
|
79
|
+
*
|
80
|
+
* @template {object} T
|
81
|
+
* @param {T[]|null} items
|
82
|
+
*
|
83
|
+
* @returns {T|null} item or null if not found
|
84
|
+
*/
|
85
|
+
findAll(items) {
|
86
|
+
const result = [];
|
87
|
+
|
88
|
+
if (!items) {
|
89
|
+
return result;
|
90
|
+
}
|
91
|
+
|
92
|
+
for (const item of items) {
|
93
|
+
if (this.#testFn(item)) {
|
94
|
+
result.push(item);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
return result;
|
99
|
+
}
|
100
|
+
|
101
|
+
/* ------------------------------------------------------- Internal methods */
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Update the internal selector function
|
105
|
+
*/
|
106
|
+
#updateTestFn(selector) {
|
107
|
+
// > Case A: selector=null
|
108
|
+
|
109
|
+
if (null === selector) {
|
110
|
+
this.#testFn = this.#returnTrue;
|
111
|
+
return;
|
112
|
+
}
|
113
|
+
|
114
|
+
// > Validate selector
|
115
|
+
|
116
|
+
expect.objectOrNull(selector);
|
117
|
+
|
118
|
+
const keys = Object.keys(selector);
|
119
|
+
const n = keys.length;
|
120
|
+
|
121
|
+
// > Case B: selector has not properties
|
122
|
+
|
123
|
+
if (!n) {
|
124
|
+
this.#testFn = this.#returnTrue;
|
125
|
+
return;
|
126
|
+
}
|
127
|
+
|
128
|
+
// > Case C: selector with single key-value pair
|
129
|
+
|
130
|
+
if (1 === n) {
|
131
|
+
const key = keys[0];
|
132
|
+
const value = selector[key];
|
133
|
+
|
134
|
+
this.#testFn = this.#testKeyValue.bind(this, key, value);
|
135
|
+
}
|
136
|
+
|
137
|
+
// > Case D: selector with multiple key-value pairs
|
138
|
+
|
139
|
+
const selectorValues = [];
|
140
|
+
|
141
|
+
for (const key of keys) {
|
142
|
+
selectorValues.push(selector[key]);
|
143
|
+
}
|
144
|
+
|
145
|
+
this.#testFn = this.#testMultipleKeyValues.bind(this, keys, selectorValues);
|
146
|
+
}
|
147
|
+
|
148
|
+
// -------------------------------------------------------------------- Method
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Always return true
|
152
|
+
* - This function is used if the test function should always return true
|
153
|
+
*
|
154
|
+
* @returns {boolean} true
|
155
|
+
*/
|
156
|
+
#returnTrue() {
|
157
|
+
return true;
|
158
|
+
}
|
159
|
+
|
160
|
+
// -------------------------------------------------------------------- Method
|
161
|
+
|
162
|
+
/**
|
163
|
+
* Return true if the item matches the key-value pair
|
164
|
+
* - This function is used if the test function should test a
|
165
|
+
* single key-value pair
|
166
|
+
*/
|
167
|
+
#testKeyValue(key, value, item) {
|
168
|
+
return value === item[key];
|
169
|
+
}
|
170
|
+
|
171
|
+
// -------------------------------------------------------------------- Method
|
172
|
+
|
173
|
+
/**
|
174
|
+
* Return true if the item matches all key-value pairs
|
175
|
+
* - This function is used if the test function should test multiple
|
176
|
+
* key-value pairs
|
177
|
+
*/
|
178
|
+
#testMultipleKeyValues(keys, values, item) {
|
179
|
+
let isMatch = true;
|
180
|
+
|
181
|
+
for (let j = 0, n = keys.length; j < n; j = j + 1) {
|
182
|
+
if (values[j] !== item[keys[j]]) {
|
183
|
+
isMatch = false;
|
184
|
+
break;
|
185
|
+
}
|
186
|
+
} // end for
|
187
|
+
|
188
|
+
return isMatch;
|
189
|
+
}
|
190
|
+
} // end class
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export { default as Selector } from './Selector.js';
|
2
|
-
export { default as IterableTree } from './IterableTree.js';
|
1
|
+
export { default as Selector } from './Selector.js';
|
2
|
+
export { default as IterableTree } from './IterableTree.js';
|
package/dist/classes/index.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
export * as data from './data/index.js';
|
2
|
-
export * as streams from './streams/index.js';
|
3
|
-
export * as stores from './stores/index.js';
|
1
|
+
export * as data from './data/index.js';
|
2
|
+
export * as streams from './streams/index.js';
|
3
|
+
export * as stores from './stores/index.js';
|