silentium-components 0.0.65 → 0.0.67
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.md +15 -0
- package/dist/silentium-components.cjs +215 -215
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +47 -47
- package/dist/silentium-components.js +181 -181
- package/dist/silentium-components.js.map +1 -1
- package/dist/silentium-components.min.js +1 -1
- package/dist/silentium-components.min.mjs +1 -1
- package/dist/silentium-components.min.mjs.map +1 -1
- package/dist/silentium-components.mjs +181 -181
- package/dist/silentium-components.mjs.map +1 -1
- package/package.json +2 -2
- package/src/behaviors/Branch._main.test.ts +7 -7
- package/src/behaviors/Branch.branchesDontAffectResult.test.ts +7 -7
- package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +7 -7
- package/src/behaviors/Branch.ts +9 -9
- package/src/behaviors/BranchLazy._main.test.ts +7 -7
- package/src/behaviors/BranchLazy.ts +9 -9
- package/src/behaviors/Const.test.ts +4 -4
- package/src/behaviors/Const.ts +5 -5
- package/src/behaviors/Deadline._main.test.ts +4 -4
- package/src/behaviors/Deadline._value.test.ts +4 -4
- package/src/behaviors/Deadline.ts +8 -8
- package/src/behaviors/Deferred.test.ts +6 -6
- package/src/behaviors/Deferred.ts +8 -8
- package/src/behaviors/Detached.test.ts +4 -4
- package/src/behaviors/Detached.ts +4 -4
- package/src/behaviors/Dirty.test.ts +4 -4
- package/src/behaviors/Dirty.ts +9 -9
- package/src/behaviors/Loading.test.ts +5 -5
- package/src/behaviors/Loading.ts +7 -7
- package/src/behaviors/Lock.test.ts +6 -6
- package/src/behaviors/Lock.ts +7 -7
- package/src/behaviors/Memo.test.ts +4 -4
- package/src/behaviors/Memo.ts +5 -5
- package/src/behaviors/OnlyChanged.test.ts +4 -4
- package/src/behaviors/OnlyChanged.ts +4 -4
- package/src/behaviors/Part.test.ts +5 -5
- package/src/behaviors/Part.ts +10 -14
- package/src/behaviors/Path._main.test.ts +3 -3
- package/src/behaviors/Path.index.test.ts +3 -3
- package/src/behaviors/Path.nested.test.ts +3 -3
- package/src/behaviors/Path.ts +8 -12
- package/src/behaviors/Polling.test.ts +4 -4
- package/src/behaviors/Polling.ts +5 -5
- package/src/behaviors/Shot._main.test.ts +5 -5
- package/src/behaviors/Shot._onlyChanged.test.ts +6 -6
- package/src/behaviors/Shot.ts +8 -8
- package/src/behaviors/Task.ts +7 -7
- package/src/behaviors/Tick.test.ts +5 -5
- package/src/behaviors/Tick.ts +5 -5
- package/src/boolean/And.test.ts +5 -5
- package/src/boolean/And.ts +7 -7
- package/src/boolean/Bool.test.ts +3 -3
- package/src/boolean/Bool.ts +6 -6
- package/src/boolean/Not.test.ts +4 -4
- package/src/boolean/Not.ts +4 -4
- package/src/boolean/Or.test.ts +5 -5
- package/src/boolean/Or.ts +7 -7
- package/src/formats/FromJson.test.ts +4 -4
- package/src/formats/FromJson.ts +5 -5
- package/src/formats/ToJson.test.ts +4 -4
- package/src/formats/ToJson.ts +5 -5
- package/src/lists/First.test.ts +3 -3
- package/src/lists/First.ts +7 -7
- package/src/navigation/Router._main.test.ts +9 -9
- package/src/navigation/Router._nested.test.ts +20 -20
- package/src/navigation/Router.ts +23 -23
- package/src/strings/Concatenated.test.ts +5 -5
- package/src/strings/Concatenated.ts +9 -9
- package/src/strings/Template._main.test.ts +11 -11
- package/src/strings/Template._place.test.ts +4 -4
- package/src/strings/Template.ts +19 -19
- package/src/structures/HashTable.test.ts +4 -4
- package/src/structures/HashTable.ts +5 -5
- package/src/structures/Record._main.test.ts +6 -6
- package/src/structures/Record.concatenated.test.ts +10 -10
- package/src/structures/Record.nested.test.ts +9 -9
- package/src/structures/RecordOf.ts +8 -8
- package/src/system/RegexpMatch._group.test.ts +5 -5
- package/src/system/RegexpMatch._main.test.ts +5 -5
- package/src/system/RegexpMatch.ts +9 -9
- package/src/system/RegexpMatched.test.ts +4 -4
- package/src/system/RegexpMatched.ts +8 -8
- package/src/system/RegexpReplaced.test.ts +4 -4
- package/src/system/RegexpReplaced.ts +8 -8
- package/src/system/Set.test.ts +4 -4
- package/src/system/Set.ts +7 -7
- package/docs/assets/js/components/linkDynamic.mjs +0 -14
- package/docs/assets/js/components/linkReloadable.mjs +0 -17
- package/docs/assets/js/components.mjs +0 -2
- package/docs/assets/js/index.mjs +0 -271
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var silentium = require('silentium');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
return (
|
|
7
|
-
const leftSync = silentium.
|
|
5
|
+
function Branch(conditionSrc, leftSrc, rightSrc) {
|
|
6
|
+
return (user) => {
|
|
7
|
+
const leftSync = silentium.Primitive(leftSrc);
|
|
8
8
|
let rightSync;
|
|
9
9
|
if (rightSrc !== void 0) {
|
|
10
|
-
rightSync = silentium.
|
|
10
|
+
rightSync = silentium.Primitive(rightSrc);
|
|
11
11
|
}
|
|
12
12
|
conditionSrc((v) => {
|
|
13
13
|
let result = null;
|
|
@@ -17,18 +17,18 @@ const branch = (conditionSrc, leftSrc, rightSrc) => {
|
|
|
17
17
|
result = rightSync.primitive();
|
|
18
18
|
}
|
|
19
19
|
if (result !== null) {
|
|
20
|
-
|
|
20
|
+
user(result);
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
};
|
|
24
|
-
}
|
|
24
|
+
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
let
|
|
26
|
+
function BranchLazy(conditionSrc, leftSrc, rightSrc) {
|
|
27
|
+
return (user) => {
|
|
28
|
+
let Destructor;
|
|
29
29
|
conditionSrc((v) => {
|
|
30
|
-
if (
|
|
31
|
-
|
|
30
|
+
if (Destructor !== void 0 && typeof Destructor === "function") {
|
|
31
|
+
Destructor();
|
|
32
32
|
}
|
|
33
33
|
let instance = null;
|
|
34
34
|
if (v) {
|
|
@@ -37,27 +37,27 @@ const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
|
|
|
37
37
|
instance = rightSrc();
|
|
38
38
|
}
|
|
39
39
|
if (instance) {
|
|
40
|
-
|
|
40
|
+
Destructor = instance(user);
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
return () => {
|
|
44
|
-
|
|
44
|
+
Destructor?.();
|
|
45
45
|
};
|
|
46
46
|
};
|
|
47
|
-
}
|
|
47
|
+
}
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
return (
|
|
49
|
+
function Constant(permanentValue, triggerSrc) {
|
|
50
|
+
return (user) => {
|
|
51
51
|
triggerSrc(() => {
|
|
52
|
-
|
|
52
|
+
user(permanentValue);
|
|
53
53
|
});
|
|
54
54
|
};
|
|
55
|
-
}
|
|
55
|
+
}
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
return (
|
|
57
|
+
function Deadline(error, baseSrc, timeoutSrc) {
|
|
58
|
+
return (user) => {
|
|
59
59
|
let timerHead = null;
|
|
60
|
-
const s = silentium.
|
|
60
|
+
const s = silentium.Shared(baseSrc, true);
|
|
61
61
|
timeoutSrc((timeout) => {
|
|
62
62
|
if (timerHead) {
|
|
63
63
|
clearTimeout(timerHead);
|
|
@@ -70,52 +70,52 @@ const deadline = (error, baseSrc, timeoutSrc) => {
|
|
|
70
70
|
timeoutReached = true;
|
|
71
71
|
error(new Error("Timeout reached in Deadline class"));
|
|
72
72
|
}, timeout);
|
|
73
|
-
const f = silentium.
|
|
74
|
-
f(
|
|
73
|
+
const f = silentium.Filtered(s.event, () => !timeoutReached);
|
|
74
|
+
f(user);
|
|
75
75
|
s.event(() => {
|
|
76
76
|
timeoutReached = true;
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
79
|
};
|
|
80
|
-
}
|
|
80
|
+
}
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
return (
|
|
84
|
-
const baseSync = silentium.
|
|
82
|
+
function Deferred(baseSrc, triggerSrc) {
|
|
83
|
+
return (user) => {
|
|
84
|
+
const baseSync = silentium.Primitive(baseSrc);
|
|
85
85
|
triggerSrc(() => {
|
|
86
86
|
const value = baseSync.primitive();
|
|
87
87
|
if (silentium.isFilled(value)) {
|
|
88
|
-
|
|
88
|
+
user(value);
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
91
|
};
|
|
92
|
-
}
|
|
92
|
+
}
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
return function
|
|
96
|
-
const v = silentium.
|
|
94
|
+
function Detached(baseSrc) {
|
|
95
|
+
return function Detached2(user) {
|
|
96
|
+
const v = silentium.Primitive(baseSrc).primitive();
|
|
97
97
|
if (silentium.isFilled(v)) {
|
|
98
98
|
user(v);
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
|
-
}
|
|
101
|
+
}
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
const comparingSrc = silentium.
|
|
103
|
+
function Dirty(baseEntitySource, alwaysKeep = [], excludeKeys = [], cloneFn) {
|
|
104
|
+
const comparingSrc = silentium.Late();
|
|
105
105
|
if (cloneFn === void 0) {
|
|
106
106
|
cloneFn = (value) => JSON.parse(JSON.stringify(value));
|
|
107
107
|
}
|
|
108
108
|
return {
|
|
109
|
-
event: (
|
|
110
|
-
const comparingDetached = silentium.
|
|
111
|
-
silentium.
|
|
109
|
+
event: (user) => {
|
|
110
|
+
const comparingDetached = silentium.Applied(comparingSrc.event, cloneFn);
|
|
111
|
+
silentium.All(
|
|
112
112
|
comparingDetached,
|
|
113
113
|
baseEntitySource
|
|
114
114
|
)(([comparing, base]) => {
|
|
115
115
|
if (!comparing) {
|
|
116
116
|
return;
|
|
117
117
|
}
|
|
118
|
-
|
|
118
|
+
user(
|
|
119
119
|
Object.fromEntries(
|
|
120
120
|
Object.entries(comparing).filter(([key, value]) => {
|
|
121
121
|
if (alwaysKeep.includes(key)) {
|
|
@@ -134,57 +134,57 @@ const dirty = (baseEntitySource, alwaysKeep = [], excludeKeys = [], cloneFn) =>
|
|
|
134
134
|
comparingSrc.use(v);
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
|
-
}
|
|
137
|
+
}
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
return (
|
|
141
|
-
loadingStartSrc(() =>
|
|
142
|
-
loadingFinishSrc(() =>
|
|
139
|
+
function Loading(loadingStartSrc, loadingFinishSrc) {
|
|
140
|
+
return (user) => {
|
|
141
|
+
loadingStartSrc(() => user(true));
|
|
142
|
+
loadingFinishSrc(() => user(false));
|
|
143
143
|
};
|
|
144
|
-
}
|
|
144
|
+
}
|
|
145
145
|
|
|
146
|
-
|
|
147
|
-
return (
|
|
146
|
+
function Lock(baseSrc, lockSrc) {
|
|
147
|
+
return (user) => {
|
|
148
148
|
let locked = false;
|
|
149
149
|
lockSrc((newLock) => {
|
|
150
150
|
locked = newLock;
|
|
151
151
|
});
|
|
152
|
-
const i = silentium.
|
|
153
|
-
i(
|
|
152
|
+
const i = silentium.Filtered(baseSrc, () => !locked);
|
|
153
|
+
i(user);
|
|
154
154
|
};
|
|
155
|
-
}
|
|
155
|
+
}
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
return (
|
|
157
|
+
function Memo(baseSrc) {
|
|
158
|
+
return (user) => {
|
|
159
159
|
let lastValue = null;
|
|
160
160
|
baseSrc((v) => {
|
|
161
161
|
if (v !== lastValue) {
|
|
162
|
-
|
|
162
|
+
user(v);
|
|
163
163
|
lastValue = v;
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
166
|
};
|
|
167
|
-
}
|
|
167
|
+
}
|
|
168
168
|
|
|
169
|
-
|
|
170
|
-
return (
|
|
169
|
+
function OnlyChanged(baseSrc) {
|
|
170
|
+
return (user) => {
|
|
171
171
|
let firstValue = false;
|
|
172
172
|
baseSrc((v) => {
|
|
173
173
|
if (firstValue === false) {
|
|
174
174
|
firstValue = true;
|
|
175
175
|
} else {
|
|
176
|
-
|
|
176
|
+
user(v);
|
|
177
177
|
}
|
|
178
178
|
});
|
|
179
179
|
};
|
|
180
|
-
}
|
|
180
|
+
}
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
const baseSync = silentium.
|
|
184
|
-
const keySync = silentium.
|
|
182
|
+
function Part(baseSrc, keySrc) {
|
|
183
|
+
const baseSync = silentium.Primitive(baseSrc.event);
|
|
184
|
+
const keySync = silentium.Primitive(keySrc);
|
|
185
185
|
return {
|
|
186
|
-
event: (
|
|
187
|
-
silentium.
|
|
186
|
+
event: (user) => {
|
|
187
|
+
silentium.All(
|
|
188
188
|
baseSrc.event,
|
|
189
189
|
keySrc
|
|
190
190
|
)(([base, key]) => {
|
|
@@ -194,7 +194,7 @@ const part = (baseSrc, keySrc) => {
|
|
|
194
194
|
value = value[keyChunk];
|
|
195
195
|
});
|
|
196
196
|
if (value !== void 0 && value !== base) {
|
|
197
|
-
|
|
197
|
+
user(value);
|
|
198
198
|
}
|
|
199
199
|
});
|
|
200
200
|
},
|
|
@@ -208,11 +208,11 @@ const part = (baseSrc, keySrc) => {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
};
|
|
211
|
-
}
|
|
211
|
+
}
|
|
212
212
|
|
|
213
|
-
|
|
214
|
-
return (
|
|
215
|
-
silentium.
|
|
213
|
+
function Path(baseSrc, keySrc) {
|
|
214
|
+
return (user) => {
|
|
215
|
+
silentium.All(
|
|
216
216
|
baseSrc,
|
|
217
217
|
keySrc
|
|
218
218
|
)(([base, key]) => {
|
|
@@ -222,36 +222,36 @@ const path = (baseSrc, keySrc) => {
|
|
|
222
222
|
value = value[keyChunk];
|
|
223
223
|
});
|
|
224
224
|
if (value !== void 0 && value !== base) {
|
|
225
|
-
|
|
225
|
+
user(value);
|
|
226
226
|
}
|
|
227
227
|
});
|
|
228
228
|
};
|
|
229
|
-
}
|
|
229
|
+
}
|
|
230
230
|
|
|
231
|
-
|
|
232
|
-
return (
|
|
231
|
+
function Polling(baseSrc, triggerSrc) {
|
|
232
|
+
return (user) => {
|
|
233
233
|
triggerSrc(() => {
|
|
234
|
-
baseSrc(
|
|
234
|
+
baseSrc(user);
|
|
235
235
|
});
|
|
236
236
|
};
|
|
237
|
-
}
|
|
237
|
+
}
|
|
238
238
|
|
|
239
|
-
|
|
240
|
-
return (
|
|
241
|
-
const targetSync = silentium.
|
|
239
|
+
function Shot(targetSrc, triggerSrc) {
|
|
240
|
+
return (user) => {
|
|
241
|
+
const targetSync = silentium.Primitive(targetSrc);
|
|
242
242
|
triggerSrc(() => {
|
|
243
243
|
const value = targetSync.primitive();
|
|
244
244
|
if (silentium.isFilled(value)) {
|
|
245
|
-
|
|
245
|
+
user(value);
|
|
246
246
|
}
|
|
247
247
|
});
|
|
248
248
|
};
|
|
249
|
-
}
|
|
249
|
+
}
|
|
250
250
|
|
|
251
|
-
|
|
252
|
-
return (
|
|
251
|
+
function Task(baseSrc, delay = 0) {
|
|
252
|
+
return (user) => {
|
|
253
253
|
let prevTimer = null;
|
|
254
|
-
silentium.
|
|
254
|
+
silentium.ExecutorApplied(baseSrc, (fn) => {
|
|
255
255
|
return (v) => {
|
|
256
256
|
if (prevTimer) {
|
|
257
257
|
clearTimeout(prevTimer);
|
|
@@ -260,12 +260,12 @@ const task = (baseSrc, delay = 0) => {
|
|
|
260
260
|
fn(v);
|
|
261
261
|
}, delay);
|
|
262
262
|
};
|
|
263
|
-
})(
|
|
263
|
+
})(user);
|
|
264
264
|
};
|
|
265
|
-
}
|
|
265
|
+
}
|
|
266
266
|
|
|
267
|
-
|
|
268
|
-
return (
|
|
267
|
+
function Tick(baseSrc) {
|
|
268
|
+
return (user) => {
|
|
269
269
|
let microtaskScheduled = false;
|
|
270
270
|
let lastValue = null;
|
|
271
271
|
const scheduleMicrotask = () => {
|
|
@@ -273,7 +273,7 @@ const tick = (baseSrc) => {
|
|
|
273
273
|
queueMicrotask(() => {
|
|
274
274
|
microtaskScheduled = false;
|
|
275
275
|
if (lastValue !== null) {
|
|
276
|
-
|
|
276
|
+
user(lastValue);
|
|
277
277
|
lastValue = null;
|
|
278
278
|
}
|
|
279
279
|
});
|
|
@@ -285,52 +285,52 @@ const tick = (baseSrc) => {
|
|
|
285
285
|
}
|
|
286
286
|
});
|
|
287
287
|
};
|
|
288
|
-
}
|
|
288
|
+
}
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
return (
|
|
290
|
+
function HashTable(baseSrc) {
|
|
291
|
+
return (user) => {
|
|
292
292
|
const record = {};
|
|
293
293
|
baseSrc(([key, value]) => {
|
|
294
294
|
record[key] = value;
|
|
295
|
-
|
|
295
|
+
user(record);
|
|
296
296
|
});
|
|
297
297
|
};
|
|
298
|
-
}
|
|
298
|
+
}
|
|
299
299
|
|
|
300
|
-
|
|
301
|
-
return (
|
|
300
|
+
function RecordOf(recordSrc) {
|
|
301
|
+
return (user) => {
|
|
302
302
|
const keys = Object.keys(recordSrc);
|
|
303
|
-
silentium.
|
|
303
|
+
silentium.All(...Object.values(recordSrc))((entries) => {
|
|
304
304
|
const record = {};
|
|
305
305
|
entries.forEach((entry, index) => {
|
|
306
306
|
record[keys[index]] = entry;
|
|
307
307
|
});
|
|
308
|
-
|
|
308
|
+
user(record);
|
|
309
309
|
});
|
|
310
310
|
};
|
|
311
|
-
}
|
|
311
|
+
}
|
|
312
312
|
|
|
313
|
-
|
|
314
|
-
return (
|
|
315
|
-
silentium.
|
|
313
|
+
function Concatenated(sources, joinPartSrc = silentium.Of("")) {
|
|
314
|
+
return (user) => {
|
|
315
|
+
silentium.All(
|
|
316
316
|
joinPartSrc,
|
|
317
317
|
...sources
|
|
318
318
|
)(([joinPart, ...strings]) => {
|
|
319
|
-
|
|
319
|
+
user(strings.join(joinPart));
|
|
320
320
|
});
|
|
321
321
|
};
|
|
322
|
-
}
|
|
322
|
+
}
|
|
323
323
|
|
|
324
|
-
|
|
324
|
+
function Template(theSrc = silentium.Of(""), placesSrc = silentium.Of({})) {
|
|
325
325
|
let placesCounter = 0;
|
|
326
326
|
const vars = {
|
|
327
|
-
$TPL: silentium.
|
|
327
|
+
$TPL: silentium.Of("$TPL")
|
|
328
328
|
};
|
|
329
329
|
const destructors = [];
|
|
330
330
|
return {
|
|
331
|
-
value: (
|
|
332
|
-
const varsSrc =
|
|
333
|
-
silentium.
|
|
331
|
+
value: (user) => {
|
|
332
|
+
const varsSrc = RecordOf(vars);
|
|
333
|
+
silentium.Applied(silentium.All(theSrc, placesSrc, varsSrc), ([base, rules, vars2]) => {
|
|
334
334
|
Object.entries(rules).forEach(([ph, val]) => {
|
|
335
335
|
base = base.replaceAll(ph, String(val));
|
|
336
336
|
});
|
|
@@ -338,221 +338,221 @@ const template = (theSrc = silentium.of(""), placesSrc = silentium.of({})) => {
|
|
|
338
338
|
base = base.replaceAll(ph, String(val));
|
|
339
339
|
});
|
|
340
340
|
return base;
|
|
341
|
-
})(
|
|
341
|
+
})(user);
|
|
342
342
|
},
|
|
343
343
|
template: (value) => {
|
|
344
|
-
theSrc = silentium.
|
|
344
|
+
theSrc = silentium.Of(value);
|
|
345
345
|
},
|
|
346
346
|
/**
|
|
347
347
|
* Ability to register variable
|
|
348
|
-
* in concrete place
|
|
348
|
+
* in concrete place Of template
|
|
349
349
|
*/
|
|
350
350
|
var: (src) => {
|
|
351
351
|
const varName = `$var${placesCounter}`;
|
|
352
352
|
placesCounter += 1;
|
|
353
|
-
vars[varName] = silentium.
|
|
353
|
+
vars[varName] = silentium.Destructor(src, (d) => {
|
|
354
354
|
destructors.push(d);
|
|
355
|
-
}).
|
|
355
|
+
}).event;
|
|
356
356
|
return varName;
|
|
357
357
|
},
|
|
358
358
|
destroy() {
|
|
359
359
|
destructors.forEach((d) => d());
|
|
360
360
|
}
|
|
361
361
|
};
|
|
362
|
-
}
|
|
362
|
+
}
|
|
363
363
|
|
|
364
|
-
|
|
365
|
-
return (
|
|
366
|
-
silentium.
|
|
364
|
+
function RegexpMatched(patternSrc, valueSrc, flagsSrc = silentium.Of("")) {
|
|
365
|
+
return (user) => {
|
|
366
|
+
silentium.All(
|
|
367
367
|
patternSrc,
|
|
368
368
|
valueSrc,
|
|
369
369
|
flagsSrc
|
|
370
370
|
)(([pattern, value, flags]) => {
|
|
371
|
-
|
|
371
|
+
user(new RegExp(pattern, flags).test(value));
|
|
372
372
|
});
|
|
373
373
|
};
|
|
374
|
-
}
|
|
374
|
+
}
|
|
375
375
|
|
|
376
|
-
|
|
377
|
-
return (
|
|
378
|
-
silentium.
|
|
376
|
+
function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = silentium.Of("")) {
|
|
377
|
+
return (user) => {
|
|
378
|
+
silentium.All(
|
|
379
379
|
patternSrc,
|
|
380
380
|
valueSrc,
|
|
381
381
|
replaceValueSrc,
|
|
382
382
|
flagsSrc
|
|
383
383
|
)(([pattern, value, replaceValue, flags]) => {
|
|
384
|
-
|
|
384
|
+
user(String(value).replace(new RegExp(pattern, flags), replaceValue));
|
|
385
385
|
});
|
|
386
386
|
};
|
|
387
|
-
}
|
|
387
|
+
}
|
|
388
388
|
|
|
389
|
-
|
|
390
|
-
return (
|
|
391
|
-
silentium.
|
|
389
|
+
function RegexpMatch(patternSrc, valueSrc, flagsSrc = silentium.Of("")) {
|
|
390
|
+
return (user) => {
|
|
391
|
+
silentium.All(
|
|
392
392
|
patternSrc,
|
|
393
393
|
valueSrc,
|
|
394
394
|
flagsSrc
|
|
395
395
|
)(([pattern, value, flags]) => {
|
|
396
396
|
const result = new RegExp(pattern, flags).exec(value);
|
|
397
|
-
|
|
397
|
+
user(result ?? []);
|
|
398
398
|
});
|
|
399
399
|
};
|
|
400
|
-
}
|
|
400
|
+
}
|
|
401
401
|
|
|
402
|
-
|
|
403
|
-
return (
|
|
404
|
-
silentium.
|
|
402
|
+
function Set(baseSrc, keySrc, valueSrc) {
|
|
403
|
+
return (user) => {
|
|
404
|
+
silentium.All(
|
|
405
405
|
baseSrc,
|
|
406
406
|
keySrc,
|
|
407
407
|
valueSrc
|
|
408
408
|
)(([base, key, value]) => {
|
|
409
409
|
base[key] = value;
|
|
410
|
-
|
|
410
|
+
user(base);
|
|
411
411
|
});
|
|
412
412
|
};
|
|
413
|
-
}
|
|
413
|
+
}
|
|
414
414
|
|
|
415
|
-
const emptySrc = () => silentium.
|
|
416
|
-
|
|
417
|
-
return (
|
|
415
|
+
const emptySrc = () => silentium.Of(false);
|
|
416
|
+
function Router(urlSrc, routesSrc, defaultSrc) {
|
|
417
|
+
return (user) => {
|
|
418
418
|
const destructors = [];
|
|
419
419
|
const destroyAllData = () => {
|
|
420
420
|
destructors.forEach((d) => d());
|
|
421
421
|
destructors.length = 0;
|
|
422
422
|
};
|
|
423
|
-
silentium.
|
|
423
|
+
silentium.All(
|
|
424
424
|
routesSrc,
|
|
425
425
|
urlSrc
|
|
426
426
|
)(([routes, url]) => {
|
|
427
427
|
destroyAllData();
|
|
428
|
-
const instance = silentium.
|
|
428
|
+
const instance = silentium.All(
|
|
429
429
|
defaultSrc(),
|
|
430
|
-
silentium.
|
|
430
|
+
silentium.All(
|
|
431
431
|
...routes.map(
|
|
432
|
-
(r) => silentium.
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
silentium.
|
|
436
|
-
silentium.
|
|
437
|
-
r.patternFlags ? silentium.
|
|
432
|
+
(r) => silentium.Destructor(
|
|
433
|
+
BranchLazy(
|
|
434
|
+
RegexpMatched(
|
|
435
|
+
silentium.Of(r.pattern),
|
|
436
|
+
silentium.Of(url),
|
|
437
|
+
r.patternFlags ? silentium.Of(r.patternFlags) : void 0
|
|
438
438
|
),
|
|
439
439
|
r.template,
|
|
440
440
|
emptySrc
|
|
441
441
|
),
|
|
442
442
|
(d) => destructors.push(d)
|
|
443
|
-
).
|
|
443
|
+
).event
|
|
444
444
|
)
|
|
445
445
|
)
|
|
446
446
|
);
|
|
447
|
-
silentium.
|
|
447
|
+
silentium.Applied(instance, (r) => {
|
|
448
448
|
const firstReal = r[1].find((r2) => r2 !== false);
|
|
449
449
|
if (firstReal) {
|
|
450
450
|
return firstReal;
|
|
451
451
|
}
|
|
452
452
|
return r[0];
|
|
453
|
-
})(
|
|
453
|
+
})(user);
|
|
454
454
|
});
|
|
455
455
|
return destroyAllData;
|
|
456
456
|
};
|
|
457
|
-
}
|
|
457
|
+
}
|
|
458
458
|
|
|
459
|
-
|
|
460
|
-
return (
|
|
461
|
-
silentium.
|
|
459
|
+
function And(oneSrc, twoSrc) {
|
|
460
|
+
return (user) => {
|
|
461
|
+
silentium.All(
|
|
462
462
|
oneSrc,
|
|
463
463
|
twoSrc
|
|
464
464
|
)(([one, two]) => {
|
|
465
|
-
|
|
465
|
+
user(one && two);
|
|
466
466
|
});
|
|
467
467
|
};
|
|
468
|
-
}
|
|
468
|
+
}
|
|
469
469
|
|
|
470
|
-
|
|
471
|
-
return (
|
|
472
|
-
silentium.
|
|
470
|
+
function Or(oneSrc, twoSrc) {
|
|
471
|
+
return (user) => {
|
|
472
|
+
silentium.All(
|
|
473
473
|
oneSrc,
|
|
474
474
|
twoSrc
|
|
475
475
|
)(([one, two]) => {
|
|
476
|
-
|
|
476
|
+
user(one || two);
|
|
477
477
|
});
|
|
478
478
|
};
|
|
479
|
-
}
|
|
479
|
+
}
|
|
480
480
|
|
|
481
|
-
|
|
482
|
-
return (
|
|
481
|
+
function Not(baseSrc) {
|
|
482
|
+
return (user) => {
|
|
483
483
|
baseSrc((v) => {
|
|
484
|
-
|
|
484
|
+
user(!v);
|
|
485
485
|
});
|
|
486
486
|
};
|
|
487
|
-
}
|
|
487
|
+
}
|
|
488
488
|
|
|
489
|
-
|
|
490
|
-
return (
|
|
491
|
-
silentium.
|
|
489
|
+
function Bool(baseSrc) {
|
|
490
|
+
return (user) => {
|
|
491
|
+
silentium.Applied(baseSrc, Boolean)(user);
|
|
492
492
|
};
|
|
493
|
-
}
|
|
493
|
+
}
|
|
494
494
|
|
|
495
|
-
|
|
496
|
-
return (
|
|
495
|
+
function FromJson(jsonSrc, errorOwner) {
|
|
496
|
+
return (user) => {
|
|
497
497
|
jsonSrc((json) => {
|
|
498
498
|
try {
|
|
499
|
-
|
|
499
|
+
user(JSON.parse(json));
|
|
500
500
|
} catch (error) {
|
|
501
501
|
errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
|
|
502
502
|
}
|
|
503
503
|
});
|
|
504
504
|
};
|
|
505
|
-
}
|
|
505
|
+
}
|
|
506
506
|
|
|
507
|
-
|
|
508
|
-
return (
|
|
507
|
+
function ToJson(dataSrc, errorOwner) {
|
|
508
|
+
return (user) => {
|
|
509
509
|
dataSrc((data) => {
|
|
510
510
|
try {
|
|
511
|
-
|
|
511
|
+
user(JSON.stringify(data));
|
|
512
512
|
} catch {
|
|
513
513
|
errorOwner?.(new Error("Failed to convert to JSON"));
|
|
514
514
|
}
|
|
515
515
|
});
|
|
516
516
|
};
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
return (
|
|
521
|
-
silentium.
|
|
522
|
-
};
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
exports.
|
|
526
|
-
exports.
|
|
527
|
-
exports.
|
|
528
|
-
exports.
|
|
529
|
-
exports.
|
|
530
|
-
exports.
|
|
531
|
-
exports.
|
|
532
|
-
exports.
|
|
533
|
-
exports.
|
|
534
|
-
exports.
|
|
535
|
-
exports.
|
|
536
|
-
exports.
|
|
537
|
-
exports.
|
|
538
|
-
exports.
|
|
539
|
-
exports.
|
|
540
|
-
exports.
|
|
541
|
-
exports.
|
|
542
|
-
exports.
|
|
543
|
-
exports.
|
|
544
|
-
exports.
|
|
545
|
-
exports.
|
|
546
|
-
exports.
|
|
547
|
-
exports.
|
|
548
|
-
exports.
|
|
549
|
-
exports.
|
|
550
|
-
exports.
|
|
551
|
-
exports.
|
|
552
|
-
exports.
|
|
553
|
-
exports.
|
|
554
|
-
exports.
|
|
555
|
-
exports.
|
|
556
|
-
exports.
|
|
557
|
-
exports.
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
function First(baseSrc) {
|
|
520
|
+
return (user) => {
|
|
521
|
+
silentium.Applied(baseSrc, (a) => a[0])(user);
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
exports.And = And;
|
|
526
|
+
exports.Bool = Bool;
|
|
527
|
+
exports.Branch = Branch;
|
|
528
|
+
exports.BranchLazy = BranchLazy;
|
|
529
|
+
exports.Concatenated = Concatenated;
|
|
530
|
+
exports.Constant = Constant;
|
|
531
|
+
exports.Deadline = Deadline;
|
|
532
|
+
exports.Deferred = Deferred;
|
|
533
|
+
exports.Detached = Detached;
|
|
534
|
+
exports.Dirty = Dirty;
|
|
535
|
+
exports.First = First;
|
|
536
|
+
exports.FromJson = FromJson;
|
|
537
|
+
exports.HashTable = HashTable;
|
|
538
|
+
exports.Loading = Loading;
|
|
539
|
+
exports.Lock = Lock;
|
|
540
|
+
exports.Memo = Memo;
|
|
541
|
+
exports.Not = Not;
|
|
542
|
+
exports.OnlyChanged = OnlyChanged;
|
|
543
|
+
exports.Or = Or;
|
|
544
|
+
exports.Part = Part;
|
|
545
|
+
exports.Path = Path;
|
|
546
|
+
exports.Polling = Polling;
|
|
547
|
+
exports.RecordOf = RecordOf;
|
|
548
|
+
exports.RegexpMatch = RegexpMatch;
|
|
549
|
+
exports.RegexpMatched = RegexpMatched;
|
|
550
|
+
exports.RegexpReplaced = RegexpReplaced;
|
|
551
|
+
exports.Router = Router;
|
|
552
|
+
exports.Set = Set;
|
|
553
|
+
exports.Shot = Shot;
|
|
554
|
+
exports.Task = Task;
|
|
555
|
+
exports.Template = Template;
|
|
556
|
+
exports.Tick = Tick;
|
|
557
|
+
exports.ToJson = ToJson;
|
|
558
558
|
//# sourceMappingURL=silentium-components.cjs.map
|