silentium 0.0.169 → 0.0.170

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,14 @@
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.170](https://github.com/silentium-lab/silentium/compare/v0.0.169...v0.0.170) (2025-12-08)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** builded ([7e7399e](https://github.com/silentium-lab/silentium/commit/7e7399e2a077c65a2d90b051aac5538118af817f))
11
+ * **main:** race component ([aa0e52e](https://github.com/silentium-lab/silentium/commit/aa0e52e7c2abac263e65d60008fb28d157507af4))
12
+
5
13
  ### [0.0.169](https://github.com/silentium-lab/silentium/compare/v0.0.168...v0.0.169) (2025-12-05)
6
14
 
7
15
 
@@ -112,9 +112,9 @@ var __defProp$5 = Object.defineProperty;
112
112
  var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
113
113
  var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
114
114
  function Message(executor) {
115
- return new MessageRx(executor);
115
+ return new MessageImpl(executor);
116
116
  }
117
- class MessageRx {
117
+ class MessageImpl {
118
118
  constructor(executor) {
119
119
  this.executor = executor;
120
120
  __publicField$5(this, "rejections", new Rejections());
@@ -696,7 +696,7 @@ exports.LateImpl = LateImpl;
696
696
  exports.Local = Local;
697
697
  exports.Map = Map$1;
698
698
  exports.Message = Message;
699
- exports.MessageRx = MessageRx;
699
+ exports.MessageImpl = MessageImpl;
700
700
  exports.MessageSource = MessageSource;
701
701
  exports.MessageSourceImpl = MessageSourceImpl;
702
702
  exports.New = New;
@@ -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/Chainable.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/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/Process.ts","../src/components/Sequence.ts","../src/components/Stream.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\n public add<R>(e: R): R {\n this.destructors.push(Destroyable(e));\n return e;\n }\n\n public destroy() {\n this.destructors.forEach((d) => d.destroy());\n this.destructors.length = 0;\n return 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 */\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 */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageRx<T>(executor);\n}\n\n/**\n * Reactive message implementation\n */\nexport class MessageRx<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 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 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 { ChainableType } from \"types/ChainableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Helps to connect Different\n * message and source\n */\nexport function Chainable<T>(src: SourceType<T>) {\n return new ChainableImpl(src);\n}\n\nexport class ChainableImpl<T> implements ChainableType<T> {\n public constructor(private src: SourceType<T>) {}\n\n public chain($m: MessageType<T>) {\n $m.then(this.src.use.bind(this.src));\n return this;\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, MessageRx } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object\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: MessageRx<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","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 { Message } from \"base/Message\";\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], R>,\n) {\n const $base = ActualMessage(base);\n return Message<R>(function AppliedImpl(resolve, reject) {\n $base.catch(reject);\n $base.then((v) => {\n resolve(applier(v));\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 { isFilled, isSource } from \"helpers/guards\";\nimport { Primitive } from \"components/Primitive\";\nimport { ChainableType } from \"types/ChainableType\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\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>, ChainableType<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(resolved);\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 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 { 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","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 { Message } from \"base/Message\";\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>(msg: MaybeMessage<ContextType>) {\n const $msg = ActualMessage(msg);\n return Message<T>((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}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Connects an external message to an RPC message chain\n */\nexport function ContextChain(base: MaybeMessage) {\n const $base = ActualMessage(base);\n return (context: ContextType) => {\n if (!context.result) {\n throw new Error(\"ContextChain did not find result in rpc 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 RPC 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 { 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 { 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 { 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"],"names":["__publicField","emitter","eventName","Map"],"mappings":";;AAOa,MAAA,QAAA,GAAW,CACtB,KAC0C,KAAA;AAC1C,EAAO,OAAA,KAAA,KAAU,UAAa,KAAU,KAAA,IAAA;AAC1C;AAKO,SAAS,UAAU,CAA8B,EAAA;AACtD,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,MAAU,IAAA,CAAA,IACV,OAAQ,CAAA,CAAU,IAAS,KAAA,UAAA;AAE/B;AAKO,SAAS,SAAS,CAA6B,EAAA;AACpD,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,KAAS,IAAA,CAAA,IACT,OAAQ,CAAA,CAAU,GAAQ,KAAA,UAAA;AAE9B;AAKO,SAAS,cAAc,CAAkC,EAAA;AAC9D,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,SAAa,IAAA,CAAA,IACb,OAAQ,CAAA,CAAU,OAAY,KAAA,UAAA;AAElC;AAKO,SAAS,YAAY,CAAgC,EAAA;AAC1D,EACE,OAAA,CAAA,KAAM,QACN,OAAO,CAAA,KAAM,YACb,WAAe,IAAA,CAAA,IACf,OAAQ,CAAA,CAAU,SAAc,KAAA,UAAA;AAEpC;;ACpDO,SAAS,YAAe,IAAS,EAAA;AACtC,EAAO,OAAA,IAAI,gBAAgB,IAAI,CAAA;AACjC;AAEO,MAAM,eAA8C,CAAA;AAAA,EAClD,YAAoB,IAAS,EAAA;AAAT,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA;AAAU,EAE9B,OAAgB,GAAA;AACrB,IAAI,IAAA,aAAA,CAAc,IAAK,CAAA,IAAI,CAAG,EAAA;AAC5B,MAAA,IAAA,CAAK,KAAK,OAAQ,EAAA;AAAA;AAGpB,IAAI,IAAA,OAAO,IAAK,CAAA,IAAA,KAAS,UAAY,EAAA;AACnC,MAAA,IAAA,CAAK,IAAK,EAAA;AAAA;AAGZ,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;AClBO,SAAS,gBAAmB,GAAA;AACjC,EAAA,OAAO,IAAI,oBAAqB,EAAA;AAClC;AAEO,MAAM,oBAAgD,CAAA;AAAA,EAAtD,WAAA,GAAA;AACL,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAiC,EAAC,CAAA;AAAA;AAAA,EAEnC,IAAO,CAAS,EAAA;AACrB,IAAA,IAAA,CAAK,WAAY,CAAA,IAAA,CAAK,WAAY,CAAA,CAAC,CAAC,CAAA;AACpC,IAAO,OAAA,CAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,YAAY,MAAS,GAAA,CAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACnBO,MAAM,UAAW,CAAA;AAAA,EAAjB,WAAA,GAAA;AACL,IAAAA,eAAA,CAAA,IAAA,EAAQ,YAAyC,EAAC,CAAA;AAClD,IAAAA,eAAA,CAAA,IAAA,EAAQ,kBAA4B,EAAA,IAAA,CAAA;AAEpC,IAAOA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,CAAC,MAAoB,KAAA;AACnC,MAAA,IAAA,CAAK,gBAAmB,GAAA,MAAA;AACxB,MAAK,IAAA,CAAA,QAAA,CAAS,OAAQ,CAAA,CAAC,OAAY,KAAA;AACjC,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,OACf,CAAA;AAAA,KACH,CAAA;AAAA;AAAA,EAEO,MAAM,QAAsC,EAAA;AACjD,IAAI,IAAA,IAAA,CAAK,qBAAqB,IAAM,EAAA;AAClC,MAAA,QAAA,CAAS,KAAK,gBAAgB,CAAA;AAAA;AAEhC,IAAK,IAAA,CAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AAC3B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,SAAS,MAAS,GAAA,CAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AAEX;;ACzBa,MAAA,iBAAA,GAAoB,OAAO,qBAAqB;AAMtD,SAAS,QAAW,OAA+B,EAAA;AACxD,EAAI,IAAA,SAAA;AACJ,EAAA,OAAO,CAAC,CAAqB,KAAA;AAC3B,IAAA,IAAI,MAAM,iBAAmB,EAAA;AAC3B,MAAY,SAAA,GAAA,MAAA;AACZ,MAAI,CAAA,GAAA,MAAA;AAAA;AAEN,IAAA,IAAI,QAAS,CAAA,CAAC,CAAK,IAAA,CAAA,KAAM,SAAW,EAAA;AAClC,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA;AACX,GACF;AACF;;ACnBgB,SAAA,cAAA,CAAe,GAAY,KAAe,EAAA;AACxD,EAAI,IAAA,OAAO,MAAM,UAAY,EAAA;AAC3B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAG,EAAA,KAAK,CAAmB,iBAAA,CAAA,CAAA;AAAA;AAE/C;AAEgB,SAAA,aAAA,CAAc,GAAY,KAAe,EAAA;AACvD,EAAI,IAAA,CAAC,SAAU,CAAA,CAAC,CAAG,EAAA;AACjB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAG,EAAA,KAAK,CAAkB,gBAAA,CAAA,CAAA;AAAA;AAE9C;;;;;ACKO,SAAS,QAAW,QAAkC,EAAA;AAC3D,EAAO,OAAA,IAAI,UAAa,QAAQ,CAAA;AAClC;AAKO,MAAM,SAAwD,CAAA;AAAA,EAI5D,YAAoB,QAAkC,EAAA;AAAlC,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAH3B,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAI,UAAW,EAAA,CAAA;AACpC,IAAAA,eAAA,CAAA,IAAA,EAAQ,MAAK,gBAAiB,EAAA,CAAA;AAG5B,IAAA,cAAA,CAAe,UAAU,mBAAmB,CAAA;AAAA;AAC9C,EAEO,KAAK,OAA+B,EAAA;AACzC,IAAI,IAAA;AACF,MAAK,IAAA,CAAA,EAAA,CAAG,GAAI,CAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,OAAO,CAAG,EAAA,IAAA,CAAK,UAAW,CAAA,MAAM,CAAC,CAAA;AAAA,aAC5D,CAAQ,EAAA;AACf,MAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA;AAE1B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,QAAsC,EAAA;AACjD,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,GAAG,OAAQ,EAAA;AAChB,IAAA,IAAA,CAAK,WAAW,OAAQ,EAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAEX;;AC9CO,SAAS,GAAM,KAAU,EAAA;AAC9B,EAAO,OAAA,OAAA,CAAW,SAAS,MAAA,CAAO,CAAG,EAAA;AACnC,IAAA,CAAA,CAAE,KAAK,CAAA;AAAA,GACR,CAAA;AACH;;ACAO,SAAS,cAAiB,OAA0C,EAAA;AACzE,EAAA,OAAO,SAAU,CAAA,OAAO,CAAI,GAAA,OAAA,GAAU,GAAG,OAAO,CAAA;AAClD;;ACHO,SAAS,UAAa,GAAoB,EAAA;AAC/C,EAAO,OAAA,IAAI,cAAc,GAAG,CAAA;AAC9B;AAEO,MAAM,aAA6C,CAAA;AAAA,EACjD,YAAoB,GAAoB,EAAA;AAApB,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAAA;AAAqB,EAEzC,MAAM,EAAoB,EAAA;AAC/B,IAAA,EAAA,CAAG,KAAK,IAAK,CAAA,GAAA,CAAI,IAAI,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AACnC,IAAO,OAAA,IAAA;AAAA;AAEX;;ACZO,SAAS,MAAS,KAAwB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQ,cAAc,KAAK,CAAA;AACjC,EAAA,OAAO,OAAW,CAAA,SAAS,SAAU,CAAA,OAAA,EAAS,MAAQ,EAAA;AACpD,IAAA,IAAI,SAAY,GAAA,KAAA;AAChB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,CAAC,SAAW,EAAA;AACd,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA;AACX,KACD,CAAA;AACD,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAA,OAAO,MAAM;AACX,MAAY,SAAA,GAAA,IAAA;AAAA,KACd;AAAA,GACD,CAAA;AACH;;;;;ACdgB,SAAA,aAAA,CACd,iBACA,cACA,EAAA;AACA,EAAO,OAAA,IAAI,iBAAkB,CAAA,eAAA,EAAiB,cAAc,CAAA;AAC9D;AAEO,MAAM,iBAAqD,CAAA;AAAA,EAGzD,WAAA,CACL,iBACQ,cACR,EAAA;AADQ,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AAJV,IAAQA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAMN,IAAK,IAAA,CAAA,OAAA,GAAU,QAAQ,eAAe,CAAA;AAAA;AACxC,EAEO,IAAI,KAAgB,EAAA;AACzB,IAAA,IAAA,CAAK,eAAe,KAAK,CAAA;AACzB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,KAAK,QAAsC,EAAA;AAChD,IAAK,IAAA,CAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,QAA4C,EAAA;AACvD,IAAK,IAAA,CAAA,OAAA,CAAQ,MAAM,QAAQ,CAAA;AAC3B,IAAO,OAAA,IAAA;AAAA;AAEX;;AC/BO,SAAS,IAAO,SAAmC,EAAA;AACxD,EAAO,OAAA,OAAA,CAAW,SAAS,OAAA,CAAQ,OAAS,EAAA;AAC1C,IAAA,OAAA,CAAQ,WAAW,CAAA;AAAA,GACpB,CAAA;AACH;;ACPO,SAAS,IAAO,GAAA;AACrB,EAAA,OAAO,MAAM;AAAA,GAAC;AAChB;;ACIA,MAAM,WAAA,GAAc,CAAC,UAAA,EAAyB,SAA2B,KAAA;AACvE,EAAA,OAAO,UAAW,CAAA,IAAA,GAAO,CAAK,IAAA,UAAA,CAAW,SAAS,SAAU,CAAA,IAAA;AAC9D,CAAA;AAWO,SAAS,OAAuC,QAAa,EAAA;AAClE,EAAM,MAAA,SAAA,GAAY,QAAS,CAAA,GAAA,CAAI,aAAa,CAAA;AAC5C,EAAA,OAAO,OAAmC,CAAA,SAAS,OAAQ,CAAA,OAAA,EAAS,MAAQ,EAAA;AAC1E,IAAA,MAAM,QAAQ,IAAI,GAAA,CAAY,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AACnD,IAAM,MAAA,MAAA,uBAAa,GAAY,EAAA;AAC/B,IAAA,MAAM,SAAoB,EAAC;AAC3B,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAA,OAAA,CAAQ,EAA+B,CAAA;AACvC,MAAA;AAAA;AAEF,IAAU,SAAA,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,GAAQ,KAAA;AACxB,MAAA,CAAA,CAAE,MAAM,MAAM,CAAA;AACd,MAAE,CAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACZ,QAAO,MAAA,CAAA,GAAA,CAAI,GAAI,CAAA,QAAA,EAAU,CAAA;AACzB,QAAA,MAAA,CAAO,GAAG,CAAI,GAAA,CAAA;AACd,QAAI,IAAA,WAAA,CAAY,MAAQ,EAAA,KAAK,CAAG,EAAA;AAC9B,UAAQ,OAAA,CAAA,MAAA,CAAO,OAAoC,CAAA;AAAA;AACrD,OACD,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;ACpCO,SAAS,OAAgB,QAA6B,EAAA;AAC3D,EAAM,MAAA,SAAA,GAAY,QAAS,CAAA,GAAA,CAAI,aAAa,CAAA;AAC5C,EAAA,OAAO,OAAW,CAAA,SAAS,OAAQ,CAAA,OAAA,EAAS,MAAQ,EAAA;AAClD,IAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AAC7B,MAAA,OAAA,CAAQ,MAAM,MAAM,CAAA;AACpB,MAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,KACrB,CAAA;AAAA,GACF,CAAA;AACH;;ACPgB,SAAA,OAAA,CACd,MACA,OACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,cAAc,IAAI,CAAA;AAChC,EAAA,OAAO,OAAW,CAAA,SAAS,WAAY,CAAA,OAAA,EAAS,MAAQ,EAAA;AACtD,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,KACnB,CAAA;AAAA,GACF,CAAA;AACH;;ACZgB,SAAA,mBAAA,CACd,OACA,OACA,EAAA;AACA,EAAA,OAAO,OAAQ,CAAA,KAAA,EAAO,SAAS,uBAAA,CAAwB,IAAM,EAAA;AAC3D,IAAO,OAAA,OAAA,CAAQ,GAAG,IAAI,CAAA;AAAA,GACvB,CAAA;AACH;;;;;ACNgB,SAAA,SAAA,CAAa,KAAuB,EAAA,QAAA,GAAqB,IAAM,EAAA;AAC7E,EAAO,OAAA,IAAI,aAAiB,CAAA,KAAA,EAAO,QAAQ,CAAA;AAC7C;AAEO,MAAM,aAAiB,CAAA;AAAA,EAGrB,WAAA,CACG,KACA,EAAA,QAAA,GAAqB,IAC7B,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAJV,IAAAA,eAAA,CAAA,IAAA,EAAQ,SAAU,EAAA,KAAA,CAAA;AAAA;AAKf,EAEK,aAAgB,GAAA;AACtB,IAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AACjB,MAAK,IAAA,CAAA,KAAA,CAAM,IAAK,CAAA,CAAC,CAAM,KAAA;AACrB,QAAA,IAAA,CAAK,QAAW,GAAA,CAAA;AAAA,OACjB,CAAA;AAAA;AAEH,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AAAA;AACjB,EAEA,CAAQ,MAAO,CAAA,WAAW,CAAI,GAAA;AAC5B,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACd,EAEO,SAAY,GAAA;AACjB,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACd,EAEO,sBAAyB,GAAA;AAC9B,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAI,IAAA,IAAA,CAAK,aAAa,IAAM,EAAA;AAC1B,MAAM,MAAA,IAAI,MAAM,yBAAyB,CAAA;AAAA;AAE3C,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AAEhB;;;;;ACpCO,SAAS,OAAU,KAA8C,EAAA;AACtE,EAAO,OAAA,IAAI,WAAc,KAAK,CAAA;AAChC;AAEO,MAAM,UAAgE,CAAA;AAAA,EAWpE,YAAoB,KAA8C,EAAA;AAA9C,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAV3B,IAAQA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAW,CAAC,CAAS,KAAA;AAC3B,MAAA,IAAA,CAAK,KAAQ,GAAA,CAAA;AACb,MAAK,IAAA,CAAA,SAAA,CAAU,OAAQ,CAAA,CAAC,CAAM,KAAA;AAC5B,QAAA,CAAA,CAAE,CAAC,CAAA;AAAA,OACJ,CAAA;AAAA,KACH,CAAA;AACA,IAAQA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,sBAAgB,GAA0B,EAAA,CAAA;AAClD,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAGN,IAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,MAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB;AACF,EAEO,KAAK,QAAgC,EAAA;AAC1C,IAAK,IAAA,CAAA,SAAA,CAAU,IAAI,QAAQ,CAAA;AAC3B,IAAI,IAAA,IAAA,CAAK,SAAU,CAAA,IAAA,KAAS,CAAG,EAAA;AAC7B,MAAK,IAAA,CAAA,KAAA,CAAM,IAAK,CAAA,IAAA,CAAK,QAAQ,CAAA;AAAA,KACpB,MAAA,IAAA,QAAA,CAAS,IAAK,CAAA,KAAK,CAAG,EAAA;AAC/B,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA;AAErB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAI,KAAU,EAAA;AACnB,IAAA,IAAI,KAAK,MAAQ,EAAA;AACf,MAAK,IAAA,CAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAAA,KAChB,MAAA;AACL,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AAErB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,QAAsC,EAAA;AACjD,IAAK,IAAA,CAAA,KAAA,CAAM,MAAM,QAAQ,CAAA;AACzB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAU,GAAA;AACf,IAAA,IAAA,CAAK,UAAU,KAAM,EAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,KAAQ,GAAA;AACb,IAAA,OAAO,UAAU,IAAI,CAAA;AAAA;AACvB,EAEO,MAAM,CAAmB,EAAA;AAC9B,IAAA,CAAA,CAAE,IAAK,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAC1B,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACxDO,SAAS,KAAQ,CAAO,EAAA;AAC7B,EAAA,OAAO,MAAO,CAAA,IAAI,QAAY,CAAA,CAAC,CAAC,CAAA;AAClC;AAEO,MAAM,QAA4C,CAAA;AAAA,EAahD,YAAoB,CAAO,EAAA;AAAP,IAAA,IAAA,CAAA,CAAA,GAAA,CAAA;AAZ3B,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAI,UAAW,EAAA,CAAA;AACpC,IAAAA,eAAA,CAAA,IAAA,EAAQ,OAAqC,EAAA,IAAA,CAAA;AAC7C,IAAAA,eAAA,CAAA,IAAA,EAAQ,UAAS,MAAM;AACrB,MAAA,IAAI,QAAS,CAAA,IAAA,CAAK,CAAC,CAAA,IAAK,KAAK,KAAO,EAAA;AAClC,QAAI,IAAA;AACF,UAAK,IAAA,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,iBACV,CAAQ,EAAA;AACf,UAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA;AAC1B;AACF,KACF,CAAA;AAAA;AAEmC,EAE5B,KAAK,CAA+B,EAAA;AACzC,IAAA,IAAI,KAAK,KAAO,EAAA;AACd,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA;AAEF,IAAK,IAAA,CAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACtB,IAAA,IAAA,CAAK,MAAO,EAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAI,KAAgB,EAAA;AACzB,IAAA,IAAA,CAAK,CAAI,GAAA,KAAA;AACT,IAAA,IAAA,CAAK,MAAO,EAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,QAAsC,EAAA;AACjD,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AAEX;;AC7CO,SAAS,MAAS,KAAoB,EAAA;AAC3C,EAAM,MAAA,UAAA,GAAa,IAAI,UAAW,EAAA;AAClC,EAAM,KAAA,CAAA,KAAA,CAAM,WAAW,MAAM,CAAA;AAC7B,EAAA,MAAM,SAAS,IAAQ,EAAA;AACvB,EAAW,UAAA,CAAA,KAAA,CAAM,CAAC,CAAM,KAAA;AACtB,IAAA,MAAA,CAAO,IAAI,CAAM,CAAA;AAAA,GAClB,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;ACAO,SAAS,SAA2C,QAAa,EAAA;AACtE,EAAM,MAAA,SAAA,GAAY,QAAS,CAAA,GAAA,CAAI,aAAa,CAAA;AAC5C,EAAO,OAAA,OAAA;AAAA,IACL,SAAS,SAAU,CAAA,OAAA,EAAS,MAAQ,EAAA;AAClC,MAAI,IAAA,OAAA;AACJ,MAAM,MAAA,aAAA,GAAgB,CAAC,KAAkB,KAAA;AACvC,QAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA;AAC/B,QAAA,OAAA,CAAQ,MAAM,MAAM,CAAA;AACpB,QAAM,MAAA,IAAA,GAAO,SAAU,CAAA,KAAA,GAAQ,CAAC,CAAA;AAChC,QAAQ,OAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAClB,UAAW,UAAA,CAAA,CAAA,EAAgC,MAAM,KAAK,CAAA;AAAA,SACvD,CAAA;AAAA,OACH;AACA,MAAS,SAAA,UAAA,CACP,CACA,EAAA,IAAA,EACA,KACA,EAAA;AACA,QAAA,IAAI,CAAC,IAAM,EAAA;AACT,UAAU,OAAA,GAAA,CAAA;AAAA;AAEZ,QAAA,IAAI,OAAS,EAAA;AACX,UAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AAEjB,QAAI,IAAA,IAAA,IAAQ,CAAC,OAAS,EAAA;AACpB,UAAA,aAAA,CAAc,QAAQ,CAAC,CAAA;AAAA;AACzB;AAEF,MAAA,aAAA,CAAc,CAAC,CAAA;AAAA;AACjB,GACF;AACF;;ACtCgB,SAAA,QAAA,CACd,YACG,QACH,EAAA;AACA,EAAA,OAAO,mBAAoB,CAAA,GAAA,CAAI,GAAG,QAAQ,GAAG,OAAO,CAAA;AACtD;;ACTA,OAAQ,CAAA,SAAA,uBAAgB,GAAyC,EAAA;AAQ1D,SAAS,QAAW,GAAgC,EAAA;AACzD,EAAM,MAAA,IAAA,GAAO,cAAc,GAAG,CAAA;AAC9B,EAAO,OAAA,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,IAAK,IAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACrB,MAAA,MAAM,SAAY,GAAA,OAAA,CAAQ,SAAU,CAAA,GAAA,CAAI,QAAQ,SAAS,CAAA;AACzD,MAAA,IAAI,cAAc,MAAW,EAAA;AAC3B,QAAA,MAAM,IAAI,KAAA,CAAM,CAA8B,2BAAA,EAAA,OAAA,CAAQ,SAAS,CAAE,CAAA,CAAA;AAAA;AAEnE,MAAI,IAAA,CAAC,QAAQ,MAAQ,EAAA;AACnB,QAAA,OAAA,CAAQ,MAAS,GAAA,OAAA;AAAA;AAEnB,MAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,QAAA,OAAA,CAAQ,KAAQ,GAAA,MAAA;AAAA;AAElB,MAAI,IAAA;AACF,QAAA,SAAA,CAAU,OAAO,CAAA;AAAA,eACV,KAAO,EAAA;AACd,QAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AACd,KACD,CAAA;AAAA,GACF,CAAA;AACH;;AC5BO,SAAS,aAAa,IAAoB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQ,cAAc,IAAI,CAAA;AAChC,EAAA,OAAO,CAAC,OAAyB,KAAA;AAC/B,IAAI,IAAA,CAAC,QAAQ,MAAQ,EAAA;AACnB,MAAM,MAAA,IAAI,MAAM,iDAAiD,CAAA;AAAA;AAEnE,IAAM,KAAA,CAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA,GAC3B;AACF;;ACNO,SAAS,UAAU,SAAmB,EAAA;AAC3C,EAAA,MAAM,OAAO,IAAkB,EAAA;AAC/B,EAAA,OAAA,CAAQ,UAAU,GAAI,CAAA,SAAA,EAAW,KAAK,GAAI,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AACpD,EAAO,OAAA,OAAA,CAAqB,CAAC,OAAA,EAAS,MAAW,KAAA;AAC/C,IAAA,IAAA,CAAK,MAAM,MAAM,CAAA;AACjB,IAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,GAClB,CAAA;AACH;;ACPgB,SAAA,QAAA,CACd,IACA,EAAA,SAAA,EACA,YACgB,EAAA;AAChB,EAAM,MAAA,KAAA,GAAQ,cAAc,IAAI,CAAA;AAChC,EAAA,OAAO,OAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAI,IAAA,SAAA,CAAU,CAAC,CAAG,EAAA;AAChB,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,OACX,MAAA,IAAW,iBAAiB,MAAW,EAAA;AACrC,QAAA,OAAA,CAAQ,YAAY,CAAA;AAAA;AACtB,KACD,CAAA;AAAA,GACF,CAAA;AACH;;;;;ACnBa,MAAA,OAAA,GAAU,OAAO,SAAS;AAMhC,SAAS,MAAS,KAAuB,EAAA;AAC9C,EAAO,OAAA,IAAI,UAAa,KAAK,CAAA;AAC/B;AAEO,MAAM,SAAkC,CAAA;AAAA,EAGtC,YAAoB,KAAuB,EAAA;AAAvB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAF3B,IAAA,aAAA,CAAA,IAAA,EAAQ,UAAS,IAAc,EAAA,CAAA;AAAA;AAEoB,EAE5C,OAAU,GAAA;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAC7B,MAAA,IAAI,MAAM,OAAS,EAAA;AACjB,QAAK,IAAA,CAAA,MAAA,CAAO,IAAI,IAAI,CAAA;AAAA;AACtB,KACD,CAAA;AACD,IAAA,OAAO,SAAS,IAAK,CAAA,KAAA,EAAO,CAAC,CAAA,KAAM,MAAM,OAAO,CAAA;AAAA;AAClD,EAEO,KAA8B,GAAA;AACnC,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AAEhB;;ACvBgB,SAAA,eAAA,CACd,OACA,OACA,EAAA;AACA,EAAA,OAAO,OAAW,CAAA,SAAS,mBAAoB,CAAA,OAAA,EAAS,MAAQ,EAAA;AAC9D,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,OAAO,CAAC,CAAA;AAAA,GAC5B,CAAA;AACH;;ACZgB,SAAA,MAAA,CAAU,OAAuB,WAA8B,EAAA;AAC7E,EAAA,IAAI,YAAyB,GAAA,IAAA;AAC7B,EAAA,OAAO,OAAW,CAAA,SAAS,UAAW,CAAA,OAAA,EAAS,MAAQ,EAAA;AACrD,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,iBAAiB,IAAM,EAAA;AACzB,QAAe,YAAA,GAAA,CAAA;AAAA;AAEjB,MAAA,OAAA,CAAQ,YAAiB,CAAA;AAAA,KAC1B,CAAA;AAED,IAAA,WAAA,EAAa,KAAK,MAAM;AACtB,MAAe,YAAA,GAAA,IAAA;AAAA,KAChB,CAAA;AAAA,GACF,CAAA;AACH;;ACTO,SAAS,SACd,CAAA,OAAA,EACA,SACA,EAAA,eAAA,EACA,iBACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAW,cAAc,OAAO,CAAA;AACtC,EAAM,MAAA,UAAA,GAAa,cAAc,SAAS,CAAA;AAC1C,EAAM,MAAA,gBAAA,GAAmB,cAAc,eAAe,CAAA;AACtD,EAAM,MAAA,kBAAA,GAAqB,cAAc,iBAAiB,CAAA;AAC1D,EAAO,OAAA,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,IAAA,QAAA,CAAS,MAAM,MAAM,CAAA;AACrB,IAAA,UAAA,CAAW,MAAM,MAAM,CAAA;AACvB,IAAA,gBAAA,CAAiB,MAAM,MAAM,CAAA;AAC7B,IAAA,kBAAA,CAAmB,MAAM,MAAM,CAAA;AAC/B,IAAA,IAAI,KAAqC,GAAA,IAAA;AACzC,IAAM,MAAA,OAAA,GAAU,CAAC,CAAS,KAAA;AACxB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,KAAA,CAAM,CAAC,CAAA;AAAA;AACT,KACF;AACA,IAAI,GAAA,CAAA,QAAA,EAAU,UAAY,EAAA,gBAAgB,CAAE,CAAA,IAAA;AAAA,MAC1C,CAAC,CAACC,QAASC,EAAAA,UAAAA,EAAW,SAAS,CAAM,KAAA;AACnC,QAAQ,KAAA,GAAA,OAAA;AACR,QAAI,IAAA,CAACD,QAAU,GAAA,SAAS,CAAG,EAAA;AACzB,UAAA;AAAA;AAEF,QAAAA,QAAQ,CAAA,SAAS,CAAEC,CAAAA,UAAAA,EAAW,OAAO,CAAA;AAAA;AACvC,KACF;AACA,IAAA,OAAO,MAAM;AACX,MAAQ,KAAA,GAAA,IAAA;AACR,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAA;AAAA;AAEF,MAAI,GAAA,CAAA,QAAA,EAAU,UAAY,EAAA,kBAAkB,CAAE,CAAA,IAAA;AAAA,QAC5C,CAAC,CAACD,QAASC,EAAAA,UAAAA,EAAW,WAAW,CAAM,KAAA;AACrC,UAAAD,QAAU,GAAA,WAAqB,CAAIC,GAAAA,UAAAA,EAAW,OAAO,CAAA;AAAA;AACvD,OACF;AAAA,KACF;AAAA,GACD,CAAA;AACH;;ACzCgB,SAAAC,KAAA,CACd,MACA,MACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,cAAc,IAAI,CAAA;AAChC,EAAO,OAAA,OAAA,CAAc,CAAC,OAAA,EAAS,MAAW,KAAA;AACxC,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAA,MAAM,QAA2B,EAAC;AAClC,IAAA,MAAM,KAAK,gBAAiB,EAAA;AAC5B,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,KAAA,CAAM,MAAS,GAAA,CAAA;AACf,MAAA,EAAA,CAAG,OAAQ,EAAA;AACX,MAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACjB,QAAA,IAAI,IAA2B,GAAA,GAAA;AAC/B,QAAI,IAAA,CAAC,SAAU,CAAA,IAAc,CAAG,EAAA;AAC9B,UAAA,IAAA,GAAO,GAAG,IAAI,CAAA;AAAA;AAEhB,QAAM,MAAA,IAAA,GAAO,OAAO,IAAI,CAAA;AACxB,QAAA,EAAA,CAAG,IAAI,IAAI,CAAA;AACX,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,OAChB,CAAA;AACD,MAAA,GAAA,CAAI,GAAG,KAAK,CAAE,CAAA,IAAA,CAAK,OAAO,CAAA;AAAA,KAC3B,CAAA;AAAA,GACF,CAAA;AACH;;AC7BO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAA,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,IAAA,IAAI,QAAW,GAAA,KAAA;AACf,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAW,QAAA,GAAA,IAAA;AACX,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA;AACX,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACbgB,SAAA,OAAA,CACd,OACA,OACA,EAAA;AACA,EAAO,OAAA,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,IAAA,MAAM,OAAO,IAAQ,EAAA;AACrB,IAAA,MAAM,KAAK,gBAAiB,EAAA;AAE5B,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,EAAA,CAAG,OAAQ,EAAA;AACX,MAAM,MAAA,IAAA,GAAO,QAAQ,CAAC,CAAA;AACtB,MAAA,EAAA,CAAG,IAAI,IAAI,CAAA;AACX,MAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AACf,MAAA,IAAA,CAAK,MAAM,MAAM,CAAA;AAAA,KAClB,CAAA;AACD,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAEjB,IAAA,OAAO,MAAM;AACX,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AAAA,GACD,CAAA;AACH;;ACrBO,SAAS,SAAY,KAAuB,EAAA;AACjD,EAAO,OAAA,OAAA,CAAa,CAAC,OAAA,EAAS,MAAW,KAAA;AACvC,IAAA,MAAM,SAAc,EAAC;AACrB,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACb,MAAQ,OAAA,CAAA,MAAA,CAAO,OAAO,CAAA;AAAA,KACvB,CAAA;AAAA,GACF,CAAA;AACH;;ACTO,SAAS,OAAU,IAAyB,EAAA;AACjD,EAAM,MAAA,KAAA,GAAQ,cAAc,IAAI,CAAA;AAChC,EAAO,OAAA,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACrC,IAAA,KAAA,CAAM,MAAM,MAAM,CAAA;AAClB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAChB,QAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,OACX,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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/Chainable.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/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/Process.ts","../src/components/Sequence.ts","../src/components/Stream.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\n public add<R>(e: R): R {\n this.destructors.push(Destroyable(e));\n return e;\n }\n\n public destroy() {\n this.destructors.forEach((d) => d.destroy());\n this.destructors.length = 0;\n return 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 */\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 */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n return new MessageImpl<T>(executor);\n}\n\n/**\n * Reactive message implementation\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 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 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 { ChainableType } from \"types/ChainableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Helps to connect Different\n * message and source\n */\nexport function Chainable<T>(src: SourceType<T>) {\n return new ChainableImpl(src);\n}\n\nexport class ChainableImpl<T> implements ChainableType<T> {\n public constructor(private src: SourceType<T>) {}\n\n public chain($m: MessageType<T>) {\n $m.then(this.src.use.bind(this.src));\n return this;\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 { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object\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","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 { Message } from \"base/Message\";\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], R>,\n) {\n const $base = ActualMessage(base);\n return Message<R>(function AppliedImpl(resolve, reject) {\n $base.catch(reject);\n $base.then((v) => {\n resolve(applier(v));\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 { isFilled, isSource } from \"helpers/guards\";\nimport { Primitive } from \"components/Primitive\";\nimport { ChainableType } from \"types/ChainableType\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\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>, ChainableType<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(resolved);\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 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 { 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","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 { Message } from \"base/Message\";\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>(msg: MaybeMessage<ContextType>) {\n const $msg = ActualMessage(msg);\n return Message<T>((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}\n","import { ActualMessage } from \"base/ActualMessage\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Connects an external message to an RPC message chain\n */\nexport function ContextChain(base: MaybeMessage) {\n const $base = ActualMessage(base);\n return (context: ContextType) => {\n if (!context.result) {\n throw new Error(\"ContextChain did not find result in rpc 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 RPC 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 { 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 { 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 { 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"],"names":["__publicField","emitter","eventName","Map"],"mappings":"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"}
@@ -96,11 +96,11 @@ type MessageExecutorType<T> = (resolve: ConstructorType<[T]>, reject: Constructo
96
96
  * A message created from an executor function.
97
97
  * The executor function can return a message destruction function.
98
98
  */
99
- declare function Message<T>(executor: MessageExecutorType<T>): MessageRx<T>;
99
+ declare function Message<T>(executor: MessageExecutorType<T>): MessageImpl<T>;
100
100
  /**
101
101
  * Reactive message implementation
102
102
  */
103
- declare class MessageRx<T> implements MessageType<T>, DestroyableType {
103
+ declare class MessageImpl<T> implements MessageType<T>, DestroyableType {
104
104
  private executor;
105
105
  private rejections;
106
106
  private dc;
@@ -113,7 +113,7 @@ declare class MessageRx<T> implements MessageType<T>, DestroyableType {
113
113
  /**
114
114
  * Create local copy of source what can be destroyed
115
115
  */
116
- declare function Local<T>(_base: MaybeMessage<T>): MessageRx<T>;
116
+ declare function Local<T>(_base: MaybeMessage<T>): MessageImpl<T>;
117
117
 
118
118
  /**
119
119
  * Base message source object
@@ -132,12 +132,12 @@ declare class MessageSourceImpl<T> implements MessageSourceType<T> {
132
132
  * A component that, on each access, returns a new instance
133
133
  * of a reference type based on the constructor function
134
134
  */
135
- declare function New<T>(construct: ConstructorType<[], T>): MessageRx<T>;
135
+ declare function New<T>(construct: ConstructorType<[], T>): MessageImpl<T>;
136
136
 
137
137
  /**
138
138
  * Helps convert a value into a message
139
139
  */
140
- declare function Of<T>(value: T): MessageRx<T>;
140
+ declare function Of<T>(value: T): MessageImpl<T>;
141
141
 
142
142
  /**
143
143
  * Handles rejections collection
@@ -176,25 +176,25 @@ type ExtractTypesFromArrayS<T extends MaybeMessage<any>[]> = {
176
176
  * value, the updated array with the new value
177
177
  * will be emitted by All.
178
178
  */
179
- declare function All<const T extends MaybeMessage[]>(...messages: T): MessageRx<ExtractTypesFromArrayS<T>>;
179
+ declare function All<const T extends MaybeMessage[]>(...messages: T): MessageImpl<ExtractTypesFromArrayS<T>>;
180
180
 
181
181
  /**
182
182
  * A message that emits values received from
183
183
  * any of its bound messages
184
184
  */
185
- declare function Any<const T>(...messages: MaybeMessage<T>[]): MessageRx<T>;
185
+ declare function Any<const T>(...messages: MaybeMessage<T>[]): MessageImpl<T>;
186
186
 
187
187
  /**
188
188
  * An message that applies a function
189
189
  * to the value of the base message
190
190
  */
191
- declare function Applied<const T, R>(base: MaybeMessage<T>, applier: ConstructorType<[T], R>): MessageRx<R>;
191
+ declare function Applied<const T, R>(base: MaybeMessage<T>, applier: ConstructorType<[T], R>): MessageImpl<R>;
192
192
 
193
193
  /**
194
194
  * Allows applying variables from an message that passes an array to a function,
195
195
  * where each element of the array will be passed as a separate argument
196
196
  */
197
- declare function AppliedDestructured<const T extends any[], R>($base: MaybeMessage<T>, applier: ConstructorType<any[], R>): MessageRx<R>;
197
+ declare function AppliedDestructured<const T extends any[], R>($base: MaybeMessage<T>, applier: ConstructorType<any[], R>): MessageImpl<R>;
198
198
 
199
199
  /**
200
200
  * Helps represent an message as a primitive type, which can be useful
@@ -250,14 +250,14 @@ type Last<T extends readonly any[]> = T extends readonly [...infer _, infer L] ?
250
250
  * emit a value again after the overall Chain response was already returned,
251
251
  * then Chain emits again with the value of the last message.
252
252
  */
253
- declare function Chain<T extends readonly MessageType[]>(...messages: T): MessageRx<MessageTypeValue<Last<T>>>;
253
+ declare function Chain<T extends readonly MessageType[]>(...messages: T): MessageImpl<MessageTypeValue<Last<T>>>;
254
254
 
255
255
  /**
256
256
  * Component what helps to compute
257
257
  * poor functions, and represent result
258
258
  * as message
259
259
  */
260
- declare function Computed<const T extends MaybeMessage<any>[], R>(applier: ConstructorType<any[], R>, ...messages: T): MessageRx<R>;
260
+ declare function Computed<const T extends MaybeMessage<any>[], R>(applier: ConstructorType<any[], R>, ...messages: T): MessageImpl<R>;
261
261
 
262
262
  /**
263
263
  * Type for passing action requirements
@@ -276,7 +276,7 @@ interface ContextType extends Record<string, any> {
276
276
  * ContextType, the list of transport should be defined via
277
277
  * the Context.transport map object
278
278
  */
279
- declare function Context<T>(msg: MaybeMessage<ContextType>): MessageRx<T>;
279
+ declare function Context<T>(msg: MaybeMessage<ContextType>): MessageImpl<T>;
280
280
  declare namespace Context {
281
281
  var transport: Map<any, ConstructorType<[ContextType]>>;
282
282
  }
@@ -290,7 +290,7 @@ declare function ContextChain(base: MaybeMessage): (context: ContextType) => voi
290
290
  * Message for the arrival of a specific RPC message
291
291
  * for specific transport
292
292
  */
293
- declare function ContextOf(transport: string): MessageRx<ContextType>;
293
+ declare function ContextOf(transport: string): MessageImpl<ContextType>;
294
294
 
295
295
  interface EmptyType {
296
296
  empty(): MessageType<boolean>;
@@ -316,7 +316,7 @@ type ExecutorApplier<T> = (executor: (v: T) => void) => (v: T) => void;
316
316
  * and returns the same value transfer function for the resolver
317
317
  * Useful for applying functions like debounced or throttle
318
318
  */
319
- declare function ExecutorApplied<T>($base: MessageType<T>, applier: ExecutorApplier<T>): MessageRx<T>;
319
+ declare function ExecutorApplied<T>($base: MessageType<T>, applier: ExecutorApplier<T>): MessageImpl<T>;
320
320
 
321
321
  /**
322
322
  * Filters values from the source message based on a predicate function,
@@ -327,7 +327,7 @@ declare function Filtered<T>(base: MaybeMessage<T>, predicate: ConstructorType<[
327
327
  /**
328
328
  * Message what freezes first known value
329
329
  */
330
- declare function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>): MessageRx<T>;
330
+ declare function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>): MessageImpl<T>;
331
331
 
332
332
  /**
333
333
  * A message derived from event with a different
@@ -335,7 +335,7 @@ declare function Freeze<T>($base: MessageType<T>, $invalidate?: MessageType<T>):
335
335
  * Allows attaching a custom handler to an existing event source
336
336
  * and presenting it as a silentium message
337
337
  */
338
- declare function FromEvent<T>(emitter: MaybeMessage<any>, eventName: MaybeMessage<string>, subscribeMethod: MaybeMessage<string>, unsubscribeMethod?: MaybeMessage<string>): MessageRx<T>;
338
+ declare function FromEvent<T>(emitter: MaybeMessage<any>, eventName: MaybeMessage<string>, subscribeMethod: MaybeMessage<string>, unsubscribeMethod?: MaybeMessage<string>): MessageImpl<T>;
339
339
 
340
340
  /**
341
341
  * A component that allows creating linked objects of information and its owner
@@ -359,27 +359,27 @@ declare class LateImpl<T> implements MessageSourceType<T> {
359
359
  * Component that applies an info object constructor to each data item,
360
360
  * producing an information source with new values
361
361
  */
362
- declare function Map$1<T, TG>(base: MaybeMessage<T[]>, target: ConstructorType<[any], MessageType<TG>>): MessageRx<TG[]>;
362
+ declare function Map$1<T, TG>(base: MaybeMessage<T[]>, target: ConstructorType<[any], MessageType<TG>>): MessageImpl<TG[]>;
363
363
 
364
364
  /**
365
365
  * Limits the number of values from the information source
366
366
  * to a single value - once the first value is emitted, no more
367
367
  * values are delivered from the source
368
368
  */
369
- declare function Once<T>($base: MessageType<T>): MessageRx<T>;
369
+ declare function Once<T>($base: MessageType<T>): MessageImpl<T>;
370
370
 
371
- declare function Process<T, R = unknown>($base: MessageType<T>, builder: ConstructorType<[T], MessageType<R>>): MessageRx<R>;
371
+ declare function Process<T, R = unknown>($base: MessageType<T>, builder: ConstructorType<[T], MessageType<R>>): MessageImpl<R>;
372
372
 
373
373
  /**
374
374
  * Creates a sequence that accumulates all values from the source into an array,
375
375
  * emitting the growing array with each new value.
376
376
  */
377
- declare function Sequence<T>($base: MessageType<T>): MessageRx<T[]>;
377
+ declare function Sequence<T>($base: MessageType<T>): MessageImpl<T[]>;
378
378
 
379
379
  /**
380
380
  * Component that receives a data array and yields values one by one
381
381
  */
382
- declare function Stream<T>(base: MaybeMessage<T[]>): MessageRx<T>;
382
+ declare function Stream<T>(base: MaybeMessage<T[]>): MessageImpl<T>;
383
383
 
384
384
  declare function ensureFunction(v: unknown, label: string): void;
385
385
  declare function ensureMessage(v: unknown, label: string): void;
@@ -405,4 +405,5 @@ declare function isDestroyable(o: unknown): o is DestroyableType;
405
405
  */
406
406
  declare function isDestroyed(o: unknown): o is DestroyedType;
407
407
 
408
- export { ActualMessage, All, Any, Applied, AppliedDestructured, Catch, Chain, Chainable, ChainableImpl, Computed, type ConstructorType, Context, ContextChain, ContextOf, type ContextType, DestroyContainer, DestroyContainerImpl, Destroyable, DestroyableImpl, type DestroyableType, type DestroyedType, Empty, EmptyImpl, ExecutorApplied, Filtered, Freeze, FromEvent, Late, LateImpl, Local, Map$1 as Map, type MaybeMessage, Message, type MessageExecutorType, MessageRx, MessageSource, MessageSourceImpl, type MessageSourceType, type MessageType, type MessageTypeValue, New, Nothing, Of, Once, Primitive, PrimitiveImpl, Process, Rejections, ResetSilenceCache, Sequence, Shared, SharedImpl, Silence, type SourceType, Stream, Void, ensureFunction, ensureMessage, isDestroyable, isDestroyed, isFilled, isMessage, isSource };
408
+ export { ActualMessage, All, Any, Applied, AppliedDestructured, Catch, Chain, Chainable, ChainableImpl, Computed, Context, ContextChain, ContextOf, DestroyContainer, DestroyContainerImpl, Destroyable, DestroyableImpl, Empty, EmptyImpl, ExecutorApplied, Filtered, Freeze, FromEvent, Late, LateImpl, Local, Map$1 as Map, Message, MessageImpl, MessageSource, MessageSourceImpl, New, Nothing, Of, Once, Primitive, PrimitiveImpl, Process, Rejections, ResetSilenceCache, Sequence, Shared, SharedImpl, Silence, Stream, Void, ensureFunction, ensureMessage, isDestroyable, isDestroyed, isFilled, isMessage, isSource };
409
+ export type { ConstructorType, ContextType, DestroyableType, DestroyedType, MaybeMessage, MessageExecutorType, MessageSourceType, MessageType, MessageTypeValue, SourceType };
package/dist/silentium.js CHANGED
@@ -110,9 +110,9 @@ var __defProp$5 = Object.defineProperty;
110
110
  var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
111
111
  var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
112
112
  function Message(executor) {
113
- return new MessageRx(executor);
113
+ return new MessageImpl(executor);
114
114
  }
115
- class MessageRx {
115
+ class MessageImpl {
116
116
  constructor(executor) {
117
117
  this.executor = executor;
118
118
  __publicField$5(this, "rejections", new Rejections());
@@ -666,5 +666,5 @@ function Stream(base) {
666
666
  });
667
667
  }
668
668
 
669
- export { ActualMessage, All, Any, Applied, AppliedDestructured, Catch, Chain, Chainable, ChainableImpl, Computed, Context, ContextChain, ContextOf, DestroyContainer, DestroyContainerImpl, Destroyable, DestroyableImpl, Empty, EmptyImpl, ExecutorApplied, Filtered, Freeze, FromEvent, Late, LateImpl, Local, Map$1 as Map, Message, MessageRx, MessageSource, MessageSourceImpl, New, Nothing, Of, Once, Primitive, PrimitiveImpl, Process, Rejections, ResetSilenceCache, Sequence, Shared, SharedImpl, Silence, Stream, Void, ensureFunction, ensureMessage, isDestroyable, isDestroyed, isFilled, isMessage, isSource };
669
+ export { ActualMessage, All, Any, Applied, AppliedDestructured, Catch, Chain, Chainable, ChainableImpl, Computed, Context, ContextChain, ContextOf, DestroyContainer, DestroyContainerImpl, Destroyable, DestroyableImpl, Empty, EmptyImpl, ExecutorApplied, Filtered, Freeze, FromEvent, Late, LateImpl, Local, Map$1 as Map, Message, MessageImpl, MessageSource, MessageSourceImpl, New, Nothing, Of, Once, Primitive, PrimitiveImpl, Process, Rejections, ResetSilenceCache, Sequence, Shared, SharedImpl, Silence, Stream, Void, ensureFunction, ensureMessage, isDestroyable, isDestroyed, isFilled, isMessage, isSource };
670
670
  //# sourceMappingURL=silentium.js.map