silentium 0.0.100 → 0.0.102
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.cjs +73 -77
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +46 -45
- package/dist/silentium.js +71 -75
- package/dist/silentium.js.map +1 -1
- package/dist/silentium.min.js +1 -1
- package/dist/silentium.min.mjs +1 -1
- package/dist/silentium.min.mjs.map +1 -1
- package/dist/silentium.mjs +71 -75
- package/dist/silentium.mjs.map +1 -1
- package/package.json +1 -1
- package/src/base/Destructor.test.ts +4 -4
- package/src/base/Destructor.ts +7 -7
- package/src/base/Local.test.ts +6 -6
- package/src/base/Local.ts +4 -4
- package/src/base/Of.ts +4 -4
- package/src/base/On.ts +3 -2
- package/src/base/Void.ts +2 -2
- package/src/components/All.test.ts +8 -6
- package/src/components/All.ts +6 -6
- package/src/components/Any.test.ts +12 -10
- package/src/components/Any.ts +3 -3
- package/src/components/Applied.test.ts +9 -7
- package/src/components/Applied.ts +6 -6
- package/src/components/Chain.test.ts +16 -14
- package/src/components/Chain.ts +6 -6
- package/src/components/ConstructorApplied.test.ts +26 -0
- package/src/components/ConstructorApplied.ts +13 -0
- package/src/components/ConstructorArgs.test.ts +21 -0
- package/src/components/ConstructorArgs.ts +17 -0
- package/src/components/ConstructorDestroyable.test.ts +18 -0
- package/src/components/ConstructorDestroyable.ts +23 -0
- package/src/components/ExecutorApplied.test.ts +20 -18
- package/src/components/ExecutorApplied.ts +6 -6
- package/src/components/Filtered.test.ts +33 -0
- package/src/components/Filtered.ts +6 -6
- package/src/components/FromEvent.test.ts +19 -17
- package/src/components/FromEvent.ts +12 -12
- package/src/components/FromPromise.test.ts +19 -17
- package/src/components/FromPromise.ts +4 -4
- package/src/components/Late.test.ts +5 -5
- package/src/components/Late.ts +4 -4
- package/src/components/LateShared.test.ts +6 -6
- package/src/components/LateShared.ts +2 -6
- package/src/components/Map.test.ts +53 -0
- package/src/components/Map.ts +8 -8
- package/src/components/Once.test.ts +27 -0
- package/src/components/Once.ts +4 -4
- package/src/components/PrimitiveSource.test.ts +15 -13
- package/src/components/PrimitiveSource.ts +3 -3
- package/src/components/Sequence.test.ts +14 -12
- package/src/components/Sequence.ts +4 -4
- package/src/components/Shared.test.ts +50 -0
- package/src/components/Shared.ts +9 -9
- package/src/components/SharedSource.test.ts +37 -0
- package/src/components/SharedSource.ts +7 -7
- package/src/components/Stream.ts +4 -4
- package/src/components/index.ts +3 -3
- package/src/helpers/OwnerPool.ts +7 -7
- package/src/helpers/isFilled.test.ts +5 -3
- package/src/testing/diagram.ts +2 -2
- package/src/types/{ValueType.ts → ConstructorType.ts} +1 -1
- package/src/types/EventObjectType.ts +5 -0
- package/src/types/{DataType.ts → EventType.ts} +6 -6
- package/src/types/EventUserObjectType.ts +5 -0
- package/src/types/EventUserType.ts +1 -0
- package/src/types/SourceType.ts +4 -3
- package/src/types/index.ts +6 -6
- package/.vscode/settings.json +0 -9
- package/src/components/Filtered._defaultValue.test.ts +0 -17
- package/src/components/Filtered._main.test.ts +0 -17
- package/src/components/LazyApplied.test.ts +0 -24
- package/src/components/LazyApplied.ts +0 -13
- package/src/components/LazyArgs.test.ts +0 -19
- package/src/components/LazyArgs.ts +0 -17
- package/src/components/LazyDestroyable.test.ts +0 -16
- package/src/components/LazyDestroyable.ts +0 -20
- package/src/components/Map._deferred.test.ts +0 -41
- package/src/components/Map._fn.test.ts +0 -20
- package/src/components/Map._main.test.ts +0 -28
- package/src/components/Once._main.test.ts +0 -14
- package/src/components/Once._notcalled.test.ts +0 -14
- package/src/components/Shared._main.test.ts +0 -28
- package/src/components/Shared._stateless.test.ts +0 -23
- package/src/components/SharedSource._diagram.test.ts +0 -16
- package/src/components/SharedSource._main.test.ts +0 -22
- package/src/helpers/dist/isFilled.js +0 -6
- package/src/helpers/dist/isFilled.test.js +0 -8
- package/src/types/DataObjectType.ts +0 -5
- package/src/types/DataUserObjectType.ts +0 -5
- package/src/types/DataUserType.ts +0 -1
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.102](https://github.com/silentium-lab/silentium/compare/v0.0.101...v0.0.102) (2025-10-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** fix destructor component ([602fcf0](https://github.com/silentium-lab/silentium/commit/602fcf0858fcd666b9b6c053a287eee88879df53))
|
|
11
|
+
|
|
12
|
+
### [0.0.101](https://github.com/silentium-lab/silentium/compare/v0.0.100...v0.0.101) (2025-10-11)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **main:** moving to events ([0b6ed3e](https://github.com/silentium-lab/silentium/commit/0b6ed3eb229d63cac5d0dc8963e0feaea1e2eec0))
|
|
18
|
+
|
|
5
19
|
### [0.0.100](https://github.com/silentium-lab/silentium/compare/v0.0.99...v0.0.100) (2025-10-10)
|
|
6
20
|
|
|
7
21
|
|
package/dist/silentium.cjs
CHANGED
|
@@ -6,7 +6,7 @@ const isAllFilled = (keysFilled, keysKnown) => {
|
|
|
6
6
|
const all = (...theInfos) => {
|
|
7
7
|
const keysKnown = new Set(Object.keys(theInfos));
|
|
8
8
|
const keysFilled = /* @__PURE__ */ new Set();
|
|
9
|
-
return function
|
|
9
|
+
return function AllEvent(u) {
|
|
10
10
|
const result = {};
|
|
11
11
|
Object.entries(theInfos).forEach(([key, info]) => {
|
|
12
12
|
keysKnown.add(key);
|
|
@@ -22,23 +22,23 @@ const all = (...theInfos) => {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
const any = (...infos) => {
|
|
25
|
-
return function
|
|
25
|
+
return function AnyEvent(u) {
|
|
26
26
|
infos.forEach((info) => {
|
|
27
27
|
info(u);
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const applied = (
|
|
33
|
-
return function
|
|
34
|
-
|
|
32
|
+
const applied = (baseEv, applier) => {
|
|
33
|
+
return function AppliedEvent(u) {
|
|
34
|
+
baseEv(function AppliedBaseUser(v) {
|
|
35
35
|
u(applier(v));
|
|
36
36
|
});
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
const chain = (...infos) => {
|
|
41
|
-
return function
|
|
41
|
+
return function ChainEvent(u) {
|
|
42
42
|
let lastValue;
|
|
43
43
|
const handleI = (index) => {
|
|
44
44
|
const info = infos[index];
|
|
@@ -59,16 +59,16 @@ const chain = (...infos) => {
|
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
const executorApplied = (
|
|
63
|
-
return function
|
|
62
|
+
const executorApplied = (baseEv, applier) => {
|
|
63
|
+
return function ExecutorAppliedEvent(u) {
|
|
64
64
|
const ExecutorAppliedBaseUser = applier(u);
|
|
65
|
-
|
|
65
|
+
baseEv(ExecutorAppliedBaseUser);
|
|
66
66
|
};
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
const filtered = (
|
|
70
|
-
return function
|
|
71
|
-
|
|
69
|
+
const filtered = (baseEv, predicate, defaultValue) => {
|
|
70
|
+
return function FilteredEvent(u) {
|
|
71
|
+
baseEv(function FilteredBaseUser(v) {
|
|
72
72
|
if (predicate(v)) {
|
|
73
73
|
u(v);
|
|
74
74
|
} else if (defaultValue !== void 0) {
|
|
@@ -78,16 +78,16 @@ const filtered = (baseSrc, predicate, defaultValue) => {
|
|
|
78
78
|
};
|
|
79
79
|
};
|
|
80
80
|
|
|
81
|
-
const fromEvent = (
|
|
81
|
+
const fromEvent = (emitterEv, eventNameEv, subscribeMethodEv, unsubscribeMethodEv) => {
|
|
82
82
|
let lastU = null;
|
|
83
83
|
const handler = function FromEventHandler(v) {
|
|
84
84
|
if (lastU) {
|
|
85
85
|
lastU(v);
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
|
-
return function
|
|
88
|
+
return function FromEventEvent(u) {
|
|
89
89
|
lastU = u;
|
|
90
|
-
const a = all(
|
|
90
|
+
const a = all(emitterEv, eventNameEv, subscribeMethodEv);
|
|
91
91
|
a(function FromEventAllUser([emitter, eventName, subscribe]) {
|
|
92
92
|
if (!emitter?.[subscribe]) {
|
|
93
93
|
return;
|
|
@@ -96,10 +96,10 @@ const fromEvent = (emitterSrc, eventNameSrc, subscribeMethodSrc, unsubscribeMeth
|
|
|
96
96
|
});
|
|
97
97
|
return function FromEventDestructor() {
|
|
98
98
|
lastU = null;
|
|
99
|
-
if (!
|
|
99
|
+
if (!unsubscribeMethodEv) {
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
|
-
const a2 = all(
|
|
102
|
+
const a2 = all(emitterEv, eventNameEv, unsubscribeMethodEv);
|
|
103
103
|
a2(([emitter, eventName, unsubscribe]) => {
|
|
104
104
|
emitter?.[unsubscribe]?.(eventName, handler);
|
|
105
105
|
});
|
|
@@ -108,7 +108,7 @@ const fromEvent = (emitterSrc, eventNameSrc, subscribeMethodSrc, unsubscribeMeth
|
|
|
108
108
|
};
|
|
109
109
|
|
|
110
110
|
const fromPromise = (p, errorOwner) => {
|
|
111
|
-
return function
|
|
111
|
+
return function FromPromiseEvent(u) {
|
|
112
112
|
p.then(function FromPromiseThen(v) {
|
|
113
113
|
u(v);
|
|
114
114
|
}).catch(function FromPromiseCatch(e) {
|
|
@@ -168,7 +168,7 @@ const late = (v) => {
|
|
|
168
168
|
}
|
|
169
169
|
};
|
|
170
170
|
return {
|
|
171
|
-
|
|
171
|
+
event: function LateEvent(u) {
|
|
172
172
|
if (lateUser) {
|
|
173
173
|
throw new Error(
|
|
174
174
|
"Late component gets new user, when another was already connected!"
|
|
@@ -177,16 +177,16 @@ const late = (v) => {
|
|
|
177
177
|
lateUser = u;
|
|
178
178
|
notify(v);
|
|
179
179
|
},
|
|
180
|
-
|
|
180
|
+
use: function LateUser(v2) {
|
|
181
181
|
notify(v2);
|
|
182
182
|
}
|
|
183
183
|
};
|
|
184
184
|
};
|
|
185
185
|
|
|
186
|
-
const once = (
|
|
187
|
-
return function
|
|
186
|
+
const once = (baseEv) => {
|
|
187
|
+
return function OnceEvent(u) {
|
|
188
188
|
let isFilled = false;
|
|
189
|
-
|
|
189
|
+
baseEv(function OnceBaseUser(v) {
|
|
190
190
|
if (!isFilled) {
|
|
191
191
|
isFilled = true;
|
|
192
192
|
u(v);
|
|
@@ -195,19 +195,19 @@ const once = (baseSrc) => {
|
|
|
195
195
|
};
|
|
196
196
|
};
|
|
197
197
|
|
|
198
|
-
const shared = (
|
|
198
|
+
const shared = (baseEv, stateless = false) => {
|
|
199
199
|
const ownersPool = new OwnerPool();
|
|
200
200
|
let lastValue;
|
|
201
201
|
const calls = late();
|
|
202
|
-
once(calls.
|
|
203
|
-
|
|
202
|
+
once(calls.event)(function SharedCallsUser() {
|
|
203
|
+
baseEv(function SharedBaseUser(v) {
|
|
204
204
|
lastValue = v;
|
|
205
205
|
ownersPool.owner()(v);
|
|
206
206
|
});
|
|
207
207
|
});
|
|
208
208
|
return {
|
|
209
|
-
|
|
210
|
-
calls.
|
|
209
|
+
event: function SharedEvent(u) {
|
|
210
|
+
calls.use(1);
|
|
211
211
|
if (!stateless && isFilled(lastValue) && !ownersPool.has(u)) {
|
|
212
212
|
u(lastValue);
|
|
213
213
|
}
|
|
@@ -216,13 +216,13 @@ const shared = (baseSrc, stateless = false) => {
|
|
|
216
216
|
ownersPool.remove(u);
|
|
217
217
|
};
|
|
218
218
|
},
|
|
219
|
-
|
|
220
|
-
calls.
|
|
219
|
+
use: function SharedUser(value) {
|
|
220
|
+
calls.use(1);
|
|
221
221
|
lastValue = value;
|
|
222
222
|
ownersPool.owner()(value);
|
|
223
223
|
},
|
|
224
224
|
touched() {
|
|
225
|
-
calls.
|
|
225
|
+
calls.use(1);
|
|
226
226
|
},
|
|
227
227
|
pool() {
|
|
228
228
|
return ownersPool;
|
|
@@ -233,36 +233,32 @@ const shared = (baseSrc, stateless = false) => {
|
|
|
233
233
|
};
|
|
234
234
|
};
|
|
235
235
|
|
|
236
|
-
const sharedSource = (
|
|
237
|
-
const
|
|
236
|
+
const sharedSource = (baseEv, stateless = false) => {
|
|
237
|
+
const sharedEv = shared(baseEv.event, stateless);
|
|
238
238
|
return {
|
|
239
|
-
|
|
240
|
-
|
|
239
|
+
event: function SharedSourceEvent(u) {
|
|
240
|
+
sharedEv.event(u);
|
|
241
241
|
},
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
use: function SharedSourceUser(v) {
|
|
243
|
+
sharedEv.touched();
|
|
244
|
+
baseEv.use(v);
|
|
245
245
|
}
|
|
246
246
|
};
|
|
247
247
|
};
|
|
248
248
|
|
|
249
|
-
const lateShared = (
|
|
250
|
-
|
|
251
|
-
return {
|
|
252
|
-
value: src.value,
|
|
253
|
-
give: src.give
|
|
254
|
-
};
|
|
249
|
+
const lateShared = (value) => {
|
|
250
|
+
return sharedSource(late(value));
|
|
255
251
|
};
|
|
256
252
|
|
|
257
|
-
const
|
|
253
|
+
const constructorApplied = (baseConstructor, applier) => {
|
|
258
254
|
return function LazyAppliedData(...args) {
|
|
259
|
-
return applier(
|
|
255
|
+
return applier(baseConstructor(...args));
|
|
260
256
|
};
|
|
261
257
|
};
|
|
262
258
|
|
|
263
|
-
const
|
|
264
|
-
return function
|
|
265
|
-
return
|
|
259
|
+
const constructorArgs = (baseConstructor, args, startFromArgIndex = 0) => {
|
|
260
|
+
return function ConstructorArgsEvent(...runArgs) {
|
|
261
|
+
return baseConstructor(...mergeAtIndex(runArgs, args, startFromArgIndex));
|
|
266
262
|
};
|
|
267
263
|
};
|
|
268
264
|
function mergeAtIndex(arr1, arr2, index) {
|
|
@@ -271,21 +267,21 @@ function mergeAtIndex(arr1, arr2, index) {
|
|
|
271
267
|
return result.concat(arr2);
|
|
272
268
|
}
|
|
273
269
|
|
|
274
|
-
const
|
|
270
|
+
const constructorDestroyable = (baseConstructor) => {
|
|
275
271
|
const instances = [];
|
|
276
272
|
return {
|
|
277
|
-
get: function
|
|
278
|
-
const inst =
|
|
273
|
+
get: function ConstructorDestroyable(...args) {
|
|
274
|
+
const inst = baseConstructor(...args);
|
|
279
275
|
instances.push(inst);
|
|
280
276
|
return inst;
|
|
281
277
|
},
|
|
282
|
-
destroy: function
|
|
278
|
+
destroy: function ConstructorDestructor() {
|
|
283
279
|
instances.forEach((i) => i.destroy());
|
|
284
280
|
}
|
|
285
281
|
};
|
|
286
282
|
};
|
|
287
283
|
|
|
288
|
-
const destructor = (
|
|
284
|
+
const destructor = (baseEv, destructorUser) => {
|
|
289
285
|
let mbDestructor;
|
|
290
286
|
let theUser = null;
|
|
291
287
|
const destroy = () => {
|
|
@@ -293,9 +289,9 @@ const destructor = (src, destructorUser) => {
|
|
|
293
289
|
mbDestructor?.();
|
|
294
290
|
};
|
|
295
291
|
return {
|
|
296
|
-
|
|
292
|
+
event: function DestructorData(u) {
|
|
297
293
|
theUser = u;
|
|
298
|
-
mbDestructor =
|
|
294
|
+
mbDestructor = baseEv((v) => {
|
|
299
295
|
if (theUser) {
|
|
300
296
|
theUser(v);
|
|
301
297
|
}
|
|
@@ -309,10 +305,10 @@ const destructor = (src, destructorUser) => {
|
|
|
309
305
|
};
|
|
310
306
|
};
|
|
311
307
|
|
|
312
|
-
const local = (
|
|
313
|
-
return function
|
|
308
|
+
const local = (baseEv) => {
|
|
309
|
+
return function LocalEvent(user) {
|
|
314
310
|
let destroyed = false;
|
|
315
|
-
const d =
|
|
311
|
+
const d = baseEv(function LocalBaseUser(v) {
|
|
316
312
|
if (!destroyed) {
|
|
317
313
|
user(v);
|
|
318
314
|
}
|
|
@@ -324,25 +320,25 @@ const local = (baseSrc) => {
|
|
|
324
320
|
};
|
|
325
321
|
};
|
|
326
322
|
|
|
327
|
-
const of = (
|
|
328
|
-
return u(
|
|
323
|
+
const of = (value) => function OfEvent(u) {
|
|
324
|
+
return u(value);
|
|
329
325
|
};
|
|
330
326
|
|
|
331
|
-
const on = (
|
|
327
|
+
const on = (event, user) => event(user);
|
|
332
328
|
|
|
333
|
-
const _void = () => function
|
|
329
|
+
const _void = () => function VoidEvent() {
|
|
334
330
|
};
|
|
335
331
|
|
|
336
|
-
const map = (
|
|
332
|
+
const map = (baseEv, targetEv) => {
|
|
337
333
|
return function MapData(u) {
|
|
338
|
-
|
|
334
|
+
baseEv(function MapBaseUser(v) {
|
|
339
335
|
const infos = [];
|
|
340
336
|
v.forEach((val) => {
|
|
341
337
|
let valInfo = val;
|
|
342
338
|
if (typeof valInfo !== "function") {
|
|
343
339
|
valInfo = of(valInfo);
|
|
344
340
|
}
|
|
345
|
-
const info =
|
|
341
|
+
const info = targetEv(valInfo);
|
|
346
342
|
infos.push(info);
|
|
347
343
|
});
|
|
348
344
|
const allI = all(...infos);
|
|
@@ -351,8 +347,8 @@ const map = (baseSrc, targetSrc) => {
|
|
|
351
347
|
};
|
|
352
348
|
};
|
|
353
349
|
|
|
354
|
-
const primitive = (
|
|
355
|
-
|
|
350
|
+
const primitive = (baseEv, theValue = null) => {
|
|
351
|
+
baseEv(function PrimitiveBaseUser(v) {
|
|
356
352
|
theValue = v;
|
|
357
353
|
});
|
|
358
354
|
return {
|
|
@@ -371,19 +367,19 @@ const primitive = (baseSrc, theValue = null) => {
|
|
|
371
367
|
};
|
|
372
368
|
};
|
|
373
369
|
|
|
374
|
-
const sequence = (
|
|
375
|
-
return function
|
|
370
|
+
const sequence = (baseEv) => {
|
|
371
|
+
return function SequenceEvent(u) {
|
|
376
372
|
const result = [];
|
|
377
|
-
|
|
373
|
+
baseEv(function SequenceBaseUser(v) {
|
|
378
374
|
result.push(v);
|
|
379
375
|
u(result);
|
|
380
376
|
});
|
|
381
377
|
};
|
|
382
378
|
};
|
|
383
379
|
|
|
384
|
-
const stream = (
|
|
385
|
-
return function
|
|
386
|
-
|
|
380
|
+
const stream = (baseEv) => {
|
|
381
|
+
return function StreamEvent(u) {
|
|
382
|
+
baseEv(function StreamBaseUser(v) {
|
|
387
383
|
v.forEach((cv) => {
|
|
388
384
|
u(cv);
|
|
389
385
|
});
|
|
@@ -397,6 +393,9 @@ exports.all = all;
|
|
|
397
393
|
exports.any = any;
|
|
398
394
|
exports.applied = applied;
|
|
399
395
|
exports.chain = chain;
|
|
396
|
+
exports.constructorApplied = constructorApplied;
|
|
397
|
+
exports.constructorArgs = constructorArgs;
|
|
398
|
+
exports.constructorDestroyable = constructorDestroyable;
|
|
400
399
|
exports.destructor = destructor;
|
|
401
400
|
exports.executorApplied = executorApplied;
|
|
402
401
|
exports.filtered = filtered;
|
|
@@ -405,9 +404,6 @@ exports.fromPromise = fromPromise;
|
|
|
405
404
|
exports.isFilled = isFilled;
|
|
406
405
|
exports.late = late;
|
|
407
406
|
exports.lateShared = lateShared;
|
|
408
|
-
exports.lazyApplied = lazyApplied;
|
|
409
|
-
exports.lazyArgs = lazyArgs;
|
|
410
|
-
exports.lazyDestroyable = lazyDestroyable;
|
|
411
407
|
exports.local = local;
|
|
412
408
|
exports.map = map;
|
|
413
409
|
exports.of = of;
|
package/dist/silentium.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.cjs","sources":["../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Chain.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/FromEvent.ts","../src/components/FromPromise.ts","../src/helpers/isFilled.ts","../src/helpers/OwnerPool.ts","../src/components/Late.ts","../src/components/Once.ts","../src/components/Shared.ts","../src/components/SharedSource.ts","../src/components/LateShared.ts","../src/components/LazyApplied.ts","../src/components/LazyArgs.ts","../src/components/LazyDestroyable.ts","../src/base/Destructor.ts","../src/base/Local.ts","../src/base/Of.ts","../src/base/On.ts","../src/base/Void.ts","../src/components/Map.ts","../src/components/PrimitiveSource.ts","../src/components/Sequence.ts","../src/components/Stream.ts"],"sourcesContent":["import { DataType } from \"../types\";\n\ntype ExtractTypeS<T> = T extends DataType<infer U> ? U : never;\n\nexport type ExtractTypesFromArrayS<T extends DataType<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends DataType[]>(\n ...theInfos: T\n): DataType<ExtractTypesFromArrayS<T>> => {\n const keysKnown = new Set<string>(Object.keys(theInfos));\n const keysFilled = new Set<string>();\n\n return function AllData(u) {\n const result: Record<string, unknown> = {};\n\n Object.entries(theInfos).forEach(([key, info]) => {\n keysKnown.add(key);\n info(function AllItemUser(v) {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled(keysFilled, keysKnown)) {\n u(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n });\n });\n };\n};\n","import { DataType } from \"../types\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: DataType<T>[]): DataType<T> => {\n return function AnyData(u) {\n infos.forEach((info) => {\n info(u);\n });\n };\n};\n","import { DataType, ValueType } from \"../types\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(\n baseSrc: DataType<T>,\n applier: ValueType<[T], R>,\n): DataType<R> => {\n return function AppliedData(u) {\n baseSrc(function AppliedBaseUser(v) {\n u(applier(v));\n });\n };\n};\n","import { DataTypeValue } from \"../types/DataType\";\nimport { DataType } from \"../types\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer _, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends DataType[]>(...infos: T): Last<T> => {\n return <Last<T>>function ChainData(u) {\n let lastValue: DataTypeValue<Last<T>> | undefined;\n\n const handleI = (index: number) => {\n const info = infos[index] as Last<T>;\n const nextI = infos[index + 1] as Last<T> | undefined;\n\n info(function ChainItemUser(v) {\n if (!nextI) {\n lastValue = v as DataTypeValue<Last<T>>;\n }\n\n if (lastValue) {\n u(lastValue);\n }\n\n if (nextI && !lastValue) {\n handleI(index + 1);\n }\n });\n };\n\n handleI(0);\n };\n};\n","import { DataType, DataUserType } from \"../types\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n baseSrc: DataType<T>,\n applier: (executor: DataUserType<T>) => DataUserType<T>,\n): DataType<T> => {\n return function ExecutorAppliedData(u) {\n const ExecutorAppliedBaseUser = applier(u);\n baseSrc(ExecutorAppliedBaseUser);\n };\n};\n","import { DataType, ValueType } from \"../types\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n baseSrc: DataType<T>,\n predicate: ValueType<[T], boolean>,\n defaultValue?: T,\n): DataType<T> => {\n return function FilteredData(u) {\n baseSrc(function FilteredBaseUser(v) {\n if (predicate(v)) {\n u(v);\n } else if (defaultValue !== undefined) {\n u(defaultValue);\n }\n });\n };\n};\n","import { DataTypeDestroyable } from \"src/types/DataType\";\nimport { DataType, DataUserType } from \"../types\";\nimport { all } from \"./All\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T>(\n emitterSrc: DataType<any>,\n eventNameSrc: DataType<string>,\n subscribeMethodSrc: DataType<string>,\n unsubscribeMethodSrc?: DataType<string>,\n): DataTypeDestroyable<T> => {\n let lastU: DataUserType<T> | null = null;\n const handler = function FromEventHandler(v: T) {\n if (lastU) {\n lastU(v);\n }\n };\n return function FromEventData(u) {\n lastU = u;\n const a = all(emitterSrc, eventNameSrc, subscribeMethodSrc);\n a(function FromEventAllUser([emitter, eventName, subscribe]) {\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, handler);\n });\n\n return function FromEventDestructor() {\n lastU = null;\n if (!unsubscribeMethodSrc) {\n return;\n }\n const a = all(emitterSrc, eventNameSrc, unsubscribeMethodSrc);\n a(([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe]?.(eventName, handler);\n });\n };\n };\n};\n","import { DataType, DataUserType } from \"../types\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(\n p: Promise<T>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return function FromPromiseData(u) {\n p.then(function FromPromiseThen(v) {\n u(v);\n }).catch(function FromPromiseCatch(e) {\n errorOwner?.(e);\n });\n };\n};\n","export const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n","import { DataUserType } from \"../types\";\n\n/**\n * Helps maintain an owner list allowing different\n * owners to get information from a common source\n * https://silentium-lab.github.io/silentium/#/en/utils/owner-pool\n */\nexport class OwnerPool<T> {\n private owners: Set<DataUserType<T>>;\n private innerOwner: DataUserType<T>;\n\n public constructor() {\n this.owners = new Set<DataUserType<T>>();\n this.innerOwner = (v) => {\n this.owners.forEach((g) => {\n g(v);\n });\n };\n }\n\n public owner() {\n return this.innerOwner;\n }\n\n public size(): number {\n return this.owners.size;\n }\n\n public has(owner: DataUserType<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(owner: DataUserType<T>) {\n this.owners.add(owner);\n return this;\n }\n\n public remove(g: DataUserType<T>) {\n this.owners.delete(g);\n return this;\n }\n\n public destroy() {\n this.owners.forEach((g) => {\n this.remove(g);\n });\n return this;\n }\n}\n","import { DataUserType, SourceType } from \"../types\";\nimport { isFilled } from \"../helpers\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const late = <T>(v?: T): SourceType<T> => {\n let lateUser: DataUserType<T> | null = null;\n const notify = (v?: T) => {\n if (isFilled(v) && lateUser) {\n lateUser(v);\n }\n };\n\n return {\n value: function Late(u) {\n if (lateUser) {\n throw new Error(\n \"Late component gets new user, when another was already connected!\",\n );\n }\n\n lateUser = u;\n notify(v);\n },\n give: function LateUser(v) {\n notify(v);\n },\n };\n};\n","import { DataType } from \"../types\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(baseSrc: DataType<T>): DataType<T> => {\n return function OnceData(u) {\n let isFilled = false;\n baseSrc(function OnceBaseUser(v) {\n if (!isFilled) {\n isFilled = true;\n u(v);\n }\n });\n };\n};\n","import { DataType, DestroyableType, SourceType } from \"../types\";\nimport { isFilled, OwnerPool } from \"../helpers\";\nimport { late } from \"../components/Late\";\nimport { once } from \"../components/Once\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const shared = <T>(\n baseSrc: DataType<T>,\n stateless = false,\n): SourceType<T> & {\n pool: () => OwnerPool<T>;\n touched: () => void;\n} & DestroyableType => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const calls = late();\n once(calls.value)(function SharedCallsUser() {\n baseSrc(function SharedBaseUser(v) {\n lastValue = v;\n ownersPool.owner()(v);\n });\n });\n\n return {\n value: function Shared(u) {\n calls.give(1);\n if (!stateless && isFilled(lastValue) && !ownersPool.has(u)) {\n u(lastValue);\n }\n ownersPool.add(u);\n return () => {\n ownersPool.remove(u);\n };\n },\n give: function SharedUser(value: T) {\n calls.give(1);\n lastValue = value;\n ownersPool.owner()(value);\n },\n touched() {\n calls.give(1);\n },\n pool() {\n return ownersPool;\n },\n destroy() {\n ownersPool.destroy();\n },\n };\n};\n","import { SourceType } from \"../types\";\nimport { shared } from \"../components/Shared\";\n\nexport const sharedSource = <T>(\n baseSrc: SourceType<T>,\n stateless = false,\n): SourceType<T> => {\n const sharedSrc = shared(baseSrc.value, stateless);\n\n return {\n value: function SharedSource(u) {\n sharedSrc.value(u);\n },\n give: function SharedSourceUser(v) {\n sharedSrc.touched();\n baseSrc.give(v);\n },\n };\n};\n","import { late } from \"../components/Late\";\nimport { sharedSource } from \"../components/SharedSource\";\nimport { SourceType } from \"../types\";\n\nexport const lateShared = <T>(theValue?: T): SourceType<T> => {\n const src = sharedSource(late(theValue));\n return {\n value: src.value,\n give: src.give,\n };\n};\n","import { DataType, ValueType } from \"../types\";\n\n/**\n * Lazy with applied function to its results\n */\nexport const lazyApplied = <T>(\n baseLazy: ValueType<any[], DataType>,\n applier: (i: DataType) => DataType<T>,\n): ValueType<DataType[], DataType<T>> => {\n return function LazyAppliedData(...args) {\n return applier(baseLazy(...args));\n };\n};\n","import { DataType, ValueType } from \"../types\";\n\nexport const lazyArgs = (\n baseLazy: ValueType<any[], DataType>,\n args: unknown[],\n startFromArgIndex: number = 0,\n) => {\n return function LazyArgsData(...runArgs: any[]) {\n return baseLazy(...mergeAtIndex(runArgs, args, startFromArgIndex));\n };\n};\n\nfunction mergeAtIndex(arr1: unknown[], arr2: unknown[], index: number) {\n const result = arr1.slice(0, index);\n while (result.length < index) result.push(undefined);\n return result.concat(arr2);\n}\n","import { DestroyableType, DestructorType, ValueType } from \"../types\";\n\n/**\n * Lazy what can be destroyed\n */\nexport const lazyDestroyable = (\n baseLazy: ValueType<any[], DestroyableType>,\n): { get: ValueType<any[], DestroyableType>; destroy: DestructorType } => {\n const instances: DestroyableType[] = [];\n return {\n get: function lazyDestroyable(...args) {\n const inst = baseLazy(...args);\n instances.push(inst);\n return inst;\n },\n destroy: function LazyDestructor() {\n instances.forEach((i) => i.destroy());\n },\n };\n};\n","import { DataType, DataUserType, DestructorType } from \"../types\";\n\nexport const destructor = <T>(\n src: DataType<T>,\n destructorUser?: DataUserType<DestructorType>,\n) => {\n let mbDestructor: DestructorType | void;\n let theUser: DataUserType<T> | null = null;\n const destroy = () => {\n theUser = null;\n mbDestructor?.();\n };\n return {\n value: function DestructorData(u: any) {\n theUser = u;\n mbDestructor = src((v) => {\n if (theUser) {\n theUser(v);\n }\n });\n if (mbDestructor && destructorUser) {\n destructorUser(destroy);\n }\n return destroy;\n } as DataType<T>,\n destroy,\n };\n};\n","import { DataType } from \"../types\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport const local = <T>(baseSrc: DataType<T>): DataType<T> => {\n return function LocalData(user) {\n let destroyed = false;\n const d = baseSrc(function LocalBaseUser(v) {\n if (!destroyed) {\n user(v);\n }\n });\n return () => {\n destroyed = true;\n d?.();\n };\n };\n};\n","import { DataType } from \"../types\";\n\nexport const of = <T>(v: T): DataType<T> =>\n function OfData(u) {\n return u(v);\n };\n","import { DataType, DataUserType } from \"../types\";\n\n/**\n * Run data with user\n */\nexport const on = <T>(src: DataType<T>, user: DataUserType<T>) => src(user);\n","import { DataUserType } from \"../types\";\n\n/**\n * Silent user\n */\nexport const _void = (): DataUserType => function VoidData() {};\n","import { DataType, ValueType } from \"../types\";\nimport { of } from \"../base\";\nimport { all } from \"./All\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n baseSrc: DataType<T[]>,\n targetSrc: ValueType<any[], DataType<TG>>,\n): DataType<TG[]> => {\n return function MapData(u) {\n baseSrc(function MapBaseUser(v) {\n const infos: DataType<TG>[] = [];\n v.forEach((val) => {\n let valInfo: DataType<T> | T = val;\n if (typeof valInfo !== \"function\") {\n valInfo = of(valInfo);\n }\n const info = targetSrc(valInfo);\n infos.push(info);\n });\n const allI = all(...infos);\n allI(u);\n });\n };\n};\n","import { DataType } from \"../types\";\n\nexport const primitive = <T>(\n baseSrc: DataType<T>,\n theValue: T | null = null,\n) => {\n baseSrc(function PrimitiveBaseUser(v) {\n theValue = v;\n });\n\n return {\n [Symbol.toPrimitive]() {\n return theValue;\n },\n primitive() {\n return theValue;\n },\n primitiveWithException() {\n if (theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return theValue;\n },\n };\n};\n","import { DataType } from \"../types\";\n\n/**\n * A component that takes one value at a time and returns\n * an array of all previous values\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(baseSrc: DataType<T>): DataType<T[]> => {\n return function SequenceData(u) {\n const result: T[] = [];\n baseSrc(function SequenceBaseUser(v) {\n result.push(v);\n u(result);\n });\n };\n};\n","import { DataType } from \"../types\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(baseSrc: DataType<T[]>): DataType<T> => {\n return function StreamData(u) {\n baseSrc(function StreamBaseUser(v) {\n v.forEach((cv) => {\n u(cv);\n });\n });\n };\n};\n"],"names":["a","v","lazyDestroyable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.cjs","sources":["../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Chain.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/FromEvent.ts","../src/components/FromPromise.ts","../src/helpers/isFilled.ts","../src/helpers/OwnerPool.ts","../src/components/Late.ts","../src/components/Once.ts","../src/components/Shared.ts","../src/components/SharedSource.ts","../src/components/LateShared.ts","../src/components/ConstructorApplied.ts","../src/components/ConstructorArgs.ts","../src/components/ConstructorDestroyable.ts","../src/base/Destructor.ts","../src/base/Local.ts","../src/base/Of.ts","../src/base/On.ts","../src/base/Void.ts","../src/components/Map.ts","../src/components/PrimitiveSource.ts","../src/components/Sequence.ts","../src/components/Stream.ts"],"sourcesContent":["import { EventType } from \"../types\";\n\ntype ExtractTypeS<T> = T extends EventType<infer U> ? U : never;\n\nexport type ExtractTypesFromArrayS<T extends EventType<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends EventType[]>(\n ...theInfos: T\n): EventType<ExtractTypesFromArrayS<T>> => {\n const keysKnown = new Set<string>(Object.keys(theInfos));\n const keysFilled = new Set<string>();\n\n return function AllEvent(u) {\n const result: Record<string, unknown> = {};\n\n Object.entries(theInfos).forEach(([key, info]) => {\n keysKnown.add(key);\n info(function AllItemUser(v) {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled(keysFilled, keysKnown)) {\n u(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n });\n });\n };\n};\n","import { EventType } from \"../types\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: EventType<T>[]): EventType<T> => {\n return function AnyEvent(u) {\n infos.forEach((info) => {\n info(u);\n });\n };\n};\n","import { EventType, ConstructorType } from \"../types\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(\n baseEv: EventType<T>,\n applier: ConstructorType<[T], R>,\n): EventType<R> => {\n return function AppliedEvent(u) {\n baseEv(function AppliedBaseUser(v) {\n u(applier(v));\n });\n };\n};\n","import { EventTypeValue } from \"../types/EventType\";\nimport { EventType } from \"../types\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer _, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends EventType[]>(...infos: T): Last<T> => {\n return <Last<T>>function ChainEvent(u) {\n let lastValue: EventTypeValue<Last<T>> | undefined;\n\n const handleI = (index: number) => {\n const info = infos[index] as Last<T>;\n const nextI = infos[index + 1] as Last<T> | undefined;\n\n info(function ChainItemUser(v) {\n if (!nextI) {\n lastValue = v as EventTypeValue<Last<T>>;\n }\n\n if (lastValue) {\n u(lastValue);\n }\n\n if (nextI && !lastValue) {\n handleI(index + 1);\n }\n });\n };\n\n handleI(0);\n };\n};\n","import { EventType, EventUserType } from \"../types\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n baseEv: EventType<T>,\n applier: (executor: EventUserType<T>) => EventUserType<T>,\n): EventType<T> => {\n return function ExecutorAppliedEvent(u) {\n const ExecutorAppliedBaseUser = applier(u);\n baseEv(ExecutorAppliedBaseUser);\n };\n};\n","import { EventType, ConstructorType } from \"../types\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n baseEv: EventType<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): EventType<T> => {\n return function FilteredEvent(u) {\n baseEv(function FilteredBaseUser(v) {\n if (predicate(v)) {\n u(v);\n } else if (defaultValue !== undefined) {\n u(defaultValue);\n }\n });\n };\n};\n","import { EventTypeDestroyable } from \"../types/EventType\";\nimport { EventType, EventUserType } from \"../types\";\nimport { all } from \"./All\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T>(\n emitterEv: EventType<any>,\n eventNameEv: EventType<string>,\n subscribeMethodEv: EventType<string>,\n unsubscribeMethodEv?: EventType<string>,\n): EventTypeDestroyable<T> => {\n let lastU: EventUserType<T> | null = null;\n const handler = function FromEventHandler(v: T) {\n if (lastU) {\n lastU(v);\n }\n };\n return function FromEventEvent(u) {\n lastU = u;\n const a = all(emitterEv, eventNameEv, subscribeMethodEv);\n a(function FromEventAllUser([emitter, eventName, subscribe]) {\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, handler);\n });\n\n return function FromEventDestructor() {\n lastU = null;\n if (!unsubscribeMethodEv) {\n return;\n }\n const a = all(emitterEv, eventNameEv, unsubscribeMethodEv);\n a(([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe]?.(eventName, handler);\n });\n };\n };\n};\n","import { EventType, EventUserType } from \"../types\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(\n p: Promise<T>,\n errorOwner?: EventUserType,\n): EventType<T> => {\n return function FromPromiseEvent(u) {\n p.then(function FromPromiseThen(v) {\n u(v);\n }).catch(function FromPromiseCatch(e) {\n errorOwner?.(e);\n });\n };\n};\n","export const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n","import { EventUserType } from \"../types\";\n\n/**\n * Helps maintain an owner list allowing different\n * owners to get information from a common source\n * https://silentium-lab.github.io/silentium/#/en/utils/owner-pool\n */\nexport class OwnerPool<T> {\n private owners: Set<EventUserType<T>>;\n private innerOwner: EventUserType<T>;\n\n public constructor() {\n this.owners = new Set<EventUserType<T>>();\n this.innerOwner = (v) => {\n this.owners.forEach((g) => {\n g(v);\n });\n };\n }\n\n public owner() {\n return this.innerOwner;\n }\n\n public size(): number {\n return this.owners.size;\n }\n\n public has(owner: EventUserType<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(owner: EventUserType<T>) {\n this.owners.add(owner);\n return this;\n }\n\n public remove(g: EventUserType<T>) {\n this.owners.delete(g);\n return this;\n }\n\n public destroy() {\n this.owners.forEach((g) => {\n this.remove(g);\n });\n return this;\n }\n}\n","import { EventUserType, SourceType } from \"../types\";\nimport { isFilled } from \"../helpers\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const late = <T>(v?: T): SourceType<T> => {\n let lateUser: EventUserType<T> | null = null;\n const notify = (v?: T) => {\n if (isFilled(v) && lateUser) {\n lateUser(v);\n }\n };\n\n return {\n event: function LateEvent(u) {\n if (lateUser) {\n throw new Error(\n \"Late component gets new user, when another was already connected!\",\n );\n }\n\n lateUser = u;\n notify(v);\n },\n use: function LateUser(v) {\n notify(v);\n },\n };\n};\n","import { EventType } from \"../types\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(baseEv: EventType<T>): EventType<T> => {\n return function OnceEvent(u) {\n let isFilled = false;\n baseEv(function OnceBaseUser(v) {\n if (!isFilled) {\n isFilled = true;\n u(v);\n }\n });\n };\n};\n","import { EventType, DestroyableType, SourceType } from \"../types\";\nimport { isFilled, OwnerPool } from \"../helpers\";\nimport { late } from \"../components/Late\";\nimport { once } from \"../components/Once\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const shared = <T>(\n baseEv: EventType<T>,\n stateless = false,\n): SourceType<T> & {\n pool: () => OwnerPool<T>;\n touched: () => void;\n} & DestroyableType => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const calls = late();\n once(calls.event)(function SharedCallsUser() {\n baseEv(function SharedBaseUser(v) {\n lastValue = v;\n ownersPool.owner()(v);\n });\n });\n\n return {\n event: function SharedEvent(u) {\n calls.use(1);\n if (!stateless && isFilled(lastValue) && !ownersPool.has(u)) {\n u(lastValue);\n }\n ownersPool.add(u);\n return () => {\n ownersPool.remove(u);\n };\n },\n use: function SharedUser(value: T) {\n calls.use(1);\n lastValue = value;\n ownersPool.owner()(value);\n },\n touched() {\n calls.use(1);\n },\n pool() {\n return ownersPool;\n },\n destroy() {\n ownersPool.destroy();\n },\n };\n};\n","import { SourceType } from \"../types\";\nimport { shared } from \"../components/Shared\";\n\nexport const sharedSource = <T>(\n baseEv: SourceType<T>,\n stateless = false,\n): SourceType<T> => {\n const sharedEv = shared(baseEv.event, stateless);\n\n return {\n event: function SharedSourceEvent(u) {\n sharedEv.event(u);\n },\n use: function SharedSourceUser(v) {\n sharedEv.touched();\n baseEv.use(v);\n },\n };\n};\n","import { late } from \"../components/Late\";\nimport { sharedSource } from \"../components/SharedSource\";\nimport { SourceType } from \"../types\";\n\nexport const lateShared = <T>(value?: T): SourceType<T> => {\n return sharedSource(late(value));\n};\n","import { EventType, ConstructorType } from \"../types\";\n\n/**\n * Constructor with applied function to its results\n */\nexport const constructorApplied = <T>(\n baseConstructor: ConstructorType<any[], EventType>,\n applier: (i: EventType) => EventType<T>,\n): ConstructorType<EventType[], EventType<T>> => {\n return function LazyAppliedData(...args) {\n return applier(baseConstructor(...args));\n };\n};\n","import { EventType, ConstructorType } from \"../types\";\n\nexport const constructorArgs = (\n baseConstructor: ConstructorType<any[], EventType>,\n args: unknown[],\n startFromArgIndex: number = 0,\n) => {\n return function ConstructorArgsEvent(...runArgs: any[]) {\n return baseConstructor(...mergeAtIndex(runArgs, args, startFromArgIndex));\n };\n};\n\nfunction mergeAtIndex(arr1: unknown[], arr2: unknown[], index: number) {\n const result = arr1.slice(0, index);\n while (result.length < index) result.push(undefined);\n return result.concat(arr2);\n}\n","import { DestroyableType, DestructorType, ConstructorType } from \"../types\";\n\n/**\n * Constructor what can be destroyed\n */\nexport const constructorDestroyable = (\n baseConstructor: ConstructorType<any[], DestroyableType>,\n): {\n get: ConstructorType<any[], DestroyableType>;\n destroy: DestructorType;\n} => {\n const instances: DestroyableType[] = [];\n return {\n get: function ConstructorDestroyable(...args) {\n const inst = baseConstructor(...args);\n instances.push(inst);\n return inst;\n },\n destroy: function ConstructorDestructor() {\n instances.forEach((i) => i.destroy());\n },\n };\n};\n","import { DestructorType, EventType, EventUserType } from \"../types\";\n\nexport const destructor = <T>(\n baseEv: EventType<T>,\n destructorUser?: EventUserType<DestructorType>,\n) => {\n let mbDestructor: DestructorType | void;\n let theUser: EventUserType<T> | null = null;\n const destroy = () => {\n theUser = null;\n mbDestructor?.();\n };\n return {\n event: function DestructorData(u: any) {\n theUser = u;\n mbDestructor = baseEv((v) => {\n if (theUser) {\n theUser(v);\n }\n });\n if (mbDestructor && destructorUser) {\n destructorUser(destroy);\n }\n return destroy;\n } as EventType<T>,\n destroy,\n };\n};\n","import { EventType } from \"../types\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport const local = <T>(baseEv: EventType<T>): EventType<T> => {\n return function LocalEvent(user) {\n let destroyed = false;\n const d = baseEv(function LocalBaseUser(v) {\n if (!destroyed) {\n user(v);\n }\n });\n return () => {\n destroyed = true;\n d?.();\n };\n };\n};\n","import { EventType } from \"../types\";\n\nexport const of = <T>(value: T): EventType<T> =>\n function OfEvent(u) {\n return u(value);\n };\n","import { EventType, EventUserType } from \"../types\";\n\n/**\n * Run data with user\n */\nexport const on = <T>(event: EventType<T>, user: EventUserType<T>) =>\n event(user);\n","import { EventUserType } from \"../types\";\n\n/**\n * Silent user\n */\nexport const _void = (): EventUserType => function VoidEvent() {};\n","import { EventType, ConstructorType } from \"../types\";\nimport { of } from \"../base\";\nimport { all } from \"./All\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n baseEv: EventType<T[]>,\n targetEv: ConstructorType<any[], EventType<TG>>,\n): EventType<TG[]> => {\n return function MapData(u) {\n baseEv(function MapBaseUser(v) {\n const infos: EventType<TG>[] = [];\n v.forEach((val) => {\n let valInfo: EventType<T> | T = val;\n if (typeof valInfo !== \"function\") {\n valInfo = of(valInfo);\n }\n const info = targetEv(valInfo);\n infos.push(info);\n });\n const allI = all(...infos);\n allI(u);\n });\n };\n};\n","import { EventType } from \"../types\";\n\nexport const primitive = <T>(\n baseEv: EventType<T>,\n theValue: T | null = null,\n) => {\n baseEv(function PrimitiveBaseUser(v) {\n theValue = v;\n });\n\n return {\n [Symbol.toPrimitive]() {\n return theValue;\n },\n primitive() {\n return theValue;\n },\n primitiveWithException() {\n if (theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return theValue;\n },\n };\n};\n","import { EventType } from \"../types\";\n\n/**\n * A component that takes one value at a time and returns\n * an array of all previous values\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(baseEv: EventType<T>): EventType<T[]> => {\n return function SequenceEvent(u) {\n const result: T[] = [];\n baseEv(function SequenceBaseUser(v) {\n result.push(v);\n u(result);\n });\n };\n};\n","import { EventType } from \"../types\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(baseEv: EventType<T[]>): EventType<T> => {\n return function StreamEvent(u) {\n baseEv(function StreamBaseUser(v) {\n v.forEach((cv) => {\n u(cv);\n });\n });\n };\n};\n"],"names":["a","v"],"mappings":"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"}
|