silentium 0.0.53 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/silentium.cjs +23 -10
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +5 -1
- package/dist/silentium.js +23 -10
- 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 +23 -10
- package/dist/silentium.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Information/Information.ts +9 -2
- package/src/Owner/Owner.test.ts +27 -0
- package/src/Owner/Owner.ts +15 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.0.55](https://github.com/silentium-lab/silentium/compare/v0.0.54...v0.0.55) (2025-07-03)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** owner debug method and owner test ([d6058a2](https://github.com/silentium-lab/silentium/commit/d6058a2969a32c5aa064aa01a103a61290fee635))
|
|
11
|
+
|
|
12
|
+
### [0.0.54](https://github.com/silentium-lab/silentium/compare/v0.0.53...v0.0.54) (2025-07-03)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **main:** i can accept information ([bf0ef4e](https://github.com/silentium-lab/silentium/commit/bf0ef4eacfaa48c94f1feb7bfb98773b75347a19))
|
|
18
|
+
|
|
5
19
|
### [0.0.53](https://github.com/silentium-lab/silentium/compare/v0.0.52...v0.0.53) (2025-07-03)
|
|
6
20
|
|
|
7
21
|
|
package/dist/silentium.cjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var __defProp$
|
|
4
|
-
var __defNormalProp$
|
|
5
|
-
var __publicField$
|
|
3
|
+
var __defProp$2 = Object.defineProperty;
|
|
4
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
6
|
const _Information = class _Information {
|
|
7
7
|
constructor(info, theName = "unknown", onlyOneOwner = true) {
|
|
8
8
|
this.info = info;
|
|
9
9
|
this.theName = theName;
|
|
10
10
|
this.onlyOneOwner = onlyOneOwner;
|
|
11
|
-
__publicField$
|
|
12
|
-
__publicField$
|
|
13
|
-
__publicField$
|
|
14
|
-
__publicField$
|
|
15
|
-
__publicField$
|
|
11
|
+
__publicField$2(this, "theSubInfos", []);
|
|
12
|
+
__publicField$2(this, "destructor");
|
|
13
|
+
__publicField$2(this, "owner");
|
|
14
|
+
__publicField$2(this, "executedCbs");
|
|
15
|
+
__publicField$2(this, "alreadyExecuted", false);
|
|
16
16
|
_Information.instances += 1;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
@@ -94,23 +94,29 @@ const _Information = class _Information {
|
|
|
94
94
|
return !!this.owner;
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
|
-
__publicField$
|
|
97
|
+
__publicField$2(_Information, "instances", 0);
|
|
98
98
|
let Information = _Information;
|
|
99
|
-
const I = (info, theName = "unknown", onlyOneOwner = true) => new Information(info, theName, onlyOneOwner);
|
|
99
|
+
const I = (info, theName = "unknown", onlyOneOwner = true) => info instanceof Information ? info : new Information(info, theName, onlyOneOwner);
|
|
100
100
|
|
|
101
|
+
var __defProp$1 = Object.defineProperty;
|
|
102
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
103
|
+
var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
|
|
101
104
|
class Owner {
|
|
102
105
|
constructor(ownerFn, errorFn, disposedFn) {
|
|
103
106
|
this.ownerFn = ownerFn;
|
|
104
107
|
this.errorFn = errorFn;
|
|
105
108
|
this.disposedFn = disposedFn;
|
|
109
|
+
__publicField$1(this, "cbs", []);
|
|
106
110
|
}
|
|
107
111
|
give(value) {
|
|
112
|
+
this.doDebug("value", value);
|
|
108
113
|
if (!this.disposed()) {
|
|
109
114
|
this.ownerFn(value);
|
|
110
115
|
}
|
|
111
116
|
return this;
|
|
112
117
|
}
|
|
113
118
|
error(cause) {
|
|
119
|
+
this.doDebug("error", cause);
|
|
114
120
|
if (this.errorFn !== void 0) {
|
|
115
121
|
this.errorFn(cause);
|
|
116
122
|
}
|
|
@@ -119,6 +125,13 @@ class Owner {
|
|
|
119
125
|
disposed() {
|
|
120
126
|
return this.disposedFn !== void 0 ? this.disposedFn() : false;
|
|
121
127
|
}
|
|
128
|
+
debug(cb) {
|
|
129
|
+
this.cbs.push(cb);
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
doDebug(...data) {
|
|
133
|
+
this.cbs.forEach((cb) => cb(...data));
|
|
134
|
+
}
|
|
122
135
|
}
|
|
123
136
|
const O = (ownerFn) => new Owner(ownerFn);
|
|
124
137
|
|
package/dist/silentium.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.cjs","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?: InfoObjectType<T> | InfoExecutorType<T> | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) => new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["__publicField","info"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.cjs","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?:\n | Information<T>\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) =>\n info instanceof Information\n ? info\n : new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\ntype OwnerDebugCB = (...data: unknown[]) => void;\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n private cbs: OwnerDebugCB[] = [];\n\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n this.doDebug(\"value\", value);\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n this.doDebug(\"error\", cause);\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n\n public debug(cb: OwnerDebugCB) {\n this.cbs.push(cb);\n return this;\n }\n\n private doDebug(...data: unknown[]) {\n this.cbs.forEach((cb) => cb(...data));\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["__publicField","info"],"mappings":"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"}
|
package/dist/silentium.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ interface OwnerObjectType<T = any> {
|
|
|
6
6
|
}
|
|
7
7
|
type OwnerType<T = any> = OwnerExecutorType<T> | OwnerObjectType<T>;
|
|
8
8
|
|
|
9
|
+
type OwnerDebugCB = (...data: unknown[]) => void;
|
|
9
10
|
/**
|
|
10
11
|
* Information owner, if information
|
|
11
12
|
* has owner than information executed
|
|
@@ -15,10 +16,13 @@ declare class Owner<T = any> {
|
|
|
15
16
|
private ownerFn;
|
|
16
17
|
private errorFn?;
|
|
17
18
|
private disposedFn?;
|
|
19
|
+
private cbs;
|
|
18
20
|
constructor(ownerFn: OwnerExecutorType<T>, errorFn?: ((cause: unknown) => void) | undefined, disposedFn?: (() => boolean) | undefined);
|
|
19
21
|
give(value: T): this;
|
|
20
22
|
error(cause: unknown): this;
|
|
21
23
|
disposed(): boolean;
|
|
24
|
+
debug(cb: OwnerDebugCB): this;
|
|
25
|
+
private doDebug;
|
|
22
26
|
}
|
|
23
27
|
declare const O: <T>(ownerFn: OwnerExecutorType<T>) => Owner<T>;
|
|
24
28
|
|
|
@@ -70,7 +74,7 @@ declare class Information<T = any> {
|
|
|
70
74
|
executed(cb: InformationExecutedCb<T>): this;
|
|
71
75
|
hasOwner(): boolean;
|
|
72
76
|
}
|
|
73
|
-
declare const I: <T>(info?: InfoObjectType<T> | InfoExecutorType<T> | InformationDataType<T>, theName?: string, onlyOneOwner?: boolean) => Information<T>;
|
|
77
|
+
declare const I: <T>(info?: Information<T> | InfoObjectType<T> | InfoExecutorType<T> | InformationDataType<T>, theName?: string, onlyOneOwner?: boolean) => Information<T>;
|
|
74
78
|
|
|
75
79
|
type ExtractType<T> = T extends InformationType<infer U> ? U : never;
|
|
76
80
|
type ExtractTypeS<T> = T extends Information<infer U> ? U : never;
|
package/dist/silentium.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var __defProp$
|
|
2
|
-
var __defNormalProp$
|
|
3
|
-
var __publicField$
|
|
1
|
+
var __defProp$2 = Object.defineProperty;
|
|
2
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
const _Information = class _Information {
|
|
5
5
|
constructor(info, theName = "unknown", onlyOneOwner = true) {
|
|
6
6
|
this.info = info;
|
|
7
7
|
this.theName = theName;
|
|
8
8
|
this.onlyOneOwner = onlyOneOwner;
|
|
9
|
-
__publicField$
|
|
10
|
-
__publicField$
|
|
11
|
-
__publicField$
|
|
12
|
-
__publicField$
|
|
13
|
-
__publicField$
|
|
9
|
+
__publicField$2(this, "theSubInfos", []);
|
|
10
|
+
__publicField$2(this, "destructor");
|
|
11
|
+
__publicField$2(this, "owner");
|
|
12
|
+
__publicField$2(this, "executedCbs");
|
|
13
|
+
__publicField$2(this, "alreadyExecuted", false);
|
|
14
14
|
_Information.instances += 1;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
@@ -92,23 +92,29 @@ const _Information = class _Information {
|
|
|
92
92
|
return !!this.owner;
|
|
93
93
|
}
|
|
94
94
|
};
|
|
95
|
-
__publicField$
|
|
95
|
+
__publicField$2(_Information, "instances", 0);
|
|
96
96
|
let Information = _Information;
|
|
97
|
-
const I = (info, theName = "unknown", onlyOneOwner = true) => new Information(info, theName, onlyOneOwner);
|
|
97
|
+
const I = (info, theName = "unknown", onlyOneOwner = true) => info instanceof Information ? info : new Information(info, theName, onlyOneOwner);
|
|
98
98
|
|
|
99
|
+
var __defProp$1 = Object.defineProperty;
|
|
100
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
101
|
+
var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
|
|
99
102
|
class Owner {
|
|
100
103
|
constructor(ownerFn, errorFn, disposedFn) {
|
|
101
104
|
this.ownerFn = ownerFn;
|
|
102
105
|
this.errorFn = errorFn;
|
|
103
106
|
this.disposedFn = disposedFn;
|
|
107
|
+
__publicField$1(this, "cbs", []);
|
|
104
108
|
}
|
|
105
109
|
give(value) {
|
|
110
|
+
this.doDebug("value", value);
|
|
106
111
|
if (!this.disposed()) {
|
|
107
112
|
this.ownerFn(value);
|
|
108
113
|
}
|
|
109
114
|
return this;
|
|
110
115
|
}
|
|
111
116
|
error(cause) {
|
|
117
|
+
this.doDebug("error", cause);
|
|
112
118
|
if (this.errorFn !== void 0) {
|
|
113
119
|
this.errorFn(cause);
|
|
114
120
|
}
|
|
@@ -117,6 +123,13 @@ class Owner {
|
|
|
117
123
|
disposed() {
|
|
118
124
|
return this.disposedFn !== void 0 ? this.disposedFn() : false;
|
|
119
125
|
}
|
|
126
|
+
debug(cb) {
|
|
127
|
+
this.cbs.push(cb);
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
doDebug(...data) {
|
|
131
|
+
this.cbs.forEach((cb) => cb(...data));
|
|
132
|
+
}
|
|
120
133
|
}
|
|
121
134
|
const O = (ownerFn) => new Owner(ownerFn);
|
|
122
135
|
|
package/dist/silentium.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.js","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?: InfoObjectType<T> | InfoExecutorType<T> | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) => new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["__publicField","info"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.js","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?:\n | Information<T>\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) =>\n info instanceof Information\n ? info\n : new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\ntype OwnerDebugCB = (...data: unknown[]) => void;\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n private cbs: OwnerDebugCB[] = [];\n\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n this.doDebug(\"value\", value);\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n this.doDebug(\"error\", cause);\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n\n public debug(cb: OwnerDebugCB) {\n this.cbs.push(cb);\n return this;\n }\n\n private doDebug(...data: unknown[]) {\n this.cbs.forEach((cb) => cb(...data));\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["__publicField","info"],"mappings":"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"}
|
package/dist/silentium.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e){"use strict";var t=Object.defineProperty,n=(e,n,s)=>((e,n,s)=>n in e?t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s)(e,"symbol"!=typeof n?n+"":n,s);const s=class e{constructor(t,s="unknown",r=!0){this.info=t,this.theName=s,this.onlyOneOwner=r,n(this,"theSubInfos",[]),n(this,"destructor"),n(this,"owner"),n(this,"executedCbs"),n(this,"alreadyExecuted",!1),e.instances+=1}next(e){return void 0!==this.owner&&this.owner.give(e),this}value(e){if(this.onlyOneOwner&&void 0!==this.owner)throw new Error(`owner already connected to info ${this.name()}`);if(this.owner=e,void 0===this.executedCbs||this.alreadyExecuted||(this.executedCbs.forEach((t=>t(e))),this.alreadyExecuted=!0),void 0===this.info)return this;if("function"==typeof this.info){const t=this.info(e);void 0===this.destructor&&void 0!==t&&this.info!==t&&"function"==typeof t&&(this.destructor=t)}else"object"==typeof this.info&&null!==this.info&&"value"in this.info&&"function"==typeof this.info.value?this.info.value(e):this.next(this.info);return this}destroy(){for(;this.theSubInfos.length>0;){const e=this.theSubInfos.shift();e?.destroy()}return this.destructor&&this.destructor(),this.owner=void 0,this.executedCbs=void 0,this.destructor=void 0,this}subInfo(e){return this.theSubInfos.push(e),this}subInfos(){return this.theSubInfos}name(){return`#info_${this.theName}_${e.instances}`}executed(e){return this.executedCbs||(this.executedCbs=[]),this.executedCbs.push(e),this.alreadyExecuted&&void 0!==this.owner&&e(this.owner),this}hasOwner(){return!!this.owner}};n(s,"instances",0);let r=s;const o=(e,t="unknown",n=!0)=>new r(e,t,n);
|
|
1
|
+
!function(e){"use strict";var t=Object.defineProperty,n=(e,n,s)=>((e,n,s)=>n in e?t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s)(e,"symbol"!=typeof n?n+"":n,s);const s=class e{constructor(t,s="unknown",r=!0){this.info=t,this.theName=s,this.onlyOneOwner=r,n(this,"theSubInfos",[]),n(this,"destructor"),n(this,"owner"),n(this,"executedCbs"),n(this,"alreadyExecuted",!1),e.instances+=1}next(e){return void 0!==this.owner&&this.owner.give(e),this}value(e){if(this.onlyOneOwner&&void 0!==this.owner)throw new Error(`owner already connected to info ${this.name()}`);if(this.owner=e,void 0===this.executedCbs||this.alreadyExecuted||(this.executedCbs.forEach((t=>t(e))),this.alreadyExecuted=!0),void 0===this.info)return this;if("function"==typeof this.info){const t=this.info(e);void 0===this.destructor&&void 0!==t&&this.info!==t&&"function"==typeof t&&(this.destructor=t)}else"object"==typeof this.info&&null!==this.info&&"value"in this.info&&"function"==typeof this.info.value?this.info.value(e):this.next(this.info);return this}destroy(){for(;this.theSubInfos.length>0;){const e=this.theSubInfos.shift();e?.destroy()}return this.destructor&&this.destructor(),this.owner=void 0,this.executedCbs=void 0,this.destructor=void 0,this}subInfo(e){return this.theSubInfos.push(e),this}subInfos(){return this.theSubInfos}name(){return`#info_${this.theName}_${e.instances}`}executed(e){return this.executedCbs||(this.executedCbs=[]),this.executedCbs.push(e),this.alreadyExecuted&&void 0!==this.owner&&e(this.owner),this}hasOwner(){return!!this.owner}};n(s,"instances",0);let r=s;const o=(e,t="unknown",n=!0)=>e instanceof r?e:new r(e,t,n);var i=Object.defineProperty,u=(e,t,n)=>((e,t,n)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,t+"",n);class h{constructor(e,t,n){this.ownerFn=e,this.errorFn=t,this.disposedFn=n,u(this,"cbs",[])}give(e){return this.doDebug("value",e),this.disposed()||this.ownerFn(e),this}error(e){return this.doDebug("error",e),void 0!==this.errorFn&&this.errorFn(e),this}disposed(){return void 0!==this.disposedFn&&this.disposedFn()}debug(e){return this.cbs.push(e),this}doDebug(...e){this.cbs.forEach((t=>t(...e)))}}const c=e=>new h(e),a=(...e)=>{const t=new r((n=>{const s=new Set(Object.keys(e)),r=new Set,o={};Object.entries(e).forEach((([e,i])=>{t.subInfo(i),s.add(e),i.value(new h((t=>{r.add(e),o[e]=t,r.size>0&&r.size===s.size&&n.give(Object.values(o))})))}))}));return t};var d=Object.defineProperty,l=(e,t,n)=>((e,t,n)=>t in e?d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);class f{constructor(){l(this,"owners"),l(this,"innerOwner"),this.owners=new Set,this.innerOwner=new h((e=>{this.owners.forEach((t=>{t.give(e)}))}),(e=>{this.owners.forEach((t=>{t.error(e)}))}))}owner(){return this.innerOwner}size(){return this.owners.size}has(e){return this.owners.has(e)}add(e){return this.owners.add(e),this}remove(e){return this.owners.delete(e),this}destroy(){return this.owners.forEach((e=>{this.remove(e)})),this}}e.I=o,e.Information=r,e.O=c,e.Owner=h,e.OwnerPool=f,e.all=a,e.any=(...e)=>o((t=>{e.forEach((e=>{e.value(t),e.subInfo(e)}))})),e.applied=(e,t)=>{const n=o((n=>{e.value(c((e=>{n.give(t(e))})))}));return n.subInfo(e),n},e.chain=(...e)=>{let t,n;const s=new WeakMap,r=o=>{const i=e[o],u=e[o+1];i.value(c((e=>{u||(n=e,t?.give(e)),u&&void 0!==n&&void 0!==t&&t.give(n),u&&!s.has(i)&&r(o+1),s.set(i,1)})))},i=o((e=>{t=e}));return i.executed((()=>{r(0)})),i},e.executorApplied=(e,t)=>{const n=new r((n=>{e.value(t(n))}));return n.subInfo(e),n},e.filtered=(e,t,n)=>new r((s=>{e.value(c((e=>{t(e)?s.give(e):void 0!==n&&s.give(n)})))})).subInfo(e),e.fromCallback=e=>o((t=>{e((e=>{t.give(e)}))})),e.fromEvent=(e,t,n,s)=>o((r=>{const o=(...e)=>{r.give(e)};return e[n](t,o),()=>{void 0!==s&&e[s](t,o)}})),e.fromPromise=e=>o((t=>{e.then((e=>{t.give(e)})).catch((e=>{t.error(e)}))})),e.lazy=e=>{if(void 0===e)throw new Error("lazy didn't receive buildingFn argument");return{get:(...t)=>e(...t)}},e.lazyClass=(e,t={})=>{if(void 0===e)throw new Error("PrivateClass didn't receive constructorFn argument");return{get:(...n)=>new e(...n,t)}},e.lazyS=(e,t)=>{const n=new r((t=>{const s=e.get();n.subInfo(s),s.value(t)}));return t&&(n.subInfo(t),t.value(c((()=>{n.destroy()})))),n},e.map=(e,t)=>{const n=new r((s=>{e.value(c((e=>{const i=[];e.forEach((e=>{let n=e;n instanceof r||(n=o(e));const s=t.get(n);i.push(s)}));const u=a(...i).value(s);n.subInfo(u)})))}));return n.subInfo(e),n},e.of=e=>{let t,n=e;const s=()=>{void 0!==t&&t.give(n)};return[new r((e=>{t=e,null!=n&&s()}),"of"),new h((e=>{n=e,s()}))]},e.once=e=>{const t=new r((t=>{let n=!1;e.value(c((e=>{n||(n=!0,t.give(e))})))}));return t.subInfo(e),t},e.ownerApplied=(e,t)=>new h((n=>{e.give(t(n))}),(t=>{e.error(t)}),(()=>e.disposed())),e.ownerExecutorApplied=(e,t)=>{const n=t((t=>e.give(t)));return new h((e=>{n(e)}))},e.ownerSync=(e,t)=>{let n;return e.value(c((e=>{n=e}))),{syncValue(){if(void 0===n&&void 0===t)throw new Error("info sync is empty");return n??t},filled:()=>void 0!==n}},e.pool=e=>{const t=new f;let n;const s=new r((e=>(void 0===n||t.has(e)||e.give(n),t.add(e),()=>{t.destroy()})),"pool",!1);return s.subInfo(e),s.executed((()=>{const s=t.owner();e.value(new h((e=>{s.give(e),n=e})))})),[s,t]},e.poolStateless=e=>{const t=new f,n=new r((e=>(t.add(e),()=>{t.destroy()})),"pool",!1);return n.subInfo(e),n.executed((n=>{t.add(n),e.value(t.owner())})),[n,t]},e.sequence=e=>{const t=o((t=>{const n=[];e.value(c((e=>{n.push(e),t.give(n)})))}));return t.subInfo(e),t},e.stream=e=>o((t=>{e.value(c((e=>{e.forEach((e=>{t.give(e)}))})))}))}({});
|
package/dist/silentium.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,n,s)=>((t,n,s)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[n]=s)(t,"symbol"!=typeof n?n+"":n,s);const n=class e{constructor(n,s="unknown",r=!0){this.info=n,this.theName=s,this.onlyOneOwner=r,t(this,"theSubInfos",[]),t(this,"destructor"),t(this,"owner"),t(this,"executedCbs"),t(this,"alreadyExecuted",!1),e.instances+=1}next(e){return void 0!==this.owner&&this.owner.give(e),this}value(e){if(this.onlyOneOwner&&void 0!==this.owner)throw new Error(`owner already connected to info ${this.name()}`);if(this.owner=e,void 0===this.executedCbs||this.alreadyExecuted||(this.executedCbs.forEach((t=>t(e))),this.alreadyExecuted=!0),void 0===this.info)return this;if("function"==typeof this.info){const t=this.info(e);void 0===this.destructor&&void 0!==t&&this.info!==t&&"function"==typeof t&&(this.destructor=t)}else"object"==typeof this.info&&null!==this.info&&"value"in this.info&&"function"==typeof this.info.value?this.info.value(e):this.next(this.info);return this}destroy(){for(;this.theSubInfos.length>0;){const e=this.theSubInfos.shift();e?.destroy()}return this.destructor&&this.destructor(),this.owner=void 0,this.executedCbs=void 0,this.destructor=void 0,this}subInfo(e){return this.theSubInfos.push(e),this}subInfos(){return this.theSubInfos}name(){return`#info_${this.theName}_${e.instances}`}executed(e){return this.executedCbs||(this.executedCbs=[]),this.executedCbs.push(e),this.alreadyExecuted&&void 0!==this.owner&&e(this.owner),this}hasOwner(){return!!this.owner}};t(n,"instances",0);let s=n;const r=(e,t="unknown",n=!0)=>new s(e,t,n);
|
|
1
|
+
var e=Object.defineProperty,t=(t,n,s)=>((t,n,s)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[n]=s)(t,"symbol"!=typeof n?n+"":n,s);const n=class e{constructor(n,s="unknown",r=!0){this.info=n,this.theName=s,this.onlyOneOwner=r,t(this,"theSubInfos",[]),t(this,"destructor"),t(this,"owner"),t(this,"executedCbs"),t(this,"alreadyExecuted",!1),e.instances+=1}next(e){return void 0!==this.owner&&this.owner.give(e),this}value(e){if(this.onlyOneOwner&&void 0!==this.owner)throw new Error(`owner already connected to info ${this.name()}`);if(this.owner=e,void 0===this.executedCbs||this.alreadyExecuted||(this.executedCbs.forEach((t=>t(e))),this.alreadyExecuted=!0),void 0===this.info)return this;if("function"==typeof this.info){const t=this.info(e);void 0===this.destructor&&void 0!==t&&this.info!==t&&"function"==typeof t&&(this.destructor=t)}else"object"==typeof this.info&&null!==this.info&&"value"in this.info&&"function"==typeof this.info.value?this.info.value(e):this.next(this.info);return this}destroy(){for(;this.theSubInfos.length>0;){const e=this.theSubInfos.shift();e?.destroy()}return this.destructor&&this.destructor(),this.owner=void 0,this.executedCbs=void 0,this.destructor=void 0,this}subInfo(e){return this.theSubInfos.push(e),this}subInfos(){return this.theSubInfos}name(){return`#info_${this.theName}_${e.instances}`}executed(e){return this.executedCbs||(this.executedCbs=[]),this.executedCbs.push(e),this.alreadyExecuted&&void 0!==this.owner&&e(this.owner),this}hasOwner(){return!!this.owner}};t(n,"instances",0);let s=n;const r=(e,t="unknown",n=!0)=>e instanceof s?e:new s(e,t,n);var o=Object.defineProperty,i=(e,t,n)=>((e,t,n)=>t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,t+"",n);class u{constructor(e,t,n){this.ownerFn=e,this.errorFn=t,this.disposedFn=n,i(this,"cbs",[])}give(e){return this.doDebug("value",e),this.disposed()||this.ownerFn(e),this}error(e){return this.doDebug("error",e),void 0!==this.errorFn&&this.errorFn(e),this}disposed(){return void 0!==this.disposedFn&&this.disposedFn()}debug(e){return this.cbs.push(e),this}doDebug(...e){this.cbs.forEach((t=>t(...e)))}}const h=e=>new u(e),c=(...e)=>{const t=new s((n=>{const s=new Set(Object.keys(e)),r=new Set,o={};Object.entries(e).forEach((([e,i])=>{t.subInfo(i),s.add(e),i.value(new u((t=>{r.add(e),o[e]=t,r.size>0&&r.size===s.size&&n.give(Object.values(o))})))}))}));return t},d=(...e)=>r((t=>{e.forEach((e=>{e.value(t),e.subInfo(e)}))})),a=(...e)=>{let t,n;const s=new WeakMap,o=r=>{const i=e[r],u=e[r+1];i.value(h((e=>{u||(n=e,t?.give(e)),u&&void 0!==n&&void 0!==t&&t.give(n),u&&!s.has(i)&&o(r+1),s.set(i,1)})))},i=r((e=>{t=e}));return i.executed((()=>{o(0)})),i},v=(e,t)=>{const n=new s((n=>{e.value(t(n))}));return n.subInfo(e),n},f=(e,t)=>{const n=r((n=>{e.value(h((e=>{n.give(t(e))})))}));return n.subInfo(e),n},l=(e,t,n)=>new s((s=>{e.value(h((e=>{t(e)?s.give(e):void 0!==n&&s.give(n)})))})).subInfo(e),w=(e,t)=>new u((n=>{e.give(t(n))}),(t=>{e.error(t)}),(()=>e.disposed())),b=(e,t)=>{const n=t((t=>e.give(t)));return new u((e=>{n(e)}))},g=(e,t)=>{let n;return e.value(h((e=>{n=e}))),{syncValue(){if(void 0===n&&void 0===t)throw new Error("info sync is empty");return n??t},filled:()=>void 0!==n}},y=(e,t)=>{const n=new s((t=>{const s=e.get();n.subInfo(s),s.value(t)}));return t&&(n.subInfo(t),t.value(h((()=>{n.destroy()})))),n},p=(e,t)=>{const n=new s((o=>{e.value(h((e=>{const i=[];e.forEach((e=>{let n=e;n instanceof s||(n=r(e));const o=t.get(n);i.push(o)}));const u=c(...i).value(o);n.subInfo(u)})))}));return n.subInfo(e),n},I=e=>{let t,n=e;const r=()=>{void 0!==t&&t.give(n)};return[new s((e=>{t=e,null!=n&&r()}),"of"),new u((e=>{n=e,r()}))]},x=e=>{const t=new s((t=>{let n=!1;e.value(h((e=>{n||(n=!0,t.give(e))})))}));return t.subInfo(e),t};var E=Object.defineProperty,m=(e,t,n)=>((e,t,n)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);class O{constructor(){m(this,"owners"),m(this,"innerOwner"),this.owners=new Set,this.innerOwner=new u((e=>{this.owners.forEach((t=>{t.give(e)}))}),(e=>{this.owners.forEach((t=>{t.error(e)}))}))}owner(){return this.innerOwner}size(){return this.owners.size}has(e){return this.owners.has(e)}add(e){return this.owners.add(e),this}remove(e){return this.owners.delete(e),this}destroy(){return this.owners.forEach((e=>{this.remove(e)})),this}}const F=e=>{const t=new O;let n;const r=new s((e=>(void 0===n||t.has(e)||e.give(n),t.add(e),()=>{t.destroy()})),"pool",!1);return r.subInfo(e),r.executed((()=>{const s=t.owner();e.value(new u((e=>{s.give(e),n=e})))})),[r,t]},C=e=>{const t=new O,n=new s((e=>(t.add(e),()=>{t.destroy()})),"pool",!1);return n.subInfo(e),n.executed((n=>{t.add(n),e.value(t.owner())})),[n,t]},S=e=>{const t=r((t=>{const n=[];e.value(h((e=>{n.push(e),t.give(n)})))}));return t.subInfo(e),t},j=e=>r((t=>{e.value(h((e=>{e.forEach((e=>{t.give(e)}))})))})),z=e=>r((t=>{e((e=>{t.give(e)}))})),k=(e,t,n,s)=>r((r=>{const o=(...e)=>{r.give(e)};return e[n](t,o),()=>{void 0!==s&&e[s](t,o)}})),P=e=>r((t=>{e.then((e=>{t.give(e)})).catch((e=>{t.error(e)}))})),D=e=>{if(void 0===e)throw new Error("lazy didn't receive buildingFn argument");return{get:(...t)=>e(...t)}},$=(e,t={})=>{if(void 0===e)throw new Error("PrivateClass didn't receive constructorFn argument");return{get:(...n)=>new e(...n,t)}};export{r as I,s as Information,h as O,u as Owner,O as OwnerPool,c as all,d as any,f as applied,a as chain,v as executorApplied,l as filtered,z as fromCallback,k as fromEvent,P as fromPromise,D as lazy,$ as lazyClass,y as lazyS,p as map,I as of,x as once,w as ownerApplied,b as ownerExecutorApplied,g as ownerSync,F as pool,C as poolStateless,S as sequence,j as stream};
|
|
2
2
|
//# sourceMappingURL=silentium.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.min.mjs","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?: InfoObjectType<T> | InfoExecutorType<T> | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) => new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["_Information","constructor","info","theName","onlyOneOwner","this","__publicField","instances","next","value","owner","give","Error","name","executedCbs","alreadyExecuted","forEach","cb","mbDestructor","destructor","destroy","theSubInfos","length","subInfo","shift","push","subInfos","executed","hasOwner","Information","I","Owner","ownerFn","errorFn","disposedFn","disposed","error","cause","O","all","infos","i","g","keysKnown","Set","Object","keys","keysFilled","result","entries","key","add","v","size","values","any","chain","theOwner","lastValue","respondedI","WeakMap","handleI","index","nextI","has","set","executorApplied","base","applier","applied","filtered","predicate","defaultValue","ownerApplied","ownerExecutorApplied","executor","ownerSync","syncValue","filled","lazyS","lazyI","destroyI","instance","get","map","targetI","val","valInfo","allI","of","incomeI","relatedO","sharedValue","notifyO","once","isFilled","OwnerPool","owners","innerOwner","shouldBePatron","remove","delete","pool","ownersPool","gp","poolStateless","sequence","o","stream","cv","fromCallback","waitForCb","fromEvent","emitter","eventName","subscribeMethod","unsubscribeMethod","handler","args","fromPromise","p","then","catch","e","lazy","buildingFn","lazyClass","constructorFn","modules"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.min.mjs","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?:\n | Information<T>\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) =>\n info instanceof Information\n ? info\n : new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\ntype OwnerDebugCB = (...data: unknown[]) => void;\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n private cbs: OwnerDebugCB[] = [];\n\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n this.doDebug(\"value\", value);\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n this.doDebug(\"error\", cause);\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n\n public debug(cb: OwnerDebugCB) {\n this.cbs.push(cb);\n return this;\n }\n\n private doDebug(...data: unknown[]) {\n this.cbs.forEach((cb) => cb(...data));\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["_Information","constructor","info","theName","onlyOneOwner","this","__publicField","instances","next","value","owner","give","Error","name","executedCbs","alreadyExecuted","forEach","cb","mbDestructor","destructor","destroy","theSubInfos","length","subInfo","shift","push","subInfos","executed","hasOwner","Information","I","Owner","ownerFn","errorFn","disposedFn","doDebug","disposed","error","cause","debug","cbs","data","O","all","infos","i","g","keysKnown","Set","Object","keys","keysFilled","result","entries","key","add","v","size","values","any","chain","theOwner","lastValue","respondedI","WeakMap","handleI","index","nextI","has","set","executorApplied","base","applier","applied","filtered","predicate","defaultValue","ownerApplied","ownerExecutorApplied","executor","ownerSync","syncValue","filled","lazyS","lazyI","destroyI","instance","get","map","targetI","val","valInfo","allI","of","incomeI","relatedO","sharedValue","notifyO","once","isFilled","OwnerPool","owners","innerOwner","shouldBePatron","remove","delete","pool","ownersPool","gp","poolStateless","sequence","o","stream","cv","fromCallback","waitForCb","fromEvent","emitter","eventName","subscribeMethod","unsubscribeMethod","handler","args","fromPromise","p","then","catch","e","lazy","buildingFn","lazyClass","constructorFn","modules"],"mappings":"0JAcO,MAAMA,EAAN,MAAMA,EAQJ,WAAAC,CACGC,EAIAC,EAAU,UACVC,GAAe,GALfC,KAAAH,KAAAA,EAIAG,KAAAF,QAAAA,EACAE,KAAAD,aAAAA,EAZVE,EAAAD,KAAQ,cAAsC,IACtCC,EAAAD,KAAA,cACAC,EAAAD,KAAA,SACAC,EAAAD,KAAA,eACRC,EAAAD,KAAQ,mBAAkB,GAUxBL,EAAYO,WAAa,CAAA,CAMnB,IAAAC,CAAKC,GAIJ,YAHY,IAAfJ,KAAKK,OACFL,KAAAK,MAAMC,KAAKF,GAEXJ,IAAA,CAMF,KAAAI,CAAMC,GACX,GAAIL,KAAKD,mBAA+B,IAAfC,KAAKK,MAC5B,MAAM,IAAIE,MAAM,mCAAmCP,KAAKQ,UAStD,GANJR,KAAKK,MAAQA,OACY,IAArBL,KAAKS,aAA8BT,KAAKU,kBAC1CV,KAAKS,YAAYE,SAASC,GAAOA,EAAGP,KACpCL,KAAKU,iBAAkB,QAGP,IAAdV,KAAKH,KACA,OAAAG,KAGL,GAAqB,mBAAdA,KAAKH,KAAqB,CAC7B,MAAAgB,EAAeb,KAAKH,KAAKQ,QAET,IAApBL,KAAKc,iBACY,IAAjBD,GACAb,KAAKH,OAASgB,GACU,mBAAjBA,IAEPb,KAAKc,WAAaD,EACpB,KAEqB,iBAAdb,KAAKH,MACE,OAAdG,KAAKH,MACL,UAAWG,KAAKH,MACW,mBAApBG,KAAKH,KAAKO,MAEZJ,KAAAH,KAAKO,MAAMC,GAEXL,KAAAG,KAAKH,KAAKH,MAGV,OAAAG,IAAA,CAMF,OAAAe,GACE,KAAAf,KAAKgB,YAAYC,OAAS,GAAG,CAC5B,MAAAC,EAAUlB,KAAKgB,YAAYG,QACjCD,GAASH,SAAQ,CAQZ,OANHf,KAAKc,YACPd,KAAKc,aAEPd,KAAKK,WAAQ,EACbL,KAAKS,iBAAc,EACnBT,KAAKc,gBAAa,EACXd,IAAA,CAMF,OAAAkB,CAAQrB,GAEN,OADFG,KAAAgB,YAAYI,KAAKvB,GACfG,IAAA,CAGF,QAAAqB,GACL,OAAOrB,KAAKgB,WAAA,CAGP,IAAAR,GACL,MAAO,SAASR,KAAKF,WAAWH,EAAYO,WAAS,CAGhD,QAAAoB,CAASV,GAQP,OAPFZ,KAAKS,cACRT,KAAKS,YAAc,IAEhBT,KAAAS,YAAYW,KAAKR,GAClBZ,KAAKU,sBAAkC,IAAfV,KAAKK,OAC/BO,EAAGZ,KAAKK,OAEHL,IAAA,CAGF,QAAAuB,GACE,QAAEvB,KAAKK,KAAA,GAnHhBJ,EADWN,EACI,YAAY,GADtB,IAAM6B,EAAN7B,EAwHA,MAAM8B,EAAI,CACf5B,EAKAC,EAAU,UACVC,GAAe,IAEfF,aAAgB2B,EACZ3B,EACA,IAAI2B,EAAY3B,EAAMC,EAASC,wICxI9B,MAAM2B,EAGJ,WAAA9B,CACG+B,EACAC,EACAC,GAFA7B,KAAA2B,QAAAA,EACA3B,KAAA4B,QAAAA,EACA5B,KAAA6B,WAAAA,EALV5B,EAAAD,KAAQ,MAAsB,GAAC,CAQxB,IAAAM,CAAKF,GAKH,OAJFJ,KAAA8B,QAAQ,QAAS1B,GACjBJ,KAAK+B,YACR/B,KAAK2B,QAAQvB,GAERJ,IAAA,CAGF,KAAAgC,CAAMC,GAKJ,OAJFjC,KAAA8B,QAAQ,QAASG,QACD,IAAjBjC,KAAK4B,SACP5B,KAAK4B,QAAQK,GAERjC,IAAA,CAGF,QAAA+B,GACL,YAA2B,IAApB/B,KAAK6B,YAA2B7B,KAAK6B,YAAe,CAGtD,KAAAK,CAAMtB,GAEJ,OADFZ,KAAAmC,IAAIf,KAAKR,GACPZ,IAAA,CAGD,OAAA8B,IAAWM,GACjBpC,KAAKmC,IAAIxB,SAASC,GAAOA,KAAMwB,IAAK,EAIjC,MAAMC,EAAQV,GAAkC,IAAID,EAAMC,GC5BpDW,EAAM,IAAmCC,KACpD,MAAMC,EAAI,IAAIhB,GAAwCiB,IACpD,MAAMC,EAAY,IAAIC,IAAYC,OAAOC,KAAKN,IACxCO,MAAiBH,IAIjBI,EAAkC,CAAC,EAElCH,OAAAI,QAAQT,GAAO5B,SAAQ,EAAEsC,EAAKpD,MACnC2C,EAAEtB,QAAQrB,GACV6C,EAAUQ,IAAID,GACTpD,EAAAO,MACH,IAAIsB,GAAOyB,IACTL,EAAWI,IAAID,GACfF,EAAOE,GAAOE,EAVXL,EAAWM,KAAO,GAAKN,EAAWM,OAASV,EAAUU,MAYtDX,EAAEnC,KAAKsC,OAAOS,OAAON,GAAoC,IAG/D,GACD,IAGI,OAAAP,CAAA,ECrCIc,EAAM,IAAOf,IACXd,GAAGgB,IACRF,EAAA5B,SAASd,IACbA,EAAKO,MAAMqC,GACX5C,EAAKqB,QAAQrB,EAAI,GAClB,ICAQ0D,EAAQ,IAChBhB,KAEC,IAAAiB,EACAC,EACE,MAAAC,MAAiBC,QAEjBC,EAAWC,IACThE,MAAAA,EAAO0C,EAAMsB,GACbC,EAAQvB,EAAMsB,EAAQ,GAE5BhE,EAAKO,MACHiC,GAAGc,IACIW,IACSL,EAAAN,EACZK,GAAUlD,KAAK6C,IAGbW,QAAuB,IAAdL,QAAwC,IAAbD,GACtCA,EAASlD,KAAKmD,GAGZK,IAAUJ,EAAWK,IAAIlE,IAC3B+D,EAAQC,EAAQ,GAGPH,EAAAM,IAAInE,EAAM,EAAC,IAE1B,EAGIA,EAAO4B,GAAYgB,IACZe,EAAAf,CAAA,IAON,OAJP5C,EAAKyB,UAAS,KACZsC,EAAQ,EAAC,IAGJ/D,CAAA,EC3CIoE,EAAkB,CAC7BC,EACAC,KAEA,MAAM3B,EAAI,IAAIhB,GAAgBiB,IACvByB,EAAA9D,MAAM+D,EAAQ1B,GAAE,IAIhB,OAFPD,EAAEtB,QAAQgD,GAEH1B,CAAA,ECVI4B,EAAU,CAAOF,EAAsBC,KAC5C,MAAAtE,EAAO4B,GAAGgB,IACTyB,EAAA9D,MACHiC,GAAGc,IACCV,EAAAnC,KAAK6D,EAAQhB,GAAE,IAErB,IAIK,OAFPtD,EAAKqB,QAAQgD,GAENrE,CAAA,ECRIwE,EAAW,CACtBH,EACAI,EACAC,IAEO,IAAI/C,GAAgBiB,IACpByB,EAAA9D,MACHiC,GAAGc,IACGmB,EAAUnB,GACZV,EAAEnC,KAAK6C,QACmB,IAAjBoB,GACT9B,EAAEnC,KAAKiE,EAAY,IAGzB,IACCrD,QAAQgD,GCjBAM,EAAe,CAC1BN,EACAC,IAEO,IAAIzC,GACRyB,IACMe,EAAA5D,KAAK6D,EAAQhB,GAAE,IAErBlB,IACCiC,EAAKlC,MAAMC,EAAK,IAElB,IAAMiC,EAAKnC,aCXF0C,EAAuB,CAClCP,EACAC,KAEA,MAAMO,EAAWP,GAAShB,GAAMe,EAAK5D,KAAK6C,KACnC,OAAA,IAAIzB,GAAUyB,IACnBuB,EAASvB,EAAC,GACX,ECAUwB,EAAY,CACvBT,EACAK,KAEI,IAAAd,EAQG,OANFS,EAAA9D,MACHiC,GAAGc,IACWM,EAAAN,CAAA,KAIT,CACL,SAAAyB,GACM,QAAc,IAAdnB,QAA4C,IAAjBc,EACvB,MAAA,IAAIhE,MAAM,sBAElB,OAAQkD,GAAac,CACvB,EACAM,OAAS,SACc,IAAdpB,EAEX,EC1BWqB,EAAQ,CACnBC,EACAC,KAEA,MAAMnF,EAAO,IAAI2B,GAAgBiB,IACzB,MAAAwC,EAAWF,EAAMG,MACvBrF,EAAKqB,QAAQ+D,GACbA,EAAS7E,MAAMqC,EAAC,IAYX,OATHuC,IACFnF,EAAKqB,QAAQ8D,GACJA,EAAA5E,MACPiC,GAAE,KACAxC,EAAKkB,SAAQ,MAKZlB,CAAA,EClBIsF,EAAM,CACjBjB,EACAkB,KAEA,MAAM5C,EAAI,IAAIhB,GAAmBiB,IAC1ByB,EAAA9D,MACHiC,GAAGc,IACD,MAAMZ,EAA2B,GAC/BY,EAAAxC,SAAS0E,IACT,IAAIC,EAA8BD,EAC5BC,aAAmB9D,IACvB8D,EAAU7D,EAAE4D,IAER,MAAAxF,EAAOuF,EAAQF,IAAII,GACzB/C,EAAMnB,KAAKvB,EAAI,IAEjB,MAAM0F,EAAOjD,KAAOC,GAAOnC,MAAMqC,GACjCD,EAAEtB,QAAQqE,EAAI,IAElB,IAIK,OAFP/C,EAAEtB,QAAQgD,GAEH1B,CAAA,ECxBIgD,EAASC,IACpB,IACIC,EADAC,EAAcF,EAGlB,MAAMG,EAAU,UACG,IAAbF,GACFA,EAASpF,KAAKqF,EAAW,EAWtB,MAAA,CAPM,IAAInE,GAAgBiB,IACpBiD,EAAAjD,EACPkD,SACMC,GAAA,GAET,MAID,IAAIlE,GAAUyB,IACEwC,EAAAxC,EACNyC,GAAA,IAEZ,ECxBWC,EAAW3B,IACtB,MAAMrE,EAAO,IAAI2B,GAAgBiB,IAC/B,IAAIqD,GAAW,EACV5B,EAAA9D,MACHiC,GAAGc,IACI2C,IACQA,GAAA,EACXrD,EAAEnC,KAAK6C,GAAC,IAGd,IAIK,OAFPtD,EAAKqB,QAAQgD,GAENrE,CAAA,4JChBF,MAAMkG,EAIJ,WAAAnG,GAHCK,EAAAD,KAAA,UACAC,EAAAD,KAAA,cAGDA,KAAAgG,WAAarD,IAClB3C,KAAKiG,WAAa,IAAIvE,GACnByB,IACMnD,KAAAgG,OAAOrF,SAAS8B,IACnBA,EAAEnC,KAAK6C,EAAC,GACT,IAEFlB,IACMjC,KAAAgG,OAAOrF,SAAS8B,IACnBA,EAAET,MAAMC,EAAK,GACd,GAEL,CAGK,KAAA5B,GACL,OAAOL,KAAKiG,UAAA,CAGP,IAAA7C,GACL,OAAOpD,KAAKgG,OAAO5C,IAAA,CAGd,GAAAW,CAAI1D,GACF,OAAAL,KAAKgG,OAAOjC,IAAI1D,EAAK,CAGvB,GAAA6C,CAAIgD,GAEF,OADFlG,KAAAgG,OAAO9C,IAAIgD,GACTlG,IAAA,CAGF,MAAAmG,CAAO1D,GAEL,OADFzC,KAAAgG,OAAOI,OAAO3D,GACZzC,IAAA,CAGF,OAAAe,GAIE,OAHFf,KAAAgG,OAAOrF,SAAS8B,IACnBzC,KAAKmG,OAAO1D,EAAC,IAERzC,IAAA,EC5CE,MAAAqG,EAAWnC,IAChB,MAAAoC,EAAa,IAAIP,EACnB,IAAAtC,EAEJ,MAAMjB,EAAI,IAAIhB,GACXiB,SACmB,IAAdgB,GAA4B6C,EAAWvC,IAAItB,IAC7CA,EAAEnC,KAAKmD,GAET6C,EAAWpD,IAAIT,GAER,KACL6D,EAAWvF,SAAQ,IAGvB,QACA,GAcK,OAZPyB,EAAEtB,QAAQgD,GAEV1B,EAAElB,UAAS,KACH,MAAAiF,EAAKD,EAAWjG,QACjB6D,EAAA9D,MACH,IAAIsB,GAAOyB,IACToD,EAAGjG,KAAK6C,GACIM,EAAAN,CAAA,IAEhB,IAGK,CAACX,EAAG8D,EAAU,EAGVE,EAAoBtC,IACzB,MAAAoC,EAAa,IAAIP,EAEjBvD,EAAI,IAAIhB,GACXiB,IACC6D,EAAWpD,IAAIT,GAER,KACL6D,EAAWvF,SAAQ,IAGvB,QACA,GASK,OAPPyB,EAAEtB,QAAQgD,GAER1B,EAAAlB,UAAUmB,IACV6D,EAAWpD,IAAIT,GACVyB,EAAA9D,MAAMkG,EAAWjG,QAAO,IAGxB,CAACmC,EAAG8D,EAAU,ECxDVG,EAAevC,IACpB,MAAA1B,EAAIf,GAAQiF,IAChB,MAAM3D,EAAc,GAEfmB,EAAA9D,MACHiC,GAAGc,IACDJ,EAAO3B,KAAK+B,GACZuD,EAAEpG,KAAKyC,EAAM,IAEjB,IAIK,OAFPP,EAAEtB,QAAQgD,GAEH1B,CAAA,ECbImE,EAAazC,GACdzC,GAAMiF,IACTxC,EAAA9D,MACHiC,GAAGc,IACCA,EAAAxC,SAASiG,IACTF,EAAEpG,KAAKsG,EAAE,GACV,IAEL,ICPSC,EAAmBC,GACvBrF,GAAGiF,IACRI,GAAW3D,IACTuD,EAAEpG,KAAK6C,EAAC,GACT,ICLQ4D,EAAY,CACvBC,EACAC,EACAC,EACAC,IAEO1F,GAAGiF,IACF,MAAAU,EAAU,IAAIC,KAClBX,EAAEpG,KAAK+G,EAAI,EAGb,OADQL,EAAAE,GAAiBD,EAAWG,GAC7B,UACqB,IAAtBD,GACMH,EAAAG,GAAmBF,EAAWG,EAAO,CAEjD,ICfSE,EAAkBC,GACtB9F,GAAGiF,IACNa,EAAAC,MAAMrE,IACNuD,EAAEpG,KAAK6C,EAAC,IACPsE,OAAOC,IACRhB,EAAE1E,MAAM0F,EAAC,GACV,ICPQC,EAAWC,IACtB,QAAmB,IAAfA,EACI,MAAA,IAAIrH,MAAM,2CAGX,MAAA,CACL2E,QAAuCmC,IAC9BO,KAAcP,GAEzB,ECDWQ,EAAY,CACvBC,EACAC,EAAmC,MAEnC,QAAsB,IAAlBD,EACI,MAAA,IAAIvH,MAAM,sDAGX,MAAA,CACL2E,QAAuCmC,IAC9B,IAAKS,KACPT,EACHU,GAGN"}
|
package/dist/silentium.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var __defProp$
|
|
2
|
-
var __defNormalProp$
|
|
3
|
-
var __publicField$
|
|
1
|
+
var __defProp$2 = Object.defineProperty;
|
|
2
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField$2 = (obj, key, value) => __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
const _Information = class _Information {
|
|
5
5
|
constructor(info, theName = "unknown", onlyOneOwner = true) {
|
|
6
6
|
this.info = info;
|
|
7
7
|
this.theName = theName;
|
|
8
8
|
this.onlyOneOwner = onlyOneOwner;
|
|
9
|
-
__publicField$
|
|
10
|
-
__publicField$
|
|
11
|
-
__publicField$
|
|
12
|
-
__publicField$
|
|
13
|
-
__publicField$
|
|
9
|
+
__publicField$2(this, "theSubInfos", []);
|
|
10
|
+
__publicField$2(this, "destructor");
|
|
11
|
+
__publicField$2(this, "owner");
|
|
12
|
+
__publicField$2(this, "executedCbs");
|
|
13
|
+
__publicField$2(this, "alreadyExecuted", false);
|
|
14
14
|
_Information.instances += 1;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
@@ -92,23 +92,29 @@ const _Information = class _Information {
|
|
|
92
92
|
return !!this.owner;
|
|
93
93
|
}
|
|
94
94
|
};
|
|
95
|
-
__publicField$
|
|
95
|
+
__publicField$2(_Information, "instances", 0);
|
|
96
96
|
let Information = _Information;
|
|
97
|
-
const I = (info, theName = "unknown", onlyOneOwner = true) => new Information(info, theName, onlyOneOwner);
|
|
97
|
+
const I = (info, theName = "unknown", onlyOneOwner = true) => info instanceof Information ? info : new Information(info, theName, onlyOneOwner);
|
|
98
98
|
|
|
99
|
+
var __defProp$1 = Object.defineProperty;
|
|
100
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
101
|
+
var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, key + "" , value);
|
|
99
102
|
class Owner {
|
|
100
103
|
constructor(ownerFn, errorFn, disposedFn) {
|
|
101
104
|
this.ownerFn = ownerFn;
|
|
102
105
|
this.errorFn = errorFn;
|
|
103
106
|
this.disposedFn = disposedFn;
|
|
107
|
+
__publicField$1(this, "cbs", []);
|
|
104
108
|
}
|
|
105
109
|
give(value) {
|
|
110
|
+
this.doDebug("value", value);
|
|
106
111
|
if (!this.disposed()) {
|
|
107
112
|
this.ownerFn(value);
|
|
108
113
|
}
|
|
109
114
|
return this;
|
|
110
115
|
}
|
|
111
116
|
error(cause) {
|
|
117
|
+
this.doDebug("error", cause);
|
|
112
118
|
if (this.errorFn !== void 0) {
|
|
113
119
|
this.errorFn(cause);
|
|
114
120
|
}
|
|
@@ -117,6 +123,13 @@ class Owner {
|
|
|
117
123
|
disposed() {
|
|
118
124
|
return this.disposedFn !== void 0 ? this.disposedFn() : false;
|
|
119
125
|
}
|
|
126
|
+
debug(cb) {
|
|
127
|
+
this.cbs.push(cb);
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
doDebug(...data) {
|
|
131
|
+
this.cbs.forEach((cb) => cb(...data));
|
|
132
|
+
}
|
|
120
133
|
}
|
|
121
134
|
const O = (ownerFn) => new Owner(ownerFn);
|
|
122
135
|
|
package/dist/silentium.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.mjs","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?: InfoObjectType<T> | InfoExecutorType<T> | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) => new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["__publicField","info"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.mjs","sources":["../src/Information/Information.ts","../src/Owner/Owner.ts","../src/Information/All.ts","../src/Information/Any.ts","../src/Information/Chain.ts","../src/Information/ExecutorApplied.ts","../src/Information/Applied.ts","../src/Information/Filtered.ts","../src/Owner/OwnerApplied.ts","../src/Owner/OwnerExecutorApplied.ts","../src/Owner/OwnerSync.ts","../src/Information/Lazy.ts","../src/Information/Map.ts","../src/Information/Of.ts","../src/Information/Once.ts","../src/utils/OwnerPool.ts","../src/Information/Pool.ts","../src/Information/Sequence.ts","../src/Information/Stream.ts","../src/Information/FromCallback.ts","../src/Information/FromEvent.ts","../src/Information/FromPromise.ts","../src/utils/Lazy.ts","../src/utils/LazyClass.ts"],"sourcesContent":["import { Owner } from \"../Owner/Owner\";\nimport { InformationDataType } from \"../types/InformationType\";\n\ntype InfoExecutorType<T> = (g: Owner<T>) => (() => void | undefined) | void;\ntype InfoObjectType<T> = {\n value: InfoExecutorType<T>;\n};\n\ntype InformationExecutedCb<T> = (g: Owner<T>) => void;\n\n/**\n * Main information representation\n * https://silentium-lab.github.io/silentium/#/en/information\n */\nexport class Information<T = any> {\n private static instances = 0;\n private theSubInfos: Information<unknown>[] = [];\n private destructor?: () => void;\n private owner?: Owner<T>;\n private executedCbs?: InformationExecutedCb<T>[];\n private alreadyExecuted = false;\n\n public constructor(\n private info?:\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n private theName = \"unknown\",\n private onlyOneOwner = true,\n ) {\n Information.instances += 1;\n }\n\n /**\n * Следующее значение источника\n */\n private next(value: T) {\n if (this.owner !== undefined) {\n this.owner.give(value);\n }\n return this;\n }\n\n /**\n * Возможность гостю получить информацию от источника\n */\n public value(owner: Owner<T>) {\n if (this.onlyOneOwner && this.owner !== undefined) {\n throw new Error(`owner already connected to info ${this.name()}`);\n }\n\n this.owner = owner;\n if (this.executedCbs !== undefined && !this.alreadyExecuted) {\n this.executedCbs.forEach((cb) => cb(owner));\n this.alreadyExecuted = true;\n }\n\n if (this.info === undefined) {\n return this;\n }\n\n if (typeof this.info === \"function\") {\n const mbDestructor = this.info(owner);\n if (\n this.destructor === undefined &&\n mbDestructor !== undefined &&\n this.info !== mbDestructor &&\n typeof mbDestructor === \"function\"\n ) {\n this.destructor = mbDestructor as () => void;\n }\n } else if (\n typeof this.info === \"object\" &&\n this.info !== null &&\n \"value\" in this.info &&\n typeof this.info.value === \"function\"\n ) {\n this.info.value(owner);\n } else {\n this.next(this.info as T);\n }\n\n return this;\n }\n\n /**\n * Ability to destroy the information info\n */\n public destroy() {\n while (this.theSubInfos.length > 0) {\n const subInfo = this.theSubInfos.shift();\n subInfo?.destroy();\n }\n if (this.destructor) {\n this.destructor();\n }\n this.owner = undefined;\n this.executedCbs = undefined;\n this.destructor = undefined;\n return this;\n }\n\n /**\n * The ability to link another info to the current info\n */\n public subInfo(info: Information<any>) {\n this.theSubInfos.push(info);\n return this;\n }\n\n public subInfos() {\n return this.theSubInfos;\n }\n\n public name() {\n return `#info_${this.theName}_${Information.instances}`;\n }\n\n public executed(cb: InformationExecutedCb<T>) {\n if (!this.executedCbs) {\n this.executedCbs = [];\n }\n this.executedCbs.push(cb);\n if (this.alreadyExecuted && this.owner !== undefined) {\n cb(this.owner);\n }\n return this;\n }\n\n public hasOwner(): boolean {\n return !!this.owner;\n }\n}\n\nexport const I = <T>(\n info?:\n | Information<T>\n | InfoObjectType<T>\n | InfoExecutorType<T>\n | InformationDataType<T>,\n theName = \"unknown\",\n onlyOneOwner = true,\n) =>\n info instanceof Information\n ? info\n : new Information(info, theName, onlyOneOwner);\n","import { OwnerExecutorType } from \"../types/OwnerType\";\n\ntype OwnerDebugCB = (...data: unknown[]) => void;\n\n/**\n * Information owner, if information\n * has owner than information executed\n * https://silentium-lab.github.io/silentium/#/en/owner\n */\nexport class Owner<T = any> {\n private cbs: OwnerDebugCB[] = [];\n\n public constructor(\n private ownerFn: OwnerExecutorType<T>,\n private errorFn?: (cause: unknown) => void,\n private disposedFn?: () => boolean,\n ) {}\n\n public give(value: T) {\n this.doDebug(\"value\", value);\n if (!this.disposed()) {\n this.ownerFn(value);\n }\n return this;\n }\n\n public error(cause: unknown) {\n this.doDebug(\"error\", cause);\n if (this.errorFn !== undefined) {\n this.errorFn(cause);\n }\n return this;\n }\n\n public disposed() {\n return this.disposedFn !== undefined ? this.disposedFn() : false;\n }\n\n public debug(cb: OwnerDebugCB) {\n this.cbs.push(cb);\n return this;\n }\n\n private doDebug(...data: unknown[]) {\n this.cbs.forEach((cb) => cb(...data));\n }\n}\n\nexport const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);\n","import { Owner } from \"../Owner/Owner\";\nimport { InformationType } from \"../types/InformationType\";\nimport { Information } from \"./Information\";\n\ntype ExtractType<T> = T extends InformationType<infer U> ? U : never;\ntype ExtractTypeS<T> = T extends Information<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends InformationType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\nexport type ExtractTypesFromArrayS<T extends Information<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\n/**\n * Combines multiple information sources into a single unified source\n * represented as an array containing values from all sources\n * https://silentium-lab.github.io/silentium/#/en/information/all\n */\nexport const all = <const T extends Information[]>(...infos: T) => {\n const i = new Information<ExtractTypesFromArrayS<T>>((g) => {\n const keysKnown = new Set<string>(Object.keys(infos));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const result: Record<string, unknown> = {};\n\n Object.entries(infos).forEach(([key, info]) => {\n i.subInfo(info);\n keysKnown.add(key);\n info.value(\n new Owner((v) => {\n keysFilled.add(key);\n result[key] = v;\n if (isAllFilled()) {\n g.give(Object.values(result) as ExtractTypesFromArrayS<T>);\n }\n }),\n );\n });\n });\n\n return i;\n};\n","import { I, Information } from \"./Information\";\n\n/**\n * From a set of information sources we get\n * a common response from any source for a single owner\n * https://silentium-lab.github.io/silentium/#/en/information/any\n */\nexport const any = <T>(...infos: Information<T>[]) => {\n const info = I((g) => {\n infos.forEach((info) => {\n info.value(g);\n info.subInfo(info);\n });\n });\n\n return info;\n};\n","import { O, Owner } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends any[]> = T extends [...infer U, infer L] ? L : never;\n\n/**\n * The set of information sources forms a sequential chain where each source provides\n * an answer. The final answer will be the output result. If any source in the chain\n * provides a new answer, the component's overall response will be repeated.\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const chain = <T extends Information[]>(\n ...infos: T\n): Information<Last<T>> => {\n let theOwner: Owner<Last<T>> | undefined;\n let lastValue: Last<T> | undefined;\n const respondedI = new WeakMap();\n\n const handleI = (index: number) => {\n const info = infos[index];\n const nextI = infos[index + 1];\n\n info.value(\n O((v) => {\n if (!nextI) {\n lastValue = v;\n theOwner?.give(v);\n }\n\n if (nextI && lastValue !== undefined && theOwner !== undefined) {\n theOwner.give(lastValue);\n }\n\n if (nextI && !respondedI.has(info)) {\n handleI(index + 1);\n }\n\n respondedI.set(info, 1);\n }),\n );\n };\n\n const info = I<Last<T>>((g) => {\n theOwner = g;\n });\n\n info.executed(() => {\n handleI(0);\n });\n\n return info;\n};\n","import { Owner } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information to which a function is applied in order\n * to control the value passing process\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const executorApplied = <T>(\n base: Information<T>,\n applier: (executor: Owner<T>) => Owner<T>,\n) => {\n const i = new Information<T>((g) => {\n base.value(applier(g));\n });\n i.subInfo(base);\n\n return i;\n};\n","import { O } from \"../Owner/Owner\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Information to which the function was applied to change the value\n * https://silentium-lab.github.io/silentium/#/en/information/applied\n */\nexport const applied = <T, R>(base: Information<T>, applier: (v: T) => R) => {\n const info = I((g) => {\n base.value(\n O((v) => {\n g.give(applier(v));\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { O } from \"../Owner/Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Information whose value is being validated\n * via a predicate; if the predicate returns true, the value\n * can be passed to the output\n * https://silentium-lab.github.io/silentium/#/en/information/filtered\n */\nexport const filtered = <T>(\n base: Information<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return new Information<T>((g) => {\n base.value(\n O((v) => {\n if (predicate(v)) {\n g.give(v);\n } else if (defaultValue !== undefined) {\n g.give(defaultValue);\n }\n }),\n );\n }).subInfo(base);\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which a function is applied that modifies the incoming\n * value it receives\n * https://silentium-lab.github.io/silentium/#/en/owner/applied\n */\nexport const ownerApplied = <T, R>(\n base: Owner<R>,\n applier: (value: T) => R,\n) => {\n return new Owner<T>(\n (v) => {\n base.give(applier(v));\n },\n (cause) => {\n base.error(cause);\n },\n () => base.disposed(),\n );\n};\n","import { Owner } from \"./Owner\";\n\n/**\n * Owner to which the function is applied that\n * controls the conditions for passing the value\n * https://silentium-lab.github.io/silentium/#/en/owner/executor-applied\n */\nexport const ownerExecutorApplied = <T>(\n base: Owner<T>,\n applier: (ge: (v: T) => void) => (v: T) => void,\n) => {\n const executor = applier((v) => base.give(v));\n return new Owner<T>((v) => {\n executor(v);\n });\n};\n","import { Information } from \"../Information\";\nimport { O } from \".\";\n\nexport interface InfoSync<T> {\n syncValue(): T;\n filled(): boolean;\n}\n\n/**\n * Owner that can return a synchronous value\n * from the information passed to it. If there is no value and no\n * defaultValue, an error will occur\n * https://silentium-lab.github.io/silentium/#/en/owner/sync\n */\nexport const ownerSync = <T>(\n base: Information<T>,\n defaultValue?: T,\n): InfoSync<T> => {\n let lastValue: T | undefined;\n\n base.value(\n O((v) => {\n lastValue = v;\n }),\n );\n\n return {\n syncValue() {\n if (lastValue === undefined && defaultValue === undefined) {\n throw new Error(\"info sync is empty\");\n }\n return (lastValue ?? defaultValue) as T;\n },\n filled() {\n return lastValue !== undefined;\n },\n };\n};\n","import { O } from \"../Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { Information } from \"./Information\";\n\n/**\n * Helps in the process of executing information to create\n * a new information object and also destroy it if\n * destruction information is received\n * https://silentium-lab.github.io/silentium/#/en/information/lazy\n */\nexport const lazyS = <T>(\n lazyI: LazyType<Information<T>>,\n destroyI?: Information<unknown>,\n) => {\n const info = new Information<T>((g) => {\n const instance = lazyI.get();\n info.subInfo(instance);\n instance.value(g);\n });\n\n if (destroyI) {\n info.subInfo(destroyI);\n destroyI.value(\n O(() => {\n info.destroy();\n }),\n );\n }\n\n return info;\n};\n","import { InformationDataType } from \"../types\";\nimport { O } from \"../Owner/Owner\";\nimport { LazyType } from \"../types/LazyType\";\nimport { all } from \"./All\";\nimport { I, Information } from \"./Information\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n * https://silentium-lab.github.io/silentium/#/en/information/map\n */\nexport const map = <T, TG>(\n base: Information<T[]>,\n targetI: LazyType<Information<TG>>,\n) => {\n const i = new Information<TG[]>((g) => {\n base.value(\n O((v) => {\n const infos: Information<TG>[] = [];\n v.forEach((val) => {\n let valInfo: Information<T> | T = val;\n if (!(valInfo instanceof Information)) {\n valInfo = I(val as InformationDataType<T>);\n }\n const info = targetI.get(valInfo);\n infos.push(info);\n });\n const allI = all(...infos).value(g);\n i.subInfo(allI);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { InformationDataType } from \"../types/InformationType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport const of = <T>(incomeI?: InformationDataType<T>) => {\n let sharedValue = incomeI as T;\n let relatedO: Owner<T> | undefined;\n\n const notifyO = () => {\n if (relatedO !== undefined) {\n relatedO.give(sharedValue);\n }\n };\n\n const info = new Information<T>((g) => {\n relatedO = g;\n if (sharedValue !== undefined && sharedValue !== null) {\n notifyO();\n }\n }, \"of\");\n\n return [\n info,\n new Owner<T>((v) => {\n sharedValue = v;\n notifyO();\n }),\n ] as const;\n};\n","import { O } from \"../Owner\";\nimport { Information } from \"./Information\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n * https://silentium-lab.github.io/silentium/#/en/information/once\n */\nexport const once = <T>(base: Information<T>) => {\n const info = new Information<T>((g) => {\n let isFilled = false;\n base.value(\n O((v) => {\n if (!isFilled) {\n isFilled = true;\n g.give(v);\n }\n }),\n );\n });\n info.subInfo(base);\n\n return info;\n};\n","import { Owner } from \"../Owner\";\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<Owner<T>>;\n private innerOwner: Owner<T>;\n\n public constructor() {\n this.owners = new Set<Owner<T>>();\n this.innerOwner = new Owner(\n (v) => {\n this.owners.forEach((g) => {\n g.give(v);\n });\n },\n (cause) => {\n this.owners.forEach((g) => {\n g.error(cause);\n });\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: Owner<T>): boolean {\n return this.owners.has(owner);\n }\n\n public add(shouldBePatron: Owner<T>) {\n this.owners.add(shouldBePatron);\n return this;\n }\n\n public remove(g: Owner<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 { Owner } from \"../Owner\";\nimport { Information } from \"./Information\";\nimport { OwnerPool } from \"../utils/OwnerPool\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n * https://silentium-lab.github.io/silentium/#/en/information/pool\n */\nexport const pool = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n let lastValue: T | undefined;\n\n const i = new Information<T>(\n (g) => {\n if (lastValue !== undefined && !ownersPool.has(g)) {\n g.give(lastValue);\n }\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed(() => {\n const gp = ownersPool.owner();\n base.value(\n new Owner((v) => {\n gp.give(v);\n lastValue = v;\n }),\n );\n });\n\n return [i, ownersPool] as const;\n};\n\nexport const poolStateless = <T>(base: Information<T>) => {\n const ownersPool = new OwnerPool<T>();\n\n const i = new Information<T>(\n (g) => {\n ownersPool.add(g);\n\n return () => {\n ownersPool.destroy();\n };\n },\n \"pool\",\n false,\n );\n i.subInfo(base);\n\n i.executed((g) => {\n ownersPool.add(g);\n base.value(ownersPool.owner());\n });\n\n return [i, ownersPool] as const;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * A component that takes one value at a time and returns an array\n * https://silentium-lab.github.io/silentium/#/en/information/sequence\n */\nexport const sequence = <T>(base: Information<T>): Information<T[]> => {\n const i = I<T[]>((o) => {\n const result: T[] = [];\n\n base.value(\n O((v) => {\n result.push(v);\n o.give(result);\n }),\n );\n });\n i.subInfo(base);\n\n return i;\n};\n","import { I, Information } from \"../Information\";\nimport { O } from \"../Owner\";\n\n/**\n * Component that receives a data array and yields values one by one\n * https://silentium-lab.github.io/silentium/#/en/information/stream\n */\nexport const stream = <T>(base: Information<T[]>): Information<T> => {\n const i = I<T>((o) => {\n base.value(\n O((v) => {\n v.forEach((cv) => {\n o.give(cv);\n });\n }),\n );\n });\n\n return i;\n};\n","import { I } from \"../Information\";\n\n/**\n * When receiving a reference to a function expecting a callback, the component\n * creates its own callback, and the data received in this callback\n * will become the value of the information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-callback\n */\nexport const fromCallback = <T>(waitForCb: (cb: (v: T) => any) => unknown) => {\n return I((o) => {\n waitForCb((v) => {\n o.give(v);\n });\n });\n};\n","import { I } from \"../Information\";\n\n/**\n * A component that receives data from an event and\n * presents it as an information object\n * https://silentium-lab.github.io/silentium/#/en/information/from-event\n */\nexport const fromEvent = <T extends []>(\n emitter: any,\n eventName: string,\n subscribeMethod: string,\n unsubscribeMethod?: string,\n) => {\n return I((o) => {\n const handler = (...args: T) => {\n o.give(args);\n };\n emitter[subscribeMethod](eventName, handler);\n return () => {\n if (unsubscribeMethod !== undefined) {\n emitter[unsubscribeMethod](eventName, handler);\n }\n };\n });\n};\n","import { I, Information } from \"../Information/Information\";\n\n/**\n * Component that gets a value from a promise and\n * presents it as information\n * https://silentium-lab.github.io/silentium/#/en/information/from-promise\n */\nexport const fromPromise = <T>(p: Promise<T>): Information<T> => {\n return I((o) => {\n p.then((v) => {\n o.give(v);\n }).catch((e) => {\n o.error(e);\n });\n });\n};\n","import { LazyType } from \"../types/LazyType\";\n\n/**\n * Helps to get lazy instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/lazy\n */\nexport const lazy = <T>(buildingFn: (...args: any[]) => T): LazyType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"lazy didn't receive buildingFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return buildingFn(...args) as CT extends null ? T : CT;\n },\n };\n};\n","import { LazyType } from \"../types/LazyType\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\n/**\n * Helps create an object from a class\n * https://silentium-lab.github.io/silentium/#/en/utils/lazy-class\n */\nexport const lazyClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): LazyType<T> => {\n if (constructorFn === undefined) {\n throw new Error(\"PrivateClass didn't receive constructorFn argument\");\n }\n\n return {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT {\n return new (constructorFn as Constructable<T>)(\n ...args,\n modules,\n ) as CT extends null ? T : CT;\n },\n };\n};\n"],"names":["__publicField","info"],"mappings":";;;AAcO,MAAM,YAAA,GAAN,MAAM,YAAqB,CAAA;AAAA,EAQzB,WACG,CAAA,IAAA,EAIA,OAAU,GAAA,SAAA,EACV,eAAe,IACvB,EAAA;AANQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAIA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAZV,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAsC,EAAC,CAAA;AAC/C,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,iBAAkB,EAAA,KAAA,CAAA;AAUxB,IAAA,YAAA,CAAY,SAAa,IAAA,CAAA;AAAA;AAC3B;AAAA;AAAA;AAAA,EAKQ,KAAK,KAAU,EAAA;AACrB,IAAI,IAAA,IAAA,CAAK,UAAU,MAAW,EAAA;AAC5B,MAAK,IAAA,CAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA;AAEvB,IAAO,OAAA,IAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKO,MAAM,KAAiB,EAAA;AAC5B,IAAA,IAAI,IAAK,CAAA,YAAA,IAAgB,IAAK,CAAA,KAAA,KAAU,MAAW,EAAA;AACjD,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA,gCAAA,EAAmC,IAAK,CAAA,IAAA,EAAM,CAAE,CAAA,CAAA;AAAA;AAGlE,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,IAAA,IAAI,IAAK,CAAA,WAAA,KAAgB,MAAa,IAAA,CAAC,KAAK,eAAiB,EAAA;AAC3D,MAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,CAAC,EAAO,KAAA,EAAA,CAAG,KAAK,CAAC,CAAA;AAC1C,MAAA,IAAA,CAAK,eAAkB,GAAA,IAAA;AAAA;AAGzB,IAAI,IAAA,IAAA,CAAK,SAAS,MAAW,EAAA;AAC3B,MAAO,OAAA,IAAA;AAAA;AAGT,IAAI,IAAA,OAAO,IAAK,CAAA,IAAA,KAAS,UAAY,EAAA;AACnC,MAAM,MAAA,YAAA,GAAe,IAAK,CAAA,IAAA,CAAK,KAAK,CAAA;AACpC,MACE,IAAA,IAAA,CAAK,UAAe,KAAA,MAAA,IACpB,YAAiB,KAAA,MAAA,IACjB,KAAK,IAAS,KAAA,YAAA,IACd,OAAO,YAAA,KAAiB,UACxB,EAAA;AACA,QAAA,IAAA,CAAK,UAAa,GAAA,YAAA;AAAA;AACpB,KAEA,MAAA,IAAA,OAAO,IAAK,CAAA,IAAA,KAAS,YACrB,IAAK,CAAA,IAAA,KAAS,IACd,IAAA,OAAA,IAAW,KAAK,IAChB,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,UAAU,UAC3B,EAAA;AACA,MAAK,IAAA,CAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,KAChB,MAAA;AACL,MAAK,IAAA,CAAA,IAAA,CAAK,KAAK,IAAS,CAAA;AAAA;AAG1B,IAAO,OAAA,IAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKO,OAAU,GAAA;AACf,IAAO,OAAA,IAAA,CAAK,WAAY,CAAA,MAAA,GAAS,CAAG,EAAA;AAClC,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,WAAA,CAAY,KAAM,EAAA;AACvC,MAAA,OAAA,EAAS,OAAQ,EAAA;AAAA;AAEnB,IAAA,IAAI,KAAK,UAAY,EAAA;AACnB,MAAA,IAAA,CAAK,UAAW,EAAA;AAAA;AAElB,IAAA,IAAA,CAAK,KAAQ,GAAA,MAAA;AACb,IAAA,IAAA,CAAK,WAAc,GAAA,MAAA;AACnB,IAAA,IAAA,CAAK,UAAa,GAAA,MAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKO,QAAQ,IAAwB,EAAA;AACrC,IAAK,IAAA,CAAA,WAAA,CAAY,KAAK,IAAI,CAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,QAAW,GAAA;AAChB,IAAA,OAAO,IAAK,CAAA,WAAA;AAAA;AACd,EAEO,IAAO,GAAA;AACZ,IAAA,OAAO,CAAS,MAAA,EAAA,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,aAAY,SAAS,CAAA,CAAA;AAAA;AACvD,EAEO,SAAS,EAA8B,EAAA;AAC5C,IAAI,IAAA,CAAC,KAAK,WAAa,EAAA;AACrB,MAAA,IAAA,CAAK,cAAc,EAAC;AAAA;AAEtB,IAAK,IAAA,CAAA,WAAA,CAAY,KAAK,EAAE,CAAA;AACxB,IAAA,IAAI,IAAK,CAAA,eAAA,IAAmB,IAAK,CAAA,KAAA,KAAU,MAAW,EAAA;AACpD,MAAA,EAAA,CAAG,KAAK,KAAK,CAAA;AAAA;AAEf,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,QAAoB,GAAA;AACzB,IAAO,OAAA,CAAC,CAAC,IAAK,CAAA,KAAA;AAAA;AAElB,CAAA;AArHEA,eAAA,CADW,cACI,WAAY,EAAA,CAAA,CAAA;AADtB,IAAM,WAAN,GAAA;AAwHA,MAAM,CAAI,GAAA,CACf,IAKA,EAAA,OAAA,GAAU,WACV,YAAe,GAAA,IAAA,KAEf,IAAgB,YAAA,WAAA,GACZ,IACA,GAAA,IAAI,WAAY,CAAA,IAAA,EAAM,SAAS,YAAY;;;;;ACxI1C,MAAM,KAAe,CAAA;AAAA,EAGnB,WAAA,CACG,OACA,EAAA,OAAA,EACA,UACR,EAAA;AAHQ,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AALV,IAAAA,eAAA,CAAA,IAAA,EAAQ,OAAsB,EAAC,CAAA;AAAA;AAM5B,EAEI,KAAK,KAAU,EAAA;AACpB,IAAK,IAAA,CAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AAC3B,IAAI,IAAA,CAAC,IAAK,CAAA,QAAA,EAAY,EAAA;AACpB,MAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA;AAEpB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,KAAgB,EAAA;AAC3B,IAAK,IAAA,CAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AAC3B,IAAI,IAAA,IAAA,CAAK,YAAY,MAAW,EAAA;AAC9B,MAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA;AAEpB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,QAAW,GAAA;AAChB,IAAA,OAAO,IAAK,CAAA,UAAA,KAAe,MAAY,GAAA,IAAA,CAAK,YAAe,GAAA,KAAA;AAAA;AAC7D,EAEO,MAAM,EAAkB,EAAA;AAC7B,IAAK,IAAA,CAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AACT,EAEQ,WAAW,IAAiB,EAAA;AAClC,IAAA,IAAA,CAAK,IAAI,OAAQ,CAAA,CAAC,OAAO,EAAG,CAAA,GAAG,IAAI,CAAC,CAAA;AAAA;AAExC;AAEO,MAAM,CAAI,GAAA,CAAI,OAAkC,KAAA,IAAI,MAAM,OAAO;;AC5B3D,MAAA,GAAA,GAAM,IAAmC,KAAa,KAAA;AACjE,EAAA,MAAM,CAAI,GAAA,IAAI,WAAuC,CAAA,CAAC,CAAM,KAAA;AAC1D,IAAA,MAAM,YAAY,IAAI,GAAA,CAAY,MAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AACpD,IAAM,MAAA,UAAA,uBAAiB,GAAI,EAAA;AAC3B,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,OAAO,UAAW,CAAA,IAAA,GAAO,CAAK,IAAA,UAAA,CAAW,SAAS,SAAU,CAAA,IAAA;AAAA,KAC9D;AACA,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,IAAI,CAAM,KAAA;AAC7C,MAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AACd,MAAA,SAAA,CAAU,IAAI,GAAG,CAAA;AACjB,MAAK,IAAA,CAAA,KAAA;AAAA,QACH,IAAI,KAAM,CAAA,CAAC,CAAM,KAAA;AACf,UAAA,UAAA,CAAW,IAAI,GAAG,CAAA;AAClB,UAAA,MAAA,CAAO,GAAG,CAAI,GAAA,CAAA;AACd,UAAA,IAAI,aAAe,EAAA;AACjB,YAAA,CAAA,CAAE,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,MAAM,CAA8B,CAAA;AAAA;AAC3D,SACD;AAAA,OACH;AAAA,KACD,CAAA;AAAA,GACF,CAAA;AAED,EAAO,OAAA,CAAA;AACT;;ACtCa,MAAA,GAAA,GAAM,IAAO,KAA4B,KAAA;AACpD,EAAM,MAAA,IAAA,GAAO,CAAE,CAAA,CAAC,CAAM,KAAA;AACpB,IAAM,KAAA,CAAA,OAAA,CAAQ,CAACC,KAAS,KAAA;AACtB,MAAAA,KAAAA,CAAK,MAAM,CAAC,CAAA;AACZ,MAAAA,KAAAA,CAAK,QAAQA,KAAI,CAAA;AAAA,KAClB,CAAA;AAAA,GACF,CAAA;AAED,EAAO,OAAA,IAAA;AACT;;ACJa,MAAA,KAAA,GAAQ,IAChB,KACsB,KAAA;AACzB,EAAI,IAAA,QAAA;AACJ,EAAI,IAAA,SAAA;AACJ,EAAM,MAAA,UAAA,uBAAiB,OAAQ,EAAA;AAE/B,EAAM,MAAA,OAAA,GAAU,CAAC,KAAkB,KAAA;AACjC,IAAMA,MAAAA,KAAAA,GAAO,MAAM,KAAK,CAAA;AACxB,IAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA;AAE7B,IAAAA,KAAK,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAA,IAAI,CAAC,KAAO,EAAA;AACV,UAAY,SAAA,GAAA,CAAA;AACZ,UAAA,QAAA,EAAU,KAAK,CAAC,CAAA;AAAA;AAGlB,QAAA,IAAI,KAAS,IAAA,SAAA,KAAc,MAAa,IAAA,QAAA,KAAa,MAAW,EAAA;AAC9D,UAAA,QAAA,CAAS,KAAK,SAAS,CAAA;AAAA;AAGzB,QAAA,IAAI,KAAS,IAAA,CAAC,UAAW,CAAA,GAAA,CAAIA,KAAI,CAAG,EAAA;AAClC,UAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA;AAGnB,QAAW,UAAA,CAAA,GAAA,CAAIA,OAAM,CAAC,CAAA;AAAA,OACvB;AAAA,KACH;AAAA,GACF;AAEA,EAAM,MAAA,IAAA,GAAO,CAAW,CAAA,CAAC,CAAM,KAAA;AAC7B,IAAW,QAAA,GAAA,CAAA;AAAA,GACZ,CAAA;AAED,EAAA,IAAA,CAAK,SAAS,MAAM;AAClB,IAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,GACV,CAAA;AAED,EAAO,OAAA,IAAA;AACT;;AC5Ca,MAAA,eAAA,GAAkB,CAC7B,IAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,CAAI,GAAA,IAAI,WAAe,CAAA,CAAC,CAAM,KAAA;AAClC,IAAK,IAAA,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA,GACtB,CAAA;AACD,EAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AAEd,EAAO,OAAA,CAAA;AACT;;ACXa,MAAA,OAAA,GAAU,CAAO,IAAA,EAAsB,OAAyB,KAAA;AAC3E,EAAM,MAAA,IAAA,GAAO,CAAE,CAAA,CAAC,CAAM,KAAA;AACpB,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAE,CAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA,OAClB;AAAA,KACH;AAAA,GACD,CAAA;AACD,EAAA,IAAA,CAAK,QAAQ,IAAI,CAAA;AAEjB,EAAO,OAAA,IAAA;AACT;;ACTO,MAAM,QAAW,GAAA,CACtB,IACA,EAAA,SAAA,EACA,YACG,KAAA;AACH,EAAO,OAAA,IAAI,WAAe,CAAA,CAAC,CAAM,KAAA;AAC/B,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAI,IAAA,SAAA,CAAU,CAAC,CAAG,EAAA;AAChB,UAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,SACV,MAAA,IAAW,iBAAiB,MAAW,EAAA;AACrC,UAAA,CAAA,CAAE,KAAK,YAAY,CAAA;AAAA;AACrB,OACD;AAAA,KACH;AAAA,GACD,CAAE,CAAA,OAAA,CAAQ,IAAI,CAAA;AACjB;;AClBa,MAAA,YAAA,GAAe,CAC1B,IAAA,EACA,OACG,KAAA;AACH,EAAA,OAAO,IAAI,KAAA;AAAA,IACT,CAAC,CAAM,KAAA;AACL,MAAK,IAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA,KACtB;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,KAClB;AAAA,IACA,MAAM,KAAK,QAAS;AAAA,GACtB;AACF;;ACba,MAAA,oBAAA,GAAuB,CAClC,IAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,WAAW,OAAQ,CAAA,CAAC,MAAM,IAAK,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA;AAC5C,EAAO,OAAA,IAAI,KAAS,CAAA,CAAC,CAAM,KAAA;AACzB,IAAA,QAAA,CAAS,CAAC,CAAA;AAAA,GACX,CAAA;AACH;;ACDa,MAAA,SAAA,GAAY,CACvB,IAAA,EACA,YACgB,KAAA;AAChB,EAAI,IAAA,SAAA;AAEJ,EAAK,IAAA,CAAA,KAAA;AAAA,IACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,MAAY,SAAA,GAAA,CAAA;AAAA,KACb;AAAA,GACH;AAEA,EAAO,OAAA;AAAA,IACL,SAAY,GAAA;AACV,MAAI,IAAA,SAAA,KAAc,MAAa,IAAA,YAAA,KAAiB,MAAW,EAAA;AACzD,QAAM,MAAA,IAAI,MAAM,oBAAoB,CAAA;AAAA;AAEtC,MAAA,OAAQ,SAAa,IAAA,YAAA;AAAA,KACvB;AAAA,IACA,MAAS,GAAA;AACP,MAAA,OAAO,SAAc,KAAA,MAAA;AAAA;AACvB,GACF;AACF;;AC3Ba,MAAA,KAAA,GAAQ,CACnB,KAAA,EACA,QACG,KAAA;AACH,EAAA,MAAM,IAAO,GAAA,IAAI,WAAe,CAAA,CAAC,CAAM,KAAA;AACrC,IAAM,MAAA,QAAA,GAAW,MAAM,GAAI,EAAA;AAC3B,IAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AACrB,IAAA,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,GACjB,CAAA;AAED,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AACrB,IAAS,QAAA,CAAA,KAAA;AAAA,MACP,EAAE,MAAM;AACN,QAAA,IAAA,CAAK,OAAQ,EAAA;AAAA,OACd;AAAA,KACH;AAAA;AAGF,EAAO,OAAA,IAAA;AACT;;ACnBa,MAAA,GAAA,GAAM,CACjB,IAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,CAAI,GAAA,IAAI,WAAkB,CAAA,CAAC,CAAM,KAAA;AACrC,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAA,MAAM,QAA2B,EAAC;AAClC,QAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACjB,UAAA,IAAI,OAA8B,GAAA,GAAA;AAClC,UAAI,IAAA,EAAE,mBAAmB,WAAc,CAAA,EAAA;AACrC,YAAA,OAAA,GAAU,EAAE,GAA6B,CAAA;AAAA;AAE3C,UAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAA;AAChC,UAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,SAChB,CAAA;AACD,QAAA,MAAM,OAAO,GAAI,CAAA,GAAG,KAAK,CAAA,CAAE,MAAM,CAAC,CAAA;AAClC,QAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AAAA,OACf;AAAA,KACH;AAAA,GACD,CAAA;AACD,EAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AAEd,EAAO,OAAA,CAAA;AACT;;ACzBa,MAAA,EAAA,GAAK,CAAI,OAAqC,KAAA;AACzD,EAAA,IAAI,WAAc,GAAA,OAAA;AAClB,EAAI,IAAA,QAAA;AAEJ,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,MAAA,QAAA,CAAS,KAAK,WAAW,CAAA;AAAA;AAC3B,GACF;AAEA,EAAA,MAAM,IAAO,GAAA,IAAI,WAAe,CAAA,CAAC,CAAM,KAAA;AACrC,IAAW,QAAA,GAAA,CAAA;AACX,IAAI,IAAA,WAAA,KAAgB,MAAa,IAAA,WAAA,KAAgB,IAAM,EAAA;AACrD,MAAQ,OAAA,EAAA;AAAA;AACV,KACC,IAAI,CAAA;AAEP,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,IAAI,KAAS,CAAA,CAAC,CAAM,KAAA;AAClB,MAAc,WAAA,GAAA,CAAA;AACd,MAAQ,OAAA,EAAA;AAAA,KACT;AAAA,GACH;AACF;;ACzBa,MAAA,IAAA,GAAO,CAAI,IAAyB,KAAA;AAC/C,EAAA,MAAM,IAAO,GAAA,IAAI,WAAe,CAAA,CAAC,CAAM,KAAA;AACrC,IAAA,IAAI,QAAW,GAAA,KAAA;AACf,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAW,QAAA,GAAA,IAAA;AACX,UAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA;AACV,OACD;AAAA,KACH;AAAA,GACD,CAAA;AACD,EAAA,IAAA,CAAK,QAAQ,IAAI,CAAA;AAEjB,EAAO,OAAA,IAAA;AACT;;;;;ACjBO,MAAM,SAAa,CAAA;AAAA,EAIjB,WAAc,GAAA;AAHrB,IAAQ,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAGN,IAAK,IAAA,CAAA,MAAA,uBAAa,GAAc,EAAA;AAChC,IAAA,IAAA,CAAK,aAAa,IAAI,KAAA;AAAA,MACpB,CAAC,CAAM,KAAA;AACL,QAAK,IAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,CAAC,CAAM,KAAA;AACzB,UAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,SACT,CAAA;AAAA,OACH;AAAA,MACA,CAAC,KAAU,KAAA;AACT,QAAK,IAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,CAAC,CAAM,KAAA;AACzB,UAAA,CAAA,CAAE,MAAM,KAAK,CAAA;AAAA,SACd,CAAA;AAAA;AACH,KACF;AAAA;AACF,EAEO,KAAQ,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,UAAA;AAAA;AACd,EAEO,IAAe,GAAA;AACpB,IAAA,OAAO,KAAK,MAAO,CAAA,IAAA;AAAA;AACrB,EAEO,IAAI,KAA0B,EAAA;AACnC,IAAO,OAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA;AAC9B,EAEO,IAAI,cAA0B,EAAA;AACnC,IAAK,IAAA,CAAA,MAAA,CAAO,IAAI,cAAc,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAO,CAAa,EAAA;AACzB,IAAK,IAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAK,IAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,CAAC,CAAM,KAAA;AACzB,MAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,KACd,CAAA;AACD,IAAO,OAAA,IAAA;AAAA;AAEX;;AC9Ca,MAAA,IAAA,GAAO,CAAI,IAAyB,KAAA;AAC/C,EAAM,MAAA,UAAA,GAAa,IAAI,SAAa,EAAA;AACpC,EAAI,IAAA,SAAA;AAEJ,EAAA,MAAM,IAAI,IAAI,WAAA;AAAA,IACZ,CAAC,CAAM,KAAA;AACL,MAAA,IAAI,cAAc,MAAa,IAAA,CAAC,UAAW,CAAA,GAAA,CAAI,CAAC,CAAG,EAAA;AACjD,QAAA,CAAA,CAAE,KAAK,SAAS,CAAA;AAAA;AAElB,MAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAEhB,MAAA,OAAO,MAAM;AACX,QAAA,UAAA,CAAW,OAAQ,EAAA;AAAA,OACrB;AAAA,KACF;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AAEd,EAAA,CAAA,CAAE,SAAS,MAAM;AACf,IAAM,MAAA,EAAA,GAAK,WAAW,KAAM,EAAA;AAC5B,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,IAAI,KAAM,CAAA,CAAC,CAAM,KAAA;AACf,QAAA,EAAA,CAAG,KAAK,CAAC,CAAA;AACT,QAAY,SAAA,GAAA,CAAA;AAAA,OACb;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAO,OAAA,CAAC,GAAG,UAAU,CAAA;AACvB;AAEa,MAAA,aAAA,GAAgB,CAAI,IAAyB,KAAA;AACxD,EAAM,MAAA,UAAA,GAAa,IAAI,SAAa,EAAA;AAEpC,EAAA,MAAM,IAAI,IAAI,WAAA;AAAA,IACZ,CAAC,CAAM,KAAA;AACL,MAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAEhB,MAAA,OAAO,MAAM;AACX,QAAA,UAAA,CAAW,OAAQ,EAAA;AAAA,OACrB;AAAA,KACF;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AAEd,EAAE,CAAA,CAAA,QAAA,CAAS,CAAC,CAAM,KAAA;AAChB,IAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAChB,IAAK,IAAA,CAAA,KAAA,CAAM,UAAW,CAAA,KAAA,EAAO,CAAA;AAAA,GAC9B,CAAA;AAED,EAAO,OAAA,CAAC,GAAG,UAAU,CAAA;AACvB;;ACzDa,MAAA,QAAA,GAAW,CAAI,IAA2C,KAAA;AACrE,EAAM,MAAA,CAAA,GAAI,CAAO,CAAA,CAAC,CAAM,KAAA;AACtB,IAAA,MAAM,SAAc,EAAC;AAErB,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACb,QAAA,CAAA,CAAE,KAAK,MAAM,CAAA;AAAA,OACd;AAAA,KACH;AAAA,GACD,CAAA;AACD,EAAA,CAAA,CAAE,QAAQ,IAAI,CAAA;AAEd,EAAO,OAAA,CAAA;AACT;;ACda,MAAA,MAAA,GAAS,CAAI,IAA2C,KAAA;AACnE,EAAM,MAAA,CAAA,GAAI,CAAK,CAAA,CAAC,CAAM,KAAA;AACpB,IAAK,IAAA,CAAA,KAAA;AAAA,MACH,CAAA,CAAE,CAAC,CAAM,KAAA;AACP,QAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAChB,UAAA,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,SACV,CAAA;AAAA,OACF;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAO,OAAA,CAAA;AACT;;ACXa,MAAA,YAAA,GAAe,CAAI,SAA8C,KAAA;AAC5E,EAAO,OAAA,CAAA,CAAE,CAAC,CAAM,KAAA;AACd,IAAA,SAAA,CAAU,CAAC,CAAM,KAAA;AACf,MAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA;AACH;;ACPO,MAAM,SAAY,GAAA,CACvB,OACA,EAAA,SAAA,EACA,iBACA,iBACG,KAAA;AACH,EAAO,OAAA,CAAA,CAAE,CAAC,CAAM,KAAA;AACd,IAAM,MAAA,OAAA,GAAU,IAAI,IAAY,KAAA;AAC9B,MAAA,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,KACb;AACA,IAAQ,OAAA,CAAA,eAAe,CAAE,CAAA,SAAA,EAAW,OAAO,CAAA;AAC3C,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,sBAAsB,MAAW,EAAA;AACnC,QAAQ,OAAA,CAAA,iBAAiB,CAAE,CAAA,SAAA,EAAW,OAAO,CAAA;AAAA;AAC/C,KACF;AAAA,GACD,CAAA;AACH;;ACjBa,MAAA,WAAA,GAAc,CAAI,CAAkC,KAAA;AAC/D,EAAO,OAAA,CAAA,CAAE,CAAC,CAAM,KAAA;AACd,IAAE,CAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACZ,MAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,KACT,CAAA,CAAE,KAAM,CAAA,CAAC,CAAM,KAAA;AACd,MAAA,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,KACV,CAAA;AAAA,GACF,CAAA;AACH;;ACTa,MAAA,IAAA,GAAO,CAAI,UAAmD,KAAA;AACzE,EAAA,IAAI,eAAe,MAAW,EAAA;AAC5B,IAAM,MAAA,IAAI,MAAM,yCAAyC,CAAA;AAAA;AAG3D,EAAO,OAAA;AAAA,IACL,OAAuC,IAAmC,EAAA;AACxE,MAAO,OAAA,UAAA,CAAW,GAAG,IAAI,CAAA;AAAA;AAC3B,GACF;AACF;;ACFO,MAAM,SAAY,GAAA,CACvB,aACA,EAAA,OAAA,GAAmC,EACnB,KAAA;AAChB,EAAA,IAAI,kBAAkB,MAAW,EAAA;AAC/B,IAAM,MAAA,IAAI,MAAM,oDAAoD,CAAA;AAAA;AAGtE,EAAO,OAAA;AAAA,IACL,OAAuC,IAAmC,EAAA;AACxE,MAAA,OAAO,IAAK,aAAA;AAAA,QACV,GAAG,IAAA;AAAA,QACH;AAAA,OACF;AAAA;AACF,GACF;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -133,7 +133,14 @@ export class Information<T = any> {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
export const I = <T>(
|
|
136
|
-
info?:
|
|
136
|
+
info?:
|
|
137
|
+
| Information<T>
|
|
138
|
+
| InfoObjectType<T>
|
|
139
|
+
| InfoExecutorType<T>
|
|
140
|
+
| InformationDataType<T>,
|
|
137
141
|
theName = "unknown",
|
|
138
142
|
onlyOneOwner = true,
|
|
139
|
-
) =>
|
|
143
|
+
) =>
|
|
144
|
+
info instanceof Information
|
|
145
|
+
? info
|
|
146
|
+
: new Information(info, theName, onlyOneOwner);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
import { O } from "./Owner";
|
|
3
|
+
|
|
4
|
+
test("owner.test", () => {
|
|
5
|
+
let debugValue: unknown = "";
|
|
6
|
+
let value: unknown = "";
|
|
7
|
+
const o = O((v) => {
|
|
8
|
+
value = v;
|
|
9
|
+
}).debug((msg, val) => {
|
|
10
|
+
debugValue = `msg: ${msg}, val: ${val}`;
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
o.give(1);
|
|
14
|
+
|
|
15
|
+
expect(value).toBe(1);
|
|
16
|
+
expect(debugValue).toBe("msg: value, val: 1");
|
|
17
|
+
|
|
18
|
+
o.give(42);
|
|
19
|
+
|
|
20
|
+
expect(value).toBe(42);
|
|
21
|
+
expect(debugValue).toBe("msg: value, val: 42");
|
|
22
|
+
|
|
23
|
+
o.error("Boom!");
|
|
24
|
+
|
|
25
|
+
expect(value).toBe(42);
|
|
26
|
+
expect(debugValue).toBe("msg: error, val: Boom!");
|
|
27
|
+
});
|
package/src/Owner/Owner.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { OwnerExecutorType } from "../types/OwnerType";
|
|
2
2
|
|
|
3
|
+
type OwnerDebugCB = (...data: unknown[]) => void;
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Information owner, if information
|
|
5
7
|
* has owner than information executed
|
|
6
8
|
* https://silentium-lab.github.io/silentium/#/en/owner
|
|
7
9
|
*/
|
|
8
10
|
export class Owner<T = any> {
|
|
11
|
+
private cbs: OwnerDebugCB[] = [];
|
|
12
|
+
|
|
9
13
|
public constructor(
|
|
10
14
|
private ownerFn: OwnerExecutorType<T>,
|
|
11
15
|
private errorFn?: (cause: unknown) => void,
|
|
@@ -13,6 +17,7 @@ export class Owner<T = any> {
|
|
|
13
17
|
) {}
|
|
14
18
|
|
|
15
19
|
public give(value: T) {
|
|
20
|
+
this.doDebug("value", value);
|
|
16
21
|
if (!this.disposed()) {
|
|
17
22
|
this.ownerFn(value);
|
|
18
23
|
}
|
|
@@ -20,16 +25,25 @@ export class Owner<T = any> {
|
|
|
20
25
|
}
|
|
21
26
|
|
|
22
27
|
public error(cause: unknown) {
|
|
28
|
+
this.doDebug("error", cause);
|
|
23
29
|
if (this.errorFn !== undefined) {
|
|
24
30
|
this.errorFn(cause);
|
|
25
31
|
}
|
|
26
|
-
|
|
27
32
|
return this;
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
public disposed() {
|
|
31
36
|
return this.disposedFn !== undefined ? this.disposedFn() : false;
|
|
32
37
|
}
|
|
38
|
+
|
|
39
|
+
public debug(cb: OwnerDebugCB) {
|
|
40
|
+
this.cbs.push(cb);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private doDebug(...data: unknown[]) {
|
|
45
|
+
this.cbs.forEach((cb) => cb(...data));
|
|
46
|
+
}
|
|
33
47
|
}
|
|
34
48
|
|
|
35
49
|
export const O = <T>(ownerFn: OwnerExecutorType<T>) => new Owner(ownerFn);
|