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.
Files changed (92) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/silentium.cjs +73 -77
  3. package/dist/silentium.cjs.map +1 -1
  4. package/dist/silentium.d.ts +46 -45
  5. package/dist/silentium.js +71 -75
  6. package/dist/silentium.js.map +1 -1
  7. package/dist/silentium.min.js +1 -1
  8. package/dist/silentium.min.mjs +1 -1
  9. package/dist/silentium.min.mjs.map +1 -1
  10. package/dist/silentium.mjs +71 -75
  11. package/dist/silentium.mjs.map +1 -1
  12. package/package.json +1 -1
  13. package/src/base/Destructor.test.ts +4 -4
  14. package/src/base/Destructor.ts +7 -7
  15. package/src/base/Local.test.ts +6 -6
  16. package/src/base/Local.ts +4 -4
  17. package/src/base/Of.ts +4 -4
  18. package/src/base/On.ts +3 -2
  19. package/src/base/Void.ts +2 -2
  20. package/src/components/All.test.ts +8 -6
  21. package/src/components/All.ts +6 -6
  22. package/src/components/Any.test.ts +12 -10
  23. package/src/components/Any.ts +3 -3
  24. package/src/components/Applied.test.ts +9 -7
  25. package/src/components/Applied.ts +6 -6
  26. package/src/components/Chain.test.ts +16 -14
  27. package/src/components/Chain.ts +6 -6
  28. package/src/components/ConstructorApplied.test.ts +26 -0
  29. package/src/components/ConstructorApplied.ts +13 -0
  30. package/src/components/ConstructorArgs.test.ts +21 -0
  31. package/src/components/ConstructorArgs.ts +17 -0
  32. package/src/components/ConstructorDestroyable.test.ts +18 -0
  33. package/src/components/ConstructorDestroyable.ts +23 -0
  34. package/src/components/ExecutorApplied.test.ts +20 -18
  35. package/src/components/ExecutorApplied.ts +6 -6
  36. package/src/components/Filtered.test.ts +33 -0
  37. package/src/components/Filtered.ts +6 -6
  38. package/src/components/FromEvent.test.ts +19 -17
  39. package/src/components/FromEvent.ts +12 -12
  40. package/src/components/FromPromise.test.ts +19 -17
  41. package/src/components/FromPromise.ts +4 -4
  42. package/src/components/Late.test.ts +5 -5
  43. package/src/components/Late.ts +4 -4
  44. package/src/components/LateShared.test.ts +6 -6
  45. package/src/components/LateShared.ts +2 -6
  46. package/src/components/Map.test.ts +53 -0
  47. package/src/components/Map.ts +8 -8
  48. package/src/components/Once.test.ts +27 -0
  49. package/src/components/Once.ts +4 -4
  50. package/src/components/PrimitiveSource.test.ts +15 -13
  51. package/src/components/PrimitiveSource.ts +3 -3
  52. package/src/components/Sequence.test.ts +14 -12
  53. package/src/components/Sequence.ts +4 -4
  54. package/src/components/Shared.test.ts +50 -0
  55. package/src/components/Shared.ts +9 -9
  56. package/src/components/SharedSource.test.ts +37 -0
  57. package/src/components/SharedSource.ts +7 -7
  58. package/src/components/Stream.ts +4 -4
  59. package/src/components/index.ts +3 -3
  60. package/src/helpers/OwnerPool.ts +7 -7
  61. package/src/helpers/isFilled.test.ts +5 -3
  62. package/src/testing/diagram.ts +2 -2
  63. package/src/types/{ValueType.ts → ConstructorType.ts} +1 -1
  64. package/src/types/EventObjectType.ts +5 -0
  65. package/src/types/{DataType.ts → EventType.ts} +6 -6
  66. package/src/types/EventUserObjectType.ts +5 -0
  67. package/src/types/EventUserType.ts +1 -0
  68. package/src/types/SourceType.ts +4 -3
  69. package/src/types/index.ts +6 -6
  70. package/.vscode/settings.json +0 -9
  71. package/src/components/Filtered._defaultValue.test.ts +0 -17
  72. package/src/components/Filtered._main.test.ts +0 -17
  73. package/src/components/LazyApplied.test.ts +0 -24
  74. package/src/components/LazyApplied.ts +0 -13
  75. package/src/components/LazyArgs.test.ts +0 -19
  76. package/src/components/LazyArgs.ts +0 -17
  77. package/src/components/LazyDestroyable.test.ts +0 -16
  78. package/src/components/LazyDestroyable.ts +0 -20
  79. package/src/components/Map._deferred.test.ts +0 -41
  80. package/src/components/Map._fn.test.ts +0 -20
  81. package/src/components/Map._main.test.ts +0 -28
  82. package/src/components/Once._main.test.ts +0 -14
  83. package/src/components/Once._notcalled.test.ts +0 -14
  84. package/src/components/Shared._main.test.ts +0 -28
  85. package/src/components/Shared._stateless.test.ts +0 -23
  86. package/src/components/SharedSource._diagram.test.ts +0 -16
  87. package/src/components/SharedSource._main.test.ts +0 -22
  88. package/src/helpers/dist/isFilled.js +0 -6
  89. package/src/helpers/dist/isFilled.test.js +0 -8
  90. package/src/types/DataObjectType.ts +0 -5
  91. package/src/types/DataUserObjectType.ts +0 -5
  92. 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
 
@@ -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 AllData(u) {
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 AnyData(u) {
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 = (baseSrc, applier) => {
33
- return function AppliedData(u) {
34
- baseSrc(function AppliedBaseUser(v) {
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 ChainData(u) {
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 = (baseSrc, applier) => {
63
- return function ExecutorAppliedData(u) {
62
+ const executorApplied = (baseEv, applier) => {
63
+ return function ExecutorAppliedEvent(u) {
64
64
  const ExecutorAppliedBaseUser = applier(u);
65
- baseSrc(ExecutorAppliedBaseUser);
65
+ baseEv(ExecutorAppliedBaseUser);
66
66
  };
67
67
  };
68
68
 
69
- const filtered = (baseSrc, predicate, defaultValue) => {
70
- return function FilteredData(u) {
71
- baseSrc(function FilteredBaseUser(v) {
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 = (emitterSrc, eventNameSrc, subscribeMethodSrc, unsubscribeMethodSrc) => {
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 FromEventData(u) {
88
+ return function FromEventEvent(u) {
89
89
  lastU = u;
90
- const a = all(emitterSrc, eventNameSrc, subscribeMethodSrc);
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 (!unsubscribeMethodSrc) {
99
+ if (!unsubscribeMethodEv) {
100
100
  return;
101
101
  }
102
- const a2 = all(emitterSrc, eventNameSrc, unsubscribeMethodSrc);
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 FromPromiseData(u) {
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
- value: function Late(u) {
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
- give: function LateUser(v2) {
180
+ use: function LateUser(v2) {
181
181
  notify(v2);
182
182
  }
183
183
  };
184
184
  };
185
185
 
186
- const once = (baseSrc) => {
187
- return function OnceData(u) {
186
+ const once = (baseEv) => {
187
+ return function OnceEvent(u) {
188
188
  let isFilled = false;
189
- baseSrc(function OnceBaseUser(v) {
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 = (baseSrc, stateless = false) => {
198
+ const shared = (baseEv, stateless = false) => {
199
199
  const ownersPool = new OwnerPool();
200
200
  let lastValue;
201
201
  const calls = late();
202
- once(calls.value)(function SharedCallsUser() {
203
- baseSrc(function SharedBaseUser(v) {
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
- value: function Shared(u) {
210
- calls.give(1);
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
- give: function SharedUser(value) {
220
- calls.give(1);
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.give(1);
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 = (baseSrc, stateless = false) => {
237
- const sharedSrc = shared(baseSrc.value, stateless);
236
+ const sharedSource = (baseEv, stateless = false) => {
237
+ const sharedEv = shared(baseEv.event, stateless);
238
238
  return {
239
- value: function SharedSource(u) {
240
- sharedSrc.value(u);
239
+ event: function SharedSourceEvent(u) {
240
+ sharedEv.event(u);
241
241
  },
242
- give: function SharedSourceUser(v) {
243
- sharedSrc.touched();
244
- baseSrc.give(v);
242
+ use: function SharedSourceUser(v) {
243
+ sharedEv.touched();
244
+ baseEv.use(v);
245
245
  }
246
246
  };
247
247
  };
248
248
 
249
- const lateShared = (theValue) => {
250
- const src = sharedSource(late(theValue));
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 lazyApplied = (baseLazy, applier) => {
253
+ const constructorApplied = (baseConstructor, applier) => {
258
254
  return function LazyAppliedData(...args) {
259
- return applier(baseLazy(...args));
255
+ return applier(baseConstructor(...args));
260
256
  };
261
257
  };
262
258
 
263
- const lazyArgs = (baseLazy, args, startFromArgIndex = 0) => {
264
- return function LazyArgsData(...runArgs) {
265
- return baseLazy(...mergeAtIndex(runArgs, args, startFromArgIndex));
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 lazyDestroyable = (baseLazy) => {
270
+ const constructorDestroyable = (baseConstructor) => {
275
271
  const instances = [];
276
272
  return {
277
- get: function lazyDestroyable2(...args) {
278
- const inst = baseLazy(...args);
273
+ get: function ConstructorDestroyable(...args) {
274
+ const inst = baseConstructor(...args);
279
275
  instances.push(inst);
280
276
  return inst;
281
277
  },
282
- destroy: function LazyDestructor() {
278
+ destroy: function ConstructorDestructor() {
283
279
  instances.forEach((i) => i.destroy());
284
280
  }
285
281
  };
286
282
  };
287
283
 
288
- const destructor = (src, destructorUser) => {
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
- value: function DestructorData(u) {
292
+ event: function DestructorData(u) {
297
293
  theUser = u;
298
- mbDestructor = src((v) => {
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 = (baseSrc) => {
313
- return function LocalData(user) {
308
+ const local = (baseEv) => {
309
+ return function LocalEvent(user) {
314
310
  let destroyed = false;
315
- const d = baseSrc(function LocalBaseUser(v) {
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 = (v) => function OfData(u) {
328
- return u(v);
323
+ const of = (value) => function OfEvent(u) {
324
+ return u(value);
329
325
  };
330
326
 
331
- const on = (src, user) => src(user);
327
+ const on = (event, user) => event(user);
332
328
 
333
- const _void = () => function VoidData() {
329
+ const _void = () => function VoidEvent() {
334
330
  };
335
331
 
336
- const map = (baseSrc, targetSrc) => {
332
+ const map = (baseEv, targetEv) => {
337
333
  return function MapData(u) {
338
- baseSrc(function MapBaseUser(v) {
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 = targetSrc(valInfo);
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 = (baseSrc, theValue = null) => {
355
- baseSrc(function PrimitiveBaseUser(v) {
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 = (baseSrc) => {
375
- return function SequenceData(u) {
370
+ const sequence = (baseEv) => {
371
+ return function SequenceEvent(u) {
376
372
  const result = [];
377
- baseSrc(function SequenceBaseUser(v) {
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 = (baseSrc) => {
385
- return function StreamData(u) {
386
- baseSrc(function StreamBaseUser(v) {
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;
@@ -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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"}