silentium-components 0.0.83 → 0.0.85

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.
Files changed (102) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/silentium-components.cjs +326 -411
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +80 -87
  5. package/dist/silentium-components.js +328 -412
  6. package/dist/silentium-components.js.map +1 -1
  7. package/dist/silentium-components.min.js +1 -1
  8. package/dist/silentium-components.min.mjs +1 -1
  9. package/dist/silentium-components.min.mjs.map +1 -1
  10. package/dist/silentium-components.mjs +328 -412
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/eslint.config.mjs +26 -12
  13. package/package.json +4 -2
  14. package/rollup.config.js +2 -1
  15. package/src/behaviors/Branch._main.test.ts +4 -3
  16. package/src/behaviors/Branch._values.test.ts +3 -2
  17. package/src/behaviors/Branch.branchesDontAffectResult.test.ts +4 -3
  18. package/src/behaviors/Branch.ts +13 -21
  19. package/src/behaviors/BranchLazy._main.test.ts +5 -4
  20. package/src/behaviors/BranchLazy.ts +17 -20
  21. package/src/behaviors/Const.test.ts +6 -7
  22. package/src/behaviors/Const.ts +5 -7
  23. package/src/behaviors/Deadline._main.test.ts +5 -4
  24. package/src/behaviors/Deadline._value.test.ts +4 -3
  25. package/src/behaviors/Deadline.ts +20 -27
  26. package/src/behaviors/Deferred.test.ts +5 -4
  27. package/src/behaviors/Deferred.ts +8 -10
  28. package/src/behaviors/Detached.test.ts +4 -3
  29. package/src/behaviors/Detached.ts +2 -2
  30. package/src/behaviors/Dirty.test.ts +4 -3
  31. package/src/behaviors/Dirty.ts +18 -45
  32. package/src/behaviors/Loading.test.ts +4 -3
  33. package/src/behaviors/Loading.ts +4 -4
  34. package/src/behaviors/Lock.test.ts +4 -3
  35. package/src/behaviors/Lock.ts +6 -8
  36. package/src/behaviors/Memo.test.ts +7 -8
  37. package/src/behaviors/Memo.ts +8 -10
  38. package/src/behaviors/OnlyChanged.test.ts +5 -4
  39. package/src/behaviors/OnlyChanged.ts +9 -11
  40. package/src/behaviors/Part.test.ts +12 -15
  41. package/src/behaviors/Part.ts +23 -40
  42. package/src/behaviors/Path._keyRaw.test.ts +3 -2
  43. package/src/behaviors/Path._main.test.ts +3 -2
  44. package/src/behaviors/Path.index.test.ts +3 -2
  45. package/src/behaviors/Path.nested.test.ts +4 -3
  46. package/src/behaviors/Path.ts +11 -14
  47. package/src/behaviors/Polling.test.ts +3 -2
  48. package/src/behaviors/Polling.ts +5 -7
  49. package/src/behaviors/Shot._main.test.ts +5 -4
  50. package/src/behaviors/Shot._onlyChanged.test.ts +9 -10
  51. package/src/behaviors/Shot.ts +8 -10
  52. package/src/behaviors/Task.test.ts +9 -12
  53. package/src/behaviors/Task.ts +11 -5
  54. package/src/behaviors/Tick.test.ts +5 -4
  55. package/src/behaviors/Tick.ts +9 -11
  56. package/src/behaviors/index.ts +0 -1
  57. package/src/boolean/And.test.ts +3 -2
  58. package/src/boolean/And.ts +5 -7
  59. package/src/boolean/Bool.test.ts +4 -3
  60. package/src/boolean/Bool.ts +2 -2
  61. package/src/boolean/Not.test.ts +4 -3
  62. package/src/boolean/Not.ts +5 -7
  63. package/src/boolean/Or.test.ts +4 -3
  64. package/src/boolean/Or.ts +5 -7
  65. package/src/boolean/index.ts +2 -2
  66. package/src/formats/FromJson.test.ts +2 -1
  67. package/src/formats/FromJson.ts +9 -12
  68. package/src/formats/ToJson.test.ts +1 -0
  69. package/src/formats/ToJson.ts +10 -12
  70. package/src/index.ts +4 -4
  71. package/src/lists/First.test.ts +3 -2
  72. package/src/lists/First.ts +2 -2
  73. package/src/navigation/Router._destroy.test.ts +14 -24
  74. package/src/navigation/Router._firstMatch.test.ts +7 -13
  75. package/src/navigation/Router._main.test.ts +7 -13
  76. package/src/navigation/Router._nested.test.ts +19 -30
  77. package/src/navigation/Router.ts +30 -34
  78. package/src/strings/Concatenated.test.ts +4 -3
  79. package/src/strings/Concatenated.ts +5 -7
  80. package/src/strings/Template._main.test.ts +5 -4
  81. package/src/strings/Template._place.test.ts +4 -3
  82. package/src/strings/Template.ts +21 -9
  83. package/src/structures/HashTable.test.ts +4 -3
  84. package/src/structures/HashTable.ts +6 -8
  85. package/src/structures/Record._main.test.ts +3 -2
  86. package/src/structures/Record._mixed.test.ts +3 -2
  87. package/src/structures/Record.concatenated.test.ts +7 -8
  88. package/src/structures/Record.nested.test.ts +3 -2
  89. package/src/structures/Record.ts +10 -14
  90. package/src/system/RegexpMatch._group.test.ts +3 -2
  91. package/src/system/RegexpMatch._main.test.ts +3 -2
  92. package/src/system/RegexpMatch.ts +12 -11
  93. package/src/system/RegexpMatched.test.ts +4 -3
  94. package/src/system/RegexpMatched.ts +11 -10
  95. package/src/system/RegexpReplaced.test.ts +4 -3
  96. package/src/system/RegexpReplaced.ts +6 -8
  97. package/src/system/Set.test.ts +4 -3
  98. package/src/system/Set.ts +9 -8
  99. package/src/system/index.ts +1 -1
  100. package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +0 -35
  101. package/src/behaviors/Transaction.test.ts +0 -44
  102. package/src/behaviors/Transaction.ts +0 -42
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import {\n ActualMessage,\n MaybeMessage,\n Message,\n Primitive,\n Tap,\n} from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = _right && ActualMessage(_right);\n return Message<Then | Else>(function () {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.pipe(\n Tap((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = left.primitive();\n } else if (right) {\n result = right.primitive();\n }\n if (result !== null) {\n this.use(result);\n }\n }),\n );\n });\n}\n","import {\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n Tap,\n TapType,\n} from \"silentium\";\n\n/**\n * Depending on the $condition message,\n * creates a new left or right message.\n * When condition changes, old messages are destroyed\n * and new ones are created.\n */\nexport function BranchLazy<Then, Else>(\n $condition: MessageType<boolean>,\n $left: TapType<void, MessageType<Then>>,\n $right?: TapType<void, MessageType<Else>>,\n): MessageType<Then | Else> & DestroyableType {\n return Message(function () {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n $condition.pipe(\n Tap((v) => {\n destructor();\n let instance: MessageType<Then | Else> | undefined;\n if (v) {\n instance = $left.use();\n } else if ($right) {\n instance = $right.use();\n }\n if (instance !== undefined) {\n instance.pipe(this);\n dc.add(instance);\n }\n }),\n );\n return destructor;\n });\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Constant value that will be\n * returned on each value from\n * the $trigger message\n */\nexport function Constant<T>(\n permanent: T,\n $trigger: MessageType,\n): MessageType<T> {\n return Message(function () {\n $trigger.pipe(\n Tap(() => {\n this.use(permanent);\n }),\n );\n });\n}\n","import {\n ActualMessage,\n Filtered,\n MaybeMessage,\n Message,\n MessageType,\n Shared,\n Tap,\n TapType,\n} from \"silentium\";\n\n/**\n * Will return an error via error transport if\n * time runs out from $timeout; if $base manages to\n * respond before $timeout then the value from base will be returned\n */\nexport function Deadline<T>(\n error: TapType<Error>,\n $base: MessageType<T>,\n _timeout: MaybeMessage<number>,\n) {\n const $timeout = ActualMessage(_timeout);\n return Message<T>(function () {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base, true);\n $timeout.pipe(\n Tap((timeout) => {\n if (timer) {\n clearTimeout(timer);\n }\n let timeoutReached = false;\n\n timer = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error.use(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.pipe(this);\n\n base.pipe(\n Tap(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n });\n}\n","import { isFilled, Message, MessageType, Primitive, Tap } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message(function () {\n const base = Primitive($base);\n $trigger.pipe(\n Tap(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n this.use(value);\n }\n }),\n );\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Message separate from the base\n * allows to take one value from the base\n * but not react to new values of the base message\n */\nexport function Detached<T>($base: MessageType<T>): MessageType<T> {\n return Message(function () {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n this.use(v);\n }\n });\n}\n","import {\n All,\n Applied,\n Late,\n MessageType,\n SourceType,\n Tap,\n TapType,\n} from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n): SourceType<T> {\n return new DirtySource($base, keep, exclude, cloner);\n}\n\nclass DirtySource<T> implements SourceType<T> {\n private $comparing = Late<T>();\n private cloner: (v: T) => T;\n\n public constructor(\n private $base: MessageType<T>,\n private keep: string[] = [],\n private exclude: string[] = [],\n cloner?: (v: T) => T,\n ) {\n if (cloner === undefined) {\n this.cloner = (value) => JSON.parse(JSON.stringify(value));\n } else {\n this.cloner = cloner;\n }\n }\n\n public pipe(transport: TapType<T>) {\n const $comparing = Applied(this.$comparing, this.cloner);\n All($comparing, this.$base).pipe(\n Tap(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n transport.use(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (this.keep.includes(key)) {\n return true;\n }\n if (this.exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n }),\n );\n return this;\n }\n\n public use(v: T) {\n this.$comparing.use(v);\n return this;\n }\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first message begins loading\n * second message stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $start: MessageType<unknown>,\n $finish: MessageType<unknown>,\n) {\n return Message<boolean>(function () {\n $start.pipe(Tap(() => this.use(true)));\n $finish.pipe(Tap(() => this.use(false)));\n });\n}\n","import { Filtered, Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Allows locking messages\n * if a $lock message arrives\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>) {\n return Message<T>(function () {\n let locked = false;\n $lock.pipe(\n Tap((newLock) => {\n locked = newLock;\n }),\n );\n const i = Filtered($base, () => !locked);\n i.pipe(this);\n });\n}\n","import { isFilled, Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>($base: MessageType<T>) {\n return Message<T>(function () {\n let last: T | null = null;\n $base.pipe(\n Tap((v) => {\n if (v !== last && isFilled(v)) {\n this.use(v);\n last = v;\n }\n }),\n );\n });\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>($base: MessageType<T>) {\n return Message<T>(function () {\n let first = false;\n $base.pipe(\n Tap((v) => {\n if (first === false) {\n first = true;\n } else {\n this.use(v);\n }\n }),\n );\n });\n}\n","import {\n ActualMessage,\n All,\n isFilled,\n MaybeMessage,\n MessageType,\n Primitive,\n Shared,\n SharedSource,\n SourceType,\n Tap,\n TapType,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: SourceType<T>, $key: MaybeMessage<K>): SourceType<R> {\n return new PartImpl($base, ActualMessage($key));\n}\n\nclass PartImpl<R, T extends object | Array<any>, K extends string = any>\n implements SourceType<R>\n{\n private $base: SourceType<T>;\n private $keyed: MessageType<K>;\n\n public constructor($base: SourceType<T>, $key: MessageType<K>) {\n this.$base = SharedSource($base);\n this.$keyed = Shared($key);\n }\n\n public pipe(transport: TapType<R, null>): this {\n All(this.$base, this.$keyed).pipe(\n Tap(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n transport.use(value as R);\n }\n }),\n );\n return this;\n }\n\n public use(value: R): this {\n const key = Primitive(this.$keyed);\n if (isFilled(key)) {\n const base = Primitive(this.$base);\n this.$base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n return this;\n }\n}\n","import {\n ActualMessage,\n All,\n MaybeMessage,\n Message,\n MessageType,\n Tap,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageType<T>, _keyed: MaybeMessage<K>) {\n const $keyed = ActualMessage(_keyed);\n return Message<R>(function () {\n All($base, $keyed).pipe(\n Tap(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n this.use(value as R);\n }\n }),\n );\n });\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n */\nexport function Polling<T>($base: MessageType<T>, $trigger: MessageType<T>) {\n return Message<T>(function () {\n $trigger.pipe(\n Tap(() => {\n $base.pipe(this);\n }),\n );\n });\n}\n","import { isFilled, Message, MessageType, Primitive, Tap } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>($target: MessageType<T>, $trigger: MessageType) {\n return Message<T>(function () {\n const targetSync = Primitive($target);\n targetSync.primitive();\n $trigger.pipe(\n Tap(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n this.use(value);\n }\n }),\n );\n });\n}\n","import { ExecutorApplied, Message, MessageType } from \"silentium\";\n\n/**\n * Defer a message to the event loop\n * so that it executes once within\n * a certain timer firing interval\n */\nexport function Task<T>(baseSrc: MessageType<T>, delay: number = 0) {\n return Message<T>(function () {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).pipe(this);\n });\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>($base: MessageType<T>) {\n return Message(function () {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n this.use(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.pipe(\n Tap((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n LateShared,\n Message,\n MessageType,\n Of,\n Tap,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on message value.\n * Each message value will create new builder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: MessageType<T>,\n builder: ConstructorType<\n [MessageType<T>, ...MessageType<any>[]],\n MessageType<R>\n >,\n ...args: MessageType[]\n) {\n return Message<R>(function () {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base.pipe(\n Tap((v) => {\n const $msg = builder(Of(v), ...args.map((a) => Detached(a)));\n destructors.push($msg as unknown as DestroyableType);\n $msg.pipe($res);\n }),\n );\n $res.pipe(this);\n\n return () => {\n destructors.forEach((d) => d?.destroy());\n destructors.length = 0;\n };\n });\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * By receiving a message with a key and value, collects a table\n * of all previously received messages in the form of a structure\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>($base: MessageType<[string, unknown]>) {\n return Message<T>(function () {\n const record: Record<string, unknown> = {};\n\n $base.pipe(\n Tap(([key, value]) => {\n record[key] = value;\n this.use(record as T);\n }),\n );\n });\n}\n","import { All, isMessage, Message, MessageType, Of, Tap } from \"silentium\";\n\ntype UnWrap<T> = T extends MessageType<infer U> ? U : T;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function Record<T>(record: Record<string, T>) {\n return Message<Record<string, UnWrap<T>>>(function () {\n const keys = Object.keys(record);\n keys.forEach((key) => {\n if (!isMessage(record[key])) {\n record[key] = Of(record[key]) as any;\n }\n });\n All(...(Object.values(record) as any)).pipe(\n Tap((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n this.use(record);\n }),\n );\n });\n}\n","import { All, Message, MessageType, Of, Tap } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: MessageType<string>[],\n joinPartSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function () {\n All(joinPartSrc, ...sources).pipe(\n Tap(([joinPart, ...strings]) => {\n this.use(strings.join(joinPart));\n }),\n );\n });\n}\n","import {\n All,\n Applied,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n MessageType,\n Of,\n TapType,\n} from \"silentium\";\nimport { Record } from \"../structures\";\n\n/**\n * Allows creating a string template with\n * variables inserted into it; when variables change,\n * the template value will change\n */\nexport function Template(\n $src: MessageType<string> = Of(\"\"),\n $places: MessageType<Record<string, unknown>> = Of({}),\n) {\n return new TemplateImpl($src, $places);\n}\n\nclass TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private vars: Record<string, MessageType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: MessageType<string> = Of(\"\"),\n private $places: MessageType<Record<string, unknown>> = Of({}),\n ) {}\n\n public pipe(transport: TapType<string>): this {\n const $vars = Record(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n }).pipe(transport);\n return this;\n }\n\n public template(value: string) {\n this.$src = Of(value);\n }\n\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n public var(src: MessageType<string>) {\n const places = Object.keys(this.vars).length;\n const varName = `$var${places}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n","import { All, Message, MessageType, Of, Tap } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: MessageType<string>,\n valueSrc: MessageType<string>,\n flagsSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<boolean>(function () {\n All(patternSrc, valueSrc, flagsSrc).pipe(\n Tap(([pattern, value, flags]) => {\n this.use(new RegExp(pattern, flags).test(value));\n }),\n );\n });\n}\n","import { All, Message, MessageType, Of, Tap } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: MessageType<string>,\n patternSrc: MessageType<string>,\n replaceValueSrc: MessageType<string>,\n flagsSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function () {\n All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).pipe(\n Tap(([pattern, value, replaceValue, flags]) => {\n this.use(\n String(value).replace(new RegExp(pattern, flags), replaceValue),\n );\n }),\n );\n });\n}\n","import { All, Message, MessageType, Of, Tap } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: MessageType<string>,\n valueSrc: MessageType<string>,\n flagsSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string[]>(function () {\n All(patternSrc, valueSrc, flagsSrc).pipe(\n Tap(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n this.use(result ?? []);\n }),\n );\n });\n}\n","import { All, Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: MessageType<T>,\n keySrc: MessageType<string>,\n valueSrc: MessageType<unknown>,\n) {\n return Message<T>(function () {\n All(baseSrc, keySrc, valueSrc).pipe(\n Tap(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n this.use(base);\n }),\n );\n });\n}\n","import {\n All,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n Of,\n Tap,\n TapType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n message: TapType<void, MessageType<T>>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n $url: MessageType<string>,\n $routes: MessageType<Route<T>[]>,\n $default: TapType<void, MessageType<T>>,\n): MessageType<T> & DestroyableType {\n return Message<T>(function () {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n All($routes, $url).pipe(\n Tap(([routes, url]) => {\n destructor();\n const $matches = All(\n ...routes.map((r) =>\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n ),\n );\n $matches.pipe(\n Tap((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default.use();\n dc.add(instance);\n instance.pipe(this);\n }\n\n if (index > -1) {\n const instance = routes[index].message.use();\n dc.add(instance);\n instance.pipe(this);\n }\n }),\n );\n }),\n );\n\n return destructor;\n });\n}\n","import { All, Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Logical AND over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function () {\n All($one, $two).pipe(\n Tap(([one, two]) => {\n this.use(!!(one && two));\n }),\n );\n });\n}\n","import { All, Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Logical OR over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function () {\n All($one, $two).pipe(\n Tap(([one, two]) => {\n this.use(!!(one || two));\n }),\n );\n });\n}\n","import { Message, MessageType, Tap } from \"silentium\";\n\n/**\n * Logical negation of message\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: MessageType<boolean>) {\n return Message<boolean>(function () {\n $base.pipe(\n Tap((v) => {\n this.use(!v);\n }),\n );\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool($base: MessageType) {\n return Message<boolean>(function () {\n Applied($base, Boolean).pipe(this);\n });\n}\n","import { Message, MessageType, Tap, TapType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: MessageType<string>,\n error?: TapType,\n) {\n return Message<T>(function () {\n $json.pipe(\n Tap((json) => {\n try {\n this.use(JSON.parse(json));\n } catch (e) {\n error?.use(new Error(`Failed to parse JSON: ${e}`));\n }\n }),\n );\n });\n}\n","import { Message, MessageType, Tap, TapType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson($data: MessageType, error?: TapType) {\n return Message<string>(function () {\n $data.pipe(\n Tap((data: unknown) => {\n try {\n this.use(JSON.stringify(data));\n } catch {\n error?.use(new Error(\"Failed to convert to JSON\"));\n }\n }),\n );\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>($base: MessageType<T>) {\n return Message<T[0]>(function () {\n Applied($base, (a) => a[0]).pipe(this);\n });\n}\n"],"names":["ActualMessage","Message","Primitive","Tap","DestroyContainer","Shared","Filtered","isFilled","__publicField","Late","Applied","All","SharedSource","ExecutorApplied","LateShared","Of","isMessage","record","isDestroyable"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/boolean/And.ts","../src/boolean/Bool.ts","../src/boolean/Not.ts","../src/boolean/Or.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts","../src/system/RegexpMatch.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/strings/Concatenated.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, Primitive } from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = _right && ActualMessage(_right);\n return Message<Then | Else>(function BranchImpl(r) {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.then((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = left.primitive();\n } else if (right) {\n result = right.primitive();\n }\n if (result !== null) {\n r(result);\n }\n });\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Depending on the $condition message,\n * creates a new left or right message.\n * When condition changes, old messages are destroyed\n * and new ones are created.\n */\nexport function BranchLazy<Then, Else>(\n $condition: MessageType<boolean>,\n $left: ConstructorType<[], MessageType<Then>>,\n $right?: ConstructorType<[], MessageType<Else>>,\n): MessageType<Then | Else> & DestroyableType {\n return Message(function BranchLazyImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n $condition.then((v) => {\n destructor();\n let instance: MessageType<Then | Else> | undefined;\n if (v) {\n instance = $left();\n } else if ($right) {\n instance = $right();\n }\n if (instance !== undefined) {\n instance.then(r);\n dc.add(instance);\n }\n });\n return destructor;\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Constant value that will be\n * returned on each value from\n * the $trigger message\n */\nexport function Constant<T>(\n permanent: T,\n $trigger: MessageType,\n): MessageType<T> {\n return Message<T>(function ConstantImpl(r) {\n $trigger.then(() => {\n r(permanent);\n });\n });\n}\n","import {\n ActualMessage,\n Filtered,\n MaybeMessage,\n Message,\n MessageType,\n Shared,\n} from \"silentium\";\n\n/**\n * Will return an error via error transport if\n * time runs out from $timeout; if $base manages to\n * respond before $timeout then the value from base will be returned\n */\nexport function Deadline<T>(\n $base: MessageType<T>,\n _timeout: MaybeMessage<number>,\n) {\n const $timeout = ActualMessage(_timeout);\n return Message<T>(function DeadlineImpl(resolve, reject) {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base);\n $timeout.then((timeout) => {\n if (timer) {\n clearTimeout(timer);\n }\n let timeoutReached = false;\n\n timer = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n reject(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.then(resolve);\n\n base.then(() => {\n timeoutReached = true;\n });\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function DeferredImpl(r) {\n const base = Primitive($base);\n $trigger.then(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Message separate from the base\n * allows to take one value from the base\n * but not react to new values of the base message\n */\nexport function Detached<T>($base: MessageType<T>): MessageType<T> {\n return Message<T>(function DetachedImpl(r) {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n r(v);\n }\n });\n}\n","import { All, Applied, Late, MessageSource, MessageType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>();\n if (cloner === undefined) {\n cloner = (value) => JSON.parse(JSON.stringify(value));\n }\n return MessageSource<T>(\n function DirtyImpl(r) {\n const $comparingClone = Applied($comparing, cloner);\n All($comparingClone, $base).then(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n r(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (keep.includes(key)) {\n return true;\n }\n if (exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n });\n },\n (v) => {\n $comparing.use(v);\n },\n );\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first message begins loading\n * second message stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $start: MessageType<unknown>,\n $finish: MessageType<unknown>,\n) {\n return Message<boolean>(function LoadingImpl(r) {\n $start.then(() => r(true));\n $finish.then(() => r(false));\n });\n}\n","import { Filtered, Message, MessageType } from \"silentium\";\n\n/**\n * Allows locking messages\n * if a $lock message arrives\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>) {\n return Message<T>(function LockImpl(r) {\n let locked = false;\n $lock.then((newLock) => {\n locked = newLock;\n });\n const i = Filtered($base, () => !locked);\n i.then(r);\n });\n}\n","import { isFilled, Message, MessageType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>($base: MessageType<T>) {\n return Message<T>(function MemoImpl(r) {\n let last: T | null = null;\n $base.then((v) => {\n if (v !== last && isFilled(v)) {\n r(v);\n last = v;\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>($base: MessageType<T>) {\n return Message<T>(function OnlyChangedImpl(r) {\n let first = false;\n $base.then((v) => {\n if (first === false) {\n first = true;\n } else {\n r(v);\n }\n });\n });\n}\n","import {\n ActualMessage,\n All,\n isFilled,\n MaybeMessage,\n MessageSource,\n MessageSourceType,\n Primitive,\n Shared,\n SourceType,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageSourceType<T>, key: MaybeMessage<K>): SourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(ActualMessage(key));\n return MessageSource(\n function PartImpl(r) {\n All($baseShared, $keyedShared).then(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key: string) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n r(value as R);\n }\n });\n },\n (value) => {\n const key = Primitive($keyedShared);\n if (isFilled(key)) {\n const base = Primitive($base);\n $base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n },\n );\n}\n","import {\n ActualMessage,\n All,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: MessageType<T>, _keyed: MaybeMessage<K>) {\n const $keyed = ActualMessage(_keyed);\n return Message<R>(function PathImpl(r) {\n All($base, $keyed).then(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n r(value as R);\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n */\nexport function Polling<T>($base: MessageType<T>, $trigger: MessageType<T>) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>($target: MessageType<T>, $trigger: MessageType) {\n return Message<T>(function ShotImpl(r) {\n const targetSync = Primitive($target);\n targetSync.primitive();\n $trigger.then(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import {\n ActualMessage,\n ExecutorApplied,\n MaybeMessage,\n Message,\n} from \"silentium\";\n\n/**\n * Defer a message to the event loop\n * so that it executes once within\n * a certain timer firing interval\n */\nexport function Task<T>(baseSrc: MaybeMessage<T>, delay: number = 0) {\n const $base = ActualMessage(baseSrc);\n return Message<T>(function TaskImpl(r) {\n let prevTimer: unknown | null = null;\n ExecutorApplied($base, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>($base: MessageType<T>) {\n return Message<T>(function TickImpl(r) {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n r(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.then((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical AND over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function AndImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one && two));\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool($base: MessageType) {\n return Message<boolean>(function BoolImpl(r) {\n Applied($base, Boolean).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Logical negation of message\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: MessageType<boolean>) {\n return Message<boolean>(function NotImpl(r) {\n $base.then((v) => {\n r(!v);\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical OR over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function OrImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one || two));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: MessageType<string>,\n) {\n return Message<T>(function FromJsonImpl(resolve, reject) {\n $json.then((json) => {\n try {\n resolve(JSON.parse(json));\n } catch (e) {\n reject(new Error(`Failed to parse JSON: ${e}`));\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson($data: MessageType) {\n return Message<string>(function ToJsonImpl(resolve, reject) {\n $data.then((data: unknown) => {\n try {\n resolve(JSON.stringify(data));\n } catch {\n reject(new Error(\"Failed to convert to JSON\"));\n }\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>($base: MessageType<T>) {\n return Message<T[0]>(function FirstImpl(r) {\n Applied($base, (a) => a[0]).then(r);\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<string[]>(function RegexpMatchImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n r(result ?? []);\n });\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<boolean>(function RegexpMatchedImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n r(new RegExp(pattern, flags).test(value));\n });\n });\n}\n","import { All, Message, MessageType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: MessageType<string>,\n patternSrc: MessageType<string>,\n replaceValueSrc: MessageType<string>,\n flagsSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function RegexpReplacedImpl(r) {\n All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).then(\n ([pattern, value, replaceValue, flags]) => {\n r(String(value).replace(new RegExp(pattern, flags), replaceValue));\n },\n );\n });\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: MessageType<T>,\n keySrc: MessageType<string>,\n valueSrc: MessageType<unknown>,\n) {\n const $base = ActualMessage(baseSrc);\n const $key = ActualMessage(keySrc);\n const $value = ActualMessage(valueSrc);\n return Message<T>(function SetImpl(r) {\n All($base, $key, $value).then(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n r(base);\n });\n });\n}\n","import {\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n Of,\n} from \"silentium\";\n\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n message: ConstructorType<[], MessageType<T>>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = string>(\n $url: MessageType<string>,\n $routes: MessageType<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n return Message<T>(function RouterImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n All($routes, $url).then(([routes, url]) => {\n destructor();\n const $matches = All(\n ...routes.map((r) =>\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n ),\n );\n $matches.then((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default();\n dc.add(instance);\n instance.then(r);\n }\n\n if (index > -1) {\n const instance = routes[index].message();\n dc.add(instance);\n instance.then(r);\n }\n });\n });\n\n return destructor;\n });\n}\n","import { All, Message, MessageType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: MessageType<string>[],\n joinPartSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function ConcatenatedImpl(r) {\n All(joinPartSrc, ...sources).then(([joinPart, ...strings]) => {\n r(strings.join(joinPart));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * By receiving a message with a key and value, collects a table\n * of all previously received messages in the form of a structure\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>($base: MessageType<[string, unknown]>) {\n return Message<T>(function HashTableImpl(r) {\n const record: Record<string, unknown> = {};\n\n $base.then(([key, value]) => {\n record[key] = value;\n r(record as T);\n });\n });\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\ntype UnWrap<T> = T extends MessageType<infer U> ? U : T;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function Record<T>(record: Record<string, T>) {\n return Message<Record<string, UnWrap<T>>>(function RecordImpl(r) {\n const keys = Object.keys(record);\n keys.forEach((key) => {\n record[key] = ActualMessage(record[key]) as any;\n });\n All(...(Object.values(record) as any)).then((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n r(record);\n });\n });\n}\n","import {\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n MessageType,\n Of,\n Rejections,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Allows creating a string template with\n * variables inserted into it; when variables change,\n * the template value will change\n */\nexport function Template(\n $src: MessageType<string> = Of(\"\"),\n $places: MessageType<Record<string, unknown>> = Of({}),\n) {\n return new TemplateImpl($src, $places);\n}\n\nclass TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private rejections = new Rejections();\n private vars: Record<string, MessageType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: MessageType<string> = Of(\"\"),\n private $places: MessageType<Record<string, unknown>> = Of({}),\n ) {}\n\n public then(transport: ConstructorType<[string]>): this {\n const $vars = Record(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n try {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n } catch (e) {\n this.rejections.reject(e);\n }\n\n return base;\n }).then(transport);\n return this;\n }\n\n public template(value: string) {\n this.$src = Of(value);\n }\n\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n public var(src: MessageType<string>) {\n const places = Object.keys(this.vars).length;\n const varName = `$var${places}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n"],"names":["ActualMessage","Message","Primitive","DestroyContainer","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","key","ExecutorApplied","Of","r","record","Rejections","isDestroyable"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import * as silentium from 'silentium';
2
- import { MaybeMessage, MessageType, TapType, DestroyableType, SourceType, ConstructorType } from 'silentium';
2
+ import { MaybeMessage, MessageType, ConstructorType, DestroyableType, MessageSourceType, SourceType } from 'silentium';
3
3
 
4
4
  /**
5
5
  * Allows switching between left and right messages depending on condition
6
6
  * https://silentium-lab.github.io/silentium-components/#/behaviors/branch
7
7
  */
8
- declare function Branch<Then, Else>(_condition: MaybeMessage<boolean>, _left: MaybeMessage<Then>, _right?: MaybeMessage<Else>): silentium.MessageImpl<Then | Else>;
8
+ declare function Branch<Then, Else>(_condition: MaybeMessage<boolean>, _left: MaybeMessage<Then>, _right?: MaybeMessage<Else>): silentium.MessageRx<Then | Else>;
9
9
 
10
10
  /**
11
11
  * Depending on the $condition message,
@@ -13,7 +13,7 @@ declare function Branch<Then, Else>(_condition: MaybeMessage<boolean>, _left: Ma
13
13
  * When condition changes, old messages are destroyed
14
14
  * and new ones are created.
15
15
  */
16
- declare function BranchLazy<Then, Else>($condition: MessageType<boolean>, $left: TapType<void, MessageType<Then>>, $right?: TapType<void, MessageType<Else>>): MessageType<Then | Else> & DestroyableType;
16
+ declare function BranchLazy<Then, Else>($condition: MessageType<boolean>, $left: ConstructorType<[], MessageType<Then>>, $right?: ConstructorType<[], MessageType<Else>>): MessageType<Then | Else> & DestroyableType;
17
17
 
18
18
  /**
19
19
  * Constant value that will be
@@ -27,13 +27,13 @@ declare function Constant<T>(permanent: T, $trigger: MessageType): MessageType<T
27
27
  * time runs out from $timeout; if $base manages to
28
28
  * respond before $timeout then the value from base will be returned
29
29
  */
30
- declare function Deadline<T>(error: TapType<Error>, $base: MessageType<T>, _timeout: MaybeMessage<number>): silentium.MessageImpl<T>;
30
+ declare function Deadline<T>($base: MessageType<T>, _timeout: MaybeMessage<number>): silentium.MessageRx<T>;
31
31
 
32
32
  /**
33
33
  * Defer one source after another, gives values Of baseSrc only when triggerSrc responds
34
34
  * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred
35
35
  */
36
- declare function Deferred<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageImpl<unknown>;
36
+ declare function Deferred<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageRx<T>;
37
37
 
38
38
  /**
39
39
  * Message separate from the base
@@ -47,7 +47,7 @@ declare function Detached<T>($base: MessageType<T>): MessageType<T>;
47
47
  * returns new record, what will contain only fields what was changed
48
48
  * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty
49
49
  */
50
- declare function Dirty<T>($base: MessageType<T>, keep?: string[], exclude?: string[], cloner?: (v: T) => T): SourceType<T>;
50
+ declare function Dirty<T>($base: MessageType<T>, keep?: string[], exclude?: string[], cloner?: (v: T) => T): silentium.MessageSourceImpl<T>;
51
51
 
52
52
  /**
53
53
  * Representation Of loading process
@@ -55,92 +55,119 @@ declare function Dirty<T>($base: MessageType<T>, keep?: string[], exclude?: stri
55
55
  * second message stops loading
56
56
  * https://silentium-lab.github.io/silentium-components/#/behaviors/loading
57
57
  */
58
- declare function Loading($start: MessageType<unknown>, $finish: MessageType<unknown>): silentium.MessageImpl<boolean>;
58
+ declare function Loading($start: MessageType<unknown>, $finish: MessageType<unknown>): silentium.MessageRx<boolean>;
59
59
 
60
60
  /**
61
61
  * Allows locking messages
62
62
  * if a $lock message arrives
63
63
  * https://silentium-lab.github.io/silentium-components/#/behaviors/lock
64
64
  */
65
- declare function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>): silentium.MessageImpl<T>;
65
+ declare function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>): silentium.MessageRx<T>;
66
66
 
67
67
  /**
68
68
  * Didn't respond if new value Of baseSrc equals to old value
69
69
  * https://silentium-lab.github.io/silentium-components/#/behaviors/memo
70
70
  */
71
- declare function Memo<T>($base: MessageType<T>): silentium.MessageImpl<T>;
71
+ declare function Memo<T>($base: MessageType<T>): silentium.MessageRx<T>;
72
72
 
73
73
  /**
74
74
  * Represents source what was changed at least once
75
75
  * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed
76
76
  */
77
- declare function OnlyChanged<T>($base: MessageType<T>): silentium.MessageImpl<T>;
77
+ declare function OnlyChanged<T>($base: MessageType<T>): silentium.MessageRx<T>;
78
78
 
79
79
  /**
80
80
  * Return source Of record path
81
81
  * https://silentium-lab.github.io/silentium-components/#/behaviors/path
82
82
  */
83
- declare function Part<R, T extends object | Array<any> = any, K extends string = any>($base: SourceType<T>, $key: MaybeMessage<K>): SourceType<R>;
83
+ declare function Part<R, T extends object | Array<any> = any, K extends string = any>($base: MessageSourceType<T>, key: MaybeMessage<K>): SourceType<R>;
84
84
 
85
85
  /**
86
86
  * Return source Of record path
87
87
  * https://silentium-lab.github.io/silentium-components/#/behaviors/path
88
88
  */
89
- declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>): silentium.MessageImpl<R>;
89
+ declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>): silentium.MessageRx<R>;
90
90
 
91
91
  /**
92
92
  * Active polling of $base message
93
93
  * synchronized with $trigger message
94
94
  */
95
- declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<T>): silentium.MessageImpl<T>;
95
+ declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<T>): silentium.MessageRx<T>;
96
96
 
97
97
  /**
98
98
  * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc
99
99
  * https://silentium-lab.github.io/silentium-components/#/behaviors/shot
100
100
  */
101
- declare function Shot<T>($target: MessageType<T>, $trigger: MessageType): silentium.MessageImpl<T>;
101
+ declare function Shot<T>($target: MessageType<T>, $trigger: MessageType): silentium.MessageRx<T>;
102
102
 
103
103
  /**
104
104
  * Defer a message to the event loop
105
105
  * so that it executes once within
106
106
  * a certain timer firing interval
107
107
  */
108
- declare function Task<T>(baseSrc: MessageType<T>, delay?: number): silentium.MessageImpl<T>;
108
+ declare function Task<T>(baseSrc: MaybeMessage<T>, delay?: number): silentium.MessageRx<T>;
109
109
 
110
110
  /**
111
111
  * Accumulates the last value Of the source and returns one result once per tick
112
112
  * https://silentium-lab.github.io/silentium-components/#/behaviors/tick
113
113
  */
114
- declare function Tick<T>($base: MessageType<T>): silentium.MessageImpl<unknown>;
114
+ declare function Tick<T>($base: MessageType<T>): silentium.MessageRx<T>;
115
115
 
116
116
  /**
117
- * Do something on message value.
118
- * Each message value will create new builder instance
117
+ * Logical AND over two messages
118
+ * https://silentium-lab.github.io/silentium-components/#/boolean/and
119
119
  */
120
- declare function Transaction<T, R = unknown>($base: MessageType<T>, builder: ConstructorType<[
121
- MessageType<T>,
122
- ...MessageType<any>[]
123
- ], MessageType<R>>, ...args: MessageType[]): silentium.MessageImpl<R>;
120
+ declare function And($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageRx<boolean>;
124
121
 
125
122
  /**
126
- * By receiving a message with a key and value, collects a table
127
- * of all previously received messages in the form of a structure
128
- * https://silentium-lab.github.io/silentium-components/#/structures/hash-table
123
+ * Convert Any source to boolean source
124
+ * https://silentium-lab.github.io/silentium-components/#/boolean/bool
129
125
  */
130
- declare function HashTable<T>($base: MessageType<[string, unknown]>): silentium.MessageImpl<T>;
126
+ declare function Bool($base: MessageType): silentium.MessageRx<boolean>;
131
127
 
132
- type UnWrap<T> = T extends MessageType<infer U> ? U : T;
133
128
  /**
134
- * Returns record Of data from record Of sources
135
- * https://silentium-lab.github.io/silentium-components/#/structures/record
129
+ * Logical negation of message
130
+ * https://silentium-lab.github.io/silentium-components/#/boolean/not
131
+ */
132
+ declare function Not($base: MessageType<boolean>): silentium.MessageRx<boolean>;
133
+
134
+ /**
135
+ * Logical OR over two messages
136
+ * https://silentium-lab.github.io/silentium-components/#/boolean/or
137
+ */
138
+ declare function Or($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageRx<boolean>;
139
+
140
+ /**
141
+ * Represents object from json
142
+ */
143
+ declare function FromJson<T = Record<string, unknown>>($json: MessageType<string>): silentium.MessageRx<T>;
144
+
145
+ /**
146
+ * Represents json from object
147
+ */
148
+ declare function ToJson($data: MessageType): silentium.MessageRx<string>;
149
+
150
+ /**
151
+ * Represents the first element Of an array.
136
152
  */
137
- declare function Record$1<T>(record: Record$1<string, T>): silentium.MessageImpl<Record$1<string, UnWrap<T>>>;
153
+ declare function First<T extends Array<unknown>>($base: MessageType<T>): silentium.MessageRx<T[0]>;
154
+
155
+ interface Route<T> {
156
+ pattern: string;
157
+ patternFlags?: string;
158
+ message: ConstructorType<[], MessageType<T>>;
159
+ }
160
+ /**
161
+ * Router component what will return template if url matches pattern
162
+ * https://silentium-lab.github.io/silentium-components/#/navigation/router
163
+ */
164
+ declare function Router<T = string>($url: MessageType<string>, $routes: MessageType<Route<T>[]>, $default: ConstructorType<[], MessageType<T>>): MessageType<T> & DestroyableType;
138
165
 
139
166
  /**
140
167
  * Join sources Of strings to one source
141
168
  * https://silentium-lab.github.io/silentium-components/#/string/concatenated
142
169
  */
143
- declare function Concatenated(sources: MessageType<string>[], joinPartSrc?: MessageType<string>): silentium.MessageImpl<string>;
170
+ declare function Concatenated(sources: MessageType<string>[], joinPartSrc?: MessageType<string>): silentium.MessageRx<string>;
144
171
 
145
172
  /**
146
173
  * Allows creating a string template with
@@ -152,91 +179,57 @@ declare class TemplateImpl implements MessageType<string>, DestroyableType {
152
179
  private $src;
153
180
  private $places;
154
181
  private dc;
182
+ private rejections;
155
183
  private vars;
156
184
  constructor($src?: MessageType<string>, $places?: MessageType<Record<string, unknown>>);
157
- pipe(transport: TapType<string>): this;
185
+ then(transport: ConstructorType<[string]>): this;
158
186
  template(value: string): void;
159
187
  /**
160
188
  * Ability to register variable
161
189
  * in concrete place Of template
162
190
  */
163
191
  var(src: MessageType<string>): string;
192
+ catch(rejected: ConstructorType<[unknown]>): this;
164
193
  destroy(): this;
165
194
  }
166
195
 
167
- interface Route<T> {
168
- pattern: string;
169
- patternFlags?: string;
170
- message: TapType<void, MessageType<T>>;
171
- }
172
196
  /**
173
- * Router component what will return template if url matches pattern
174
- * https://silentium-lab.github.io/silentium-components/#/navigation/router
175
- */
176
- declare function Router<T = "string">($url: MessageType<string>, $routes: MessageType<Route<T>[]>, $default: TapType<void, MessageType<T>>): MessageType<T> & DestroyableType;
177
-
178
- /**
179
- * Boolean source what checks what string matches pattern
180
- * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
197
+ * By receiving a message with a key and value, collects a table
198
+ * of all previously received messages in the form of a structure
199
+ * https://silentium-lab.github.io/silentium-components/#/structures/hash-table
181
200
  */
182
- declare function RegexpMatched(patternSrc: MessageType<string>, valueSrc: MessageType<string>, flagsSrc?: MessageType<string>): silentium.MessageImpl<boolean>;
201
+ declare function HashTable<T>($base: MessageType<[string, unknown]>): silentium.MessageRx<T>;
183
202
 
203
+ type UnWrap<T> = T extends MessageType<infer U> ? U : T;
184
204
  /**
185
- * Returns string replaced by regular expression pattern
186
- * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced
205
+ * Returns record Of data from record Of sources
206
+ * https://silentium-lab.github.io/silentium-components/#/structures/record
187
207
  */
188
- declare function RegexpReplaced(valueSrc: MessageType<string>, patternSrc: MessageType<string>, replaceValueSrc: MessageType<string>, flagsSrc?: MessageType<string>): silentium.MessageImpl<string>;
208
+ declare function Record$1<T>(record: Record$1<string, T>): silentium.MessageRx<Record$1<string, UnWrap<T>>>;
189
209
 
190
210
  /**
191
211
  * First match Of regexp
192
212
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
193
213
  */
194
- declare function RegexpMatch(patternSrc: MessageType<string>, valueSrc: MessageType<string>, flagsSrc?: MessageType<string>): silentium.MessageImpl<string[]>;
214
+ declare function RegexpMatch(patternSrc: MaybeMessage<string>, valueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageRx<string[]>;
195
215
 
196
216
  /**
197
- * Ability to mutate some object, helpful when integrate to procedure systems
198
- * https://silentium-lab.github.io/silentium-components/#/system/set
199
- */
200
- declare function Set<T extends Record<string, unknown>>(baseSrc: MessageType<T>, keySrc: MessageType<string>, valueSrc: MessageType<unknown>): silentium.MessageImpl<T>;
201
-
202
- /**
203
- * Logical AND over two messages
204
- * https://silentium-lab.github.io/silentium-components/#/boolean/and
205
- */
206
- declare function And($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageImpl<boolean>;
207
-
208
- /**
209
- * Logical OR over two messages
210
- * https://silentium-lab.github.io/silentium-components/#/boolean/or
211
- */
212
- declare function Or($one: MessageType<boolean>, $two: MessageType<boolean>): silentium.MessageImpl<boolean>;
213
-
214
- /**
215
- * Logical negation of message
216
- * https://silentium-lab.github.io/silentium-components/#/boolean/not
217
- */
218
- declare function Not($base: MessageType<boolean>): silentium.MessageImpl<boolean>;
219
-
220
- /**
221
- * Convert Any source to boolean source
222
- * https://silentium-lab.github.io/silentium-components/#/boolean/bool
223
- */
224
- declare function Bool($base: MessageType): silentium.MessageImpl<boolean>;
225
-
226
- /**
227
- * Represents object from json
217
+ * Boolean source what checks what string matches pattern
218
+ * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
228
219
  */
229
- declare function FromJson<T = Record<string, unknown>>($json: MessageType<string>, error?: TapType): silentium.MessageImpl<T>;
220
+ declare function RegexpMatched(patternSrc: MaybeMessage<string>, valueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageRx<boolean>;
230
221
 
231
222
  /**
232
- * Represents json from object
223
+ * Returns string replaced by regular expression pattern
224
+ * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced
233
225
  */
234
- declare function ToJson($data: MessageType, error?: TapType): silentium.MessageImpl<string>;
226
+ declare function RegexpReplaced(valueSrc: MessageType<string>, patternSrc: MessageType<string>, replaceValueSrc: MessageType<string>, flagsSrc?: MessageType<string>): silentium.MessageRx<string>;
235
227
 
236
228
  /**
237
- * Represents the first element Of an array.
229
+ * Ability to mutate some object, helpful when integrate to procedure systems
230
+ * https://silentium-lab.github.io/silentium-components/#/system/set
238
231
  */
239
- declare function First<T extends Array<unknown>>($base: MessageType<T>): silentium.MessageImpl<T[0]>;
232
+ declare function Set<T extends Record<string, unknown>>(baseSrc: MessageType<T>, keySrc: MessageType<string>, valueSrc: MessageType<unknown>): silentium.MessageRx<T>;
240
233
 
241
- export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, Record$1 as Record, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson, Transaction };
234
+ export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, Record$1 as Record, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
242
235
  export type { Route };