silentium 0.0.105 → 0.0.106
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 +8 -0
- package/dist/silentium.cjs +131 -125
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +27 -27
- package/dist/silentium.js +106 -100
- 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 +106 -100
- package/dist/silentium.mjs.map +1 -1
- package/package.json +1 -1
- package/src/base/DestroyContainer.test.ts +5 -5
- package/src/base/DestroyContainer.ts +4 -4
- package/src/base/Destructor.test.ts +4 -4
- package/src/base/Destructor.ts +7 -7
- package/src/base/Local.test.ts +4 -4
- package/src/base/Local.ts +2 -2
- package/src/base/Of.ts +4 -3
- package/src/base/On.ts +3 -2
- package/src/base/Void.ts +3 -1
- package/src/components/All.test.ts +3 -3
- package/src/components/All.ts +5 -5
- package/src/components/Any.test.ts +6 -6
- package/src/components/Any.ts +4 -4
- package/src/components/Applied.test.ts +4 -4
- package/src/components/Applied.ts +5 -5
- package/src/components/Chain.test.ts +7 -7
- package/src/components/Chain.ts +4 -4
- package/src/components/ConstructorApplied.test.ts +8 -8
- package/src/components/ConstructorApplied.ts +3 -3
- package/src/components/ConstructorArgs.test.ts +3 -3
- package/src/components/ConstructorArgs.ts +3 -3
- package/src/components/ConstructorDestroyable.test.ts +7 -7
- package/src/components/ConstructorDestroyable.ts +4 -4
- package/src/components/ExecutorApplied.test.ts +8 -8
- package/src/components/ExecutorApplied.ts +5 -5
- package/src/components/Filtered.test.ts +6 -6
- package/src/components/Filtered.ts +6 -6
- package/src/components/FromEvent.test.ts +3 -3
- package/src/components/FromEvent.ts +8 -8
- package/src/components/FromPromise.test.ts +5 -5
- package/src/components/FromPromise.ts +5 -5
- package/src/components/Late.test.ts +3 -3
- package/src/components/Late.ts +4 -4
- package/src/components/LateShared.test.ts +3 -3
- package/src/components/LateShared.ts +5 -5
- package/src/components/Map._deferred.test.ts +41 -0
- package/src/components/Map._fn.test.ts +20 -0
- package/src/components/Map.test.ts +9 -9
- package/src/components/Map.ts +9 -9
- package/src/components/Once.test.ts +6 -6
- package/src/components/Once.ts +4 -4
- package/src/components/{PrimitiveSource.test.ts → Primitive.test.ts} +7 -7
- package/src/components/{PrimitiveSource.ts → Primitive.ts} +2 -5
- package/src/components/Sequence.test.ts +5 -5
- package/src/components/Sequence.ts +4 -4
- package/src/components/Shared.test.ts +8 -8
- package/src/components/Shared.ts +12 -12
- package/src/components/SharedSource.test.ts +8 -8
- package/src/components/SharedSource.ts +7 -7
- package/src/components/Stream.test.ts +6 -6
- package/src/components/Stream.ts +4 -4
- package/src/components/index.ts +1 -1
- package/src/testing/{diagram.ts → Diagram.ts} +2 -2
- package/src/testing/index.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
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.106](https://github.com/silentium-lab/silentium/compare/v0.0.105...v0.0.106) (2025-10-13)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** constructors from upper case ([f4ce5bb](https://github.com/silentium-lab/silentium/commit/f4ce5bb30e6a6b9d981826a9309895b513162a12))
|
|
11
|
+
* **main:** review fixes ([8f58cb3](https://github.com/silentium-lab/silentium/commit/8f58cb3449b4c7ec2247ae937ac1f0706b3e535f))
|
|
12
|
+
|
|
5
13
|
### [0.0.105](https://github.com/silentium-lab/silentium/compare/v0.0.104...v0.0.105) (2025-10-12)
|
|
6
14
|
|
|
7
15
|
|
package/dist/silentium.cjs
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
const isAllFilled = (keysFilled, keysKnown) => {
|
|
4
4
|
return keysFilled.size > 0 && keysFilled.size === keysKnown.size;
|
|
5
5
|
};
|
|
6
|
-
|
|
6
|
+
function All(...theInfos) {
|
|
7
7
|
const keysKnown = new Set(Object.keys(theInfos));
|
|
8
8
|
const keysFilled = /* @__PURE__ */ new Set();
|
|
9
|
-
return function AllEvent(
|
|
9
|
+
return function AllEvent(user) {
|
|
10
10
|
const result = {};
|
|
11
11
|
Object.entries(theInfos).forEach(([key, info]) => {
|
|
12
12
|
keysKnown.add(key);
|
|
@@ -14,31 +14,31 @@ const all = (...theInfos) => {
|
|
|
14
14
|
keysFilled.add(key);
|
|
15
15
|
result[key] = v;
|
|
16
16
|
if (isAllFilled(keysFilled, keysKnown)) {
|
|
17
|
-
|
|
17
|
+
user(Object.values(result));
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
};
|
|
22
|
-
}
|
|
22
|
+
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
return function AnyEvent(
|
|
24
|
+
function Any(...infos) {
|
|
25
|
+
return function AnyEvent(user) {
|
|
26
26
|
infos.forEach((info) => {
|
|
27
|
-
info(
|
|
27
|
+
info(user);
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
|
-
}
|
|
30
|
+
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
return function AppliedEvent(
|
|
32
|
+
function Applied(baseEv, applier) {
|
|
33
|
+
return function AppliedEvent(user) {
|
|
34
34
|
baseEv(function AppliedBaseUser(v) {
|
|
35
|
-
|
|
35
|
+
user(applier(v));
|
|
36
36
|
});
|
|
37
37
|
};
|
|
38
|
-
}
|
|
38
|
+
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
return function ChainEvent(
|
|
40
|
+
function Chain(...infos) {
|
|
41
|
+
return function ChainEvent(user) {
|
|
42
42
|
let lastValue;
|
|
43
43
|
const handleI = (index) => {
|
|
44
44
|
const info = infos[index];
|
|
@@ -48,7 +48,7 @@ const chain = (...infos) => {
|
|
|
48
48
|
lastValue = v;
|
|
49
49
|
}
|
|
50
50
|
if (lastValue) {
|
|
51
|
-
|
|
51
|
+
user(lastValue);
|
|
52
52
|
}
|
|
53
53
|
if (nextI && !lastValue) {
|
|
54
54
|
handleI(index + 1);
|
|
@@ -57,37 +57,37 @@ const chain = (...infos) => {
|
|
|
57
57
|
};
|
|
58
58
|
handleI(0);
|
|
59
59
|
};
|
|
60
|
-
}
|
|
60
|
+
}
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
return function ExecutorAppliedEvent(
|
|
64
|
-
const ExecutorAppliedBaseUser = applier(
|
|
62
|
+
function ExecutorApplied(baseEv, applier) {
|
|
63
|
+
return function ExecutorAppliedEvent(user) {
|
|
64
|
+
const ExecutorAppliedBaseUser = applier(user);
|
|
65
65
|
baseEv(ExecutorAppliedBaseUser);
|
|
66
66
|
};
|
|
67
|
-
}
|
|
67
|
+
}
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
return function FilteredEvent(
|
|
69
|
+
function Filtered(baseEv, predicate, defaultValue) {
|
|
70
|
+
return function FilteredEvent(user) {
|
|
71
71
|
baseEv(function FilteredBaseUser(v) {
|
|
72
72
|
if (predicate(v)) {
|
|
73
|
-
|
|
73
|
+
user(v);
|
|
74
74
|
} else if (defaultValue !== void 0) {
|
|
75
|
-
|
|
75
|
+
user(defaultValue);
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
};
|
|
79
|
-
}
|
|
79
|
+
}
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
function 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 FromEventEvent(
|
|
89
|
-
lastU =
|
|
90
|
-
const a =
|
|
88
|
+
return function FromEventEvent(user) {
|
|
89
|
+
lastU = user;
|
|
90
|
+
const a = All(emitterEv, eventNameEv, subscribeMethodEv);
|
|
91
91
|
a(function FromEventAllUser([emitter, eventName, subscribe]) {
|
|
92
92
|
if (!emitter?.[subscribe]) {
|
|
93
93
|
return;
|
|
@@ -99,23 +99,23 @@ const fromEvent = (emitterEv, eventNameEv, subscribeMethodEv, unsubscribeMethodE
|
|
|
99
99
|
if (!unsubscribeMethodEv) {
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
|
-
const a2 =
|
|
102
|
+
const a2 = All(emitterEv, eventNameEv, unsubscribeMethodEv);
|
|
103
103
|
a2(([emitter, eventName, unsubscribe]) => {
|
|
104
104
|
emitter?.[unsubscribe]?.(eventName, handler);
|
|
105
105
|
});
|
|
106
106
|
};
|
|
107
107
|
};
|
|
108
|
-
}
|
|
108
|
+
}
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
return function FromPromiseEvent(
|
|
110
|
+
function FromPromise(p, errorOwner) {
|
|
111
|
+
return function FromPromiseEvent(user) {
|
|
112
112
|
p.then(function FromPromiseThen(v) {
|
|
113
|
-
|
|
113
|
+
user(v);
|
|
114
114
|
}).catch(function FromPromiseCatch(e) {
|
|
115
115
|
errorOwner?.(e);
|
|
116
116
|
});
|
|
117
117
|
};
|
|
118
|
-
}
|
|
118
|
+
}
|
|
119
119
|
|
|
120
120
|
const isFilled = (value) => {
|
|
121
121
|
return value !== void 0 && value !== null;
|
|
@@ -160,7 +160,7 @@ class OwnerPool {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
function Late(v) {
|
|
164
164
|
let lateUser = null;
|
|
165
165
|
const notify = (v2) => {
|
|
166
166
|
if (isFilled(v2) && lateUser) {
|
|
@@ -168,52 +168,52 @@ const late = (v) => {
|
|
|
168
168
|
}
|
|
169
169
|
};
|
|
170
170
|
return {
|
|
171
|
-
event: function LateEvent(
|
|
171
|
+
event: function LateEvent(user) {
|
|
172
172
|
if (lateUser) {
|
|
173
173
|
throw new Error(
|
|
174
174
|
"Late component gets new user, when another was already connected!"
|
|
175
175
|
);
|
|
176
176
|
}
|
|
177
|
-
lateUser =
|
|
177
|
+
lateUser = user;
|
|
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
|
-
|
|
187
|
-
return function OnceEvent(
|
|
186
|
+
function Once(baseEv) {
|
|
187
|
+
return function OnceEvent(user) {
|
|
188
188
|
let isFilled = false;
|
|
189
189
|
baseEv(function OnceBaseUser(v) {
|
|
190
190
|
if (!isFilled) {
|
|
191
191
|
isFilled = true;
|
|
192
|
-
|
|
192
|
+
user(v);
|
|
193
193
|
}
|
|
194
194
|
});
|
|
195
195
|
};
|
|
196
|
-
}
|
|
196
|
+
}
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
function Shared(baseEv, stateless = false) {
|
|
199
199
|
const ownersPool = new OwnerPool();
|
|
200
200
|
let lastValue;
|
|
201
|
-
const calls =
|
|
202
|
-
|
|
201
|
+
const calls = Late();
|
|
202
|
+
Once(calls.event)(function SharedCallsUser() {
|
|
203
203
|
baseEv(function SharedBaseUser(v) {
|
|
204
204
|
lastValue = v;
|
|
205
205
|
ownersPool.owner()(v);
|
|
206
206
|
});
|
|
207
207
|
});
|
|
208
208
|
return {
|
|
209
|
-
event: function SharedEvent(
|
|
209
|
+
event: function SharedEvent(user) {
|
|
210
210
|
calls.use(1);
|
|
211
|
-
if (!stateless && isFilled(lastValue) && !ownersPool.has(
|
|
212
|
-
|
|
211
|
+
if (!stateless && isFilled(lastValue) && !ownersPool.has(user)) {
|
|
212
|
+
user(lastValue);
|
|
213
213
|
}
|
|
214
|
-
ownersPool.add(
|
|
214
|
+
ownersPool.add(user);
|
|
215
215
|
return () => {
|
|
216
|
-
ownersPool.remove(
|
|
216
|
+
ownersPool.remove(user);
|
|
217
217
|
};
|
|
218
218
|
},
|
|
219
219
|
use: function SharedUser(value) {
|
|
@@ -231,46 +231,46 @@ const shared = (baseEv, stateless = false) => {
|
|
|
231
231
|
ownersPool.destroy();
|
|
232
232
|
}
|
|
233
233
|
};
|
|
234
|
-
}
|
|
234
|
+
}
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
const sharedEv =
|
|
236
|
+
function SharedSource(baseEv, stateless = false) {
|
|
237
|
+
const sharedEv = Shared(baseEv.event, stateless);
|
|
238
238
|
return {
|
|
239
|
-
event: function SharedSourceEvent(
|
|
240
|
-
sharedEv.event(
|
|
239
|
+
event: function SharedSourceEvent(user) {
|
|
240
|
+
sharedEv.event(user);
|
|
241
241
|
},
|
|
242
242
|
use: function SharedSourceUser(v) {
|
|
243
243
|
sharedEv.touched();
|
|
244
244
|
baseEv.use(v);
|
|
245
245
|
}
|
|
246
246
|
};
|
|
247
|
-
}
|
|
247
|
+
}
|
|
248
248
|
|
|
249
|
-
|
|
250
|
-
return
|
|
251
|
-
}
|
|
249
|
+
function LateShared(value) {
|
|
250
|
+
return SharedSource(Late(value));
|
|
251
|
+
}
|
|
252
252
|
|
|
253
|
-
|
|
253
|
+
function ConstructorApplied(baseConstructor, applier) {
|
|
254
254
|
return function LazyAppliedData(...args) {
|
|
255
255
|
return applier(baseConstructor(...args));
|
|
256
256
|
};
|
|
257
|
-
}
|
|
257
|
+
}
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
function ConstructorArgs(baseConstructor, args, startFromArgIndex = 0) {
|
|
260
260
|
return function ConstructorArgsEvent(...runArgs) {
|
|
261
261
|
return baseConstructor(...mergeAtIndex(runArgs, args, startFromArgIndex));
|
|
262
262
|
};
|
|
263
|
-
}
|
|
263
|
+
}
|
|
264
264
|
function mergeAtIndex(arr1, arr2, index) {
|
|
265
265
|
const result = arr1.slice(0, index);
|
|
266
266
|
while (result.length < index) result.push(void 0);
|
|
267
267
|
return result.concat(arr2);
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
function ConstructorDestroyable(baseConstructor) {
|
|
271
271
|
const destructors = [];
|
|
272
272
|
return {
|
|
273
|
-
get: function
|
|
273
|
+
get: function ConstructorDestroyableGet(...args) {
|
|
274
274
|
const inst = baseConstructor(...args);
|
|
275
275
|
return (user) => {
|
|
276
276
|
if ("destroy" in inst) {
|
|
@@ -291,9 +291,9 @@ const constructorDestroyable = (baseConstructor) => {
|
|
|
291
291
|
destructors.forEach((i) => i());
|
|
292
292
|
}
|
|
293
293
|
};
|
|
294
|
-
}
|
|
294
|
+
}
|
|
295
295
|
|
|
296
|
-
|
|
296
|
+
function Destructor(baseEv, destructorUser) {
|
|
297
297
|
let mbDestructor;
|
|
298
298
|
let theUser = null;
|
|
299
299
|
const destroy = () => {
|
|
@@ -301,11 +301,11 @@ const destructor = (baseEv, destructorUser) => {
|
|
|
301
301
|
mbDestructor?.();
|
|
302
302
|
};
|
|
303
303
|
return {
|
|
304
|
-
event: function
|
|
305
|
-
theUser =
|
|
304
|
+
event: function DestructorEvent(user) {
|
|
305
|
+
theUser = new WeakRef(user);
|
|
306
306
|
mbDestructor = baseEv((v) => {
|
|
307
307
|
if (theUser) {
|
|
308
|
-
theUser(v);
|
|
308
|
+
theUser.deref()?.(v);
|
|
309
309
|
}
|
|
310
310
|
});
|
|
311
311
|
if (mbDestructor && destructorUser) {
|
|
@@ -315,9 +315,9 @@ const destructor = (baseEv, destructorUser) => {
|
|
|
315
315
|
},
|
|
316
316
|
destroy
|
|
317
317
|
};
|
|
318
|
-
}
|
|
318
|
+
}
|
|
319
319
|
|
|
320
|
-
|
|
320
|
+
function Local(baseEv) {
|
|
321
321
|
return function LocalEvent(user) {
|
|
322
322
|
let destroyed = false;
|
|
323
323
|
const d = baseEv(function LocalBaseUser(v) {
|
|
@@ -330,22 +330,28 @@ const local = (baseEv) => {
|
|
|
330
330
|
d?.();
|
|
331
331
|
};
|
|
332
332
|
};
|
|
333
|
-
}
|
|
333
|
+
}
|
|
334
334
|
|
|
335
|
-
|
|
336
|
-
return
|
|
337
|
-
|
|
335
|
+
function Of(value) {
|
|
336
|
+
return function OfEvent(user) {
|
|
337
|
+
return user(value);
|
|
338
|
+
};
|
|
339
|
+
}
|
|
338
340
|
|
|
339
|
-
|
|
341
|
+
function On(event, user) {
|
|
342
|
+
return event(user);
|
|
343
|
+
}
|
|
340
344
|
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
function Void() {
|
|
346
|
+
return function VoidEvent() {
|
|
347
|
+
};
|
|
348
|
+
}
|
|
343
349
|
|
|
344
|
-
|
|
350
|
+
function DestroyContainer() {
|
|
345
351
|
const destructors = [];
|
|
346
352
|
return {
|
|
347
353
|
add(e) {
|
|
348
|
-
const d =
|
|
354
|
+
const d = Destructor(e);
|
|
349
355
|
destructors.push(d.destroy);
|
|
350
356
|
return d.event;
|
|
351
357
|
},
|
|
@@ -353,27 +359,27 @@ const destroyContainer = () => {
|
|
|
353
359
|
destructors.forEach((d) => d());
|
|
354
360
|
}
|
|
355
361
|
};
|
|
356
|
-
}
|
|
362
|
+
}
|
|
357
363
|
|
|
358
|
-
|
|
359
|
-
return function MapData(
|
|
364
|
+
function Map(baseEv, targetEv) {
|
|
365
|
+
return function MapData(user) {
|
|
360
366
|
baseEv(function MapBaseUser(v) {
|
|
361
367
|
const infos = [];
|
|
362
368
|
v.forEach((val) => {
|
|
363
369
|
let valInfo = val;
|
|
364
370
|
if (typeof valInfo !== "function") {
|
|
365
|
-
valInfo =
|
|
371
|
+
valInfo = Of(valInfo);
|
|
366
372
|
}
|
|
367
373
|
const info = targetEv(valInfo);
|
|
368
374
|
infos.push(info);
|
|
369
375
|
});
|
|
370
|
-
const allI =
|
|
371
|
-
allI(
|
|
376
|
+
const allI = All(...infos);
|
|
377
|
+
allI(user);
|
|
372
378
|
});
|
|
373
379
|
};
|
|
374
|
-
}
|
|
380
|
+
}
|
|
375
381
|
|
|
376
|
-
|
|
382
|
+
function Primitive(baseEv, theValue = null) {
|
|
377
383
|
baseEv(function PrimitiveBaseUser(v) {
|
|
378
384
|
theValue = v;
|
|
379
385
|
});
|
|
@@ -391,54 +397,54 @@ const primitive = (baseEv, theValue = null) => {
|
|
|
391
397
|
return theValue;
|
|
392
398
|
}
|
|
393
399
|
};
|
|
394
|
-
}
|
|
400
|
+
}
|
|
395
401
|
|
|
396
|
-
|
|
397
|
-
return function SequenceEvent(
|
|
402
|
+
function Sequence(baseEv) {
|
|
403
|
+
return function SequenceEvent(user) {
|
|
398
404
|
const result = [];
|
|
399
405
|
baseEv(function SequenceBaseUser(v) {
|
|
400
406
|
result.push(v);
|
|
401
|
-
|
|
407
|
+
user(result);
|
|
402
408
|
});
|
|
403
409
|
};
|
|
404
|
-
}
|
|
410
|
+
}
|
|
405
411
|
|
|
406
|
-
|
|
407
|
-
return function StreamEvent(
|
|
412
|
+
function Stream(baseEv) {
|
|
413
|
+
return function StreamEvent(user) {
|
|
408
414
|
baseEv(function StreamBaseUser(v) {
|
|
409
415
|
v.forEach((cv) => {
|
|
410
|
-
|
|
416
|
+
user(cv);
|
|
411
417
|
});
|
|
412
418
|
});
|
|
413
419
|
};
|
|
414
|
-
}
|
|
420
|
+
}
|
|
415
421
|
|
|
422
|
+
exports.All = All;
|
|
423
|
+
exports.Any = Any;
|
|
424
|
+
exports.Applied = Applied;
|
|
425
|
+
exports.Chain = Chain;
|
|
426
|
+
exports.ConstructorApplied = ConstructorApplied;
|
|
427
|
+
exports.ConstructorArgs = ConstructorArgs;
|
|
428
|
+
exports.ConstructorDestroyable = ConstructorDestroyable;
|
|
429
|
+
exports.DestroyContainer = DestroyContainer;
|
|
430
|
+
exports.Destructor = Destructor;
|
|
431
|
+
exports.ExecutorApplied = ExecutorApplied;
|
|
432
|
+
exports.Filtered = Filtered;
|
|
433
|
+
exports.FromEvent = FromEvent;
|
|
434
|
+
exports.FromPromise = FromPromise;
|
|
435
|
+
exports.Late = Late;
|
|
436
|
+
exports.LateShared = LateShared;
|
|
437
|
+
exports.Local = Local;
|
|
438
|
+
exports.Map = Map;
|
|
439
|
+
exports.Of = Of;
|
|
440
|
+
exports.On = On;
|
|
441
|
+
exports.Once = Once;
|
|
416
442
|
exports.OwnerPool = OwnerPool;
|
|
417
|
-
exports.
|
|
418
|
-
exports.
|
|
419
|
-
exports.
|
|
420
|
-
exports.
|
|
421
|
-
exports.
|
|
422
|
-
exports.
|
|
423
|
-
exports.constructorArgs = constructorArgs;
|
|
424
|
-
exports.constructorDestroyable = constructorDestroyable;
|
|
425
|
-
exports.destroyContainer = destroyContainer;
|
|
426
|
-
exports.destructor = destructor;
|
|
427
|
-
exports.executorApplied = executorApplied;
|
|
428
|
-
exports.filtered = filtered;
|
|
429
|
-
exports.fromEvent = fromEvent;
|
|
430
|
-
exports.fromPromise = fromPromise;
|
|
443
|
+
exports.Primitive = Primitive;
|
|
444
|
+
exports.Sequence = Sequence;
|
|
445
|
+
exports.Shared = Shared;
|
|
446
|
+
exports.SharedSource = SharedSource;
|
|
447
|
+
exports.Stream = Stream;
|
|
448
|
+
exports.Void = Void;
|
|
431
449
|
exports.isFilled = isFilled;
|
|
432
|
-
exports.late = late;
|
|
433
|
-
exports.lateShared = lateShared;
|
|
434
|
-
exports.local = local;
|
|
435
|
-
exports.map = map;
|
|
436
|
-
exports.of = of;
|
|
437
|
-
exports.on = on;
|
|
438
|
-
exports.once = once;
|
|
439
|
-
exports.primitive = primitive;
|
|
440
|
-
exports.sequence = sequence;
|
|
441
|
-
exports.shared = shared;
|
|
442
|
-
exports.sharedSource = sharedSource;
|
|
443
|
-
exports.stream = stream;
|
|
444
450
|
//# sourceMappingURL=silentium.cjs.map
|
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/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/base/DestroyContainer.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 {\n ConstructorType,\n DestroyableType,\n DestructorType,\n EventObjectType,\n EventType,\n} from \"../types\";\n\n/**\n * Constructor what can be destroyed\n */\nexport const constructorDestroyable = (\n baseConstructor: ConstructorType<\n any[],\n (DestroyableType & EventObjectType) | EventType\n >,\n): {\n get: ConstructorType<any[], EventType>;\n destroy: DestructorType;\n} => {\n const destructors: DestructorType[] = [];\n return {\n get: function ConstructorDestroyable(...args) {\n const inst = baseConstructor(...args);\n return (user) => {\n if (\"destroy\" in inst) {\n destructors.push(inst.destroy);\n inst.event(user);\n } else {\n const d = inst(user);\n if (d) {\n destructors.push(d);\n }\n }\n\n return () => {\n destructors.forEach((i) => i());\n };\n };\n },\n destroy: function ConstructorDestructor() {\n destructors.forEach((i) => i());\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 { destructor } from \"../base/Destructor\";\nimport { DestructorType, EventType } from \"../types\";\n\nexport const destroyContainer = () => {\n const destructors: DestructorType[] = [];\n return {\n add(e: EventType) {\n const d = destructor(e);\n destructors.push(d.destroy);\n return d.event;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n};\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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"}
|
|
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/base/DestroyContainer.ts","../src/components/Map.ts","../src/components/Primitive.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 function 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(user) {\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 user(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 function Any<T>(...infos: EventType<T>[]): EventType<T> {\n return function AnyEvent(user) {\n infos.forEach((info) => {\n info(user);\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 function Applied<T, R>(\n baseEv: EventType<T>,\n applier: ConstructorType<[T], R>,\n): EventType<R> {\n return function AppliedEvent(user) {\n baseEv(function AppliedBaseUser(v) {\n user(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 function Chain<T extends EventType[]>(...infos: T): Last<T> {\n return <Last<T>>function ChainEvent(user) {\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 user(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 function ExecutorApplied<T>(\n baseEv: EventType<T>,\n applier: (executor: EventUserType<T>) => EventUserType<T>,\n): EventType<T> {\n return function ExecutorAppliedEvent(user) {\n const ExecutorAppliedBaseUser = applier(user);\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 function Filtered<T>(\n baseEv: EventType<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): EventType<T> {\n return function FilteredEvent(user) {\n baseEv(function FilteredBaseUser(v) {\n if (predicate(v)) {\n user(v);\n } else if (defaultValue !== undefined) {\n user(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 function 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(user) {\n lastU = user;\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 function FromPromise<T>(\n p: Promise<T>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return function FromPromiseEvent(user) {\n p.then(function FromPromiseThen(v) {\n user(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 function 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(user) {\n if (lateUser) {\n throw new Error(\n \"Late component gets new user, when another was already connected!\",\n );\n }\n\n lateUser = user;\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 function Once<T>(baseEv: EventType<T>): EventType<T> {\n return function OnceEvent(user) {\n let isFilled = false;\n baseEv(function OnceBaseUser(v) {\n if (!isFilled) {\n isFilled = true;\n user(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 function 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(user) {\n calls.use(1);\n if (!stateless && isFilled(lastValue) && !ownersPool.has(user)) {\n user(lastValue);\n }\n ownersPool.add(user);\n return () => {\n ownersPool.remove(user);\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 function 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(user) {\n sharedEv.event(user);\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 function 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 function 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 function 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 {\n ConstructorType,\n DestroyableType,\n DestructorType,\n EventObjectType,\n EventType,\n} from \"../types\";\n\n/**\n * Constructor what can be destroyed\n */\nexport function ConstructorDestroyable(\n baseConstructor: ConstructorType<\n any[],\n (DestroyableType & EventObjectType) | EventType\n >,\n): {\n get: ConstructorType<any[], EventType>;\n destroy: DestructorType;\n} {\n const destructors: DestructorType[] = [];\n return {\n get: function ConstructorDestroyableGet(...args) {\n const inst = baseConstructor(...args);\n return (user) => {\n if (\"destroy\" in inst) {\n destructors.push(inst.destroy);\n inst.event(user);\n } else {\n const d = inst(user);\n if (d) {\n destructors.push(d);\n }\n }\n\n return () => {\n destructors.forEach((i) => i());\n };\n };\n },\n destroy: function ConstructorDestructor() {\n destructors.forEach((i) => i());\n },\n };\n}\n","import { DestructorType, EventType, EventUserType } from \"../types\";\n\nexport function Destructor<T>(\n baseEv: EventType<T>,\n destructorUser?: EventUserType<DestructorType>,\n) {\n let mbDestructor: DestructorType | void;\n let theUser: WeakRef<EventUserType<T>> | null = null;\n const destroy = () => {\n theUser = null;\n mbDestructor?.();\n };\n return {\n event: function DestructorEvent(user) {\n theUser = new WeakRef(user);\n mbDestructor = baseEv((v) => {\n if (theUser) {\n theUser.deref()?.(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 function 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 function Of<T>(value: T): EventType<T> {\n return function OfEvent(user) {\n return user(value);\n };\n}\n","import { EventType, EventUserType } from \"../types\";\n\n/**\n * Run data with user\n */\nexport function On<T>(event: EventType<T>, user: EventUserType<T>) {\n return event(user);\n}\n","import { EventUserType } from \"../types\";\n\n/**\n * Silent user\n */\nexport function Void(): EventUserType {\n return function VoidEvent() {};\n}\n","import { Destructor } from \"../base/Destructor\";\nimport { DestructorType, EventType } from \"../types\";\n\nexport function DestroyContainer() {\n const destructors: DestructorType[] = [];\n return {\n add(e: EventType) {\n const d = Destructor(e);\n destructors.push(d.destroy);\n return d.event;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\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 function Map<T, TG>(\n baseEv: EventType<T[]>,\n targetEv: ConstructorType<any[], EventType<TG>>,\n): EventType<TG[]> {\n return function MapData(user) {\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(user);\n });\n };\n}\n","import { EventType } from \"../types\";\n\nexport function Primitive<T>(baseEv: EventType<T>, theValue: T | null = null) {\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 function Sequence<T>(baseEv: EventType<T>): EventType<T[]> {\n return function SequenceEvent(user) {\n const result: T[] = [];\n baseEv(function SequenceBaseUser(v) {\n result.push(v);\n user(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 function Stream<T>(baseEv: EventType<T[]>): EventType<T> {\n return function StreamEvent(user) {\n baseEv(function StreamBaseUser(v) {\n v.forEach((cv) => {\n user(cv);\n });\n });\n };\n}\n"],"names":["a","v"],"mappings":"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"}
|