silentium 0.0.123 → 0.0.124
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 +7 -0
- package/dist/silentium.cjs +73 -44
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +38 -20
- package/dist/silentium.js +50 -45
- 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 +50 -45
- package/dist/silentium.mjs.map +1 -1
- package/package.json +1 -1
- package/src/base/DestroyContainer.ts +1 -1
- package/src/base/Event.ts +1 -1
- package/src/base/Local.ts +1 -1
- package/src/base/Of.ts +1 -1
- package/src/base/Transport.ts +1 -1
- package/src/base/Void.ts +1 -1
- package/src/components/All.ts +1 -1
- package/src/components/Any.ts +1 -1
- package/src/components/Applied.ts +1 -1
- package/src/components/Catch.ts +1 -1
- package/src/components/ExecutorApplied.ts +1 -1
- package/src/components/Filtered.ts +1 -1
- package/src/components/FromEvent.ts +1 -1
- package/src/components/Late.ts +1 -1
- package/src/components/LateShared.test.ts +5 -0
- package/src/components/LateShared.ts +8 -1
- package/src/components/Map.ts +1 -1
- package/src/components/Once.ts +1 -1
- package/src/components/Primitive.ts +1 -1
- package/src/components/RPC.ts +1 -1
- package/src/components/Sequence.ts +1 -1
- package/src/components/Shared.ts +1 -1
- package/src/components/SharedSource.ts +1 -1
- package/src/components/Stream.ts +1 -1
- package/src/components/TransportDestroyable.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
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.124](https://github.com/silentium-lab/silentium/compare/v0.0.123...v0.0.124) (2025-11-03)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** late shared with value primitive ([a530850](https://github.com/silentium-lab/silentium/commit/a5308503b883927464b70b28c2df5d9d53cf9270))
|
|
11
|
+
|
|
5
12
|
### [0.0.123](https://github.com/silentium-lab/silentium/compare/v0.0.122...v0.0.123) (2025-11-03)
|
|
6
13
|
|
|
7
14
|
|
package/dist/silentium.cjs
CHANGED
|
@@ -617,13 +617,54 @@ class SharedSourceEvent {
|
|
|
617
617
|
var __defProp$6 = Object.defineProperty;
|
|
618
618
|
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
619
619
|
var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, key + "" , value);
|
|
620
|
+
function Primitive($base, theValue = null) {
|
|
621
|
+
return new PrimitiveImpl($base, theValue);
|
|
622
|
+
}
|
|
623
|
+
class PrimitiveImpl {
|
|
624
|
+
constructor($base, theValue = null) {
|
|
625
|
+
this.$base = $base;
|
|
626
|
+
this.theValue = theValue;
|
|
627
|
+
__publicField$6(this, "touched", false);
|
|
628
|
+
}
|
|
629
|
+
ensureTouched() {
|
|
630
|
+
if (!this.touched) {
|
|
631
|
+
this.$base.event(
|
|
632
|
+
Transport((v) => {
|
|
633
|
+
this.theValue = v;
|
|
634
|
+
})
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
this.touched = true;
|
|
638
|
+
}
|
|
639
|
+
[Symbol.toPrimitive]() {
|
|
640
|
+
this.ensureTouched();
|
|
641
|
+
return this.theValue;
|
|
642
|
+
}
|
|
643
|
+
primitive() {
|
|
644
|
+
this.ensureTouched();
|
|
645
|
+
return this.theValue;
|
|
646
|
+
}
|
|
647
|
+
primitiveWithException() {
|
|
648
|
+
this.ensureTouched();
|
|
649
|
+
if (this.theValue === null) {
|
|
650
|
+
throw new Error("Primitive value is null");
|
|
651
|
+
}
|
|
652
|
+
return this.theValue;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
var __defProp$5 = Object.defineProperty;
|
|
657
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
658
|
+
var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
620
659
|
function LateShared(value) {
|
|
621
660
|
return new LateSharedEvent(value);
|
|
622
661
|
}
|
|
623
662
|
class LateSharedEvent {
|
|
624
663
|
constructor(value) {
|
|
625
|
-
__publicField$
|
|
664
|
+
__publicField$5(this, "$event");
|
|
665
|
+
__publicField$5(this, "primitive");
|
|
626
666
|
this.$event = SharedSource(Late(value));
|
|
667
|
+
this.primitive = Primitive(this, value);
|
|
627
668
|
}
|
|
628
669
|
event(transport) {
|
|
629
670
|
this.$event.event(transport);
|
|
@@ -633,11 +674,14 @@ class LateSharedEvent {
|
|
|
633
674
|
this.$event.use(value);
|
|
634
675
|
return this;
|
|
635
676
|
}
|
|
677
|
+
value() {
|
|
678
|
+
return this.primitive;
|
|
679
|
+
}
|
|
636
680
|
}
|
|
637
681
|
|
|
638
|
-
var __defProp$
|
|
639
|
-
var __defNormalProp$
|
|
640
|
-
var __publicField$
|
|
682
|
+
var __defProp$4 = Object.defineProperty;
|
|
683
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
684
|
+
var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + "" , value);
|
|
641
685
|
function Map($base, $target) {
|
|
642
686
|
return new MapEvent($base, $target);
|
|
643
687
|
}
|
|
@@ -645,7 +689,7 @@ class MapEvent {
|
|
|
645
689
|
constructor($base, $target) {
|
|
646
690
|
this.$base = $base;
|
|
647
691
|
this.$target = $target;
|
|
648
|
-
__publicField$
|
|
692
|
+
__publicField$4(this, "parent", TransportParent(function(v, child) {
|
|
649
693
|
const infos = [];
|
|
650
694
|
v.forEach((val) => {
|
|
651
695
|
let $val = val;
|
|
@@ -664,45 +708,6 @@ class MapEvent {
|
|
|
664
708
|
}
|
|
665
709
|
}
|
|
666
710
|
|
|
667
|
-
var __defProp$4 = Object.defineProperty;
|
|
668
|
-
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
669
|
-
var __publicField$4 = (obj, key, value) => __defNormalProp$4(obj, key + "" , value);
|
|
670
|
-
function Primitive($base, theValue = null) {
|
|
671
|
-
return new PrimitiveImpl($base, theValue);
|
|
672
|
-
}
|
|
673
|
-
class PrimitiveImpl {
|
|
674
|
-
constructor($base, theValue = null) {
|
|
675
|
-
this.$base = $base;
|
|
676
|
-
this.theValue = theValue;
|
|
677
|
-
__publicField$4(this, "touched", false);
|
|
678
|
-
}
|
|
679
|
-
ensureTouched() {
|
|
680
|
-
if (!this.touched) {
|
|
681
|
-
this.$base.event(
|
|
682
|
-
Transport((v) => {
|
|
683
|
-
this.theValue = v;
|
|
684
|
-
})
|
|
685
|
-
);
|
|
686
|
-
}
|
|
687
|
-
this.touched = true;
|
|
688
|
-
}
|
|
689
|
-
[Symbol.toPrimitive]() {
|
|
690
|
-
this.ensureTouched();
|
|
691
|
-
return this.theValue;
|
|
692
|
-
}
|
|
693
|
-
primitive() {
|
|
694
|
-
this.ensureTouched();
|
|
695
|
-
return this.theValue;
|
|
696
|
-
}
|
|
697
|
-
primitiveWithException() {
|
|
698
|
-
this.ensureTouched();
|
|
699
|
-
if (this.theValue === null) {
|
|
700
|
-
throw new Error("Primitive value is null");
|
|
701
|
-
}
|
|
702
|
-
return this.theValue;
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
|
|
706
711
|
var __defProp$3 = Object.defineProperty;
|
|
707
712
|
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
708
713
|
var __publicField$3 = (obj, key, value) => __defNormalProp$3(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -844,43 +849,67 @@ function RPCOf($rpc, transport) {
|
|
|
844
849
|
}
|
|
845
850
|
|
|
846
851
|
exports.All = All;
|
|
852
|
+
exports.AllEvent = AllEvent;
|
|
847
853
|
exports.Any = Any;
|
|
854
|
+
exports.AnyEvent = AnyEvent;
|
|
848
855
|
exports.Applied = Applied;
|
|
856
|
+
exports.AppliedEvent = AppliedEvent;
|
|
849
857
|
exports.Catch = Catch;
|
|
858
|
+
exports.CatchEvent = CatchEvent;
|
|
850
859
|
exports.Chain = Chain;
|
|
851
860
|
exports.ChainEvent = ChainEvent;
|
|
852
861
|
exports.Component = Component;
|
|
853
862
|
exports.ComponentClass = ComponentClass;
|
|
854
863
|
exports.DestroyContainer = DestroyContainer;
|
|
864
|
+
exports.DestroyContainerImpl = DestroyContainerImpl;
|
|
855
865
|
exports.Event = Event;
|
|
866
|
+
exports.EventImpl = EventImpl;
|
|
856
867
|
exports.ExecutorApplied = ExecutorApplied;
|
|
868
|
+
exports.ExecutorAppliedEvent = ExecutorAppliedEvent;
|
|
857
869
|
exports.Filtered = Filtered;
|
|
870
|
+
exports.FilteredEvent = FilteredEvent;
|
|
858
871
|
exports.FromEvent = FromEvent;
|
|
872
|
+
exports.FromEventAdapter = FromEventAdapter;
|
|
859
873
|
exports.FromPromise = FromPromise;
|
|
860
874
|
exports.FromPromiseEvent = FromPromiseEvent;
|
|
861
875
|
exports.Late = Late;
|
|
876
|
+
exports.LateEvent = LateEvent;
|
|
862
877
|
exports.LateShared = LateShared;
|
|
878
|
+
exports.LateSharedEvent = LateSharedEvent;
|
|
863
879
|
exports.Local = Local;
|
|
880
|
+
exports.LocalEvent = LocalEvent;
|
|
864
881
|
exports.Map = Map;
|
|
882
|
+
exports.MapEvent = MapEvent;
|
|
865
883
|
exports.Of = Of;
|
|
884
|
+
exports.OfEvent = OfEvent;
|
|
866
885
|
exports.Once = Once;
|
|
886
|
+
exports.OnceEvent = OnceEvent;
|
|
867
887
|
exports.OwnerPool = OwnerPool;
|
|
868
888
|
exports.Primitive = Primitive;
|
|
889
|
+
exports.PrimitiveImpl = PrimitiveImpl;
|
|
869
890
|
exports.RPC = RPC;
|
|
891
|
+
exports.RPCImpl = RPCImpl;
|
|
870
892
|
exports.RPCOf = RPCOf;
|
|
871
893
|
exports.Sequence = Sequence;
|
|
894
|
+
exports.SequenceEvent = SequenceEvent;
|
|
872
895
|
exports.Shared = Shared;
|
|
896
|
+
exports.SharedEvent = SharedEvent;
|
|
873
897
|
exports.SharedSource = SharedSource;
|
|
898
|
+
exports.SharedSourceEvent = SharedSourceEvent;
|
|
874
899
|
exports.Stream = Stream;
|
|
900
|
+
exports.StreamEvent = StreamEvent;
|
|
875
901
|
exports.Transport = Transport;
|
|
876
902
|
exports.TransportApplied = TransportApplied;
|
|
877
903
|
exports.TransportAppliedImpl = TransportAppliedImpl;
|
|
878
904
|
exports.TransportArgs = TransportArgs;
|
|
879
905
|
exports.TransportArgsImpl = TransportArgsImpl;
|
|
880
906
|
exports.TransportDestroyable = TransportDestroyable;
|
|
907
|
+
exports.TransportDestroyableEvent = TransportDestroyableEvent;
|
|
881
908
|
exports.TransportEvent = TransportEvent;
|
|
882
909
|
exports.TransportParent = TransportParent;
|
|
910
|
+
exports.TransportParentImpl = TransportParentImpl;
|
|
883
911
|
exports.Void = Void;
|
|
912
|
+
exports.VoidImpl = VoidImpl;
|
|
884
913
|
exports.ensureEvent = ensureEvent;
|
|
885
914
|
exports.ensureFunction = ensureFunction;
|
|
886
915
|
exports.ensureTransport = ensureTransport;
|
package/dist/silentium.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.cjs","sources":["../src/base/Component.ts","../src/base/ComponentClass.ts","../src/base/DestroyContainer.ts","../src/helpers/guards.ts","../src/helpers/ensures.ts","../src/base/Event.ts","../src/base/Transport.ts","../src/base/Local.ts","../src/base/Of.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/FromEvent.ts","../src/components/FromPromise.ts","../src/components/Late.ts","../src/components/Once.ts","../src/helpers/OwnerPool.ts","../src/components/Shared.ts","../src/components/SharedSource.ts","../src/components/LateShared.ts","../src/components/Map.ts","../src/components/Primitive.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/TransportApplied.ts","../src/components/TransportArgs.ts","../src/components/TransportDestroyable.ts","../src/components/RPC.ts","../src/components/RPCOf.ts"],"sourcesContent":["import { DestroyableType, EventType, EventTypeValue } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Create a function component that\n * will emit an event with specified arguments\n * and specified type\n */\nexport function Component<T, P extends Array<any>>(\n executor: (\n this: TransportType<P[0] extends EventType ? EventTypeValue<P[0]> : T>,\n ...args: P\n ) => void | (() => void),\n): (\n ...args: P\n) => (P[0] extends EventType ? EventType<EventTypeValue<P[0]>> : EventType<T>) &\n DestroyableType {\n return (...args) => {\n let destructor: void | (() => void);\n return {\n event(\n transport: TransportType<\n P[0] extends EventType ? EventTypeValue<P[0]> : T\n >,\n ) {\n destructor = executor.call(transport, ...args);\n return this;\n },\n destroy() {\n if (destructor !== undefined) {\n destructor();\n }\n return this;\n },\n } as any;\n };\n}\n","import { DestroyableType, EventType, EventTypeValue } from \"types/EventType\";\nimport { SourceType } from \"types/SourceType\";\n\ntype ConstructableType = { new (...args: any[]): any };\n\n/**\n * Creates a type-safe factory function for instantiating components with proper interface inference\n * Automatically determines return types based on whether the class implements SourceType, EventType, and DestroyableType\n */\nexport function ComponentClass<T extends ConstructableType>(\n classConstructor: T,\n): <R = null>(\n ...args: ConstructorParameters<T>\n) => R extends null\n ? ConstructorParameters<T>[0] extends EventType\n ? InstanceType<T> extends SourceType\n ? InstanceType<T> extends DestroyableType\n ? SourceType<EventTypeValue<ConstructorParameters<T>[0]>> &\n DestroyableType\n : SourceType<EventTypeValue<ConstructorParameters<T>[0]>>\n : InstanceType<T> extends DestroyableType\n ? EventType<EventTypeValue<ConstructorParameters<T>[0]>> &\n DestroyableType\n : EventType<EventTypeValue<ConstructorParameters<T>[0]>>\n : InstanceType<T>\n : R extends EventType\n ? R\n : EventType<R> {\n return (...args) => new classConstructor(...args);\n}\n","import { DestroyableType } from \"types/EventType\";\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\nclass DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n\n public add<R extends DestroyableType>(e: R): R {\n this.destructors.push(e);\n return e;\n }\n\n public destroy() {\n this.destructors.forEach((d) => d.destroy());\n return this;\n }\n}\n","import { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\nexport function isEvent<T>(o: T): o is T & EventType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"event\" in o &&\n typeof (o as any).event === \"function\"\n );\n}\n\nexport function isDestroyable<T>(o: T): o is T & DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\nexport function isTransport<T>(o: T): o is T & TransportType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n","import { isEvent, isTransport } 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 ensureEvent(v: unknown, label: string) {\n if (!isEvent(v)) {\n throw new Error(`${label}: is not event`);\n }\n}\n\nexport function ensureTransport(v: unknown, label: string) {\n if (!isTransport(v)) {\n throw new Error(`${label}: is not transport`);\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype EventExecutor<T> = (transport: TransportType<T>) => void | (() => void);\n\n/**\n * An event created from an executor function.\n * The executor function can return an event destruction function.\n */\nexport function Event<T>(eventExecutor: EventExecutor<T>) {\n return new EventImpl<T>(eventExecutor);\n}\n\nclass EventImpl<T> implements EventType<T>, DestroyableType {\n private mbDestructor: unknown;\n\n public constructor(private eventExecutor: EventExecutor<T>) {\n ensureFunction(eventExecutor, \"Event: eventExecutor\");\n }\n\n public event(transport: TransportType<T>) {\n this.mbDestructor = this.eventExecutor(transport);\n return this;\n }\n\n public destroy() {\n if (typeof this.mbDestructor === \"function\") {\n this.mbDestructor?.();\n }\n return this;\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Type of value transfer logic executor\n */\nexport type TransportExecutor<T> = (v: T) => void;\n\n/**\n * Base transport that accepts the passed value,\n * acts as a conductor to deliver the value from an event to somewhere\n */\nexport function Transport<T>(transportExecutor: TransportExecutor<T>) {\n return new TransportImpl<T>(transportExecutor);\n}\n\nclass TransportImpl<T> implements TransportType<T> {\n public constructor(private transportExecutor: TransportExecutor<T>) {\n ensureFunction(transportExecutor, \"Transport: transport executor\");\n }\n\n public use(value: T) {\n this.transportExecutor(value);\n return this;\n }\n}\n\n/**\n * Type of executor for value passing logic and event returning\n */\nexport type TransportEventExecutor<T, ET = T> = (v: T) => EventType<ET>;\n\n/**\n * A transport that delivers a value from one event\n * and returns another event based on the value\n */\nexport function TransportEvent<T, ET = any>(\n transportExecutor: TransportEventExecutor<T, ET>,\n) {\n return new TransportEventImpl<T, ET>(transportExecutor);\n}\n\nclass TransportEventImpl<T, ET = T> implements TransportType<T, EventType<ET>> {\n public constructor(private executor: TransportEventExecutor<T, ET>) {\n ensureFunction(executor, \"TransportEvent: transport executor\");\n }\n\n public use(value: T) {\n return this.executor(value);\n }\n}\n\n/**\n * A transport that accepts a child transport\n * to perform some transformation on the value\n * during its transmission\n */\nexport function TransportParent<T>(\n executor: (this: TransportType, v: T, ...context: any[]) => void,\n ...args: any[]\n) {\n return new TransportParentImpl<T>(executor, args);\n}\n\nclass TransportParentImpl<T> implements TransportType<T> {\n public constructor(\n private executor: (this: TransportType, v: T, ...context: any[]) => void,\n private args: any[] = [],\n private _child?: TransportType<T>,\n ) {\n ensureFunction(executor, \"TransportParent: executor\");\n }\n\n public use(value: T): this {\n if (this._child === undefined) {\n throw new Error(\"no base transport\");\n }\n this.executor.call(this._child, value, ...this.args);\n return this;\n }\n\n public child(transport: TransportType, ...args: any[]) {\n return new TransportParentImpl(\n this.executor,\n [...this.args, ...args],\n transport,\n );\n }\n}\n","import { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ensureEvent } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>($base: EventType<T>) {\n return new LocalEvent<T>($base);\n}\n\nclass LocalEvent<T> implements EventType<T>, DestroyableType {\n private destroyed = false;\n\n public constructor(private $base: EventType<T>) {\n ensureEvent($base, \"Local: $base\");\n }\n\n public event(transport: TransportType<T>): this {\n this.$base.event(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (v: T, child: LocalEvent<T>) {\n if (!child.destroyed) {\n this.use(v);\n }\n }, this);\n\n public destroy(): this {\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Helps convert a value into an event\n */\nexport function Of<T>(value: T) {\n return new OfEvent<T>(value);\n}\n\nclass OfEvent<T> implements EventType<T> {\n public constructor(private value: T) {}\n\n public event(transport: TransportType<T>): this {\n transport.use(this.value);\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\n\n/**\n * Transport that does nothing with the passed value,\n * needed for silent event triggering\n */\nexport function Void() {\n return new VoidImpl();\n}\n\nclass VoidImpl implements TransportType {\n public use(): this {\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { TransportType } from \"types/TransportType\";\nimport { ensureEvent } from \"helpers/ensures\";\n\ntype ExtractTypeS<T> = T extends EventType<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends EventType<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * An event that represents values from\n * all provided events as an array.\n * When all events emit their values,\n * the combined value will be returned.\n * If at least one event later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n */\nexport function All<const T extends EventType[]>(...events: T) {\n return new AllEvent<T>(...events);\n}\n\nclass AllEvent<const T extends EventType[]>\n implements EventType<ExtractTypesFromArrayS<T>>\n{\n private known: Set<string>;\n private filled = new Set<string>();\n private $events: T;\n private result: unknown[] = [];\n\n public constructor(...events: T) {\n this.known = new Set<string>(Object.keys(events));\n this.$events = events;\n }\n\n public event(transport: TransportType<ExtractTypesFromArrayS<T>>): this {\n Object.entries(this.$events).forEach(([key, event]) => {\n ensureEvent(event, \"All: item\");\n event.event(this.transport.child(transport, key));\n });\n if (this.known.size === 0) {\n transport.use([] as ExtractTypesFromArrayS<T>);\n }\n return this;\n }\n\n private transport = TransportParent(function (\n v: unknown,\n child: AllEvent<T>,\n key: string,\n ) {\n child.filled.add(key);\n child.result[parseInt(key)] = v;\n if (isAllFilled(child.filled, child.known)) {\n this.use(child.result as ExtractTypesFromArrayS<T>);\n }\n }, this);\n}\n","import { ensureEvent } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event that emits values received from\n * any of its bound events\n */\nexport function Any<const T>(...events: EventType<T>[]) {\n return new AnyEvent<T>(...events);\n}\n\nclass AnyEvent<T> implements EventType<T> {\n private $events: EventType<T>[];\n\n public constructor(...events: EventType<T>[]) {\n this.$events = events;\n }\n\n public event(transport: TransportType<T>): this {\n this.$events.forEach((event) => {\n ensureEvent(event, \"Any: item\");\n event.event(transport);\n });\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ensureEvent } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event that applies a function\n * to the value of the base event\n */\nexport function Applied<const T, R>(\n $base: EventType<T>,\n applier: ConstructorType<[T], R>,\n) {\n return new AppliedEvent<T, R>($base, applier);\n}\n\nclass AppliedEvent<T, R> implements EventType<R> {\n public constructor(\n private $base: EventType<T>,\n private applier: ConstructorType<[T], R>,\n ) {\n ensureEvent($base, \"Applied: base\");\n }\n\n public event(transport: TransportType<R>) {\n this.$base.event(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (\n v: T,\n child: AppliedEvent<T, R>,\n ) {\n this.use(child.applier(v));\n }, this);\n}\n","import { ensureEvent, ensureTransport } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event representing a base event where\n * its operation is wrapped in try-catch\n * and expects exceptions. If an exception\n * bubbles up, it's passed to the transports\n * as errorMessage and errorOriginal\n */\nexport function Catch<T>(\n $base: EventType<T>,\n errorMessage: TransportType,\n errorOriginal?: TransportType,\n) {\n return new CatchEvent<T>($base, errorMessage, errorOriginal);\n}\n\nclass CatchEvent<T> implements EventType<T> {\n public constructor(\n private $base: EventType<T>,\n private errorMessage: TransportType,\n private errorOriginal?: TransportType,\n ) {\n ensureEvent($base, \"Catch: base\");\n ensureTransport(errorMessage, \"Catch: errorMessage\");\n if (errorOriginal !== undefined) {\n ensureTransport(errorOriginal, \"Catch: errorOriginal\");\n }\n }\n\n public event(transport: TransportType<T>) {\n try {\n this.$base.event(transport);\n } catch (e: unknown) {\n if (e instanceof Error) {\n this.errorMessage.use(e.message);\n } else {\n this.errorMessage.use(String(e));\n }\n if (this.errorOriginal) {\n this.errorOriginal.use(e);\n }\n }\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\nimport { TransportParent } from \"base/Transport\";\nimport { EventType, EventTypeValue } from \"types/EventType\";\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 events together and triggers\n * the last event only when all previous events\n * have emitted their values. The value of Chain will be the value\n * of the last event. If any events\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last event.\n */\nexport function Chain<T extends readonly EventType[]>(...events: T) {\n return new ChainEvent<T>(...events);\n}\n\nexport class ChainEvent<T extends readonly EventType[]>\n implements EventType<EventTypeValue<Last<T>>>\n{\n private $events: T;\n private $latest: EventTypeValue<Last<T>> | undefined;\n\n public constructor(...events: T) {\n this.$events = events;\n }\n\n public event(transport: TransportType<EventTypeValue<Last<T>>>) {\n this.handleEvent(0, transport);\n return this;\n }\n\n private handleEvent = (index: number, transport: TransportType) => {\n const event = this.$events[index] as Last<T>;\n const next = this.$events[index + 1] as Last<T> | undefined;\n event.event(this.oneEventTransport.child(transport, next, index));\n };\n\n private oneEventTransport = TransportParent(function (\n v: EventTypeValue<Last<T>>,\n child: ChainEvent<T>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n child.$latest = v as EventTypeValue<Last<T>>;\n }\n if (child.$latest) {\n this.use(child.$latest);\n }\n if (next && !child.$latest) {\n child.handleEvent(index + 1, this);\n }\n }, this);\n}\n","import { Transport, TransportExecutor } from \"base/Transport\";\nimport { ensureEvent } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype ExecutorApplier<T> = (\n executor: TransportExecutor<T>,\n) => TransportExecutor<T>;\n\n/**\n * Applies a value transfer function to the transport\n * and returns the same value transfer function for the transport\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: EventType<T>,\n applier: ExecutorApplier<T>,\n) {\n return new ExecutorAppliedEvent<T>($base, applier);\n}\n\nclass ExecutorAppliedEvent<T> implements EventType<T> {\n public constructor(\n private $base: EventType<T>,\n private applier: ExecutorApplier<T>,\n ) {\n ensureEvent($base, \"ExecutorApplied: base\");\n }\n\n public event(transport: TransportType<T>) {\n const ExecutorAppliedBaseTransport = this.applier(\n transport.use.bind(transport),\n );\n this.$base.event(Transport(ExecutorAppliedBaseTransport));\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Filters values from the source event based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n $base: EventType<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): EventType<T> {\n return new FilteredEvent<T>($base, predicate, defaultValue);\n}\n\nclass FilteredEvent<T> implements EventType<T> {\n public constructor(\n private $base: EventType<T>,\n private predicate: ConstructorType<[T], boolean>,\n private defaultValue?: T,\n ) {}\n\n public event(transport: TransportType<T>) {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child: FilteredEvent<T>) {\n if (child.predicate(v)) {\n this.use(v);\n } else if (child.defaultValue !== undefined) {\n this.use(child.defaultValue);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport, TransportParent } from \"base/Transport\";\nimport { DestroyableType, EventType } from \"types/EventType\";\nimport { All } from \"components/All\";\n\n/**\n * An event derived from another 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 event\n */\nexport function FromEvent<T>(\n $emitter: EventType<any>,\n $eventName: EventType<string>,\n $subscribeMethod: EventType<string>,\n $unsubscribeMethod?: EventType<string>,\n) {\n return new FromEventAdapter<T>(\n $emitter,\n $eventName,\n $subscribeMethod,\n $unsubscribeMethod,\n );\n}\n\nclass FromEventAdapter<T> implements EventType<T>, DestroyableType {\n private lastTransport: TransportType<T> | null = null;\n private handler = (v: T) => {\n if (this.lastTransport) {\n this.lastTransport.use(v);\n }\n };\n\n public constructor(\n private $emitter: EventType<any>,\n private $eventName: EventType<string>,\n private $subscribeMethod: EventType<string>,\n private $unsubscribeMethod?: EventType<string>,\n ) {}\n\n public event(transport: TransportType<T>): this {\n All(this.$emitter, this.$eventName, this.$subscribeMethod).event(\n this.parent.child(transport),\n );\n return this;\n }\n\n private parent = TransportParent<[any, string, string]>(function (\n [emitter, eventName, subscribe],\n child,\n ) {\n child.lastTransport = this;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, child.handler);\n }, this);\n\n public destroy(): this {\n this.lastTransport = null;\n if (!this.$unsubscribeMethod) {\n return this;\n }\n All(this.$emitter, this.$eventName, this.$unsubscribeMethod).event(\n Transport(([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe]?.(eventName, this.handler);\n }),\n );\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates an event from a Promise, allowing the promise's resolution or rejection\n * to be handled as an event. The resolved value is emitted to the transport,\n * and if an error is provided, rejections are forwarded to it.\n */\nexport function FromPromise<T>(p: Promise<T>, error?: TransportType) {\n return new FromPromiseEvent<T>(p, error);\n}\n\nexport class FromPromiseEvent<T> implements EventType<T> {\n public constructor(\n private p: Promise<T>,\n private error?: TransportType,\n ) {}\n\n public event(transport: TransportType<T>): this {\n this.p\n .then((v) => {\n transport.use(v);\n })\n .catch((e) => {\n this.error?.use(e);\n });\n return this;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { isFilled } from \"helpers/guards\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport function Late<T>(v?: T) {\n return new LateEvent<T>(v);\n}\n\nclass LateEvent<T> implements SourceType<T> {\n private lateTransport: TransportType<T> | null = null;\n private notify = (v?: T) => {\n if (isFilled(v) && this.lateTransport) {\n this.lateTransport.use(v);\n }\n };\n\n public constructor(private v?: T) {}\n\n public event(transport: TransportType<T>): this {\n if (this.lateTransport) {\n throw new Error(\n \"Late component gets new transport, when another was already connected!\",\n );\n }\n this.lateTransport = transport;\n this.notify(this.v);\n return this;\n }\n\n public use(value: T): this {\n this.notify(value);\n return this;\n }\n}\n","import { TransportParent } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\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 */\nexport function Once<T>($base: EventType<T>) {\n return new OnceEvent<T>($base);\n}\n\nclass OnceEvent<T> implements EventType<T> {\n private isFilled = false;\n\n public constructor(private $base: EventType<T>) {}\n\n public event(transport: TransportType<T>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n if (!child.isFilled) {\n child.isFilled = true;\n this.use(v);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport } from \"base/Transport\";\n\n/**\n * Helps maintain an owner list allowing different\n * owners to get information from a common source\n * https://silentium-lab.github.io/silentium/#/en/utils/owner-pool\n */\nexport class OwnerPool<T> {\n private owners: Set<TransportType<T>>;\n private innerOwner: TransportType<T>;\n\n public constructor() {\n this.owners = new Set<TransportType<T>>();\n this.innerOwner = Transport((v) => {\n this.owners.forEach((g) => {\n g.use(v);\n });\n });\n }\n\n public owner() {\n return this.innerOwner;\n }\n\n public size(): number {\n return this.owners.size;\n }\n\n public has(owner: TransportType<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(owner: TransportType<T>) {\n this.owners.add(owner);\n return this;\n }\n\n public remove(g: TransportType<T>) {\n this.owners.delete(g);\n return this;\n }\n\n public destroy() {\n this.owners.forEach((g) => {\n this.remove(g);\n });\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { Late } from \"components/Late\";\nimport { Once } from \"components/Once\";\nimport { SourceType } from \"types/SourceType\";\nimport { OwnerPool } from \"helpers/OwnerPool\";\nimport { TransportType } from \"types/TransportType\";\nimport { isFilled } from \"helpers/guards\";\nimport { Transport } from \"base/Transport\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n */\nexport function Shared<T>($base: EventType<T>, stateless = false) {\n return new SharedEvent<T>($base, stateless);\n}\n\nclass SharedEvent<T> implements SourceType<T> {\n private ownersPool = new OwnerPool<T>();\n private lastValue: T | undefined;\n private calls = Late();\n\n public constructor(\n private $base: EventType<T>,\n private stateless = false,\n ) {\n Once(this.calls).event(\n Transport(() => {\n this.$base.event(this.firstCallTransport);\n }),\n );\n }\n\n public event(transport: TransportType<T>) {\n this.calls.use(1);\n if (\n !this.stateless &&\n isFilled(this.lastValue) &&\n !this.ownersPool.has(transport)\n ) {\n transport.use(this.lastValue);\n }\n this.ownersPool.add(transport);\n return this;\n }\n\n public use(value: T) {\n this.calls.use(1);\n this.lastValue = value;\n this.ownersPool.owner().use(value);\n return this;\n }\n\n private firstCallTransport = Transport<T>((v: T) => {\n this.lastValue = v;\n this.ownersPool.owner().use(v);\n });\n\n public touched() {\n this.calls.use(1);\n }\n\n public pool() {\n return this.ownersPool;\n }\n\n public destroy() {\n return this.ownersPool.destroy();\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Shared } from \"components/Shared\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a shared source that allows multiple transports to subscribe to the same underlying source.\n * The stateless parameter controls whether the sharing maintains state or not.\n */\nexport function SharedSource<T>($base: SourceType<T>, stateless = false) {\n return new SharedSourceEvent<T>($base, stateless);\n}\n\nclass SharedSourceEvent<T> implements SourceType<T> {\n private $sharedBase: SourceType<T> & { touched: () => void };\n\n public constructor(\n private $base: SourceType<T>,\n stateless = false,\n ) {\n this.$sharedBase = Shared(this.$base, stateless);\n }\n\n public event(transport: TransportType<T>) {\n this.$sharedBase.event(transport);\n return this;\n }\n\n public use(value: T) {\n this.$sharedBase.touched();\n this.$base.use(value);\n return this;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Late } from \"components/Late\";\nimport { SharedSource } from \"components/SharedSource\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event with a value that will be set later,\n * capable of responding to different transports\n */\nexport function LateShared<T>(value?: T) {\n return new LateSharedEvent<T>(value);\n}\n\nclass LateSharedEvent<T> implements SourceType<T> {\n private $event: SourceType<T>;\n\n public constructor(value?: T) {\n this.$event = SharedSource(Late(value));\n }\n\n public event(transport: TransportType<T>) {\n this.$event.event(transport);\n return this;\n }\n\n public use(value: T) {\n this.$event.use(value);\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { All } from \"components/All\";\nimport { TransportType } from \"types/TransportType\";\nimport { isEvent } from \"helpers/guards\";\nimport { TransportParent } from \"base/Transport\";\nimport { Of } from \"base/Of\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n */\nexport function Map<T, TG>(\n $base: EventType<T[]>,\n $target: TransportType<any, EventType<TG>>,\n) {\n return new MapEvent<T, TG>($base, $target);\n}\n\nclass MapEvent<T, TG> implements EventType<TG[]> {\n public constructor(\n private $base: EventType<T[]>,\n private $target: TransportType<any, EventType<TG>>,\n ) {}\n\n public event(transport: TransportType<TG[]>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v, child) {\n const infos: EventType<TG>[] = [];\n v.forEach((val) => {\n let $val: EventType<T> | T = val;\n if (!isEvent($val as object)) {\n $val = Of($val);\n }\n const info = child.$target.use($val);\n infos.push(info);\n });\n All(...infos).event(this);\n }, this);\n}\n","import { Transport } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\n\n/**\n * Helps represent an event 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 */\nexport function Primitive<T>($base: EventType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nclass PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: EventType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n this.$base.event(\n Transport((v) => {\n this.theValue = v;\n }),\n );\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 { TransportParent } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\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: EventType<T>) {\n return new SequenceEvent<T>($base);\n}\n\nclass SequenceEvent<T> implements EventType<T[]> {\n private result: T[] = [];\n\n public constructor(private $base: EventType<T>) {}\n\n public event(transport: TransportType<T[]>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n child.result.push(v);\n this.use(child.result);\n }, this);\n}\n","import { TransportParent } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>($base: EventType<T[]>) {\n return new StreamEvent<T>($base);\n}\n\nclass StreamEvent<T> implements EventType<T> {\n public constructor(private $base: EventType<T[]>) {}\n\n public event(transport: TransportType<T>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v) {\n v.forEach((cv) => {\n this.use(cv);\n });\n });\n}\n","import { ConstructorType } from \"types/ConstructorType\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that applies a constructor to the result of another transport.\n */\nexport function TransportApplied<T>(\n baseTransport: TransportType<any, EventType<T>>,\n applier: ConstructorType<[EventType], EventType<T>>,\n) {\n return new TransportAppliedImpl(baseTransport, applier);\n}\n\nexport class TransportAppliedImpl<T>\n implements TransportType<unknown, EventType<T>>\n{\n public constructor(\n private baseTransport: TransportType<any, EventType<T>>,\n private applier: ConstructorType<[EventType], EventType<T>>,\n ) {}\n\n public use(args: unknown) {\n return this.applier(this.baseTransport.use(args));\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that merges additional arguments into the base transport's arguments\n * at a specified index position, allowing for flexible argument composition\n */\nexport function TransportArgs(\n baseTransport: TransportType<any[], EventType>,\n args: unknown[],\n startFromArgIndex: number = 0,\n) {\n return new TransportArgsImpl(baseTransport, args, startFromArgIndex);\n}\n\nexport class TransportArgsImpl\n implements TransportType<unknown[], EventType<unknown>>\n{\n public constructor(\n private baseTransport: TransportType<any[], EventType>,\n private args: unknown[],\n private startFromArgIndex: number = 0,\n ) {}\n\n public use(runArgs: unknown[]): EventType<unknown> {\n return this.baseTransport.use(\n mergeAtIndex(runArgs, this.args, this.startFromArgIndex),\n );\n }\n}\n\nfunction mergeAtIndex(arr1: unknown[], arr2: unknown[], index: number) {\n const result = arr1.slice(0, index);\n while (result.length < index) result.push(undefined);\n return result.concat(arr2);\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport wrapper that automatically manages destruction of created instances\n */\nexport function TransportDestroyable<T>(\n baseTransport: TransportType<any[], EventType<T>>,\n) {\n return new TransportDestroyableEvent<T>(baseTransport);\n}\n\nclass TransportDestroyableEvent<T>\n implements TransportType<unknown, EventType<T>>, DestroyableType\n{\n private destructors: DestroyableType[] = [];\n\n public constructor(\n private baseTransport: TransportType<any[], EventType<T>>,\n ) {}\n\n public use(args: any[]) {\n const inst = this.baseTransport.use(args);\n if (isDestroyable(inst)) {\n this.destructors.push(inst);\n }\n return inst;\n }\n\n public destroy(): this {\n this.destructors.forEach((i) => i.destroy());\n return this;\n }\n}\n","import { Transport } from \"base/Transport\";\nimport { LateShared } from \"components/LateShared\";\nimport { EventType } from \"types/EventType\";\nimport { RPCType } from \"types/RPCType\";\nimport { SourceType } from \"types/SourceType\";\n\ninterface RPCImplType<T> {\n result(): EventType<T>;\n error(): EventType<Error | string>;\n}\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * RPCType, the list of transports should be defined via\n * the RPC.transport object\n */\nexport function RPC<T>($rpc: EventType<RPCType>): RPCImplType<T> {\n return new RPCImpl($rpc);\n}\n\nRPC.transport = {} as { default: SourceType<RPCType> } & Record<\n string,\n SourceType<RPCType>\n>;\n\nclass RPCImpl {\n private $result = LateShared();\n private $error = LateShared();\n\n public constructor(private $rpc: EventType<RPCType>) {}\n\n public result() {\n this.$rpc.event(\n Transport((rpc) => {\n const transport =\n rpc.transport === undefined\n ? RPC.transport.default\n : RPC.transport[rpc.transport] || RPC.transport.default;\n if (!transport) {\n throw new Error(`RPCImpl: Transport not found ${rpc.transport}`);\n }\n if (!rpc.result) {\n rpc.result = this.$result;\n }\n if (!rpc.error) {\n rpc.error = this.$error;\n }\n transport.use(rpc);\n }),\n );\n return this.$result;\n }\n\n public error() {\n return this.$error;\n }\n}\n","import { Filtered } from \"components/Filtered\";\nimport { EventType } from \"types/EventType\";\nimport { RPCType } from \"types/RPCType\";\n\n/**\n * Event for the arrival of a specific RPC message\n * for specific transport\n */\nexport function RPCOf($rpc: EventType<RPCType>, transport: string) {\n return Filtered($rpc, (rpc) => rpc.transport === transport);\n}\n"],"names":["__publicField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.cjs","sources":["../src/base/Component.ts","../src/base/ComponentClass.ts","../src/base/DestroyContainer.ts","../src/helpers/guards.ts","../src/helpers/ensures.ts","../src/base/Event.ts","../src/base/Transport.ts","../src/base/Local.ts","../src/base/Of.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/FromEvent.ts","../src/components/FromPromise.ts","../src/components/Late.ts","../src/components/Once.ts","../src/helpers/OwnerPool.ts","../src/components/Shared.ts","../src/components/SharedSource.ts","../src/components/Primitive.ts","../src/components/LateShared.ts","../src/components/Map.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/TransportApplied.ts","../src/components/TransportArgs.ts","../src/components/TransportDestroyable.ts","../src/components/RPC.ts","../src/components/RPCOf.ts"],"sourcesContent":["import { DestroyableType, EventType, EventTypeValue } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Create a function component that\n * will emit an event with specified arguments\n * and specified type\n */\nexport function Component<T, P extends Array<any>>(\n executor: (\n this: TransportType<P[0] extends EventType ? EventTypeValue<P[0]> : T>,\n ...args: P\n ) => void | (() => void),\n): (\n ...args: P\n) => (P[0] extends EventType ? EventType<EventTypeValue<P[0]>> : EventType<T>) &\n DestroyableType {\n return (...args) => {\n let destructor: void | (() => void);\n return {\n event(\n transport: TransportType<\n P[0] extends EventType ? EventTypeValue<P[0]> : T\n >,\n ) {\n destructor = executor.call(transport, ...args);\n return this;\n },\n destroy() {\n if (destructor !== undefined) {\n destructor();\n }\n return this;\n },\n } as any;\n };\n}\n","import { DestroyableType, EventType, EventTypeValue } from \"types/EventType\";\nimport { SourceType } from \"types/SourceType\";\n\ntype ConstructableType = { new (...args: any[]): any };\n\n/**\n * Creates a type-safe factory function for instantiating components with proper interface inference\n * Automatically determines return types based on whether the class implements SourceType, EventType, and DestroyableType\n */\nexport function ComponentClass<T extends ConstructableType>(\n classConstructor: T,\n): <R = null>(\n ...args: ConstructorParameters<T>\n) => R extends null\n ? ConstructorParameters<T>[0] extends EventType\n ? InstanceType<T> extends SourceType\n ? InstanceType<T> extends DestroyableType\n ? SourceType<EventTypeValue<ConstructorParameters<T>[0]>> &\n DestroyableType\n : SourceType<EventTypeValue<ConstructorParameters<T>[0]>>\n : InstanceType<T> extends DestroyableType\n ? EventType<EventTypeValue<ConstructorParameters<T>[0]>> &\n DestroyableType\n : EventType<EventTypeValue<ConstructorParameters<T>[0]>>\n : InstanceType<T>\n : R extends EventType\n ? R\n : EventType<R> {\n return (...args) => new classConstructor(...args);\n}\n","import { DestroyableType } from \"types/EventType\";\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\n public add<R extends DestroyableType>(e: R): R {\n this.destructors.push(e);\n return e;\n }\n\n public destroy() {\n this.destructors.forEach((d) => d.destroy());\n return this;\n }\n}\n","import { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\nexport function isEvent<T>(o: T): o is T & EventType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"event\" in o &&\n typeof (o as any).event === \"function\"\n );\n}\n\nexport function isDestroyable<T>(o: T): o is T & DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\nexport function isTransport<T>(o: T): o is T & TransportType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n","import { isEvent, isTransport } 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 ensureEvent(v: unknown, label: string) {\n if (!isEvent(v)) {\n throw new Error(`${label}: is not event`);\n }\n}\n\nexport function ensureTransport(v: unknown, label: string) {\n if (!isTransport(v)) {\n throw new Error(`${label}: is not transport`);\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype EventExecutor<T> = (transport: TransportType<T>) => void | (() => void);\n\n/**\n * An event created from an executor function.\n * The executor function can return an event destruction function.\n */\nexport function Event<T>(eventExecutor: EventExecutor<T>) {\n return new EventImpl<T>(eventExecutor);\n}\n\nexport class EventImpl<T> implements EventType<T>, DestroyableType {\n private mbDestructor: unknown;\n\n public constructor(private eventExecutor: EventExecutor<T>) {\n ensureFunction(eventExecutor, \"Event: eventExecutor\");\n }\n\n public event(transport: TransportType<T>) {\n this.mbDestructor = this.eventExecutor(transport);\n return this;\n }\n\n public destroy() {\n if (typeof this.mbDestructor === \"function\") {\n this.mbDestructor?.();\n }\n return this;\n }\n}\n","import { ensureFunction } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Type of value transfer logic executor\n */\nexport type TransportExecutor<T> = (v: T) => void;\n\n/**\n * Base transport that accepts the passed value,\n * acts as a conductor to deliver the value from an event to somewhere\n */\nexport function Transport<T>(transportExecutor: TransportExecutor<T>) {\n return new TransportImpl<T>(transportExecutor);\n}\n\nclass TransportImpl<T> implements TransportType<T> {\n public constructor(private transportExecutor: TransportExecutor<T>) {\n ensureFunction(transportExecutor, \"Transport: transport executor\");\n }\n\n public use(value: T) {\n this.transportExecutor(value);\n return this;\n }\n}\n\n/**\n * Type of executor for value passing logic and event returning\n */\nexport type TransportEventExecutor<T, ET = T> = (v: T) => EventType<ET>;\n\n/**\n * A transport that delivers a value from one event\n * and returns another event based on the value\n */\nexport function TransportEvent<T, ET = any>(\n transportExecutor: TransportEventExecutor<T, ET>,\n) {\n return new TransportEventImpl<T, ET>(transportExecutor);\n}\n\nclass TransportEventImpl<T, ET = T> implements TransportType<T, EventType<ET>> {\n public constructor(private executor: TransportEventExecutor<T, ET>) {\n ensureFunction(executor, \"TransportEvent: transport executor\");\n }\n\n public use(value: T) {\n return this.executor(value);\n }\n}\n\n/**\n * A transport that accepts a child transport\n * to perform some transformation on the value\n * during its transmission\n */\nexport function TransportParent<T>(\n executor: (this: TransportType, v: T, ...context: any[]) => void,\n ...args: any[]\n) {\n return new TransportParentImpl<T>(executor, args);\n}\n\nexport class TransportParentImpl<T> implements TransportType<T> {\n public constructor(\n private executor: (this: TransportType, v: T, ...context: any[]) => void,\n private args: any[] = [],\n private _child?: TransportType<T>,\n ) {\n ensureFunction(executor, \"TransportParent: executor\");\n }\n\n public use(value: T): this {\n if (this._child === undefined) {\n throw new Error(\"no base transport\");\n }\n this.executor.call(this._child, value, ...this.args);\n return this;\n }\n\n public child(transport: TransportType, ...args: any[]) {\n return new TransportParentImpl(\n this.executor,\n [...this.args, ...args],\n transport,\n );\n }\n}\n","import { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ensureEvent } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>($base: EventType<T>) {\n return new LocalEvent<T>($base);\n}\n\nexport class LocalEvent<T> implements EventType<T>, DestroyableType {\n private destroyed = false;\n\n public constructor(private $base: EventType<T>) {\n ensureEvent($base, \"Local: $base\");\n }\n\n public event(transport: TransportType<T>): this {\n this.$base.event(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (v: T, child: LocalEvent<T>) {\n if (!child.destroyed) {\n this.use(v);\n }\n }, this);\n\n public destroy(): this {\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Helps convert a value into an event\n */\nexport function Of<T>(value: T) {\n return new OfEvent<T>(value);\n}\n\nexport class OfEvent<T> implements EventType<T> {\n public constructor(private value: T) {}\n\n public event(transport: TransportType<T>): this {\n transport.use(this.value);\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\n\n/**\n * Transport that does nothing with the passed value,\n * needed for silent event triggering\n */\nexport function Void() {\n return new VoidImpl();\n}\n\nexport class VoidImpl implements TransportType {\n public use(): this {\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { TransportType } from \"types/TransportType\";\nimport { ensureEvent } from \"helpers/ensures\";\n\ntype ExtractTypeS<T> = T extends EventType<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends EventType<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * An event that represents values from\n * all provided events as an array.\n * When all events emit their values,\n * the combined value will be returned.\n * If at least one event later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n */\nexport function All<const T extends EventType[]>(...events: T) {\n return new AllEvent<T>(...events);\n}\n\nexport class AllEvent<const T extends EventType[]>\n implements EventType<ExtractTypesFromArrayS<T>>\n{\n private known: Set<string>;\n private filled = new Set<string>();\n private $events: T;\n private result: unknown[] = [];\n\n public constructor(...events: T) {\n this.known = new Set<string>(Object.keys(events));\n this.$events = events;\n }\n\n public event(transport: TransportType<ExtractTypesFromArrayS<T>>): this {\n Object.entries(this.$events).forEach(([key, event]) => {\n ensureEvent(event, \"All: item\");\n event.event(this.transport.child(transport, key));\n });\n if (this.known.size === 0) {\n transport.use([] as ExtractTypesFromArrayS<T>);\n }\n return this;\n }\n\n private transport = TransportParent(function (\n v: unknown,\n child: AllEvent<T>,\n key: string,\n ) {\n child.filled.add(key);\n child.result[parseInt(key)] = v;\n if (isAllFilled(child.filled, child.known)) {\n this.use(child.result as ExtractTypesFromArrayS<T>);\n }\n }, this);\n}\n","import { ensureEvent } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event that emits values received from\n * any of its bound events\n */\nexport function Any<const T>(...events: EventType<T>[]) {\n return new AnyEvent<T>(...events);\n}\n\nexport class AnyEvent<T> implements EventType<T> {\n private $events: EventType<T>[];\n\n public constructor(...events: EventType<T>[]) {\n this.$events = events;\n }\n\n public event(transport: TransportType<T>): this {\n this.$events.forEach((event) => {\n ensureEvent(event, \"Any: item\");\n event.event(transport);\n });\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ensureEvent } from \"helpers/ensures\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event that applies a function\n * to the value of the base event\n */\nexport function Applied<const T, R>(\n $base: EventType<T>,\n applier: ConstructorType<[T], R>,\n) {\n return new AppliedEvent<T, R>($base, applier);\n}\n\nexport class AppliedEvent<T, R> implements EventType<R> {\n public constructor(\n private $base: EventType<T>,\n private applier: ConstructorType<[T], R>,\n ) {\n ensureEvent($base, \"Applied: base\");\n }\n\n public event(transport: TransportType<R>) {\n this.$base.event(this.transport.child(transport));\n return this;\n }\n\n private transport = TransportParent(function (\n v: T,\n child: AppliedEvent<T, R>,\n ) {\n this.use(child.applier(v));\n }, this);\n}\n","import { ensureEvent, ensureTransport } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * An event representing a base event where\n * its operation is wrapped in try-catch\n * and expects exceptions. If an exception\n * bubbles up, it's passed to the transports\n * as errorMessage and errorOriginal\n */\nexport function Catch<T>(\n $base: EventType<T>,\n errorMessage: TransportType,\n errorOriginal?: TransportType,\n) {\n return new CatchEvent<T>($base, errorMessage, errorOriginal);\n}\n\nexport class CatchEvent<T> implements EventType<T> {\n public constructor(\n private $base: EventType<T>,\n private errorMessage: TransportType,\n private errorOriginal?: TransportType,\n ) {\n ensureEvent($base, \"Catch: base\");\n ensureTransport(errorMessage, \"Catch: errorMessage\");\n if (errorOriginal !== undefined) {\n ensureTransport(errorOriginal, \"Catch: errorOriginal\");\n }\n }\n\n public event(transport: TransportType<T>) {\n try {\n this.$base.event(transport);\n } catch (e: unknown) {\n if (e instanceof Error) {\n this.errorMessage.use(e.message);\n } else {\n this.errorMessage.use(String(e));\n }\n if (this.errorOriginal) {\n this.errorOriginal.use(e);\n }\n }\n return this;\n }\n}\n","import { TransportType } from \"types/TransportType\";\nimport { TransportParent } from \"base/Transport\";\nimport { EventType, EventTypeValue } from \"types/EventType\";\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 events together and triggers\n * the last event only when all previous events\n * have emitted their values. The value of Chain will be the value\n * of the last event. If any events\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last event.\n */\nexport function Chain<T extends readonly EventType[]>(...events: T) {\n return new ChainEvent<T>(...events);\n}\n\nexport class ChainEvent<T extends readonly EventType[]>\n implements EventType<EventTypeValue<Last<T>>>\n{\n private $events: T;\n private $latest: EventTypeValue<Last<T>> | undefined;\n\n public constructor(...events: T) {\n this.$events = events;\n }\n\n public event(transport: TransportType<EventTypeValue<Last<T>>>) {\n this.handleEvent(0, transport);\n return this;\n }\n\n private handleEvent = (index: number, transport: TransportType) => {\n const event = this.$events[index] as Last<T>;\n const next = this.$events[index + 1] as Last<T> | undefined;\n event.event(this.oneEventTransport.child(transport, next, index));\n };\n\n private oneEventTransport = TransportParent(function (\n v: EventTypeValue<Last<T>>,\n child: ChainEvent<T>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n child.$latest = v as EventTypeValue<Last<T>>;\n }\n if (child.$latest) {\n this.use(child.$latest);\n }\n if (next && !child.$latest) {\n child.handleEvent(index + 1, this);\n }\n }, this);\n}\n","import { Transport, TransportExecutor } from \"base/Transport\";\nimport { ensureEvent } from \"helpers/ensures\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\ntype ExecutorApplier<T> = (\n executor: TransportExecutor<T>,\n) => TransportExecutor<T>;\n\n/**\n * Applies a value transfer function to the transport\n * and returns the same value transfer function for the transport\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: EventType<T>,\n applier: ExecutorApplier<T>,\n) {\n return new ExecutorAppliedEvent<T>($base, applier);\n}\n\nexport class ExecutorAppliedEvent<T> implements EventType<T> {\n public constructor(\n private $base: EventType<T>,\n private applier: ExecutorApplier<T>,\n ) {\n ensureEvent($base, \"ExecutorApplied: base\");\n }\n\n public event(transport: TransportType<T>) {\n const ExecutorAppliedBaseTransport = this.applier(\n transport.use.bind(transport),\n );\n this.$base.event(Transport(ExecutorAppliedBaseTransport));\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportParent } from \"base/Transport\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Filters values from the source event based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n $base: EventType<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): EventType<T> {\n return new FilteredEvent<T>($base, predicate, defaultValue);\n}\n\nexport class FilteredEvent<T> implements EventType<T> {\n public constructor(\n private $base: EventType<T>,\n private predicate: ConstructorType<[T], boolean>,\n private defaultValue?: T,\n ) {}\n\n public event(transport: TransportType<T>) {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child: FilteredEvent<T>) {\n if (child.predicate(v)) {\n this.use(v);\n } else if (child.defaultValue !== undefined) {\n this.use(child.defaultValue);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport, TransportParent } from \"base/Transport\";\nimport { DestroyableType, EventType } from \"types/EventType\";\nimport { All } from \"components/All\";\n\n/**\n * An event derived from another 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 event\n */\nexport function FromEvent<T>(\n $emitter: EventType<any>,\n $eventName: EventType<string>,\n $subscribeMethod: EventType<string>,\n $unsubscribeMethod?: EventType<string>,\n) {\n return new FromEventAdapter<T>(\n $emitter,\n $eventName,\n $subscribeMethod,\n $unsubscribeMethod,\n );\n}\n\nexport class FromEventAdapter<T> implements EventType<T>, DestroyableType {\n private lastTransport: TransportType<T> | null = null;\n private handler = (v: T) => {\n if (this.lastTransport) {\n this.lastTransport.use(v);\n }\n };\n\n public constructor(\n private $emitter: EventType<any>,\n private $eventName: EventType<string>,\n private $subscribeMethod: EventType<string>,\n private $unsubscribeMethod?: EventType<string>,\n ) {}\n\n public event(transport: TransportType<T>): this {\n All(this.$emitter, this.$eventName, this.$subscribeMethod).event(\n this.parent.child(transport),\n );\n return this;\n }\n\n private parent = TransportParent<[any, string, string]>(function (\n [emitter, eventName, subscribe],\n child,\n ) {\n child.lastTransport = this;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, child.handler);\n }, this);\n\n public destroy(): this {\n this.lastTransport = null;\n if (!this.$unsubscribeMethod) {\n return this;\n }\n All(this.$emitter, this.$eventName, this.$unsubscribeMethod).event(\n Transport(([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe]?.(eventName, this.handler);\n }),\n );\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates an event from a Promise, allowing the promise's resolution or rejection\n * to be handled as an event. The resolved value is emitted to the transport,\n * and if an error is provided, rejections are forwarded to it.\n */\nexport function FromPromise<T>(p: Promise<T>, error?: TransportType) {\n return new FromPromiseEvent<T>(p, error);\n}\n\nexport class FromPromiseEvent<T> implements EventType<T> {\n public constructor(\n private p: Promise<T>,\n private error?: TransportType,\n ) {}\n\n public event(transport: TransportType<T>): this {\n this.p\n .then((v) => {\n transport.use(v);\n })\n .catch((e) => {\n this.error?.use(e);\n });\n return this;\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { isFilled } from \"helpers/guards\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport function Late<T>(v?: T) {\n return new LateEvent<T>(v);\n}\n\nexport class LateEvent<T> implements SourceType<T> {\n private lateTransport: TransportType<T> | null = null;\n private notify = (v?: T) => {\n if (isFilled(v) && this.lateTransport) {\n this.lateTransport.use(v);\n }\n };\n\n public constructor(private v?: T) {}\n\n public event(transport: TransportType<T>): this {\n if (this.lateTransport) {\n throw new Error(\n \"Late component gets new transport, when another was already connected!\",\n );\n }\n this.lateTransport = transport;\n this.notify(this.v);\n return this;\n }\n\n public use(value: T): this {\n this.notify(value);\n return this;\n }\n}\n","import { TransportParent } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\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 */\nexport function Once<T>($base: EventType<T>) {\n return new OnceEvent<T>($base);\n}\n\nexport class OnceEvent<T> implements EventType<T> {\n private isFilled = false;\n\n public constructor(private $base: EventType<T>) {}\n\n public event(transport: TransportType<T>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n if (!child.isFilled) {\n child.isFilled = true;\n this.use(v);\n }\n }, this);\n}\n","import { TransportType } from \"types/TransportType\";\nimport { Transport } from \"base/Transport\";\n\n/**\n * Helps maintain an owner list allowing different\n * owners to get information from a common source\n * https://silentium-lab.github.io/silentium/#/en/utils/owner-pool\n */\nexport class OwnerPool<T> {\n private owners: Set<TransportType<T>>;\n private innerOwner: TransportType<T>;\n\n public constructor() {\n this.owners = new Set<TransportType<T>>();\n this.innerOwner = Transport((v) => {\n this.owners.forEach((g) => {\n g.use(v);\n });\n });\n }\n\n public owner() {\n return this.innerOwner;\n }\n\n public size(): number {\n return this.owners.size;\n }\n\n public has(owner: TransportType<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(owner: TransportType<T>) {\n this.owners.add(owner);\n return this;\n }\n\n public remove(g: TransportType<T>) {\n this.owners.delete(g);\n return this;\n }\n\n public destroy() {\n this.owners.forEach((g) => {\n this.remove(g);\n });\n return this;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { Late } from \"components/Late\";\nimport { Once } from \"components/Once\";\nimport { SourceType } from \"types/SourceType\";\nimport { OwnerPool } from \"helpers/OwnerPool\";\nimport { TransportType } from \"types/TransportType\";\nimport { isFilled } from \"helpers/guards\";\nimport { Transport } from \"base/Transport\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n */\nexport function Shared<T>($base: EventType<T>, stateless = false) {\n return new SharedEvent<T>($base, stateless);\n}\n\nexport class SharedEvent<T> implements SourceType<T> {\n private ownersPool = new OwnerPool<T>();\n private lastValue: T | undefined;\n private calls = Late();\n\n public constructor(\n private $base: EventType<T>,\n private stateless = false,\n ) {\n Once(this.calls).event(\n Transport(() => {\n this.$base.event(this.firstCallTransport);\n }),\n );\n }\n\n public event(transport: TransportType<T>) {\n this.calls.use(1);\n if (\n !this.stateless &&\n isFilled(this.lastValue) &&\n !this.ownersPool.has(transport)\n ) {\n transport.use(this.lastValue);\n }\n this.ownersPool.add(transport);\n return this;\n }\n\n public use(value: T) {\n this.calls.use(1);\n this.lastValue = value;\n this.ownersPool.owner().use(value);\n return this;\n }\n\n private firstCallTransport = Transport<T>((v: T) => {\n this.lastValue = v;\n this.ownersPool.owner().use(v);\n });\n\n public touched() {\n this.calls.use(1);\n }\n\n public pool() {\n return this.ownersPool;\n }\n\n public destroy() {\n return this.ownersPool.destroy();\n }\n}\n","import { SourceType } from \"types/SourceType\";\nimport { Shared } from \"components/Shared\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a shared source that allows multiple transports to subscribe to the same underlying source.\n * The stateless parameter controls whether the sharing maintains state or not.\n */\nexport function SharedSource<T>($base: SourceType<T>, stateless = false) {\n return new SharedSourceEvent<T>($base, stateless);\n}\n\nexport class SharedSourceEvent<T> implements SourceType<T> {\n private $sharedBase: SourceType<T> & { touched: () => void };\n\n public constructor(\n private $base: SourceType<T>,\n stateless = false,\n ) {\n this.$sharedBase = Shared(this.$base, stateless);\n }\n\n public event(transport: TransportType<T>) {\n this.$sharedBase.event(transport);\n return this;\n }\n\n public use(value: T) {\n this.$sharedBase.touched();\n this.$base.use(value);\n return this;\n }\n}\n","import { Transport } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\n\n/**\n * Helps represent an event 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 */\nexport function Primitive<T>($base: EventType<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: EventType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n this.$base.event(\n Transport((v) => {\n this.theValue = v;\n }),\n );\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 { SourceType } from \"types/SourceType\";\nimport { Late } from \"components/Late\";\nimport { SharedSource } from \"components/SharedSource\";\nimport { TransportType } from \"types/TransportType\";\nimport { Primitive, PrimitiveImpl } from \"components/Primitive\";\n\n/**\n * An event with a value that will be set later,\n * capable of responding to different transports\n */\nexport function LateShared<T>(value?: T) {\n return new LateSharedEvent<T>(value);\n}\n\nexport class LateSharedEvent<T> implements SourceType<T> {\n private $event: SourceType<T>;\n private primitive: PrimitiveImpl<T>;\n\n public constructor(value?: T) {\n this.$event = SharedSource(Late(value));\n this.primitive = Primitive(this, value);\n }\n\n public event(transport: TransportType<T>) {\n this.$event.event(transport);\n return this;\n }\n\n public use(value: T) {\n this.$event.use(value);\n return this;\n }\n\n public value() {\n return this.primitive;\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { All } from \"components/All\";\nimport { TransportType } from \"types/TransportType\";\nimport { isEvent } from \"helpers/guards\";\nimport { TransportParent } from \"base/Transport\";\nimport { Of } from \"base/Of\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n */\nexport function Map<T, TG>(\n $base: EventType<T[]>,\n $target: TransportType<any, EventType<TG>>,\n) {\n return new MapEvent<T, TG>($base, $target);\n}\n\nexport class MapEvent<T, TG> implements EventType<TG[]> {\n public constructor(\n private $base: EventType<T[]>,\n private $target: TransportType<any, EventType<TG>>,\n ) {}\n\n public event(transport: TransportType<TG[]>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v, child) {\n const infos: EventType<TG>[] = [];\n v.forEach((val) => {\n let $val: EventType<T> | T = val;\n if (!isEvent($val as object)) {\n $val = Of($val);\n }\n const info = child.$target.use($val);\n infos.push(info);\n });\n All(...infos).event(this);\n }, this);\n}\n","import { TransportParent } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\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: EventType<T>) {\n return new SequenceEvent<T>($base);\n}\n\nexport class SequenceEvent<T> implements EventType<T[]> {\n private result: T[] = [];\n\n public constructor(private $base: EventType<T>) {}\n\n public event(transport: TransportType<T[]>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T>(function (v, child) {\n child.result.push(v);\n this.use(child.result);\n }, this);\n}\n","import { TransportParent } from \"base/Transport\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>($base: EventType<T[]>) {\n return new StreamEvent<T>($base);\n}\n\nexport class StreamEvent<T> implements EventType<T> {\n public constructor(private $base: EventType<T[]>) {}\n\n public event(transport: TransportType<T>): this {\n this.$base.event(this.parent.child(transport));\n return this;\n }\n\n private parent = TransportParent<T[]>(function (v) {\n v.forEach((cv) => {\n this.use(cv);\n });\n });\n}\n","import { ConstructorType } from \"types/ConstructorType\";\nimport { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that applies a constructor to the result of another transport.\n */\nexport function TransportApplied<T>(\n baseTransport: TransportType<any, EventType<T>>,\n applier: ConstructorType<[EventType], EventType<T>>,\n) {\n return new TransportAppliedImpl(baseTransport, applier);\n}\n\nexport class TransportAppliedImpl<T>\n implements TransportType<unknown, EventType<T>>\n{\n public constructor(\n private baseTransport: TransportType<any, EventType<T>>,\n private applier: ConstructorType<[EventType], EventType<T>>,\n ) {}\n\n public use(args: unknown) {\n return this.applier(this.baseTransport.use(args));\n }\n}\n","import { EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport that merges additional arguments into the base transport's arguments\n * at a specified index position, allowing for flexible argument composition\n */\nexport function TransportArgs(\n baseTransport: TransportType<any[], EventType>,\n args: unknown[],\n startFromArgIndex: number = 0,\n) {\n return new TransportArgsImpl(baseTransport, args, startFromArgIndex);\n}\n\nexport class TransportArgsImpl\n implements TransportType<unknown[], EventType<unknown>>\n{\n public constructor(\n private baseTransport: TransportType<any[], EventType>,\n private args: unknown[],\n private startFromArgIndex: number = 0,\n ) {}\n\n public use(runArgs: unknown[]): EventType<unknown> {\n return this.baseTransport.use(\n mergeAtIndex(runArgs, this.args, this.startFromArgIndex),\n );\n }\n}\n\nfunction mergeAtIndex(arr1: unknown[], arr2: unknown[], index: number) {\n const result = arr1.slice(0, index);\n while (result.length < index) result.push(undefined);\n return result.concat(arr2);\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType, EventType } from \"types/EventType\";\nimport { TransportType } from \"types/TransportType\";\n\n/**\n * Creates a transport wrapper that automatically manages destruction of created instances\n */\nexport function TransportDestroyable<T>(\n baseTransport: TransportType<any[], EventType<T>>,\n) {\n return new TransportDestroyableEvent<T>(baseTransport);\n}\n\nexport class TransportDestroyableEvent<T>\n implements TransportType<unknown, EventType<T>>, DestroyableType\n{\n private destructors: DestroyableType[] = [];\n\n public constructor(\n private baseTransport: TransportType<any[], EventType<T>>,\n ) {}\n\n public use(args: any[]) {\n const inst = this.baseTransport.use(args);\n if (isDestroyable(inst)) {\n this.destructors.push(inst);\n }\n return inst;\n }\n\n public destroy(): this {\n this.destructors.forEach((i) => i.destroy());\n return this;\n }\n}\n","import { Transport } from \"base/Transport\";\nimport { LateShared } from \"components/LateShared\";\nimport { EventType } from \"types/EventType\";\nimport { RPCType } from \"types/RPCType\";\nimport { SourceType } from \"types/SourceType\";\n\ninterface RPCImplType<T> {\n result(): EventType<T>;\n error(): EventType<Error | string>;\n}\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * RPCType, the list of transports should be defined via\n * the RPC.transport object\n */\nexport function RPC<T>($rpc: EventType<RPCType>): RPCImplType<T> {\n return new RPCImpl($rpc);\n}\n\nRPC.transport = {} as { default: SourceType<RPCType> } & Record<\n string,\n SourceType<RPCType>\n>;\n\nexport class RPCImpl {\n private $result = LateShared();\n private $error = LateShared();\n\n public constructor(private $rpc: EventType<RPCType>) {}\n\n public result() {\n this.$rpc.event(\n Transport((rpc) => {\n const transport =\n rpc.transport === undefined\n ? RPC.transport.default\n : RPC.transport[rpc.transport] || RPC.transport.default;\n if (!transport) {\n throw new Error(`RPCImpl: Transport not found ${rpc.transport}`);\n }\n if (!rpc.result) {\n rpc.result = this.$result;\n }\n if (!rpc.error) {\n rpc.error = this.$error;\n }\n transport.use(rpc);\n }),\n );\n return this.$result;\n }\n\n public error() {\n return this.$error;\n }\n}\n","import { Filtered } from \"components/Filtered\";\nimport { EventType } from \"types/EventType\";\nimport { RPCType } from \"types/RPCType\";\n\n/**\n * Event for the arrival of a specific RPC message\n * for specific transport\n */\nexport function RPCOf($rpc: EventType<RPCType>, transport: string) {\n return Filtered($rpc, (rpc) => rpc.transport === transport);\n}\n"],"names":["__publicField"],"mappings":"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"}
|
package/dist/silentium.d.ts
CHANGED
|
@@ -255,6 +255,14 @@ declare class ExecutorAppliedEvent<T> implements EventType<T> {
|
|
|
255
255
|
* optionally providing a default value when the predicate fails.
|
|
256
256
|
*/
|
|
257
257
|
declare function Filtered<T>($base: EventType<T>, predicate: ConstructorType<[T], boolean>, defaultValue?: T): EventType<T>;
|
|
258
|
+
declare class FilteredEvent<T> implements EventType<T> {
|
|
259
|
+
private $base;
|
|
260
|
+
private predicate;
|
|
261
|
+
private defaultValue?;
|
|
262
|
+
constructor($base: EventType<T>, predicate: ConstructorType<[T], boolean>, defaultValue?: T | undefined);
|
|
263
|
+
event(transport: TransportType<T>): this;
|
|
264
|
+
private parent;
|
|
265
|
+
}
|
|
258
266
|
|
|
259
267
|
/**
|
|
260
268
|
* An event derived from another event with a different
|
|
@@ -305,6 +313,25 @@ declare class LateEvent<T> implements SourceType<T> {
|
|
|
305
313
|
use(value: T): this;
|
|
306
314
|
}
|
|
307
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Helps represent an event as a primitive type, which can be useful
|
|
318
|
+
* for cases when you need to always have a reference to the current value
|
|
319
|
+
* without updating the shared value when the current one changes.
|
|
320
|
+
* For example, this could be used when passing an authorization token.
|
|
321
|
+
* It can also be useful for testing or logging purposes.
|
|
322
|
+
*/
|
|
323
|
+
declare function Primitive<T>($base: EventType<T>, theValue?: T | null): PrimitiveImpl<T>;
|
|
324
|
+
declare class PrimitiveImpl<T> {
|
|
325
|
+
private $base;
|
|
326
|
+
private theValue;
|
|
327
|
+
private touched;
|
|
328
|
+
constructor($base: EventType<T>, theValue?: T | null);
|
|
329
|
+
private ensureTouched;
|
|
330
|
+
[Symbol.toPrimitive](): T | null;
|
|
331
|
+
primitive(): T | null;
|
|
332
|
+
primitiveWithException(): T & ({} | undefined);
|
|
333
|
+
}
|
|
334
|
+
|
|
308
335
|
/**
|
|
309
336
|
* An event with a value that will be set later,
|
|
310
337
|
* capable of responding to different transports
|
|
@@ -312,9 +339,11 @@ declare class LateEvent<T> implements SourceType<T> {
|
|
|
312
339
|
declare function LateShared<T>(value?: T): LateSharedEvent<T>;
|
|
313
340
|
declare class LateSharedEvent<T> implements SourceType<T> {
|
|
314
341
|
private $event;
|
|
342
|
+
private primitive;
|
|
315
343
|
constructor(value?: T);
|
|
316
344
|
event(transport: TransportType<T>): this;
|
|
317
345
|
use(value: T): this;
|
|
346
|
+
value(): PrimitiveImpl<T>;
|
|
318
347
|
}
|
|
319
348
|
|
|
320
349
|
/**
|
|
@@ -344,25 +373,6 @@ declare class OnceEvent<T> implements EventType<T> {
|
|
|
344
373
|
private parent;
|
|
345
374
|
}
|
|
346
375
|
|
|
347
|
-
/**
|
|
348
|
-
* Helps represent an event as a primitive type, which can be useful
|
|
349
|
-
* for cases when you need to always have a reference to the current value
|
|
350
|
-
* without updating the shared value when the current one changes.
|
|
351
|
-
* For example, this could be used when passing an authorization token.
|
|
352
|
-
* It can also be useful for testing or logging purposes.
|
|
353
|
-
*/
|
|
354
|
-
declare function Primitive<T>($base: EventType<T>, theValue?: T | null): PrimitiveImpl<T>;
|
|
355
|
-
declare class PrimitiveImpl<T> {
|
|
356
|
-
private $base;
|
|
357
|
-
private theValue;
|
|
358
|
-
private touched;
|
|
359
|
-
constructor($base: EventType<T>, theValue?: T | null);
|
|
360
|
-
private ensureTouched;
|
|
361
|
-
[Symbol.toPrimitive](): T | null;
|
|
362
|
-
primitive(): T | null;
|
|
363
|
-
primitiveWithException(): T & ({} | undefined);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
376
|
/**
|
|
367
377
|
* Creates a sequence that accumulates all values from the source into an array,
|
|
368
378
|
* emitting the growing array with each new value.
|
|
@@ -501,6 +511,14 @@ declare namespace RPC {
|
|
|
501
511
|
default: SourceType<RPCType>;
|
|
502
512
|
} & Record<string, SourceType<RPCType>>;
|
|
503
513
|
}
|
|
514
|
+
declare class RPCImpl {
|
|
515
|
+
private $rpc;
|
|
516
|
+
private $result;
|
|
517
|
+
private $error;
|
|
518
|
+
constructor($rpc: EventType<RPCType>);
|
|
519
|
+
result(): LateSharedEvent<unknown>;
|
|
520
|
+
error(): LateSharedEvent<unknown>;
|
|
521
|
+
}
|
|
504
522
|
|
|
505
523
|
/**
|
|
506
524
|
* Event for the arrival of a specific RPC message
|
|
@@ -517,4 +535,4 @@ declare function ensureFunction(v: unknown, label: string): void;
|
|
|
517
535
|
declare function ensureEvent(v: unknown, label: string): void;
|
|
518
536
|
declare function ensureTransport(v: unknown, label: string): void;
|
|
519
537
|
|
|
520
|
-
export { All, Any, Applied, Catch, Chain, ChainEvent, Component, ComponentClass, type ConstructorType, DestroyContainer, type DestroyableType, Event, type EventType, type EventTypeValue, ExecutorApplied, Filtered, FromEvent, FromPromise, FromPromiseEvent, Late, LateShared, Local, Map, Of, Once, OwnerPool, Primitive, RPC, RPCOf, type RPCType, Sequence, Shared, SharedSource, type SourceType, Stream, Transport, TransportApplied, TransportAppliedImpl, TransportArgs, TransportArgsImpl, TransportDestroyable, TransportEvent, type TransportEventExecutor, type TransportExecutor, TransportParent, type TransportType, Void, ensureEvent, ensureFunction, ensureTransport, isDestroyable, isEvent, isFilled, isTransport };
|
|
538
|
+
export { All, AllEvent, Any, AnyEvent, Applied, AppliedEvent, Catch, CatchEvent, Chain, ChainEvent, Component, ComponentClass, type ConstructorType, DestroyContainer, DestroyContainerImpl, type DestroyableType, Event, EventImpl, type EventType, type EventTypeValue, ExecutorApplied, ExecutorAppliedEvent, Filtered, FilteredEvent, FromEvent, FromEventAdapter, FromPromise, FromPromiseEvent, Late, LateEvent, LateShared, LateSharedEvent, Local, LocalEvent, Map, MapEvent, Of, OfEvent, Once, OnceEvent, OwnerPool, Primitive, PrimitiveImpl, RPC, RPCImpl, RPCOf, type RPCType, Sequence, SequenceEvent, Shared, SharedEvent, SharedSource, SharedSourceEvent, type SourceType, Stream, StreamEvent, Transport, TransportApplied, TransportAppliedImpl, TransportArgs, TransportArgsImpl, TransportDestroyable, TransportDestroyableEvent, TransportEvent, type TransportEventExecutor, type TransportExecutor, TransportParent, TransportParentImpl, type TransportType, Void, VoidImpl, ensureEvent, ensureFunction, ensureTransport, isDestroyable, isEvent, isFilled, isTransport };
|