silentium-components 0.0.81 → 0.0.83
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 +14 -0
- package/dist/silentium-components.cjs +139 -134
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +12 -12
- package/dist/silentium-components.js +140 -135
- 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 +140 -135
- package/dist/silentium-components.mjs.map +1 -1
- package/package.json +2 -2
- package/src/behaviors/Branch._main.test.ts +2 -2
- package/src/behaviors/Branch._values.test.ts +11 -0
- package/src/behaviors/Branch.branchesDontAffectResult.test.ts +2 -2
- package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +5 -5
- package/src/behaviors/Branch.ts +17 -8
- package/src/behaviors/BranchLazy._main.test.ts +4 -4
- package/src/behaviors/BranchLazy.ts +8 -8
- package/src/behaviors/Const.test.ts +3 -3
- package/src/behaviors/Const.ts +5 -5
- package/src/behaviors/Deadline._main.test.ts +2 -2
- package/src/behaviors/Deadline._value.test.ts +3 -3
- package/src/behaviors/Deadline.ts +13 -10
- package/src/behaviors/Deferred.test.ts +3 -3
- package/src/behaviors/Deferred.ts +5 -11
- package/src/behaviors/Detached.test.ts +3 -3
- package/src/behaviors/Detached.ts +2 -2
- package/src/behaviors/Dirty.test.ts +2 -2
- package/src/behaviors/Dirty.ts +5 -5
- package/src/behaviors/Loading.test.ts +2 -2
- package/src/behaviors/Loading.ts +6 -6
- package/src/behaviors/Lock.test.ts +2 -2
- package/src/behaviors/Lock.ts +5 -5
- package/src/behaviors/Memo.test.ts +4 -4
- package/src/behaviors/Memo.ts +5 -5
- package/src/behaviors/OnlyChanged.test.ts +3 -3
- package/src/behaviors/OnlyChanged.ts +5 -5
- package/src/behaviors/Part.test.ts +33 -15
- package/src/behaviors/Part.ts +9 -7
- package/src/behaviors/Path._keyRaw.test.ts +14 -0
- package/src/behaviors/Path._main.test.ts +2 -2
- package/src/behaviors/Path.index.test.ts +2 -2
- package/src/behaviors/Path.nested.test.ts +2 -2
- package/src/behaviors/Path.ts +14 -6
- package/src/behaviors/Polling.ts +5 -5
- package/src/behaviors/Shot._main.test.ts +3 -3
- package/src/behaviors/Shot._onlyChanged.test.ts +3 -3
- package/src/behaviors/Shot.ts +5 -11
- package/src/behaviors/Task.test.ts +5 -5
- package/src/behaviors/Task.ts +2 -2
- package/src/behaviors/Tick.test.ts +2 -2
- package/src/behaviors/Tick.ts +5 -5
- package/src/behaviors/Transaction.ts +6 -6
- package/src/boolean/And.test.ts +2 -2
- package/src/boolean/And.ts +5 -5
- package/src/boolean/Bool.test.ts +2 -2
- package/src/boolean/Bool.ts +2 -2
- package/src/boolean/Not.test.ts +2 -2
- package/src/boolean/Not.ts +5 -5
- package/src/boolean/Or.test.ts +2 -2
- package/src/boolean/Or.ts +5 -5
- package/src/formats/FromJson.ts +6 -6
- package/src/formats/ToJson.ts +6 -6
- package/src/lists/First.test.ts +2 -2
- package/src/lists/First.ts +2 -2
- package/src/navigation/Router._destroy.test.ts +7 -7
- package/src/navigation/Router._firstMatch.test.ts +7 -7
- package/src/navigation/Router._main.test.ts +7 -7
- package/src/navigation/Router._nested.test.ts +16 -16
- package/src/navigation/Router.ts +11 -11
- package/src/strings/Concatenated.test.ts +2 -2
- package/src/strings/Concatenated.ts +5 -5
- package/src/strings/Template._main.test.ts +3 -3
- package/src/strings/Template._place.test.ts +2 -2
- package/src/strings/Template.ts +3 -3
- package/src/structures/HashTable.test.ts +2 -2
- package/src/structures/HashTable.ts +5 -5
- package/src/structures/Record._main.test.ts +2 -2
- package/src/structures/Record._mixed.test.ts +2 -2
- package/src/structures/Record.concatenated.test.ts +4 -4
- package/src/structures/Record.nested.test.ts +2 -2
- package/src/structures/Record.ts +5 -5
- package/src/system/RegexpMatch._group.test.ts +2 -2
- package/src/system/RegexpMatch._main.test.ts +2 -2
- package/src/system/RegexpMatch.ts +5 -5
- package/src/system/RegexpMatched.test.ts +2 -2
- package/src/system/RegexpMatched.ts +5 -5
- package/src/system/RegexpReplaced.test.ts +2 -2
- package/src/system/RegexpReplaced.ts +5 -5
- package/src/system/Set.test.ts +2 -2
- package/src/system/Set.ts +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.0.83](https://github.com/silentium-lab/silentium-components/compare/v0.0.82...v0.0.83) (2025-11-17)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** messages refactoring ([89e72d1](https://github.com/silentium-lab/silentium-components/commit/89e72d11a10a51b2ada0536583083f5b6b68164c))
|
|
11
|
+
|
|
12
|
+
### [0.0.82](https://github.com/silentium-lab/silentium-components/compare/v0.0.81...v0.0.82) (2025-11-16)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **main:** maybeMessage usage ([c2aa7a7](https://github.com/silentium-lab/silentium-components/commit/c2aa7a72e5587caa349a1e55261e1283a6a4fa95))
|
|
18
|
+
|
|
5
19
|
### [0.0.81](https://github.com/silentium-lab/silentium-components/compare/v0.0.80...v0.0.81) (2025-11-15)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
var silentium = require('silentium');
|
|
4
4
|
|
|
5
|
-
function Branch(
|
|
6
|
-
|
|
5
|
+
function Branch(_condition, _left, _right) {
|
|
6
|
+
const $condition = silentium.ActualMessage(_condition);
|
|
7
|
+
const $left = silentium.ActualMessage(_left);
|
|
8
|
+
const $right = _right && silentium.ActualMessage(_right);
|
|
9
|
+
return silentium.Message(function() {
|
|
7
10
|
const left = silentium.Primitive($left);
|
|
8
11
|
let right;
|
|
9
12
|
if ($right !== void 0) {
|
|
10
13
|
right = silentium.Primitive($right);
|
|
11
14
|
}
|
|
12
|
-
$condition.
|
|
13
|
-
silentium.
|
|
15
|
+
$condition.pipe(
|
|
16
|
+
silentium.Tap((v) => {
|
|
14
17
|
let result = null;
|
|
15
18
|
if (v) {
|
|
16
19
|
result = left.primitive();
|
|
@@ -18,7 +21,7 @@ function Branch($condition, $left, $right) {
|
|
|
18
21
|
result = right.primitive();
|
|
19
22
|
}
|
|
20
23
|
if (result !== null) {
|
|
21
|
-
|
|
24
|
+
this.use(result);
|
|
22
25
|
}
|
|
23
26
|
})
|
|
24
27
|
);
|
|
@@ -26,13 +29,13 @@ function Branch($condition, $left, $right) {
|
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
function BranchLazy($condition, $left, $right) {
|
|
29
|
-
return silentium.Message((
|
|
32
|
+
return silentium.Message(function() {
|
|
30
33
|
const dc = silentium.DestroyContainer();
|
|
31
34
|
const destructor = () => {
|
|
32
35
|
dc.destroy();
|
|
33
36
|
};
|
|
34
|
-
$condition.
|
|
35
|
-
silentium.
|
|
37
|
+
$condition.pipe(
|
|
38
|
+
silentium.Tap((v) => {
|
|
36
39
|
destructor();
|
|
37
40
|
let instance;
|
|
38
41
|
if (v) {
|
|
@@ -41,7 +44,7 @@ function BranchLazy($condition, $left, $right) {
|
|
|
41
44
|
instance = $right.use();
|
|
42
45
|
}
|
|
43
46
|
if (instance !== void 0) {
|
|
44
|
-
instance.
|
|
47
|
+
instance.pipe(this);
|
|
45
48
|
dc.add(instance);
|
|
46
49
|
}
|
|
47
50
|
})
|
|
@@ -51,21 +54,22 @@ function BranchLazy($condition, $left, $right) {
|
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
function Constant(permanent, $trigger) {
|
|
54
|
-
return silentium.Message((
|
|
55
|
-
$trigger.
|
|
56
|
-
silentium.
|
|
57
|
-
|
|
57
|
+
return silentium.Message(function() {
|
|
58
|
+
$trigger.pipe(
|
|
59
|
+
silentium.Tap(() => {
|
|
60
|
+
this.use(permanent);
|
|
58
61
|
})
|
|
59
62
|
);
|
|
60
63
|
});
|
|
61
64
|
}
|
|
62
65
|
|
|
63
|
-
function Deadline(error, $base,
|
|
64
|
-
|
|
66
|
+
function Deadline(error, $base, _timeout) {
|
|
67
|
+
const $timeout = silentium.ActualMessage(_timeout);
|
|
68
|
+
return silentium.Message(function() {
|
|
65
69
|
let timer = 0;
|
|
66
70
|
const base = silentium.Shared($base, true);
|
|
67
|
-
$timeout.
|
|
68
|
-
silentium.
|
|
71
|
+
$timeout.pipe(
|
|
72
|
+
silentium.Tap((timeout) => {
|
|
69
73
|
if (timer) {
|
|
70
74
|
clearTimeout(timer);
|
|
71
75
|
}
|
|
@@ -78,9 +82,9 @@ function Deadline(error, $base, $timeout) {
|
|
|
78
82
|
error.use(new Error("Timeout reached in Deadline"));
|
|
79
83
|
}, timeout);
|
|
80
84
|
const f = silentium.Filtered(base, () => !timeoutReached);
|
|
81
|
-
f.
|
|
82
|
-
base.
|
|
83
|
-
silentium.
|
|
85
|
+
f.pipe(this);
|
|
86
|
+
base.pipe(
|
|
87
|
+
silentium.Tap(() => {
|
|
84
88
|
timeoutReached = true;
|
|
85
89
|
})
|
|
86
90
|
);
|
|
@@ -90,13 +94,13 @@ function Deadline(error, $base, $timeout) {
|
|
|
90
94
|
}
|
|
91
95
|
|
|
92
96
|
function Deferred($base, $trigger) {
|
|
93
|
-
return silentium.Message((
|
|
97
|
+
return silentium.Message(function() {
|
|
94
98
|
const base = silentium.Primitive($base);
|
|
95
|
-
$trigger.
|
|
96
|
-
silentium.
|
|
99
|
+
$trigger.pipe(
|
|
100
|
+
silentium.Tap(() => {
|
|
97
101
|
const value = base.primitive();
|
|
98
102
|
if (silentium.isFilled(value)) {
|
|
99
|
-
|
|
103
|
+
this.use(value);
|
|
100
104
|
}
|
|
101
105
|
})
|
|
102
106
|
);
|
|
@@ -104,10 +108,10 @@ function Deferred($base, $trigger) {
|
|
|
104
108
|
}
|
|
105
109
|
|
|
106
110
|
function Detached($base) {
|
|
107
|
-
return silentium.Message((
|
|
111
|
+
return silentium.Message(function() {
|
|
108
112
|
const v = silentium.Primitive($base).primitive();
|
|
109
113
|
if (silentium.isFilled(v)) {
|
|
110
|
-
|
|
114
|
+
this.use(v);
|
|
111
115
|
}
|
|
112
116
|
});
|
|
113
117
|
}
|
|
@@ -131,10 +135,10 @@ class DirtySource {
|
|
|
131
135
|
this.cloner = cloner;
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
|
-
|
|
138
|
+
pipe(transport) {
|
|
135
139
|
const $comparing = silentium.Applied(this.$comparing, this.cloner);
|
|
136
|
-
silentium.All($comparing, this.$base).
|
|
137
|
-
silentium.
|
|
140
|
+
silentium.All($comparing, this.$base).pipe(
|
|
141
|
+
silentium.Tap(([comparing, base]) => {
|
|
138
142
|
if (!comparing) {
|
|
139
143
|
return;
|
|
140
144
|
}
|
|
@@ -161,33 +165,33 @@ class DirtySource {
|
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
167
|
|
|
164
|
-
function Loading($
|
|
165
|
-
return silentium.Message((
|
|
166
|
-
$
|
|
167
|
-
$
|
|
168
|
+
function Loading($start, $finish) {
|
|
169
|
+
return silentium.Message(function() {
|
|
170
|
+
$start.pipe(silentium.Tap(() => this.use(true)));
|
|
171
|
+
$finish.pipe(silentium.Tap(() => this.use(false)));
|
|
168
172
|
});
|
|
169
173
|
}
|
|
170
174
|
|
|
171
175
|
function Lock($base, $lock) {
|
|
172
|
-
return silentium.Message((
|
|
176
|
+
return silentium.Message(function() {
|
|
173
177
|
let locked = false;
|
|
174
|
-
$lock.
|
|
175
|
-
silentium.
|
|
178
|
+
$lock.pipe(
|
|
179
|
+
silentium.Tap((newLock) => {
|
|
176
180
|
locked = newLock;
|
|
177
181
|
})
|
|
178
182
|
);
|
|
179
183
|
const i = silentium.Filtered($base, () => !locked);
|
|
180
|
-
i.
|
|
184
|
+
i.pipe(this);
|
|
181
185
|
});
|
|
182
186
|
}
|
|
183
187
|
|
|
184
188
|
function Memo($base) {
|
|
185
|
-
return silentium.Message((
|
|
189
|
+
return silentium.Message(function() {
|
|
186
190
|
let last = null;
|
|
187
|
-
$base.
|
|
188
|
-
silentium.
|
|
191
|
+
$base.pipe(
|
|
192
|
+
silentium.Tap((v) => {
|
|
189
193
|
if (v !== last && silentium.isFilled(v)) {
|
|
190
|
-
|
|
194
|
+
this.use(v);
|
|
191
195
|
last = v;
|
|
192
196
|
}
|
|
193
197
|
})
|
|
@@ -196,14 +200,14 @@ function Memo($base) {
|
|
|
196
200
|
}
|
|
197
201
|
|
|
198
202
|
function OnlyChanged($base) {
|
|
199
|
-
return silentium.Message((
|
|
203
|
+
return silentium.Message(function() {
|
|
200
204
|
let first = false;
|
|
201
|
-
$base.
|
|
202
|
-
silentium.
|
|
205
|
+
$base.pipe(
|
|
206
|
+
silentium.Tap((v) => {
|
|
203
207
|
if (first === false) {
|
|
204
208
|
first = true;
|
|
205
209
|
} else {
|
|
206
|
-
|
|
210
|
+
this.use(v);
|
|
207
211
|
}
|
|
208
212
|
})
|
|
209
213
|
);
|
|
@@ -214,7 +218,7 @@ var __defProp$1 = Object.defineProperty;
|
|
|
214
218
|
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
215
219
|
var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
216
220
|
function Part($base, $key) {
|
|
217
|
-
return new PartImpl($base, $key);
|
|
221
|
+
return new PartImpl($base, silentium.ActualMessage($key));
|
|
218
222
|
}
|
|
219
223
|
class PartImpl {
|
|
220
224
|
constructor($base, $key) {
|
|
@@ -223,9 +227,9 @@ class PartImpl {
|
|
|
223
227
|
this.$base = silentium.SharedSource($base);
|
|
224
228
|
this.$keyed = silentium.Shared($key);
|
|
225
229
|
}
|
|
226
|
-
|
|
227
|
-
silentium.All(this.$base, this.$keyed).
|
|
228
|
-
silentium.
|
|
230
|
+
pipe(transport) {
|
|
231
|
+
silentium.All(this.$base, this.$keyed).pipe(
|
|
232
|
+
silentium.Tap(([base, keyed]) => {
|
|
229
233
|
const keys = keyed.split(".");
|
|
230
234
|
let value = base;
|
|
231
235
|
keys.forEach((key) => {
|
|
@@ -251,17 +255,18 @@ class PartImpl {
|
|
|
251
255
|
}
|
|
252
256
|
}
|
|
253
257
|
|
|
254
|
-
function Path($base,
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
+
function Path($base, _keyed) {
|
|
259
|
+
const $keyed = silentium.ActualMessage(_keyed);
|
|
260
|
+
return silentium.Message(function() {
|
|
261
|
+
silentium.All($base, $keyed).pipe(
|
|
262
|
+
silentium.Tap(([base, keyed]) => {
|
|
258
263
|
const keys = keyed.split(".");
|
|
259
264
|
let value = base;
|
|
260
265
|
keys.forEach((key) => {
|
|
261
266
|
value = value[key];
|
|
262
267
|
});
|
|
263
268
|
if (value !== void 0 && value !== base) {
|
|
264
|
-
|
|
269
|
+
this.use(value);
|
|
265
270
|
}
|
|
266
271
|
})
|
|
267
272
|
);
|
|
@@ -269,24 +274,24 @@ function Path($base, $keyed) {
|
|
|
269
274
|
}
|
|
270
275
|
|
|
271
276
|
function Polling($base, $trigger) {
|
|
272
|
-
return silentium.Message((
|
|
273
|
-
$trigger.
|
|
274
|
-
silentium.
|
|
275
|
-
$base.
|
|
277
|
+
return silentium.Message(function() {
|
|
278
|
+
$trigger.pipe(
|
|
279
|
+
silentium.Tap(() => {
|
|
280
|
+
$base.pipe(this);
|
|
276
281
|
})
|
|
277
282
|
);
|
|
278
283
|
});
|
|
279
284
|
}
|
|
280
285
|
|
|
281
286
|
function Shot($target, $trigger) {
|
|
282
|
-
return silentium.Message((
|
|
287
|
+
return silentium.Message(function() {
|
|
283
288
|
const targetSync = silentium.Primitive($target);
|
|
284
289
|
targetSync.primitive();
|
|
285
|
-
$trigger.
|
|
286
|
-
silentium.
|
|
290
|
+
$trigger.pipe(
|
|
291
|
+
silentium.Tap(() => {
|
|
287
292
|
const value = targetSync.primitive();
|
|
288
293
|
if (silentium.isFilled(value)) {
|
|
289
|
-
|
|
294
|
+
this.use(value);
|
|
290
295
|
}
|
|
291
296
|
})
|
|
292
297
|
);
|
|
@@ -294,7 +299,7 @@ function Shot($target, $trigger) {
|
|
|
294
299
|
}
|
|
295
300
|
|
|
296
301
|
function Task(baseSrc, delay = 0) {
|
|
297
|
-
return silentium.Message((
|
|
302
|
+
return silentium.Message(function() {
|
|
298
303
|
let prevTimer = null;
|
|
299
304
|
silentium.ExecutorApplied(baseSrc, (fn) => {
|
|
300
305
|
return (v) => {
|
|
@@ -305,12 +310,12 @@ function Task(baseSrc, delay = 0) {
|
|
|
305
310
|
fn(v);
|
|
306
311
|
}, delay);
|
|
307
312
|
};
|
|
308
|
-
}).
|
|
313
|
+
}).pipe(this);
|
|
309
314
|
});
|
|
310
315
|
}
|
|
311
316
|
|
|
312
317
|
function Tick($base) {
|
|
313
|
-
return silentium.Message((
|
|
318
|
+
return silentium.Message(function() {
|
|
314
319
|
let microtaskScheduled = false;
|
|
315
320
|
let lastValue = null;
|
|
316
321
|
const scheduleMicrotask = () => {
|
|
@@ -318,13 +323,13 @@ function Tick($base) {
|
|
|
318
323
|
queueMicrotask(() => {
|
|
319
324
|
microtaskScheduled = false;
|
|
320
325
|
if (lastValue !== null) {
|
|
321
|
-
|
|
326
|
+
this.use(lastValue);
|
|
322
327
|
lastValue = null;
|
|
323
328
|
}
|
|
324
329
|
});
|
|
325
330
|
};
|
|
326
|
-
$base.
|
|
327
|
-
silentium.
|
|
331
|
+
$base.pipe(
|
|
332
|
+
silentium.Tap((v) => {
|
|
328
333
|
lastValue = v;
|
|
329
334
|
if (!microtaskScheduled) {
|
|
330
335
|
scheduleMicrotask();
|
|
@@ -335,17 +340,17 @@ function Tick($base) {
|
|
|
335
340
|
}
|
|
336
341
|
|
|
337
342
|
function Transaction($base, builder, ...args) {
|
|
338
|
-
return silentium.Message((
|
|
343
|
+
return silentium.Message(function() {
|
|
339
344
|
const $res = silentium.LateShared();
|
|
340
345
|
const destructors = [];
|
|
341
|
-
$base.
|
|
342
|
-
silentium.
|
|
346
|
+
$base.pipe(
|
|
347
|
+
silentium.Tap((v) => {
|
|
343
348
|
const $msg = builder(silentium.Of(v), ...args.map((a) => Detached(a)));
|
|
344
349
|
destructors.push($msg);
|
|
345
|
-
$msg.
|
|
350
|
+
$msg.pipe($res);
|
|
346
351
|
})
|
|
347
352
|
);
|
|
348
|
-
$res.
|
|
353
|
+
$res.pipe(this);
|
|
349
354
|
return () => {
|
|
350
355
|
destructors.forEach((d) => d?.destroy());
|
|
351
356
|
destructors.length = 0;
|
|
@@ -354,42 +359,42 @@ function Transaction($base, builder, ...args) {
|
|
|
354
359
|
}
|
|
355
360
|
|
|
356
361
|
function HashTable($base) {
|
|
357
|
-
return silentium.Message((
|
|
362
|
+
return silentium.Message(function() {
|
|
358
363
|
const record = {};
|
|
359
|
-
$base.
|
|
360
|
-
silentium.
|
|
364
|
+
$base.pipe(
|
|
365
|
+
silentium.Tap(([key, value]) => {
|
|
361
366
|
record[key] = value;
|
|
362
|
-
|
|
367
|
+
this.use(record);
|
|
363
368
|
})
|
|
364
369
|
);
|
|
365
370
|
});
|
|
366
371
|
}
|
|
367
372
|
|
|
368
373
|
function Record(record) {
|
|
369
|
-
return silentium.Message((
|
|
374
|
+
return silentium.Message(function() {
|
|
370
375
|
const keys = Object.keys(record);
|
|
371
376
|
keys.forEach((key) => {
|
|
372
377
|
if (!silentium.isMessage(record[key])) {
|
|
373
378
|
record[key] = silentium.Of(record[key]);
|
|
374
379
|
}
|
|
375
380
|
});
|
|
376
|
-
silentium.All(...Object.values(record)).
|
|
377
|
-
silentium.
|
|
381
|
+
silentium.All(...Object.values(record)).pipe(
|
|
382
|
+
silentium.Tap((entries) => {
|
|
378
383
|
const record2 = {};
|
|
379
384
|
entries.forEach((entry, index) => {
|
|
380
385
|
record2[keys[index]] = entry;
|
|
381
386
|
});
|
|
382
|
-
|
|
387
|
+
this.use(record2);
|
|
383
388
|
})
|
|
384
389
|
);
|
|
385
390
|
});
|
|
386
391
|
}
|
|
387
392
|
|
|
388
393
|
function Concatenated(sources, joinPartSrc = silentium.Of("")) {
|
|
389
|
-
return silentium.Message((
|
|
390
|
-
silentium.All(joinPartSrc, ...sources).
|
|
391
|
-
silentium.
|
|
392
|
-
|
|
394
|
+
return silentium.Message(function() {
|
|
395
|
+
silentium.All(joinPartSrc, ...sources).pipe(
|
|
396
|
+
silentium.Tap(([joinPart, ...strings]) => {
|
|
397
|
+
this.use(strings.join(joinPart));
|
|
393
398
|
})
|
|
394
399
|
);
|
|
395
400
|
});
|
|
@@ -410,7 +415,7 @@ class TemplateImpl {
|
|
|
410
415
|
$TPL: silentium.Of("$TPL")
|
|
411
416
|
});
|
|
412
417
|
}
|
|
413
|
-
|
|
418
|
+
pipe(transport) {
|
|
414
419
|
const $vars = Record(this.vars);
|
|
415
420
|
silentium.Applied(silentium.All(this.$src, this.$places, $vars), ([base, rules, vars]) => {
|
|
416
421
|
Object.entries(rules).forEach(([ph, val]) => {
|
|
@@ -420,7 +425,7 @@ class TemplateImpl {
|
|
|
420
425
|
base = base.replaceAll(ph, String(val));
|
|
421
426
|
});
|
|
422
427
|
return base;
|
|
423
|
-
}).
|
|
428
|
+
}).pipe(transport);
|
|
424
429
|
return this;
|
|
425
430
|
}
|
|
426
431
|
template(value) {
|
|
@@ -446,20 +451,20 @@ class TemplateImpl {
|
|
|
446
451
|
}
|
|
447
452
|
|
|
448
453
|
function RegexpMatched(patternSrc, valueSrc, flagsSrc = silentium.Of("")) {
|
|
449
|
-
return silentium.Message((
|
|
450
|
-
silentium.All(patternSrc, valueSrc, flagsSrc).
|
|
451
|
-
silentium.
|
|
452
|
-
|
|
454
|
+
return silentium.Message(function() {
|
|
455
|
+
silentium.All(patternSrc, valueSrc, flagsSrc).pipe(
|
|
456
|
+
silentium.Tap(([pattern, value, flags]) => {
|
|
457
|
+
this.use(new RegExp(pattern, flags).test(value));
|
|
453
458
|
})
|
|
454
459
|
);
|
|
455
460
|
});
|
|
456
461
|
}
|
|
457
462
|
|
|
458
463
|
function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = silentium.Of("")) {
|
|
459
|
-
return silentium.Message((
|
|
460
|
-
silentium.All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).
|
|
461
|
-
silentium.
|
|
462
|
-
|
|
464
|
+
return silentium.Message(function() {
|
|
465
|
+
silentium.All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).pipe(
|
|
466
|
+
silentium.Tap(([pattern, value, replaceValue, flags]) => {
|
|
467
|
+
this.use(
|
|
463
468
|
String(value).replace(new RegExp(pattern, flags), replaceValue)
|
|
464
469
|
);
|
|
465
470
|
})
|
|
@@ -468,35 +473,35 @@ function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = silent
|
|
|
468
473
|
}
|
|
469
474
|
|
|
470
475
|
function RegexpMatch(patternSrc, valueSrc, flagsSrc = silentium.Of("")) {
|
|
471
|
-
return silentium.Message((
|
|
472
|
-
silentium.All(patternSrc, valueSrc, flagsSrc).
|
|
473
|
-
silentium.
|
|
476
|
+
return silentium.Message(function() {
|
|
477
|
+
silentium.All(patternSrc, valueSrc, flagsSrc).pipe(
|
|
478
|
+
silentium.Tap(([pattern, value, flags]) => {
|
|
474
479
|
const result = new RegExp(pattern, flags).exec(value);
|
|
475
|
-
|
|
480
|
+
this.use(result ?? []);
|
|
476
481
|
})
|
|
477
482
|
);
|
|
478
483
|
});
|
|
479
484
|
}
|
|
480
485
|
|
|
481
486
|
function Set(baseSrc, keySrc, valueSrc) {
|
|
482
|
-
return silentium.Message((
|
|
483
|
-
silentium.All(baseSrc, keySrc, valueSrc).
|
|
484
|
-
silentium.
|
|
487
|
+
return silentium.Message(function() {
|
|
488
|
+
silentium.All(baseSrc, keySrc, valueSrc).pipe(
|
|
489
|
+
silentium.Tap(([base, key, value]) => {
|
|
485
490
|
base[key] = value;
|
|
486
|
-
|
|
491
|
+
this.use(base);
|
|
487
492
|
})
|
|
488
493
|
);
|
|
489
494
|
});
|
|
490
495
|
}
|
|
491
496
|
|
|
492
497
|
function Router($url, $routes, $default) {
|
|
493
|
-
return silentium.Message((
|
|
498
|
+
return silentium.Message(function() {
|
|
494
499
|
const dc = silentium.DestroyContainer();
|
|
495
500
|
const destructor = () => {
|
|
496
501
|
dc.destroy();
|
|
497
502
|
};
|
|
498
|
-
silentium.All($routes, $url).
|
|
499
|
-
silentium.
|
|
503
|
+
silentium.All($routes, $url).pipe(
|
|
504
|
+
silentium.Tap(([routes, url]) => {
|
|
500
505
|
destructor();
|
|
501
506
|
const $matches = silentium.All(
|
|
502
507
|
...routes.map(
|
|
@@ -507,18 +512,18 @@ function Router($url, $routes, $default) {
|
|
|
507
512
|
)
|
|
508
513
|
)
|
|
509
514
|
);
|
|
510
|
-
$matches.
|
|
511
|
-
silentium.
|
|
515
|
+
$matches.pipe(
|
|
516
|
+
silentium.Tap((matches) => {
|
|
512
517
|
const index = matches.findIndex((v) => v === true);
|
|
513
518
|
if (index === -1) {
|
|
514
519
|
const instance = $default.use();
|
|
515
520
|
dc.add(instance);
|
|
516
|
-
instance.
|
|
521
|
+
instance.pipe(this);
|
|
517
522
|
}
|
|
518
523
|
if (index > -1) {
|
|
519
524
|
const instance = routes[index].message.use();
|
|
520
525
|
dc.add(instance);
|
|
521
|
-
instance.
|
|
526
|
+
instance.pipe(this);
|
|
522
527
|
}
|
|
523
528
|
})
|
|
524
529
|
);
|
|
@@ -529,47 +534,47 @@ function Router($url, $routes, $default) {
|
|
|
529
534
|
}
|
|
530
535
|
|
|
531
536
|
function And($one, $two) {
|
|
532
|
-
return silentium.Message((
|
|
533
|
-
silentium.All($one, $two).
|
|
534
|
-
silentium.
|
|
535
|
-
|
|
537
|
+
return silentium.Message(function() {
|
|
538
|
+
silentium.All($one, $two).pipe(
|
|
539
|
+
silentium.Tap(([one, two]) => {
|
|
540
|
+
this.use(!!(one && two));
|
|
536
541
|
})
|
|
537
542
|
);
|
|
538
543
|
});
|
|
539
544
|
}
|
|
540
545
|
|
|
541
546
|
function Or($one, $two) {
|
|
542
|
-
return silentium.Message((
|
|
543
|
-
silentium.All($one, $two).
|
|
544
|
-
silentium.
|
|
545
|
-
|
|
547
|
+
return silentium.Message(function() {
|
|
548
|
+
silentium.All($one, $two).pipe(
|
|
549
|
+
silentium.Tap(([one, two]) => {
|
|
550
|
+
this.use(!!(one || two));
|
|
546
551
|
})
|
|
547
552
|
);
|
|
548
553
|
});
|
|
549
554
|
}
|
|
550
555
|
|
|
551
556
|
function Not($base) {
|
|
552
|
-
return silentium.Message((
|
|
553
|
-
$base.
|
|
554
|
-
silentium.
|
|
555
|
-
|
|
557
|
+
return silentium.Message(function() {
|
|
558
|
+
$base.pipe(
|
|
559
|
+
silentium.Tap((v) => {
|
|
560
|
+
this.use(!v);
|
|
556
561
|
})
|
|
557
562
|
);
|
|
558
563
|
});
|
|
559
564
|
}
|
|
560
565
|
|
|
561
566
|
function Bool($base) {
|
|
562
|
-
return silentium.Message((
|
|
563
|
-
silentium.Applied($base, Boolean).
|
|
567
|
+
return silentium.Message(function() {
|
|
568
|
+
silentium.Applied($base, Boolean).pipe(this);
|
|
564
569
|
});
|
|
565
570
|
}
|
|
566
571
|
|
|
567
572
|
function FromJson($json, error) {
|
|
568
|
-
return silentium.Message((
|
|
569
|
-
$json.
|
|
570
|
-
silentium.
|
|
573
|
+
return silentium.Message(function() {
|
|
574
|
+
$json.pipe(
|
|
575
|
+
silentium.Tap((json) => {
|
|
571
576
|
try {
|
|
572
|
-
|
|
577
|
+
this.use(JSON.parse(json));
|
|
573
578
|
} catch (e) {
|
|
574
579
|
error?.use(new Error(`Failed to parse JSON: ${e}`));
|
|
575
580
|
}
|
|
@@ -579,11 +584,11 @@ function FromJson($json, error) {
|
|
|
579
584
|
}
|
|
580
585
|
|
|
581
586
|
function ToJson($data, error) {
|
|
582
|
-
return silentium.Message((
|
|
583
|
-
$data.
|
|
584
|
-
silentium.
|
|
587
|
+
return silentium.Message(function() {
|
|
588
|
+
$data.pipe(
|
|
589
|
+
silentium.Tap((data) => {
|
|
585
590
|
try {
|
|
586
|
-
|
|
591
|
+
this.use(JSON.stringify(data));
|
|
587
592
|
} catch {
|
|
588
593
|
error?.use(new Error("Failed to convert to JSON"));
|
|
589
594
|
}
|
|
@@ -593,8 +598,8 @@ function ToJson($data, error) {
|
|
|
593
598
|
}
|
|
594
599
|
|
|
595
600
|
function First($base) {
|
|
596
|
-
return silentium.Message((
|
|
597
|
-
silentium.Applied($base, (a) => a[0]).
|
|
601
|
+
return silentium.Message(function() {
|
|
602
|
+
silentium.Applied($base, (a) => a[0]).pipe(this);
|
|
598
603
|
});
|
|
599
604
|
}
|
|
600
605
|
|