silentium 0.0.190 → 0.0.191

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 CHANGED
@@ -2,6 +2,23 @@
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.191](https://github.com/silentium-lab/silentium/compare/v0.0.190...v0.0.191) (2026-01-10)
6
+
7
+
8
+ ### Features
9
+
10
+ * **main:** all component docs url ([a79e93e](https://github.com/silentium-lab/silentium/commit/a79e93e4fe49ea30b4d1f36313fff5ff27381250))
11
+ * **main:** any component docs link ([8ee4e8c](https://github.com/silentium-lab/silentium/commit/8ee4e8c9f9a144e53d659ab5bf98a022cb6f8bc0))
12
+ * **main:** doc links ([8e1a2e1](https://github.com/silentium-lab/silentium/commit/8e1a2e10e2b90436016d2e3fca2c576998918b77))
13
+ * **main:** documentation urls ([b0f0998](https://github.com/silentium-lab/silentium/commit/b0f09983b1b094398f501730e7cbb35ef2d2383e))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **main:** applied message destruction ([842055b](https://github.com/silentium-lab/silentium/commit/842055b259e56d071e87c12d9c313e77f9380702))
19
+ * **main:** components doc urls ([75c5b13](https://github.com/silentium-lab/silentium/commit/75c5b134af4c3252c0495c82c59355114cea1a1f))
20
+ * **main:** links to documentation ([7cc410e](https://github.com/silentium-lab/silentium/commit/7cc410e18d3522ae2b3b42ee2deb6c77ebb24da3))
21
+
5
22
  ### [0.0.190](https://github.com/silentium-lab/silentium/compare/v0.0.189...v0.0.190) (2026-01-03)
6
23
 
7
24
 
@@ -298,6 +298,7 @@ function Applied(base, applier) {
298
298
  const result = applier(v);
299
299
  if (isMessage(result)) {
300
300
  dc.destroy();
301
+ dc.add(result);
301
302
  result.catch(reject).then(resolve);
302
303
  } else {
303
304
  resolve(result);
@@ -781,6 +782,9 @@ function Trackable(name, target) {
781
782
  Context("trackable", { name, action: "created" }).then(Void());
782
783
  return new Proxy(target, {
783
784
  get(target2, prop, receiver) {
785
+ if (prop === "then") {
786
+ Context("trackable", { name, action: "executed" }).then(Void());
787
+ }
784
788
  if (prop === "destroy") {
785
789
  Context("trackable", { name, action: "destroyed" }).then(Void());
786
790
  }
@@ -1 +1 @@
1
- {"version":3,"file":"silentium.cjs","sources":["../src/helpers/guards.ts","../src/base/Destroyable.ts","../src/base/DestroyContainer.ts","../src/base/Rejections.ts","../src/base/Silence.ts","../src/helpers/ensures.ts","../src/base/Message.ts","../src/base/Of.ts","../src/base/ActualMessage.ts","../src/base/Connected.ts","../src/base/Local.ts","../src/base/MessageSource.ts","../src/base/New.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/AppliedDestructured.ts","../src/components/Primitive.ts","../src/components/Shared.ts","../src/components/Late.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/Computed.ts","../src/components/Context.ts","../src/components/ContextChain.ts","../src/components/ContextOf.ts","../src/components/Default.ts","../src/components/Filtered.ts","../src/components/Empty.ts","../src/components/ExecutorApplied.ts","../src/components/Freeze.ts","../src/components/FromEvent.ts","../src/components/Map.ts","../src/components/Once.ts","../src/components/Piped.ts","../src/components/Process.ts","../src/components/Race.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/Trackable.ts","../src/helpers/DevTools.ts"],"sourcesContent":["import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage(o: unknown): o is MessageType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"then\" in o &&\n typeof (o as any).then === \"function\"\n );\n}\n\n/**\n * Checks that the object is an message\n */\nexport function isSource(o: unknown): o is SourceType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable(o: unknown): o is DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed(o: unknown): o is DestroyedType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroyed\" in o &&\n typeof (o as any).destroyed === \"function\"\n );\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n public constructor(private base: T) {}\n\n public destroy(): this {\n if (isDestroyable(this.base)) {\n this.base.destroy();\n }\n\n if (typeof this.base === \"function\") {\n this.base();\n }\n\n return this;\n }\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n private _destroyed = false;\n\n /**\n * Add one destroyable\n * @param e\n * @returns\n */\n public add<R>(e: R): R {\n this.destructors.push(Destroyable(e));\n return e;\n }\n\n /**\n * Add many destroyable objects\n * @param destroyableList\n * @returns\n */\n public many(destroyableList: unknown[]) {\n destroyableList.forEach((d) => {\n this.add(d);\n });\n return this;\n }\n\n public destroy() {\n this._destroyed = true;\n this.destructors.forEach((d) => d.destroy());\n this.destructors.length = 0;\n return this;\n }\n\n public destroyed() {\n return this._destroyed;\n }\n\n public destructor() {\n return this.destroy.bind(this);\n }\n}\n","import { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * Handles rejections collection\n */\nexport class Rejections {\n private catchers: ConstructorType<[unknown]>[] = [];\n private lastRejectReason: unknown = null;\n\n public reject = (reason: unknown) => {\n this.lastRejectReason = reason;\n this.catchers.forEach((catcher) => {\n catcher(reason);\n });\n };\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.lastRejectReason !== null) {\n rejected(this.lastRejectReason);\n }\n this.catchers.push(rejected);\n return this;\n }\n\n public destroy() {\n this.catchers.length = 0;\n return this;\n }\n}\n","import { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\nexport const ResetSilenceCache = Symbol(\"reset-silence-cache\");\n\n/**\n * Silence is null or undefined or duplicated values\n * Everything else is not silence\n *\n * @url https://silentium.pw/article/silence/view\n */\nexport function Silence<T>(resolve: ConstructorType<[T]>) {\n let lastValue: T | undefined;\n return (v: T | undefined) => {\n if (v === ResetSilenceCache) {\n lastValue = undefined;\n v = undefined;\n }\n if (isFilled(v) && v !== lastValue) {\n lastValue = v;\n resolve(v);\n }\n };\n}\n","import { isMessage } from \"helpers/guards\";\n\nexport function ensureFunction(v: unknown, label: string) {\n if (typeof v !== \"function\") {\n throw new Error(`${label}: is not function`);\n }\n}\n\nexport function ensureMessage(v: unknown, label: string) {\n if (!isMessage(v)) {\n throw new Error(`${label}: is not message`);\n }\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Rejections } from \"base/Rejections\";\nimport { Silence } from \"base/Silence\";\nimport { ensureFunction } from \"helpers/ensures\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport type MessageExecutorType<T> = (\n resolve: ConstructorType<[T]>,\n reject: ConstructorType<[unknown]>,\n) => MessageType | (() => void) | void;\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n *\n * @url https://silentium.pw/article/message/view\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\n/**\n * Reactive message implementation\n *\n * @url https://silentium.pw/article/message/view\n */\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n private rejections = new Rejections();\n private dc = DestroyContainer();\n\n public constructor(private executor: MessageExecutorType<T>) {\n ensureFunction(executor, \"Message: executor\");\n }\n\n public then(resolve: ConstructorType<[T]>) {\n if (this.dc.destroyed()) {\n return this;\n }\n try {\n this.dc.add(this.executor(Silence(resolve), this.rejections.reject));\n } catch (e: any) {\n this.rejections.reject(e);\n }\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.dc.destroyed()) {\n return this;\n }\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.dc.destroy();\n this.rejections.destroy();\n return this;\n }\n}\n","import { Message } from \"base/Message\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n return Message<T>(function OfImpl(r) {\n r(value);\n });\n}\n","import { Of } from \"base/Of\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * A function that helps to ensure that\n * the message is indeed a message object\n * and not just a value\n */\nexport function ActualMessage<T>(message: MaybeMessage<T>): MessageType<T> {\n return isMessage(message) ? message : Of(message);\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * First message - is main\n * others will be destroyed when first\n * will be destroyed\n */\nexport function Connected<T>(...m: MessageType[]) {\n const dc = DestroyContainer();\n dc.many(m);\n return Message<T>((resolve, reject) => {\n (m[0] as MessageType<T>).catch(reject).then(resolve);\n m.slice(1).forEach((other) => {\n other.catch(reject);\n });\n\n return dc.destructor();\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>(_base: MaybeMessage<T>) {\n const $base = ActualMessage(_base);\n return Message<T>(function LocalImpl(resolve, reject) {\n let destroyed = false;\n $base.then((v) => {\n if (!destroyed) {\n resolve(v);\n }\n });\n $base.catch(reject);\n return () => {\n destroyed = true;\n };\n });\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object\n * https://silentium.pw/article/message-source/view\n */\nexport function MessageSource<T>(\n messageExecutor: MessageExecutorType<T>,\n sourceExecutor: ConstructorType<[T]>,\n) {\n return new MessageSourceImpl(messageExecutor, sourceExecutor);\n}\n\nexport class MessageSourceImpl<T> implements MessageSourceType<T> {\n private message: MessageImpl<T>;\n\n public constructor(\n messageExecutor: MessageExecutorType<T>,\n private sourceExecutor: ConstructorType<[T]>,\n ) {\n this.message = Message(messageExecutor);\n }\n\n public use(value: T): this {\n this.sourceExecutor(value);\n return this;\n }\n\n public then(resolved: ConstructorType<[T]>): this {\n this.message.then(resolved);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.message.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.message.destroy();\n return this;\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n return Message<T>(function NewImpl(resolve) {\n resolve(construct());\n });\n}\n","/**\n * Resolver that does nothing with the passed value,\n * needed for silent message triggering\n */\nexport function Void() {\n return () => {};\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\ntype ExtractTypeS<T> = T extends MaybeMessage<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MaybeMessage<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n */\nexport function All<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(ActualMessage);\n return Message<ExtractTypesFromArrayS<T>>(function AllImpl(resolve, reject) {\n const known = new Set<string>(Object.keys(messages));\n const filled = new Set<string>();\n const result: unknown[] = [];\n if (known.size === 0) {\n resolve([] as ExtractTypesFromArrayS<T>);\n return;\n }\n $messages.map((m, key) => {\n m.catch(reject);\n m.then((v) => {\n filled.add(key.toString());\n result[key] = v;\n if (isAllFilled(filled, known)) {\n resolve(result.slice() as ExtractTypesFromArrayS<T>);\n }\n });\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n */\nexport function Any<const T>(...messages: MaybeMessage<T>[]) {\n const $messages = messages.map(ActualMessage);\n return Message<T>(function AnyImpl(resolve, reject) {\n $messages.forEach((message) => {\n message.catch(reject);\n message.then(resolve);\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n */\nexport function Applied<const T, R>(\n base: MaybeMessage<T>,\n applier: ConstructorType<[T], MaybeMessage<R>>,\n) {\n const $base = ActualMessage(base);\n return Message<R>(function AppliedImpl(resolve, reject) {\n const dc = DestroyContainer();\n $base.catch(reject);\n $base.then((v) => {\n const result = applier(v);\n if (isMessage(result)) {\n dc.destroy();\n result.catch(reject).then(resolve);\n } else {\n resolve(result);\n }\n });\n });\n}\n","import { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n */\nexport function AppliedDestructured<const T extends any[], R>(\n $base: MaybeMessage<T>,\n applier: ConstructorType<any[], R>,\n) {\n return Applied($base, function AppliedDestructuredImpl(args) {\n return applier(...args);\n });\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Helps represent an message as a primitive type, which can be useful\n * for cases when you need to always have a reference to the current value\n * without updating the shared value when the current one changes.\n * For example, this could be used when passing an authorization token.\n * It can also be useful for testing or logging purposes.\n */\nexport function Primitive<T>($base: MessageType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nexport class PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: MessageType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n this.$base.then((v) => {\n this.theValue = v;\n });\n }\n this.touched = true;\n }\n\n public [Symbol.toPrimitive]() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitive() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitiveWithException() {\n this.ensureTouched();\n if (this.theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return this.theValue;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { MessageSourceType, SourceType } from \"types/SourceType\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { isDestroyable, isFilled, isSource } from \"helpers/guards\";\nimport { Primitive } from \"components/Primitive\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n *\n * @url https://silentium.pw/article/shared/view\n */\nexport function Shared<T>($base: MessageType<T> | MessageSourceType<T>) {\n return new SharedImpl<T>($base);\n}\n\nexport class SharedImpl<T> implements MessageSourceType<T> {\n private resolver = (v: T) => {\n this.lastV = v;\n this.resolvers.forEach((r) => {\n r(v);\n });\n };\n private lastV: T | undefined;\n private resolvers = new Set<ConstructorType<[T]>>();\n private source?: SourceType<T>;\n\n public constructor(private $base: MessageType<T> | MessageSourceType<T>) {\n if (isSource($base)) {\n this.source = $base;\n }\n }\n\n public then(resolved: ConstructorType<[T]>) {\n this.resolvers.add((v) => resolved(v));\n if (this.resolvers.size === 1) {\n this.$base.then(this.resolver);\n } else if (isFilled(this.lastV)) {\n resolved(this.lastV);\n }\n return this;\n }\n\n public use(value: T) {\n if (this.source) {\n this.source.use(value);\n } else {\n this.resolver(value);\n }\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.$base.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.resolvers.clear();\n if (isDestroyable(this.$base)) {\n this.$base.destroy();\n }\n return this;\n }\n\n public value() {\n return Primitive(this);\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Silence } from \"base/Silence\";\nimport { Shared } from \"components/Shared\";\nimport { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport function Late<T>(v?: T) {\n return Shared(new LateImpl<T>(v));\n}\n\nexport class LateImpl<T> implements MessageSourceType<T> {\n private rejections = new Rejections();\n private lateR: ConstructorType<[T]> | null = null;\n private notify = () => {\n if (isFilled(this.v) && this.lateR) {\n try {\n this.lateR(this.v);\n } catch (e: any) {\n this.rejections.reject(e);\n }\n }\n };\n\n public constructor(private v?: T) {}\n\n public then(r: ConstructorType<[T]>): this {\n if (this.lateR) {\n throw new Error(\n \"Late component gets new resolver, when another was already connected!\",\n );\n }\n this.lateR = Silence(r);\n this.notify();\n return this;\n }\n\n public use(value: T): this {\n this.v = value;\n this.notify();\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.rejections.catch(rejected);\n return this;\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Late } from \"components/Late\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message with error catched\n * inside another message\n */\nexport function Catch<T>($base: MessageType) {\n const rejections = new Rejections();\n $base.catch(rejections.reject);\n const $error = Late<T>();\n rejections.catch((e) => {\n $error.use(e as T);\n });\n\n return $error;\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MessageType, MessageTypeValue } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L\n : never;\n\n/**\n * Chains messages together and triggers\n * the last message only when all previous messages\n * have emitted their values. The value of Chain will be the value\n * of the last message. If any messages\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last message.\n */\nexport function Chain<T extends readonly MessageType[]>(...messages: T) {\n const $messages = messages.map(ActualMessage);\n return Message<MessageTypeValue<Last<T>>>(\n function ChainImpl(resolve, reject) {\n let $latest: MessageTypeValue<Last<T>> | undefined;\n const handleMessage = (index: number) => {\n const message = $messages[index] as Last<T>;\n message.catch(reject);\n const next = $messages[index + 1] as Last<T> | undefined;\n message.then((v) => {\n oneMessage(v as MessageTypeValue<Last<T>>, next, index);\n });\n };\n function oneMessage(\n v: MessageTypeValue<Last<T>>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n $latest = v as MessageTypeValue<Last<T>>;\n }\n if ($latest) {\n resolve($latest);\n }\n if (next && !$latest) {\n handleMessage(index + 1);\n }\n }\n handleMessage(0);\n },\n );\n}\n","import { All } from \"components/All\";\nimport { AppliedDestructured } from \"components/AppliedDestructured\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component what helps to compute\n * poor functions, and represent result\n * as message\n */\nexport function Computed<const T extends MaybeMessage<any>[], R>(\n applier: ConstructorType<any[], R>,\n ...messages: T\n) {\n return AppliedDestructured(All(...messages), applier);\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MessageSource } from \"base/MessageSource\";\nimport { All } from \"components/All\";\nimport { AppliedDestructured } from \"components/AppliedDestructured\";\nimport { Primitive } from \"components/Primitive\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ContextType } from \"types/ContextType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nContext.transport = new Map<any, ConstructorType<[ContextType]>>();\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * ContextType, the list of transport should be defined via\n * the Context.transport map object\n */\nexport function Context<T>(\n name: MaybeMessage<string | symbol>,\n params: MaybeMessage<ContextType[\"params\"]> = {},\n) {\n const $msg = AppliedDestructured(\n All(ActualMessage(name), ActualMessage(params)),\n (name, params) =>\n ({\n transport: name,\n params,\n result: undefined,\n error: undefined,\n }) as ContextType,\n );\n return MessageSource<T>(\n (resolve, reject) => {\n $msg.then((message) => {\n const transport = Context.transport.get(message.transport);\n if (transport === undefined) {\n throw new Error(`Context: unknown transport ${message.transport}`);\n }\n if (!message.result) {\n message.result = resolve;\n }\n if (!message.error) {\n message.error = reject;\n }\n try {\n transport(message);\n } catch (error) {\n reject(error);\n }\n });\n },\n (value) => {\n const msg = Primitive($msg).primitive();\n if (msg === null) {\n throw new Error(\"Context: sourcing impossible message not existed\");\n }\n const transport = Context.transport.get(msg.transport);\n if (transport === undefined) {\n throw new Error(`Context: sourcing unknown transport ${msg.transport}`);\n }\n transport({\n ...msg,\n value,\n });\n },\n );\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\nimport { isSource } from \"helpers/guards\";\n\n/**\n * Connects an external message to an Context message chain\n */\nexport function ContextChain(base: MaybeMessage) {\n const $base = ActualMessage(base);\n return (context: ContextType) => {\n if (context.value && isSource(base)) {\n base.use(context.value);\n return;\n }\n if (!context.result) {\n throw new Error(\"ContextChain did not find result field in message\");\n }\n $base.then(context.result);\n };\n}\n","import { Message } from \"base/Message\";\nimport { Context } from \"components/Context\";\nimport { Late } from \"components/Late\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Message for the arrival of a specific Context message\n * for specific transport\n */\nexport function ContextOf(transport: string) {\n const $msg = Late<ContextType>();\n Context.transport.set(transport, $msg.use.bind($msg));\n return Message<ContextType>((resolve, reject) => {\n $msg.catch(reject);\n $msg.then(resolve);\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { Applied } from \"components/Applied\";\nimport { Catch } from \"components/Catch\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * If base returns error then\n * default will return default value\n */\nexport function Default<T>(\n $base: MessageType<T>,\n _default: MaybeMessage<unknown>,\n) {\n const $default = ActualMessage(_default);\n const $defaultAfterError = Applied(Catch($base), () => $default);\n\n return Message<T>((resolve) => {\n $base.then(resolve);\n $defaultAfterError.then(resolve as any);\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * Filters values from the source message based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n base: MaybeMessage<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): MessageType<T> {\n const $base = ActualMessage(base);\n return Message<T>(function FilteredImpl(resolve, reject) {\n $base.catch(reject);\n $base.then((v) => {\n if (predicate(v)) {\n resolve(v);\n } else if (defaultValue !== undefined) {\n resolve(defaultValue);\n }\n });\n });\n}\n","import { Filtered } from \"components/Filtered\";\nimport { Late } from \"components/Late\";\nimport { Shared } from \"components/Shared\";\nimport { EmptyType } from \"types/EmptyType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport const Nothing = Symbol(\"nothing\");\n\n/**\n * Helps to split message and empty\n * response\n */\nexport function Empty<T>($base: MessageType<T>) {\n return new EmptyImpl<T>($base);\n}\n\nexport class EmptyImpl<T> implements EmptyType {\n private $empty = Late<boolean>();\n\n public constructor(private $base: MessageType<T>) {}\n\n public message() {\n Shared(this.$base).then((v) => {\n if (v === Nothing) {\n this.$empty.use(true);\n }\n });\n return Filtered(this.$base, (v) => v !== Nothing);\n }\n\n public empty(): MessageType<boolean> {\n return this.$empty;\n }\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\ntype ExecutorApplier<T> = (executor: (v: T) => void) => (v: T) => void;\n\n/**\n * Applies a value transfer function to the resolver\n * and returns the same value transfer function for the resolver\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: MessageType<T>,\n applier: ExecutorApplier<T>,\n) {\n return Message<T>(function ExecutorAppliedImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(applier(resolve));\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message what freezes first known value\n */\nexport function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>) {\n let freezedValue: T | null = null;\n return Message<T>(function FreezeImpl(resolve, reject) {\n $base.catch(reject);\n $base.then((v) => {\n if (freezedValue === null) {\n freezedValue = v;\n }\n resolve(freezedValue as T);\n });\n\n $invalidate?.then(() => {\n freezedValue = null;\n });\n });\n}\n","import { MaybeMessage } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A message derived from event with a different\n * method call interface, based on callbacks.\n * Allows attaching a custom handler to an existing event source\n * and presenting it as a silentium message\n */\nexport function FromEvent<T>(\n emitter: MaybeMessage<any>,\n eventName: MaybeMessage<string>,\n subscribeMethod: MaybeMessage<string>,\n unsubscribeMethod?: MaybeMessage<string>,\n) {\n const $emitter = ActualMessage(emitter);\n const $eventName = ActualMessage(eventName);\n const $subscribeMethod = ActualMessage(subscribeMethod);\n const $unsubscribeMethod = ActualMessage(unsubscribeMethod);\n return Message<T>((resolve, reject) => {\n $emitter.catch(reject);\n $eventName.catch(reject);\n $subscribeMethod.catch(reject);\n $unsubscribeMethod.catch(reject);\n let lastR: ConstructorType<[T]> | null = null;\n const handler = (v: T) => {\n if (lastR) {\n lastR(v);\n }\n };\n All($emitter, $eventName, $subscribeMethod).then(\n ([emitter, eventName, subscribe]) => {\n lastR = resolve;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, handler);\n },\n );\n return () => {\n lastR = null;\n if (!$unsubscribeMethod) {\n return;\n }\n All($emitter, $eventName, $unsubscribeMethod).then(\n ([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe as string]?.(eventName, handler);\n },\n );\n };\n });\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { isMessage } from \"helpers/guards\";\nimport { Of } from \"base/Of\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { Message } from \"base/Message\";\nimport { ActualMessage } from \"base/ActualMessage\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n */\nexport function Map<T, TG>(\n base: MaybeMessage<T[]>,\n target: ConstructorType<[any], MessageType<TG>>,\n) {\n const $base = ActualMessage(base);\n return Message<TG[]>((resolve, reject) => {\n $base.catch(reject);\n const infos: MessageType<TG>[] = [];\n const dc = DestroyContainer();\n $base.then((v) => {\n infos.length = 0;\n dc.destroy();\n v.forEach((val) => {\n let $val: MessageType<T> | T = val;\n if (!isMessage($val as object)) {\n $val = Of($val);\n }\n const info = target($val);\n dc.add(info);\n infos.push(info);\n });\n All(...infos).then(resolve);\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n */\nexport function Once<T>($base: MessageType<T>) {\n return Message<T>((resolve, reject) => {\n let isFilled = false;\n $base.catch(reject);\n $base.then((v) => {\n if (!isFilled) {\n isFilled = true;\n resolve(v);\n }\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L extends (...args: any) => any\n ? L\n : never\n : never;\n\n/**\n * Helps to pipe actors or functions to one common actor\n */\nexport function Piped<T extends ((...vars: any) => MaybeMessage)[]>(\n $m: MaybeMessage,\n ...c: T\n) {\n return c.reduce((msg, Constructor) => {\n return ActualMessage(Constructor(msg));\n }, ActualMessage($m)) as ReturnType<Last<T>>;\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { Late } from \"components/Late\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport function Process<T, R = unknown>(\n $base: MessageType<T>,\n builder: ConstructorType<[T], MessageType<R>>,\n) {\n return Message<R>((resolve, reject) => {\n const $res = Late<R>();\n const dc = DestroyContainer();\n\n $base.then((v) => {\n dc.destroy();\n const $msg = builder(v);\n dc.add($msg);\n $res.chain($msg);\n $msg.catch(reject);\n });\n $base.catch(reject);\n $res.then(resolve);\n\n return () => {\n dc.destroy();\n };\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * First responded message\n */\nexport function Race<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(ActualMessage);\n return Message((resolve, reject) => {\n let responded = false;\n $messages.forEach(($message) => {\n $message.catch(reject).then((v) => {\n if (responded === false) {\n responded = true;\n resolve(v);\n }\n });\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n return Message<T[]>((resolve, reject) => {\n const result: T[] = [];\n $base.catch(reject);\n $base.then((v) => {\n result.push(v);\n resolve(result.slice());\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>(base: MaybeMessage<T[]>) {\n const $base = ActualMessage(base);\n return Message<T>((resolve, reject) => {\n $base.catch(reject);\n $base.then((v) => {\n v.forEach((cv) => {\n resolve(cv);\n });\n });\n });\n}\n","import { Void } from \"base/Void\";\nimport { Context } from \"components/Context\";\n\n/**\n * Track creation and destruction of components\n * uses Context component to send messages\n * when created sends action=created\n * when destroyed sends action=destroyed\n */\nexport function Trackable(name: string, target: object) {\n Context(\"trackable\", { name, action: \"created\" }).then(Void());\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"destroy\") {\n Context(\"trackable\", { name, action: \"destroyed\" }).then(Void());\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\n","import { All } from \"components/All\";\nimport { Applied } from \"components/Applied\";\nimport { Primitive } from \"components/Primitive\";\nimport { Shared } from \"components/Shared\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\ndeclare global {\n interface SilentiumDebug {\n value: ($message: MessageType) => unknown;\n print: (...messages: MessageType[]) => void;\n destroyable: (onDestroy: () => void) => MessageType<any> & DestroyableType;\n }\n\n interface GlobalThis {\n silentiumDebug: SilentiumDebug;\n }\n\n // @ts-expect-error global variable\n const silentiumDebug: SilentiumDebug;\n}\n\n/**\n * Helps to print message value\n */\nconst silentiumPrint = (...messages: MessageType[]) => {\n Applied(All(...messages.map((e) => Shared(e))), JSON.stringify).then(\n console.log,\n );\n};\n\n/**\n * Helps to debug current value of message\n */\nconst silentiumValue = ($message: MessageType) =>\n Primitive($message).primitive();\n\nexport class MessageDestroyable implements MessageType<any>, DestroyableType {\n public constructor(private onDestroy: () => void) {}\n\n public then(resolve: ConstructorType<[string]>) {\n resolve(`Wait destroy ${Date.now()}`);\n return this;\n }\n\n public catch() {\n return this;\n }\n\n public destroy() {\n this.onDestroy();\n return this;\n }\n}\n\n/**\n * Helps to debug destroying\n */\nconst silentiumDestroyable = (onDestroy: () => void) =>\n new MessageDestroyable(onDestroy);\n\n/**\n * global functions for debuging\n * silentium programs\n */\nexport function DevTools() {\n if (typeof globalThis !== \"undefined\") {\n (globalThis as any).silentiumDebug = {\n value: silentiumValue,\n print: silentiumPrint,\n destroyable: silentiumDestroyable,\n };\n }\n}\n"],"names":["__publicField","name","params","emitter","eventName","Map","target"],"mappings":"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"}
1
+ {"version":3,"file":"silentium.cjs","sources":["../src/helpers/guards.ts","../src/base/Destroyable.ts","../src/base/DestroyContainer.ts","../src/base/Rejections.ts","../src/base/Silence.ts","../src/helpers/ensures.ts","../src/base/Message.ts","../src/base/Of.ts","../src/base/ActualMessage.ts","../src/base/Connected.ts","../src/base/Local.ts","../src/base/MessageSource.ts","../src/base/New.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/AppliedDestructured.ts","../src/components/Primitive.ts","../src/components/Shared.ts","../src/components/Late.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/Computed.ts","../src/components/Context.ts","../src/components/ContextChain.ts","../src/components/ContextOf.ts","../src/components/Default.ts","../src/components/Filtered.ts","../src/components/Empty.ts","../src/components/ExecutorApplied.ts","../src/components/Freeze.ts","../src/components/FromEvent.ts","../src/components/Map.ts","../src/components/Once.ts","../src/components/Piped.ts","../src/components/Process.ts","../src/components/Race.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/Trackable.ts","../src/helpers/DevTools.ts"],"sourcesContent":["import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n value?: T,\n): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage(o: unknown): o is MessageType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"then\" in o &&\n typeof (o as any).then === \"function\"\n );\n}\n\n/**\n * Checks that the object is an message\n */\nexport function isSource(o: unknown): o is SourceType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"use\" in o &&\n typeof (o as any).use === \"function\"\n );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable(o: unknown): o is DestroyableType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroy\" in o &&\n typeof (o as any).destroy === \"function\"\n );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed(o: unknown): o is DestroyedType {\n return (\n o !== null &&\n typeof o === \"object\" &&\n \"destroyed\" in o &&\n typeof (o as any).destroyed === \"function\"\n );\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n public constructor(private base: T) {}\n\n public destroy(): this {\n if (isDestroyable(this.base)) {\n this.base.destroy();\n }\n\n if (typeof this.base === \"function\") {\n this.base();\n }\n\n return this;\n }\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n private destructors: DestroyableType[] = [];\n private _destroyed = false;\n\n /**\n * Add one destroyable\n * @param e\n * @returns\n */\n public add<R>(e: R): R {\n this.destructors.push(Destroyable(e));\n return e;\n }\n\n /**\n * Add many destroyable objects\n * @param destroyableList\n * @returns\n */\n public many(destroyableList: unknown[]) {\n destroyableList.forEach((d) => {\n this.add(d);\n });\n return this;\n }\n\n public destroy() {\n this._destroyed = true;\n this.destructors.forEach((d) => d.destroy());\n this.destructors.length = 0;\n return this;\n }\n\n public destroyed() {\n return this._destroyed;\n }\n\n public destructor() {\n return this.destroy.bind(this);\n }\n}\n","import { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * Handles rejections collection\n */\nexport class Rejections {\n private catchers: ConstructorType<[unknown]>[] = [];\n private lastRejectReason: unknown = null;\n\n public reject = (reason: unknown) => {\n this.lastRejectReason = reason;\n this.catchers.forEach((catcher) => {\n catcher(reason);\n });\n };\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.lastRejectReason !== null) {\n rejected(this.lastRejectReason);\n }\n this.catchers.push(rejected);\n return this;\n }\n\n public destroy() {\n this.catchers.length = 0;\n return this;\n }\n}\n","import { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\nexport const ResetSilenceCache = Symbol(\"reset-silence-cache\");\n\n/**\n * Silence is null or undefined or duplicated values\n * Everything else is not silence\n *\n * @url https://silentium.pw/article/silence/view\n */\nexport function Silence<T>(resolve: ConstructorType<[T]>) {\n let lastValue: T | undefined;\n return (v: T | undefined) => {\n if (v === ResetSilenceCache) {\n lastValue = undefined;\n v = undefined;\n }\n if (isFilled(v) && v !== lastValue) {\n lastValue = v;\n resolve(v);\n }\n };\n}\n","import { isMessage } from \"helpers/guards\";\n\nexport function ensureFunction(v: unknown, label: string) {\n if (typeof v !== \"function\") {\n throw new Error(`${label}: is not function`);\n }\n}\n\nexport function ensureMessage(v: unknown, label: string) {\n if (!isMessage(v)) {\n throw new Error(`${label}: is not message`);\n }\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Rejections } from \"base/Rejections\";\nimport { Silence } from \"base/Silence\";\nimport { ensureFunction } from \"helpers/ensures\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport type MessageExecutorType<T> = (\n resolve: ConstructorType<[T]>,\n reject: ConstructorType<[unknown]>,\n) => MessageType | (() => void) | void;\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n *\n * @url https://silentium.pw/article/message/view\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\n/**\n * Reactive message implementation\n *\n * @url https://silentium.pw/article/message/view\n */\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n private rejections = new Rejections();\n private dc = DestroyContainer();\n\n public constructor(private executor: MessageExecutorType<T>) {\n ensureFunction(executor, \"Message: executor\");\n }\n\n public then(resolve: ConstructorType<[T]>) {\n if (this.dc.destroyed()) {\n return this;\n }\n try {\n this.dc.add(this.executor(Silence(resolve), this.rejections.reject));\n } catch (e: any) {\n this.rejections.reject(e);\n }\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n if (this.dc.destroyed()) {\n return this;\n }\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.dc.destroy();\n this.rejections.destroy();\n return this;\n }\n}\n","import { Message } from \"base/Message\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n return Message<T>(function OfImpl(r) {\n r(value);\n });\n}\n","import { Of } from \"base/Of\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * A function that helps to ensure that\n * the message is indeed a message object\n * and not just a value\n *\n * @url https://silentium.pw/article/actual-message/view\n */\nexport function ActualMessage<T>(message: MaybeMessage<T>): MessageType<T> {\n return isMessage(message) ? message : Of(message);\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * First message - is main\n * others will be destroyed when first\n * will be destroyed\n *\n * @url https://silentium.pw/article/connected/view\n */\nexport function Connected<T>(...m: MessageType[]) {\n const dc = DestroyContainer();\n dc.many(m);\n return Message<T>((resolve, reject) => {\n (m[0] as MessageType<T>).catch(reject).then(resolve);\n m.slice(1).forEach((other) => {\n other.catch(reject);\n });\n\n return dc.destructor();\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Create local copy of source what can be destroyed\n */\nexport function Local<T>(_base: MaybeMessage<T>) {\n const $base = ActualMessage(_base);\n return Message<T>(function LocalImpl(resolve, reject) {\n let destroyed = false;\n $base.then((v) => {\n if (!destroyed) {\n resolve(v);\n }\n });\n $base.catch(reject);\n return () => {\n destroyed = true;\n };\n });\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object\n * https://silentium.pw/article/message-source/view\n */\nexport function MessageSource<T>(\n messageExecutor: MessageExecutorType<T>,\n sourceExecutor: ConstructorType<[T]>,\n) {\n return new MessageSourceImpl(messageExecutor, sourceExecutor);\n}\n\nexport class MessageSourceImpl<T> implements MessageSourceType<T> {\n private message: MessageImpl<T>;\n\n public constructor(\n messageExecutor: MessageExecutorType<T>,\n private sourceExecutor: ConstructorType<[T]>,\n ) {\n this.message = Message(messageExecutor);\n }\n\n public use(value: T): this {\n this.sourceExecutor(value);\n return this;\n }\n\n public then(resolved: ConstructorType<[T]>): this {\n this.message.then(resolved);\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.message.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.message.destroy();\n return this;\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n *\n * @url https://silentium.pw/article/new-component/view\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n return Message<T>(function NewImpl(resolve) {\n resolve(construct());\n });\n}\n","/**\n * Resolver that does nothing with the passed value,\n * needed for silent message triggering\n */\nexport function Void() {\n return () => {};\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\ntype ExtractTypeS<T> = T extends MaybeMessage<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MaybeMessage<any>[]> = {\n [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n *\n * @url https://silentium.pw/article/all-component/view\n */\nexport function All<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(ActualMessage);\n return Message<ExtractTypesFromArrayS<T>>(function AllImpl(resolve, reject) {\n const known = new Set<string>(Object.keys(messages));\n const filled = new Set<string>();\n const result: unknown[] = [];\n if (known.size === 0) {\n resolve([] as ExtractTypesFromArrayS<T>);\n return;\n }\n $messages.map((m, key) => {\n m.catch(reject);\n m.then((v) => {\n filled.add(key.toString());\n result[key] = v;\n if (isAllFilled(filled, known)) {\n resolve(result.slice() as ExtractTypesFromArrayS<T>);\n }\n });\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n *\n * @url https://silentium.pw/article/any-component/view\n */\nexport function Any<const T>(...messages: MaybeMessage<T>[]) {\n const $messages = messages.map(ActualMessage);\n return Message<T>(function AnyImpl(resolve, reject) {\n $messages.forEach((message) => {\n message.catch(reject);\n message.then(resolve);\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n *\n * @url https://silentium.pw/article/applied/view\n */\nexport function Applied<const T, R>(\n base: MaybeMessage<T>,\n applier: ConstructorType<[T], MaybeMessage<R>>,\n) {\n const $base = ActualMessage(base);\n return Message<R>(function AppliedImpl(resolve, reject) {\n const dc = DestroyContainer();\n $base.catch(reject);\n $base.then((v) => {\n const result = applier(v);\n if (isMessage(result)) {\n dc.destroy();\n dc.add(result);\n result.catch(reject).then(resolve);\n } else {\n resolve(result);\n }\n });\n });\n}\n","import { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n *\n * @url https://silentium.pw/article/applied-destructured/view\n */\nexport function AppliedDestructured<const T extends any[], R>(\n $base: MaybeMessage<T>,\n applier: ConstructorType<any[], R>,\n) {\n return Applied($base, function AppliedDestructuredImpl(args) {\n return applier(...args);\n });\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Helps represent an message as a primitive type, which can be useful\n * for cases when you need to always have a reference to the current value\n * without updating the shared value when the current one changes.\n * For example, this could be used when passing an authorization token.\n * It can also be useful for testing or logging purposes.\n */\nexport function Primitive<T>($base: MessageType<T>, theValue: T | null = null) {\n return new PrimitiveImpl<T>($base, theValue);\n}\n\nexport class PrimitiveImpl<T> {\n private touched = false;\n\n public constructor(\n private $base: MessageType<T>,\n private theValue: T | null = null,\n ) {}\n\n private ensureTouched() {\n if (!this.touched) {\n this.$base.then((v) => {\n this.theValue = v;\n });\n }\n this.touched = true;\n }\n\n public [Symbol.toPrimitive]() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitive() {\n this.ensureTouched();\n return this.theValue;\n }\n\n public primitiveWithException() {\n this.ensureTouched();\n if (this.theValue === null) {\n throw new Error(\"Primitive value is null\");\n }\n return this.theValue;\n }\n}\n","import { MessageType } from \"types/MessageType\";\nimport { MessageSourceType, SourceType } from \"types/SourceType\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { isDestroyable, isFilled, isSource } from \"helpers/guards\";\nimport { Primitive } from \"components/Primitive\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n *\n * @url https://silentium.pw/article/shared/view\n */\nexport function Shared<T>($base: MessageType<T> | MessageSourceType<T>) {\n return new SharedImpl<T>($base);\n}\n\nexport class SharedImpl<T> implements MessageSourceType<T> {\n private resolver = (v: T) => {\n this.lastV = v;\n this.resolvers.forEach((r) => {\n r(v);\n });\n };\n private lastV: T | undefined;\n private resolvers = new Set<ConstructorType<[T]>>();\n private source?: SourceType<T>;\n\n public constructor(private $base: MessageType<T> | MessageSourceType<T>) {\n if (isSource($base)) {\n this.source = $base;\n }\n }\n\n public then(resolved: ConstructorType<[T]>) {\n this.resolvers.add((v) => resolved(v));\n if (this.resolvers.size === 1) {\n this.$base.then(this.resolver);\n } else if (isFilled(this.lastV)) {\n resolved(this.lastV);\n }\n return this;\n }\n\n public use(value: T) {\n if (this.source) {\n this.source.use(value);\n } else {\n this.resolver(value);\n }\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.$base.catch(rejected);\n return this;\n }\n\n public destroy() {\n this.resolvers.clear();\n if (isDestroyable(this.$base)) {\n this.$base.destroy();\n }\n return this;\n }\n\n public value() {\n return Primitive(this);\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Silence } from \"base/Silence\";\nimport { Shared } from \"components/Shared\";\nimport { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n * https://silentium-lab.github.io/silentium/#/en/information/of\n */\nexport function Late<T>(v?: T) {\n return Shared(new LateImpl<T>(v));\n}\n\nexport class LateImpl<T> implements MessageSourceType<T> {\n private rejections = new Rejections();\n private lateR: ConstructorType<[T]> | null = null;\n private notify = () => {\n if (isFilled(this.v) && this.lateR) {\n try {\n this.lateR(this.v);\n } catch (e: any) {\n this.rejections.reject(e);\n }\n }\n };\n\n public constructor(private v?: T) {}\n\n public then(r: ConstructorType<[T]>): this {\n if (this.lateR) {\n throw new Error(\n \"Late component gets new resolver, when another was already connected!\",\n );\n }\n this.lateR = Silence(r);\n this.notify();\n return this;\n }\n\n public use(value: T): this {\n this.v = value;\n this.notify();\n return this;\n }\n\n public catch(rejected: ConstructorType<[unknown]>) {\n this.rejections.catch(rejected);\n return this;\n }\n\n public chain(m: MessageType<T>) {\n m.then(this.use.bind(this));\n return this;\n }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Late } from \"components/Late\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message with error catched\n * inside another message\n *\n * @url https://silentium.pw/article/catch/view\n */\nexport function Catch<T>($base: MessageType) {\n const rejections = new Rejections();\n $base.catch(rejections.reject);\n const $error = Late<T>();\n rejections.catch((e) => {\n $error.use(e as T);\n });\n\n return $error;\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MessageType, MessageTypeValue } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L\n : never;\n\n/**\n * Chains messages together and triggers\n * the last message only when all previous messages\n * have emitted their values. The value of Chain will be the value\n * of the last message. If any messages\n * emit a value again after the overall Chain response was already returned,\n * then Chain emits again with the value of the last message.\n */\nexport function Chain<T extends readonly MessageType[]>(...messages: T) {\n const $messages = messages.map(ActualMessage);\n return Message<MessageTypeValue<Last<T>>>(\n function ChainImpl(resolve, reject) {\n let $latest: MessageTypeValue<Last<T>> | undefined;\n const handleMessage = (index: number) => {\n const message = $messages[index] as Last<T>;\n message.catch(reject);\n const next = $messages[index + 1] as Last<T> | undefined;\n message.then((v) => {\n oneMessage(v as MessageTypeValue<Last<T>>, next, index);\n });\n };\n function oneMessage(\n v: MessageTypeValue<Last<T>>,\n next: Last<T> | undefined,\n index: number,\n ) {\n if (!next) {\n $latest = v as MessageTypeValue<Last<T>>;\n }\n if ($latest) {\n resolve($latest);\n }\n if (next && !$latest) {\n handleMessage(index + 1);\n }\n }\n handleMessage(0);\n },\n );\n}\n","import { All } from \"components/All\";\nimport { AppliedDestructured } from \"components/AppliedDestructured\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component what helps to compute\n * poor functions, and represent result\n * as message\n *\n * @url https://silentium.pw/article/computed/view\n */\nexport function Computed<const T extends MaybeMessage<any>[], R>(\n applier: ConstructorType<any[], R>,\n ...messages: T\n) {\n return AppliedDestructured(All(...messages), applier);\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MessageSource } from \"base/MessageSource\";\nimport { All } from \"components/All\";\nimport { AppliedDestructured } from \"components/AppliedDestructured\";\nimport { Primitive } from \"components/Primitive\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ContextType } from \"types/ContextType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nContext.transport = new Map<any, ConstructorType<[ContextType]>>();\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * ContextType, the list of transport should be defined via\n * the Context.transport map object\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function Context<T>(\n name: MaybeMessage<string | symbol>,\n params: MaybeMessage<ContextType[\"params\"]> = {},\n) {\n const $msg = AppliedDestructured(\n All(ActualMessage(name), ActualMessage(params)),\n (name, params) =>\n ({\n transport: name,\n params,\n result: undefined,\n error: undefined,\n }) as ContextType,\n );\n return MessageSource<T>(\n (resolve, reject) => {\n $msg.then((message) => {\n const transport = Context.transport.get(message.transport);\n if (transport === undefined) {\n throw new Error(`Context: unknown transport ${message.transport}`);\n }\n if (!message.result) {\n message.result = resolve;\n }\n if (!message.error) {\n message.error = reject;\n }\n try {\n transport(message);\n } catch (error) {\n reject(error);\n }\n });\n },\n (value) => {\n const msg = Primitive($msg).primitive();\n if (msg === null) {\n throw new Error(\"Context: sourcing impossible message not existed\");\n }\n const transport = Context.transport.get(msg.transport);\n if (transport === undefined) {\n throw new Error(`Context: sourcing unknown transport ${msg.transport}`);\n }\n transport({\n ...msg,\n value,\n });\n },\n );\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\nimport { isSource } from \"helpers/guards\";\n\n/**\n * Connects an external message to an Context message chain\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextChain(base: MaybeMessage) {\n const $base = ActualMessage(base);\n return (context: ContextType) => {\n if (context.value && isSource(base)) {\n base.use(context.value);\n return;\n }\n if (!context.result) {\n throw new Error(\"ContextChain did not find result field in message\");\n }\n $base.then(context.result);\n };\n}\n","import { Message } from \"base/Message\";\nimport { Context } from \"components/Context\";\nimport { Late } from \"components/Late\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Message for the arrival of a specific Context message\n * for specific transport\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextOf(transport: string) {\n const $msg = Late<ContextType>();\n Context.transport.set(transport, $msg.use.bind($msg));\n return Message<ContextType>((resolve, reject) => {\n $msg.catch(reject);\n $msg.then(resolve);\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { Applied } from \"components/Applied\";\nimport { Catch } from \"components/Catch\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * If base returns error then\n * default will return default value\n *\n * @url https://silentium.pw/article/default/view\n */\nexport function Default<T>(\n $base: MessageType<T>,\n _default: MaybeMessage<unknown>,\n) {\n const $default = ActualMessage(_default);\n const $defaultAfterError = Applied(Catch($base), () => $default);\n\n return Message<T>((resolve) => {\n $base.then(resolve);\n $defaultAfterError.then(resolve as any);\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * Filters values from the source message based on a predicate function,\n * optionally providing a default value when the predicate fails.\n */\nexport function Filtered<T>(\n base: MaybeMessage<T>,\n predicate: ConstructorType<[T], boolean>,\n defaultValue?: T,\n): MessageType<T> {\n const $base = ActualMessage(base);\n return Message<T>(function FilteredImpl(resolve, reject) {\n $base.catch(reject);\n $base.then((v) => {\n if (predicate(v)) {\n resolve(v);\n } else if (defaultValue !== undefined) {\n resolve(defaultValue);\n }\n });\n });\n}\n","import { Filtered } from \"components/Filtered\";\nimport { Late } from \"components/Late\";\nimport { Shared } from \"components/Shared\";\nimport { EmptyType } from \"types/EmptyType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport const Nothing = Symbol(\"nothing\");\n\n/**\n * Helps to split message and empty\n * response\n */\nexport function Empty<T>($base: MessageType<T>) {\n return new EmptyImpl<T>($base);\n}\n\nexport class EmptyImpl<T> implements EmptyType {\n private $empty = Late<boolean>();\n\n public constructor(private $base: MessageType<T>) {}\n\n public message() {\n Shared(this.$base).then((v) => {\n if (v === Nothing) {\n this.$empty.use(true);\n }\n });\n return Filtered(this.$base, (v) => v !== Nothing);\n }\n\n public empty(): MessageType<boolean> {\n return this.$empty;\n }\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\ntype ExecutorApplier<T> = (executor: (v: T) => void) => (v: T) => void;\n\n/**\n * Applies a value transfer function to the resolver\n * and returns the same value transfer function for the resolver\n * Useful for applying functions like debounced or throttle\n */\nexport function ExecutorApplied<T>(\n $base: MessageType<T>,\n applier: ExecutorApplier<T>,\n) {\n return Message<T>(function ExecutorAppliedImpl(resolve, reject) {\n $base.catch(reject);\n $base.then(applier(resolve));\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Message what freezes first known value\n */\nexport function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>) {\n let freezedValue: T | null = null;\n return Message<T>(function FreezeImpl(resolve, reject) {\n $base.catch(reject);\n $base.then((v) => {\n if (freezedValue === null) {\n freezedValue = v;\n }\n resolve(freezedValue as T);\n });\n\n $invalidate?.then(() => {\n freezedValue = null;\n });\n });\n}\n","import { MaybeMessage } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A message derived from event with a different\n * method call interface, based on callbacks.\n * Allows attaching a custom handler to an existing event source\n * and presenting it as a silentium message\n */\nexport function FromEvent<T>(\n emitter: MaybeMessage<any>,\n eventName: MaybeMessage<string>,\n subscribeMethod: MaybeMessage<string>,\n unsubscribeMethod?: MaybeMessage<string>,\n) {\n const $emitter = ActualMessage(emitter);\n const $eventName = ActualMessage(eventName);\n const $subscribeMethod = ActualMessage(subscribeMethod);\n const $unsubscribeMethod = ActualMessage(unsubscribeMethod);\n return Message<T>((resolve, reject) => {\n $emitter.catch(reject);\n $eventName.catch(reject);\n $subscribeMethod.catch(reject);\n $unsubscribeMethod.catch(reject);\n let lastR: ConstructorType<[T]> | null = null;\n const handler = (v: T) => {\n if (lastR) {\n lastR(v);\n }\n };\n All($emitter, $eventName, $subscribeMethod).then(\n ([emitter, eventName, subscribe]) => {\n lastR = resolve;\n if (!emitter?.[subscribe]) {\n return;\n }\n emitter[subscribe](eventName, handler);\n },\n );\n return () => {\n lastR = null;\n if (!$unsubscribeMethod) {\n return;\n }\n All($emitter, $eventName, $unsubscribeMethod).then(\n ([emitter, eventName, unsubscribe]) => {\n emitter?.[unsubscribe as string]?.(eventName, handler);\n },\n );\n };\n });\n}\n","import { MaybeMessage, MessageType } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { isMessage } from \"helpers/guards\";\nimport { Of } from \"base/Of\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { Message } from \"base/Message\";\nimport { ActualMessage } from \"base/ActualMessage\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\n\n/**\n * Component that applies an info object constructor to each data item,\n * producing an information source with new values\n */\nexport function Map<T, TG>(\n base: MaybeMessage<T[]>,\n target: ConstructorType<[any], MessageType<TG>>,\n) {\n const $base = ActualMessage(base);\n return Message<TG[]>((resolve, reject) => {\n $base.catch(reject);\n const infos: MessageType<TG>[] = [];\n const dc = DestroyContainer();\n $base.then((v) => {\n infos.length = 0;\n dc.destroy();\n v.forEach((val) => {\n let $val: MessageType<T> | T = val;\n if (!isMessage($val as object)) {\n $val = Of($val);\n }\n const info = target($val);\n dc.add(info);\n infos.push(info);\n });\n All(...infos).then(resolve);\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Limits the number of values from the information source\n * to a single value - once the first value is emitted, no more\n * values are delivered from the source\n */\nexport function Once<T>($base: MessageType<T>) {\n return Message<T>((resolve, reject) => {\n let isFilled = false;\n $base.catch(reject);\n $base.then((v) => {\n if (!isFilled) {\n isFilled = true;\n resolve(v);\n }\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n ? L extends (...args: any) => any\n ? L\n : never\n : never;\n\n/**\n * Helps to pipe actors or functions to one common actor\n */\nexport function Piped<T extends ((...vars: any) => MaybeMessage)[]>(\n $m: MaybeMessage,\n ...c: T\n) {\n return c.reduce((msg, Constructor) => {\n return ActualMessage(Constructor(msg));\n }, ActualMessage($m)) as ReturnType<Last<T>>;\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { Late } from \"components/Late\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport function Process<T, R = unknown>(\n $base: MessageType<T>,\n builder: ConstructorType<[T], MessageType<R>>,\n) {\n return Message<R>((resolve, reject) => {\n const $res = Late<R>();\n const dc = DestroyContainer();\n\n $base.then((v) => {\n dc.destroy();\n const $msg = builder(v);\n dc.add($msg);\n $res.chain($msg);\n $msg.catch(reject);\n });\n $base.catch(reject);\n $res.then(resolve);\n\n return () => {\n dc.destroy();\n };\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * First responded message\n */\nexport function Race<const T extends MaybeMessage[]>(...messages: T) {\n const $messages = messages.map(ActualMessage);\n return Message((resolve, reject) => {\n let responded = false;\n $messages.forEach(($message) => {\n $message.catch(reject).then((v) => {\n if (responded === false) {\n responded = true;\n resolve(v);\n }\n });\n });\n });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n return Message<T[]>((resolve, reject) => {\n const result: T[] = [];\n $base.catch(reject);\n $base.then((v) => {\n result.push(v);\n resolve(result.slice());\n });\n });\n}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component that receives a data array and yields values one by one\n */\nexport function Stream<T>(base: MaybeMessage<T[]>) {\n const $base = ActualMessage(base);\n return Message<T>((resolve, reject) => {\n $base.catch(reject);\n $base.then((v) => {\n v.forEach((cv) => {\n resolve(cv);\n });\n });\n });\n}\n","import { Void } from \"base/Void\";\nimport { Context } from \"components/Context\";\n\n/**\n * Track creation and destruction of components\n * uses Context component to send messages\n * when created sends action=created\n * when destroyed sends action=destroyed\n */\nexport function Trackable(name: string, target: object) {\n Context(\"trackable\", { name, action: \"created\" }).then(Void());\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"then\") {\n Context(\"trackable\", { name, action: \"executed\" }).then(Void());\n }\n if (prop === \"destroy\") {\n Context(\"trackable\", { name, action: \"destroyed\" }).then(Void());\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\n","import { All } from \"components/All\";\nimport { Applied } from \"components/Applied\";\nimport { Primitive } from \"components/Primitive\";\nimport { Shared } from \"components/Shared\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\ndeclare global {\n interface SilentiumDebug {\n value: ($message: MessageType) => unknown;\n print: (...messages: MessageType[]) => void;\n destroyable: (onDestroy: () => void) => MessageType<any> & DestroyableType;\n }\n\n interface GlobalThis {\n silentiumDebug: SilentiumDebug;\n }\n\n // @ts-expect-error global variable\n const silentiumDebug: SilentiumDebug;\n}\n\n/**\n * Helps to print message value\n */\nconst silentiumPrint = (...messages: MessageType[]) => {\n Applied(All(...messages.map((e) => Shared(e))), JSON.stringify).then(\n console.log,\n );\n};\n\n/**\n * Helps to debug current value of message\n */\nconst silentiumValue = ($message: MessageType) =>\n Primitive($message).primitive();\n\nexport class MessageDestroyable implements MessageType<any>, DestroyableType {\n public constructor(private onDestroy: () => void) {}\n\n public then(resolve: ConstructorType<[string]>) {\n resolve(`Wait destroy ${Date.now()}`);\n return this;\n }\n\n public catch() {\n return this;\n }\n\n public destroy() {\n this.onDestroy();\n return this;\n }\n}\n\n/**\n * Helps to debug destroying\n */\nconst silentiumDestroyable = (onDestroy: () => void) =>\n new MessageDestroyable(onDestroy);\n\n/**\n * global functions for debuging\n * silentium programs\n */\nexport function DevTools() {\n if (typeof globalThis !== \"undefined\") {\n (globalThis as any).silentiumDebug = {\n value: silentiumValue,\n print: silentiumPrint,\n destroyable: silentiumDestroyable,\n };\n }\n}\n"],"names":["__publicField","name","params","emitter","eventName","Map","target"],"mappings":"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"}
@@ -25,6 +25,8 @@ type MaybeMessage<T = unknown> = MessageType<T> | T;
25
25
  * A function that helps to ensure that
26
26
  * the message is indeed a message object
27
27
  * and not just a value
28
+ *
29
+ * @url https://silentium.pw/article/actual-message/view
28
30
  */
29
31
  declare function ActualMessage<T>(message: MaybeMessage<T>): MessageType<T>;
30
32
 
@@ -70,6 +72,8 @@ declare class MessageImpl<T> implements MessageType<T>, DestroyableType {
70
72
  * First message - is main
71
73
  * others will be destroyed when first
72
74
  * will be destroyed
75
+ *
76
+ * @url https://silentium.pw/article/connected/view
73
77
  */
74
78
  declare function Connected<T>(...m: MessageType[]): MessageImpl<T>;
75
79
 
@@ -145,6 +149,8 @@ declare class MessageSourceImpl<T> implements MessageSourceType<T> {
145
149
  /**
146
150
  * A component that, on each access, returns a new instance
147
151
  * of a reference type based on the constructor function
152
+ *
153
+ * @url https://silentium.pw/article/new-component/view
148
154
  */
149
155
  declare function New<T>(construct: ConstructorType<[], T>): MessageImpl<T>;
150
156
 
@@ -191,24 +197,32 @@ type ExtractTypesFromArrayS<T extends MaybeMessage<any>[]> = {
191
197
  * If at least one message later emits a new
192
198
  * value, the updated array with the new value
193
199
  * will be emitted by All.
200
+ *
201
+ * @url https://silentium.pw/article/all-component/view
194
202
  */
195
203
  declare function All<const T extends MaybeMessage[]>(...messages: T): MessageImpl<ExtractTypesFromArrayS<T>>;
196
204
 
197
205
  /**
198
206
  * A message that emits values received from
199
207
  * any of its bound messages
208
+ *
209
+ * @url https://silentium.pw/article/any-component/view
200
210
  */
201
211
  declare function Any<const T>(...messages: MaybeMessage<T>[]): MessageImpl<T>;
202
212
 
203
213
  /**
204
214
  * An message that applies a function
205
215
  * to the value of the base message
216
+ *
217
+ * @url https://silentium.pw/article/applied/view
206
218
  */
207
219
  declare function Applied<const T, R>(base: MaybeMessage<T>, applier: ConstructorType<[T], MaybeMessage<R>>): MessageImpl<R>;
208
220
 
209
221
  /**
210
222
  * Allows applying variables from an message that passes an array to a function,
211
223
  * where each element of the array will be passed as a separate argument
224
+ *
225
+ * @url https://silentium.pw/article/applied-destructured/view
212
226
  */
213
227
  declare function AppliedDestructured<const T extends any[], R>($base: MaybeMessage<T>, applier: ConstructorType<any[], R>): MessageImpl<R>;
214
228
 
@@ -256,6 +270,8 @@ declare class SharedImpl<T> implements MessageSourceType<T> {
256
270
  /**
257
271
  * Message with error catched
258
272
  * inside another message
273
+ *
274
+ * @url https://silentium.pw/article/catch/view
259
275
  */
260
276
  declare function Catch<T>($base: MessageType): SharedImpl<T>;
261
277
 
@@ -274,6 +290,8 @@ declare function Chain<T extends readonly MessageType[]>(...messages: T): Messag
274
290
  * Component what helps to compute
275
291
  * poor functions, and represent result
276
292
  * as message
293
+ *
294
+ * @url https://silentium.pw/article/computed/view
277
295
  */
278
296
  declare function Computed<const T extends MaybeMessage<any>[], R>(applier: ConstructorType<any[], R>, ...messages: T): MessageImpl<R>;
279
297
 
@@ -294,6 +312,8 @@ interface ContextType extends Record<string, any> {
294
312
  * sending a message in a standardized format
295
313
  * ContextType, the list of transport should be defined via
296
314
  * the Context.transport map object
315
+ *
316
+ * @url https://silentium.pw/article/context/view
297
317
  */
298
318
  declare function Context<T>(name: MaybeMessage<string | symbol>, params?: MaybeMessage<ContextType["params"]>): MessageSourceImpl<T>;
299
319
  declare namespace Context {
@@ -302,18 +322,24 @@ declare namespace Context {
302
322
 
303
323
  /**
304
324
  * Connects an external message to an Context message chain
325
+ *
326
+ * @url https://silentium.pw/article/context/view
305
327
  */
306
328
  declare function ContextChain(base: MaybeMessage): (context: ContextType) => void;
307
329
 
308
330
  /**
309
331
  * Message for the arrival of a specific Context message
310
332
  * for specific transport
333
+ *
334
+ * @url https://silentium.pw/article/context/view
311
335
  */
312
336
  declare function ContextOf(transport: string): MessageImpl<ContextType>;
313
337
 
314
338
  /**
315
339
  * If base returns error then
316
340
  * default will return default value
341
+ *
342
+ * @url https://silentium.pw/article/default/view
317
343
  */
318
344
  declare function Default<T>($base: MessageType<T>, _default: MaybeMessage<unknown>): MessageImpl<T>;
319
345
 
package/dist/silentium.js CHANGED
@@ -296,6 +296,7 @@ function Applied(base, applier) {
296
296
  const result = applier(v);
297
297
  if (isMessage(result)) {
298
298
  dc.destroy();
299
+ dc.add(result);
299
300
  result.catch(reject).then(resolve);
300
301
  } else {
301
302
  resolve(result);
@@ -779,6 +780,9 @@ function Trackable(name, target) {
779
780
  Context("trackable", { name, action: "created" }).then(Void());
780
781
  return new Proxy(target, {
781
782
  get(target2, prop, receiver) {
783
+ if (prop === "then") {
784
+ Context("trackable", { name, action: "executed" }).then(Void());
785
+ }
782
786
  if (prop === "destroy") {
783
787
  Context("trackable", { name, action: "destroyed" }).then(Void());
784
788
  }