silentium 0.0.30 → 0.0.32
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 +21 -0
- package/commitizen.cjs +7 -7
- package/dist/silentium.cjs +31 -5
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +14 -8
- package/dist/silentium.js +29 -4
- 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 +29 -4
- package/dist/silentium.mjs.map +1 -1
- package/docs/assets/js/index.mjs +46 -33
- package/docs/pages/compatibility/dip.html +4 -0
- package/docs/pages/compatibility/elegant-objects.html +4 -0
- package/docs/pages/examples/errors.html +4 -0
- package/docs/pages/examples.html +7 -3
- package/docs/pages/guest/guest-applied.html +4 -0
- package/docs/pages/guest/guest-cast.html +4 -0
- package/docs/pages/guest/guest-disposable.html +4 -0
- package/docs/pages/guest/guest-executor-applied.html +4 -0
- package/docs/pages/guest/guest-sync.html +4 -0
- package/docs/pages/guest.html +4 -0
- package/docs/pages/index.html +4 -0
- package/docs/pages/integrations/angular.html +4 -0
- package/docs/pages/integrations/react.html +4 -0
- package/docs/pages/integrations/vue.html +4 -0
- package/docs/pages/patron/patron-applied.html +4 -0
- package/docs/pages/patron/patron-executor-applied.html +4 -0
- package/docs/pages/patron/patron-once.html +4 -0
- package/docs/pages/patron/patron-pool.html +4 -0
- package/docs/pages/patron.html +9 -5
- package/docs/pages/philosofy.html +4 -0
- package/docs/pages/source/source-all.html +4 -0
- package/docs/pages/source/source-applied.html +4 -0
- package/docs/pages/source/source-changeable.html +4 -0
- package/docs/pages/source/source-dynamic.html +4 -0
- package/docs/pages/source/source-executor-applied.html +4 -0
- package/docs/pages/source/source-filtered.html +4 -0
- package/docs/pages/source/source-map.html +12 -8
- package/docs/pages/source/source-once.html +4 -0
- package/docs/pages/source/source-race.html +8 -4
- package/docs/pages/source/source-sequence.html +8 -4
- package/docs/pages/source/source-sync.html +4 -0
- package/docs/pages/source.html +16 -12
- package/docs/pages/terminology/guest.html +4 -0
- package/docs/pages/terminology/introduction.html +4 -0
- package/docs/pages/terminology/patron.html +4 -0
- package/docs/pages/terminology/source.html +4 -0
- package/docs/pages/terminology/visitor.html +4 -0
- package/docs/pages/terminology.html +10 -6
- package/docs/pages/utils/give.html +4 -0
- package/docs/pages/utils/is-guest.html +4 -0
- package/docs/pages/utils/is-patron-in-pools.html +4 -0
- package/docs/pages/utils/is-source.html +4 -0
- package/docs/pages/utils/private.html +4 -0
- package/docs/pages/utils/remove-patron-from-pools.html +4 -0
- package/docs/pages/utils/source-of.html +4 -0
- package/docs/pages/utils/value.html +4 -0
- package/docs/pages/utils.html +13 -9
- package/package.json +1 -1
- package/src/{Personal/Personal.test.ts → Lazy/Lazy.test.ts} +3 -3
- package/src/Lazy/Lazy.ts +19 -0
- package/src/{Personal/PersonalClass.modules.test.ts → Lazy/LazyClass.modules.test.ts} +6 -6
- package/src/{Personal/PersonalClass.test.ts → Lazy/LazyClass.test.ts} +3 -3
- package/src/{Personal/PersonalClass.ts → Lazy/LazyClass.ts} +3 -3
- package/src/Source/SourceLazy.test.ts +33 -0
- package/src/Source/SourceLazy.ts +43 -0
- package/src/Source/SourceMap._deferred.test.ts +2 -2
- package/src/Source/SourceMap._fn.test.ts +2 -2
- package/src/Source/SourceMap.test.ts +2 -2
- package/src/Source/SourceMap.ts +2 -2
- package/src/Source/SourceSequence._deferred.test.ts +2 -2
- package/src/Source/SourceSequence.test.ts +2 -2
- package/src/Source/SourceSequence.ts +2 -2
- package/src/index.ts +3 -2
- package/src/Personal/Personal.ts +0 -21
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
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.32](https://github.com/silentium-lab/silentium/compare/v0.0.31...v0.0.32) (2025-05-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **36-issue:** source lazy created and exported ([25ab943](https://github.com/silentium-lab/silentium/commit/25ab943987f7c5ac40672816fd5c54f2c31dec6d))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **main:** fix lazy dependency ([35bbf73](https://github.com/silentium-lab/silentium/commit/35bbf7305aac7ef341068ae74a247f0dbb86f878))
|
|
16
|
+
|
|
17
|
+
### [0.0.31](https://github.com/silentium-lab/silentium/compare/v0.0.30...v0.0.31) (2025-05-11)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **35-issue:** lazyType now instead of PersonalType ([c153352](https://github.com/silentium-lab/silentium/commit/c15335264e37964f8dd319f013df4a5db736add8))
|
|
23
|
+
* **main:** commitizen translation to english ([9a59930](https://github.com/silentium-lab/silentium/commit/9a59930159865585e41eba13d804ef60b3cc09e0))
|
|
24
|
+
* **main:** work on documentation loading ([fdc956d](https://github.com/silentium-lab/silentium/commit/fdc956d0408b1dde71f6b3648ad94c68ab2a2142))
|
|
25
|
+
|
|
5
26
|
### [0.0.30](https://github.com/silentium-lab/silentium/compare/v0.0.29...v0.0.30) (2025-05-09)
|
|
6
27
|
|
|
7
28
|
|
package/commitizen.cjs
CHANGED
|
@@ -9,31 +9,31 @@ module.exports = {
|
|
|
9
9
|
types: [
|
|
10
10
|
{
|
|
11
11
|
value: "feat",
|
|
12
|
-
name: "feat:
|
|
12
|
+
name: "feat: Adding new functionality",
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
value: "refactor",
|
|
16
|
-
name: "refactor:
|
|
16
|
+
name: "refactor: Code edits without fixing bugs or adding new features",
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
value: "fix",
|
|
20
|
-
name: "fix:
|
|
20
|
+
name: "fix: Bug fixes",
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
value: "build",
|
|
24
|
-
name: "build:
|
|
24
|
+
name: "build: Building a project or changing external dependencies",
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
value: "docs",
|
|
28
|
-
name: "docs:
|
|
28
|
+
name: "docs: Documentation Update",
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
value: "docs",
|
|
32
|
-
name: "docs:
|
|
32
|
+
name: "docs: Edits to the project documentation or individual parts of the project",
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
value: "test",
|
|
36
|
-
name: "test:
|
|
36
|
+
name: "test: Adding tests",
|
|
37
37
|
},
|
|
38
38
|
],
|
|
39
39
|
scopes: [
|
package/dist/silentium.cjs
CHANGED
|
@@ -679,7 +679,32 @@ const sourceAny = (sources) => {
|
|
|
679
679
|
return lastSrc;
|
|
680
680
|
};
|
|
681
681
|
|
|
682
|
-
const
|
|
682
|
+
const sourceLazy = (lazySrc, args, resetSrc) => {
|
|
683
|
+
let instance = null;
|
|
684
|
+
const result = sourceOf();
|
|
685
|
+
const resultResettable = sourceResettable(result, resetSrc ?? sourceOf());
|
|
686
|
+
value(
|
|
687
|
+
sourceAll(args),
|
|
688
|
+
patron(() => {
|
|
689
|
+
if (!instance) {
|
|
690
|
+
instance = lazySrc.get(...args);
|
|
691
|
+
value(instance, patron(result));
|
|
692
|
+
}
|
|
693
|
+
})
|
|
694
|
+
);
|
|
695
|
+
if (resetSrc) {
|
|
696
|
+
value(
|
|
697
|
+
resetSrc,
|
|
698
|
+
patron(() => {
|
|
699
|
+
destroy([instance]);
|
|
700
|
+
instance = null;
|
|
701
|
+
})
|
|
702
|
+
);
|
|
703
|
+
}
|
|
704
|
+
return resultResettable;
|
|
705
|
+
};
|
|
706
|
+
|
|
707
|
+
const lazyClass = (constructorFn, modules = {}) => {
|
|
683
708
|
if (constructorFn === void 0) {
|
|
684
709
|
throw new Error("PrivateClass didn't receive constructorFn argument");
|
|
685
710
|
}
|
|
@@ -693,9 +718,9 @@ const personalClass = (constructorFn, modules = {}) => {
|
|
|
693
718
|
};
|
|
694
719
|
};
|
|
695
720
|
|
|
696
|
-
const
|
|
721
|
+
const lazy = (buildingFn) => {
|
|
697
722
|
if (buildingFn === void 0) {
|
|
698
|
-
throw new Error("
|
|
723
|
+
throw new Error("lazy didn't receive buildingFn argument");
|
|
699
724
|
}
|
|
700
725
|
return {
|
|
701
726
|
get(...args) {
|
|
@@ -718,14 +743,14 @@ exports.isGuest = isGuest;
|
|
|
718
743
|
exports.isPatron = isPatron;
|
|
719
744
|
exports.isPatronInPools = isPatronInPools;
|
|
720
745
|
exports.isSource = isSource;
|
|
746
|
+
exports.lazy = lazy;
|
|
747
|
+
exports.lazyClass = lazyClass;
|
|
721
748
|
exports.patron = patron;
|
|
722
749
|
exports.patronApplied = patronApplied;
|
|
723
750
|
exports.patronExecutorApplied = patronExecutorApplied;
|
|
724
751
|
exports.patronOnce = patronOnce;
|
|
725
752
|
exports.patronPools = patronPools;
|
|
726
753
|
exports.patronPoolsStatistic = patronPoolsStatistic;
|
|
727
|
-
exports.personal = personal;
|
|
728
|
-
exports.personalClass = personalClass;
|
|
729
754
|
exports.removePatronFromPools = removePatronFromPools;
|
|
730
755
|
exports.source = source;
|
|
731
756
|
exports.sourceAll = sourceAll;
|
|
@@ -736,6 +761,7 @@ exports.sourceCombined = sourceCombined;
|
|
|
736
761
|
exports.sourceDynamic = sourceDynamic;
|
|
737
762
|
exports.sourceExecutorApplied = sourceExecutorApplied;
|
|
738
763
|
exports.sourceFiltered = sourceFiltered;
|
|
764
|
+
exports.sourceLazy = sourceLazy;
|
|
739
765
|
exports.sourceMap = sourceMap;
|
|
740
766
|
exports.sourceOf = sourceOf;
|
|
741
767
|
exports.sourceOnce = sourceOnce;
|
package/dist/silentium.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium.cjs","sources":["../src/Source/Source.ts","../src/Guest/Guest.ts","../src/Guest/GuestCast.ts","../src/Guest/GuestSync.ts","../src/Guest/GuestDisposable.ts","../src/Guest/GuestApplied.ts","../src/Guest/GuestExecutorApplied.ts","../src/Patron/Patron.ts","../src/Patron/PatronOnce.ts","../src/Patron/PatronPool.ts","../src/Patron/PatronApplied.ts","../src/Patron/PatronExecutorApplied.ts","../src/Source/SourceChangeable.ts","../src/Source/SourceAll.ts","../src/Source/SourceSequence.ts","../src/Source/SourceMap.ts","../src/Source/SourceRace.ts","../src/Source/SourceChain.ts","../src/Source/SourceDynamic.ts","../src/Source/SourceApplied.ts","../src/Source/SourceExecutorApplied.ts","../src/Source/SourceFiltered.ts","../src/Source/SourceOnce.ts","../src/Source/SourceSync.ts","../src/Source/SourceCombined.ts","../src/Source/SourceResettable.ts","../src/Source/SourceAny.ts","../src/Personal/PersonalClass.ts","../src/Personal/Personal.ts"],"sourcesContent":["import { give, GuestType } from \"../Guest/Guest\";\n\nexport type SourceExecutorType<T> = (guest: GuestType<T>) => unknown;\n\nexport interface SourceObjectType<T> {\n value: SourceExecutorType<T>;\n}\n\nexport type SourceDataType<T> = Extract<\n T,\n string | number | boolean | Date | object | Array<unknown> | symbol\n>;\n\nexport type SourceType<T = any> =\n | SourceExecutorType<T>\n | SourceObjectType<T>\n | SourceDataType<T>;\n\n/**\n * Helps to connect source and guest, if you need to get value in guest from source\n * helpful because we don't know what shape of source do we have, it can be function or object or primitive\n * @url https://silentium-lab.github.io/silentium/#/utils/value\n */\nexport const value = <T>(source: SourceType<T>, guest: GuestType<T>) => {\n if (source === undefined || source === null) {\n throw new Error(\"value didn't receive source argument\");\n }\n if (guest === undefined || source === null) {\n throw new Error(\"value didn't receive guest argument\");\n }\n if (typeof source === \"function\") {\n source(guest);\n } else if (\n typeof source === \"object\" &&\n \"value\" in source &&\n typeof source.value === \"function\"\n ) {\n source.value(guest);\n } else {\n give(source as T, guest);\n }\n\n return source;\n};\n\n/**\n * Helps to check what some information is of source shape\n * @url https://silentium-lab.github.io/silentium/#/utils/is-source\n */\nexport const isSource = <T>(\n mbSource: T | SourceType<T>,\n): mbSource is SourceType<T> => {\n if (\n mbSource !== null &&\n typeof mbSource === \"object\" &&\n \"value\" in mbSource &&\n typeof mbSource.value === \"function\"\n ) {\n return true;\n }\n return mbSource !== null && mbSource !== undefined;\n};\n\n/**\n * Represents source as function\n * @url https://silentium-lab.github.io/silentium/#/source\n */\nexport const source = <T>(source: SourceType<T>): SourceExecutorType<T> => {\n if (source === undefined) {\n throw new Error(\"Source constructor didn't receive executor function\");\n }\n\n return (guest: GuestType<T>) => {\n value(source, guest);\n };\n};\n","import { source, SourceExecutorType, SourceType } from \"../Source/Source\";\n\ntype GuestIntroduction = \"guest\" | \"patron\";\n\nexport type GuestExecutorType<T = any, This = void> = (value: T) => This;\n\nexport interface GuestObjectType<T = any> {\n give(value: T): this;\n introduction?(): GuestIntroduction;\n}\n\nexport type GuestType<T = any> = GuestExecutorType<T> | GuestObjectType<T>;\n\n/**\n * Helps to give data to guest, guests can be of different shapes\n * function guest or object guest\n * @url https://silentium-lab.github.io/silentium/#/utils/give\n */\nexport const give = <T>(\n data: T,\n guest?: GuestType<T>,\n): GuestType<T> | SourceExecutorType<T> => {\n if (data === undefined) {\n throw new Error(\"give didn't receive data argument\");\n }\n if (guest === undefined) {\n return source<T>(data as SourceType<T>) as SourceExecutorType<T>;\n }\n if (typeof guest === \"function\") {\n guest(data);\n } else {\n guest.give(data);\n }\n return guest;\n};\n\n/**\n * Helps to check if mbGuest can be used to retrieve value\n * @url https://silentium-lab.github.io/silentium/#/utils/is-guest\n */\nexport const isGuest = (mbGuest: any): mbGuest is GuestType => {\n if (mbGuest === undefined) {\n throw new Error(\"isGuest didnt receive mbGuest argument\");\n }\n return typeof mbGuest === \"function\" || typeof mbGuest?.give === \"function\";\n};\n\n/**\n * Helps to create guest of object type\n * @url https://silentium-lab.github.io/silentium/#/guest\n */\nexport const guest = <T>(receiver: GuestExecutorType<T>) => {\n if (!receiver) {\n throw new Error(\"receiver function was not passed to Guest constructor\");\n }\n const result = {\n give(value: T) {\n receiver(value);\n return result;\n },\n };\n return result;\n};\n","import { give, GuestType } from \"./Guest\";\nimport { GuestDisposableType, MaybeDisposableType } from \"./GuestDisposable\";\n\n/**\n * Helps to inherit guest behavior, its introduction and dispose settings\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-cast\n */\nexport const guestCast = <T>(\n sourceGuest: GuestType<any>,\n targetGuest: GuestType<T>,\n): GuestDisposableType<T> => {\n if (sourceGuest === undefined) {\n throw new Error(\"GuestCast didn't receive sourceGuest argument\");\n }\n if (targetGuest === undefined) {\n throw new Error(\"GuestCast didn't receive targetGuest argument\");\n }\n\n const result = {\n disposed(value: T | null): boolean {\n const maybeDisposable = sourceGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n },\n give(value: T) {\n give(value, targetGuest);\n return result;\n },\n introduction() {\n if (typeof sourceGuest === \"function\") {\n return \"guest\";\n }\n if (!sourceGuest.introduction) {\n return \"guest\";\n }\n return sourceGuest.introduction();\n },\n };\n\n return result;\n};\n","import { GuestObjectType } from \"./Guest\";\n\nexport interface GuestValueType<T = any> extends GuestObjectType<T> {\n value(): T;\n}\n\n/**\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-sync\n */\nexport const guestSync = <T>(theValue?: T): GuestValueType<T> => {\n const result = {\n give(value: T) {\n theValue = value;\n return result;\n },\n value() {\n if (theValue === undefined) {\n throw new Error(\"no value in GuestSync!\");\n }\n return theValue;\n },\n };\n\n return result;\n};\n","import { give, GuestObjectType, GuestType } from \"./Guest\";\n\nexport interface GuestDisposableType<T = any> extends GuestObjectType<T> {\n disposed(value: T | null): boolean;\n}\n\nexport type MaybeDisposableType<T = any> = Partial<GuestDisposableType<T>>;\n\n/**\n * Connects to guest logic what can tell PatronPool\n * what guest don't need to receive new values\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-disposable\n */\nexport const guestDisposable = <T>(\n guest: GuestType,\n disposeCheck: (value: T | null) => boolean,\n): GuestDisposableType<T> => {\n if (guest === undefined) {\n throw new Error(\"GuestDisposable didn't receive guest argument\");\n }\n if (disposeCheck === undefined) {\n throw new Error(\"GuestDisposable didn't receive disposeCheck argument\");\n }\n\n const result = {\n disposed(value: T | null): boolean {\n return disposeCheck(value);\n },\n give(value: T) {\n give(value, guest);\n return result;\n },\n };\n\n return result;\n};\n","import { give, GuestObjectType, GuestType } from \"../Guest/Guest\";\n\n/**\n * Helps to apply function to value before baseGuest will receive it\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-applied\n */\nexport const guestApplied = <T, R>(\n baseGuest: GuestType<R>,\n applier: (value: T) => R,\n): GuestObjectType<T> => {\n const result = {\n give(value: T) {\n give(applier(value), baseGuest);\n return result;\n },\n };\n return result;\n};\n","import {\n give,\n GuestExecutorType,\n GuestObjectType,\n GuestType,\n} from \"../Guest/Guest\";\n\n/**\n * Apply function to guest function of receiving value, useful for debouncing or throttling\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-executor-applied\n */\nexport const guestExecutorApplied = <T>(\n baseGuest: GuestType<T>,\n applier: (executor: GuestExecutorType<T>) => GuestExecutorType<T>,\n): GuestObjectType<T> => {\n const result = {\n give: applier((v) => give(v, baseGuest)),\n };\n\n return result as GuestObjectType<T>;\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { GuestDisposableType } from \"../Guest/GuestDisposable\";\n\nexport type PatronType<T> = GuestDisposableType<T> & {\n introduction(): \"patron\";\n};\n\n/**\n * Helps to check what incoming object is patron\n * @url https://silentium-lab.github.io/silentium/#/utils/is-patron\n */\nexport const isPatron = (guest: GuestType): guest is PatronType<unknown> =>\n typeof guest === \"object\" &&\n guest !== null &&\n guest?.introduction?.() === \"patron\";\n\nexport const introduction = () => \"patron\" as const;\n\n/**\n * Help to turn existed guest intro patron\n * @url https://silentium-lab.github.io/silentium/#/patron\n */\nexport const patron = <T>(\n willBePatron: GuestType<T>,\n): GuestDisposableType<T> => {\n if (willBePatron === undefined) {\n throw new Error(\"Patron didn't receive willBePatron argument\");\n }\n\n const result = {\n give(value: T) {\n give(value, willBePatron);\n return result;\n },\n disposed(value: T | null): boolean {\n const maybeDisposable = willBePatron as GuestDisposableType;\n return maybeDisposable?.disposed?.(value) || false;\n },\n introduction,\n };\n\n return result;\n};\n","import { introduction } from \"../Patron/Patron\";\nimport { give, GuestType } from \"../Guest/Guest\";\nimport {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"../Guest/GuestDisposable\";\n\n/**\n * Helps to call patron only once, this will be helpful when you\n * need value but you know what value can not be existed at a time of requesting\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-once\n */\nexport const patronOnce = <T>(\n baseGuest: GuestType<T>,\n): GuestDisposableType<T> => {\n if (baseGuest === undefined) {\n throw new Error(\"PatronOnce didn't receive baseGuest argument\");\n }\n\n let received = false;\n\n const result = {\n give(value: T) {\n if (!received) {\n received = true;\n give(value, baseGuest);\n }\n return result;\n },\n disposed(value: T | null): boolean {\n if (received) {\n return true;\n }\n const maybeDisposable = baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n },\n introduction,\n };\n\n return result;\n};\n","import { source, SourceType } from \"../Source/Source\";\nimport { give, GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { GuestDisposableType } from \"../Guest/GuestDisposable\";\n\nconst poolSets = new Map<PoolType, Set<GuestObjectType>>();\nconst poolsOfInitiators = new Map<SourceType, PoolType>();\nconst subSources = new Map<SourceType, SourceType[]>();\n\nconst poolsChangeFns: (() => void)[] = [];\nconst notifyPoolsChange = () => {\n poolsChangeFns.forEach((fn) => fn());\n};\nconst lastPatronPoolsStatistic = {\n poolsCount: 0,\n patronsCount: 0,\n};\n/**\n * Helps to debug application and see is it have problems with frozen pools\n * @url https://silentium-lab.github.io/silentium/#/utils/patron-pools-statistic\n */\nexport const patronPoolsStatistic = source<{\n poolsCount: number;\n patronsCount: number;\n}>((g) => {\n give(lastPatronPoolsStatistic, g);\n poolsChangeFns.push(() => {\n let patronsCount = 0;\n poolSets.forEach((set) => {\n patronsCount += set.size;\n });\n lastPatronPoolsStatistic.poolsCount = poolSets.size;\n lastPatronPoolsStatistic.patronsCount = patronsCount;\n give(lastPatronPoolsStatistic, g);\n });\n});\n\n/**\n * Helps to connect source and subsource, needed to destroy all sub sources\n * when base source will be destroyed\n * @url https://silentium-lab.github.io/silentium/#/utils/sub-source\n */\nexport const subSource = <T>(\n subSource: SourceType,\n source: SourceType<T>,\n): SourceType<T> => {\n // sub sources can appear only on SourceObjectType\n if (source !== null && typeof source !== \"object\") {\n return source;\n }\n\n if (!subSources.has(source)) {\n subSources.set(source, []);\n }\n\n subSources.get(source)?.push(subSource);\n\n return subSource;\n};\n\n/**\n * Helps to define many sources of one sub source\n */\nexport const subSourceMany = <T>(\n subSourceSrc: SourceType<T>,\n sourcesSrc: SourceType[],\n): SourceType<T> => {\n sourcesSrc.forEach((source) => {\n subSource(subSourceSrc, source);\n });\n return subSourceSrc;\n};\n\n/**\n * Helps to remove all pools of related initiators\n * @url https://silentium-lab.github.io/silentium/#/utils/destroy\n */\nexport const destroy = (initiators: SourceType[]) => {\n initiators.forEach((initiator) => {\n const pool = poolsOfInitiators.get(initiator);\n pool?.destroy();\n const relatedInitiators = subSources.get(initiator);\n if (relatedInitiators) {\n destroy(relatedInitiators);\n }\n });\n};\n\n/**\n * Returns all pools related to one patron\n * @url https://silentium-lab.github.io/silentium/#/utils/patron-pools\n */\nexport const patronPools = (patron: GuestObjectType) => {\n const pools: PoolType[] = [];\n poolSets.forEach((pool, poolInstance) => {\n if (pool.has(patron)) {\n pools.push(poolInstance);\n }\n });\n return pools;\n};\n\n/**\n * Removes patron from all existed pools\n * @url https://silentium-lab.github.io/silentium/#/utils/remove-patron-from-pools\n */\nexport const removePatronFromPools = (patron: GuestObjectType) => {\n if (patron === undefined) {\n throw new Error(\"removePatronFromPools didn't receive patron argument\");\n }\n poolSets.forEach((pool) => {\n pool.delete(patron);\n });\n};\n\n/**\n * Checks what patron is connected with any pool\n * @url https://silentium-lab.github.io/silentium/#/utils/is-patron-in-pools\n */\nexport const isPatronInPools = (patron: GuestObjectType) => {\n if (patron === undefined) {\n throw new Error(\"isPatronInPools didn't receive patron argument\");\n }\n let inPool = false;\n poolSets.forEach((pool) => {\n if (!inPool) {\n inPool = pool.has(patron);\n }\n });\n return inPool;\n};\n\nexport interface PoolType<T = any> extends GuestObjectType<T> {\n add(guest: GuestObjectType<T>): this;\n distribute(receiving: T, possiblePatron: GuestObjectType<T>): this;\n remove(patron: GuestObjectType<T>): this;\n size(): number;\n destroy(): void;\n}\n\n/**\n * Pool class helps to implement dispatching for patron about new values\n * what may appear in sources\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-pool\n */\nexport class PatronPool<T> implements PoolType<T> {\n private patrons: Set<GuestObjectType<T>>;\n\n public give: (value: T) => this;\n\n public constructor(private initiator: SourceType) {\n this.patrons = new Set<GuestObjectType<T>>();\n poolSets.set(this, this.patrons);\n poolsOfInitiators.set(this.initiator, this);\n const doReceive = (value: T) => {\n this.patrons.forEach((target) => {\n this.sendValueToGuest(value, target);\n });\n };\n this.give = (value: T) => {\n doReceive(value);\n return this;\n };\n notifyPoolsChange();\n }\n\n public size(): number {\n return this.patrons.size;\n }\n\n public add(shouldBePatron: GuestType<T>) {\n if (!shouldBePatron) {\n throw new Error(\"PatronPool add method received nothing!\");\n }\n if (\n typeof shouldBePatron !== \"function\" &&\n shouldBePatron.introduction &&\n shouldBePatron.introduction() === \"patron\"\n ) {\n this.patrons.add(shouldBePatron);\n }\n notifyPoolsChange();\n return this;\n }\n\n public remove(patron: GuestObjectType<T>) {\n this.patrons.delete(patron);\n notifyPoolsChange();\n return this;\n }\n\n public distribute(receiving: T, possiblePatron: GuestType<T>): this {\n this.add(possiblePatron);\n this.sendValueToGuest(receiving, possiblePatron);\n return this;\n }\n\n public destroy() {\n this.patrons.forEach((patron) => {\n this.remove(patron);\n });\n poolSets.delete(this);\n poolsOfInitiators.delete(this.initiator);\n notifyPoolsChange();\n return this;\n }\n\n private sendValueToGuest(value: T, guest: GuestType<T>) {\n const isDisposed = this.guestDisposed(value, guest);\n if (!isDisposed) {\n give(value, guest);\n }\n return this;\n }\n\n private guestDisposed(value: T, guest: GuestType<T>) {\n if ((guest as GuestDisposableType).disposed?.(value)) {\n this.remove(guest as GuestObjectType);\n return true;\n }\n return false;\n }\n}\n","import { introduction } from \"../Patron/Patron\";\nimport { GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { guestApplied } from \"../Guest/GuestApplied\";\n\n/**\n * Helps to apply function to patron\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-applied\n */\nexport const patronApplied = <T, R>(\n baseGuest: GuestType<R>,\n applier: (value: T) => R,\n): GuestObjectType<T> => {\n const applied = guestApplied(baseGuest, applier);\n\n const result = {\n give(value: T) {\n applied.give(value);\n return result;\n },\n introduction,\n };\n\n return result;\n};\n","import { introduction } from \"../Patron/Patron\";\nimport { GuestExecutorType, GuestType } from \"../Guest/Guest\";\nimport { guestExecutorApplied } from \"../Guest/GuestExecutorApplied\";\n\n/**\n * Helps to apply function to patrons executor\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-executor-applied\n */\nexport const patronExecutorApplied = <T>(\n baseGuest: GuestType<T>,\n applier: (executor: GuestExecutorType) => GuestExecutorType,\n) => {\n const guestApplied = guestExecutorApplied(baseGuest, applier);\n\n const result = {\n give(value: T) {\n guestApplied.give(value);\n return result;\n },\n introduction,\n };\n\n return result;\n};\n","import { guest, GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { isPatron } from \"../Patron/Patron\";\nimport { patronOnce } from \"../Patron/PatronOnce\";\nimport { PatronPool } from \"../Patron/PatronPool\";\nimport {\n isSource,\n SourceDataType,\n SourceObjectType,\n SourceType,\n value,\n} from \"./Source\";\n\nexport type SourceChangeableType<T = any> = SourceObjectType<T> &\n GuestObjectType<T>;\n\nconst sourceIsEmpty = (source: unknown) =>\n source === undefined || source === null;\n\n/**\n * Ability to create source what can be changed later\n * @url https://silentium-lab.github.io/silentium/#/source/source-of\n */\nexport const sourceOf = <T>(source?: SourceType<T>) => {\n const createdSource = {} as SourceChangeableType<T>;\n const thePool = new PatronPool(createdSource);\n let isEmpty = sourceIsEmpty(source);\n\n if (!isEmpty && isSource(source)) {\n value(\n source,\n patronOnce((unwrappedSourceDocument) => {\n isEmpty = sourceIsEmpty(unwrappedSourceDocument);\n source = unwrappedSourceDocument as SourceDataType<T>;\n }),\n );\n }\n\n createdSource.value = (g: GuestType<T>) => {\n if (isEmpty) {\n if (isPatron(g)) {\n thePool.add(g);\n }\n return createdSource;\n }\n\n if (typeof g === \"function\") {\n thePool.distribute(source, guest(g));\n } else {\n thePool.distribute(source, g);\n }\n\n return createdSource;\n };\n\n createdSource.give = (value: T) => {\n isEmpty = sourceIsEmpty(value);\n source = value as SourceDataType<T>;\n\n if (!isEmpty) {\n thePool.give(source);\n }\n\n return createdSource;\n };\n\n return createdSource as SourceChangeableType<T>;\n};\n","import { subSource } from \"../Patron/PatronPool\";\nimport { give, guest, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { patron } from \"../Patron/Patron\";\nimport { SourceType, value } from \"./Source\";\nimport { sourceOf } from \"./SourceChangeable\";\n\ntype ExtractType<T> = T extends SourceType<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends SourceType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\n/**\n * Represents common value as Array of bunch of sources,\n * when all sources will gets it's values\n * @url https://silentium-lab.github.io/silentium/#/source/source-all\n */\nexport const sourceAll = <const T extends SourceType[]>(\n sources: T,\n): SourceType<ExtractTypesFromArray<T>> => {\n const keysKnown = new Set<string>(Object.keys(sources));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const theAll = sourceOf({});\n\n Object.entries(sources).forEach(([key, source]) => {\n subSource(theAll, source);\n keysKnown.add(key);\n value(\n source,\n patron((v) => {\n theAll.value(\n guest((all: Record<string, unknown>) => {\n keysFilled.add(key);\n const lastAll = {\n ...all,\n [key]: v,\n };\n theAll.give(lastAll);\n }),\n );\n }),\n );\n });\n\n return (guest: GuestType<ExtractTypesFromArray<T>>) => {\n value((g) => {\n theAll.value(\n guestCast(g, (value) => {\n if (isAllFilled()) {\n give(Object.values(value) as ExtractTypesFromArray<T>, g);\n }\n }),\n );\n }, guest);\n };\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { patronOnce } from \"../Patron/PatronOnce\";\nimport { PersonalType } from \"../Personal/Personal\";\nimport { isSource, SourceType, value } from \"./Source\";\nimport { sourceAll } from \"./SourceAll\";\nimport { sourceOf, SourceChangeableType } from \"./SourceChangeable\";\n\n/**\n * Ability to apply source to source of array values sequentially\n * @url https://silentium-lab.github.io/silentium/#/source/source-sequence\n */\nexport const sourceSequence = <T, TG>(\n baseSource: SourceType<T[]>,\n targetSource: PersonalType<SourceType<TG>>,\n) => {\n if (baseSource === undefined) {\n throw new Error(\"SourceSequence didn't receive baseSource argument\");\n }\n if (targetSource === undefined) {\n throw new Error(\"SourceSequence didn't receive targetSource argument\");\n }\n\n return (guest: GuestType<TG[]>) => {\n const sequenceSource = sourceOf();\n const source = targetSource.get(sequenceSource);\n\n value(\n baseSource,\n guestCast(guest, (theValue) => {\n let index = 0;\n\n const sources: SourceChangeableType[] = [];\n theValue.forEach(() => {\n sources.push(sourceOf());\n });\n\n const nextItemHandle = () => {\n if (theValue[index + 1] !== undefined) {\n index = index + 1;\n handle();\n }\n };\n\n function handle() {\n const currentSource = sources[index];\n const nextValue = theValue[index];\n if (isSource(nextValue)) {\n value(\n nextValue,\n patronOnce((theNextValue) => {\n sequenceSource.give(theNextValue);\n value(source, currentSource);\n nextItemHandle();\n }),\n );\n } else {\n sequenceSource.give(nextValue);\n value(source, currentSource);\n nextItemHandle();\n }\n }\n\n if (theValue[index] !== undefined) {\n handle();\n value(sourceAll(sources), guest);\n } else {\n give([], guest);\n }\n }),\n );\n };\n};\n","import { subSource } from \"../Patron/PatronPool\";\nimport { GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { PersonalType } from \"../Personal/Personal\";\nimport { SourceType, value } from \"./Source\";\nimport { sourceAll } from \"./SourceAll\";\n\n/**\n * Helps to modify many sources with one private source\n * @url https://silentium-lab.github.io/silentium/#/source/source-map\n */\nexport const sourceMap = <T, TG>(\n baseSource: SourceType<T[]>,\n targetSource: PersonalType<SourceType<TG>>,\n) => {\n if (baseSource === undefined) {\n throw new Error(\"SourceMap didn't receive baseSource argument\");\n }\n if (targetSource === undefined) {\n throw new Error(\"SourceMap didn't receive targetSource argument\");\n }\n\n return (guest: GuestType<TG[]>) => {\n value(\n baseSource,\n guestCast(<GuestType>guest, (theValue) => {\n const sources: SourceType[] = [];\n theValue.forEach((val) => {\n const source = targetSource.get(val);\n subSource(source, baseSource);\n sources.push(source);\n });\n value(sourceAll(sources), guest);\n }),\n );\n return this;\n };\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { SourceType, value } from \"./Source\";\n\n/**\n * Connects guest with source what give response faster than others\n * @url https://silentium-lab.github.io/silentium/#/source/source-race\n */\nexport const sourceRace = <T>(sources: SourceType<T>[]) => {\n if (sources === undefined) {\n throw new Error(\"SourceRace didnt receive sources argument\");\n }\n\n return (guest: GuestType<T>) => {\n let connectedWithSource: SourceType | null = null;\n sources.forEach((source) => {\n value(\n source,\n guestCast(<GuestType>guest, (value) => {\n if (!connectedWithSource || connectedWithSource === source) {\n give(value as T, guest);\n connectedWithSource = source;\n }\n }),\n );\n });\n };\n};\n","import { patron } from \"../Patron/Patron\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\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 * Returns value of some source when all sources before it gives their response\n * @url https://silentium-lab.github.io/silentium/#/source/source-chain\n */\nexport const sourceChain = <T extends SourceType[]>(\n ...sources: T\n): SourceType<Last<T>> => {\n const resultSrc = sourceOf<Last<T>>();\n const respondedSources = new Set();\n let lastSourceValue: any = null;\n sources.forEach((source, index) => {\n value(\n source,\n patron((value) => {\n respondedSources.add(index);\n if (index === sources.length - 1) {\n lastSourceValue = value;\n }\n if (\n respondedSources.size === sources.length &&\n lastSourceValue !== null\n ) {\n resultSrc.give(lastSourceValue);\n }\n }),\n );\n });\n\n return resultSrc.value;\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { SourceType, value } from \"./Source\";\nimport { SourceChangeableType } from \"./SourceChangeable\";\n\n/**\n * Ability to build common changeable source from different guest and source\n * @url https://silentium-lab.github.io/silentium/#/source/source-dynamic\n */\nexport const sourceDynamic = <T>(\n baseGuest: GuestType<T>,\n baseSource: SourceType<T>,\n): SourceChangeableType<T> => {\n if (baseGuest === undefined) {\n throw new Error(\"SourceDynamic didn't receive baseGuest argument\");\n }\n if (baseSource === undefined) {\n throw new Error(\"SourceDynamic didn't receive baseSource argument\");\n }\n\n const sourceObject = {\n value(guest: GuestType<T>) {\n value(baseSource, guest);\n return sourceObject;\n },\n give(value: T) {\n give(value, baseGuest);\n return this;\n },\n };\n\n return sourceObject;\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { SourceType, value } from \"../Source/Source\";\n\n/**\n * Gives ability to apply function to source value\n * @url https://silentium-lab.github.io/silentium/#/source/source-applied\n */\nexport const sourceApplied = <T, R>(\n baseSource: SourceType<T>,\n applier: (v: T) => R,\n) => {\n return (guest: GuestType<R>) => {\n value(\n baseSource,\n guestCast(guest, (v) => {\n give(applier(v), guest);\n }),\n );\n };\n};\n","import { SourceExecutorType, SourceType, value } from \"../Source/Source\";\n\n/**\n * Ability to apply function to source executor, helpful when need to apply throttling or debounce\n * @url https://silentium-lab.github.io/silentium/#/source/source-executor-applied\n */\nexport const sourceExecutorApplied = <T>(\n source: SourceType<T>,\n applier: (executor: SourceExecutorType<T>) => SourceExecutorType<T>,\n) => {\n return applier((g) => {\n value(source, g);\n });\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { SourceType, value } from \"../Source/Source\";\n\n/**\n * Helps not to respond with information what checked by predicate function\n * @url https://silentium-lab.github.io/silentium/#/source/source-filtered\n */\nexport const sourceFiltered = <T>(\n baseSource: SourceType<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return (g: GuestType<T>) => {\n value(\n baseSource,\n guestCast(g, (v) => {\n if (predicate(v) === true) {\n give(v, g);\n } else if (defaultValue !== undefined) {\n give(defaultValue, g);\n }\n }),\n );\n };\n};\n","import { GuestType } from \"../Guest/Guest\";\nimport { SourceType, value } from \"./Source\";\nimport { sourceOf } from \"./SourceChangeable\";\n\n/**\n * Ability set the value only once\n * @url https://silentium-lab.github.io/silentium/#/source/source-once\n */\nexport const sourceOnce = <T>(initialValue?: SourceType<T>) => {\n let isFilled = initialValue !== undefined;\n const source = sourceOf(initialValue);\n\n return {\n value(guest: GuestType<T>) {\n value(source, guest);\n return this;\n },\n give(value: T) {\n if (!isFilled) {\n source.give(value);\n isFilled = true;\n }\n return this;\n },\n };\n};\n","import { GuestType } from \"../Guest/Guest\";\nimport { guestSync } from \"../Guest/GuestSync\";\nimport { patron } from \"../Patron/Patron\";\nimport { SourceObjectType, SourceType, value } from \"../Source/Source\";\n\n/**\n * Helps to represent source value as sync value, what can be returned\n * useful for example in tests\n * @url https://silentium-lab.github.io/silentium/#/source/source-sync\n */\nexport const sourceSync = <T>(\n baseSource: SourceType<T>,\n defaultValue?: unknown,\n): SourceObjectType<T> & { syncValue(): T } => {\n const syncGuest = guestSync<T>(defaultValue as T);\n value(baseSource, patron(syncGuest));\n\n return {\n value(guest: GuestType<T>) {\n value(baseSource, guest);\n return this;\n },\n syncValue() {\n try {\n return syncGuest.value() as T;\n } catch {\n throw new Error(\"No value in SourceSync\");\n }\n },\n };\n};\n","import { GuestType } from \"../Guest/Guest\";\nimport { patron } from \"../Patron/Patron\";\nimport { subSourceMany } from \"../Patron/PatronPool\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { ExtractTypesFromArray, sourceAll } from \"../Source/SourceAll\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\n\n/**\n * Simplifies sources combination, when we need to create value depending on many sources\n * @url https://silentium-lab.github.io/silentium/#/source/source-combined\n */\nexport const sourceCombined =\n <const T extends SourceType[]>(...sources: T) =>\n <R>(\n source: (\n guest: GuestType<R>,\n ...sourcesValues: ExtractTypesFromArray<T>\n ) => void,\n ): SourceType<R> => {\n const result = sourceOf<R>();\n subSourceMany(result, sources);\n\n value(\n sourceAll(sources),\n patron((actualValues) => {\n source(result.give, ...actualValues);\n }),\n );\n\n return result.value;\n };\n","import { give } from \"../Guest/Guest\";\nimport { patron } from \"../Patron/Patron\";\nimport { subSource } from \"../Patron/PatronPool\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\n\n/**\n * @url https://silentium-lab.github.io/silentium/#/source/source-resettable\n */\nexport const sourceResettable = <T>(\n baseSrc: SourceType<T>,\n resettableSrc: SourceType<unknown>,\n) => {\n const result = sourceOf<T>();\n\n value(\n resettableSrc,\n patron(() => {\n give(null, result);\n }),\n );\n\n value(baseSrc, patron(result));\n subSource(result, baseSrc);\n\n return result;\n};\n","import { patron } from \"../Patron/Patron\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\n\n/**\n * Present source of value what was last appeared in any\n * of given sources, can be used as default value, when some source\n * don't respond\n * @url https://silentium-lab.github.io/silentium/#/source/source-any\n */\nexport const sourceAny = <T>(sources: SourceType<T>[]) => {\n const lastSrc = sourceOf<T>();\n sources.forEach((source) => {\n value(source, patron(lastSrc));\n });\n\n return lastSrc;\n};\n","import { PersonalType } from \"./Personal\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\n\nexport const personalClass = <T>(\n constructorFn: Prototyped<T>,\n modules: Record<string, unknown> = {},\n): PersonalType<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","export interface PersonalType<T> {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT;\n}\n\n/**\n * Helps to get personal instance of dependency\n * @url https://silentium-lab.github.io/silentium/#/utils/private\n */\nexport const personal = <T>(\n buildingFn: (...args: any[]) => T,\n): PersonalType<T> => {\n if (buildingFn === undefined) {\n throw new Error(\"personal 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"],"names":["source","guest","subSource","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium.cjs","sources":["../src/Source/Source.ts","../src/Guest/Guest.ts","../src/Guest/GuestCast.ts","../src/Guest/GuestSync.ts","../src/Guest/GuestDisposable.ts","../src/Guest/GuestApplied.ts","../src/Guest/GuestExecutorApplied.ts","../src/Patron/Patron.ts","../src/Patron/PatronOnce.ts","../src/Patron/PatronPool.ts","../src/Patron/PatronApplied.ts","../src/Patron/PatronExecutorApplied.ts","../src/Source/SourceChangeable.ts","../src/Source/SourceAll.ts","../src/Source/SourceSequence.ts","../src/Source/SourceMap.ts","../src/Source/SourceRace.ts","../src/Source/SourceChain.ts","../src/Source/SourceDynamic.ts","../src/Source/SourceApplied.ts","../src/Source/SourceExecutorApplied.ts","../src/Source/SourceFiltered.ts","../src/Source/SourceOnce.ts","../src/Source/SourceSync.ts","../src/Source/SourceCombined.ts","../src/Source/SourceResettable.ts","../src/Source/SourceAny.ts","../src/Source/SourceLazy.ts","../src/Lazy/LazyClass.ts","../src/Lazy/Lazy.ts"],"sourcesContent":["import { give, GuestType } from \"../Guest/Guest\";\n\nexport type SourceExecutorType<T> = (guest: GuestType<T>) => unknown;\n\nexport interface SourceObjectType<T> {\n value: SourceExecutorType<T>;\n}\n\nexport type SourceDataType<T> = Extract<\n T,\n string | number | boolean | Date | object | Array<unknown> | symbol\n>;\n\nexport type SourceType<T = any> =\n | SourceExecutorType<T>\n | SourceObjectType<T>\n | SourceDataType<T>;\n\n/**\n * Helps to connect source and guest, if you need to get value in guest from source\n * helpful because we don't know what shape of source do we have, it can be function or object or primitive\n * @url https://silentium-lab.github.io/silentium/#/utils/value\n */\nexport const value = <T>(source: SourceType<T>, guest: GuestType<T>) => {\n if (source === undefined || source === null) {\n throw new Error(\"value didn't receive source argument\");\n }\n if (guest === undefined || source === null) {\n throw new Error(\"value didn't receive guest argument\");\n }\n if (typeof source === \"function\") {\n source(guest);\n } else if (\n typeof source === \"object\" &&\n \"value\" in source &&\n typeof source.value === \"function\"\n ) {\n source.value(guest);\n } else {\n give(source as T, guest);\n }\n\n return source;\n};\n\n/**\n * Helps to check what some information is of source shape\n * @url https://silentium-lab.github.io/silentium/#/utils/is-source\n */\nexport const isSource = <T>(\n mbSource: T | SourceType<T>,\n): mbSource is SourceType<T> => {\n if (\n mbSource !== null &&\n typeof mbSource === \"object\" &&\n \"value\" in mbSource &&\n typeof mbSource.value === \"function\"\n ) {\n return true;\n }\n return mbSource !== null && mbSource !== undefined;\n};\n\n/**\n * Represents source as function\n * @url https://silentium-lab.github.io/silentium/#/source\n */\nexport const source = <T>(source: SourceType<T>): SourceExecutorType<T> => {\n if (source === undefined) {\n throw new Error(\"Source constructor didn't receive executor function\");\n }\n\n return (guest: GuestType<T>) => {\n value(source, guest);\n };\n};\n","import { source, SourceExecutorType, SourceType } from \"../Source/Source\";\n\ntype GuestIntroduction = \"guest\" | \"patron\";\n\nexport type GuestExecutorType<T = any, This = void> = (value: T) => This;\n\nexport interface GuestObjectType<T = any> {\n give(value: T): this;\n introduction?(): GuestIntroduction;\n}\n\nexport type GuestType<T = any> = GuestExecutorType<T> | GuestObjectType<T>;\n\n/**\n * Helps to give data to guest, guests can be of different shapes\n * function guest or object guest\n * @url https://silentium-lab.github.io/silentium/#/utils/give\n */\nexport const give = <T>(\n data: T,\n guest?: GuestType<T>,\n): GuestType<T> | SourceExecutorType<T> => {\n if (data === undefined) {\n throw new Error(\"give didn't receive data argument\");\n }\n if (guest === undefined) {\n return source<T>(data as SourceType<T>) as SourceExecutorType<T>;\n }\n if (typeof guest === \"function\") {\n guest(data);\n } else {\n guest.give(data);\n }\n return guest;\n};\n\n/**\n * Helps to check if mbGuest can be used to retrieve value\n * @url https://silentium-lab.github.io/silentium/#/utils/is-guest\n */\nexport const isGuest = (mbGuest: any): mbGuest is GuestType => {\n if (mbGuest === undefined) {\n throw new Error(\"isGuest didnt receive mbGuest argument\");\n }\n return typeof mbGuest === \"function\" || typeof mbGuest?.give === \"function\";\n};\n\n/**\n * Helps to create guest of object type\n * @url https://silentium-lab.github.io/silentium/#/guest\n */\nexport const guest = <T>(receiver: GuestExecutorType<T>) => {\n if (!receiver) {\n throw new Error(\"receiver function was not passed to Guest constructor\");\n }\n const result = {\n give(value: T) {\n receiver(value);\n return result;\n },\n };\n return result;\n};\n","import { give, GuestType } from \"./Guest\";\nimport { GuestDisposableType, MaybeDisposableType } from \"./GuestDisposable\";\n\n/**\n * Helps to inherit guest behavior, its introduction and dispose settings\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-cast\n */\nexport const guestCast = <T>(\n sourceGuest: GuestType<any>,\n targetGuest: GuestType<T>,\n): GuestDisposableType<T> => {\n if (sourceGuest === undefined) {\n throw new Error(\"GuestCast didn't receive sourceGuest argument\");\n }\n if (targetGuest === undefined) {\n throw new Error(\"GuestCast didn't receive targetGuest argument\");\n }\n\n const result = {\n disposed(value: T | null): boolean {\n const maybeDisposable = sourceGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n },\n give(value: T) {\n give(value, targetGuest);\n return result;\n },\n introduction() {\n if (typeof sourceGuest === \"function\") {\n return \"guest\";\n }\n if (!sourceGuest.introduction) {\n return \"guest\";\n }\n return sourceGuest.introduction();\n },\n };\n\n return result;\n};\n","import { GuestObjectType } from \"./Guest\";\n\nexport interface GuestValueType<T = any> extends GuestObjectType<T> {\n value(): T;\n}\n\n/**\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-sync\n */\nexport const guestSync = <T>(theValue?: T): GuestValueType<T> => {\n const result = {\n give(value: T) {\n theValue = value;\n return result;\n },\n value() {\n if (theValue === undefined) {\n throw new Error(\"no value in GuestSync!\");\n }\n return theValue;\n },\n };\n\n return result;\n};\n","import { give, GuestObjectType, GuestType } from \"./Guest\";\n\nexport interface GuestDisposableType<T = any> extends GuestObjectType<T> {\n disposed(value: T | null): boolean;\n}\n\nexport type MaybeDisposableType<T = any> = Partial<GuestDisposableType<T>>;\n\n/**\n * Connects to guest logic what can tell PatronPool\n * what guest don't need to receive new values\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-disposable\n */\nexport const guestDisposable = <T>(\n guest: GuestType,\n disposeCheck: (value: T | null) => boolean,\n): GuestDisposableType<T> => {\n if (guest === undefined) {\n throw new Error(\"GuestDisposable didn't receive guest argument\");\n }\n if (disposeCheck === undefined) {\n throw new Error(\"GuestDisposable didn't receive disposeCheck argument\");\n }\n\n const result = {\n disposed(value: T | null): boolean {\n return disposeCheck(value);\n },\n give(value: T) {\n give(value, guest);\n return result;\n },\n };\n\n return result;\n};\n","import { give, GuestObjectType, GuestType } from \"../Guest/Guest\";\n\n/**\n * Helps to apply function to value before baseGuest will receive it\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-applied\n */\nexport const guestApplied = <T, R>(\n baseGuest: GuestType<R>,\n applier: (value: T) => R,\n): GuestObjectType<T> => {\n const result = {\n give(value: T) {\n give(applier(value), baseGuest);\n return result;\n },\n };\n return result;\n};\n","import {\n give,\n GuestExecutorType,\n GuestObjectType,\n GuestType,\n} from \"../Guest/Guest\";\n\n/**\n * Apply function to guest function of receiving value, useful for debouncing or throttling\n * @url https://silentium-lab.github.io/silentium/#/guest/guest-executor-applied\n */\nexport const guestExecutorApplied = <T>(\n baseGuest: GuestType<T>,\n applier: (executor: GuestExecutorType<T>) => GuestExecutorType<T>,\n): GuestObjectType<T> => {\n const result = {\n give: applier((v) => give(v, baseGuest)),\n };\n\n return result as GuestObjectType<T>;\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { GuestDisposableType } from \"../Guest/GuestDisposable\";\n\nexport type PatronType<T> = GuestDisposableType<T> & {\n introduction(): \"patron\";\n};\n\n/**\n * Helps to check what incoming object is patron\n * @url https://silentium-lab.github.io/silentium/#/utils/is-patron\n */\nexport const isPatron = (guest: GuestType): guest is PatronType<unknown> =>\n typeof guest === \"object\" &&\n guest !== null &&\n guest?.introduction?.() === \"patron\";\n\nexport const introduction = () => \"patron\" as const;\n\n/**\n * Help to turn existed guest intro patron\n * @url https://silentium-lab.github.io/silentium/#/patron\n */\nexport const patron = <T>(\n willBePatron: GuestType<T>,\n): GuestDisposableType<T> => {\n if (willBePatron === undefined) {\n throw new Error(\"Patron didn't receive willBePatron argument\");\n }\n\n const result = {\n give(value: T) {\n give(value, willBePatron);\n return result;\n },\n disposed(value: T | null): boolean {\n const maybeDisposable = willBePatron as GuestDisposableType;\n return maybeDisposable?.disposed?.(value) || false;\n },\n introduction,\n };\n\n return result;\n};\n","import { introduction } from \"../Patron/Patron\";\nimport { give, GuestType } from \"../Guest/Guest\";\nimport {\n GuestDisposableType,\n MaybeDisposableType,\n} from \"../Guest/GuestDisposable\";\n\n/**\n * Helps to call patron only once, this will be helpful when you\n * need value but you know what value can not be existed at a time of requesting\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-once\n */\nexport const patronOnce = <T>(\n baseGuest: GuestType<T>,\n): GuestDisposableType<T> => {\n if (baseGuest === undefined) {\n throw new Error(\"PatronOnce didn't receive baseGuest argument\");\n }\n\n let received = false;\n\n const result = {\n give(value: T) {\n if (!received) {\n received = true;\n give(value, baseGuest);\n }\n return result;\n },\n disposed(value: T | null): boolean {\n if (received) {\n return true;\n }\n const maybeDisposable = baseGuest as MaybeDisposableType;\n return maybeDisposable.disposed ? maybeDisposable.disposed(value) : false;\n },\n introduction,\n };\n\n return result;\n};\n","import { source, SourceType } from \"../Source/Source\";\nimport { give, GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { GuestDisposableType } from \"../Guest/GuestDisposable\";\n\nconst poolSets = new Map<PoolType, Set<GuestObjectType>>();\nconst poolsOfInitiators = new Map<SourceType, PoolType>();\nconst subSources = new Map<SourceType, SourceType[]>();\n\nconst poolsChangeFns: (() => void)[] = [];\nconst notifyPoolsChange = () => {\n poolsChangeFns.forEach((fn) => fn());\n};\nconst lastPatronPoolsStatistic = {\n poolsCount: 0,\n patronsCount: 0,\n};\n/**\n * Helps to debug application and see is it have problems with frozen pools\n * @url https://silentium-lab.github.io/silentium/#/utils/patron-pools-statistic\n */\nexport const patronPoolsStatistic = source<{\n poolsCount: number;\n patronsCount: number;\n}>((g) => {\n give(lastPatronPoolsStatistic, g);\n poolsChangeFns.push(() => {\n let patronsCount = 0;\n poolSets.forEach((set) => {\n patronsCount += set.size;\n });\n lastPatronPoolsStatistic.poolsCount = poolSets.size;\n lastPatronPoolsStatistic.patronsCount = patronsCount;\n give(lastPatronPoolsStatistic, g);\n });\n});\n\n/**\n * Helps to connect source and subsource, needed to destroy all sub sources\n * when base source will be destroyed\n * @url https://silentium-lab.github.io/silentium/#/utils/sub-source\n */\nexport const subSource = <T>(\n subSource: SourceType,\n source: SourceType<T>,\n): SourceType<T> => {\n // sub sources can appear only on SourceObjectType\n if (source !== null && typeof source !== \"object\") {\n return source;\n }\n\n if (!subSources.has(source)) {\n subSources.set(source, []);\n }\n\n subSources.get(source)?.push(subSource);\n\n return subSource;\n};\n\n/**\n * Helps to define many sources of one sub source\n */\nexport const subSourceMany = <T>(\n subSourceSrc: SourceType<T>,\n sourcesSrc: SourceType[],\n): SourceType<T> => {\n sourcesSrc.forEach((source) => {\n subSource(subSourceSrc, source);\n });\n return subSourceSrc;\n};\n\n/**\n * Helps to remove all pools of related initiators\n * @url https://silentium-lab.github.io/silentium/#/utils/destroy\n */\nexport const destroy = (initiators: SourceType[]) => {\n initiators.forEach((initiator) => {\n const pool = poolsOfInitiators.get(initiator);\n pool?.destroy();\n const relatedInitiators = subSources.get(initiator);\n if (relatedInitiators) {\n destroy(relatedInitiators);\n }\n });\n};\n\n/**\n * Returns all pools related to one patron\n * @url https://silentium-lab.github.io/silentium/#/utils/patron-pools\n */\nexport const patronPools = (patron: GuestObjectType) => {\n const pools: PoolType[] = [];\n poolSets.forEach((pool, poolInstance) => {\n if (pool.has(patron)) {\n pools.push(poolInstance);\n }\n });\n return pools;\n};\n\n/**\n * Removes patron from all existed pools\n * @url https://silentium-lab.github.io/silentium/#/utils/remove-patron-from-pools\n */\nexport const removePatronFromPools = (patron: GuestObjectType) => {\n if (patron === undefined) {\n throw new Error(\"removePatronFromPools didn't receive patron argument\");\n }\n poolSets.forEach((pool) => {\n pool.delete(patron);\n });\n};\n\n/**\n * Checks what patron is connected with any pool\n * @url https://silentium-lab.github.io/silentium/#/utils/is-patron-in-pools\n */\nexport const isPatronInPools = (patron: GuestObjectType) => {\n if (patron === undefined) {\n throw new Error(\"isPatronInPools didn't receive patron argument\");\n }\n let inPool = false;\n poolSets.forEach((pool) => {\n if (!inPool) {\n inPool = pool.has(patron);\n }\n });\n return inPool;\n};\n\nexport interface PoolType<T = any> extends GuestObjectType<T> {\n add(guest: GuestObjectType<T>): this;\n distribute(receiving: T, possiblePatron: GuestObjectType<T>): this;\n remove(patron: GuestObjectType<T>): this;\n size(): number;\n destroy(): void;\n}\n\n/**\n * Pool class helps to implement dispatching for patron about new values\n * what may appear in sources\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-pool\n */\nexport class PatronPool<T> implements PoolType<T> {\n private patrons: Set<GuestObjectType<T>>;\n\n public give: (value: T) => this;\n\n public constructor(private initiator: SourceType) {\n this.patrons = new Set<GuestObjectType<T>>();\n poolSets.set(this, this.patrons);\n poolsOfInitiators.set(this.initiator, this);\n const doReceive = (value: T) => {\n this.patrons.forEach((target) => {\n this.sendValueToGuest(value, target);\n });\n };\n this.give = (value: T) => {\n doReceive(value);\n return this;\n };\n notifyPoolsChange();\n }\n\n public size(): number {\n return this.patrons.size;\n }\n\n public add(shouldBePatron: GuestType<T>) {\n if (!shouldBePatron) {\n throw new Error(\"PatronPool add method received nothing!\");\n }\n if (\n typeof shouldBePatron !== \"function\" &&\n shouldBePatron.introduction &&\n shouldBePatron.introduction() === \"patron\"\n ) {\n this.patrons.add(shouldBePatron);\n }\n notifyPoolsChange();\n return this;\n }\n\n public remove(patron: GuestObjectType<T>) {\n this.patrons.delete(patron);\n notifyPoolsChange();\n return this;\n }\n\n public distribute(receiving: T, possiblePatron: GuestType<T>): this {\n this.add(possiblePatron);\n this.sendValueToGuest(receiving, possiblePatron);\n return this;\n }\n\n public destroy() {\n this.patrons.forEach((patron) => {\n this.remove(patron);\n });\n poolSets.delete(this);\n poolsOfInitiators.delete(this.initiator);\n notifyPoolsChange();\n return this;\n }\n\n private sendValueToGuest(value: T, guest: GuestType<T>) {\n const isDisposed = this.guestDisposed(value, guest);\n if (!isDisposed) {\n give(value, guest);\n }\n return this;\n }\n\n private guestDisposed(value: T, guest: GuestType<T>) {\n if ((guest as GuestDisposableType).disposed?.(value)) {\n this.remove(guest as GuestObjectType);\n return true;\n }\n return false;\n }\n}\n","import { introduction } from \"../Patron/Patron\";\nimport { GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { guestApplied } from \"../Guest/GuestApplied\";\n\n/**\n * Helps to apply function to patron\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-applied\n */\nexport const patronApplied = <T, R>(\n baseGuest: GuestType<R>,\n applier: (value: T) => R,\n): GuestObjectType<T> => {\n const applied = guestApplied(baseGuest, applier);\n\n const result = {\n give(value: T) {\n applied.give(value);\n return result;\n },\n introduction,\n };\n\n return result;\n};\n","import { introduction } from \"../Patron/Patron\";\nimport { GuestExecutorType, GuestType } from \"../Guest/Guest\";\nimport { guestExecutorApplied } from \"../Guest/GuestExecutorApplied\";\n\n/**\n * Helps to apply function to patrons executor\n * @url https://silentium-lab.github.io/silentium/#/patron/patron-executor-applied\n */\nexport const patronExecutorApplied = <T>(\n baseGuest: GuestType<T>,\n applier: (executor: GuestExecutorType) => GuestExecutorType,\n) => {\n const guestApplied = guestExecutorApplied(baseGuest, applier);\n\n const result = {\n give(value: T) {\n guestApplied.give(value);\n return result;\n },\n introduction,\n };\n\n return result;\n};\n","import { guest, GuestObjectType, GuestType } from \"../Guest/Guest\";\nimport { isPatron } from \"../Patron/Patron\";\nimport { patronOnce } from \"../Patron/PatronOnce\";\nimport { PatronPool } from \"../Patron/PatronPool\";\nimport {\n isSource,\n SourceDataType,\n SourceObjectType,\n SourceType,\n value,\n} from \"./Source\";\n\nexport type SourceChangeableType<T = any> = SourceObjectType<T> &\n GuestObjectType<T>;\n\nconst sourceIsEmpty = (source: unknown) =>\n source === undefined || source === null;\n\n/**\n * Ability to create source what can be changed later\n * @url https://silentium-lab.github.io/silentium/#/source/source-of\n */\nexport const sourceOf = <T>(source?: SourceType<T>) => {\n const createdSource = {} as SourceChangeableType<T>;\n const thePool = new PatronPool(createdSource);\n let isEmpty = sourceIsEmpty(source);\n\n if (!isEmpty && isSource(source)) {\n value(\n source,\n patronOnce((unwrappedSourceDocument) => {\n isEmpty = sourceIsEmpty(unwrappedSourceDocument);\n source = unwrappedSourceDocument as SourceDataType<T>;\n }),\n );\n }\n\n createdSource.value = (g: GuestType<T>) => {\n if (isEmpty) {\n if (isPatron(g)) {\n thePool.add(g);\n }\n return createdSource;\n }\n\n if (typeof g === \"function\") {\n thePool.distribute(source, guest(g));\n } else {\n thePool.distribute(source, g);\n }\n\n return createdSource;\n };\n\n createdSource.give = (value: T) => {\n isEmpty = sourceIsEmpty(value);\n source = value as SourceDataType<T>;\n\n if (!isEmpty) {\n thePool.give(source);\n }\n\n return createdSource;\n };\n\n return createdSource as SourceChangeableType<T>;\n};\n","import { subSource } from \"../Patron/PatronPool\";\nimport { give, guest, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { patron } from \"../Patron/Patron\";\nimport { SourceType, value } from \"./Source\";\nimport { sourceOf } from \"./SourceChangeable\";\n\ntype ExtractType<T> = T extends SourceType<infer U> ? U : never;\n\nexport type ExtractTypesFromArray<T extends SourceType<any>[]> = {\n [K in keyof T]: ExtractType<T[K]>;\n};\n\n/**\n * Represents common value as Array of bunch of sources,\n * when all sources will gets it's values\n * @url https://silentium-lab.github.io/silentium/#/source/source-all\n */\nexport const sourceAll = <const T extends SourceType[]>(\n sources: T,\n): SourceType<ExtractTypesFromArray<T>> => {\n const keysKnown = new Set<string>(Object.keys(sources));\n const keysFilled = new Set();\n const isAllFilled = () => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n };\n const theAll = sourceOf({});\n\n Object.entries(sources).forEach(([key, source]) => {\n subSource(theAll, source);\n keysKnown.add(key);\n value(\n source,\n patron((v) => {\n theAll.value(\n guest((all: Record<string, unknown>) => {\n keysFilled.add(key);\n const lastAll = {\n ...all,\n [key]: v,\n };\n theAll.give(lastAll);\n }),\n );\n }),\n );\n });\n\n return (guest: GuestType<ExtractTypesFromArray<T>>) => {\n value((g) => {\n theAll.value(\n guestCast(g, (value) => {\n if (isAllFilled()) {\n give(Object.values(value) as ExtractTypesFromArray<T>, g);\n }\n }),\n );\n }, guest);\n };\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { patronOnce } from \"../Patron/PatronOnce\";\nimport { LazyType } from \"../Lazy/Lazy\";\nimport { isSource, SourceType, value } from \"./Source\";\nimport { sourceAll } from \"./SourceAll\";\nimport { sourceOf, SourceChangeableType } from \"./SourceChangeable\";\n\n/**\n * Ability to apply source to source of array values sequentially\n * @url https://silentium-lab.github.io/silentium/#/source/source-sequence\n */\nexport const sourceSequence = <T, TG>(\n baseSource: SourceType<T[]>,\n targetSource: LazyType<SourceType<TG>>,\n) => {\n if (baseSource === undefined) {\n throw new Error(\"SourceSequence didn't receive baseSource argument\");\n }\n if (targetSource === undefined) {\n throw new Error(\"SourceSequence didn't receive targetSource argument\");\n }\n\n return (guest: GuestType<TG[]>) => {\n const sequenceSource = sourceOf();\n const source = targetSource.get(sequenceSource);\n\n value(\n baseSource,\n guestCast(guest, (theValue) => {\n let index = 0;\n\n const sources: SourceChangeableType[] = [];\n theValue.forEach(() => {\n sources.push(sourceOf());\n });\n\n const nextItemHandle = () => {\n if (theValue[index + 1] !== undefined) {\n index = index + 1;\n handle();\n }\n };\n\n function handle() {\n const currentSource = sources[index];\n const nextValue = theValue[index];\n if (isSource(nextValue)) {\n value(\n nextValue,\n patronOnce((theNextValue) => {\n sequenceSource.give(theNextValue);\n value(source, currentSource);\n nextItemHandle();\n }),\n );\n } else {\n sequenceSource.give(nextValue);\n value(source, currentSource);\n nextItemHandle();\n }\n }\n\n if (theValue[index] !== undefined) {\n handle();\n value(sourceAll(sources), guest);\n } else {\n give([], guest);\n }\n }),\n );\n };\n};\n","import { subSource } from \"../Patron/PatronPool\";\nimport { GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { LazyType } from \"../Lazy/Lazy\";\nimport { SourceType, value } from \"./Source\";\nimport { sourceAll } from \"./SourceAll\";\n\n/**\n * Helps to modify many sources with one private source\n * @url https://silentium-lab.github.io/silentium/#/source/source-map\n */\nexport const sourceMap = <T, TG>(\n baseSource: SourceType<T[]>,\n targetSource: LazyType<SourceType<TG>>,\n) => {\n if (baseSource === undefined) {\n throw new Error(\"SourceMap didn't receive baseSource argument\");\n }\n if (targetSource === undefined) {\n throw new Error(\"SourceMap didn't receive targetSource argument\");\n }\n\n return (guest: GuestType<TG[]>) => {\n value(\n baseSource,\n guestCast(<GuestType>guest, (theValue) => {\n const sources: SourceType[] = [];\n theValue.forEach((val) => {\n const source = targetSource.get(val);\n subSource(source, baseSource);\n sources.push(source);\n });\n value(sourceAll(sources), guest);\n }),\n );\n return this;\n };\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { SourceType, value } from \"./Source\";\n\n/**\n * Connects guest with source what give response faster than others\n * @url https://silentium-lab.github.io/silentium/#/source/source-race\n */\nexport const sourceRace = <T>(sources: SourceType<T>[]) => {\n if (sources === undefined) {\n throw new Error(\"SourceRace didnt receive sources argument\");\n }\n\n return (guest: GuestType<T>) => {\n let connectedWithSource: SourceType | null = null;\n sources.forEach((source) => {\n value(\n source,\n guestCast(<GuestType>guest, (value) => {\n if (!connectedWithSource || connectedWithSource === source) {\n give(value as T, guest);\n connectedWithSource = source;\n }\n }),\n );\n });\n };\n};\n","import { patron } from \"../Patron/Patron\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\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 * Returns value of some source when all sources before it gives their response\n * @url https://silentium-lab.github.io/silentium/#/source/source-chain\n */\nexport const sourceChain = <T extends SourceType[]>(\n ...sources: T\n): SourceType<Last<T>> => {\n const resultSrc = sourceOf<Last<T>>();\n const respondedSources = new Set();\n let lastSourceValue: any = null;\n sources.forEach((source, index) => {\n value(\n source,\n patron((value) => {\n respondedSources.add(index);\n if (index === sources.length - 1) {\n lastSourceValue = value;\n }\n if (\n respondedSources.size === sources.length &&\n lastSourceValue !== null\n ) {\n resultSrc.give(lastSourceValue);\n }\n }),\n );\n });\n\n return resultSrc.value;\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { SourceType, value } from \"./Source\";\nimport { SourceChangeableType } from \"./SourceChangeable\";\n\n/**\n * Ability to build common changeable source from different guest and source\n * @url https://silentium-lab.github.io/silentium/#/source/source-dynamic\n */\nexport const sourceDynamic = <T>(\n baseGuest: GuestType<T>,\n baseSource: SourceType<T>,\n): SourceChangeableType<T> => {\n if (baseGuest === undefined) {\n throw new Error(\"SourceDynamic didn't receive baseGuest argument\");\n }\n if (baseSource === undefined) {\n throw new Error(\"SourceDynamic didn't receive baseSource argument\");\n }\n\n const sourceObject = {\n value(guest: GuestType<T>) {\n value(baseSource, guest);\n return sourceObject;\n },\n give(value: T) {\n give(value, baseGuest);\n return this;\n },\n };\n\n return sourceObject;\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { SourceType, value } from \"../Source/Source\";\n\n/**\n * Gives ability to apply function to source value\n * @url https://silentium-lab.github.io/silentium/#/source/source-applied\n */\nexport const sourceApplied = <T, R>(\n baseSource: SourceType<T>,\n applier: (v: T) => R,\n) => {\n return (guest: GuestType<R>) => {\n value(\n baseSource,\n guestCast(guest, (v) => {\n give(applier(v), guest);\n }),\n );\n };\n};\n","import { SourceExecutorType, SourceType, value } from \"../Source/Source\";\n\n/**\n * Ability to apply function to source executor, helpful when need to apply throttling or debounce\n * @url https://silentium-lab.github.io/silentium/#/source/source-executor-applied\n */\nexport const sourceExecutorApplied = <T>(\n source: SourceType<T>,\n applier: (executor: SourceExecutorType<T>) => SourceExecutorType<T>,\n) => {\n return applier((g) => {\n value(source, g);\n });\n};\n","import { give, GuestType } from \"../Guest/Guest\";\nimport { guestCast } from \"../Guest/GuestCast\";\nimport { SourceType, value } from \"../Source/Source\";\n\n/**\n * Helps not to respond with information what checked by predicate function\n * @url https://silentium-lab.github.io/silentium/#/source/source-filtered\n */\nexport const sourceFiltered = <T>(\n baseSource: SourceType<T>,\n predicate: (v: T) => boolean,\n defaultValue?: T,\n) => {\n return (g: GuestType<T>) => {\n value(\n baseSource,\n guestCast(g, (v) => {\n if (predicate(v) === true) {\n give(v, g);\n } else if (defaultValue !== undefined) {\n give(defaultValue, g);\n }\n }),\n );\n };\n};\n","import { GuestType } from \"../Guest/Guest\";\nimport { SourceType, value } from \"./Source\";\nimport { sourceOf } from \"./SourceChangeable\";\n\n/**\n * Ability set the value only once\n * @url https://silentium-lab.github.io/silentium/#/source/source-once\n */\nexport const sourceOnce = <T>(initialValue?: SourceType<T>) => {\n let isFilled = initialValue !== undefined;\n const source = sourceOf(initialValue);\n\n return {\n value(guest: GuestType<T>) {\n value(source, guest);\n return this;\n },\n give(value: T) {\n if (!isFilled) {\n source.give(value);\n isFilled = true;\n }\n return this;\n },\n };\n};\n","import { GuestType } from \"../Guest/Guest\";\nimport { guestSync } from \"../Guest/GuestSync\";\nimport { patron } from \"../Patron/Patron\";\nimport { SourceObjectType, SourceType, value } from \"../Source/Source\";\n\n/**\n * Helps to represent source value as sync value, what can be returned\n * useful for example in tests\n * @url https://silentium-lab.github.io/silentium/#/source/source-sync\n */\nexport const sourceSync = <T>(\n baseSource: SourceType<T>,\n defaultValue?: unknown,\n): SourceObjectType<T> & { syncValue(): T } => {\n const syncGuest = guestSync<T>(defaultValue as T);\n value(baseSource, patron(syncGuest));\n\n return {\n value(guest: GuestType<T>) {\n value(baseSource, guest);\n return this;\n },\n syncValue() {\n try {\n return syncGuest.value() as T;\n } catch {\n throw new Error(\"No value in SourceSync\");\n }\n },\n };\n};\n","import { GuestType } from \"../Guest/Guest\";\nimport { patron } from \"../Patron/Patron\";\nimport { subSourceMany } from \"../Patron/PatronPool\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { ExtractTypesFromArray, sourceAll } from \"../Source/SourceAll\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\n\n/**\n * Simplifies sources combination, when we need to create value depending on many sources\n * @url https://silentium-lab.github.io/silentium/#/source/source-combined\n */\nexport const sourceCombined =\n <const T extends SourceType[]>(...sources: T) =>\n <R>(\n source: (\n guest: GuestType<R>,\n ...sourcesValues: ExtractTypesFromArray<T>\n ) => void,\n ): SourceType<R> => {\n const result = sourceOf<R>();\n subSourceMany(result, sources);\n\n value(\n sourceAll(sources),\n patron((actualValues) => {\n source(result.give, ...actualValues);\n }),\n );\n\n return result.value;\n };\n","import { give } from \"../Guest/Guest\";\nimport { patron } from \"../Patron/Patron\";\nimport { subSource } from \"../Patron/PatronPool\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\n\n/**\n * @url https://silentium-lab.github.io/silentium/#/source/source-resettable\n */\nexport const sourceResettable = <T>(\n baseSrc: SourceType<T>,\n resettableSrc: SourceType<unknown>,\n) => {\n const result = sourceOf<T>();\n\n value(\n resettableSrc,\n patron(() => {\n give(null, result);\n }),\n );\n\n value(baseSrc, patron(result));\n subSource(result, baseSrc);\n\n return result;\n};\n","import { patron } from \"../Patron/Patron\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\n\n/**\n * Present source of value what was last appeared in any\n * of given sources, can be used as default value, when some source\n * don't respond\n * @url https://silentium-lab.github.io/silentium/#/source/source-any\n */\nexport const sourceAny = <T>(sources: SourceType<T>[]) => {\n const lastSrc = sourceOf<T>();\n sources.forEach((source) => {\n value(source, patron(lastSrc));\n });\n\n return lastSrc;\n};\n","import { LazyType } from \"../Lazy/Lazy\";\nimport { patron } from \"../Patron/Patron\";\nimport { destroy } from \"../Patron/PatronPool\";\nimport { SourceType, value } from \"../Source/Source\";\nimport { sourceAll } from \"../Source/SourceAll\";\nimport { sourceOf } from \"../Source/SourceChangeable\";\nimport { sourceResettable } from \"../Source/SourceResettable\";\n\n/**\n * Helps to build source only when all sources will give its values\n * @url https://silentium-lab.github.io/silentium/#/source/source-lazy\n */\nexport const sourceLazy = <T>(\n lazySrc: LazyType<SourceType<T>>,\n args: SourceType[],\n resetSrc?: SourceType<unknown>,\n) => {\n let instance: SourceType<T> | null = null;\n const result = sourceOf<T>();\n const resultResettable = sourceResettable(result, resetSrc ?? sourceOf());\n\n value(\n sourceAll(args),\n patron(() => {\n if (!instance) {\n instance = lazySrc.get(...args);\n value(instance, patron(result));\n }\n }),\n );\n\n if (resetSrc) {\n value(\n resetSrc,\n patron(() => {\n destroy([instance]);\n instance = null;\n }),\n );\n }\n\n return resultResettable;\n};\n","import { LazyType } from \"./Lazy\";\n\ninterface Constructable<T> {\n new (...args: unknown[]): T;\n}\n\ninterface Prototyped<T> {\n prototype: T;\n}\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","export interface LazyType<T> {\n get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT;\n}\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"],"names":["source","guest","subSource","value"],"mappings":"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"}
|
package/dist/silentium.d.ts
CHANGED
|
@@ -196,26 +196,26 @@ type ExtractTypesFromArray<T extends SourceType<any>[]> = {
|
|
|
196
196
|
*/
|
|
197
197
|
declare const sourceAll: <const T extends SourceType[]>(sources: T) => SourceType<ExtractTypesFromArray<T>>;
|
|
198
198
|
|
|
199
|
-
interface
|
|
199
|
+
interface LazyType<T> {
|
|
200
200
|
get<R extends unknown[], CT = null>(...args: R): CT extends null ? T : CT;
|
|
201
201
|
}
|
|
202
202
|
/**
|
|
203
|
-
* Helps to get
|
|
204
|
-
* @url https://silentium-lab.github.io/silentium/#/utils/
|
|
203
|
+
* Helps to get lazy instance of dependency
|
|
204
|
+
* @url https://silentium-lab.github.io/silentium/#/utils/lazy
|
|
205
205
|
*/
|
|
206
|
-
declare const
|
|
206
|
+
declare const lazy: <T>(buildingFn: (...args: any[]) => T) => LazyType<T>;
|
|
207
207
|
|
|
208
208
|
/**
|
|
209
209
|
* Ability to apply source to source of array values sequentially
|
|
210
210
|
* @url https://silentium-lab.github.io/silentium/#/source/source-sequence
|
|
211
211
|
*/
|
|
212
|
-
declare const sourceSequence: <T, TG>(baseSource: SourceType<T[]>, targetSource:
|
|
212
|
+
declare const sourceSequence: <T, TG>(baseSource: SourceType<T[]>, targetSource: LazyType<SourceType<TG>>) => (guest: GuestType<TG[]>) => void;
|
|
213
213
|
|
|
214
214
|
/**
|
|
215
215
|
* Helps to modify many sources with one private source
|
|
216
216
|
* @url https://silentium-lab.github.io/silentium/#/source/source-map
|
|
217
217
|
*/
|
|
218
|
-
declare const sourceMap: <T, TG>(baseSource: SourceType<T[]>, targetSource:
|
|
218
|
+
declare const sourceMap: <T, TG>(baseSource: SourceType<T[]>, targetSource: LazyType<SourceType<TG>>) => (guest: GuestType<TG[]>) => undefined;
|
|
219
219
|
|
|
220
220
|
/**
|
|
221
221
|
* Connects guest with source what give response faster than others
|
|
@@ -298,9 +298,15 @@ declare const sourceResettable: <T>(baseSrc: SourceType<T>, resettableSrc: Sourc
|
|
|
298
298
|
*/
|
|
299
299
|
declare const sourceAny: <T>(sources: SourceType<T>[]) => SourceChangeableType<T>;
|
|
300
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Helps to build source only when all sources will give its values
|
|
303
|
+
* @url https://silentium-lab.github.io/silentium/#/source/source-lazy
|
|
304
|
+
*/
|
|
305
|
+
declare const sourceLazy: <T>(lazySrc: LazyType<SourceType<T>>, args: SourceType[], resetSrc?: SourceType<unknown>) => SourceChangeableType<T>;
|
|
306
|
+
|
|
301
307
|
interface Prototyped<T> {
|
|
302
308
|
prototype: T;
|
|
303
309
|
}
|
|
304
|
-
declare const
|
|
310
|
+
declare const lazyClass: <T>(constructorFn: Prototyped<T>, modules?: Record<string, unknown>) => LazyType<T>;
|
|
305
311
|
|
|
306
|
-
export { type ExtractTypesFromArray, type GuestDisposableType, type GuestExecutorType, type GuestObjectType, type GuestType, type GuestValueType, type MaybeDisposableType, PatronPool, type PatronType, type
|
|
312
|
+
export { type ExtractTypesFromArray, type GuestDisposableType, type GuestExecutorType, type GuestObjectType, type GuestType, type GuestValueType, type LazyType, type MaybeDisposableType, PatronPool, type PatronType, type PoolType, type SourceChangeableType, type SourceDataType, type SourceExecutorType, type SourceObjectType, type SourceType, destroy, give, guest, guestApplied, guestCast, guestDisposable, guestExecutorApplied, guestSync, introduction, isGuest, isPatron, isPatronInPools, isSource, lazy, lazyClass, patron, patronApplied, patronExecutorApplied, patronOnce, patronPools, patronPoolsStatistic, removePatronFromPools, source, sourceAll, sourceAny, sourceApplied, sourceChain, sourceCombined, sourceDynamic, sourceExecutorApplied, sourceFiltered, sourceLazy, sourceMap, sourceOf, sourceOnce, sourceRace, sourceResettable, sourceSequence, sourceSync, subSource, subSourceMany, value };
|
package/dist/silentium.js
CHANGED
|
@@ -677,7 +677,32 @@ const sourceAny = (sources) => {
|
|
|
677
677
|
return lastSrc;
|
|
678
678
|
};
|
|
679
679
|
|
|
680
|
-
const
|
|
680
|
+
const sourceLazy = (lazySrc, args, resetSrc) => {
|
|
681
|
+
let instance = null;
|
|
682
|
+
const result = sourceOf();
|
|
683
|
+
const resultResettable = sourceResettable(result, resetSrc ?? sourceOf());
|
|
684
|
+
value(
|
|
685
|
+
sourceAll(args),
|
|
686
|
+
patron(() => {
|
|
687
|
+
if (!instance) {
|
|
688
|
+
instance = lazySrc.get(...args);
|
|
689
|
+
value(instance, patron(result));
|
|
690
|
+
}
|
|
691
|
+
})
|
|
692
|
+
);
|
|
693
|
+
if (resetSrc) {
|
|
694
|
+
value(
|
|
695
|
+
resetSrc,
|
|
696
|
+
patron(() => {
|
|
697
|
+
destroy([instance]);
|
|
698
|
+
instance = null;
|
|
699
|
+
})
|
|
700
|
+
);
|
|
701
|
+
}
|
|
702
|
+
return resultResettable;
|
|
703
|
+
};
|
|
704
|
+
|
|
705
|
+
const lazyClass = (constructorFn, modules = {}) => {
|
|
681
706
|
if (constructorFn === void 0) {
|
|
682
707
|
throw new Error("PrivateClass didn't receive constructorFn argument");
|
|
683
708
|
}
|
|
@@ -691,9 +716,9 @@ const personalClass = (constructorFn, modules = {}) => {
|
|
|
691
716
|
};
|
|
692
717
|
};
|
|
693
718
|
|
|
694
|
-
const
|
|
719
|
+
const lazy = (buildingFn) => {
|
|
695
720
|
if (buildingFn === void 0) {
|
|
696
|
-
throw new Error("
|
|
721
|
+
throw new Error("lazy didn't receive buildingFn argument");
|
|
697
722
|
}
|
|
698
723
|
return {
|
|
699
724
|
get(...args) {
|
|
@@ -702,5 +727,5 @@ const personal = (buildingFn) => {
|
|
|
702
727
|
};
|
|
703
728
|
};
|
|
704
729
|
|
|
705
|
-
export { PatronPool, destroy, give, guest, guestApplied, guestCast, guestDisposable, guestExecutorApplied, guestSync, introduction, isGuest, isPatron, isPatronInPools, isSource, patron, patronApplied, patronExecutorApplied, patronOnce, patronPools, patronPoolsStatistic,
|
|
730
|
+
export { PatronPool, destroy, give, guest, guestApplied, guestCast, guestDisposable, guestExecutorApplied, guestSync, introduction, isGuest, isPatron, isPatronInPools, isSource, lazy, lazyClass, patron, patronApplied, patronExecutorApplied, patronOnce, patronPools, patronPoolsStatistic, removePatronFromPools, source, sourceAll, sourceAny, sourceApplied, sourceChain, sourceCombined, sourceDynamic, sourceExecutorApplied, sourceFiltered, sourceLazy, sourceMap, sourceOf, sourceOnce, sourceRace, sourceResettable, sourceSequence, sourceSync, subSource, subSourceMany, value };
|
|
706
731
|
//# sourceMappingURL=silentium.js.map
|