silentium-components 0.0.97 → 0.0.99
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 +14 -0
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +1 -1
- package/dist/silentium-components.js.map +1 -1
- package/dist/silentium-components.min.mjs.map +1 -1
- package/dist/silentium-components.mjs.map +1 -1
- package/package.json +2 -2
- package/src/behaviors/Branch.ts +7 -1
- package/src/behaviors/Path._defType.test.ts +91 -0
- package/src/behaviors/Path.ts +2 -2
- package/src/navigation/Router._destroy.test.ts +122 -1
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.99](https://github.com/silentium-lab/silentium-components/compare/v0.0.98...v0.0.99) (2025-12-19)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** version update ([f6eb874](https://github.com/silentium-lab/silentium-components/commit/f6eb874b81ba8a04a88191c35cca0a5b11cadae9))
|
|
11
|
+
|
|
12
|
+
### [0.0.98](https://github.com/silentium-lab/silentium-components/compare/v0.0.97...v0.0.98) (2025-12-15)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **main:** default value of path component ([9e0f0bc](https://github.com/silentium-lab/silentium-components/commit/9e0f0bcfd6f298b62f7f6a54e1c3f594ed26bc0b))
|
|
18
|
+
|
|
5
19
|
### [0.0.97](https://github.com/silentium-lab/silentium-components/compare/v0.0.96...v0.0.97) (2025-12-15)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -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/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.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/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, MessageType, 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 = 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 as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\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, ResetSilenceCache } 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(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\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 extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as 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 { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\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 Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\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 ?? NotSet);\n return Applied(All($base, $keyed, $def), ([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 return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\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>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { ActualMessage, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = ActualMessage(_record);\n const $badValues = ActualMessage(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\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 { 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 ActualMessage,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = ActualMessage(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { ActualMessage, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(ActualMessage(_base), (v) => Transformed(v, transformRules));\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 { ActualMessage, All, Applied, MaybeMessage } 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: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\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 ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\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: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\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 {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\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: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\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<unknown>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\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","ResetSilenceCache","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","key","Empty","Nothing","Computed","ExecutorApplied","record","Of","Once","Map","routes","r","isMessage","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/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.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/strings/Template.ts"],"sourcesContent":["import {\n ActualMessage,\n MaybeMessage,\n Message,\n MessageType,\n Primitive,\n} from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = 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 as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\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, ResetSilenceCache } 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(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\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 extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as 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 { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\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 Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\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<R>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage((def as any) ?? NotSet);\n return Applied(All($base, $keyed, $def), ([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 return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\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>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { ActualMessage, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = ActualMessage(_record);\n const $badValues = ActualMessage(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\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 { 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 ActualMessage,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = ActualMessage(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { ActualMessage, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(ActualMessage(_base), (v) => Transformed(v, transformRules));\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 { ActualMessage, All, Applied, MaybeMessage } 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: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\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 ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\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: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\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 {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\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: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\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<unknown>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\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","ResetSilenceCache","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","key","Empty","Nothing","Computed","ExecutorApplied","record","Of","Once","Map","routes","r","isMessage","Rejections","isDestroyable"],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ declare function Part<R, T extends object | Array<any> = any, K extends string =
|
|
|
92
92
|
* Return source Of record path
|
|
93
93
|
* https://silentium-lab.github.io/silentium-components/#/behaviors/path
|
|
94
94
|
*/
|
|
95
|
-
declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<
|
|
95
|
+
declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<R>): MessageType<R>;
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* Path with separate empty message
|
|
@@ -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/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.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/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, MessageType, 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 = 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 as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\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, ResetSilenceCache } 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(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\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 extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as 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 { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\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 Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\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 ?? NotSet);\n return Applied(All($base, $keyed, $def), ([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 return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\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>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { ActualMessage, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = ActualMessage(_record);\n const $badValues = ActualMessage(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\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 { 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 ActualMessage,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = ActualMessage(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { ActualMessage, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(ActualMessage(_base), (v) => Transformed(v, transformRules));\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 { ActualMessage, All, Applied, MaybeMessage } 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: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\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 ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\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: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\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 {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\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: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\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<unknown>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\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","record","routes","r"],"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/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.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/strings/Template.ts"],"sourcesContent":["import {\n ActualMessage,\n MaybeMessage,\n Message,\n MessageType,\n Primitive,\n} from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = 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 as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\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, ResetSilenceCache } 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(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\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 extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as 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 { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\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 Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\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<R>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage((def as any) ?? NotSet);\n return Applied(All($base, $keyed, $def), ([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 return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\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>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { ActualMessage, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = ActualMessage(_record);\n const $badValues = ActualMessage(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\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 { 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 ActualMessage,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = ActualMessage(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { ActualMessage, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(ActualMessage(_base), (v) => Transformed(v, transformRules));\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 { ActualMessage, All, Applied, MaybeMessage } 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: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\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 ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\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: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\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 {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\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: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\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<unknown>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\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","record","routes","r"],"mappings":"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"}
|