silentium-components 0.0.26 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/silentium-components.cjs +570 -342
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +169 -30
  5. package/dist/silentium-components.js +546 -319
  6. package/dist/silentium-components.js.map +1 -1
  7. package/dist/silentium-components.min.js +1 -1
  8. package/dist/silentium-components.min.mjs +1 -1
  9. package/dist/silentium-components.min.mjs.map +1 -1
  10. package/dist/silentium-components.mjs +546 -319
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/package.json +2 -2
  13. package/src/behaviors/Branch._main.test.ts +22 -0
  14. package/src/behaviors/Branch.branchesDontAffectResult.test.ts +11 -11
  15. package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +15 -17
  16. package/src/behaviors/Branch.ts +28 -21
  17. package/src/behaviors/{Deadline.test.ts → Deadline._main.test.ts} +5 -5
  18. package/src/behaviors/Deadline._value.test.ts +6 -6
  19. package/src/behaviors/Deadline.ts +45 -41
  20. package/src/behaviors/Deferred.test.ts +14 -14
  21. package/src/behaviors/Deferred.ts +21 -15
  22. package/src/behaviors/Dirty.test.ts +8 -8
  23. package/src/behaviors/Dirty.ts +43 -35
  24. package/src/behaviors/Loading.test.ts +8 -8
  25. package/src/behaviors/Loading.ts +24 -14
  26. package/src/behaviors/Lock.test.ts +14 -14
  27. package/src/behaviors/Lock.ts +21 -14
  28. package/src/behaviors/Memo.test.ts +16 -14
  29. package/src/behaviors/Memo.ts +20 -12
  30. package/src/behaviors/OnlyChanged.test.ts +7 -7
  31. package/src/behaviors/OnlyChanged.ts +22 -15
  32. package/src/behaviors/Path._main.test.ts +14 -0
  33. package/src/behaviors/Path.index.test.ts +4 -4
  34. package/src/behaviors/Path.nested.test.ts +4 -4
  35. package/src/behaviors/Path.ts +27 -22
  36. package/src/behaviors/Shot._main.test.ts +29 -0
  37. package/src/behaviors/Shot._onlyChanged.test.ts +15 -13
  38. package/src/behaviors/Shot.ts +24 -15
  39. package/src/behaviors/Sync.test.ts +10 -0
  40. package/src/behaviors/Sync.ts +38 -15
  41. package/src/behaviors/Tick.test.ts +8 -8
  42. package/src/behaviors/Tick.ts +20 -12
  43. package/src/boolean/And.test.ts +12 -12
  44. package/src/boolean/And.ts +18 -14
  45. package/src/boolean/Bool.ts +11 -2
  46. package/src/boolean/Not.test.ts +6 -6
  47. package/src/boolean/Not.ts +15 -10
  48. package/src/boolean/Or.test.ts +12 -12
  49. package/src/boolean/Or.ts +18 -14
  50. package/src/boolean/index.ts +1 -0
  51. package/src/formats/FromJson.test.ts +11 -0
  52. package/src/formats/FromJson.ts +22 -15
  53. package/src/formats/ToJson.test.ts +11 -0
  54. package/src/formats/ToJson.ts +23 -16
  55. package/src/lists/First.test.ts +4 -4
  56. package/src/lists/First.ts +11 -6
  57. package/src/navigation/Router.test.ts +13 -13
  58. package/src/navigation/Router.ts +36 -29
  59. package/src/strings/Concatenated.test.ts +6 -6
  60. package/src/strings/Concatenated.ts +18 -14
  61. package/src/structures/HashTable.test.ts +7 -7
  62. package/src/structures/HashTable.ts +17 -11
  63. package/src/structures/Record._main.test.ts +28 -0
  64. package/src/structures/Record.concatenated.test.ts +17 -15
  65. package/src/structures/Record.nested.test.ts +10 -10
  66. package/src/structures/RecordOf.ts +29 -0
  67. package/src/structures/index.ts +1 -1
  68. package/src/system/RegexpMatch._group.test.ts +9 -6
  69. package/src/system/RegexpMatch._main.test.ts +16 -0
  70. package/src/system/RegexpMatch.ts +20 -17
  71. package/src/system/RegexpMatched.test.ts +6 -6
  72. package/src/system/RegexpMatched.ts +19 -16
  73. package/src/system/RegexpReplaced.test.ts +10 -6
  74. package/src/system/RegexpReplaced.ts +25 -18
  75. package/src/system/Set.test.ts +6 -6
  76. package/src/system/Set.ts +20 -17
  77. package/src/behaviors/Branch.test.ts +0 -22
  78. package/src/behaviors/Path.test.ts +0 -14
  79. package/src/behaviors/Shot.test.ts +0 -29
  80. package/src/structures/Record.test.ts +0 -28
  81. package/src/structures/Record.ts +0 -22
  82. package/src/system/RegexpMatch.test.ts +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Sync.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { all, applied, InformationType, of } 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 const dirty = <T extends object>(\n baseEntitySource: InformationType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n) => {\n const [comparing, co] = of<T>();\n\n const comparingDetached = applied(comparing, (value) =>\n JSON.parse(JSON.stringify(value)),\n );\n\n const i: InformationType<Partial<T>> = (o) => {\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n o(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n };\n\n return [i, co] as const;\n};\n","import { InformationType } from \"silentium\";\n\n/**\n * Representation of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: InformationType<unknown>,\n loadingFinishSource: InformationType<unknown>,\n): InformationType<boolean> => {\n return (o) => {\n loadingStartSource(() => {\n o(true);\n });\n\n loadingFinishSource(() => {\n o(false);\n });\n };\n};\n","import { all, InformationType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: InformationType<T>,\n keySrc: InformationType<K>,\n): InformationType<R> => {\n return (o) => {\n all(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n o(value as R);\n }\n });\n };\n};\n","import {\n filtered,\n InformationType,\n OwnerType,\n sharedStateless,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: OwnerType<Error>,\n baseSrc: InformationType<T>,\n timeoutSrc: InformationType<number>,\n): InformationType<T> => {\n let timerHead: unknown = null;\n return (o) => {\n const [baseShared, pool] = sharedStateless(baseSrc);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = filtered(baseShared, () => !timeoutReached);\n f(o);\n\n baseShared(() => {\n timeoutReached = true;\n });\n });\n\n return () => {\n pool.destroy();\n };\n };\n};\n","import { InformationType } 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 const tick = <T>(baseSrc: InformationType<T>): InformationType<T> => {\n return (o) => {\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 o(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n};\n","import { InformationType } from \"silentium\";\n\nexport const sync = <T>(base: InformationType<T>) => {\n let value: T | undefined;\n\n base((v) => {\n value = v;\n });\n\n return {\n value() {\n if (value === undefined) {\n throw new Error(\"no value in sync\");\n }\n\n return value;\n },\n };\n};\n","import { InformationType, isFilled } from \"silentium\";\nimport { sync } from \"./Sync\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: InformationType<T>,\n triggerSrc: InformationType<unknown>,\n): InformationType<T> => {\n return (o) => {\n const baseSync = sync(baseSrc);\n\n triggerSrc(() => {\n if (isFilled(baseSync.value())) {\n o(baseSync.value());\n }\n });\n };\n};\n","import { InformationType } from \"silentium\";\nimport { sync } from \"./Sync\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n condition: InformationType<boolean>,\n left: InformationType<Then>,\n right?: InformationType<Else>,\n): InformationType<Then | Else> => {\n return (o) => {\n const leftSync = sync(left);\n let rightSync: { value: () => Else };\n\n if (right !== undefined) {\n rightSync = sync(right);\n }\n\n condition((v) => {\n if (v) {\n o(leftSync.value());\n } else if (rightSync) {\n o(rightSync.value());\n }\n });\n };\n};\n","import { InformationType } 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 const memo = <T>(baseSrc: InformationType<T>): InformationType<T> => {\n let lastValue: T | null = null;\n\n return (o) => {\n baseSrc((v) => {\n if (v !== lastValue) {\n o(v);\n lastValue = v;\n }\n });\n };\n};\n","import { filtered, InformationType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: InformationType<T>,\n lockSrc: InformationType<boolean>,\n): InformationType<T> => {\n let locked = false;\n const i = filtered(baseSrc, () => !locked);\n\n return (o) => {\n lockSrc((newLock) => {\n locked = newLock;\n });\n i(o);\n };\n};\n","import { InformationType, isFilled } from \"silentium\";\nimport { sync } from \"./Sync\";\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 const shot = <T>(\n targetSrc: InformationType<T>,\n triggerSrc: InformationType,\n): InformationType<T> => {\n return (o) => {\n const targetSync = sync(targetSrc);\n\n triggerSrc(() => {\n if (isFilled(targetSync.value())) {\n o(targetSync.value());\n }\n });\n };\n};\n","import { InformationType } 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 const onlyChanged = <T>(\n baseSrc: InformationType<T>,\n): InformationType<T> => {\n let firstValue = false;\n return (o) => {\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n o(v);\n }\n });\n };\n};\n","import { InformationType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n base: InformationType<[string, unknown]>,\n): InformationType<T> => {\n return (o) => {\n const record: Record<string, unknown> = {};\n\n base(([key, value]) => {\n record[key] = value;\n o(record as T);\n });\n };\n};\n","import { all, InformationType } from \"silentium\";\n\ntype UnInformation<T> = T extends InformationType<infer U> ? U : never;\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = <T extends InformationType>(\n recordSrc: Record<string, T>,\n): InformationType<Record<string, UnInformation<T>>> => {\n return (o) => {\n const keys = Object.keys(recordSrc);\n all(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n o(record);\n });\n };\n};\n","import { all, i, InformationType } from \"silentium\";\n\n/**\n * Join sources of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport const concatenated = (\n sources: InformationType<string>[],\n joinPartSrc: InformationType<string> = i(\"\"),\n): InformationType<string> => {\n return (o) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n o(strings.join(joinPart));\n });\n };\n};\n","import { all, i, InformationType } 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 const regexpMatched =\n (\n patternSrc: InformationType<string>,\n valueSrc: InformationType<string>,\n flagsSrc: InformationType<string> = i(\"\"),\n ): InformationType<boolean> =>\n (o) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n o(new RegExp(pattern, flags).test(value));\n });\n };\n","import { any, chain, i, InformationType, OwnerType } from \"silentium\";\nimport { branch } from \"../behaviors\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | InformationType<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 const router = <T = \"string\">(\n urlSrc: InformationType<string>,\n routesSrc: InformationType<Route<T>[]>,\n defaultSrc: InformationType<T>,\n): InformationType<T> => {\n return (o) => {\n routesSrc((routes) => {\n any(\n chain(urlSrc, defaultSrc),\n ...routes.map((r) => {\n return branch(\n regexpMatched(\n i(r.pattern),\n urlSrc,\n r.patternFlags ? i(r.patternFlags) : undefined,\n ),\n (typeof r.template === \"function\"\n ? r.template\n : i(r.template)) as InformationType,\n );\n }),\n )(o as OwnerType<unknown>);\n });\n };\n};\n","import { all, i, InformationType } 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 const regexpReplaced =\n (\n valueSrc: InformationType<string>,\n patternSrc: InformationType<string>,\n replaceValueSrc: InformationType<string>,\n flagsSrc: InformationType<string> = i(\"\"),\n ): InformationType<string> =>\n (o) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n o(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n","import { all, i, InformationType } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch =\n (\n patternSrc: InformationType<string>,\n valueSrc: InformationType<string>,\n flagsSrc: InformationType<string> = i(\"\"),\n ): InformationType<string[]> =>\n (o) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n o(result ?? []);\n });\n };\n","import { all, InformationType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: InformationType<T>,\n keySrc: InformationType<string>,\n valueSrc: InformationType<unknown>,\n): InformationType<T> => {\n return (o) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n o(base);\n });\n };\n};\n","import { all, InformationType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: InformationType<boolean>,\n twoSrc: InformationType<boolean>,\n): InformationType<boolean> => {\n return (o) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n o(one && two);\n });\n };\n};\n","import { all, InformationType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: InformationType<boolean>,\n twoSrc: InformationType<boolean>,\n): InformationType<boolean> => {\n return (o) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n o(one || two);\n });\n };\n};\n","import { InformationType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (\n baseSrc: InformationType<boolean>,\n): InformationType<boolean> => {\n return (o) => {\n baseSrc((v) => {\n o(!v);\n });\n };\n};\n","import { InformationType, OwnerType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T>(\n jsonSrc: InformationType<string>,\n errorOwner?: OwnerType,\n): InformationType<T> => {\n return (o) => {\n jsonSrc((json) => {\n try {\n o(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { InformationType, OwnerType } from \"silentium\";\n\n/**\n * Repreresents json from object\n */\nexport const toJson = (\n dataSrc: InformationType,\n errorOwner?: OwnerType,\n): InformationType<string> => {\n return (o) => {\n dataSrc((data) => {\n try {\n o(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, InformationType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: InformationType<T>,\n): InformationType<T[0]> => {\n return applied(baseSrc, (a) => a[0]);\n};\n"],"names":["of","applied","all","comparing","sharedStateless","filtered","isFilled","record","i","any","chain"],"mappings":";;;;AAOa,MAAA,KAAA,GAAQ,CACnB,gBACA,EAAA,UAAA,GAAuB,EACvB,EAAA,WAAA,GAAwB,EACrB,KAAA;AACH,EAAA,MAAM,CAAC,SAAA,EAAW,EAAE,CAAA,GAAIA,YAAM,EAAA;AAE9B,EAAA,MAAM,iBAAoB,GAAAC,iBAAA;AAAA,IAAQ,SAAA;AAAA,IAAW,CAAC,KAC5C,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC;AAAA,GAClC;AAEA,EAAM,MAAA,CAAA,GAAiC,CAAC,CAAM,KAAA;AAC5C,IAAAC,aAAA;AAAA,MACE,iBAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAACC,UAAAA,EAAW,IAAI,CAAM,KAAA;AACvB,MAAA,IAAI,CAACA,UAAW,EAAA;AACd,QAAA;AAAA;AAGF,MAAA,CAAA;AAAA,QACE,MAAO,CAAA,WAAA;AAAA,UACL,MAAA,CAAO,QAAQA,UAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,YAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,cAAO,OAAA,IAAA;AAAA;AAET,YAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,cAAO,OAAA,KAAA;AAAA;AAET,YAAO,OAAA,KAAA,KAAW,KAAa,GAAG,CAAA;AAAA,WACnC;AAAA;AACH,OACF;AAAA,KACD,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,CAAC,GAAG,EAAE,CAAA;AACf;;ACpCa,MAAA,OAAA,GAAU,CACrB,kBAAA,EACA,mBAC6B,KAAA;AAC7B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,kBAAA,CAAmB,MAAM;AACvB,MAAA,CAAA,CAAE,IAAI,CAAA;AAAA,KACP,CAAA;AAED,IAAA,mBAAA,CAAoB,MAAM;AACxB,MAAA,CAAA,CAAE,KAAK,CAAA;AAAA,KACR,CAAA;AAAA,GACH;AACF;;ACfa,MAAA,IAAA,GAAO,CAKlB,OAAA,EACA,MACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAAD,aAAA;AAAA,MACE,OAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACjB,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAA,KAAA,GAAS,MAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,QAAA,CAAA,CAAE,KAAU,CAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AACF;;ACpBO,MAAM,QAAW,GAAA,CACtB,KACA,EAAA,OAAA,EACA,UACuB,KAAA;AACvB,EAAA,IAAI,SAAqB,GAAA,IAAA;AACzB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,MAAM,CAAC,UAAA,EAAY,IAAI,CAAA,GAAIE,0BAAgB,OAAO,CAAA;AAElD,IAAA,UAAA,CAAW,CAAC,OAAY,KAAA;AACtB,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAM,KAAA,CAAA,IAAI,KAAM,CAAA,mCAAmC,CAAC,CAAA;AAAA,SACnD,OAAO,CAAA;AAEV,MAAA,MAAM,CAAI,GAAAC,kBAAA,CAAS,UAAY,EAAA,MAAM,CAAC,cAAc,CAAA;AACpD,MAAA,CAAA,CAAE,CAAC,CAAA;AAEH,MAAA,UAAA,CAAW,MAAM;AACf,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,OAAQ,EAAA;AAAA,KACf;AAAA,GACF;AACF;;ACvCa,MAAA,IAAA,GAAO,CAAI,OAAoD,KAAA;AAC1E,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAqB,kBAAA,GAAA,IAAA;AACrB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAqB,kBAAA,GAAA,KAAA;AACrB,QAAA,IAAI,cAAc,IAAM,EAAA;AACtB,UAAA,CAAA,CAAE,SAAS,CAAA;AACX,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACH;AACF;;AC3Ba,MAAA,IAAA,GAAO,CAAI,IAA6B,KAAA;AACnD,EAAI,IAAA,KAAA;AAEJ,EAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACV,IAAQ,KAAA,GAAA,CAAA;AAAA,GACT,CAAA;AAED,EAAO,OAAA;AAAA,IACL,KAAQ,GAAA;AACN,MAAA,IAAI,UAAU,MAAW,EAAA;AACvB,QAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA;AAAA;AAGpC,MAAO,OAAA,KAAA;AAAA;AACT,GACF;AACF,CAAA;;ACXa,MAAA,QAAA,GAAW,CACtB,OAAA,EACA,UACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAM,MAAA,QAAA,GAAW,KAAK,OAAO,CAAA;AAE7B,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAIC,kBAAS,CAAA,QAAA,CAAS,KAAM,EAAC,CAAG,EAAA;AAC9B,QAAE,CAAA,CAAA,QAAA,CAAS,OAAO,CAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACH;AACF;;ACdO,MAAM,MAAS,GAAA,CACpB,SACA,EAAA,IAAA,EACA,KACiC,KAAA;AACjC,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAM,MAAA,QAAA,GAAW,KAAK,IAAI,CAAA;AAC1B,IAAI,IAAA,SAAA;AAEJ,IAAA,IAAI,UAAU,MAAW,EAAA;AACvB,MAAA,SAAA,GAAY,KAAK,KAAK,CAAA;AAAA;AAGxB,IAAA,SAAA,CAAU,CAAC,CAAM,KAAA;AACf,MAAA,IAAI,CAAG,EAAA;AACL,QAAE,CAAA,CAAA,QAAA,CAAS,OAAO,CAAA;AAAA,iBACT,SAAW,EAAA;AACpB,QAAE,CAAA,CAAA,SAAA,CAAU,OAAO,CAAA;AAAA;AACrB,KACD,CAAA;AAAA,GACH;AACF;;ACrBa,MAAA,IAAA,GAAO,CAAI,OAAoD,KAAA;AAC1E,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,CAAA,CAAE,CAAC,CAAA;AACH,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AACF;;ACZa,MAAA,IAAA,GAAO,CAClB,OAAA,EACA,OACuB,KAAA;AACvB,EAAA,IAAI,MAAS,GAAA,KAAA;AACb,EAAA,MAAM,CAAI,GAAAD,kBAAA,CAAS,OAAS,EAAA,MAAM,CAAC,MAAM,CAAA;AAEzC,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACnB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,CAAA,CAAE,CAAC,CAAA;AAAA,GACL;AACF;;ACXa,MAAA,IAAA,GAAO,CAClB,SAAA,EACA,UACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAM,MAAA,UAAA,GAAa,KAAK,SAAS,CAAA;AAEjC,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAIC,kBAAS,CAAA,UAAA,CAAW,KAAM,EAAC,CAAG,EAAA;AAChC,QAAE,CAAA,CAAA,UAAA,CAAW,OAAO,CAAA;AAAA;AACtB,KACD,CAAA;AAAA,GACH;AACF;;ACda,MAAA,WAAA,GAAc,CACzB,OACuB,KAAA;AACvB,EAAA,IAAI,UAAa,GAAA,KAAA;AACjB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAa,UAAA,GAAA,IAAA;AAAA,OACR,MAAA;AACL,QAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,KACD,CAAA;AAAA,GACH;AACF;;ACda,MAAA,SAAA,GAAY,CACvB,IACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,IAAA,CAAK,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACrB,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,CAAA,CAAE,MAAW,CAAA;AAAA,KACd,CAAA;AAAA,GACH;AACF;;ACRa,MAAA,MAAA,GAAS,CACpB,SACsD,KAAA;AACtD,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,IAAAJ,aAAA,CAAI,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAC,OAAY,KAAA;AAC5C,MAAA,MAAMK,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,CAAA,CAAEA,OAAM,CAAA;AAAA,KACT,CAAA;AAAA,GACH;AACF;;ACfO,MAAM,eAAe,CAC1B,OAAA,EACA,WAAuC,GAAAC,WAAA,CAAE,EAAE,CACf,KAAA;AAC5B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAAN,aAAA;AAAA,MACE,WAAA;AAAA,MACA,GAAG;AAAA,KACH,CAAA,CAAC,CAAC,QAAA,EAAa,UAAO,CAAM,KAAA;AAC5B,MAAE,CAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KACzB,CAAA;AAAA,GACH;AACF;;ACZa,MAAA,aAAA,GACX,CACE,UACA,EAAA,QAAA,EACA,WAAoCM,WAAE,CAAA,EAAE,CAE1C,KAAA,CAAC,CAAM,KAAA;AACL,EAAAN,aAAA;AAAA,IACE,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,IACA,CAAC,CAAC,OAAS,EAAA,KAAA,EAAO,KAAK,CAAM,KAAA;AAC7B,IAAA,CAAA,CAAE,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,GACzC,CAAA;AACH;;ACNK,MAAM,MAAS,GAAA,CACpB,MACA,EAAA,SAAA,EACA,UACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,SAAA,CAAU,CAAC,MAAW,KAAA;AACpB,MAAAO,aAAA;AAAA,QACEC,eAAA,CAAM,QAAQ,UAAU,CAAA;AAAA,QACxB,GAAG,MAAA,CAAO,GAAI,CAAA,CAAC,CAAM,KAAA;AACnB,UAAO,OAAA,MAAA;AAAA,YACL,aAAA;AAAA,cACEF,WAAA,CAAE,EAAE,OAAO,CAAA;AAAA,cACX,MAAA;AAAA,cACA,CAAE,CAAA,YAAA,GAAeA,WAAE,CAAA,CAAA,CAAE,YAAY,CAAI,GAAA;AAAA,aACvC;AAAA,YACC,OAAO,EAAE,QAAa,KAAA,UAAA,GACnB,EAAE,QACF,GAAAA,WAAA,CAAE,EAAE,QAAQ;AAAA,WAClB;AAAA,SACD;AAAA,QACD,CAAuB,CAAA;AAAA,KAC1B,CAAA;AAAA,GACH;AACF;;AChCa,MAAA,cAAA,GACX,CACE,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAAoCA,WAAE,CAAA,EAAE,CAE1C,KAAA,CAAC,CAAM,KAAA;AACL,EAAAN,aAAA;AAAA,IACE,UAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,IACA,CAAC,CAAC,SAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AAC3C,IAAE,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,CAAG,EAAA,YAAY,CAAC,CAAA;AAAA,GAClE,CAAA;AACH;;AChBW,MAAA,WAAA,GACX,CACE,UACA,EAAA,QAAA,EACA,WAAoCM,WAAE,CAAA,EAAE,CAE1C,KAAA,CAAC,CAAM,KAAA;AACL,EAAAN,aAAA;AAAA,IACE,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,IACA,CAAC,CAAC,OAAS,EAAA,KAAA,EAAO,KAAK,CAAM,KAAA;AAC7B,IAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,IAAE,CAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,GACf,CAAA;AACH;;ACfK,MAAM,GAAM,GAAA,CACjB,OACA,EAAA,MAAA,EACA,QACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAAA,aAAA;AAAA,MACE,OAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,IAAM,EAAA,GAAA,EAAK,KAAK,CAAM,KAAA;AACxB,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,CAAA,CAAE,IAAI,CAAA;AAAA,KACP,CAAA;AAAA,GACH;AACF;;AChBa,MAAA,GAAA,GAAM,CACjB,MAAA,EACA,MAC6B,KAAA;AAC7B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAAA,aAAA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AAChB,MAAA,CAAA,CAAE,OAAO,GAAG,CAAA;AAAA,KACb,CAAA;AAAA,GACH;AACF;;ACZa,MAAA,EAAA,GAAK,CAChB,MAAA,EACA,MAC6B,KAAA;AAC7B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAAA,aAAA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AAChB,MAAA,CAAA,CAAE,OAAO,GAAG,CAAA;AAAA,KACb,CAAA;AAAA,GACH;AACF;;ACZa,MAAA,GAAA,GAAM,CACjB,OAC6B,KAAA;AAC7B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,KACL,CAAA;AAAA,GACH;AACF;;ACRa,MAAA,QAAA,GAAW,CACtB,OAAA,EACA,UACuB,KAAA;AACvB,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAChB,MAAI,IAAA;AACF,QAAE,CAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACX,KAAO,EAAA;AACd,QAAA,UAAA,GAAa,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,KAAK,EAAE,CAAC,CAAA;AAAA;AAC1D,KACD,CAAA;AAAA,GACH;AACF;;ACba,MAAA,MAAA,GAAS,CACpB,OAAA,EACA,UAC4B,KAAA;AAC5B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAChB,MAAI,IAAA;AACF,QAAE,CAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OAChB,CAAA,MAAA;AACN,QAAa,UAAA,GAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AACrD,KACD,CAAA;AAAA,GACH;AACF;;ACba,MAAA,KAAA,GAAQ,CACnB,OAC0B,KAAA;AAC1B,EAAA,OAAOD,kBAAQ,OAAS,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Sync.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { All, Applied, From, Late, TheInformation, TheOwner } 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 class Dirty<T> extends TheInformation<T> {\n private comparingSrc = new Late<T>();\n\n public constructor(\n private baseEntitySource: TheInformation<T>,\n private alwaysKeep: string[] = [],\n private excludeKeys: string[] = [],\n ) {\n super([baseEntitySource]);\n }\n\n public value(o: TheOwner<T>): this {\n const comparingDetached = new Applied(this.comparingSrc, (value) =>\n JSON.parse(JSON.stringify(value)),\n );\n\n const allSrc = new All(comparingDetached, this.baseEntitySource).value(\n new From(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n o.give(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (this.alwaysKeep.includes(key)) {\n return true;\n }\n if (this.excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n }),\n );\n this.addDep(allSrc);\n\n return this;\n }\n\n public owner() {\n return this.comparingSrc.owner();\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Representation of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport class Loading extends TheInformation<boolean> {\n public constructor(\n private loadingStartSrc: TheInformation<unknown>,\n private loadingFinishSrc: TheInformation<unknown>,\n ) {\n super(loadingFinishSrc, loadingStartSrc);\n }\n\n public value(o: TheOwner<boolean>): this {\n this.loadingStartSrc.value(\n new From(() => {\n o.give(true);\n }),\n );\n\n this.loadingFinishSrc.value(\n new From(() => {\n o.give(false);\n }),\n );\n\n return this;\n }\n}\n","import { All, From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport class Path<\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n> extends TheInformation<R> {\n public constructor(\n private baseSrc: TheInformation<T>,\n private keySrc: TheInformation<K>,\n ) {\n super(baseSrc, keySrc);\n }\n\n public value(o: TheOwner<R>): this {\n const allSrc = new All(this.baseSrc, this.keySrc).value(\n new From(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n o.give(value as R);\n }\n }),\n );\n this.addDep(allSrc);\n return this;\n }\n}\n","import { Filtered, From, Shared, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport class Deadline<T> extends TheInformation<T> {\n public constructor(\n private error: TheOwner<Error>,\n private baseSrc: TheInformation<T>,\n private timeoutSrc: TheInformation<number>,\n ) {\n super([error, baseSrc, timeoutSrc]);\n }\n\n public value(o: TheOwner<T>) {\n let timerHead: unknown = null;\n\n const s = new Shared(this.baseSrc, true);\n this.addDep(s);\n\n this.timeoutSrc.value(\n new From((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n this.error.give(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = new Filtered(s, () => !timeoutReached);\n this.addDep(f);\n f.value(o);\n\n s.value(\n new From(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } 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 class Tick<T> extends TheInformation<T> {\n public constructor(private baseSrc: TheInformation<T>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<T>): this {\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 o.give(lastValue);\n lastValue = null;\n }\n });\n };\n\n this.baseSrc.value(\n new From((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return this;\n }\n}\n","import { From, isFilled, TheInformation, TheOwner } from \"silentium\";\n\nexport class Sync<T> extends TheInformation<T> {\n private theValue: T | undefined;\n private isInit = false;\n\n public constructor(private baseSrc: TheInformation<T>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<T>): this {\n this.baseSrc.value(o);\n return this;\n }\n\n public valueExisted() {\n this.initOwner();\n return isFilled(this.theValue);\n }\n\n public valueSync(): T {\n this.initOwner();\n\n if (!isFilled(this.theValue)) {\n throw new Error(\"no value in sync\");\n }\n\n return this.theValue;\n }\n\n public initOwner() {\n if (!this.isInit) {\n this.isInit = true;\n this.value(\n new From((v) => {\n this.theValue = v;\n }),\n );\n }\n return this;\n }\n}\n","import { From, isFilled, TheInformation, TheOwner } from \"silentium\";\nimport { Sync } from \"./Sync\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport class Deferred<T> extends TheInformation<T> {\n public constructor(\n private baseSrc: TheInformation<T>,\n private triggerSrc: TheInformation<unknown>,\n ) {\n super();\n }\n\n public value(o: TheOwner<T>): this {\n const baseSync = new Sync(this.baseSrc).initOwner();\n this.triggerSrc.value(\n new From(() => {\n if (isFilled(baseSync.valueSync())) {\n o.give(baseSync.valueSync());\n }\n }),\n );\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\nimport { Sync } from \"./Sync\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport class Branch<Then, Else> extends TheInformation<Then | Else> {\n public constructor(\n private conditionSrc: TheInformation<boolean>,\n private leftSrc: TheInformation<Then>,\n private rightSrc?: TheInformation<Else>,\n ) {\n super([conditionSrc, leftSrc, rightSrc]);\n }\n public value(o: TheOwner<Then | Else>): this {\n const leftSync = new Sync(this.leftSrc).initOwner();\n let rightSync: Sync<Else>;\n\n if (this.rightSrc !== undefined) {\n rightSync = new Sync(this.rightSrc).initOwner();\n }\n\n this.conditionSrc.value(\n new From((v) => {\n if (v) {\n o.give(leftSync.valueSync());\n } else if (rightSync) {\n o.give(rightSync.valueSync());\n }\n }),\n );\n\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } 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 class Memo<T> extends TheInformation<T> {\n public constructor(private baseSrc: TheInformation<T>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<T>): this {\n let lastValue: T | null = null;\n\n this.baseSrc.value(\n new From((v) => {\n if (v !== lastValue) {\n o.give(v);\n lastValue = v;\n }\n }),\n );\n\n return this;\n }\n}\n","import { Filtered, From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport class Lock<T> extends TheInformation<T> {\n public constructor(\n private baseSrc: TheInformation<T>,\n private lockSrc: TheInformation<boolean>,\n ) {\n super(baseSrc, lockSrc);\n }\n\n public value(o: TheOwner<T>): this {\n let locked = false;\n this.lockSrc.value(\n new From((newLock) => {\n locked = newLock;\n }),\n );\n const i = new Filtered(this.baseSrc, () => !locked);\n this.addDep(i);\n i.value(o);\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\nimport { Sync } from \"./Sync\";\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 class Shot<T> extends TheInformation<T> {\n public constructor(\n private targetSrc: TheInformation<T>,\n private triggerSrc: TheInformation,\n ) {\n super(targetSrc, triggerSrc);\n }\n\n public value(o: TheOwner<T>): this {\n const targetSync = new Sync(this.targetSrc);\n targetSync.initOwner();\n\n this.triggerSrc.value(\n new From(() => {\n if (targetSync.valueExisted()) {\n o.give(targetSync.valueSync());\n }\n }),\n );\n\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } 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 class OnlyChanged<T> extends TheInformation<T> {\n public constructor(private baseSrc: TheInformation<T>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<T>): this {\n let firstValue = false;\n\n this.baseSrc.value(\n new From((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n o.give(v);\n }\n }),\n );\n\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport class HashTable<T> extends TheInformation<T> {\n public constructor(private baseSrc: TheInformation<[string, unknown]>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<T>): this {\n const record: Record<string, unknown> = {};\n\n this.baseSrc.value(\n new From(([key, value]) => {\n record[key] = value;\n o.give(record as T);\n }),\n );\n\n return this;\n }\n}\n","import { All, From, TheInformation, TheOwner } from \"silentium\";\n\ntype UnInformation<T> = T extends TheInformation<infer U> ? U : never;\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport class RecordOf<T extends TheInformation> extends TheInformation<\n Record<string, UnInformation<T>>\n> {\n public constructor(private recordSrc: Record<string, T>) {\n super(...Object.values(recordSrc));\n }\n\n public value(o: TheOwner<Record<string, UnInformation<T>>>): this {\n const keys = Object.keys(this.recordSrc);\n new All(...Object.values(this.recordSrc)).value(\n new From((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n o.give(record);\n }),\n );\n return this;\n }\n}\n","import { All, From, Of, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Join sources of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport class Concatenated extends TheInformation<string> {\n public constructor(\n private sources: TheInformation<string>[],\n private joinPartSrc: TheInformation<string> = new Of(\"\"),\n ) {\n super(...sources, joinPartSrc);\n }\n\n public value(o: TheOwner<string>): this {\n new All(this.joinPartSrc, ...this.sources).value(\n new From(([joinPart, ...strings]) => {\n o.give(strings.join(joinPart));\n }),\n );\n return this;\n }\n}\n","import { All, From, Of, TheInformation, TheOwner } 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 class RegexpMatched extends TheInformation<boolean> {\n public constructor(\n private patternSrc: TheInformation<string>,\n private valueSrc: TheInformation<string>,\n private flagsSrc: TheInformation<string> = new Of(\"\"),\n ) {\n super(patternSrc, valueSrc, flagsSrc);\n }\n\n public value(o: TheOwner<boolean>): this {\n new All(this.patternSrc, this.valueSrc, this.flagsSrc).value(\n new From(([pattern, value, flags]) => {\n o.give(new RegExp(pattern, flags).test(value));\n }),\n );\n return this;\n }\n}\n","import { All, From, Of, TheInformation, TheOwner } 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 class RegexpReplaced extends TheInformation<string> {\n public constructor(\n private valueSrc: TheInformation<string>,\n private patternSrc: TheInformation<string>,\n private replaceValueSrc: TheInformation<string>,\n private flagsSrc: TheInformation<string> = new Of(\"\"),\n ) {\n super(valueSrc, patternSrc, replaceValueSrc, flagsSrc);\n }\n\n public value(o: TheOwner<string>): this {\n new All(\n this.patternSrc,\n this.valueSrc,\n this.replaceValueSrc,\n this.flagsSrc,\n ).value(\n new From(([pattern, value, replaceValue, flags]) => {\n o.give(String(value).replace(new RegExp(pattern, flags), replaceValue));\n }),\n );\n return this;\n }\n}\n","import { All, From, Of, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport class RegexpMatch extends TheInformation<string[]> {\n public constructor(\n private patternSrc: TheInformation<string>,\n private valueSrc: TheInformation<string>,\n private flagsSrc: TheInformation<string> = new Of(\"\"),\n ) {\n super(patternSrc, valueSrc, flagsSrc);\n }\n\n public value(o: TheOwner<string[]>): this {\n new All(this.patternSrc, this.valueSrc, this.flagsSrc).value(\n new From(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n o.give(result ?? []);\n }),\n );\n return this;\n }\n}\n","import { All, From, TheInformation, TheOwner } 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 class Set<T extends Record<string, unknown>> extends TheInformation<T> {\n public constructor(\n private baseSrc: TheInformation<T>,\n private keySrc: TheInformation<string>,\n private valueSrc: TheInformation<unknown>,\n ) {\n super(baseSrc, keySrc, valueSrc);\n }\n\n public value(o: TheOwner<T>): this {\n new All(this.baseSrc, this.keySrc, this.valueSrc).value(\n new From(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n o.give(base);\n }),\n );\n return this;\n }\n}\n","import { Any, Chain, From, Of, TheInformation, TheOwner } from \"silentium\";\nimport { Branch } from \"../behaviors\";\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | TheInformation<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 class Router<T = \"string\"> extends TheInformation<T> {\n public constructor(\n private urlSrc: TheInformation<string>,\n private routesSrc: TheInformation<Route<T>[]>,\n private defaultSrc: TheInformation<T>,\n ) {\n super(urlSrc, routesSrc, defaultSrc);\n }\n\n public value(o: TheOwner<T>): this {\n this.routesSrc.value(\n new From((routes) => {\n new Any(\n new Chain(this.urlSrc, this.defaultSrc),\n ...routes.map((r) => {\n return new Branch(\n new RegexpMatched(\n new Of(r.pattern),\n this.urlSrc,\n r.patternFlags ? new Of(r.patternFlags) : undefined,\n ),\n (r.template instanceof TheInformation\n ? r.template\n : new Of(r.template)) as TheInformation,\n );\n }),\n ).value(o as TheOwner);\n }),\n );\n return this;\n }\n}\n","import { All, From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport class And extends TheInformation<boolean> {\n public constructor(\n private oneSrc: TheInformation<boolean>,\n private twoSrc: TheInformation<boolean>,\n ) {\n super(oneSrc, twoSrc);\n }\n\n public value(o: TheOwner<boolean>): this {\n new All(this.oneSrc, this.twoSrc).value(\n new From(([one, two]) => {\n o.give(one && two);\n }),\n );\n return this;\n }\n}\n","import { All, From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport class Or extends TheInformation<boolean> {\n public constructor(\n private oneSrc: TheInformation<boolean>,\n private twoSrc: TheInformation<boolean>,\n ) {\n super(oneSrc, twoSrc);\n }\n\n public value(o: TheOwner<boolean>): this {\n new All(this.oneSrc, this.twoSrc).value(\n new From(([one, two]) => {\n o.give(one || two);\n }),\n );\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport class Not extends TheInformation<boolean> {\n public constructor(private baseSrc: TheInformation<boolean>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<boolean>): this {\n this.baseSrc.value(\n new From((v) => {\n o.give(!v);\n }),\n );\n return this;\n }\n}\n","import { Applied, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport class Bool extends TheInformation<boolean> {\n public constructor(private baseSrc: TheInformation) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<boolean>): this {\n new Applied(this.baseSrc, Boolean).value(o);\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport class FromJson<T> extends TheInformation<T> {\n public constructor(\n private jsonSrc: TheInformation<string>,\n private errorOwner?: TheOwner,\n ) {\n super(jsonSrc);\n }\n\n public value(o: TheOwner<T>): this {\n this.jsonSrc.value(\n new From((json) => {\n try {\n o.give(JSON.parse(json));\n } catch (error) {\n this.errorOwner?.give(new Error(`Failed to parse JSON: ${error}`));\n }\n }),\n );\n return this;\n }\n}\n","import { From, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport class ToJson extends TheInformation<string> {\n public constructor(\n private dataSrc: TheInformation,\n private errorOwner?: TheOwner,\n ) {\n super(dataSrc);\n }\n\n public value(o: TheOwner<string>): this {\n this.dataSrc.value(\n new From((data: unknown) => {\n try {\n o.give(JSON.stringify(data));\n } catch {\n this.errorOwner?.give(new Error(\"Failed to convert to JSON\"));\n }\n }),\n );\n return this;\n }\n}\n","import { Applied, TheInformation, TheOwner } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport class First<T extends Array<unknown>> extends TheInformation<T[0]> {\n public constructor(private baseSrc: TheInformation<T>) {\n super(baseSrc);\n }\n\n public value(o: TheOwner<T[0]>): this {\n new Applied(this.baseSrc, (a) => a[0]).value(o);\n return this;\n }\n}\n"],"names":["TheInformation","__publicField","Late","Applied","All","From","Shared","Filtered","isFilled","Of","Any","Chain"],"mappings":"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"}
@@ -1,11 +1,19 @@
1
- import { InformationType, OwnerType } from 'silentium';
1
+ import { TheInformation, TheOwner, From } from 'silentium';
2
2
 
3
3
  /**
4
4
  * Takes source and remember it first value
5
5
  * returns new record, what will contain only fields what was changed
6
6
  * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty
7
7
  */
8
- declare const dirty: <T extends object>(baseEntitySource: InformationType<T>, alwaysKeep?: string[], excludeKeys?: string[]) => readonly [InformationType<Partial<T>>, (v: T) => void];
8
+ declare class Dirty<T> extends TheInformation<T> {
9
+ private baseEntitySource;
10
+ private alwaysKeep;
11
+ private excludeKeys;
12
+ private comparingSrc;
13
+ constructor(baseEntitySource: TheInformation<T>, alwaysKeep?: string[], excludeKeys?: string[]);
14
+ value(o: TheOwner<T>): this;
15
+ owner(): From<T>;
16
+ }
9
17
 
10
18
  /**
11
19
  * Representation of loading process
@@ -13,141 +21,272 @@ declare const dirty: <T extends object>(baseEntitySource: InformationType<T>, al
13
21
  * second information source stops loading
14
22
  * https://silentium-lab.github.io/silentium-components/#/behaviors/loading
15
23
  */
16
- declare const loading: (loadingStartSource: InformationType<unknown>, loadingFinishSource: InformationType<unknown>) => InformationType<boolean>;
24
+ declare class Loading extends TheInformation<boolean> {
25
+ private loadingStartSrc;
26
+ private loadingFinishSrc;
27
+ constructor(loadingStartSrc: TheInformation<unknown>, loadingFinishSrc: TheInformation<unknown>);
28
+ value(o: TheOwner<boolean>): this;
29
+ }
17
30
 
18
31
  /**
19
32
  * Return source of record path
20
33
  * https://silentium-lab.github.io/silentium-components/#/behaviors/path
21
34
  */
22
- declare const path: <R, T extends Record<string, unknown> | Array<unknown> = any, K extends string = any>(baseSrc: InformationType<T>, keySrc: InformationType<K>) => InformationType<R>;
35
+ declare class Path<R, T extends Record<string, unknown> | Array<unknown> = any, K extends string = any> extends TheInformation<R> {
36
+ private baseSrc;
37
+ private keySrc;
38
+ constructor(baseSrc: TheInformation<T>, keySrc: TheInformation<K>);
39
+ value(o: TheOwner<R>): this;
40
+ }
23
41
 
24
42
  /**
25
43
  * https://silentium-lab.github.io/silentium-components/#/behaviors/path
26
44
  */
27
- declare const deadline: <T>(error: OwnerType<Error>, baseSrc: InformationType<T>, timeoutSrc: InformationType<number>) => InformationType<T>;
45
+ declare class Deadline<T> extends TheInformation<T> {
46
+ private error;
47
+ private baseSrc;
48
+ private timeoutSrc;
49
+ constructor(error: TheOwner<Error>, baseSrc: TheInformation<T>, timeoutSrc: TheInformation<number>);
50
+ value(o: TheOwner<T>): this;
51
+ }
28
52
 
29
53
  /**
30
54
  * Accumulates the last value of the source and returns one result once per tick
31
55
  * https://silentium-lab.github.io/silentium-components/#/behaviors/tick
32
56
  */
33
- declare const tick: <T>(baseSrc: InformationType<T>) => InformationType<T>;
57
+ declare class Tick<T> extends TheInformation<T> {
58
+ private baseSrc;
59
+ constructor(baseSrc: TheInformation<T>);
60
+ value(o: TheOwner<T>): this;
61
+ }
34
62
 
35
63
  /**
36
64
  * Defer one source after another, gives values of baseSrc only once when triggerSrc responds
37
65
  * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred
38
66
  */
39
- declare const deferred: <T>(baseSrc: InformationType<T>, triggerSrc: InformationType<unknown>) => InformationType<T>;
67
+ declare class Deferred<T> extends TheInformation<T> {
68
+ private baseSrc;
69
+ private triggerSrc;
70
+ constructor(baseSrc: TheInformation<T>, triggerSrc: TheInformation<unknown>);
71
+ value(o: TheOwner<T>): this;
72
+ }
40
73
 
41
74
  /**
42
75
  * https://silentium-lab.github.io/silentium-components/#/behaviors/branch
43
76
  */
44
- declare const branch: <Then, Else>(condition: InformationType<boolean>, left: InformationType<Then>, right?: InformationType<Else>) => InformationType<Then | Else>;
77
+ declare class Branch<Then, Else> extends TheInformation<Then | Else> {
78
+ private conditionSrc;
79
+ private leftSrc;
80
+ private rightSrc?;
81
+ constructor(conditionSrc: TheInformation<boolean>, leftSrc: TheInformation<Then>, rightSrc?: TheInformation<Else> | undefined);
82
+ value(o: TheOwner<Then | Else>): this;
83
+ }
45
84
 
46
85
  /**
47
86
  * Didn't respond if new value of baseSrc equals to old value
48
87
  * https://silentium-lab.github.io/silentium-components/#/behaviors/memo
49
88
  */
50
- declare const memo: <T>(baseSrc: InformationType<T>) => InformationType<T>;
89
+ declare class Memo<T> extends TheInformation<T> {
90
+ private baseSrc;
91
+ constructor(baseSrc: TheInformation<T>);
92
+ value(o: TheOwner<T>): this;
93
+ }
51
94
 
52
95
  /**
53
96
  * https://silentium-lab.github.io/silentium-components/#/behaviors/lock
54
97
  */
55
- declare const lock: <T>(baseSrc: InformationType<T>, lockSrc: InformationType<boolean>) => InformationType<T>;
98
+ declare class Lock<T> extends TheInformation<T> {
99
+ private baseSrc;
100
+ private lockSrc;
101
+ constructor(baseSrc: TheInformation<T>, lockSrc: TheInformation<boolean>);
102
+ value(o: TheOwner<T>): this;
103
+ }
56
104
 
57
105
  /**
58
106
  * Helps to represent only last fresh value of some source, refreshing controls by shotSrc
59
107
  * https://silentium-lab.github.io/silentium-components/#/behaviors/shot
60
108
  */
61
- declare const shot: <T>(targetSrc: InformationType<T>, triggerSrc: InformationType) => InformationType<T>;
109
+ declare class Shot<T> extends TheInformation<T> {
110
+ private targetSrc;
111
+ private triggerSrc;
112
+ constructor(targetSrc: TheInformation<T>, triggerSrc: TheInformation);
113
+ value(o: TheOwner<T>): this;
114
+ }
62
115
 
63
116
  /**
64
117
  * Represents source what was changed at least once
65
118
  * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed
66
119
  */
67
- declare const onlyChanged: <T>(baseSrc: InformationType<T>) => InformationType<T>;
120
+ declare class OnlyChanged<T> extends TheInformation<T> {
121
+ private baseSrc;
122
+ constructor(baseSrc: TheInformation<T>);
123
+ value(o: TheOwner<T>): this;
124
+ }
68
125
 
69
126
  /**
70
127
  * https://silentium-lab.github.io/silentium-components/#/structures/hash-table
71
128
  */
72
- declare const hashTable: <T>(base: InformationType<[string, unknown]>) => InformationType<T>;
129
+ declare class HashTable<T> extends TheInformation<T> {
130
+ private baseSrc;
131
+ constructor(baseSrc: TheInformation<[string, unknown]>);
132
+ value(o: TheOwner<T>): this;
133
+ }
73
134
 
74
- type UnInformation<T> = T extends InformationType<infer U> ? U : never;
135
+ type UnInformation<T> = T extends TheInformation<infer U> ? U : never;
75
136
  /**
76
137
  * Returns record of data from record of sources
77
138
  * https://silentium-lab.github.io/silentium-components/#/structures/record
78
139
  */
79
- declare const record: <T extends InformationType>(recordSrc: Record<string, T>) => InformationType<Record<string, UnInformation<T>>>;
140
+ declare class RecordOf<T extends TheInformation> extends TheInformation<Record<string, UnInformation<T>>> {
141
+ private recordSrc;
142
+ constructor(recordSrc: Record<string, T>);
143
+ value(o: TheOwner<Record<string, UnInformation<T>>>): this;
144
+ }
80
145
 
81
146
  /**
82
147
  * Join sources of strings to one source
83
148
  * https://silentium-lab.github.io/silentium-components/#/string/concatenated
84
149
  */
85
- declare const concatenated: (sources: InformationType<string>[], joinPartSrc?: InformationType<string>) => InformationType<string>;
150
+ declare class Concatenated extends TheInformation<string> {
151
+ private sources;
152
+ private joinPartSrc;
153
+ constructor(sources: TheInformation<string>[], joinPartSrc?: TheInformation<string>);
154
+ value(o: TheOwner<string>): this;
155
+ }
86
156
 
87
157
  interface Route<T> {
88
158
  pattern: string;
89
159
  patternFlags?: string;
90
- template: T | InformationType<T>;
160
+ template: T | TheInformation<T>;
91
161
  }
92
162
  /**
93
163
  * Router component what will return template if url matches pattern
94
164
  * https://silentium-lab.github.io/silentium-components/#/navigation/router
95
165
  */
96
- declare const router: <T = "string">(urlSrc: InformationType<string>, routesSrc: InformationType<Route<T>[]>, defaultSrc: InformationType<T>) => InformationType<T>;
166
+ declare class Router<T = "string"> extends TheInformation<T> {
167
+ private urlSrc;
168
+ private routesSrc;
169
+ private defaultSrc;
170
+ constructor(urlSrc: TheInformation<string>, routesSrc: TheInformation<Route<T>[]>, defaultSrc: TheInformation<T>);
171
+ value(o: TheOwner<T>): this;
172
+ }
97
173
 
98
174
  /**
99
175
  * Boolean source what checks what string matches pattern
100
176
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
101
177
  */
102
- declare const regexpMatched: (patternSrc: InformationType<string>, valueSrc: InformationType<string>, flagsSrc?: InformationType<string>) => InformationType<boolean>;
178
+ declare class RegexpMatched extends TheInformation<boolean> {
179
+ private patternSrc;
180
+ private valueSrc;
181
+ private flagsSrc;
182
+ constructor(patternSrc: TheInformation<string>, valueSrc: TheInformation<string>, flagsSrc?: TheInformation<string>);
183
+ value(o: TheOwner<boolean>): this;
184
+ }
103
185
 
104
186
  /**
105
187
  * Returns string replaced by regular expression pattern
106
188
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced
107
189
  */
108
- declare const regexpReplaced: (valueSrc: InformationType<string>, patternSrc: InformationType<string>, replaceValueSrc: InformationType<string>, flagsSrc?: InformationType<string>) => InformationType<string>;
190
+ declare class RegexpReplaced extends TheInformation<string> {
191
+ private valueSrc;
192
+ private patternSrc;
193
+ private replaceValueSrc;
194
+ private flagsSrc;
195
+ constructor(valueSrc: TheInformation<string>, patternSrc: TheInformation<string>, replaceValueSrc: TheInformation<string>, flagsSrc?: TheInformation<string>);
196
+ value(o: TheOwner<string>): this;
197
+ }
109
198
 
110
199
  /**
111
200
  * First match of regexp
112
201
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched
113
202
  */
114
- declare const regexpMatch: (patternSrc: InformationType<string>, valueSrc: InformationType<string>, flagsSrc?: InformationType<string>) => InformationType<string[]>;
203
+ declare class RegexpMatch extends TheInformation<string[]> {
204
+ private patternSrc;
205
+ private valueSrc;
206
+ private flagsSrc;
207
+ constructor(patternSrc: TheInformation<string>, valueSrc: TheInformation<string>, flagsSrc?: TheInformation<string>);
208
+ value(o: TheOwner<string[]>): this;
209
+ }
115
210
 
116
211
  /**
117
212
  * Ability to mutate some object, helpful when integrate to procedure systems
118
213
  * https://silentium-lab.github.io/silentium-components/#/system/set
119
214
  */
120
- declare const set: <T extends Record<string, unknown>>(baseSrc: InformationType<T>, keySrc: InformationType<string>, valueSrc: InformationType<unknown>) => InformationType<T>;
215
+ declare class Set<T extends Record<string, unknown>> extends TheInformation<T> {
216
+ private baseSrc;
217
+ private keySrc;
218
+ private valueSrc;
219
+ constructor(baseSrc: TheInformation<T>, keySrc: TheInformation<string>, valueSrc: TheInformation<unknown>);
220
+ value(o: TheOwner<T>): this;
221
+ }
121
222
 
122
223
  /**
123
224
  * https://silentium-lab.github.io/silentium-components/#/boolean/and
124
225
  */
125
- declare const and: (oneSrc: InformationType<boolean>, twoSrc: InformationType<boolean>) => InformationType<boolean>;
226
+ declare class And extends TheInformation<boolean> {
227
+ private oneSrc;
228
+ private twoSrc;
229
+ constructor(oneSrc: TheInformation<boolean>, twoSrc: TheInformation<boolean>);
230
+ value(o: TheOwner<boolean>): this;
231
+ }
126
232
 
127
233
  /**
128
234
  * https://silentium-lab.github.io/silentium-components/#/boolean/or
129
235
  */
130
- declare const or: (oneSrc: InformationType<boolean>, twoSrc: InformationType<boolean>) => InformationType<boolean>;
236
+ declare class Or extends TheInformation<boolean> {
237
+ private oneSrc;
238
+ private twoSrc;
239
+ constructor(oneSrc: TheInformation<boolean>, twoSrc: TheInformation<boolean>);
240
+ value(o: TheOwner<boolean>): this;
241
+ }
131
242
 
132
243
  /**
133
244
  * https://silentium-lab.github.io/silentium-components/#/boolean/not
134
245
  */
135
- declare const not: (baseSrc: InformationType<boolean>) => InformationType<boolean>;
246
+ declare class Not extends TheInformation<boolean> {
247
+ private baseSrc;
248
+ constructor(baseSrc: TheInformation<boolean>);
249
+ value(o: TheOwner<boolean>): this;
250
+ }
251
+
252
+ /**
253
+ * Convert any source to boolean source
254
+ * https://silentium-lab.github.io/silentium-components/#/boolean/bool
255
+ */
256
+ declare class Bool extends TheInformation<boolean> {
257
+ private baseSrc;
258
+ constructor(baseSrc: TheInformation);
259
+ value(o: TheOwner<boolean>): this;
260
+ }
136
261
 
137
262
  /**
138
263
  * Represents object from json
139
264
  */
140
- declare const fromJson: <T>(jsonSrc: InformationType<string>, errorOwner?: OwnerType) => InformationType<T>;
265
+ declare class FromJson<T> extends TheInformation<T> {
266
+ private jsonSrc;
267
+ private errorOwner?;
268
+ constructor(jsonSrc: TheInformation<string>, errorOwner?: TheOwner | undefined);
269
+ value(o: TheOwner<T>): this;
270
+ }
141
271
 
142
272
  /**
143
- * Repreresents json from object
273
+ * Represents json from object
144
274
  */
145
- declare const toJson: (dataSrc: InformationType, errorOwner?: OwnerType) => InformationType<string>;
275
+ declare class ToJson extends TheInformation<string> {
276
+ private dataSrc;
277
+ private errorOwner?;
278
+ constructor(dataSrc: TheInformation, errorOwner?: TheOwner | undefined);
279
+ value(o: TheOwner<string>): this;
280
+ }
146
281
 
147
282
  /**
148
283
  * Represents the first element of an array.
149
284
  */
150
- declare const first: <T extends Array<unknown>>(baseSrc: InformationType<T>) => InformationType<T[0]>;
285
+ declare class First<T extends Array<unknown>> extends TheInformation<T[0]> {
286
+ private baseSrc;
287
+ constructor(baseSrc: TheInformation<T>);
288
+ value(o: TheOwner<T[0]>): this;
289
+ }
151
290
 
152
- export { and, branch, concatenated, deadline, deferred, dirty, first, fromJson, hashTable, loading, lock, memo, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick, toJson };
291
+ export { And, Bool, Branch, Concatenated, Deadline, Deferred, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Path, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Tick, ToJson };
153
292
  export type { Route };