silentium-components 0.0.85 → 0.0.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.87](https://github.com/silentium-lab/silentium-components/compare/v0.0.86...v0.0.87) (2025-11-25)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** path existed component ([0624e5f](https://github.com/silentium-lab/silentium-components/commit/0624e5fdbbc6bfea0ea1540fd344ad935744dd1e))
11
+
12
+ ### [0.0.86](https://github.com/silentium-lab/silentium-components/compare/v0.0.85...v0.0.86) (2025-11-23)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **main:** part typings ([fdd4d65](https://github.com/silentium-lab/silentium-components/commit/fdd4d65c338784bef93b8ccd895e38c45d489599))
18
+
5
19
  ### [0.0.85](https://github.com/silentium-lab/silentium-components/compare/v0.0.84...v0.0.85) (2025-11-23)
6
20
 
7
21
 
@@ -209,10 +209,11 @@ function Part($base, key) {
209
209
  );
210
210
  }
211
211
 
212
- function Path($base, _keyed) {
212
+ function Path($base, _keyed, def) {
213
213
  const $keyed = silentium.ActualMessage(_keyed);
214
+ const $def = silentium.ActualMessage(def);
214
215
  return silentium.Message(function PathImpl(r) {
215
- silentium.All($base, $keyed).then(([base, keyed]) => {
216
+ silentium.All($base, $keyed, $def).then(([base, keyed, d]) => {
216
217
  const keys = keyed.split(".");
217
218
  let value = base;
218
219
  keys.forEach((key) => {
@@ -220,11 +221,19 @@ function Path($base, _keyed) {
220
221
  });
221
222
  if (value !== void 0 && value !== base) {
222
223
  r(value);
224
+ } else if (d !== void 0) {
225
+ r(d);
223
226
  }
224
227
  });
225
228
  });
226
229
  }
227
230
 
231
+ function PathExisted(_base, _keyed) {
232
+ const $base = silentium.ActualMessage(_base);
233
+ const $keyed = silentium.ActualMessage(_keyed);
234
+ return silentium.Empty(Path($base, $keyed, silentium.Nothing));
235
+ }
236
+
228
237
  function Polling($base, $trigger) {
229
238
  return silentium.Message(function PollingImpl(r) {
230
239
  $trigger.then(() => {
@@ -540,6 +549,7 @@ exports.OnlyChanged = OnlyChanged;
540
549
  exports.Or = Or;
541
550
  exports.Part = Part;
542
551
  exports.Path = Path;
552
+ exports.PathExisted = PathExisted;
543
553
  exports.Polling = Polling;
544
554
  exports.Record = Record;
545
555
  exports.RegexpMatch = RegexpMatch;
@@ -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/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
+ {"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/PathExisted.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} 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>): MessageSourceType<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>, def?: MaybeMessage<T>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage(def);\n return Message<R>(function PathImpl(r) {\n All($base, $keyed, $def).then(([base, keyed, d]) => {\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 } else if (d !== undefined) {\n r(d as R);\n }\n });\n });\n}\n","import { ActualMessage, Empty, MaybeMessage, Nothing } from \"silentium\";\n\nimport { Path } from \"../behaviors/Path\";\n\n/**\n * Path with separate empty message\n */\nexport function PathExisted<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>) {\n const $base = ActualMessage(_base);\n const $keyed = ActualMessage(_keyed);\n return Empty(Path<R>($base, $keyed, Nothing));\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","Empty","Nothing","ExecutorApplied","Of","r","record","Rejections","isDestroyable"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as silentium from 'silentium';
2
- import { MaybeMessage, MessageType, ConstructorType, DestroyableType, MessageSourceType, SourceType } from 'silentium';
2
+ import { MaybeMessage, MessageType, ConstructorType, DestroyableType, MessageSourceType } from 'silentium';
3
3
 
4
4
  /**
5
5
  * Allows switching between left and right messages depending on condition
@@ -80,13 +80,18 @@ declare function OnlyChanged<T>($base: MessageType<T>): silentium.MessageRx<T>;
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: MessageSourceType<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>): MessageSourceType<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.MessageRx<R>;
89
+ declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>): silentium.MessageRx<R>;
90
+
91
+ /**
92
+ * Path with separate empty message
93
+ */
94
+ declare function PathExisted<R, T extends object | Array<any> = any, K extends string = any>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>): silentium.EmptyImpl<R>;
90
95
 
91
96
  /**
92
97
  * Active polling of $base message
@@ -231,5 +236,5 @@ declare function RegexpReplaced(valueSrc: MessageType<string>, patternSrc: Messa
231
236
  */
232
237
  declare function Set<T extends Record<string, unknown>>(baseSrc: MessageType<T>, keySrc: MessageType<string>, valueSrc: MessageType<unknown>): silentium.MessageRx<T>;
233
238
 
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 };
239
+ export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, PathExisted, Polling, Record$1 as Record, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
235
240
  export type { Route };
@@ -1,4 +1,4 @@
1
- import { ActualMessage, Message, Primitive, DestroyContainer, Shared, Filtered, isFilled, Late, MessageSource, Applied, All, ExecutorApplied, Of, Rejections, isDestroyable } from 'silentium';
1
+ import { ActualMessage, Message, Primitive, DestroyContainer, Shared, Filtered, isFilled, Late, MessageSource, Applied, All, Empty, Nothing, ExecutorApplied, Of, Rejections, isDestroyable } from 'silentium';
2
2
 
3
3
  function Branch(_condition, _left, _right) {
4
4
  const $condition = ActualMessage(_condition);
@@ -207,10 +207,11 @@ function Part($base, key) {
207
207
  );
208
208
  }
209
209
 
210
- function Path($base, _keyed) {
210
+ function Path($base, _keyed, def) {
211
211
  const $keyed = ActualMessage(_keyed);
212
+ const $def = ActualMessage(def);
212
213
  return Message(function PathImpl(r) {
213
- All($base, $keyed).then(([base, keyed]) => {
214
+ All($base, $keyed, $def).then(([base, keyed, d]) => {
214
215
  const keys = keyed.split(".");
215
216
  let value = base;
216
217
  keys.forEach((key) => {
@@ -218,11 +219,19 @@ function Path($base, _keyed) {
218
219
  });
219
220
  if (value !== void 0 && value !== base) {
220
221
  r(value);
222
+ } else if (d !== void 0) {
223
+ r(d);
221
224
  }
222
225
  });
223
226
  });
224
227
  }
225
228
 
229
+ function PathExisted(_base, _keyed) {
230
+ const $base = ActualMessage(_base);
231
+ const $keyed = ActualMessage(_keyed);
232
+ return Empty(Path($base, $keyed, Nothing));
233
+ }
234
+
226
235
  function Polling($base, $trigger) {
227
236
  return Message(function PollingImpl(r) {
228
237
  $trigger.then(() => {
@@ -517,5 +526,5 @@ class TemplateImpl {
517
526
  }
518
527
  }
519
528
 
520
- export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, Record, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
529
+ export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, PathExisted, Polling, Record, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
521
530
  //# sourceMappingURL=silentium-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","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":["key","r","record"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.js","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/PathExisted.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} 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>): MessageSourceType<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>, def?: MaybeMessage<T>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage(def);\n return Message<R>(function PathImpl(r) {\n All($base, $keyed, $def).then(([base, keyed, d]) => {\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 } else if (d !== undefined) {\n r(d as R);\n }\n });\n });\n}\n","import { ActualMessage, Empty, MaybeMessage, Nothing } from \"silentium\";\n\nimport { Path } from \"../behaviors/Path\";\n\n/**\n * Path with separate empty message\n */\nexport function PathExisted<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>) {\n const $base = ActualMessage(_base);\n const $keyed = ActualMessage(_keyed);\n return Empty(Path<R>($base, $keyed, Nothing));\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":["key","r","record"],"mappings":";;AAMgB,SAAA,MAAA,CACd,UACA,EAAA,KAAA,EACA,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAa,cAAc,UAAU,CAAA;AAC3C,EAAM,MAAA,KAAA,GAAQ,cAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAAS,MAAU,IAAA,aAAA,CAAc,MAAM,CAAA;AAC7C,EAAO,OAAA,OAAA,CAAqB,SAAS,UAAA,CAAW,CAAG,EAAA;AACjD,IAAM,MAAA,IAAA,GAAO,UAAU,KAAK,CAAA;AAC5B,IAAI,IAAA,KAAA;AACJ,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAA,KAAA,GAAQ,UAAU,MAAM,CAAA;AAAA;AAE1B,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,MAAA,GAAS,KAAK,SAAU,EAAA;AAAA,iBACf,KAAO,EAAA;AAChB,QAAA,MAAA,GAAS,MAAM,SAAU,EAAA;AAAA;AAE3B,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,CAAA,CAAE,MAAM,CAAA;AAAA;AACV,KACD,CAAA;AAAA,GACF,CAAA;AACH;;AClBgB,SAAA,UAAA,CACd,UACA,EAAA,KAAA,EACA,MAC4C,EAAA;AAC5C,EAAO,OAAA,OAAA,CAAQ,SAAS,cAAA,CAAe,CAAG,EAAA;AACxC,IAAA,MAAM,KAAK,gBAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAW,UAAA,EAAA;AACX,MAAI,IAAA,QAAA;AACJ,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,QAAA,GAAW,KAAM,EAAA;AAAA,iBACR,MAAQ,EAAA;AACjB,QAAA,QAAA,GAAW,MAAO,EAAA;AAAA;AAEpB,MAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,QAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AACf,QAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AAAA;AACjB,KACD,CAAA;AACD,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AChCgB,SAAA,QAAA,CACd,WACA,QACgB,EAAA;AAChB,EAAO,OAAA,OAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAA,CAAA,CAAE,SAAS,CAAA;AAAA,KACZ,CAAA;AAAA,GACF,CAAA;AACH;;ACFgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAW,cAAc,QAAQ,CAAA;AACvC,EAAA,OAAO,OAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,IAAI,KAAgD,GAAA,CAAA;AACpD,IAAM,MAAA,IAAA,GAAO,OAAO,KAAK,CAAA;AACzB,IAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AAEpB,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,6BAA6B,CAAC,CAAA;AAAA,SAC9C,OAAO,CAAA;AAEV,MAAA,MAAM,CAAI,GAAA,QAAA,CAAS,IAAM,EAAA,MAAM,CAAC,cAAc,CAAA;AAC9C,MAAA,CAAA,CAAE,KAAK,OAAO,CAAA;AAEd,MAAA,IAAA,CAAK,KAAK,MAAM;AACd,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;ACtCgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAO,OAAA,OAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAM,MAAA,IAAA,GAAO,UAAU,KAAK,CAAA;AAC5B,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,KAAK,SAAU,EAAA;AAC7B,MAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,SAAY,KAAuC,EAAA;AACjE,EAAO,OAAA,OAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,MAAM,CAAI,GAAA,SAAA,CAAU,KAAK,CAAA,CAAE,SAAU,EAAA;AACrC,IAAI,IAAA,QAAA,CAAS,CAAC,CAAG,EAAA;AACf,MAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,GACD,CAAA;AACH;;ACPgB,SAAA,KAAA,CACd,OACA,IAAiB,GAAA,IACjB,OAAoB,GAAA,IACpB,MACA,EAAA;AACA,EAAA,MAAM,aAAa,IAAQ,EAAA;AAC3B,EAAA,IAAI,WAAW,MAAW,EAAA;AACxB,IAAA,MAAA,GAAS,CAAC,KAAU,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAEtD,EAAO,OAAA,aAAA;AAAA,IACL,SAAS,UAAU,CAAG,EAAA;AACpB,MAAM,MAAA,eAAA,GAAkB,OAAQ,CAAA,UAAA,EAAY,MAAM,CAAA;AAClD,MAAI,GAAA,CAAA,eAAA,EAAiB,KAAK,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtD,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAEF,QAAA,CAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,cAAI,IAAA,IAAA,CAAK,QAAS,CAAA,GAAG,CAAG,EAAA;AACtB,gBAAO,OAAA,IAAA;AAAA;AAET,cAAI,IAAA,OAAA,CAAQ,QAAS,CAAA,GAAG,CAAG,EAAA;AACzB,gBAAO,OAAA,KAAA;AAAA;AAET,cAAO,OAAA,KAAA,KAAW,KAAiC,GAAG,CAAA;AAAA,aACvD;AAAA;AACH,SACF;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,CAAM,KAAA;AACL,MAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA;AAClB,GACF;AACF;;ACnCgB,SAAA,OAAA,CACd,QACA,OACA,EAAA;AACA,EAAO,OAAA,OAAA,CAAiB,SAAS,WAAA,CAAY,CAAG,EAAA;AAC9C,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,IAAI,CAAC,CAAA;AACzB,IAAA,OAAA,CAAQ,IAAK,CAAA,MAAM,CAAE,CAAA,KAAK,CAAC,CAAA;AAAA,GAC5B,CAAA;AACH;;ACTgB,SAAA,IAAA,CAAQ,OAAuB,KAA6B,EAAA;AAC1E,EAAO,OAAA,OAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,MAAS,GAAA,KAAA;AACb,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACtB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,MAAM,CAAI,GAAA,QAAA,CAAS,KAAO,EAAA,MAAM,CAAC,MAAM,CAAA;AACvC,IAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACT,CAAA;AACH;;ACVO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAA,OAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,IAAiB,GAAA,IAAA;AACrB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,CAAM,KAAA,IAAA,IAAQ,QAAS,CAAA,CAAC,CAAG,EAAA;AAC7B,QAAA,CAAA,CAAE,CAAC,CAAA;AACH,QAAO,IAAA,GAAA,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVO,SAAS,YAAe,KAAuB,EAAA;AACpD,EAAO,OAAA,OAAA,CAAW,SAAS,eAAA,CAAgB,CAAG,EAAA;AAC5C,IAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAQ,KAAA,GAAA,IAAA;AAAA,OACH,MAAA;AACL,QAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACFgB,SAAA,IAAA,CAId,OAA6B,GAA4C,EAAA;AACzE,EAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA;AAChC,EAAA,MAAM,YAAe,GAAA,MAAA,CAAO,aAAc,CAAA,GAAG,CAAC,CAAA;AAC9C,EAAO,OAAA,aAAA;AAAA,IACL,SAAS,SAAS,CAAG,EAAA;AACnB,MAAI,GAAA,CAAA,WAAA,EAAa,YAAY,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AACrD,QAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,QAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,QAAK,IAAA,CAAA,OAAA,CAAQ,CAACA,IAAgB,KAAA;AAC5B,UAAA,KAAA,GAAS,MAAkCA,IAAG,CAAA;AAAA,SAC/C,CAAA;AACD,QAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,UAAA,CAAA,CAAE,KAAU,CAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAMA,MAAAA,IAAAA,GAAM,UAAU,YAAY,CAAA;AAClC,MAAI,IAAA,QAAA,CAASA,IAAG,CAAG,EAAA;AACjB,QAAM,MAAA,IAAA,GAAO,UAAU,KAAK,CAAA;AAC5B,QAAA,KAAA,CAAM,GAAI,CAAA;AAAA,UACR,GAAG,KAAK,sBAAuB,EAAA;AAAA,UAC/B,CAACA,IAAAA,CAAI,sBAAuB,EAAC,GAAG;AAAA,SAC5B,CAAA;AAAA;AACR;AACF,GACF;AACF;;AClCgB,SAAA,IAAA,CAId,KAAuB,EAAA,MAAA,EAAyB,GAAuB,EAAA;AACvE,EAAM,MAAA,MAAA,GAAS,cAAc,MAAM,CAAA;AACnC,EAAM,MAAA,IAAA,GAAO,cAAc,GAAG,CAAA;AAC9B,EAAO,OAAA,OAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAI,GAAA,CAAA,KAAA,EAAO,MAAQ,EAAA,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,CAAC,CAAM,KAAA;AAClD,MAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,MAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,MAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,QAAA,KAAA,GAAS,MAAkC,GAAG,CAAA;AAAA,OAC/C,CAAA;AACD,MAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,QAAA,CAAA,CAAE,KAAU,CAAA;AAAA,OACd,MAAA,IAAW,MAAM,MAAW,EAAA;AAC1B,QAAA,CAAA,CAAE,CAAM,CAAA;AAAA;AACV,KACD,CAAA;AAAA,GACF,CAAA;AACH;;AC1BgB,SAAA,WAAA,CAId,OAAwB,MAAyB,EAAA;AACjD,EAAM,MAAA,KAAA,GAAQ,cAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAAS,cAAc,MAAM,CAAA;AACnC,EAAA,OAAO,KAAM,CAAA,IAAA,CAAQ,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAC,CAAA;AAC9C;;ACTgB,SAAA,OAAA,CAAW,OAAuB,QAA0B,EAAA;AAC1E,EAAO,OAAA,OAAA,CAAW,SAAS,WAAA,CAAY,CAAG,EAAA;AACxC,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,KACb,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,IAAA,CAAQ,SAAyB,QAAuB,EAAA;AACtE,EAAO,OAAA,OAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAM,MAAA,UAAA,GAAa,UAAU,OAAO,CAAA;AACpC,IAAA,UAAA,CAAW,SAAU,EAAA;AACrB,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,WAAW,SAAU,EAAA;AACnC,MAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACLgB,SAAA,IAAA,CAAQ,OAA0B,EAAA,KAAA,GAAgB,CAAG,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQ,cAAc,OAAO,CAAA;AACnC,EAAO,OAAA,OAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgB,eAAA,CAAA,KAAA,EAAO,CAAC,EAAO,KAAA;AAC7B,MAAA,OAAO,CAAC,CAAM,KAAA;AACZ,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,EAAA,CAAG,CAAC,CAAA;AAAA,WACH,KAAK,CAAA;AAAA,OACV;AAAA,KACD,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GACV,CAAA;AACH;;ACrBO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAA,OAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAqB,kBAAA,GAAA,IAAA;AACrB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAqB,kBAAA,GAAA,KAAA;AACrB,QAAA,IAAI,cAAc,IAAM,EAAA;AACtB,UAAA,CAAA,CAAE,SAAS,CAAA;AACX,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACvBgB,SAAA,GAAA,CAAI,MAA4B,IAA4B,EAAA;AAC1E,EAAO,OAAA,OAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAI,GAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACNO,SAAS,KAAK,KAAoB,EAAA;AACvC,EAAO,OAAA,OAAA,CAAiB,SAAS,QAAA,CAAS,CAAG,EAAA;AAC3C,IAAA,OAAA,CAAQ,KAAO,EAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GAC/B,CAAA;AACH;;ACJO,SAAS,IAAI,KAA6B,EAAA;AAC/C,EAAO,OAAA,OAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,KACL,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,EAAA,CAAG,MAA4B,IAA4B,EAAA;AACzE,EAAO,OAAA,OAAA,CAAiB,SAAS,MAAA,CAAO,CAAG,EAAA;AACzC,IAAI,GAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACPO,SAAS,SACd,KACA,EAAA;AACA,EAAA,OAAO,OAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AACnB,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACjB,CAAG,EAAA;AACV,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,CAAC,EAAE,CAAC,CAAA;AAAA;AAChD,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,OAAO,KAAoB,EAAA;AACzC,EAAA,OAAO,OAAgB,CAAA,SAAS,UAAW,CAAA,OAAA,EAAS,MAAQ,EAAA;AAC1D,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAkB,KAAA;AAC5B,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OACtB,CAAA,MAAA;AACN,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AAC/C,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVO,SAAS,MAAgC,KAAuB,EAAA;AACrE,EAAO,OAAA,OAAA,CAAc,SAAS,SAAA,CAAU,CAAG,EAAA;AACzC,IAAQ,OAAA,CAAA,KAAA,EAAO,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACnC,CAAA;AACH;;ACHO,SAAS,YACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAA,EAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAW,cAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAAS,cAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAAS,cAAc,QAAQ,CAAA;AACrC,EAAO,OAAA,OAAA,CAAkB,SAAS,eAAA,CAAgB,CAAG,EAAA;AACnD,IAAI,GAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAE,CAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,KACf,CAAA;AAAA,GACF,CAAA;AACH;;ACdO,SAAS,cACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAA,EAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAW,cAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAAS,cAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAAS,cAAc,QAAQ,CAAA;AACrC,EAAO,OAAA,OAAA,CAAiB,SAAS,iBAAA,CAAkB,CAAG,EAAA;AACpD,IAAI,GAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,CAAA,CAAE,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,KACzC,CAAA;AAAA,GACF,CAAA;AACH;;ACbO,SAAS,eACd,QACA,EAAA,UAAA,EACA,iBACA,QAAgC,GAAA,EAAA,CAAG,EAAE,CACrC,EAAA;AACA,EAAO,OAAA,OAAA,CAAgB,SAAS,kBAAA,CAAmB,CAAG,EAAA;AACpD,IAAA,GAAA,CAAI,UAAY,EAAA,QAAA,EAAU,eAAiB,EAAA,QAAQ,CAAE,CAAA,IAAA;AAAA,MACnD,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AACzC,QAAE,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,CAAG,EAAA,YAAY,CAAC,CAAA;AAAA;AACnE,KACF;AAAA,GACD,CAAA;AACH;;ACbgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,cAAc,OAAO,CAAA;AACnC,EAAM,MAAA,IAAA,GAAO,cAAc,MAAM,CAAA;AACjC,EAAM,MAAA,MAAA,GAAS,cAAc,QAAQ,CAAA;AACrC,EAAO,OAAA,OAAA,CAAW,SAAS,OAAA,CAAQ,CAAG,EAAA;AACpC,IAAI,GAAA,CAAA,KAAA,EAAO,IAAM,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,GAAK,EAAA,KAAK,CAAM,KAAA;AACpD,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,CAAA,CAAE,IAAI,CAAA;AAAA,KACP,CAAA;AAAA,GACF,CAAA;AACH;;ACEgB,SAAA,MAAA,CACd,IACA,EAAA,OAAA,EACA,QACkC,EAAA;AAClC,EAAO,OAAA,OAAA,CAAW,SAAS,UAAA,CAAW,CAAG,EAAA;AACvC,IAAA,MAAM,KAAK,gBAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAI,GAAA,CAAA,OAAA,EAAS,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,MAAA,EAAQ,GAAG,CAAM,KAAA;AACzC,MAAW,UAAA,EAAA;AACX,MAAA,MAAM,QAAW,GAAA,GAAA;AAAA,QACf,GAAG,MAAO,CAAA,GAAA;AAAA,UAAI,CAACC,EACb,KAAA,aAAA;AAAA,YACE,EAAA,CAAGA,GAAE,OAAO,CAAA;AAAA,YACZ,GAAG,GAAG,CAAA;AAAA,YACNA,EAAE,CAAA,YAAA,GAAe,EAAGA,CAAAA,EAAAA,CAAE,YAAY,CAAI,GAAA;AAAA;AACxC;AACF,OACF;AACA,MAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,QAAA,MAAM,QAAQ,OAAQ,CAAA,SAAA,CAAU,CAAC,CAAA,KAAM,MAAM,IAAI,CAAA;AAEjD,QAAA,IAAI,UAAU,EAAI,EAAA;AAChB,UAAA,MAAM,WAAW,QAAS,EAAA;AAC1B,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AAGjB,QAAA,IAAI,QAAQ,EAAI,EAAA;AACd,UAAA,MAAM,QAAW,GAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,EAAA;AACvC,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AACjB,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;ACxDO,SAAS,YACd,CAAA,OAAA,EACA,WAAmC,GAAA,EAAA,CAAG,EAAE,CACxC,EAAA;AACA,EAAO,OAAA,OAAA,CAAgB,SAAS,gBAAA,CAAiB,CAAG,EAAA;AAClD,IAAI,GAAA,CAAA,WAAA,EAAa,GAAG,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,QAAa,EAAA,GAAA,OAAO,CAAM,KAAA;AAC5D,MAAE,CAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KACzB,CAAA;AAAA,GACF,CAAA;AACH;;ACRO,SAAS,UAAa,KAAuC,EAAA;AAClE,EAAO,OAAA,OAAA,CAAW,SAAS,aAAA,CAAc,CAAG,EAAA;AAC1C,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,CAAM,IAAK,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAC3B,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,CAAA,CAAE,MAAW,CAAA;AAAA,KACd,CAAA;AAAA,GACF,CAAA;AACH;;ACRO,SAAS,OAAU,MAA2B,EAAA;AACnD,EAAO,OAAA,OAAA,CAAmC,SAAS,UAAA,CAAW,CAAG,EAAA;AAC/D,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,aAAc,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KACxC,CAAA;AACD,IAAI,GAAA,CAAA,GAAI,OAAO,MAAO,CAAA,MAAM,CAAS,CAAE,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACvD,MAAA,MAAMC,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,CAAA,CAAEA,OAAM,CAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA;AACH;;;;;ACHgB,SAAA,QAAA,CACd,OAA4B,EAAG,CAAA,EAAE,GACjC,OAAgD,GAAA,EAAA,CAAG,EAAE,CACrD,EAAA;AACA,EAAO,OAAA,IAAI,YAAa,CAAA,IAAA,EAAM,OAAO,CAAA;AACvC;AAEA,MAAM,YAA6D,CAAA;AAAA,EAO1D,WAAA,CACG,OAA4B,EAAG,CAAA,EAAE,GACjC,OAAgD,GAAA,EAAA,CAAG,EAAE,CAC7D,EAAA;AAFQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AARV,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAK,gBAAiB,EAAA,CAAA;AAC9B,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAI,UAAW,EAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAoC,EAAA;AAAA,MAC1C,IAAA,EAAM,GAAG,MAAM;AAAA,KACjB,CAAA;AAAA;AAKG,EAEI,KAAK,SAA4C,EAAA;AACtD,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAA,OAAA,CAAQ,GAAI,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,CAAK,OAAS,EAAA,KAAK,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,IAAI,CAAM,KAAA;AACpE,MAAI,IAAA;AACF,QAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC3C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AACD,QAAO,MAAA,CAAA,OAAA,CAAQ,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC1C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AAAA,eACM,CAAG,EAAA;AACV,QAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA;AAG1B,MAAO,OAAA,IAAA;AAAA,KACR,CAAE,CAAA,IAAA,CAAK,SAAS,CAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAK,IAAA,CAAA,IAAA,GAAO,GAAG,KAAK,CAAA;AAAA;AACtB;AAAA;AAAA;AAAA;AAAA,EAMO,IAAI,GAA0B,EAAA;AACnC,IAAA,MAAM,MAAS,GAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,IAAI,CAAE,CAAA,MAAA;AACtC,IAAM,MAAA,OAAA,GAAU,OAAO,MAAM,CAAA,CAAA;AAC7B,IAAI,IAAA,aAAA,CAAc,GAAG,CAAG,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,CAAG,IAAI,GAAG,CAAA;AAAA;AAEjB,IAAK,IAAA,CAAA,IAAA,CAAK,OAAO,CAAI,GAAA,GAAA;AACrB,IAAO,OAAA,OAAA;AAAA;AACT,EAEO,MAAM,QAA4C,EAAA;AACvD,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,GAAG,OAAQ,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;"}
@@ -1 +1 @@
1
- var silentium=function(e,t){"use strict";function n(e,n,s=t.Of("")){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=t.ActualMessage(s);return t.Message((function(e){t.All(i,r,c).then((([t,n,s])=>{e(new RegExp(t,s).test(n))}))}))}function s(e){return t.Message((function(n){const s=Object.keys(e);s.forEach((n=>{e[n]=t.ActualMessage(e[n])})),t.All(...Object.values(e)).then((e=>{const t={};e.forEach(((e,n)=>{t[s[n]]=e})),n(t)}))}))}var i=Object.defineProperty,r=(e,t,n)=>((e,t,n)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);class c{constructor(e=t.Of(""),n=t.Of({})){this.$src=e,this.$places=n,r(this,"dc",t.DestroyContainer()),r(this,"rejections",new t.Rejections),r(this,"vars",{$TPL:t.Of("$TPL")})}then(e){const n=s(this.vars);return t.Applied(t.All(this.$src,this.$places,n),(([e,t,n])=>{try{Object.entries(t).forEach((([t,n])=>{e=e.replaceAll(t,String(n))})),Object.entries(n).forEach((([t,n])=>{e=e.replaceAll(t,String(n))}))}catch(e){this.rejections.reject(e)}return e})).then(e),this}template(e){this.$src=t.Of(e)}var(e){const n=`$var${Object.keys(this.vars).length}`;return t.isDestroyable(e)&&this.dc.add(e),this.vars[n]=e,n}catch(e){return this.rejections.catch(e),this}destroy(){return this.dc.destroy(),this}}return e.And=function(e,n){return t.Message((function(s){t.All(e,n).then((([e,t])=>{s(!(!e||!t))}))}))},e.Bool=function(e){return t.Message((function(n){t.Applied(e,Boolean).then(n)}))},e.Branch=function(e,n,s){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=s&&t.ActualMessage(s);return t.Message((function(e){const n=t.Primitive(r);let s;void 0!==c&&(s=t.Primitive(c)),i.then((t=>{let i=null;t?i=n.primitive():s&&(i=s.primitive()),null!==i&&e(i)}))}))},e.BranchLazy=function(e,n,s){return t.Message((function(i){const r=t.DestroyContainer(),c=()=>{r.destroy()};return e.then((e=>{let t;c(),e?t=n():s&&(t=s()),void 0!==t&&(t.then(i),r.add(t))})),c}))},e.Concatenated=function(e,n=t.Of("")){return t.Message((function(s){t.All(n,...e).then((([e,...t])=>{s(t.join(e))}))}))},e.Constant=function(e,n){return t.Message((function(t){n.then((()=>{t(e)}))}))},e.Deadline=function(e,n){const s=t.ActualMessage(n);return t.Message((function(n,i){let r=0;const c=t.Shared(e);s.then((e=>{r&&clearTimeout(r);let s=!1;r=setTimeout((()=>{s||(s=!0,i(new Error("Timeout reached in Deadline")))}),e);t.Filtered(c,(()=>!s)).then(n),c.then((()=>{s=!0}))}))}))},e.Deferred=function(e,n){return t.Message((function(s){const i=t.Primitive(e);n.then((()=>{const e=i.primitive();t.isFilled(e)&&s(e)}))}))},e.Detached=function(e){return t.Message((function(n){const s=t.Primitive(e).primitive();t.isFilled(s)&&n(s)}))},e.Dirty=function(e,n=[],s=[],i){const r=t.Late();return void 0===i&&(i=e=>JSON.parse(JSON.stringify(e))),t.MessageSource((function(c){const o=t.Applied(r,i);t.All(o,e).then((([e,t])=>{e&&c(Object.fromEntries(Object.entries(e).filter((([e,i])=>!!n.includes(e)||!s.includes(e)&&i!==t[e]))))}))}),(e=>{r.use(e)}))},e.First=function(e){return t.Message((function(n){t.Applied(e,(e=>e[0])).then(n)}))},e.FromJson=function(e){return t.Message((function(t,n){e.then((e=>{try{t(JSON.parse(e))}catch(e){n(new Error(`Failed to parse JSON: ${e}`))}}))}))},e.HashTable=function(e){return t.Message((function(t){const n={};e.then((([e,s])=>{n[e]=s,t(n)}))}))},e.Loading=function(e,n){return t.Message((function(t){e.then((()=>t(!0))),n.then((()=>t(!1)))}))},e.Lock=function(e,n){return t.Message((function(s){let i=!1;n.then((e=>{i=e}));t.Filtered(e,(()=>!i)).then(s)}))},e.Memo=function(e){return t.Message((function(n){let s=null;e.then((e=>{e!==s&&t.isFilled(e)&&(n(e),s=e)}))}))},e.Not=function(e){return t.Message((function(t){e.then((e=>{t(!e)}))}))},e.OnlyChanged=function(e){return t.Message((function(t){let n=!1;e.then((e=>{!1===n?n=!0:t(e)}))}))},e.Or=function(e,n){return t.Message((function(s){t.All(e,n).then((([e,t])=>{s(!(!e&&!t))}))}))},e.Part=function(e,n){const s=t.Shared(e),i=t.Shared(t.ActualMessage(n));return t.MessageSource((function(e){t.All(s,i).then((([t,n])=>{const s=n.split(".");let i=t;s.forEach((e=>{i=i[e]})),void 0!==i&&i!==t&&e(i)}))}),(n=>{const s=t.Primitive(i);if(t.isFilled(s)){const i=t.Primitive(e);e.use({...i.primitiveWithException(),[s.primitiveWithException()]:n})}}))},e.Path=function(e,n){const s=t.ActualMessage(n);return t.Message((function(n){t.All(e,s).then((([e,t])=>{const s=t.split(".");let i=e;s.forEach((e=>{i=i[e]})),void 0!==i&&i!==e&&n(i)}))}))},e.Polling=function(e,n){return t.Message((function(t){n.then((()=>{e.then(t)}))}))},e.Record=s,e.RegexpMatch=function(e,n,s=t.Of("")){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=t.ActualMessage(s);return t.Message((function(e){t.All(i,r,c).then((([t,n,s])=>{const i=new RegExp(t,s).exec(n);e(i??[])}))}))},e.RegexpMatched=n,e.RegexpReplaced=function(e,n,s,i=t.Of("")){return t.Message((function(r){t.All(n,e,s,i).then((([e,t,n,s])=>{r(String(t).replace(new RegExp(e,s),n))}))}))},e.Router=function(e,s,i){return t.Message((function(r){const c=t.DestroyContainer(),o=()=>{c.destroy()};return t.All(s,e).then((([e,s])=>{o();t.All(...e.map((e=>n(t.Of(e.pattern),t.Of(s),e.patternFlags?t.Of(e.patternFlags):void 0)))).then((t=>{const n=t.findIndex((e=>!0===e));if(-1===n){const e=i();c.add(e),e.then(r)}if(n>-1){const t=e[n].message();c.add(t),t.then(r)}}))})),o}))},e.Set=function(e,n,s){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=t.ActualMessage(s);return t.Message((function(e){t.All(i,r,c).then((([t,n,s])=>{t[n]=s,e(t)}))}))},e.Shot=function(e,n){return t.Message((function(s){const i=t.Primitive(e);i.primitive(),n.then((()=>{const e=i.primitive();t.isFilled(e)&&s(e)}))}))},e.Task=function(e,n=0){const s=t.ActualMessage(e);return t.Message((function(e){let i=null;t.ExecutorApplied(s,(e=>t=>{i&&clearTimeout(i),i=setTimeout((()=>{e(t)}),n)})).then(e)}))},e.Template=function(e=t.Of(""),n=t.Of({})){return new c(e,n)},e.Tick=function(e){return t.Message((function(t){let n=!1,s=null;e.then((e=>{s=e,n||(n=!0,queueMicrotask((()=>{n=!1,null!==s&&(t(s),s=null)})))}))}))},e.ToJson=function(e){return t.Message((function(t,n){e.then((e=>{try{t(JSON.stringify(e))}catch{n(new Error("Failed to convert to JSON"))}}))}))},e}({},silentium);
1
+ var silentium=function(e,t){"use strict";function n(e,n,s){const i=t.ActualMessage(n),r=t.ActualMessage(s);return t.Message((function(n){t.All(e,i,r).then((([e,t,s])=>{const i=t.split(".");let r=e;i.forEach((e=>{r=r[e]})),void 0!==r&&r!==e?n(r):void 0!==s&&n(s)}))}))}function s(e,n,s=t.Of("")){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=t.ActualMessage(s);return t.Message((function(e){t.All(i,r,c).then((([t,n,s])=>{e(new RegExp(t,s).test(n))}))}))}function i(e){return t.Message((function(n){const s=Object.keys(e);s.forEach((n=>{e[n]=t.ActualMessage(e[n])})),t.All(...Object.values(e)).then((e=>{const t={};e.forEach(((e,n)=>{t[s[n]]=e})),n(t)}))}))}var r=Object.defineProperty,c=(e,t,n)=>((e,t,n)=>t in e?r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);class o{constructor(e=t.Of(""),n=t.Of({})){this.$src=e,this.$places=n,c(this,"dc",t.DestroyContainer()),c(this,"rejections",new t.Rejections),c(this,"vars",{$TPL:t.Of("$TPL")})}then(e){const n=i(this.vars);return t.Applied(t.All(this.$src,this.$places,n),(([e,t,n])=>{try{Object.entries(t).forEach((([t,n])=>{e=e.replaceAll(t,String(n))})),Object.entries(n).forEach((([t,n])=>{e=e.replaceAll(t,String(n))}))}catch(e){this.rejections.reject(e)}return e})).then(e),this}template(e){this.$src=t.Of(e)}var(e){const n=`$var${Object.keys(this.vars).length}`;return t.isDestroyable(e)&&this.dc.add(e),this.vars[n]=e,n}catch(e){return this.rejections.catch(e),this}destroy(){return this.dc.destroy(),this}}return e.And=function(e,n){return t.Message((function(s){t.All(e,n).then((([e,t])=>{s(!(!e||!t))}))}))},e.Bool=function(e){return t.Message((function(n){t.Applied(e,Boolean).then(n)}))},e.Branch=function(e,n,s){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=s&&t.ActualMessage(s);return t.Message((function(e){const n=t.Primitive(r);let s;void 0!==c&&(s=t.Primitive(c)),i.then((t=>{let i=null;t?i=n.primitive():s&&(i=s.primitive()),null!==i&&e(i)}))}))},e.BranchLazy=function(e,n,s){return t.Message((function(i){const r=t.DestroyContainer(),c=()=>{r.destroy()};return e.then((e=>{let t;c(),e?t=n():s&&(t=s()),void 0!==t&&(t.then(i),r.add(t))})),c}))},e.Concatenated=function(e,n=t.Of("")){return t.Message((function(s){t.All(n,...e).then((([e,...t])=>{s(t.join(e))}))}))},e.Constant=function(e,n){return t.Message((function(t){n.then((()=>{t(e)}))}))},e.Deadline=function(e,n){const s=t.ActualMessage(n);return t.Message((function(n,i){let r=0;const c=t.Shared(e);s.then((e=>{r&&clearTimeout(r);let s=!1;r=setTimeout((()=>{s||(s=!0,i(new Error("Timeout reached in Deadline")))}),e);t.Filtered(c,(()=>!s)).then(n),c.then((()=>{s=!0}))}))}))},e.Deferred=function(e,n){return t.Message((function(s){const i=t.Primitive(e);n.then((()=>{const e=i.primitive();t.isFilled(e)&&s(e)}))}))},e.Detached=function(e){return t.Message((function(n){const s=t.Primitive(e).primitive();t.isFilled(s)&&n(s)}))},e.Dirty=function(e,n=[],s=[],i){const r=t.Late();return void 0===i&&(i=e=>JSON.parse(JSON.stringify(e))),t.MessageSource((function(c){const o=t.Applied(r,i);t.All(o,e).then((([e,t])=>{e&&c(Object.fromEntries(Object.entries(e).filter((([e,i])=>!!n.includes(e)||!s.includes(e)&&i!==t[e]))))}))}),(e=>{r.use(e)}))},e.First=function(e){return t.Message((function(n){t.Applied(e,(e=>e[0])).then(n)}))},e.FromJson=function(e){return t.Message((function(t,n){e.then((e=>{try{t(JSON.parse(e))}catch(e){n(new Error(`Failed to parse JSON: ${e}`))}}))}))},e.HashTable=function(e){return t.Message((function(t){const n={};e.then((([e,s])=>{n[e]=s,t(n)}))}))},e.Loading=function(e,n){return t.Message((function(t){e.then((()=>t(!0))),n.then((()=>t(!1)))}))},e.Lock=function(e,n){return t.Message((function(s){let i=!1;n.then((e=>{i=e}));t.Filtered(e,(()=>!i)).then(s)}))},e.Memo=function(e){return t.Message((function(n){let s=null;e.then((e=>{e!==s&&t.isFilled(e)&&(n(e),s=e)}))}))},e.Not=function(e){return t.Message((function(t){e.then((e=>{t(!e)}))}))},e.OnlyChanged=function(e){return t.Message((function(t){let n=!1;e.then((e=>{!1===n?n=!0:t(e)}))}))},e.Or=function(e,n){return t.Message((function(s){t.All(e,n).then((([e,t])=>{s(!(!e&&!t))}))}))},e.Part=function(e,n){const s=t.Shared(e),i=t.Shared(t.ActualMessage(n));return t.MessageSource((function(e){t.All(s,i).then((([t,n])=>{const s=n.split(".");let i=t;s.forEach((e=>{i=i[e]})),void 0!==i&&i!==t&&e(i)}))}),(n=>{const s=t.Primitive(i);if(t.isFilled(s)){const i=t.Primitive(e);e.use({...i.primitiveWithException(),[s.primitiveWithException()]:n})}}))},e.Path=n,e.PathExisted=function(e,s){const i=t.ActualMessage(e),r=t.ActualMessage(s);return t.Empty(n(i,r,t.Nothing))},e.Polling=function(e,n){return t.Message((function(t){n.then((()=>{e.then(t)}))}))},e.Record=i,e.RegexpMatch=function(e,n,s=t.Of("")){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=t.ActualMessage(s);return t.Message((function(e){t.All(i,r,c).then((([t,n,s])=>{const i=new RegExp(t,s).exec(n);e(i??[])}))}))},e.RegexpMatched=s,e.RegexpReplaced=function(e,n,s,i=t.Of("")){return t.Message((function(r){t.All(n,e,s,i).then((([e,t,n,s])=>{r(String(t).replace(new RegExp(e,s),n))}))}))},e.Router=function(e,n,i){return t.Message((function(r){const c=t.DestroyContainer(),o=()=>{c.destroy()};return t.All(n,e).then((([e,n])=>{o();t.All(...e.map((e=>s(t.Of(e.pattern),t.Of(n),e.patternFlags?t.Of(e.patternFlags):void 0)))).then((t=>{const n=t.findIndex((e=>!0===e));if(-1===n){const e=i();c.add(e),e.then(r)}if(n>-1){const t=e[n].message();c.add(t),t.then(r)}}))})),o}))},e.Set=function(e,n,s){const i=t.ActualMessage(e),r=t.ActualMessage(n),c=t.ActualMessage(s);return t.Message((function(e){t.All(i,r,c).then((([t,n,s])=>{t[n]=s,e(t)}))}))},e.Shot=function(e,n){return t.Message((function(s){const i=t.Primitive(e);i.primitive(),n.then((()=>{const e=i.primitive();t.isFilled(e)&&s(e)}))}))},e.Task=function(e,n=0){const s=t.ActualMessage(e);return t.Message((function(e){let i=null;t.ExecutorApplied(s,(e=>t=>{i&&clearTimeout(i),i=setTimeout((()=>{e(t)}),n)})).then(e)}))},e.Template=function(e=t.Of(""),n=t.Of({})){return new o(e,n)},e.Tick=function(e){return t.Message((function(t){let n=!1,s=null;e.then((e=>{s=e,n||(n=!0,queueMicrotask((()=>{n=!1,null!==s&&(t(s),s=null)})))}))}))},e.ToJson=function(e){return t.Message((function(t,n){e.then((e=>{try{t(JSON.stringify(e))}catch{n(new Error("Failed to convert to JSON"))}}))}))},e}({},silentium);