{"version":3,"file":"silentium.mjs","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/Actual.ts","../src/base/Connected.ts","../src/base/Local.ts","../src/base/Locals.ts","../src/base/New.ts","../src/base/Source.ts","../src/base/SourceComputed.ts","../src/base/Void.ts","../src/components/All.ts","../src/components/Any.ts","../src/components/Applied.ts","../src/components/Primitive.ts","../src/components/Shared.ts","../src/components/Late.ts","../src/components/Catch.ts","../src/components/Chain.ts","../src/components/Destructured.ts","../src/components/Computed.ts","../src/components/Context.ts","../src/components/ContextChain.ts","../src/components/ContextOf.ts","../src/components/Default.ts","../src/components/Empty.ts","../src/components/ExecutorApplied.ts","../src/components/Filtered.ts","../src/components/Fold.ts","../src/components/Freeze.ts","../src/components/FromEvent.ts","../src/components/Lazy.ts","../src/components/Map.ts","../src/components/Once.ts","../src/components/Piped.ts","../src/components/Process.ts","../src/components/Promisify.ts","../src/components/Race.ts","../src/components/Sequence.ts","../src/components/Stream.ts","../src/components/Trackable.ts","../src/components/Value.ts","../src/helpers/DevTools.ts"],"sourcesContent":["import { DestroyableType, DestroyedType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\n/**\n * Checks that the value is neither undefined nor null\n */\nexport const isFilled = <T>(\n  value?: T,\n): value is Exclude<T, null | undefined> => {\n  return value !== undefined && value !== null;\n};\n\n/**\n * Checks that the object is an message\n */\nexport function isMessage(o: unknown): o is MessageType {\n  return (\n    o !== null &&\n    typeof o === \"object\" &&\n    \"then\" in o &&\n    typeof (o as any).then === \"function\"\n  );\n}\n\n/**\n * Checks that the object is an message\n */\nexport function isSource(o: unknown): o is SourceType {\n  return (\n    o !== null &&\n    typeof o === \"object\" &&\n    \"use\" in o &&\n    typeof (o as any).use === \"function\"\n  );\n}\n\n/**\n * Checks that the object is destroyable\n */\nexport function isDestroyable(o: unknown): o is DestroyableType {\n  return (\n    o !== null &&\n    typeof o === \"object\" &&\n    \"destroy\" in o &&\n    typeof (o as any).destroy === \"function\"\n  );\n}\n\n/**\n * Checks that the object can indicate whether it has been destroyed or not\n */\nexport function isDestroyed(o: unknown): o is DestroyedType {\n  return (\n    o !== null &&\n    typeof o === \"object\" &&\n    \"destroyed\" in o &&\n    typeof (o as any).destroyed === \"function\"\n  );\n}\n","import { isDestroyable } from \"helpers/guards\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * Allows creating an object that definitely has a destructor,\n * useful to avoid creating unnecessary conditions\n */\nexport function Destroyable<T>(base: T) {\n  return new DestroyableImpl(base);\n}\n\nexport class DestroyableImpl<T> implements DestroyableType {\n  public constructor(private base: T) {}\n\n  public destroy(): this {\n    if (isDestroyable(this.base)) {\n      this.base.destroy();\n    }\n\n    if (typeof this.base === \"function\") {\n      this.base();\n    }\n\n    return this;\n  }\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { DestroyableType } from \"types/DestroyableType\";\n\n/**\n * An object that allows collecting all disposable objects and\n * disposing them later all together\n */\nexport function DestroyContainer() {\n  return new DestroyContainerImpl();\n}\n\nexport class DestroyContainerImpl implements DestroyableType {\n  private destructors: DestroyableType[] = [];\n  private _destroyed = false;\n\n  /**\n   * Add one destroyable\n   * @param e\n   * @returns\n   */\n  public add<R>(e: R): R {\n    this.destructors.push(Destroyable(e));\n    return e;\n  }\n\n  /**\n   * Add many destroyable objects\n   * @param destroyableList\n   * @returns\n   */\n  public many(destroyableList: unknown[]) {\n    const destroyMany = (d: unknown) => {\n      this.add(d);\n    };\n    destroyableList.forEach(destroyMany);\n    return this;\n  }\n\n  public destroy() {\n    this._destroyed = true;\n    this.destructors.forEach(function dcDestroy(d) {\n      d.destroy();\n    });\n    this.destructors.length = 0;\n    return this;\n  }\n\n  public destroyed() {\n    return this._destroyed;\n  }\n\n  public destructor() {\n    return this.destroy.bind(this);\n  }\n}\n","import { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * Handles rejections collection\n */\nexport function Rejections() {\n  return new RejectionsImpl();\n}\n\n/**\n * Implementation of rejections collection\n */\nexport class RejectionsImpl {\n  private catchers: ConstructorType<[unknown]>[] = [];\n  private lastRejectReason: unknown = null;\n\n  public static globalCatch?: ConstructorType<[unknown]>;\n\n  public reject: (reason: unknown) => void;\n\n  public constructor() {\n    const rejectionsRejectHandler = (reason: unknown) => {\n      this.lastRejectReason = reason;\n      this.catchers.forEach(function rejectionsRejectCatchers(catcher) {\n        catcher(reason);\n      });\n      if (RejectionsImpl.globalCatch) {\n        RejectionsImpl.globalCatch(reason);\n      } else if (this.catchers.length === 0) {\n        console.error([\"Unhandled Message Rejection:\", reason].join(\" \"));\n      }\n    };\n    this.reject = rejectionsRejectHandler;\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\n * Everything else is not silence\n *\n * @url https://silentium.pw/article/silence/view\n */\nexport function Silence<T>(resolve: ConstructorType<[T]>) {\n  let lastValue: T | undefined;\n  return function SilenceImpl(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\n/**\n * Silence rule when new value comes\n */\nexport function SilenceUse() {\n  let lastValue: unknown = null;\n  return {\n    use(value: unknown, cb: (v: unknown) => unknown) {\n      if (lastValue === null) {\n        lastValue = value;\n        cb(value);\n        return;\n      }\n      if (lastValue !== value) {\n        lastValue = value;\n        cb(value);\n        return;\n      }\n      lastValue = value;\n      return;\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  name?: string,\n) => MessageType | (() => void) | void;\n\n/**\n * A message created from an executor function.\n * The executor function can return a message destruction function.\n *\n * @url https://silentium.pw/article/message/view\n */\nexport function Message<T>(executor: MessageExecutorType<T>) {\n  return new MessageImpl<T>(executor);\n}\n\n/**\n * Reactive message implementation\n *\n * @url https://silentium.pw/article/message/view\n */\nexport class MessageImpl<T> implements MessageType<T>, DestroyableType {\n  private myName = \"unknown\";\n\n  public constructor(\n    private executor: MessageExecutorType<T>,\n    private rejections = Rejections(),\n    private dc = DestroyContainer(),\n  ) {\n    ensureFunction(executor, \"Message: executor\");\n  }\n\n  public then(\n    resolve: ConstructorType<[T]>,\n    rejected?: ConstructorType<[unknown]>,\n  ) {\n    if (this.dc.destroyed()) {\n      return this;\n    }\n    const newMessageRejections = Rejections();\n    if (rejected) {\n      newMessageRejections.catch(rejected);\n    }\n    const newMessageDc = DestroyContainer();\n    const newMessage = new MessageImpl(\n      this.executor,\n      newMessageRejections,\n      newMessageDc,\n    );\n    newMessage.catch(this.rejections.reject);\n    this.dc.add(newMessage);\n    try {\n      const mbDestructor = this.executor(\n        Silence(function messageResolver(value: T) {\n          if (!newMessageDc.destroyed()) {\n            resolve(value);\n          }\n        }),\n        newMessageRejections.reject,\n        this.myName,\n      );\n      newMessageDc.add(mbDestructor);\n    } catch (e: any) {\n      newMessageRejections.reject(e);\n    }\n    return newMessage;\n  }\n\n  public catch(rejected: ConstructorType<[unknown]>) {\n    if (this.dc.destroyed()) {\n      return this;\n    }\n    this.rejections.catch(rejected);\n    return this;\n  }\n\n  public destroy() {\n    try {\n      this.dc.destroy();\n      this.rejections.destroy();\n    } catch (e) {\n      this.rejections.reject(e);\n    }\n    return this;\n  }\n\n  public destroyed() {\n    return this.dc.destroyed();\n  }\n\n  public name(newName: string) {\n    this.myName = newName;\n    return this;\n  }\n}\n","import { Message } from \"base/Message\";\n\n/**\n * Helps convert a value into a message\n */\nexport function Of<T>(value: T) {\n  return Message<T>(function OfImpl(r) {\n    r(value);\n  });\n}\n","import { Of } from \"base/Of\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * A function that helps to ensure that\n * the message is indeed a message object\n * and not just a value\n *\n * @url https://silentium.pw/article/actual/view\n */\nexport function Actual<T>(message: MaybeMessage<T>): MessageType<T> {\n  return isMessage(message) ? message : Of(message);\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * First message - is main\n * others will be destroyed when first\n * will be destroyed\n *\n * @url https://silentium.pw/article/connected/view\n */\nexport function Connected<T>(main: MessageType, ...m: MaybeMessage[]) {\n  const dc = DestroyContainer();\n  dc.add(main);\n  dc.many(m);\n  return Message<T>(function ConnectedImpl(resolve, reject) {\n    (main as MessageType<T>).catch(reject).then(resolve);\n    m.forEach(function connectedMessagesForEach(other) {\n      if (isMessage(other)) {\n        other.catch(reject);\n      }\n    });\n    return dc.destructor();\n  });\n}\n","import { Actual } from \"base/Actual\";\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 = Actual(_base);\n  return Message<T>(function LocalImpl(resolve, reject) {\n    let destroyed = false;\n    $base.then(function localBaseSub(v) {\n      if (!destroyed) {\n        resolve(v);\n      }\n    });\n    $base.catch(reject);\n    return function localDestructor() {\n      destroyed = true;\n    };\n  });\n}\n","import { Local } from \"base/Local\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nexport function Props(...messages: MaybeMessage[]) {\n  return messages.map(function propsMap(m) {\n    return Local(m);\n  });\n}\n","import { Message } from \"base/Message\";\nimport { ConstructorType } from \"types/ConstructorType\";\n\n/**\n * A component that, on each access, returns a new instance\n * of a reference type based on the constructor function\n *\n * @url https://silentium.pw/article/new-component/view\n */\nexport function New<T>(construct: ConstructorType<[], T>) {\n  return Message<T>(function NewImpl(resolve) {\n    resolve(construct());\n  });\n}\n","import { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { SilenceUse } from \"base/Silence\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * Base message source object, the message what can\n * accept new values\n *\n * @url https://silentium.pw/article/source/view\n */\nexport function Source<T>(\n  messageExecutor: MessageExecutorType<T>,\n  sourceExecutor: ConstructorType<[T]>,\n) {\n  return new SourceImpl(messageExecutor, sourceExecutor);\n}\n\nexport class SourceImpl<T> implements MessageSourceType<T> {\n  private message: MessageImpl<T>;\n  private silenceUse: ReturnType<typeof SilenceUse>;\n\n  public constructor(\n    messageExecutor: MessageExecutorType<T>,\n    private sourceExecutor: ConstructorType<[T]>,\n  ) {\n    this.message = Message(messageExecutor);\n    this.silenceUse = SilenceUse();\n  }\n\n  public use(value: T): this {\n    if (!this.message.destroyed()) {\n      const sourceSilenceUse = (v: unknown) => {\n        this.sourceExecutor(v as T);\n      };\n      this.silenceUse.use(value, sourceSilenceUse);\n    }\n    return this;\n  }\n\n  public then(resolved: ConstructorType<[T]>): this {\n    this.message.then(resolved);\n    return this;\n  }\n\n  public catch(rejected: ConstructorType<[unknown]>): this {\n    this.message.catch(rejected);\n    return this;\n  }\n\n  public destroy() {\n    this.message.destroy();\n    return this;\n  }\n\n  public chain(m: MessageType<T>) {\n    return m.then(this.use.bind(this));\n  }\n}\n","import { Source } from \"base/Source\";\nimport { MessageType } from \"types/MessageType\";\nimport { SourceType } from \"types/SourceType\";\n\nexport function SourceComputed<T>(\n  message: MessageType<T>,\n  source: SourceType<T>,\n) {\n  return Source<T>(\n    function sourceComputedMsgExecutor(resolve, reject) {\n      return message.then(resolve).catch(reject);\n    },\n    function sourceComputedSrcExecutor(v) {\n      source.use(v);\n    },\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 { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\ntype ExtractTypeS<T> = T extends MaybeMessage<infer U> ? U : never;\n\ntype ExtractTypesFromArrayS<T extends MaybeMessage<any>[]> = {\n  [K in keyof T]: ExtractTypeS<T[K]>;\n};\n\nconst isAllFilled = (keysFilled: Set<string>, keysKnown: Set<string>) => {\n  return keysFilled.size > 0 && keysFilled.size === keysKnown.size;\n};\n\n/**\n * A message that represents values from\n * all provided messages as an array.\n * When all messages emit their values,\n * the combined value will be returned.\n * If at least one message later emits a new\n * value, the updated array with the new value\n * will be emitted by All.\n *\n * @url https://silentium.pw/article/all-component/view\n */\nexport function All<const T extends MaybeMessage[]>(...messages: T) {\n  const $messages = messages.map(Actual);\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(function allMessagesMap(m, key) {\n      m.catch(reject);\n      m.then(function allMessageSub(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 { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * A message that emits values received from\n * any of its bound messages\n *\n * @url https://silentium.pw/article/any-component/view\n */\nexport function Any<const T>(...messages: MaybeMessage<T>[]) {\n  const $messages = messages.map(Actual);\n  return Message<T>(function AnyImpl(resolve, reject) {\n    $messages.forEach(function anyMessagesSub(message) {\n      message.catch(reject);\n      message.then(resolve);\n    });\n  });\n}\n","import { Actual } from \"base/Actual\";\nimport { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { isMessage } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * An message that applies a function\n * to the value of the base message\n *\n * @url https://silentium.pw/article/applied/view\n */\nexport function Applied<const T, R>(\n  base: MaybeMessage<T>,\n  applier: ConstructorType<[T], MaybeMessage<R>>,\n) {\n  const $base = Actual(base);\n  return Message<R>(function AppliedImpl(resolve, reject) {\n    const dc = DestroyContainer();\n    $base.catch(reject);\n    $base.then(function appliedBaseSub(v) {\n      const result = applier(v);\n      if (isMessage(result)) {\n        dc.destroy();\n        dc.add(result);\n        result.catch(reject).then(resolve);\n      } else {\n        resolve(result);\n      }\n    });\n  });\n}\n","import { 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 *\n * @url https://silentium.pw/article/primitive/view\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      const primitiveBaseSub = (v: T) => {\n        this.theValue = v;\n      };\n      this.$base.then(primitiveBaseSub);\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 { Message, MessageExecutorType, MessageImpl } from \"base/Message\";\nimport { SilenceUse } from \"base/Silence\";\nimport { Primitive } from \"components/Primitive\";\nimport { isDestroyable, isFilled, isSource } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType, SourceType } from \"types/SourceType\";\n\n/**\n * An information object that helps multiple owners access\n * a single another information object\n *\n * @url https://silentium.pw/article/shared/view\n */\nexport function Shared<T>($base: MessageType<T> | MessageSourceType<T>) {\n  return new SharedImpl<T>($base);\n}\n\nexport class SharedImpl<T> implements MessageSourceType<T> {\n  private resolver = function sharedImplResolver(this: SharedImpl<T>, v: T) {\n    this.lastV = v;\n    this.resolvers.forEach(function sharedImplResolversForEach(r) {\n      r(v);\n    });\n  }.bind(this);\n  private lastV: T | undefined;\n  private resolvers = new Set<ConstructorType<[T]>>();\n  private source?: SourceType<T>;\n  private isDestroyed = false;\n  private silenceUse: ReturnType<typeof SilenceUse>;\n\n  public constructor(private $base: MessageType<T> | MessageSourceType<T>) {\n    if (isSource($base)) {\n      this.source = $base;\n    }\n    this.silenceUse = SilenceUse();\n  }\n\n  public then(\n    resolved: ConstructorType<[T]>,\n    rejected?: ConstructorType<[unknown]>,\n  ): MessageImpl<T> {\n    const sharedMsgExecutor: MessageExecutorType<T> = (res, rej) => {\n      this.resolvers.add(res);\n      if (this.resolvers.size === 1) {\n        this.$base.then(this.resolver, rej);\n      } else if (isFilled(this.lastV)) {\n        res(this.lastV);\n      }\n      return function sharedMsgDestructor(this: SharedImpl<T>) {\n        this.resolvers.delete(res);\n      }.bind(this);\n    };\n    const msg$ = Message<T>(sharedMsgExecutor).then(resolved);\n\n    if (rejected) {\n      msg$.catch(rejected);\n    }\n\n    return msg$;\n  }\n\n  public use(value: T) {\n    const sharedUse = (v: unknown) => {\n      if (this.source) {\n        this.source.use(v as T);\n      } else {\n        this.resolver(v as T);\n      }\n    };\n    this.silenceUse.use(value, sharedUse);\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.isDestroyed = true;\n    this.resolvers.clear();\n    if (isDestroyable(this.$base)) {\n      this.$base.destroy();\n    }\n    return this;\n  }\n\n  public destroyed() {\n    return this.isDestroyed;\n  }\n\n  public value() {\n    return Primitive(this);\n  }\n\n  public chain(m: MessageType<T>) {\n    return m.then(this.use.bind(this));\n  }\n}\n","import { Rejections } from \"base/Rejections\";\nimport { Silence, SilenceUse } from \"base/Silence\";\nimport { Shared } from \"components/Shared\";\nimport { isFilled } from \"helpers/guards\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\nimport { MessageSourceType } from \"types/SourceType\";\n\n/**\n * A component that allows creating linked objects of information and its owner\n * in such a way that if a new value is assigned to the owner, this value\n * will become the value of the linked information source\n *\n * @url https://silentium.pw/article/late/view\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 = 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  private silenceUse: ReturnType<typeof SilenceUse>;\n\n  public constructor(private v?: T) {\n    this.silenceUse = SilenceUse();\n  }\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    const silenceUseLateExecutor = (v: unknown) => {\n      this.v = v as T;\n      this.notify();\n    };\n    this.silenceUse.use(value, silenceUseLateExecutor);\n    return this;\n  }\n\n  public catch(rejected: ConstructorType<[unknown]>) {\n    this.rejections.catch(rejected);\n    return this;\n  }\n\n  public chain(m: MessageType<T>) {\n    return m.then(this.use.bind(this));\n  }\n\n  public destroy() {\n    this.lateR = null;\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 caught\n * inside another message\n *\n * @url https://silentium.pw/article/catch/view\n */\nexport function Catch<T>($base: MessageType) {\n  const rejections = Rejections();\n  $base.catch(rejections.reject);\n  const $error = Late<T>();\n  rejections.catch(function catchErrorSub(e) {\n    $error.use(e as T);\n  });\n  return $error;\n}\n","import { Actual } from \"base/Actual\";\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(Actual);\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(function chainMessageSub(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 { Applied } from \"components/Applied\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Allows applying variables from an message that passes an array to a function,\n * where each element of the array will be passed as a separate argument\n *\n * @url https://silentium.pw/article/destructured/view\n */\nexport function Destructured<const T extends any[], R>(\n  $base: MaybeMessage<T>,\n  applier: ConstructorType<any[], R>,\n) {\n  return Applied($base, function DestructuredImpl(args) {\n    return applier(...args);\n  });\n}\n","import { All } from \"components/All\";\nimport { Destructured } from \"components/Destructured\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Component what helps to compute\n * poor functions, and represent result\n * as message\n *\n * @url https://silentium.pw/article/computed/view\n */\nexport function Computed<const T extends MaybeMessage<any>[], R>(\n  applier: ConstructorType<any[], R>,\n  ...messages: T\n) {\n  return Destructured(All(...messages), applier);\n}\n","import { Actual } from \"base/Actual\";\nimport { Source } from \"base/Source\";\nimport { All } from \"components/All\";\nimport { Destructured } from \"components/Destructured\";\nimport { Primitive } from \"components/Primitive\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { ContextType } from \"types/ContextType\";\nimport { MaybeMessage } from \"types/MessageType\";\n\nContext.transport = new Map<any, ConstructorType<[ContextType]>>();\n\n/**\n * The ability to call an external system through\n * sending a message in a standardized format\n * ContextType, the list of transport should be defined via\n * the Context.transport map object\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function Context<T>(\n  name: MaybeMessage<string | symbol>,\n  params: MaybeMessage<ContextType[\"params\"]> = {},\n) {\n  const $msg = Destructured(\n    All(Actual(name), Actual(params)),\n    function contextMsgNormalize(name, params) {\n      return {\n        transport: name,\n        params,\n        result: undefined,\n        error: undefined,\n      } as ContextType;\n    },\n  );\n  return Source<T>(\n    function contextMsgImpl(resolve, reject) {\n      $msg.then(function contextMsgSub(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    function contextSrcImpl(value) {\n      const msg = Primitive($msg).primitive();\n      if (msg === null) {\n        throw new Error(\"Context: sourcing impossible message not existed\");\n      }\n      const transport = Context.transport.get(msg.transport);\n      if (transport === undefined) {\n        throw new Error(`Context: sourcing unknown transport ${msg.transport}`);\n      }\n      transport({\n        ...msg,\n        value,\n      });\n    },\n  );\n}\n","import { Actual } from \"base/Actual\";\nimport { MaybeMessage } from \"types/MessageType\";\nimport { ContextType } from \"types/ContextType\";\nimport { isSource } from \"helpers/guards\";\n\n/**\n * Connects an external message to an Context message chain\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextChain(base: MaybeMessage) {\n  const $base = Actual(base);\n  return function contextChainHandler(context: ContextType) {\n    if (context.value && isSource(base)) {\n      base.use(context.value);\n      return;\n    }\n    if (!context.result) {\n      throw new Error(\"ContextChain did not find result field in message\");\n    }\n    $base.then(context.result);\n  };\n}\n","import { Message } from \"base/Message\";\nimport { Context } from \"components/Context\";\nimport { Late } from \"components/Late\";\nimport { ContextType } from \"types/ContextType\";\n\n/**\n * Message for the arrival of a specific Context message\n * for specific transport\n *\n * @url https://silentium.pw/article/context/view\n */\nexport function ContextOf(transport: string) {\n  const $msg = Late<ContextType>();\n  Context.transport.set(transport, $msg.use.bind($msg));\n  return Message<ContextType>(function contextOfImpl(resolve, reject) {\n    $msg.catch(reject);\n    $msg.then(resolve);\n  });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { Applied } from \"components/Applied\";\nimport { Catch } from \"components/Catch\";\nimport { MaybeMessage, MessageType } from \"types/MessageType\";\n\n/**\n * If base returns error then\n * default will return default value\n *\n * @url https://silentium.pw/article/default/view\n */\nexport function Default<T>(\n  $base: MessageType<T>,\n  _default: MaybeMessage<unknown>,\n) {\n  const $default = Actual(_default);\n  const $defaultAfterError = Applied(Catch($base), () => $default);\n  return Message<T>(function DefaultImpl(resolve) {\n    $base.then(resolve);\n    $defaultAfterError.then(resolve as any);\n  });\n}\n","import { Message } from \"base/Message\";\nimport { Primitive } from \"components/Primitive\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * When someone asks message for value\n * if there is no value in message return Error\n * if message exists return value\n *\n * @url https://silentium.pw/article/empty/view\n */\nexport function Empty<T>($base: MessageType<T>, after?: MessageType) {\n  return Message<T>(function EmptyImpl(resolve, reject) {\n    const p = Primitive($base);\n    try {\n      $base.then(resolve).catch(reject);\n      if (!after) {\n        p.primitiveWithException();\n      }\n      after?.then(function emptyAfterSub() {\n        try {\n          p.primitiveWithException();\n        } catch {\n          reject(\"Empty: no value after message!\");\n        }\n      });\n    } catch {\n      reject(\"Empty: no value in base message!\");\n    }\n  });\n}\n","import { Destroyable } from \"base/Destroyable\";\nimport { 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    const sub = Destroyable($base.then(applier(resolve)));\n    return function executorAppliedDestroy() {\n      sub.destroy();\n    };\n  });\n}\n","import { Actual } from \"base/Actual\";\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 = Actual(base);\n  return Message<T>(function FilteredImpl(resolve, reject) {\n    $base.catch(reject);\n    $base.then(function filteredBaseSub(v) {\n      if (predicate(v)) {\n        resolve(v);\n      } else if (defaultValue !== undefined) {\n        resolve(defaultValue);\n      }\n    });\n  });\n}\n","import { Actual } from \"base/Actual\";\nimport { Computed } from \"components/Computed\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * Reduces values of message data to one common value\n */\nexport function Fold<T extends any[], TG>(\n  data: MaybeMessage<T>,\n  reducer: (acc: TG, item: T[number], index: number) => TG,\n  initial: MaybeMessage<TG>,\n) {\n  const $data = Actual(data);\n  const $initial = Actual(initial);\n  return Computed(\n    function foldComputed(data, initial) {\n      return data.reduce(reducer, initial);\n    },\n    $data,\n    $initial,\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(function freezeBaseSub(v) {\n      if (freezedValue === null) {\n        freezedValue = v;\n      }\n      resolve(freezedValue as T);\n    });\n    $invalidate?.then(function freezeInvalidateSub() {\n      freezedValue = null;\n    });\n  });\n}\n","import { MaybeMessage } from \"types/MessageType\";\nimport { All } from \"components/All\";\nimport { Actual } from \"base/Actual\";\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 = Actual(emitter);\n  const $eventName = Actual(eventName);\n  const $subscribeMethod = Actual(subscribeMethod);\n  const $unsubscribeMethod = Actual(unsubscribeMethod);\n  return Message<T>(function FromEventImpl(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(function fromEventAllSub([\n      emitter,\n      eventName,\n      subscribe,\n    ]) {\n      lastR = resolve;\n      if (!emitter?.[subscribe]) {\n        return;\n      }\n      emitter[subscribe](eventName, handler);\n    });\n    return function fromEventDestroy() {\n      lastR = null;\n      if (!$unsubscribeMethod) {\n        return;\n      }\n      All($emitter, $eventName, $unsubscribeMethod).then(\n        function fromEventDestroyAllSub([emitter, eventName, unsubscribe]) {\n          emitter?.[unsubscribe as string]?.(eventName, handler);\n        },\n      );\n    };\n  });\n}\n","import { Message } from \"base/Message\";\nimport { isDestroyable } from \"helpers/guards\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Ability to create new messages when they will be needed\n *\n * @url https://silentium.pw/article/lazy/view\n */\nexport function Lazy<T>(constructor: () => MessageType<T>) {\n  return Message<T>(function LazyImpl(resolve, reject) {\n    const inst = constructor();\n    inst.catch(reject).then(resolve);\n    return function LazyDestroy() {\n      if (isDestroyable(inst)) {\n        inst.destroy();\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 { Actual } from \"base/Actual\";\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 *\n * @url https://silentium.pw/article/map/view\n */\nexport function Map<T, TG>(\n  base: MaybeMessage<T[]>,\n  target: ConstructorType<[any], MessageType<TG>>,\n) {\n  const $base = Actual(base);\n  return Message<TG[]>(function MapImpl(resolve, reject) {\n    $base.catch(reject);\n    const infos: MessageType<TG>[] = [];\n    const dc = DestroyContainer();\n    $base.then(function mapBaseSub(v) {\n      infos.length = 0;\n      dc.destroy();\n      v.forEach(function mapValueForEach(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 *\n * @url https://silentium.pw/article/once/view\n */\nexport function Once<T>($base: MessageType<T>) {\n  return Message<T>(function OnceImpl(resolve, reject) {\n    let isFilled = false;\n    $base.catch(reject);\n    $base.then(function onceBaseSub(v) {\n      if (!isFilled) {\n        isFilled = true;\n        resolve(v);\n      }\n    });\n  });\n}\n","import { Actual } from \"base/Actual\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype Last<T extends readonly any[]> = T extends readonly [...infer _, infer L]\n  ? L extends (...args: any) => any\n    ? L\n    : never\n  : never;\n\n/**\n * Helps to pipe actors or functions to one common actor\n *\n * @url https://silentium.pw/article/piped/view\n */\nexport function Piped<T extends ((...vars: any) => MaybeMessage)[]>(\n  $m: MaybeMessage,\n  ...c: T\n) {\n  return c.reduce(function pipedReduce(msg, Constructor) {\n    return Actual(Constructor(msg));\n  }, Actual($m)) as ReturnType<Last<T>>;\n}\n","import { DestroyContainer } from \"base/DestroyContainer\";\nimport { Message } from \"base/Message\";\nimport { Late } from \"components/Late\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { MessageType } from \"types/MessageType\";\n\nexport function Process<T, R = unknown>(\n  $base: MessageType<T>,\n  builder: ConstructorType<[T], MessageType<R>>,\n) {\n  return Message<R>(function ProcessImpl(resolve, reject) {\n    const $res = Late<R>();\n    const dc = DestroyContainer();\n    $base.then(function processBaseSub(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    return function processDestructor() {\n      dc.destroy();\n    };\n  });\n}\n","import { MessageType } from \"types/MessageType\";\n\n/**\n * Convert message to promise\n */\nexport function Promisify<T>($message: MessageType<T>) {\n  return new Promise(function promisifyExecutor(resolve, reject) {\n    $message.then(resolve, reject);\n  });\n}\n","import { Actual } from \"base/Actual\";\nimport { Message } from \"base/Message\";\nimport { MaybeMessage } from \"types/MessageType\";\n\n/**\n * First responded message\n *\n * @url https://silentium.pw/article/race/view\n */\nexport function Race<const T extends MaybeMessage[]>(...messages: T) {\n  const $messages = messages.map(Actual);\n  return Message(function RaceImpl(resolve, reject) {\n    let responded = false;\n    $messages.forEach(function raceMessagesForEach($message) {\n      $message.catch(reject).then(function raceMessageSub(v) {\n        if (responded === false) {\n          responded = true;\n          resolve(v);\n        }\n      });\n    });\n  });\n}\n","import { Message } from \"base/Message\";\nimport { MessageType } from \"types/MessageType\";\n\n/**\n * Creates a sequence that accumulates all values from the source into an array,\n * emitting the growing array with each new value.\n */\nexport function Sequence<T>($base: MessageType<T>) {\n  return Message<T[]>(function SequenceImpl(resolve, reject) {\n    const result: T[] = [];\n    $base.catch(reject);\n    $base.then(function sequenceBaseSub(v) {\n      result.push(v);\n      resolve(result.slice());\n    });\n  });\n}\n","import { Actual } from \"base/Actual\";\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 = Actual(base);\n  return Message<T>(function StreamImpl(resolve, reject) {\n    $base.catch(reject);\n    $base.then(function streamBaseSub(v) {\n      v.forEach(function streamBaseForEach(cv) {\n        resolve(cv);\n      });\n    });\n  });\n}\n","import { Void } from \"base/Void\";\nimport { Context } from \"components/Context\";\nimport { isMessage } from \"helpers/guards\";\n\n/**\n * Track creation and destruction of components\n * uses Context component to send messages\n * when created sends action=created\n * when destroyed sends action=destroyed\n *\n * @url https://silentium.pw/article/trackable/view\n */\nexport function Trackable<T>(name: string, target: T): T {\n  Context(\"trackable\", { name, action: \"created\" }).then(Void());\n  if (isMessage(target)) {\n    target.then(function trackableTargetSub(value) {\n      Context(\"trackable\", { name, action: \"value\", value }).then(Void());\n    });\n  }\n  return new Proxy(target as object, {\n    get(target, prop, receiver) {\n      if (prop === \"then\") {\n        Context(\"trackable\", { name, action: \"executed\" }).then(Void());\n      }\n      if (prop === \"destroy\") {\n        Context(\"trackable\", { name, action: \"destroyed\" }).then(Void());\n      }\n      return Reflect.get(target, prop, receiver);\n    },\n  }) as T;\n}\n","import { Primitive } from \"components/Primitive\";\nimport { MessageType } from \"types/MessageType\";\n\nexport interface PassiveType<T> {\n  value: T | null;\n}\n\n/**\n * Component what will return same proxied object\n * but with value property\n *\n * @url https://silentium.pw/article/value/view\n */\nexport function Value<T>(\n  target: MessageType<T>,\n): MessageType<T> & PassiveType<T> {\n  const p = Primitive(target);\n  return new Proxy(target, {\n    get(target, prop, receiver) {\n      if (prop === \"value\") {\n        return p.primitive();\n      }\n      return Reflect.get(target, prop, receiver);\n    },\n  }) as MessageType<T> & PassiveType<T>;\n}\n","import { All } from \"components/All\";\nimport { Applied } from \"components/Applied\";\nimport { Primitive } from \"components/Primitive\";\nimport { Shared } from \"components/Shared\";\nimport { ConstructorType } from \"types/ConstructorType\";\nimport { DestroyableType } from \"types/DestroyableType\";\nimport { MessageType } from \"types/MessageType\";\n\ndeclare global {\n  interface SilentiumDebug {\n    value: ($message: MessageType) => unknown;\n    print: (...messages: MessageType[]) => void;\n    destroyable: (onDestroy: () => void) => MessageType<any> & DestroyableType;\n  }\n\n  interface GlobalThis {\n    silentiumDebug: SilentiumDebug;\n  }\n\n  // @ts-expect-error global variable\n  const silentiumDebug: SilentiumDebug;\n}\n\n/**\n * Helps to print message value\n */\nconst silentiumPrint = (...messages: MessageType[]) => {\n  Applied(\n    All(\n      ...messages.map(function silentiumPrintAllMap(e) {\n        return Shared(e);\n      }),\n    ),\n    JSON.stringify,\n  ).then(console.log);\n};\n\n/**\n * Helps to debug current value of message\n */\nconst silentiumValue = ($message: MessageType) =>\n  Primitive($message).primitive();\n\nexport class MessageDestroyable implements MessageType<any>, DestroyableType {\n  public constructor(private onDestroy: () => void) {}\n\n  public then(resolve: ConstructorType<[string]>) {\n    resolve(`Wait destroy ${Date.now()}`);\n    return this;\n  }\n\n  public catch() {\n    return this;\n  }\n\n  public destroy() {\n    this.onDestroy();\n    return this;\n  }\n}\n\n/**\n * Helps to debug destroying\n */\nconst silentiumDestroyable = (onDestroy: () => void) =>\n  new MessageDestroyable(onDestroy);\n\n/**\n * global functions for debuging\n * silentium programs\n */\nexport function DevTools() {\n  if (typeof globalThis !== \"undefined\") {\n    (globalThis as any).silentiumDebug = {\n      value: silentiumValue,\n      print: silentiumPrint,\n      destroyable: silentiumDestroyable,\n    };\n  }\n}\n"],"names":["__publicField","name","params","data","initial","emitter","eventName","Map","target"],"mappings":"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"}