silentium-components 0.0.26 → 0.0.28

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 (82) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/silentium-components.cjs +570 -342
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +169 -30
  5. package/dist/silentium-components.js +546 -319
  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 +546 -319
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/package.json +2 -2
  13. package/src/behaviors/Branch._main.test.ts +22 -0
  14. package/src/behaviors/Branch.branchesDontAffectResult.test.ts +11 -11
  15. package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +15 -17
  16. package/src/behaviors/Branch.ts +28 -21
  17. package/src/behaviors/{Deadline.test.ts → Deadline._main.test.ts} +5 -5
  18. package/src/behaviors/Deadline._value.test.ts +6 -6
  19. package/src/behaviors/Deadline.ts +45 -41
  20. package/src/behaviors/Deferred.test.ts +14 -14
  21. package/src/behaviors/Deferred.ts +21 -15
  22. package/src/behaviors/Dirty.test.ts +8 -8
  23. package/src/behaviors/Dirty.ts +43 -35
  24. package/src/behaviors/Loading.test.ts +8 -8
  25. package/src/behaviors/Loading.ts +24 -14
  26. package/src/behaviors/Lock.test.ts +14 -14
  27. package/src/behaviors/Lock.ts +21 -14
  28. package/src/behaviors/Memo.test.ts +16 -14
  29. package/src/behaviors/Memo.ts +20 -12
  30. package/src/behaviors/OnlyChanged.test.ts +7 -7
  31. package/src/behaviors/OnlyChanged.ts +22 -15
  32. package/src/behaviors/Path._main.test.ts +14 -0
  33. package/src/behaviors/Path.index.test.ts +4 -4
  34. package/src/behaviors/Path.nested.test.ts +4 -4
  35. package/src/behaviors/Path.ts +27 -22
  36. package/src/behaviors/Shot._main.test.ts +29 -0
  37. package/src/behaviors/Shot._onlyChanged.test.ts +15 -13
  38. package/src/behaviors/Shot.ts +24 -15
  39. package/src/behaviors/Sync.test.ts +10 -0
  40. package/src/behaviors/Sync.ts +38 -15
  41. package/src/behaviors/Tick.test.ts +8 -8
  42. package/src/behaviors/Tick.ts +20 -12
  43. package/src/boolean/And.test.ts +12 -12
  44. package/src/boolean/And.ts +18 -14
  45. package/src/boolean/Bool.ts +11 -2
  46. package/src/boolean/Not.test.ts +6 -6
  47. package/src/boolean/Not.ts +15 -10
  48. package/src/boolean/Or.test.ts +12 -12
  49. package/src/boolean/Or.ts +18 -14
  50. package/src/boolean/index.ts +1 -0
  51. package/src/formats/FromJson.test.ts +11 -0
  52. package/src/formats/FromJson.ts +22 -15
  53. package/src/formats/ToJson.test.ts +11 -0
  54. package/src/formats/ToJson.ts +23 -16
  55. package/src/lists/First.test.ts +4 -4
  56. package/src/lists/First.ts +11 -6
  57. package/src/navigation/Router.test.ts +13 -13
  58. package/src/navigation/Router.ts +36 -29
  59. package/src/strings/Concatenated.test.ts +6 -6
  60. package/src/strings/Concatenated.ts +18 -14
  61. package/src/structures/HashTable.test.ts +7 -7
  62. package/src/structures/HashTable.ts +17 -11
  63. package/src/structures/Record._main.test.ts +28 -0
  64. package/src/structures/Record.concatenated.test.ts +17 -15
  65. package/src/structures/Record.nested.test.ts +10 -10
  66. package/src/structures/RecordOf.ts +29 -0
  67. package/src/structures/index.ts +1 -1
  68. package/src/system/RegexpMatch._group.test.ts +9 -6
  69. package/src/system/RegexpMatch._main.test.ts +16 -0
  70. package/src/system/RegexpMatch.ts +20 -17
  71. package/src/system/RegexpMatched.test.ts +6 -6
  72. package/src/system/RegexpMatched.ts +19 -16
  73. package/src/system/RegexpReplaced.test.ts +10 -6
  74. package/src/system/RegexpReplaced.ts +25 -18
  75. package/src/system/Set.test.ts +6 -6
  76. package/src/system/Set.ts +20 -17
  77. package/src/behaviors/Branch.test.ts +0 -22
  78. package/src/behaviors/Path.test.ts +0 -14
  79. package/src/behaviors/Shot.test.ts +0 -29
  80. package/src/structures/Record.test.ts +0 -28
  81. package/src/structures/Record.ts +0 -22
  82. package/src/system/RegexpMatch.test.ts +0 -13
@@ -2,97 +2,139 @@
2
2
 
3
3
  var silentium = require('silentium');
4
4
 
5
- const dirty = (baseEntitySource, alwaysKeep = [], excludeKeys = []) => {
6
- const [comparing, co] = silentium.of();
7
- const comparingDetached = silentium.applied(
8
- comparing,
9
- (value) => JSON.parse(JSON.stringify(value))
10
- );
11
- const i = (o) => {
12
- silentium.all(
13
- comparingDetached,
14
- baseEntitySource
15
- )(([comparing2, base]) => {
16
- if (!comparing2) {
17
- return;
18
- }
19
- o(
20
- Object.fromEntries(
21
- Object.entries(comparing2).filter(([key, value]) => {
22
- if (alwaysKeep.includes(key)) {
23
- return true;
24
- }
25
- if (excludeKeys.includes(key)) {
26
- return false;
27
- }
28
- return value !== base[key];
29
- })
30
- )
31
- );
32
- });
33
- };
34
- return [i, co];
35
- };
5
+ var __defProp$1 = Object.defineProperty;
6
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
8
+ class Dirty extends silentium.TheInformation {
9
+ constructor(baseEntitySource, alwaysKeep = [], excludeKeys = []) {
10
+ super([baseEntitySource]);
11
+ this.baseEntitySource = baseEntitySource;
12
+ this.alwaysKeep = alwaysKeep;
13
+ this.excludeKeys = excludeKeys;
14
+ __publicField$1(this, "comparingSrc", new silentium.Late());
15
+ }
16
+ value(o) {
17
+ const comparingDetached = new silentium.Applied(
18
+ this.comparingSrc,
19
+ (value) => JSON.parse(JSON.stringify(value))
20
+ );
21
+ const allSrc = new silentium.All(comparingDetached, this.baseEntitySource).value(
22
+ new silentium.From(([comparing, base]) => {
23
+ if (!comparing) {
24
+ return;
25
+ }
26
+ o.give(
27
+ Object.fromEntries(
28
+ Object.entries(comparing).filter(([key, value]) => {
29
+ if (this.alwaysKeep.includes(key)) {
30
+ return true;
31
+ }
32
+ if (this.excludeKeys.includes(key)) {
33
+ return false;
34
+ }
35
+ return value !== base[key];
36
+ })
37
+ )
38
+ );
39
+ })
40
+ );
41
+ this.addDep(allSrc);
42
+ return this;
43
+ }
44
+ owner() {
45
+ return this.comparingSrc.owner();
46
+ }
47
+ }
36
48
 
37
- const loading = (loadingStartSource, loadingFinishSource) => {
38
- return (o) => {
39
- loadingStartSource(() => {
40
- o(true);
41
- });
42
- loadingFinishSource(() => {
43
- o(false);
44
- });
45
- };
46
- };
49
+ class Loading extends silentium.TheInformation {
50
+ constructor(loadingStartSrc, loadingFinishSrc) {
51
+ super(loadingFinishSrc, loadingStartSrc);
52
+ this.loadingStartSrc = loadingStartSrc;
53
+ this.loadingFinishSrc = loadingFinishSrc;
54
+ }
55
+ value(o) {
56
+ this.loadingStartSrc.value(
57
+ new silentium.From(() => {
58
+ o.give(true);
59
+ })
60
+ );
61
+ this.loadingFinishSrc.value(
62
+ new silentium.From(() => {
63
+ o.give(false);
64
+ })
65
+ );
66
+ return this;
67
+ }
68
+ }
47
69
 
48
- const path = (baseSrc, keySrc) => {
49
- return (o) => {
50
- silentium.all(
51
- baseSrc,
52
- keySrc
53
- )(([base, key]) => {
54
- const keyChunks = key.split(".");
55
- let value = base;
56
- keyChunks.forEach((keyChunk) => {
57
- value = value[keyChunk];
58
- });
59
- if (value !== void 0 && value !== base) {
60
- o(value);
61
- }
62
- });
63
- };
64
- };
70
+ class Path extends silentium.TheInformation {
71
+ constructor(baseSrc, keySrc) {
72
+ super(baseSrc, keySrc);
73
+ this.baseSrc = baseSrc;
74
+ this.keySrc = keySrc;
75
+ }
76
+ value(o) {
77
+ const allSrc = new silentium.All(this.baseSrc, this.keySrc).value(
78
+ new silentium.From(([base, key]) => {
79
+ const keyChunks = key.split(".");
80
+ let value = base;
81
+ keyChunks.forEach((keyChunk) => {
82
+ value = value[keyChunk];
83
+ });
84
+ if (value !== void 0 && value !== base) {
85
+ o.give(value);
86
+ }
87
+ })
88
+ );
89
+ this.addDep(allSrc);
90
+ return this;
91
+ }
92
+ }
65
93
 
66
- const deadline = (error, baseSrc, timeoutSrc) => {
67
- let timerHead = null;
68
- return (o) => {
69
- const [baseShared, pool] = silentium.sharedStateless(baseSrc);
70
- timeoutSrc((timeout) => {
71
- if (timerHead) {
72
- clearTimeout(timerHead);
73
- }
74
- let timeoutReached = false;
75
- timerHead = setTimeout(() => {
76
- if (timeoutReached) {
77
- return;
94
+ class Deadline extends silentium.TheInformation {
95
+ constructor(error, baseSrc, timeoutSrc) {
96
+ super([error, baseSrc, timeoutSrc]);
97
+ this.error = error;
98
+ this.baseSrc = baseSrc;
99
+ this.timeoutSrc = timeoutSrc;
100
+ }
101
+ value(o) {
102
+ let timerHead = null;
103
+ const s = new silentium.Shared(this.baseSrc, true);
104
+ this.addDep(s);
105
+ this.timeoutSrc.value(
106
+ new silentium.From((timeout) => {
107
+ if (timerHead) {
108
+ clearTimeout(timerHead);
78
109
  }
79
- timeoutReached = true;
80
- error(new Error("Timeout reached in Deadline class"));
81
- }, timeout);
82
- const f = silentium.filtered(baseShared, () => !timeoutReached);
83
- f(o);
84
- baseShared(() => {
85
- timeoutReached = true;
86
- });
87
- });
88
- return () => {
89
- pool.destroy();
90
- };
91
- };
92
- };
110
+ let timeoutReached = false;
111
+ timerHead = setTimeout(() => {
112
+ if (timeoutReached) {
113
+ return;
114
+ }
115
+ timeoutReached = true;
116
+ this.error.give(new Error("Timeout reached in Deadline class"));
117
+ }, timeout);
118
+ const f = new silentium.Filtered(s, () => !timeoutReached);
119
+ this.addDep(f);
120
+ f.value(o);
121
+ s.value(
122
+ new silentium.From(() => {
123
+ timeoutReached = true;
124
+ })
125
+ );
126
+ })
127
+ );
128
+ return this;
129
+ }
130
+ }
93
131
 
94
- const tick = (baseSrc) => {
95
- return (o) => {
132
+ class Tick extends silentium.TheInformation {
133
+ constructor(baseSrc) {
134
+ super(baseSrc);
135
+ this.baseSrc = baseSrc;
136
+ }
137
+ value(o) {
96
138
  let microtaskScheduled = false;
97
139
  let lastValue = null;
98
140
  const scheduleMicrotask = () => {
@@ -100,290 +142,476 @@ const tick = (baseSrc) => {
100
142
  queueMicrotask(() => {
101
143
  microtaskScheduled = false;
102
144
  if (lastValue !== null) {
103
- o(lastValue);
145
+ o.give(lastValue);
104
146
  lastValue = null;
105
147
  }
106
148
  });
107
149
  };
108
- baseSrc((v) => {
109
- lastValue = v;
110
- if (!microtaskScheduled) {
111
- scheduleMicrotask();
112
- }
113
- });
114
- };
115
- };
150
+ this.baseSrc.value(
151
+ new silentium.From((v) => {
152
+ lastValue = v;
153
+ if (!microtaskScheduled) {
154
+ scheduleMicrotask();
155
+ }
156
+ })
157
+ );
158
+ return this;
159
+ }
160
+ }
116
161
 
117
- const sync = (base) => {
118
- let value;
119
- base((v) => {
120
- value = v;
121
- });
122
- return {
123
- value() {
124
- if (value === void 0) {
125
- throw new Error("no value in sync");
126
- }
127
- return value;
162
+ var __defProp = Object.defineProperty;
163
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
164
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
165
+ class Sync extends silentium.TheInformation {
166
+ constructor(baseSrc) {
167
+ super(baseSrc);
168
+ this.baseSrc = baseSrc;
169
+ __publicField(this, "theValue");
170
+ __publicField(this, "isInit", false);
171
+ }
172
+ value(o) {
173
+ this.baseSrc.value(o);
174
+ return this;
175
+ }
176
+ valueExisted() {
177
+ this.initOwner();
178
+ return silentium.isFilled(this.theValue);
179
+ }
180
+ valueSync() {
181
+ this.initOwner();
182
+ if (!silentium.isFilled(this.theValue)) {
183
+ throw new Error("no value in sync");
184
+ }
185
+ return this.theValue;
186
+ }
187
+ initOwner() {
188
+ if (!this.isInit) {
189
+ this.isInit = true;
190
+ this.value(
191
+ new silentium.From((v) => {
192
+ this.theValue = v;
193
+ })
194
+ );
128
195
  }
129
- };
130
- };
196
+ return this;
197
+ }
198
+ }
131
199
 
132
- const deferred = (baseSrc, triggerSrc) => {
133
- return (o) => {
134
- const baseSync = sync(baseSrc);
135
- triggerSrc(() => {
136
- if (silentium.isFilled(baseSync.value())) {
137
- o(baseSync.value());
138
- }
139
- });
140
- };
141
- };
200
+ class Deferred extends silentium.TheInformation {
201
+ constructor(baseSrc, triggerSrc) {
202
+ super();
203
+ this.baseSrc = baseSrc;
204
+ this.triggerSrc = triggerSrc;
205
+ }
206
+ value(o) {
207
+ const baseSync = new Sync(this.baseSrc).initOwner();
208
+ this.triggerSrc.value(
209
+ new silentium.From(() => {
210
+ if (silentium.isFilled(baseSync.valueSync())) {
211
+ o.give(baseSync.valueSync());
212
+ }
213
+ })
214
+ );
215
+ return this;
216
+ }
217
+ }
142
218
 
143
- const branch = (condition, left, right) => {
144
- return (o) => {
145
- const leftSync = sync(left);
219
+ class Branch extends silentium.TheInformation {
220
+ constructor(conditionSrc, leftSrc, rightSrc) {
221
+ super([conditionSrc, leftSrc, rightSrc]);
222
+ this.conditionSrc = conditionSrc;
223
+ this.leftSrc = leftSrc;
224
+ this.rightSrc = rightSrc;
225
+ }
226
+ value(o) {
227
+ const leftSync = new Sync(this.leftSrc).initOwner();
146
228
  let rightSync;
147
- if (right !== void 0) {
148
- rightSync = sync(right);
229
+ if (this.rightSrc !== void 0) {
230
+ rightSync = new Sync(this.rightSrc).initOwner();
149
231
  }
150
- condition((v) => {
151
- if (v) {
152
- o(leftSync.value());
153
- } else if (rightSync) {
154
- o(rightSync.value());
155
- }
156
- });
157
- };
158
- };
232
+ this.conditionSrc.value(
233
+ new silentium.From((v) => {
234
+ if (v) {
235
+ o.give(leftSync.valueSync());
236
+ } else if (rightSync) {
237
+ o.give(rightSync.valueSync());
238
+ }
239
+ })
240
+ );
241
+ return this;
242
+ }
243
+ }
159
244
 
160
- const memo = (baseSrc) => {
161
- let lastValue = null;
162
- return (o) => {
163
- baseSrc((v) => {
164
- if (v !== lastValue) {
165
- o(v);
166
- lastValue = v;
167
- }
168
- });
169
- };
170
- };
245
+ class Memo extends silentium.TheInformation {
246
+ constructor(baseSrc) {
247
+ super(baseSrc);
248
+ this.baseSrc = baseSrc;
249
+ }
250
+ value(o) {
251
+ let lastValue = null;
252
+ this.baseSrc.value(
253
+ new silentium.From((v) => {
254
+ if (v !== lastValue) {
255
+ o.give(v);
256
+ lastValue = v;
257
+ }
258
+ })
259
+ );
260
+ return this;
261
+ }
262
+ }
171
263
 
172
- const lock = (baseSrc, lockSrc) => {
173
- let locked = false;
174
- const i = silentium.filtered(baseSrc, () => !locked);
175
- return (o) => {
176
- lockSrc((newLock) => {
177
- locked = newLock;
178
- });
179
- i(o);
180
- };
181
- };
264
+ class Lock extends silentium.TheInformation {
265
+ constructor(baseSrc, lockSrc) {
266
+ super(baseSrc, lockSrc);
267
+ this.baseSrc = baseSrc;
268
+ this.lockSrc = lockSrc;
269
+ }
270
+ value(o) {
271
+ let locked = false;
272
+ this.lockSrc.value(
273
+ new silentium.From((newLock) => {
274
+ locked = newLock;
275
+ })
276
+ );
277
+ const i = new silentium.Filtered(this.baseSrc, () => !locked);
278
+ this.addDep(i);
279
+ i.value(o);
280
+ return this;
281
+ }
282
+ }
182
283
 
183
- const shot = (targetSrc, triggerSrc) => {
184
- return (o) => {
185
- const targetSync = sync(targetSrc);
186
- triggerSrc(() => {
187
- if (silentium.isFilled(targetSync.value())) {
188
- o(targetSync.value());
189
- }
190
- });
191
- };
192
- };
284
+ class Shot extends silentium.TheInformation {
285
+ constructor(targetSrc, triggerSrc) {
286
+ super(targetSrc, triggerSrc);
287
+ this.targetSrc = targetSrc;
288
+ this.triggerSrc = triggerSrc;
289
+ }
290
+ value(o) {
291
+ const targetSync = new Sync(this.targetSrc);
292
+ targetSync.initOwner();
293
+ this.triggerSrc.value(
294
+ new silentium.From(() => {
295
+ if (targetSync.valueExisted()) {
296
+ o.give(targetSync.valueSync());
297
+ }
298
+ })
299
+ );
300
+ return this;
301
+ }
302
+ }
193
303
 
194
- const onlyChanged = (baseSrc) => {
195
- let firstValue = false;
196
- return (o) => {
197
- baseSrc((v) => {
198
- if (firstValue === false) {
199
- firstValue = true;
200
- } else {
201
- o(v);
202
- }
203
- });
204
- };
205
- };
304
+ class OnlyChanged extends silentium.TheInformation {
305
+ constructor(baseSrc) {
306
+ super(baseSrc);
307
+ this.baseSrc = baseSrc;
308
+ }
309
+ value(o) {
310
+ let firstValue = false;
311
+ this.baseSrc.value(
312
+ new silentium.From((v) => {
313
+ if (firstValue === false) {
314
+ firstValue = true;
315
+ } else {
316
+ o.give(v);
317
+ }
318
+ })
319
+ );
320
+ return this;
321
+ }
322
+ }
206
323
 
207
- const hashTable = (base) => {
208
- return (o) => {
324
+ class HashTable extends silentium.TheInformation {
325
+ constructor(baseSrc) {
326
+ super(baseSrc);
327
+ this.baseSrc = baseSrc;
328
+ }
329
+ value(o) {
209
330
  const record = {};
210
- base(([key, value]) => {
211
- record[key] = value;
212
- o(record);
213
- });
214
- };
215
- };
331
+ this.baseSrc.value(
332
+ new silentium.From(([key, value]) => {
333
+ record[key] = value;
334
+ o.give(record);
335
+ })
336
+ );
337
+ return this;
338
+ }
339
+ }
216
340
 
217
- const record = (recordSrc) => {
218
- return (o) => {
219
- const keys = Object.keys(recordSrc);
220
- silentium.all(...Object.values(recordSrc))((entries) => {
221
- const record2 = {};
222
- entries.forEach((entry, index) => {
223
- record2[keys[index]] = entry;
224
- });
225
- o(record2);
226
- });
227
- };
228
- };
341
+ class RecordOf extends silentium.TheInformation {
342
+ constructor(recordSrc) {
343
+ super(...Object.values(recordSrc));
344
+ this.recordSrc = recordSrc;
345
+ }
346
+ value(o) {
347
+ const keys = Object.keys(this.recordSrc);
348
+ new silentium.All(...Object.values(this.recordSrc)).value(
349
+ new silentium.From((entries) => {
350
+ const record = {};
351
+ entries.forEach((entry, index) => {
352
+ record[keys[index]] = entry;
353
+ });
354
+ o.give(record);
355
+ })
356
+ );
357
+ return this;
358
+ }
359
+ }
229
360
 
230
- const concatenated = (sources, joinPartSrc = silentium.i("")) => {
231
- return (o) => {
232
- silentium.all(
233
- joinPartSrc,
234
- ...sources
235
- )(([joinPart, ...strings]) => {
236
- o(strings.join(joinPart));
237
- });
238
- };
239
- };
361
+ class Concatenated extends silentium.TheInformation {
362
+ constructor(sources, joinPartSrc = new silentium.Of("")) {
363
+ super(...sources, joinPartSrc);
364
+ this.sources = sources;
365
+ this.joinPartSrc = joinPartSrc;
366
+ }
367
+ value(o) {
368
+ new silentium.All(this.joinPartSrc, ...this.sources).value(
369
+ new silentium.From(([joinPart, ...strings]) => {
370
+ o.give(strings.join(joinPart));
371
+ })
372
+ );
373
+ return this;
374
+ }
375
+ }
240
376
 
241
- const regexpMatched = (patternSrc, valueSrc, flagsSrc = silentium.i("")) => (o) => {
242
- silentium.all(
243
- patternSrc,
244
- valueSrc,
245
- flagsSrc
246
- )(([pattern, value, flags]) => {
247
- o(new RegExp(pattern, flags).test(value));
248
- });
249
- };
377
+ class RegexpMatched extends silentium.TheInformation {
378
+ constructor(patternSrc, valueSrc, flagsSrc = new silentium.Of("")) {
379
+ super(patternSrc, valueSrc, flagsSrc);
380
+ this.patternSrc = patternSrc;
381
+ this.valueSrc = valueSrc;
382
+ this.flagsSrc = flagsSrc;
383
+ }
384
+ value(o) {
385
+ new silentium.All(this.patternSrc, this.valueSrc, this.flagsSrc).value(
386
+ new silentium.From(([pattern, value, flags]) => {
387
+ o.give(new RegExp(pattern, flags).test(value));
388
+ })
389
+ );
390
+ return this;
391
+ }
392
+ }
250
393
 
251
- const router = (urlSrc, routesSrc, defaultSrc) => {
252
- return (o) => {
253
- routesSrc((routes) => {
254
- silentium.any(
255
- silentium.chain(urlSrc, defaultSrc),
256
- ...routes.map((r) => {
257
- return branch(
258
- regexpMatched(
259
- silentium.i(r.pattern),
260
- urlSrc,
261
- r.patternFlags ? silentium.i(r.patternFlags) : void 0
262
- ),
263
- typeof r.template === "function" ? r.template : silentium.i(r.template)
264
- );
265
- })
266
- )(o);
267
- });
268
- };
269
- };
394
+ class RegexpReplaced extends silentium.TheInformation {
395
+ constructor(valueSrc, patternSrc, replaceValueSrc, flagsSrc = new silentium.Of("")) {
396
+ super(valueSrc, patternSrc, replaceValueSrc, flagsSrc);
397
+ this.valueSrc = valueSrc;
398
+ this.patternSrc = patternSrc;
399
+ this.replaceValueSrc = replaceValueSrc;
400
+ this.flagsSrc = flagsSrc;
401
+ }
402
+ value(o) {
403
+ new silentium.All(
404
+ this.patternSrc,
405
+ this.valueSrc,
406
+ this.replaceValueSrc,
407
+ this.flagsSrc
408
+ ).value(
409
+ new silentium.From(([pattern, value, replaceValue, flags]) => {
410
+ o.give(String(value).replace(new RegExp(pattern, flags), replaceValue));
411
+ })
412
+ );
413
+ return this;
414
+ }
415
+ }
270
416
 
271
- const regexpReplaced = (valueSrc, patternSrc, replaceValueSrc, flagsSrc = silentium.i("")) => (o) => {
272
- silentium.all(
273
- patternSrc,
274
- valueSrc,
275
- replaceValueSrc,
276
- flagsSrc
277
- )(([pattern, value, replaceValue, flags]) => {
278
- o(String(value).replace(new RegExp(pattern, flags), replaceValue));
279
- });
280
- };
417
+ class RegexpMatch extends silentium.TheInformation {
418
+ constructor(patternSrc, valueSrc, flagsSrc = new silentium.Of("")) {
419
+ super(patternSrc, valueSrc, flagsSrc);
420
+ this.patternSrc = patternSrc;
421
+ this.valueSrc = valueSrc;
422
+ this.flagsSrc = flagsSrc;
423
+ }
424
+ value(o) {
425
+ new silentium.All(this.patternSrc, this.valueSrc, this.flagsSrc).value(
426
+ new silentium.From(([pattern, value, flags]) => {
427
+ const result = new RegExp(pattern, flags).exec(value);
428
+ o.give(result ?? []);
429
+ })
430
+ );
431
+ return this;
432
+ }
433
+ }
281
434
 
282
- const regexpMatch = (patternSrc, valueSrc, flagsSrc = silentium.i("")) => (o) => {
283
- silentium.all(
284
- patternSrc,
285
- valueSrc,
286
- flagsSrc
287
- )(([pattern, value, flags]) => {
288
- const result = new RegExp(pattern, flags).exec(value);
289
- o(result ?? []);
290
- });
291
- };
435
+ class Set extends silentium.TheInformation {
436
+ constructor(baseSrc, keySrc, valueSrc) {
437
+ super(baseSrc, keySrc, valueSrc);
438
+ this.baseSrc = baseSrc;
439
+ this.keySrc = keySrc;
440
+ this.valueSrc = valueSrc;
441
+ }
442
+ value(o) {
443
+ new silentium.All(this.baseSrc, this.keySrc, this.valueSrc).value(
444
+ new silentium.From(([base, key, value]) => {
445
+ base[key] = value;
446
+ o.give(base);
447
+ })
448
+ );
449
+ return this;
450
+ }
451
+ }
292
452
 
293
- const set = (baseSrc, keySrc, valueSrc) => {
294
- return (o) => {
295
- silentium.all(
296
- baseSrc,
297
- keySrc,
298
- valueSrc
299
- )(([base, key, value]) => {
300
- base[key] = value;
301
- o(base);
302
- });
303
- };
304
- };
453
+ class Router extends silentium.TheInformation {
454
+ constructor(urlSrc, routesSrc, defaultSrc) {
455
+ super(urlSrc, routesSrc, defaultSrc);
456
+ this.urlSrc = urlSrc;
457
+ this.routesSrc = routesSrc;
458
+ this.defaultSrc = defaultSrc;
459
+ }
460
+ value(o) {
461
+ this.routesSrc.value(
462
+ new silentium.From((routes) => {
463
+ new silentium.Any(
464
+ new silentium.Chain(this.urlSrc, this.defaultSrc),
465
+ ...routes.map((r) => {
466
+ return new Branch(
467
+ new RegexpMatched(
468
+ new silentium.Of(r.pattern),
469
+ this.urlSrc,
470
+ r.patternFlags ? new silentium.Of(r.patternFlags) : void 0
471
+ ),
472
+ r.template instanceof silentium.TheInformation ? r.template : new silentium.Of(r.template)
473
+ );
474
+ })
475
+ ).value(o);
476
+ })
477
+ );
478
+ return this;
479
+ }
480
+ }
305
481
 
306
- const and = (oneSrc, twoSrc) => {
307
- return (o) => {
308
- silentium.all(
309
- oneSrc,
310
- twoSrc
311
- )(([one, two]) => {
312
- o(one && two);
313
- });
314
- };
315
- };
482
+ class And extends silentium.TheInformation {
483
+ constructor(oneSrc, twoSrc) {
484
+ super(oneSrc, twoSrc);
485
+ this.oneSrc = oneSrc;
486
+ this.twoSrc = twoSrc;
487
+ }
488
+ value(o) {
489
+ new silentium.All(this.oneSrc, this.twoSrc).value(
490
+ new silentium.From(([one, two]) => {
491
+ o.give(one && two);
492
+ })
493
+ );
494
+ return this;
495
+ }
496
+ }
316
497
 
317
- const or = (oneSrc, twoSrc) => {
318
- return (o) => {
319
- silentium.all(
320
- oneSrc,
321
- twoSrc
322
- )(([one, two]) => {
323
- o(one || two);
324
- });
325
- };
326
- };
498
+ class Or extends silentium.TheInformation {
499
+ constructor(oneSrc, twoSrc) {
500
+ super(oneSrc, twoSrc);
501
+ this.oneSrc = oneSrc;
502
+ this.twoSrc = twoSrc;
503
+ }
504
+ value(o) {
505
+ new silentium.All(this.oneSrc, this.twoSrc).value(
506
+ new silentium.From(([one, two]) => {
507
+ o.give(one || two);
508
+ })
509
+ );
510
+ return this;
511
+ }
512
+ }
327
513
 
328
- const not = (baseSrc) => {
329
- return (o) => {
330
- baseSrc((v) => {
331
- o(!v);
332
- });
333
- };
334
- };
514
+ class Not extends silentium.TheInformation {
515
+ constructor(baseSrc) {
516
+ super(baseSrc);
517
+ this.baseSrc = baseSrc;
518
+ }
519
+ value(o) {
520
+ this.baseSrc.value(
521
+ new silentium.From((v) => {
522
+ o.give(!v);
523
+ })
524
+ );
525
+ return this;
526
+ }
527
+ }
335
528
 
336
- const fromJson = (jsonSrc, errorOwner) => {
337
- return (o) => {
338
- jsonSrc((json) => {
339
- try {
340
- o(JSON.parse(json));
341
- } catch (error) {
342
- errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
343
- }
344
- });
345
- };
346
- };
529
+ class Bool extends silentium.TheInformation {
530
+ constructor(baseSrc) {
531
+ super(baseSrc);
532
+ this.baseSrc = baseSrc;
533
+ }
534
+ value(o) {
535
+ new silentium.Applied(this.baseSrc, Boolean).value(o);
536
+ return this;
537
+ }
538
+ }
347
539
 
348
- const toJson = (dataSrc, errorOwner) => {
349
- return (o) => {
350
- dataSrc((data) => {
351
- try {
352
- o(JSON.stringify(data));
353
- } catch {
354
- errorOwner?.(new Error("Failed to convert to JSON"));
355
- }
356
- });
357
- };
358
- };
540
+ class FromJson extends silentium.TheInformation {
541
+ constructor(jsonSrc, errorOwner) {
542
+ super(jsonSrc);
543
+ this.jsonSrc = jsonSrc;
544
+ this.errorOwner = errorOwner;
545
+ }
546
+ value(o) {
547
+ this.jsonSrc.value(
548
+ new silentium.From((json) => {
549
+ try {
550
+ o.give(JSON.parse(json));
551
+ } catch (error) {
552
+ this.errorOwner?.give(new Error(`Failed to parse JSON: ${error}`));
553
+ }
554
+ })
555
+ );
556
+ return this;
557
+ }
558
+ }
559
+
560
+ class ToJson extends silentium.TheInformation {
561
+ constructor(dataSrc, errorOwner) {
562
+ super(dataSrc);
563
+ this.dataSrc = dataSrc;
564
+ this.errorOwner = errorOwner;
565
+ }
566
+ value(o) {
567
+ this.dataSrc.value(
568
+ new silentium.From((data) => {
569
+ try {
570
+ o.give(JSON.stringify(data));
571
+ } catch {
572
+ this.errorOwner?.give(new Error("Failed to convert to JSON"));
573
+ }
574
+ })
575
+ );
576
+ return this;
577
+ }
578
+ }
359
579
 
360
- const first = (baseSrc) => {
361
- return silentium.applied(baseSrc, (a) => a[0]);
362
- };
580
+ class First extends silentium.TheInformation {
581
+ constructor(baseSrc) {
582
+ super(baseSrc);
583
+ this.baseSrc = baseSrc;
584
+ }
585
+ value(o) {
586
+ new silentium.Applied(this.baseSrc, (a) => a[0]).value(o);
587
+ return this;
588
+ }
589
+ }
363
590
 
364
- exports.and = and;
365
- exports.branch = branch;
366
- exports.concatenated = concatenated;
367
- exports.deadline = deadline;
368
- exports.deferred = deferred;
369
- exports.dirty = dirty;
370
- exports.first = first;
371
- exports.fromJson = fromJson;
372
- exports.hashTable = hashTable;
373
- exports.loading = loading;
374
- exports.lock = lock;
375
- exports.memo = memo;
376
- exports.not = not;
377
- exports.onlyChanged = onlyChanged;
378
- exports.or = or;
379
- exports.path = path;
380
- exports.record = record;
381
- exports.regexpMatch = regexpMatch;
382
- exports.regexpMatched = regexpMatched;
383
- exports.regexpReplaced = regexpReplaced;
384
- exports.router = router;
385
- exports.set = set;
386
- exports.shot = shot;
387
- exports.tick = tick;
388
- exports.toJson = toJson;
591
+ exports.And = And;
592
+ exports.Bool = Bool;
593
+ exports.Branch = Branch;
594
+ exports.Concatenated = Concatenated;
595
+ exports.Deadline = Deadline;
596
+ exports.Deferred = Deferred;
597
+ exports.Dirty = Dirty;
598
+ exports.First = First;
599
+ exports.FromJson = FromJson;
600
+ exports.HashTable = HashTable;
601
+ exports.Loading = Loading;
602
+ exports.Lock = Lock;
603
+ exports.Memo = Memo;
604
+ exports.Not = Not;
605
+ exports.OnlyChanged = OnlyChanged;
606
+ exports.Or = Or;
607
+ exports.Path = Path;
608
+ exports.RecordOf = RecordOf;
609
+ exports.RegexpMatch = RegexpMatch;
610
+ exports.RegexpMatched = RegexpMatched;
611
+ exports.RegexpReplaced = RegexpReplaced;
612
+ exports.Router = Router;
613
+ exports.Set = Set;
614
+ exports.Shot = Shot;
615
+ exports.Tick = Tick;
616
+ exports.ToJson = ToJson;
389
617
  //# sourceMappingURL=silentium-components.cjs.map