silentium 0.0.224 → 0.0.226
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 +15 -0
- package/dist/silentium.cjs +58 -65
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +5 -5
- package/dist/silentium.js +58 -65
- 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 +58 -65
- package/dist/silentium.mjs.map +1 -1
- package/package.json +1 -1
- package/src/base/Silence.ts +5 -7
- package/src/base/Source.ts +2 -3
- package/src/components/Late.ts +2 -9
- package/src/components/Shared.ts +2 -3
- package/src/types/SourceType.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
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.226](https://github.com/silentium-lab/silentium/compare/v0.0.225...v0.0.226) (2026-04-05)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** chain returns new subscription ([da737c3](https://github.com/silentium-lab/silentium/commit/da737c31cb0c6ba388f2214c7743d773bf249181))
|
|
11
|
+
|
|
12
|
+
### [0.0.225](https://github.com/silentium-lab/silentium/compare/v0.0.224...v0.0.225) (2026-04-02)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* silence use without primitive ([dada7c5](https://github.com/silentium-lab/silentium/commit/dada7c54bebe80cb57a9e2db700328eb79bd63dc))
|
|
18
|
+
* unused base var ([d11ab4c](https://github.com/silentium-lab/silentium/commit/d11ab4c047c3412abe64c739a94d1debb8fda2df))
|
|
19
|
+
|
|
5
20
|
### [0.0.224](https://github.com/silentium-lab/silentium/compare/v0.0.223...v0.0.224) (2026-04-02)
|
|
6
21
|
|
|
7
22
|
### [0.0.223](https://github.com/silentium-lab/silentium/compare/v0.0.222...v0.0.223) (2026-04-01)
|
package/dist/silentium.cjs
CHANGED
|
@@ -121,44 +121,6 @@ const _RejectionsImpl = class _RejectionsImpl {
|
|
|
121
121
|
__publicField$5(_RejectionsImpl, "globalCatch");
|
|
122
122
|
let RejectionsImpl = _RejectionsImpl;
|
|
123
123
|
|
|
124
|
-
var __defProp$4 = Object.defineProperty;
|
|
125
|
-
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
126
|
-
var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + "" , value);
|
|
127
|
-
function Primitive($base, theValue = null) {
|
|
128
|
-
return new PrimitiveImpl($base, theValue);
|
|
129
|
-
}
|
|
130
|
-
class PrimitiveImpl {
|
|
131
|
-
constructor($base, theValue = null) {
|
|
132
|
-
this.$base = $base;
|
|
133
|
-
this.theValue = theValue;
|
|
134
|
-
__publicField$4(this, "touched", false);
|
|
135
|
-
}
|
|
136
|
-
ensureTouched() {
|
|
137
|
-
if (!this.touched) {
|
|
138
|
-
const primitiveBaseSub = (v) => {
|
|
139
|
-
this.theValue = v;
|
|
140
|
-
};
|
|
141
|
-
this.$base.then(primitiveBaseSub);
|
|
142
|
-
}
|
|
143
|
-
this.touched = true;
|
|
144
|
-
}
|
|
145
|
-
[Symbol.toPrimitive]() {
|
|
146
|
-
this.ensureTouched();
|
|
147
|
-
return this.theValue;
|
|
148
|
-
}
|
|
149
|
-
primitive() {
|
|
150
|
-
this.ensureTouched();
|
|
151
|
-
return this.theValue;
|
|
152
|
-
}
|
|
153
|
-
primitiveWithException() {
|
|
154
|
-
this.ensureTouched();
|
|
155
|
-
if (this.theValue === null) {
|
|
156
|
-
throw new Error("Primitive value is null");
|
|
157
|
-
}
|
|
158
|
-
return this.theValue;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
124
|
const ResetSilenceCache = Symbol("reset-silence-cache");
|
|
163
125
|
function Silence(resolve) {
|
|
164
126
|
let lastValue;
|
|
@@ -173,20 +135,21 @@ function Silence(resolve) {
|
|
|
173
135
|
}
|
|
174
136
|
};
|
|
175
137
|
}
|
|
176
|
-
function SilenceUse(
|
|
177
|
-
|
|
138
|
+
function SilenceUse() {
|
|
139
|
+
let lastValue = null;
|
|
178
140
|
return {
|
|
179
141
|
use(value, cb) {
|
|
180
|
-
const baseValue = Primitive($base);
|
|
181
|
-
const lastValue = baseValue.primitive();
|
|
182
142
|
if (lastValue === null) {
|
|
143
|
+
lastValue = value;
|
|
183
144
|
cb(value);
|
|
184
145
|
return;
|
|
185
146
|
}
|
|
186
147
|
if (lastValue !== value) {
|
|
148
|
+
lastValue = value;
|
|
187
149
|
cb(value);
|
|
188
150
|
return;
|
|
189
151
|
}
|
|
152
|
+
lastValue = value;
|
|
190
153
|
return;
|
|
191
154
|
}
|
|
192
155
|
};
|
|
@@ -203,9 +166,9 @@ function ensureMessage(v, label) {
|
|
|
203
166
|
}
|
|
204
167
|
}
|
|
205
168
|
|
|
206
|
-
var __defProp$
|
|
207
|
-
var __defNormalProp$
|
|
208
|
-
var __publicField$
|
|
169
|
+
var __defProp$4 = Object.defineProperty;
|
|
170
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
171
|
+
var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + "" , value);
|
|
209
172
|
function Message(executor) {
|
|
210
173
|
return new MessageImpl(executor);
|
|
211
174
|
}
|
|
@@ -214,7 +177,7 @@ class MessageImpl {
|
|
|
214
177
|
this.executor = executor;
|
|
215
178
|
this.rejections = rejections;
|
|
216
179
|
this.dc = dc;
|
|
217
|
-
__publicField$
|
|
180
|
+
__publicField$4(this, "myName", "unknown");
|
|
218
181
|
ensureFunction(executor, "Message: executor");
|
|
219
182
|
}
|
|
220
183
|
then(resolve, rejected) {
|
|
@@ -327,19 +290,19 @@ function New(construct) {
|
|
|
327
290
|
});
|
|
328
291
|
}
|
|
329
292
|
|
|
330
|
-
var __defProp$
|
|
331
|
-
var __defNormalProp$
|
|
332
|
-
var __publicField$
|
|
293
|
+
var __defProp$3 = Object.defineProperty;
|
|
294
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
295
|
+
var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
333
296
|
function Source(messageExecutor, sourceExecutor) {
|
|
334
297
|
return new SourceImpl(messageExecutor, sourceExecutor);
|
|
335
298
|
}
|
|
336
299
|
class SourceImpl {
|
|
337
300
|
constructor(messageExecutor, sourceExecutor) {
|
|
338
301
|
this.sourceExecutor = sourceExecutor;
|
|
339
|
-
__publicField$
|
|
340
|
-
__publicField$
|
|
302
|
+
__publicField$3(this, "message");
|
|
303
|
+
__publicField$3(this, "silenceUse");
|
|
341
304
|
this.message = Message(messageExecutor);
|
|
342
|
-
this.silenceUse = SilenceUse(
|
|
305
|
+
this.silenceUse = SilenceUse();
|
|
343
306
|
}
|
|
344
307
|
use(value) {
|
|
345
308
|
if (!this.message.destroyed()) {
|
|
@@ -363,8 +326,7 @@ class SourceImpl {
|
|
|
363
326
|
return this;
|
|
364
327
|
}
|
|
365
328
|
chain(m) {
|
|
366
|
-
m.then(this.use.bind(this));
|
|
367
|
-
return this;
|
|
329
|
+
return m.then(this.use.bind(this));
|
|
368
330
|
}
|
|
369
331
|
}
|
|
370
332
|
|
|
@@ -438,6 +400,44 @@ function Applied(base, applier) {
|
|
|
438
400
|
});
|
|
439
401
|
}
|
|
440
402
|
|
|
403
|
+
var __defProp$2 = Object.defineProperty;
|
|
404
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
405
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, key + "" , value);
|
|
406
|
+
function Primitive($base, theValue = null) {
|
|
407
|
+
return new PrimitiveImpl($base, theValue);
|
|
408
|
+
}
|
|
409
|
+
class PrimitiveImpl {
|
|
410
|
+
constructor($base, theValue = null) {
|
|
411
|
+
this.$base = $base;
|
|
412
|
+
this.theValue = theValue;
|
|
413
|
+
__publicField$2(this, "touched", false);
|
|
414
|
+
}
|
|
415
|
+
ensureTouched() {
|
|
416
|
+
if (!this.touched) {
|
|
417
|
+
const primitiveBaseSub = (v) => {
|
|
418
|
+
this.theValue = v;
|
|
419
|
+
};
|
|
420
|
+
this.$base.then(primitiveBaseSub);
|
|
421
|
+
}
|
|
422
|
+
this.touched = true;
|
|
423
|
+
}
|
|
424
|
+
[Symbol.toPrimitive]() {
|
|
425
|
+
this.ensureTouched();
|
|
426
|
+
return this.theValue;
|
|
427
|
+
}
|
|
428
|
+
primitive() {
|
|
429
|
+
this.ensureTouched();
|
|
430
|
+
return this.theValue;
|
|
431
|
+
}
|
|
432
|
+
primitiveWithException() {
|
|
433
|
+
this.ensureTouched();
|
|
434
|
+
if (this.theValue === null) {
|
|
435
|
+
throw new Error("Primitive value is null");
|
|
436
|
+
}
|
|
437
|
+
return this.theValue;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
441
|
var __defProp$1 = Object.defineProperty;
|
|
442
442
|
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
443
443
|
var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -461,7 +461,7 @@ class SharedImpl {
|
|
|
461
461
|
if (isSource($base)) {
|
|
462
462
|
this.source = $base;
|
|
463
463
|
}
|
|
464
|
-
this.silenceUse = SilenceUse(
|
|
464
|
+
this.silenceUse = SilenceUse();
|
|
465
465
|
}
|
|
466
466
|
then(resolved, rejected) {
|
|
467
467
|
const sharedMsgExecutor = (res, rej) => {
|
|
@@ -511,8 +511,7 @@ class SharedImpl {
|
|
|
511
511
|
return Primitive(this);
|
|
512
512
|
}
|
|
513
513
|
chain(m) {
|
|
514
|
-
m.then(this.use.bind(this));
|
|
515
|
-
return this;
|
|
514
|
+
return m.then(this.use.bind(this));
|
|
516
515
|
}
|
|
517
516
|
}
|
|
518
517
|
|
|
@@ -528,12 +527,7 @@ class LateImpl {
|
|
|
528
527
|
__publicField(this, "rejections", Rejections());
|
|
529
528
|
__publicField(this, "lateR", null);
|
|
530
529
|
__publicField(this, "silenceUse");
|
|
531
|
-
|
|
532
|
-
if (this.v !== void 0) {
|
|
533
|
-
resolve(this.v);
|
|
534
|
-
}
|
|
535
|
-
};
|
|
536
|
-
this.silenceUse = SilenceUse(Message(silenceUseExecutor));
|
|
530
|
+
this.silenceUse = SilenceUse();
|
|
537
531
|
}
|
|
538
532
|
notify() {
|
|
539
533
|
if (isFilled(this.v) && this.lateR) {
|
|
@@ -567,8 +561,7 @@ class LateImpl {
|
|
|
567
561
|
return this;
|
|
568
562
|
}
|
|
569
563
|
chain(m) {
|
|
570
|
-
m.then(this.use.bind(this));
|
|
571
|
-
return this;
|
|
564
|
+
return m.then(this.use.bind(this));
|
|
572
565
|
}
|
|
573
566
|
destroy() {
|
|
574
567
|
this.lateR = null;
|
package/dist/silentium.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.cjs","sources":["../src/helpers/guards.ts","../src/base/Destroyable.ts","../src/base/DestroyContainer.ts","../src/base/Rejections.ts","../src/components/Primitive.ts","../src/base/Silence.ts","../src/helpers/ensures.ts","../src/base/Message.ts","../src/base/Of.ts","../src/base/Actual.ts","../src/base/Connected.ts","../src/base/Local.ts","../src/base/Locals.ts","../src/base/New.ts","../src/base/Source.ts","../src/base/SourceComputed.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Shared.ts","../src/components/Late.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/Destructured.ts","../src/components/Computed.ts","../src/components/Context.ts","../src/components/ContextChain.ts","../src/components/ContextOf.ts","../src/components/Default.ts","../src/components/Empty.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/Fold.ts","../src/components/Freeze.ts","../src/components/FromEvent.ts","../src/components/Lazy.ts","../src/components/Map.ts","../src/components/Once.ts","../src/components/Piped.ts","../src/components/Process.ts","../src/components/Promisify.ts","../src/components/Race.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/Trackable.ts","../src/components/Value.ts","../src/helpers/DevTools.ts"],"sourcesContent":["import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage(o: unknown): o is MessageType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"then\" in o &&\n typeof (o as any).then === \"function\"\n );\n}\n\n/**\n * Checks that the object is an message\n */\nexport function isSource(o: unknown): o is SourceType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable(o: unknown): o is DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed(o: unknown): o is DestroyedType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroyed\" in o &&\n typeof (o as any).destroyed === \"function\"\n );\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n public constructor(private base: T) {}\n\n public destroy(): this {\n if (isDestroyable(this.base)) {\n this.base.destroy();\n }\n\n if (typeof this.base === \"function\") {\n this.base();\n }\n\n return this;\n }\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n private _destroyed = false;\n\n /**\n * Add one destroyable\n * @param e\n * @returns\n */\n public add<R>(e: R): R {\n this.destructors.push(Destroyable(e));\n return e;\n }\n\n /**\n * Add many destroyable objects\n * @param destroyableList\n * @returns\n */\n public many(destroyableList: unknown[]) {\n const destroyMany = (d: unknown) => {\n this.add(d);\n };\n destroyableList.forEach(destroyMany);\n return this;\n }\n\n public destroy() {\n this._destroyed = true;\n this.destructors.forEach(function dcDestroy(d) {\n d.destroy();\n });\n this.destructors.length = 0;\n return this;\n }\n\n public destroyed() {\n return this._destroyed;\n }\n\n public destructor() {\n return this.destroy.bind(this);\n }\n}\n","import { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * Handles rejections collection\n */\nexport function Rejections() {\n return new RejectionsImpl();\n}\n\n/**\n * Implementation of rejections collection\n */\nexport class RejectionsImpl {\n private catchers: ConstructorType<[unknown]>[] = [];\n private lastRejectReason: unknown = null;\n\n public static globalCatch?: ConstructorType<[unknown]>;\n\n public reject: (reason: unknown) => void;\n\n public constructor() {\n const rejectionsRejectHandler = (reason: unknown) => {\n this.lastRejectReason = reason;\n this.catchers.forEach(function rejectionsRejectCatchers(catcher) {\n catcher(reason);\n });\n if (RejectionsImpl.globalCatch) {\n RejectionsImpl.globalCatch(reason);\n } else if (this.catchers.length === 0) {\n console.error([\"Unhandled Message Rejection:\", reason].join(\" \"));\n }\n };\n this.reject = rejectionsRejectHandler;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.lastRejectReason !== null) {\n rejected(this.lastRejectReason);\n }\n this.catchers.push(rejected);\n return this;\n }\n\n public destroy() {\n this.catchers.length = 0;\n return this;\n }\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Helps represent an message as a primitive type, which can be useful\n * for cases when you need to always have a reference to the current value\n * without updating the shared value when the current one changes.\n * For example, this could be used when passing an authorization token.\n * It can also be useful for testing or logging purposes.\n *\n * @url https://silentium.pw/article/primitive/view\n */\nexport function Primitive<T>($base: MessageType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nexport class PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: MessageType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n const primitiveBaseSub = (v: T) => {\n this.theValue = v;\n };\n this.$base.then(primitiveBaseSub);\n }\n this.touched = true;\n }\n\n public [Symbol.toPrimitive]() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitive() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitiveWithException() {\n this.ensureTouched();\n if (this.theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return this.theValue;\n }\n}\n","import { Actual } from \"base/Actual\";\nimport { Primitive } from \"components/Primitive\";\nimport { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nexport const ResetSilenceCache = Symbol(\"reset-silence-cache\");\n\n/**\n * Silence is null or undefined\n * Everything else is not silence\n *\n * @url https://silentium.pw/article/silence/view\n */\nexport function Silence<T>(resolve: ConstructorType<[T]>) {\n let lastValue: T | undefined;\n return function SilenceImpl(v: T | undefined) {\n if (v === ResetSilenceCache) {\n lastValue = undefined;\n v = undefined;\n }\n if (isFilled(v) && v !== lastValue) {\n lastValue = v;\n resolve(v);\n }\n };\n}\n\n/**\n * Silence rule when new value comes\n */\nexport function SilenceUse(base: MaybeMessage) {\n const $base = Actual(base);\n return {\n use(value: unknown, cb: (v: unknown) => unknown) {\n const baseValue = Primitive($base);\n const lastValue = baseValue.primitive();\n if (lastValue === null) {\n cb(value);\n return;\n }\n if (lastValue !== value) {\n cb(value);\n return;\n }\n return;\n },\n };\n}\n","import { isMessage } from \"helpers/guards\";\n\nexport function ensureFunction(v: unknown, label: string) {\n if (typeof v !== \"function\") {\n throw new Error(`${label}: is not function`);\n }\n}\n\nexport function ensureMessage(v: unknown, label: string) {\n if (!isMessage(v)) {\n throw new Error(`${label}: is not message`);\n }\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Rejections } from \"base/Rejections\";\nimport { Silence } from \"base/Silence\";\nimport { ensureFunction } from \"helpers/ensures\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport type MessageExecutorType<T> = (\n resolve: ConstructorType<[T]>,\n reject: ConstructorType<[unknown]>,\n name?: string,\n) => MessageType | (() => void) | void;\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n *\n * @url https://silentium.pw/article/message/view\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\n/**\n * Reactive message implementation\n *\n * @url https://silentium.pw/article/message/view\n */\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n private myName = \"unknown\";\n\n public constructor(\n private executor: MessageExecutorType<T>,\n private rejections = Rejections(),\n private dc = DestroyContainer(),\n ) {\n ensureFunction(executor, \"Message: executor\");\n }\n\n public then(\n resolve: ConstructorType<[T]>,\n rejected?: ConstructorType<[unknown]>,\n ) {\n if (this.dc.destroyed()) {\n return this;\n }\n const newMessageRejections = Rejections();\n if (rejected) {\n newMessageRejections.catch(rejected);\n }\n const newMessageDc = DestroyContainer();\n const newMessage = new MessageImpl(\n this.executor,\n newMessageRejections,\n newMessageDc,\n );\n newMessage.catch(this.rejections.reject);\n this.dc.add(newMessage);\n try {\n const mbDestructor = this.executor(\n Silence(function messageResolver(value: T) {\n if (!newMessageDc.destroyed()) {\n resolve(value);\n }\n }),\n newMessageRejections.reject,\n this.myName,\n );\n newMessageDc.add(mbDestructor);\n } catch (e: any) {\n newMessageRejections.reject(e);\n }\n return newMessage;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.dc.destroyed()) {\n return this;\n }\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy() {\n try {\n this.dc.destroy();\n this.rejections.destroy();\n } catch (e) {\n this.rejections.reject(e);\n }\n return this;\n }\n\n public destroyed() {\n return this.dc.destroyed();\n }\n\n public name(newName: string) {\n this.myName = newName;\n return this;\n }\n}\n","import { Message } from \"base/Message\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n return Message<T>(function OfImpl(r) {\n r(value);\n });\n}\n","import { Of } from \"base/Of\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * A function that helps to ensure that\n * the message is indeed a message object\n * and not just a value\n *\n * @url https://silentium.pw/article/actual/view\n */\nexport function Actual<T>(message: MaybeMessage<T>): MessageType<T> {\n return isMessage(message) ? message : Of(message);\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * First message - is main\n * others will be destroyed when first\n * will be destroyed\n *\n * @url https://silentium.pw/article/connected/view\n */\nexport function Connected<T>(main: MessageType, ...m: MaybeMessage[]) {\n const dc = DestroyContainer();\n dc.add(main);\n dc.many(m);\n return Message<T>(function ConnectedImpl(resolve, reject) {\n (main as MessageType<T>).catch(reject).then(resolve);\n m.forEach(function connectedMessagesForEach(other) {\n if (isMessage(other)) {\n other.catch(reject);\n }\n });\n return dc.destructor();\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>(_base: MaybeMessage<T>) {\n const $base = Actual(_base);\n return Message<T>(function LocalImpl(resolve, reject) {\n let destroyed = false;\n $base.then(function localBaseSub(v) {\n if (!destroyed) {\n resolve(v);\n }\n });\n $base.catch(reject);\n return function localDestructor() {\n destroyed = true;\n };\n });\n}\n","import { Local } from \"base/Local\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nexport function Props(...messages: MaybeMessage[]) {\n return messages.map(function propsMap(m) {\n return Local(m);\n });\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n *\n * @url https://silentium.pw/article/new-component/view\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n return Message<T>(function NewImpl(resolve) {\n resolve(construct());\n });\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { SilenceUse } from \"base/Silence\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object, the message what can\n * accept new values\n *\n * @url https://silentium.pw/article/source/view\n */\nexport function Source<T>(\n messageExecutor: MessageExecutorType<T>,\n sourceExecutor: ConstructorType<[T]>,\n) {\n return new SourceImpl(messageExecutor, sourceExecutor);\n}\n\nexport class SourceImpl<T> implements MessageSourceType<T> {\n private message: MessageImpl<T>;\n private silenceUse: ReturnType<typeof SilenceUse>;\n\n public constructor(\n messageExecutor: MessageExecutorType<T>,\n private sourceExecutor: ConstructorType<[T]>,\n ) {\n this.message = Message(messageExecutor);\n this.silenceUse = SilenceUse(this.message);\n }\n\n public use(value: T): this {\n if (!this.message.destroyed()) {\n const sourceSilenceUse = (v: unknown) => {\n this.sourceExecutor(v as T);\n };\n this.silenceUse.use(value, sourceSilenceUse);\n }\n return this;\n }\n\n public then(resolved: ConstructorType<[T]>): this {\n this.message.then(resolved);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.message.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.message.destroy();\n return this;\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Source } from \"base/Source\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\nexport function SourceComputed<T>(\n message: MessageType<T>,\n source: SourceType<T>,\n) {\n return Source<T>(\n function sourceComputedMsgExecutor(resolve, reject) {\n return message.then(resolve).catch(reject);\n },\n function sourceComputedSrcExecutor(v) {\n source.use(v);\n },\n );\n}\n","/**\n * Resolver that does nothing with the passed value,\n * needed for silent message triggering\n */\nexport function Void() {\n return () => {};\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\ntype ExtractTypeS<T> = T extends MaybeMessage<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MaybeMessage<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 * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n *\n * @url https://silentium.pw/article/all-component/view\n */\nexport function All<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(Actual);\n return Message<ExtractTypesFromArrayS<T>>(function AllImpl(resolve, reject) {\n const known = new Set<string>(Object.keys(messages));\n const filled = new Set<string>();\n const result: unknown[] = [];\n if (known.size === 0) {\n resolve([] as ExtractTypesFromArrayS<T>);\n return;\n }\n $messages.map(function allMessagesMap(m, key) {\n m.catch(reject);\n m.then(function allMessageSub(v) {\n filled.add(key.toString());\n result[key] = v;\n if (isAllFilled(filled, known)) {\n resolve(result.slice() as ExtractTypesFromArrayS<T>);\n }\n });\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n *\n * @url https://silentium.pw/article/any-component/view\n */\nexport function Any<const T>(...messages: MaybeMessage<T>[]) {\n const $messages = messages.map(Actual);\n return Message<T>(function AnyImpl(resolve, reject) {\n $messages.forEach(function anyMessagesSub(message) {\n message.catch(reject);\n message.then(resolve);\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n *\n * @url https://silentium.pw/article/applied/view\n */\nexport function Applied<const T, R>(\n base: MaybeMessage<T>,\n applier: ConstructorType<[T], MaybeMessage<R>>,\n) {\n const $base = Actual(base);\n return Message<R>(function AppliedImpl(resolve, reject) {\n const dc = DestroyContainer();\n $base.catch(reject);\n $base.then(function appliedBaseSub(v) {\n const result = applier(v);\n if (isMessage(result)) {\n dc.destroy();\n dc.add(result);\n result.catch(reject).then(resolve);\n } else {\n resolve(result);\n }\n });\n });\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { SilenceUse } from \"base/Silence\";\nimport { Primitive } from \"components/Primitive\";\nimport { isDestroyable, isFilled, isSource } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType, SourceType } from \"types/SourceType\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n *\n * @url https://silentium.pw/article/shared/view\n */\nexport function Shared<T>($base: MessageType<T> | MessageSourceType<T>) {\n return new SharedImpl<T>($base);\n}\n\nexport class SharedImpl<T> implements MessageSourceType<T> {\n private resolver = function sharedImplResolver(this: SharedImpl<T>, v: T) {\n this.lastV = v;\n this.resolvers.forEach(function sharedImplResolversForEach(r) {\n r(v);\n });\n }.bind(this);\n private lastV: T | undefined;\n private resolvers = new Set<ConstructorType<[T]>>();\n private source?: SourceType<T>;\n private isDestroyed = false;\n private silenceUse: ReturnType<typeof SilenceUse>;\n\n public constructor(private $base: MessageType<T> | MessageSourceType<T>) {\n if (isSource($base)) {\n this.source = $base;\n }\n this.silenceUse = SilenceUse(this);\n }\n\n public then(\n resolved: ConstructorType<[T]>,\n rejected?: ConstructorType<[unknown]>,\n ): MessageImpl<T> {\n const sharedMsgExecutor: MessageExecutorType<T> = (res, rej) => {\n this.resolvers.add(res);\n if (this.resolvers.size === 1) {\n this.$base.then(this.resolver, rej);\n } else if (isFilled(this.lastV)) {\n res(this.lastV);\n }\n return function sharedMsgDestructor(this: SharedImpl<T>) {\n this.resolvers.delete(res);\n }.bind(this);\n };\n const msg$ = Message<T>(sharedMsgExecutor).then(resolved);\n\n if (rejected) {\n msg$.catch(rejected);\n }\n\n return msg$;\n }\n\n public use(value: T) {\n const sharedUse = (v: unknown) => {\n if (this.source) {\n this.source.use(v as T);\n } else {\n this.resolver(v as T);\n }\n };\n this.silenceUse.use(value, sharedUse);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.$base.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.isDestroyed = true;\n this.resolvers.clear();\n if (isDestroyable(this.$base)) {\n this.$base.destroy();\n }\n return this;\n }\n\n public destroyed() {\n return this.isDestroyed;\n }\n\n public value() {\n return Primitive(this);\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Message, MessageExecutorType } from \"base/Message\";\nimport { Rejections } from \"base/Rejections\";\nimport { Silence, SilenceUse } from \"base/Silence\";\nimport { Shared } from \"components/Shared\";\nimport { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\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 *\n * @url https://silentium.pw/article/late/view\n */\nexport function Late<T>(v?: T) {\n return Shared(new LateImpl<T>(v));\n}\n\nexport class LateImpl<T> implements MessageSourceType<T> {\n private rejections = Rejections();\n private lateR: ConstructorType<[T]> | null = null;\n private notify() {\n if (isFilled(this.v) && this.lateR) {\n try {\n this.lateR(this.v);\n } catch (e: any) {\n this.rejections.reject(e);\n }\n }\n }\n private silenceUse: ReturnType<typeof SilenceUse>;\n\n public constructor(private v?: T) {\n const silenceUseExecutor: MessageExecutorType<T> = (resolve) => {\n if (this.v !== undefined) {\n resolve(this.v);\n }\n };\n this.silenceUse = SilenceUse(Message(silenceUseExecutor));\n }\n\n public then(r: ConstructorType<[T]>): this {\n if (this.lateR) {\n throw new Error(\n \"Late component gets new resolver, when another was already connected!\",\n );\n }\n this.lateR = Silence(r);\n this.notify();\n return this;\n }\n\n public use(value: T): this {\n const silenceUseLateExecutor = (v: unknown) => {\n this.v = v as T;\n this.notify();\n };\n this.silenceUse.use(value, silenceUseLateExecutor);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.rejections.catch(rejected);\n return this;\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n\n public destroy() {\n this.lateR = null;\n return this;\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Late } from \"components/Late\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message with error caught\n * inside another message\n *\n * @url https://silentium.pw/article/catch/view\n */\nexport function Catch<T>($base: MessageType) {\n const rejections = Rejections();\n $base.catch(rejections.reject);\n const $error = Late<T>();\n rejections.catch(function catchErrorSub(e) {\n $error.use(e as T);\n });\n return $error;\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MessageType, MessageTypeValue } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L\n : never;\n\n/**\n * Chains messages together and triggers\n * the last message only when all previous messages\n * have emitted their values. The value of Chain will be the value\n * of the last message. If any messages\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last message.\n */\nexport function Chain<T extends readonly MessageType[]>(...messages: T) {\n const $messages = messages.map(Actual);\n return Message<MessageTypeValue<Last<T>>>(\n function ChainImpl(resolve, reject) {\n let $latest: MessageTypeValue<Last<T>> | undefined;\n const handleMessage = (index: number) => {\n const message = $messages[index] as Last<T>;\n message.catch(reject);\n const next = $messages[index + 1] as Last<T> | undefined;\n message.then(function chainMessageSub(v) {\n oneMessage(v as MessageTypeValue<Last<T>>, next, index);\n });\n };\n function oneMessage(\n v: MessageTypeValue<Last<T>>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n $latest = v as MessageTypeValue<Last<T>>;\n }\n if ($latest) {\n resolve($latest);\n }\n if (next && !$latest) {\n handleMessage(index + 1);\n }\n }\n handleMessage(0);\n },\n );\n}\n","import { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n *\n * @url https://silentium.pw/article/destructured/view\n */\nexport function Destructured<const T extends any[], R>(\n $base: MaybeMessage<T>,\n applier: ConstructorType<any[], R>,\n) {\n return Applied($base, function DestructuredImpl(args) {\n return applier(...args);\n });\n}\n","import { All } from \"components/All\";\nimport { Destructured } from \"components/Destructured\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component what helps to compute\n * poor functions, and represent result\n * as message\n *\n * @url https://silentium.pw/article/computed/view\n */\nexport function Computed<const T extends MaybeMessage<any>[], R>(\n applier: ConstructorType<any[], R>,\n ...messages: T\n) {\n return Destructured(All(...messages), applier);\n}\n","import { Actual } from \"base/Actual\";\nimport { Source } from \"base/Source\";\nimport { All } from \"components/All\";\nimport { Destructured } from \"components/Destructured\";\nimport { Primitive } from \"components/Primitive\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ContextType } from \"types/ContextType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nContext.transport = new Map<any, ConstructorType<[ContextType]>>();\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * ContextType, the list of transport should be defined via\n * the Context.transport map object\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function Context<T>(\n name: MaybeMessage<string | symbol>,\n params: MaybeMessage<ContextType[\"params\"]> = {},\n) {\n const $msg = Destructured(\n All(Actual(name), Actual(params)),\n function contextMsgNormalize(name, params) {\n return {\n transport: name,\n params,\n result: undefined,\n error: undefined,\n } as ContextType;\n },\n );\n return Source<T>(\n function contextMsgImpl(resolve, reject) {\n $msg.then(function contextMsgSub(message) {\n const transport = Context.transport.get(message.transport);\n if (transport === undefined) {\n throw new Error(`Context: unknown transport ${message.transport}`);\n }\n if (!message.result) {\n message.result = resolve;\n }\n if (!message.error) {\n message.error = reject;\n }\n try {\n transport(message);\n } catch (error) {\n reject(error);\n }\n });\n },\n function contextSrcImpl(value) {\n const msg = Primitive($msg).primitive();\n if (msg === null) {\n throw new Error(\"Context: sourcing impossible message not existed\");\n }\n const transport = Context.transport.get(msg.transport);\n if (transport === undefined) {\n throw new Error(`Context: sourcing unknown transport ${msg.transport}`);\n }\n transport({\n ...msg,\n value,\n });\n },\n );\n}\n","import { Actual } from \"base/Actual\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\nimport { isSource } from \"helpers/guards\";\n\n/**\n * Connects an external message to an Context message chain\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextChain(base: MaybeMessage) {\n const $base = Actual(base);\n return function contextChainHandler(context: ContextType) {\n if (context.value && isSource(base)) {\n base.use(context.value);\n return;\n }\n if (!context.result) {\n throw new Error(\"ContextChain did not find result field in message\");\n }\n $base.then(context.result);\n };\n}\n","import { Message } from \"base/Message\";\nimport { Context } from \"components/Context\";\nimport { Late } from \"components/Late\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Message for the arrival of a specific Context message\n * for specific transport\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextOf(transport: string) {\n const $msg = Late<ContextType>();\n Context.transport.set(transport, $msg.use.bind($msg));\n return Message<ContextType>(function contextOfImpl(resolve, reject) {\n $msg.catch(reject);\n $msg.then(resolve);\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { Applied } from \"components/Applied\";\nimport { Catch } from \"components/Catch\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * If base returns error then\n * default will return default value\n *\n * @url https://silentium.pw/article/default/view\n */\nexport function Default<T>(\n $base: MessageType<T>,\n _default: MaybeMessage<unknown>,\n) {\n const $default = Actual(_default);\n const $defaultAfterError = Applied(Catch($base), () => $default);\n return Message<T>(function DefaultImpl(resolve) {\n $base.then(resolve);\n $defaultAfterError.then(resolve as any);\n });\n}\n","import { Message } from \"base/Message\";\nimport { Primitive } from \"components/Primitive\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * When someone asks message for value\n * if there is no value in message return Error\n * if message exists return value\n *\n * @url https://silentium.pw/article/empty/view\n */\nexport function Empty<T>($base: MessageType<T>, after?: MessageType) {\n return Message<T>(function EmptyImpl(resolve, reject) {\n const p = Primitive($base);\n try {\n $base.then(resolve).catch(reject);\n if (!after) {\n p.primitiveWithException();\n }\n after?.then(function emptyAfterSub() {\n try {\n p.primitiveWithException();\n } catch {\n reject(\"Empty: no value after message!\");\n }\n });\n } catch {\n reject(\"Empty: no value in base message!\");\n }\n });\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\ntype ExecutorApplier<T> = (executor: (v: T) => void) => (v: T) => void;\n\n/**\n * Applies a value transfer function to the resolver\n * and returns the same value transfer function for the resolver\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: MessageType<T>,\n applier: ExecutorApplier<T>,\n) {\n return Message<T>(function ExecutorAppliedImpl(resolve, reject) {\n $base.catch(reject);\n const sub = Destroyable($base.then(applier(resolve)));\n return function executorAppliedDestroy() {\n sub.destroy();\n };\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * Filters values from the source message based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n base: MaybeMessage<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): MessageType<T> {\n const $base = Actual(base);\n return Message<T>(function FilteredImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(function filteredBaseSub(v) {\n if (predicate(v)) {\n resolve(v);\n } else if (defaultValue !== undefined) {\n resolve(defaultValue);\n }\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Computed } from \"components/Computed\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Reduces values of message data to one common value\n */\nexport function Fold<T extends any[], TG>(\n data: MaybeMessage<T>,\n reducer: (acc: TG, item: T[number], index: number) => TG,\n initial: MaybeMessage<TG>,\n) {\n const $data = Actual(data);\n const $initial = Actual(initial);\n return Computed(\n function foldComputed(data, initial) {\n return data.reduce(reducer, initial);\n },\n $data,\n $initial,\n );\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message what freezes first known value\n */\nexport function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>) {\n let freezedValue: T | null = null;\n return Message<T>(function FreezeImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(function freezeBaseSub(v) {\n if (freezedValue === null) {\n freezedValue = v;\n }\n resolve(freezedValue as T);\n });\n $invalidate?.then(function freezeInvalidateSub() {\n freezedValue = null;\n });\n });\n}\n","import { MaybeMessage } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A message derived from event with a different\n * method call interface, based on callbacks.\n * Allows attaching a custom handler to an existing event source\n * and presenting it as a silentium message\n */\nexport function FromEvent<T>(\n emitter: MaybeMessage<any>,\n eventName: MaybeMessage<string>,\n subscribeMethod: MaybeMessage<string>,\n unsubscribeMethod?: MaybeMessage<string>,\n) {\n const $emitter = Actual(emitter);\n const $eventName = Actual(eventName);\n const $subscribeMethod = Actual(subscribeMethod);\n const $unsubscribeMethod = Actual(unsubscribeMethod);\n return Message<T>(function FromEventImpl(resolve, reject) {\n $emitter.catch(reject);\n $eventName.catch(reject);\n $subscribeMethod.catch(reject);\n $unsubscribeMethod.catch(reject);\n let lastR: ConstructorType<[T]> | null = null;\n const handler = (v: T) => {\n if (lastR) {\n lastR(v);\n }\n };\n All($emitter, $eventName, $subscribeMethod).then(function fromEventAllSub([\n emitter,\n eventName,\n subscribe,\n ]) {\n lastR = resolve;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, handler);\n });\n return function fromEventDestroy() {\n lastR = null;\n if (!$unsubscribeMethod) {\n return;\n }\n All($emitter, $eventName, $unsubscribeMethod).then(\n function fromEventDestroyAllSub([emitter, eventName, unsubscribe]) {\n emitter?.[unsubscribe as string]?.(eventName, handler);\n },\n );\n };\n });\n}\n","import { Message } from \"base/Message\";\nimport { isDestroyable } from \"helpers/guards\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Ability to create new messages when they will be needed\n *\n * @url https://silentium.pw/article/lazy/view\n */\nexport function Lazy<T>(constructor: () => MessageType<T>) {\n return Message<T>(function LazyImpl(resolve, reject) {\n const inst = constructor();\n inst.catch(reject).then(resolve);\n return function LazyDestroy() {\n if (isDestroyable(inst)) {\n inst.destroy();\n }\n };\n });\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { isMessage } from \"helpers/guards\";\nimport { Of } from \"base/Of\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { Message } from \"base/Message\";\nimport { Actual } from \"base/Actual\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n *\n * @url https://silentium.pw/article/map/view\n */\nexport function Map<T, TG>(\n base: MaybeMessage<T[]>,\n target: ConstructorType<[any], MessageType<TG>>,\n) {\n const $base = Actual(base);\n return Message<TG[]>(function MapImpl(resolve, reject) {\n $base.catch(reject);\n const infos: MessageType<TG>[] = [];\n const dc = DestroyContainer();\n $base.then(function mapBaseSub(v) {\n infos.length = 0;\n dc.destroy();\n v.forEach(function mapValueForEach(val) {\n let $val: MessageType<T> | T = val;\n if (!isMessage($val as object)) {\n $val = Of($val);\n }\n const info = target($val);\n dc.add(info);\n infos.push(info);\n });\n All(...infos).then(resolve);\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\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 *\n * @url https://silentium.pw/article/once/view\n */\nexport function Once<T>($base: MessageType<T>) {\n return Message<T>(function OnceImpl(resolve, reject) {\n let isFilled = false;\n $base.catch(reject);\n $base.then(function onceBaseSub(v) {\n if (!isFilled) {\n isFilled = true;\n resolve(v);\n }\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L extends (...args: any) => any\n ? L\n : never\n : never;\n\n/**\n * Helps to pipe actors or functions to one common actor\n *\n * @url https://silentium.pw/article/piped/view\n */\nexport function Piped<T extends ((...vars: any) => MaybeMessage)[]>(\n $m: MaybeMessage,\n ...c: T\n) {\n return c.reduce(function pipedReduce(msg, Constructor) {\n return Actual(Constructor(msg));\n }, Actual($m)) as ReturnType<Last<T>>;\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { Late } from \"components/Late\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport function Process<T, R = unknown>(\n $base: MessageType<T>,\n builder: ConstructorType<[T], MessageType<R>>,\n) {\n return Message<R>(function ProcessImpl(resolve, reject) {\n const $res = Late<R>();\n const dc = DestroyContainer();\n $base.then(function processBaseSub(v) {\n dc.destroy();\n const $msg = builder(v);\n dc.add($msg);\n $res.chain($msg);\n $msg.catch(reject);\n });\n $base.catch(reject);\n $res.then(resolve);\n return function processDestructor() {\n dc.destroy();\n };\n });\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Convert message to promise\n */\nexport function Promisify<T>($message: MessageType<T>) {\n return new Promise(function promisifyExecutor(resolve, reject) {\n $message.then(resolve, reject);\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * First responded message\n *\n * @url https://silentium.pw/article/race/view\n */\nexport function Race<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(Actual);\n return Message(function RaceImpl(resolve, reject) {\n let responded = false;\n $messages.forEach(function raceMessagesForEach($message) {\n $message.catch(reject).then(function raceMessageSub(v) {\n if (responded === false) {\n responded = true;\n resolve(v);\n }\n });\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n return Message<T[]>(function SequenceImpl(resolve, reject) {\n const result: T[] = [];\n $base.catch(reject);\n $base.then(function sequenceBaseSub(v) {\n result.push(v);\n resolve(result.slice());\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>(base: MaybeMessage<T[]>) {\n const $base = Actual(base);\n return Message<T>(function StreamImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(function streamBaseSub(v) {\n v.forEach(function streamBaseForEach(cv) {\n resolve(cv);\n });\n });\n });\n}\n","import { Void } from \"base/Void\";\nimport { Context } from \"components/Context\";\nimport { isMessage } from \"helpers/guards\";\n\n/**\n * Track creation and destruction of components\n * uses Context component to send messages\n * when created sends action=created\n * when destroyed sends action=destroyed\n *\n * @url https://silentium.pw/article/trackable/view\n */\nexport function Trackable<T>(name: string, target: T): T {\n Context(\"trackable\", { name, action: \"created\" }).then(Void());\n if (isMessage(target)) {\n target.then(function trackableTargetSub(value) {\n Context(\"trackable\", { name, action: \"value\", value }).then(Void());\n });\n }\n return new Proxy(target as object, {\n get(target, prop, receiver) {\n if (prop === \"then\") {\n Context(\"trackable\", { name, action: \"executed\" }).then(Void());\n }\n if (prop === \"destroy\") {\n Context(\"trackable\", { name, action: \"destroyed\" }).then(Void());\n }\n return Reflect.get(target, prop, receiver);\n },\n }) as T;\n}\n","import { Primitive } from \"components/Primitive\";\nimport { MessageType } from \"types/MessageType\";\n\nexport interface PassiveType<T> {\n value: T | null;\n}\n\n/**\n * Component what will return same proxied object\n * but with value property\n *\n * @url https://silentium.pw/article/value/view\n */\nexport function Value<T>(\n target: MessageType<T>,\n): MessageType<T> & PassiveType<T> {\n const p = Primitive(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"value\") {\n return p.primitive();\n }\n return Reflect.get(target, prop, receiver);\n },\n }) as MessageType<T> & PassiveType<T>;\n}\n","import { All } from \"components/All\";\nimport { Applied } from \"components/Applied\";\nimport { Primitive } from \"components/Primitive\";\nimport { Shared } from \"components/Shared\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\ndeclare global {\n interface SilentiumDebug {\n value: ($message: MessageType) => unknown;\n print: (...messages: MessageType[]) => void;\n destroyable: (onDestroy: () => void) => MessageType<any> & DestroyableType;\n }\n\n interface GlobalThis {\n silentiumDebug: SilentiumDebug;\n }\n\n // @ts-expect-error global variable\n const silentiumDebug: SilentiumDebug;\n}\n\n/**\n * Helps to print message value\n */\nconst silentiumPrint = (...messages: MessageType[]) => {\n Applied(\n All(\n ...messages.map(function silentiumPrintAllMap(e) {\n return Shared(e);\n }),\n ),\n JSON.stringify,\n ).then(console.log);\n};\n\n/**\n * Helps to debug current value of message\n */\nconst silentiumValue = ($message: MessageType) =>\n Primitive($message).primitive();\n\nexport class MessageDestroyable implements MessageType<any>, DestroyableType {\n public constructor(private onDestroy: () => void) {}\n\n public then(resolve: ConstructorType<[string]>) {\n resolve(`Wait destroy ${Date.now()}`);\n return this;\n }\n\n public catch() {\n return this;\n }\n\n public destroy() {\n this.onDestroy();\n return this;\n }\n}\n\n/**\n * Helps to debug destroying\n */\nconst silentiumDestroyable = (onDestroy: () => void) =>\n new MessageDestroyable(onDestroy);\n\n/**\n * global functions for debuging\n * silentium programs\n */\nexport function DevTools() {\n if (typeof globalThis !== \"undefined\") {\n (globalThis as any).silentiumDebug = {\n value: silentiumValue,\n print: silentiumPrint,\n destroyable: silentiumDestroyable,\n };\n }\n}\n"],"names":["__publicField","name","params","data","initial","emitter","eventName","Map","target"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.cjs","sources":["../src/helpers/guards.ts","../src/base/Destroyable.ts","../src/base/DestroyContainer.ts","../src/base/Rejections.ts","../src/base/Silence.ts","../src/helpers/ensures.ts","../src/base/Message.ts","../src/base/Of.ts","../src/base/Actual.ts","../src/base/Connected.ts","../src/base/Local.ts","../src/base/Locals.ts","../src/base/New.ts","../src/base/Source.ts","../src/base/SourceComputed.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Primitive.ts","../src/components/Shared.ts","../src/components/Late.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/Destructured.ts","../src/components/Computed.ts","../src/components/Context.ts","../src/components/ContextChain.ts","../src/components/ContextOf.ts","../src/components/Default.ts","../src/components/Empty.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/Fold.ts","../src/components/Freeze.ts","../src/components/FromEvent.ts","../src/components/Lazy.ts","../src/components/Map.ts","../src/components/Once.ts","../src/components/Piped.ts","../src/components/Process.ts","../src/components/Promisify.ts","../src/components/Race.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/Trackable.ts","../src/components/Value.ts","../src/helpers/DevTools.ts"],"sourcesContent":["import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage(o: unknown): o is MessageType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"then\" in o &&\n typeof (o as any).then === \"function\"\n );\n}\n\n/**\n * Checks that the object is an message\n */\nexport function isSource(o: unknown): o is SourceType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable(o: unknown): o is DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed(o: unknown): o is DestroyedType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroyed\" in o &&\n typeof (o as any).destroyed === \"function\"\n );\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n public constructor(private base: T) {}\n\n public destroy(): this {\n if (isDestroyable(this.base)) {\n this.base.destroy();\n }\n\n if (typeof this.base === \"function\") {\n this.base();\n }\n\n return this;\n }\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n private _destroyed = false;\n\n /**\n * Add one destroyable\n * @param e\n * @returns\n */\n public add<R>(e: R): R {\n this.destructors.push(Destroyable(e));\n return e;\n }\n\n /**\n * Add many destroyable objects\n * @param destroyableList\n * @returns\n */\n public many(destroyableList: unknown[]) {\n const destroyMany = (d: unknown) => {\n this.add(d);\n };\n destroyableList.forEach(destroyMany);\n return this;\n }\n\n public destroy() {\n this._destroyed = true;\n this.destructors.forEach(function dcDestroy(d) {\n d.destroy();\n });\n this.destructors.length = 0;\n return this;\n }\n\n public destroyed() {\n return this._destroyed;\n }\n\n public destructor() {\n return this.destroy.bind(this);\n }\n}\n","import { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * Handles rejections collection\n */\nexport function Rejections() {\n return new RejectionsImpl();\n}\n\n/**\n * Implementation of rejections collection\n */\nexport class RejectionsImpl {\n private catchers: ConstructorType<[unknown]>[] = [];\n private lastRejectReason: unknown = null;\n\n public static globalCatch?: ConstructorType<[unknown]>;\n\n public reject: (reason: unknown) => void;\n\n public constructor() {\n const rejectionsRejectHandler = (reason: unknown) => {\n this.lastRejectReason = reason;\n this.catchers.forEach(function rejectionsRejectCatchers(catcher) {\n catcher(reason);\n });\n if (RejectionsImpl.globalCatch) {\n RejectionsImpl.globalCatch(reason);\n } else if (this.catchers.length === 0) {\n console.error([\"Unhandled Message Rejection:\", reason].join(\" \"));\n }\n };\n this.reject = rejectionsRejectHandler;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.lastRejectReason !== null) {\n rejected(this.lastRejectReason);\n }\n this.catchers.push(rejected);\n return this;\n }\n\n public destroy() {\n this.catchers.length = 0;\n return this;\n }\n}\n","import { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\nexport const ResetSilenceCache = Symbol(\"reset-silence-cache\");\n\n/**\n * Silence is null or undefined\n * Everything else is not silence\n *\n * @url https://silentium.pw/article/silence/view\n */\nexport function Silence<T>(resolve: ConstructorType<[T]>) {\n let lastValue: T | undefined;\n return function SilenceImpl(v: T | undefined) {\n if (v === ResetSilenceCache) {\n lastValue = undefined;\n v = undefined;\n }\n if (isFilled(v) && v !== lastValue) {\n lastValue = v;\n resolve(v);\n }\n };\n}\n\n/**\n * Silence rule when new value comes\n */\nexport function SilenceUse() {\n let lastValue: unknown = null;\n return {\n use(value: unknown, cb: (v: unknown) => unknown) {\n if (lastValue === null) {\n lastValue = value;\n cb(value);\n return;\n }\n if (lastValue !== value) {\n lastValue = value;\n cb(value);\n return;\n }\n lastValue = value;\n return;\n },\n };\n}\n","import { isMessage } from \"helpers/guards\";\n\nexport function ensureFunction(v: unknown, label: string) {\n if (typeof v !== \"function\") {\n throw new Error(`${label}: is not function`);\n }\n}\n\nexport function ensureMessage(v: unknown, label: string) {\n if (!isMessage(v)) {\n throw new Error(`${label}: is not message`);\n }\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Rejections } from \"base/Rejections\";\nimport { Silence } from \"base/Silence\";\nimport { ensureFunction } from \"helpers/ensures\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport type MessageExecutorType<T> = (\n resolve: ConstructorType<[T]>,\n reject: ConstructorType<[unknown]>,\n name?: string,\n) => MessageType | (() => void) | void;\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n *\n * @url https://silentium.pw/article/message/view\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\n/**\n * Reactive message implementation\n *\n * @url https://silentium.pw/article/message/view\n */\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n private myName = \"unknown\";\n\n public constructor(\n private executor: MessageExecutorType<T>,\n private rejections = Rejections(),\n private dc = DestroyContainer(),\n ) {\n ensureFunction(executor, \"Message: executor\");\n }\n\n public then(\n resolve: ConstructorType<[T]>,\n rejected?: ConstructorType<[unknown]>,\n ) {\n if (this.dc.destroyed()) {\n return this;\n }\n const newMessageRejections = Rejections();\n if (rejected) {\n newMessageRejections.catch(rejected);\n }\n const newMessageDc = DestroyContainer();\n const newMessage = new MessageImpl(\n this.executor,\n newMessageRejections,\n newMessageDc,\n );\n newMessage.catch(this.rejections.reject);\n this.dc.add(newMessage);\n try {\n const mbDestructor = this.executor(\n Silence(function messageResolver(value: T) {\n if (!newMessageDc.destroyed()) {\n resolve(value);\n }\n }),\n newMessageRejections.reject,\n this.myName,\n );\n newMessageDc.add(mbDestructor);\n } catch (e: any) {\n newMessageRejections.reject(e);\n }\n return newMessage;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.dc.destroyed()) {\n return this;\n }\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy() {\n try {\n this.dc.destroy();\n this.rejections.destroy();\n } catch (e) {\n this.rejections.reject(e);\n }\n return this;\n }\n\n public destroyed() {\n return this.dc.destroyed();\n }\n\n public name(newName: string) {\n this.myName = newName;\n return this;\n }\n}\n","import { Message } from \"base/Message\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n return Message<T>(function OfImpl(r) {\n r(value);\n });\n}\n","import { Of } from \"base/Of\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * A function that helps to ensure that\n * the message is indeed a message object\n * and not just a value\n *\n * @url https://silentium.pw/article/actual/view\n */\nexport function Actual<T>(message: MaybeMessage<T>): MessageType<T> {\n return isMessage(message) ? message : Of(message);\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * First message - is main\n * others will be destroyed when first\n * will be destroyed\n *\n * @url https://silentium.pw/article/connected/view\n */\nexport function Connected<T>(main: MessageType, ...m: MaybeMessage[]) {\n const dc = DestroyContainer();\n dc.add(main);\n dc.many(m);\n return Message<T>(function ConnectedImpl(resolve, reject) {\n (main as MessageType<T>).catch(reject).then(resolve);\n m.forEach(function connectedMessagesForEach(other) {\n if (isMessage(other)) {\n other.catch(reject);\n }\n });\n return dc.destructor();\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>(_base: MaybeMessage<T>) {\n const $base = Actual(_base);\n return Message<T>(function LocalImpl(resolve, reject) {\n let destroyed = false;\n $base.then(function localBaseSub(v) {\n if (!destroyed) {\n resolve(v);\n }\n });\n $base.catch(reject);\n return function localDestructor() {\n destroyed = true;\n };\n });\n}\n","import { Local } from \"base/Local\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nexport function Props(...messages: MaybeMessage[]) {\n return messages.map(function propsMap(m) {\n return Local(m);\n });\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n *\n * @url https://silentium.pw/article/new-component/view\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n return Message<T>(function NewImpl(resolve) {\n resolve(construct());\n });\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { SilenceUse } from \"base/Silence\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object, the message what can\n * accept new values\n *\n * @url https://silentium.pw/article/source/view\n */\nexport function Source<T>(\n messageExecutor: MessageExecutorType<T>,\n sourceExecutor: ConstructorType<[T]>,\n) {\n return new SourceImpl(messageExecutor, sourceExecutor);\n}\n\nexport class SourceImpl<T> implements MessageSourceType<T> {\n private message: MessageImpl<T>;\n private silenceUse: ReturnType<typeof SilenceUse>;\n\n public constructor(\n messageExecutor: MessageExecutorType<T>,\n private sourceExecutor: ConstructorType<[T]>,\n ) {\n this.message = Message(messageExecutor);\n this.silenceUse = SilenceUse();\n }\n\n public use(value: T): this {\n if (!this.message.destroyed()) {\n const sourceSilenceUse = (v: unknown) => {\n this.sourceExecutor(v as T);\n };\n this.silenceUse.use(value, sourceSilenceUse);\n }\n return this;\n }\n\n public then(resolved: ConstructorType<[T]>): this {\n this.message.then(resolved);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.message.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.message.destroy();\n return this;\n }\n\n public chain(m: MessageType<T>) {\n return m.then(this.use.bind(this));\n }\n}\n","import { Source } from \"base/Source\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\nexport function SourceComputed<T>(\n message: MessageType<T>,\n source: SourceType<T>,\n) {\n return Source<T>(\n function sourceComputedMsgExecutor(resolve, reject) {\n return message.then(resolve).catch(reject);\n },\n function sourceComputedSrcExecutor(v) {\n source.use(v);\n },\n );\n}\n","/**\n * Resolver that does nothing with the passed value,\n * needed for silent message triggering\n */\nexport function Void() {\n return () => {};\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\ntype ExtractTypeS<T> = T extends MaybeMessage<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MaybeMessage<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 * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n *\n * @url https://silentium.pw/article/all-component/view\n */\nexport function All<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(Actual);\n return Message<ExtractTypesFromArrayS<T>>(function AllImpl(resolve, reject) {\n const known = new Set<string>(Object.keys(messages));\n const filled = new Set<string>();\n const result: unknown[] = [];\n if (known.size === 0) {\n resolve([] as ExtractTypesFromArrayS<T>);\n return;\n }\n $messages.map(function allMessagesMap(m, key) {\n m.catch(reject);\n m.then(function allMessageSub(v) {\n filled.add(key.toString());\n result[key] = v;\n if (isAllFilled(filled, known)) {\n resolve(result.slice() as ExtractTypesFromArrayS<T>);\n }\n });\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n *\n * @url https://silentium.pw/article/any-component/view\n */\nexport function Any<const T>(...messages: MaybeMessage<T>[]) {\n const $messages = messages.map(Actual);\n return Message<T>(function AnyImpl(resolve, reject) {\n $messages.forEach(function anyMessagesSub(message) {\n message.catch(reject);\n message.then(resolve);\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n *\n * @url https://silentium.pw/article/applied/view\n */\nexport function Applied<const T, R>(\n base: MaybeMessage<T>,\n applier: ConstructorType<[T], MaybeMessage<R>>,\n) {\n const $base = Actual(base);\n return Message<R>(function AppliedImpl(resolve, reject) {\n const dc = DestroyContainer();\n $base.catch(reject);\n $base.then(function appliedBaseSub(v) {\n const result = applier(v);\n if (isMessage(result)) {\n dc.destroy();\n dc.add(result);\n result.catch(reject).then(resolve);\n } else {\n resolve(result);\n }\n });\n });\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Helps represent an message as a primitive type, which can be useful\n * for cases when you need to always have a reference to the current value\n * without updating the shared value when the current one changes.\n * For example, this could be used when passing an authorization token.\n * It can also be useful for testing or logging purposes.\n *\n * @url https://silentium.pw/article/primitive/view\n */\nexport function Primitive<T>($base: MessageType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nexport class PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: MessageType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n const primitiveBaseSub = (v: T) => {\n this.theValue = v;\n };\n this.$base.then(primitiveBaseSub);\n }\n this.touched = true;\n }\n\n public [Symbol.toPrimitive]() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitive() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitiveWithException() {\n this.ensureTouched();\n if (this.theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return this.theValue;\n }\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { SilenceUse } from \"base/Silence\";\nimport { Primitive } from \"components/Primitive\";\nimport { isDestroyable, isFilled, isSource } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType, SourceType } from \"types/SourceType\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n *\n * @url https://silentium.pw/article/shared/view\n */\nexport function Shared<T>($base: MessageType<T> | MessageSourceType<T>) {\n return new SharedImpl<T>($base);\n}\n\nexport class SharedImpl<T> implements MessageSourceType<T> {\n private resolver = function sharedImplResolver(this: SharedImpl<T>, v: T) {\n this.lastV = v;\n this.resolvers.forEach(function sharedImplResolversForEach(r) {\n r(v);\n });\n }.bind(this);\n private lastV: T | undefined;\n private resolvers = new Set<ConstructorType<[T]>>();\n private source?: SourceType<T>;\n private isDestroyed = false;\n private silenceUse: ReturnType<typeof SilenceUse>;\n\n public constructor(private $base: MessageType<T> | MessageSourceType<T>) {\n if (isSource($base)) {\n this.source = $base;\n }\n this.silenceUse = SilenceUse();\n }\n\n public then(\n resolved: ConstructorType<[T]>,\n rejected?: ConstructorType<[unknown]>,\n ): MessageImpl<T> {\n const sharedMsgExecutor: MessageExecutorType<T> = (res, rej) => {\n this.resolvers.add(res);\n if (this.resolvers.size === 1) {\n this.$base.then(this.resolver, rej);\n } else if (isFilled(this.lastV)) {\n res(this.lastV);\n }\n return function sharedMsgDestructor(this: SharedImpl<T>) {\n this.resolvers.delete(res);\n }.bind(this);\n };\n const msg$ = Message<T>(sharedMsgExecutor).then(resolved);\n\n if (rejected) {\n msg$.catch(rejected);\n }\n\n return msg$;\n }\n\n public use(value: T) {\n const sharedUse = (v: unknown) => {\n if (this.source) {\n this.source.use(v as T);\n } else {\n this.resolver(v as T);\n }\n };\n this.silenceUse.use(value, sharedUse);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.$base.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.isDestroyed = true;\n this.resolvers.clear();\n if (isDestroyable(this.$base)) {\n this.$base.destroy();\n }\n return this;\n }\n\n public destroyed() {\n return this.isDestroyed;\n }\n\n public value() {\n return Primitive(this);\n }\n\n public chain(m: MessageType<T>) {\n return m.then(this.use.bind(this));\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Silence, SilenceUse } from \"base/Silence\";\nimport { Shared } from \"components/Shared\";\nimport { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\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 *\n * @url https://silentium.pw/article/late/view\n */\nexport function Late<T>(v?: T) {\n return Shared(new LateImpl<T>(v));\n}\n\nexport class LateImpl<T> implements MessageSourceType<T> {\n private rejections = Rejections();\n private lateR: ConstructorType<[T]> | null = null;\n private notify() {\n if (isFilled(this.v) && this.lateR) {\n try {\n this.lateR(this.v);\n } catch (e: any) {\n this.rejections.reject(e);\n }\n }\n }\n private silenceUse: ReturnType<typeof SilenceUse>;\n\n public constructor(private v?: T) {\n this.silenceUse = SilenceUse();\n }\n\n public then(r: ConstructorType<[T]>): this {\n if (this.lateR) {\n throw new Error(\n \"Late component gets new resolver, when another was already connected!\",\n );\n }\n this.lateR = Silence(r);\n this.notify();\n return this;\n }\n\n public use(value: T): this {\n const silenceUseLateExecutor = (v: unknown) => {\n this.v = v as T;\n this.notify();\n };\n this.silenceUse.use(value, silenceUseLateExecutor);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.rejections.catch(rejected);\n return this;\n }\n\n public chain(m: MessageType<T>) {\n return m.then(this.use.bind(this));\n }\n\n public destroy() {\n this.lateR = null;\n return this;\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Late } from \"components/Late\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message with error caught\n * inside another message\n *\n * @url https://silentium.pw/article/catch/view\n */\nexport function Catch<T>($base: MessageType) {\n const rejections = Rejections();\n $base.catch(rejections.reject);\n const $error = Late<T>();\n rejections.catch(function catchErrorSub(e) {\n $error.use(e as T);\n });\n return $error;\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MessageType, MessageTypeValue } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L\n : never;\n\n/**\n * Chains messages together and triggers\n * the last message only when all previous messages\n * have emitted their values. The value of Chain will be the value\n * of the last message. If any messages\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last message.\n */\nexport function Chain<T extends readonly MessageType[]>(...messages: T) {\n const $messages = messages.map(Actual);\n return Message<MessageTypeValue<Last<T>>>(\n function ChainImpl(resolve, reject) {\n let $latest: MessageTypeValue<Last<T>> | undefined;\n const handleMessage = (index: number) => {\n const message = $messages[index] as Last<T>;\n message.catch(reject);\n const next = $messages[index + 1] as Last<T> | undefined;\n message.then(function chainMessageSub(v) {\n oneMessage(v as MessageTypeValue<Last<T>>, next, index);\n });\n };\n function oneMessage(\n v: MessageTypeValue<Last<T>>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n $latest = v as MessageTypeValue<Last<T>>;\n }\n if ($latest) {\n resolve($latest);\n }\n if (next && !$latest) {\n handleMessage(index + 1);\n }\n }\n handleMessage(0);\n },\n );\n}\n","import { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n *\n * @url https://silentium.pw/article/destructured/view\n */\nexport function Destructured<const T extends any[], R>(\n $base: MaybeMessage<T>,\n applier: ConstructorType<any[], R>,\n) {\n return Applied($base, function DestructuredImpl(args) {\n return applier(...args);\n });\n}\n","import { All } from \"components/All\";\nimport { Destructured } from \"components/Destructured\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component what helps to compute\n * poor functions, and represent result\n * as message\n *\n * @url https://silentium.pw/article/computed/view\n */\nexport function Computed<const T extends MaybeMessage<any>[], R>(\n applier: ConstructorType<any[], R>,\n ...messages: T\n) {\n return Destructured(All(...messages), applier);\n}\n","import { Actual } from \"base/Actual\";\nimport { Source } from \"base/Source\";\nimport { All } from \"components/All\";\nimport { Destructured } from \"components/Destructured\";\nimport { Primitive } from \"components/Primitive\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ContextType } from \"types/ContextType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nContext.transport = new Map<any, ConstructorType<[ContextType]>>();\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * ContextType, the list of transport should be defined via\n * the Context.transport map object\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function Context<T>(\n name: MaybeMessage<string | symbol>,\n params: MaybeMessage<ContextType[\"params\"]> = {},\n) {\n const $msg = Destructured(\n All(Actual(name), Actual(params)),\n function contextMsgNormalize(name, params) {\n return {\n transport: name,\n params,\n result: undefined,\n error: undefined,\n } as ContextType;\n },\n );\n return Source<T>(\n function contextMsgImpl(resolve, reject) {\n $msg.then(function contextMsgSub(message) {\n const transport = Context.transport.get(message.transport);\n if (transport === undefined) {\n throw new Error(`Context: unknown transport ${message.transport}`);\n }\n if (!message.result) {\n message.result = resolve;\n }\n if (!message.error) {\n message.error = reject;\n }\n try {\n transport(message);\n } catch (error) {\n reject(error);\n }\n });\n },\n function contextSrcImpl(value) {\n const msg = Primitive($msg).primitive();\n if (msg === null) {\n throw new Error(\"Context: sourcing impossible message not existed\");\n }\n const transport = Context.transport.get(msg.transport);\n if (transport === undefined) {\n throw new Error(`Context: sourcing unknown transport ${msg.transport}`);\n }\n transport({\n ...msg,\n value,\n });\n },\n );\n}\n","import { Actual } from \"base/Actual\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\nimport { isSource } from \"helpers/guards\";\n\n/**\n * Connects an external message to an Context message chain\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextChain(base: MaybeMessage) {\n const $base = Actual(base);\n return function contextChainHandler(context: ContextType) {\n if (context.value && isSource(base)) {\n base.use(context.value);\n return;\n }\n if (!context.result) {\n throw new Error(\"ContextChain did not find result field in message\");\n }\n $base.then(context.result);\n };\n}\n","import { Message } from \"base/Message\";\nimport { Context } from \"components/Context\";\nimport { Late } from \"components/Late\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Message for the arrival of a specific Context message\n * for specific transport\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextOf(transport: string) {\n const $msg = Late<ContextType>();\n Context.transport.set(transport, $msg.use.bind($msg));\n return Message<ContextType>(function contextOfImpl(resolve, reject) {\n $msg.catch(reject);\n $msg.then(resolve);\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { Applied } from \"components/Applied\";\nimport { Catch } from \"components/Catch\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * If base returns error then\n * default will return default value\n *\n * @url https://silentium.pw/article/default/view\n */\nexport function Default<T>(\n $base: MessageType<T>,\n _default: MaybeMessage<unknown>,\n) {\n const $default = Actual(_default);\n const $defaultAfterError = Applied(Catch($base), () => $default);\n return Message<T>(function DefaultImpl(resolve) {\n $base.then(resolve);\n $defaultAfterError.then(resolve as any);\n });\n}\n","import { Message } from \"base/Message\";\nimport { Primitive } from \"components/Primitive\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * When someone asks message for value\n * if there is no value in message return Error\n * if message exists return value\n *\n * @url https://silentium.pw/article/empty/view\n */\nexport function Empty<T>($base: MessageType<T>, after?: MessageType) {\n return Message<T>(function EmptyImpl(resolve, reject) {\n const p = Primitive($base);\n try {\n $base.then(resolve).catch(reject);\n if (!after) {\n p.primitiveWithException();\n }\n after?.then(function emptyAfterSub() {\n try {\n p.primitiveWithException();\n } catch {\n reject(\"Empty: no value after message!\");\n }\n });\n } catch {\n reject(\"Empty: no value in base message!\");\n }\n });\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\ntype ExecutorApplier<T> = (executor: (v: T) => void) => (v: T) => void;\n\n/**\n * Applies a value transfer function to the resolver\n * and returns the same value transfer function for the resolver\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: MessageType<T>,\n applier: ExecutorApplier<T>,\n) {\n return Message<T>(function ExecutorAppliedImpl(resolve, reject) {\n $base.catch(reject);\n const sub = Destroyable($base.then(applier(resolve)));\n return function executorAppliedDestroy() {\n sub.destroy();\n };\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * Filters values from the source message based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n base: MaybeMessage<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): MessageType<T> {\n const $base = Actual(base);\n return Message<T>(function FilteredImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(function filteredBaseSub(v) {\n if (predicate(v)) {\n resolve(v);\n } else if (defaultValue !== undefined) {\n resolve(defaultValue);\n }\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Computed } from \"components/Computed\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Reduces values of message data to one common value\n */\nexport function Fold<T extends any[], TG>(\n data: MaybeMessage<T>,\n reducer: (acc: TG, item: T[number], index: number) => TG,\n initial: MaybeMessage<TG>,\n) {\n const $data = Actual(data);\n const $initial = Actual(initial);\n return Computed(\n function foldComputed(data, initial) {\n return data.reduce(reducer, initial);\n },\n $data,\n $initial,\n );\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message what freezes first known value\n */\nexport function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>) {\n let freezedValue: T | null = null;\n return Message<T>(function FreezeImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(function freezeBaseSub(v) {\n if (freezedValue === null) {\n freezedValue = v;\n }\n resolve(freezedValue as T);\n });\n $invalidate?.then(function freezeInvalidateSub() {\n freezedValue = null;\n });\n });\n}\n","import { MaybeMessage } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A message derived from event with a different\n * method call interface, based on callbacks.\n * Allows attaching a custom handler to an existing event source\n * and presenting it as a silentium message\n */\nexport function FromEvent<T>(\n emitter: MaybeMessage<any>,\n eventName: MaybeMessage<string>,\n subscribeMethod: MaybeMessage<string>,\n unsubscribeMethod?: MaybeMessage<string>,\n) {\n const $emitter = Actual(emitter);\n const $eventName = Actual(eventName);\n const $subscribeMethod = Actual(subscribeMethod);\n const $unsubscribeMethod = Actual(unsubscribeMethod);\n return Message<T>(function FromEventImpl(resolve, reject) {\n $emitter.catch(reject);\n $eventName.catch(reject);\n $subscribeMethod.catch(reject);\n $unsubscribeMethod.catch(reject);\n let lastR: ConstructorType<[T]> | null = null;\n const handler = (v: T) => {\n if (lastR) {\n lastR(v);\n }\n };\n All($emitter, $eventName, $subscribeMethod).then(function fromEventAllSub([\n emitter,\n eventName,\n subscribe,\n ]) {\n lastR = resolve;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, handler);\n });\n return function fromEventDestroy() {\n lastR = null;\n if (!$unsubscribeMethod) {\n return;\n }\n All($emitter, $eventName, $unsubscribeMethod).then(\n function fromEventDestroyAllSub([emitter, eventName, unsubscribe]) {\n emitter?.[unsubscribe as string]?.(eventName, handler);\n },\n );\n };\n });\n}\n","import { Message } from \"base/Message\";\nimport { isDestroyable } from \"helpers/guards\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Ability to create new messages when they will be needed\n *\n * @url https://silentium.pw/article/lazy/view\n */\nexport function Lazy<T>(constructor: () => MessageType<T>) {\n return Message<T>(function LazyImpl(resolve, reject) {\n const inst = constructor();\n inst.catch(reject).then(resolve);\n return function LazyDestroy() {\n if (isDestroyable(inst)) {\n inst.destroy();\n }\n };\n });\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { isMessage } from \"helpers/guards\";\nimport { Of } from \"base/Of\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { Message } from \"base/Message\";\nimport { Actual } from \"base/Actual\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n *\n * @url https://silentium.pw/article/map/view\n */\nexport function Map<T, TG>(\n base: MaybeMessage<T[]>,\n target: ConstructorType<[any], MessageType<TG>>,\n) {\n const $base = Actual(base);\n return Message<TG[]>(function MapImpl(resolve, reject) {\n $base.catch(reject);\n const infos: MessageType<TG>[] = [];\n const dc = DestroyContainer();\n $base.then(function mapBaseSub(v) {\n infos.length = 0;\n dc.destroy();\n v.forEach(function mapValueForEach(val) {\n let $val: MessageType<T> | T = val;\n if (!isMessage($val as object)) {\n $val = Of($val);\n }\n const info = target($val);\n dc.add(info);\n infos.push(info);\n });\n All(...infos).then(resolve);\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\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 *\n * @url https://silentium.pw/article/once/view\n */\nexport function Once<T>($base: MessageType<T>) {\n return Message<T>(function OnceImpl(resolve, reject) {\n let isFilled = false;\n $base.catch(reject);\n $base.then(function onceBaseSub(v) {\n if (!isFilled) {\n isFilled = true;\n resolve(v);\n }\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L extends (...args: any) => any\n ? L\n : never\n : never;\n\n/**\n * Helps to pipe actors or functions to one common actor\n *\n * @url https://silentium.pw/article/piped/view\n */\nexport function Piped<T extends ((...vars: any) => MaybeMessage)[]>(\n $m: MaybeMessage,\n ...c: T\n) {\n return c.reduce(function pipedReduce(msg, Constructor) {\n return Actual(Constructor(msg));\n }, Actual($m)) as ReturnType<Last<T>>;\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { Late } from \"components/Late\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport function Process<T, R = unknown>(\n $base: MessageType<T>,\n builder: ConstructorType<[T], MessageType<R>>,\n) {\n return Message<R>(function ProcessImpl(resolve, reject) {\n const $res = Late<R>();\n const dc = DestroyContainer();\n $base.then(function processBaseSub(v) {\n dc.destroy();\n const $msg = builder(v);\n dc.add($msg);\n $res.chain($msg);\n $msg.catch(reject);\n });\n $base.catch(reject);\n $res.then(resolve);\n return function processDestructor() {\n dc.destroy();\n };\n });\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Convert message to promise\n */\nexport function Promisify<T>($message: MessageType<T>) {\n return new Promise(function promisifyExecutor(resolve, reject) {\n $message.then(resolve, reject);\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * First responded message\n *\n * @url https://silentium.pw/article/race/view\n */\nexport function Race<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(Actual);\n return Message(function RaceImpl(resolve, reject) {\n let responded = false;\n $messages.forEach(function raceMessagesForEach($message) {\n $message.catch(reject).then(function raceMessageSub(v) {\n if (responded === false) {\n responded = true;\n resolve(v);\n }\n });\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n return Message<T[]>(function SequenceImpl(resolve, reject) {\n const result: T[] = [];\n $base.catch(reject);\n $base.then(function sequenceBaseSub(v) {\n result.push(v);\n resolve(result.slice());\n });\n });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>(base: MaybeMessage<T[]>) {\n const $base = Actual(base);\n return Message<T>(function StreamImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(function streamBaseSub(v) {\n v.forEach(function streamBaseForEach(cv) {\n resolve(cv);\n });\n });\n });\n}\n","import { Void } from \"base/Void\";\nimport { Context } from \"components/Context\";\nimport { isMessage } from \"helpers/guards\";\n\n/**\n * Track creation and destruction of components\n * uses Context component to send messages\n * when created sends action=created\n * when destroyed sends action=destroyed\n *\n * @url https://silentium.pw/article/trackable/view\n */\nexport function Trackable<T>(name: string, target: T): T {\n Context(\"trackable\", { name, action: \"created\" }).then(Void());\n if (isMessage(target)) {\n target.then(function trackableTargetSub(value) {\n Context(\"trackable\", { name, action: \"value\", value }).then(Void());\n });\n }\n return new Proxy(target as object, {\n get(target, prop, receiver) {\n if (prop === \"then\") {\n Context(\"trackable\", { name, action: \"executed\" }).then(Void());\n }\n if (prop === \"destroy\") {\n Context(\"trackable\", { name, action: \"destroyed\" }).then(Void());\n }\n return Reflect.get(target, prop, receiver);\n },\n }) as T;\n}\n","import { Primitive } from \"components/Primitive\";\nimport { MessageType } from \"types/MessageType\";\n\nexport interface PassiveType<T> {\n value: T | null;\n}\n\n/**\n * Component what will return same proxied object\n * but with value property\n *\n * @url https://silentium.pw/article/value/view\n */\nexport function Value<T>(\n target: MessageType<T>,\n): MessageType<T> & PassiveType<T> {\n const p = Primitive(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"value\") {\n return p.primitive();\n }\n return Reflect.get(target, prop, receiver);\n },\n }) as MessageType<T> & PassiveType<T>;\n}\n","import { All } from \"components/All\";\nimport { Applied } from \"components/Applied\";\nimport { Primitive } from \"components/Primitive\";\nimport { Shared } from \"components/Shared\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\ndeclare global {\n interface SilentiumDebug {\n value: ($message: MessageType) => unknown;\n print: (...messages: MessageType[]) => void;\n destroyable: (onDestroy: () => void) => MessageType<any> & DestroyableType;\n }\n\n interface GlobalThis {\n silentiumDebug: SilentiumDebug;\n }\n\n // @ts-expect-error global variable\n const silentiumDebug: SilentiumDebug;\n}\n\n/**\n * Helps to print message value\n */\nconst silentiumPrint = (...messages: MessageType[]) => {\n Applied(\n All(\n ...messages.map(function silentiumPrintAllMap(e) {\n return Shared(e);\n }),\n ),\n JSON.stringify,\n ).then(console.log);\n};\n\n/**\n * Helps to debug current value of message\n */\nconst silentiumValue = ($message: MessageType) =>\n Primitive($message).primitive();\n\nexport class MessageDestroyable implements MessageType<any>, DestroyableType {\n public constructor(private onDestroy: () => void) {}\n\n public then(resolve: ConstructorType<[string]>) {\n resolve(`Wait destroy ${Date.now()}`);\n return this;\n }\n\n public catch() {\n return this;\n }\n\n public destroy() {\n this.onDestroy();\n return this;\n }\n}\n\n/**\n * Helps to debug destroying\n */\nconst silentiumDestroyable = (onDestroy: () => void) =>\n new MessageDestroyable(onDestroy);\n\n/**\n * global functions for debuging\n * silentium programs\n */\nexport function DevTools() {\n if (typeof globalThis !== \"undefined\") {\n (globalThis as any).silentiumDebug = {\n value: silentiumValue,\n print: silentiumPrint,\n destroyable: silentiumDestroyable,\n };\n }\n}\n"],"names":["__publicField","name","params","data","initial","emitter","eventName","Map","target"],"mappings":"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"}
|