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