silentium-components 0.0.24 → 0.0.25
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 +58 -0
- package/dist/silentium-components.cjs +26 -0
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +11 -1
- package/dist/silentium-components.js +25 -1
- package/dist/silentium-components.js.map +1 -1
- package/dist/silentium-components.min.js +1 -1
- package/dist/silentium-components.min.mjs +1 -1
- package/dist/silentium-components.min.mjs.map +1 -1
- package/dist/silentium-components.mjs +25 -1
- package/dist/silentium-components.mjs.map +1 -1
- package/docs/routes.json +1 -1
- package/package.json +2 -2
- package/src/formats/FromJson.ts +19 -0
- package/src/formats/ToJson.ts +19 -0
- package/src/formats/index.ts +2 -0
- package/src/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,64 @@
|
|
|
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.25](https://github.com/silentium-lab/silentium-components/compare/v0.0.23...v0.0.25) (2025-08-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **49:** boolean modules and reexport ([e6aacb8](https://github.com/silentium-lab/silentium-components/commit/e6aacb8fa2ac03e18a676b98c41c605ad032fa88))
|
|
11
|
+
* **49:** component dirty ([2a4122b](https://github.com/silentium-lab/silentium-components/commit/2a4122bc7fc1d82ce77546738ff5fe773ef36d5d))
|
|
12
|
+
* **49:** deadline component ([870a791](https://github.com/silentium-lab/silentium-components/commit/870a7911a687387cb2dc7875e36f1f6b39f4ae0f))
|
|
13
|
+
* **49:** defered component done ([5c7906f](https://github.com/silentium-lab/silentium-components/commit/5c7906fd1e1950d9dc20d56fae8f55812e888ee1))
|
|
14
|
+
* **49:** loading component fix ([e3b912f](https://github.com/silentium-lab/silentium-components/commit/e3b912fb323fcffe470f3822dce5fd0163b26ac0))
|
|
15
|
+
* **49:** lock component ([f1cb19e](https://github.com/silentium-lab/silentium-components/commit/f1cb19ef71e718e32c0160018e5f1d2289307ce7))
|
|
16
|
+
* **49:** only changed component fixed ([b9eb676](https://github.com/silentium-lab/silentium-components/commit/b9eb676aa33cc9db2111192c13c3d991fb9d4625))
|
|
17
|
+
* **49:** polling component done ([d4e4f9e](https://github.com/silentium-lab/silentium-components/commit/d4e4f9e449853c640a5b44bd64749df24bf4fd3c))
|
|
18
|
+
* **49:** reg match ([bf352fa](https://github.com/silentium-lab/silentium-components/commit/bf352fa2bf16eb3a1956b243071719d9f5e93141))
|
|
19
|
+
* **49:** regexp adaptation to oi ([a02926a](https://github.com/silentium-lab/silentium-components/commit/a02926a58424baee75c3cf4aa708928bcfcf363a))
|
|
20
|
+
* **49:** regexpReplaced io ([07019a6](https://github.com/silentium-lab/silentium-components/commit/07019a65b530820bb2763c0e94b466c685d56560))
|
|
21
|
+
* **49:** set component updated ([9d57f70](https://github.com/silentium-lab/silentium-components/commit/9d57f70ee59c8f1fc49728da09c1dc4f9e1be656))
|
|
22
|
+
* **main:** json format comopnents ([d1094b7](https://github.com/silentium-lab/silentium-components/commit/d1094b75b6735e59f3f93f33f3912c4c75e83e13))
|
|
23
|
+
* **pure:** branch component done ([7f9f606](https://github.com/silentium-lab/silentium-components/commit/7f9f60630236ff8b5fd3f59cd4f7ce6a97a8ef4e))
|
|
24
|
+
* **release:** documentation about promised ([45ea9b8](https://github.com/silentium-lab/silentium-components/commit/45ea9b8725f4767ea722c1b5b6b0854fe88bfd5d))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
* **49:** boolean comps fixed ([c4fe1a1](https://github.com/silentium-lab/silentium-components/commit/c4fe1a1a0a922408e2ec6509248ec74f63e74029))
|
|
30
|
+
* **49:** branch fixed ([d2429c4](https://github.com/silentium-lab/silentium-components/commit/d2429c44e30ad1c3b49599147450f2872ea645ee))
|
|
31
|
+
* **49:** branch infoSync type fixed ([a9e7c62](https://github.com/silentium-lab/silentium-components/commit/a9e7c62c0f0ad7f394374e56be7fbb0cf2326a33))
|
|
32
|
+
* **49:** fixes are main option ([e53fc0a](https://github.com/silentium-lab/silentium-components/commit/e53fc0aaf49906f5b8f0a605896428334d486c3e))
|
|
33
|
+
* **49:** hash table fixed ([54515ee](https://github.com/silentium-lab/silentium-components/commit/54515eeb6bb20750d6d44e6af1281c520aff151c))
|
|
34
|
+
* **49:** memo component fixed ([5c96a77](https://github.com/silentium-lab/silentium-components/commit/5c96a773cbf35b58f4a78141b8adc71a8486966e))
|
|
35
|
+
* **49:** moment component not needed ([211f371](https://github.com/silentium-lab/silentium-components/commit/211f371e5d812a31c182bffa8709a8f3fd99219e))
|
|
36
|
+
* **49:** no need in controls group ([8925923](https://github.com/silentium-lab/silentium-components/commit/89259233fa3ff8a8d0a72bd7577f4afca9b16e36))
|
|
37
|
+
* **49:** no need in polling ([8441ed9](https://github.com/silentium-lab/silentium-components/commit/8441ed96125e15ad7dc710e2d7ae5f018757ba8e)), closes [#52](https://github.com/silentium-lab/silentium-components/issues/52)
|
|
38
|
+
* **49:** no need in priority ([074a1db](https://github.com/silentium-lab/silentium-components/commit/074a1dbb1cdf548a6c3c10c66963be19515d8757)), closes [#52](https://github.com/silentium-lab/silentium-components/issues/52)
|
|
39
|
+
* **49:** path tests fixed ([96a5c8f](https://github.com/silentium-lab/silentium-components/commit/96a5c8fef6f075f4823b497c4fff6ffc12bdd25a))
|
|
40
|
+
* **49:** record fixed ([0f88ee6](https://github.com/silentium-lab/silentium-components/commit/0f88ee63cc8630352512e21be28661214e631eff))
|
|
41
|
+
* **49:** router fixed ([204a6f4](https://github.com/silentium-lab/silentium-components/commit/204a6f4b854a9adc88c201398aa515729691f47a))
|
|
42
|
+
* **49:** test on deadline fiexed ([a1735e8](https://github.com/silentium-lab/silentium-components/commit/a1735e890eeb59f39dad0d086aecc15e68659cc1))
|
|
43
|
+
* **49:** tick and shot fixed ([c8b7926](https://github.com/silentium-lab/silentium-components/commit/c8b7926c512730f9165affd4c583b64e9cc6d828)), closes [#53](https://github.com/silentium-lab/silentium-components/issues/53)
|
|
44
|
+
* **49:** version update and moment clean up ([e212104](https://github.com/silentium-lab/silentium-components/commit/e212104406b7f4a06f1107e101c9ebf0f5db4d25))
|
|
45
|
+
* **main:** before release script ([56bad1b](https://github.com/silentium-lab/silentium-components/commit/56bad1b2e97f504930b714848af54d22e03a00ae))
|
|
46
|
+
* **pure:** all done ([7b56810](https://github.com/silentium-lab/silentium-components/commit/7b56810cbd36b96bdc19ec0983d1ffca5083c24f))
|
|
47
|
+
* **pure:** boolean components ([4e15cf0](https://github.com/silentium-lab/silentium-components/commit/4e15cf0e94c61f6a2c7009ea7d0defab4d74b309))
|
|
48
|
+
* **pure:** concatenated component ([9889221](https://github.com/silentium-lab/silentium-components/commit/9889221343ba487103a1c055c049008e1c40c25b))
|
|
49
|
+
* **pure:** deadline component fixed ([f5daf23](https://github.com/silentium-lab/silentium-components/commit/f5daf2314efb12f6f4c230f1fa90fd5952dae0a4))
|
|
50
|
+
* **pure:** deferred component ([50474e3](https://github.com/silentium-lab/silentium-components/commit/50474e33cd1f0978ca6a0bbed55d6e4294444483))
|
|
51
|
+
* **pure:** hashTable component done ([a7168f8](https://github.com/silentium-lab/silentium-components/commit/a7168f8b97be3dbd611e000b762f767b423fadb6))
|
|
52
|
+
* **pure:** lock done ([9f8d25f](https://github.com/silentium-lab/silentium-components/commit/9f8d25f2175edf1a53515e9f1c3d27832cbac0d8))
|
|
53
|
+
* **pure:** memo component ([622de17](https://github.com/silentium-lab/silentium-components/commit/622de17d7038faf4f6b6bcb2ef9cce7dd3250b21))
|
|
54
|
+
* **pure:** only changed done ([eded110](https://github.com/silentium-lab/silentium-components/commit/eded1103a9ce6f542d1640773cb200de0aa0c99c))
|
|
55
|
+
* **pure:** path component done ([dec89d0](https://github.com/silentium-lab/silentium-components/commit/dec89d08e01e7c05123b495fa3c87e936ba9c125))
|
|
56
|
+
* **pure:** record done ([2b036fe](https://github.com/silentium-lab/silentium-components/commit/2b036feae9503b74dcf9003be700231f8f64b322))
|
|
57
|
+
* **pure:** regexp replaced ([e514b23](https://github.com/silentium-lab/silentium-components/commit/e514b23b56cc0f0c6a8b1fb8a86f291fba74d6f8))
|
|
58
|
+
* **pure:** regexpMatch done ([77bd069](https://github.com/silentium-lab/silentium-components/commit/77bd06991a1a626f6c5c681d12ebabb996dcefbb))
|
|
59
|
+
* **pure:** router component done ([229bede](https://github.com/silentium-lab/silentium-components/commit/229bedea16035ecbd13a82d4bf61cc20d5d40c4c))
|
|
60
|
+
* **pure:** shot component fixed ([cf8f0d3](https://github.com/silentium-lab/silentium-components/commit/cf8f0d3cc7cd23ecbeabbf27adb28288ee64c919))
|
|
61
|
+
* **pure:** tick component fixed ([5854f07](https://github.com/silentium-lab/silentium-components/commit/5854f071e542915d352af74a93806b14746487e5))
|
|
62
|
+
|
|
5
63
|
### [0.0.24](https://github.com/silentium-lab/silentium-components/compare/v0.0.21...v0.0.24) (2025-08-15)
|
|
6
64
|
|
|
7
65
|
|
|
@@ -333,12 +333,37 @@ const not = (baseSrc) => {
|
|
|
333
333
|
};
|
|
334
334
|
};
|
|
335
335
|
|
|
336
|
+
const fromJson = (jsonSrc, errorOwner) => {
|
|
337
|
+
return (o) => {
|
|
338
|
+
jsonSrc((json) => {
|
|
339
|
+
try {
|
|
340
|
+
o(JSON.parse(json));
|
|
341
|
+
} catch (error) {
|
|
342
|
+
errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
};
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const toJson = (dataSrc, errorOwner) => {
|
|
349
|
+
return (o) => {
|
|
350
|
+
dataSrc((data) => {
|
|
351
|
+
try {
|
|
352
|
+
o(JSON.stringify(data));
|
|
353
|
+
} catch {
|
|
354
|
+
errorOwner?.(new Error("Failed to convert to JSON"));
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
};
|
|
358
|
+
};
|
|
359
|
+
|
|
336
360
|
exports.and = and;
|
|
337
361
|
exports.branch = branch;
|
|
338
362
|
exports.concatenated = concatenated;
|
|
339
363
|
exports.deadline = deadline;
|
|
340
364
|
exports.deferred = deferred;
|
|
341
365
|
exports.dirty = dirty;
|
|
366
|
+
exports.fromJson = fromJson;
|
|
342
367
|
exports.hashTable = hashTable;
|
|
343
368
|
exports.loading = loading;
|
|
344
369
|
exports.lock = lock;
|
|
@@ -355,4 +380,5 @@ exports.router = router;
|
|
|
355
380
|
exports.set = set;
|
|
356
381
|
exports.shot = shot;
|
|
357
382
|
exports.tick = tick;
|
|
383
|
+
exports.toJson = toJson;
|
|
358
384
|
//# sourceMappingURL=silentium-components.cjs.map
|
|
@@ -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"],"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"],"names":["of","applied","all","comparing","sharedStateless","filtered","isFilled","record","i","any","chain"],"mappings":"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"}
|
|
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"],"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"],"names":["of","applied","all","comparing","sharedStateless","filtered","isFilled","record","i","any","chain"],"mappings":"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"}
|
|
@@ -134,5 +134,15 @@ declare const or: (oneSrc: InformationType<boolean>, twoSrc: InformationType<boo
|
|
|
134
134
|
*/
|
|
135
135
|
declare const not: (baseSrc: InformationType<boolean>) => InformationType<boolean>;
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Represents object from json
|
|
139
|
+
*/
|
|
140
|
+
declare const fromJson: <T>(jsonSrc: InformationType<string>, errorOwner?: OwnerType) => InformationType<T>;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Repreresents json from object
|
|
144
|
+
*/
|
|
145
|
+
declare const toJson: (dataSrc: InformationType, errorOwner?: OwnerType) => InformationType<string>;
|
|
146
|
+
|
|
147
|
+
export { and, branch, concatenated, deadline, deferred, dirty, fromJson, hashTable, loading, lock, memo, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick, toJson };
|
|
138
148
|
export type { Route };
|
|
@@ -331,5 +331,29 @@ const not = (baseSrc) => {
|
|
|
331
331
|
};
|
|
332
332
|
};
|
|
333
333
|
|
|
334
|
-
|
|
334
|
+
const fromJson = (jsonSrc, errorOwner) => {
|
|
335
|
+
return (o) => {
|
|
336
|
+
jsonSrc((json) => {
|
|
337
|
+
try {
|
|
338
|
+
o(JSON.parse(json));
|
|
339
|
+
} catch (error) {
|
|
340
|
+
errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
const toJson = (dataSrc, errorOwner) => {
|
|
347
|
+
return (o) => {
|
|
348
|
+
dataSrc((data) => {
|
|
349
|
+
try {
|
|
350
|
+
o(JSON.stringify(data));
|
|
351
|
+
} catch {
|
|
352
|
+
errorOwner?.(new Error("Failed to convert to JSON"));
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
export { and, branch, concatenated, deadline, deferred, dirty, fromJson, hashTable, loading, lock, memo, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick, toJson };
|
|
335
359
|
//# sourceMappingURL=silentium-components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium-components.js","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"],"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"],"names":["comparing","record"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium-components.js","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"],"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"],"names":["comparing","record"],"mappings":";;AAOa,MAAA,KAAA,GAAQ,CACnB,gBACA,EAAA,UAAA,GAAuB,EACvB,EAAA,WAAA,GAAwB,EACrB,KAAA;AACH,EAAA,MAAM,CAAC,SAAA,EAAW,EAAE,CAAA,GAAI,EAAM,EAAA;AAE9B,EAAA,MAAM,iBAAoB,GAAA,OAAA;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,IAAA,GAAA;AAAA,MACE,iBAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAACA,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,IAAA,GAAA;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,GAAI,gBAAgB,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,GAAA,QAAA,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,IAAI,QAAS,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,GAAA,QAAA,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,IAAI,QAAS,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,IAAA,GAAA,CAAI,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAC,OAAY,KAAA;AAC5C,MAAA,MAAMC,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,CAAA,CAAEA,OAAM,CAAA;AAAA,KACT,CAAA;AAAA,GACH;AACF;;ACfO,MAAM,eAAe,CAC1B,OAAA,EACA,WAAuC,GAAA,CAAA,CAAE,EAAE,CACf,KAAA;AAC5B,EAAA,OAAO,CAAC,CAAM,KAAA;AACZ,IAAA,GAAA;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,WAAoC,CAAE,CAAA,EAAE,CAE1C,KAAA,CAAC,CAAM,KAAA;AACL,EAAA,GAAA;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,MAAA,GAAA;AAAA,QACE,KAAA,CAAM,QAAQ,UAAU,CAAA;AAAA,QACxB,GAAG,MAAA,CAAO,GAAI,CAAA,CAAC,CAAM,KAAA;AACnB,UAAO,OAAA,MAAA;AAAA,YACL,aAAA;AAAA,cACE,CAAA,CAAE,EAAE,OAAO,CAAA;AAAA,cACX,MAAA;AAAA,cACA,CAAE,CAAA,YAAA,GAAe,CAAE,CAAA,CAAA,CAAE,YAAY,CAAI,GAAA;AAAA,aACvC;AAAA,YACC,OAAO,EAAE,QAAa,KAAA,UAAA,GACnB,EAAE,QACF,GAAA,CAAA,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,WAAoC,CAAE,CAAA,EAAE,CAE1C,KAAA,CAAC,CAAM,KAAA;AACL,EAAA,GAAA;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,WAAoC,CAAE,CAAA,EAAE,CAE1C,KAAA,CAAC,CAAM,KAAA;AACL,EAAA,GAAA;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,IAAA,GAAA;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,IAAA,GAAA;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,IAAA,GAAA;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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"use strict";const l=e=>{let t;return e((e=>{t=e})),{value(){if(void 0===t)throw new Error("no value in sync");return t}}},
|
|
1
|
+
!function(e,t){"use strict";const l=e=>{let t;return e((e=>{t=e})),{value(){if(void 0===t)throw new Error("no value in sync");return t}}},r=(e,t,r)=>n=>{const a=l(t);let o;void 0!==r&&(o=l(r)),e((e=>{e?n(a.value()):o&&n(o.value())}))},n=(e,l,r=t.i(""))=>n=>{t.all(e,l,r)((([e,t,l])=>{n(new RegExp(e,l).test(t))}))};e.and=(e,l)=>r=>{t.all(e,l)((([e,t])=>{r(e&&t)}))},e.branch=r,e.concatenated=(e,l=t.i(""))=>r=>{t.all(l,...e)((([e,...t])=>{r(t.join(e))}))},e.deadline=(e,l,r)=>{let n=null;return a=>{const[o,i]=t.sharedStateless(l);return r((l=>{n&&clearTimeout(n);let r=!1;n=setTimeout((()=>{r||(r=!0,e(new Error("Timeout reached in Deadline class")))}),l);t.filtered(o,(()=>!r))(a),o((()=>{r=!0}))})),()=>{i.destroy()}}},e.deferred=(e,r)=>n=>{const a=l(e);r((()=>{t.isFilled(a.value())&&n(a.value())}))},e.dirty=(e,l=[],r=[])=>{const[n,a]=t.of(),o=t.applied(n,(e=>JSON.parse(JSON.stringify(e))));return[n=>{t.all(o,e)((([e,t])=>{e&&n(Object.fromEntries(Object.entries(e).filter((([e,n])=>!!l.includes(e)||!r.includes(e)&&n!==t[e]))))}))},a]},e.fromJson=(e,t)=>l=>{e((e=>{try{l(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},e.hashTable=e=>t=>{const l={};e((([e,r])=>{l[e]=r,t(l)}))},e.loading=(e,t)=>l=>{e((()=>{l(!0)})),t((()=>{l(!1)}))},e.lock=(e,l)=>{let r=!1;const n=t.filtered(e,(()=>!r));return e=>{l((e=>{r=e})),n(e)}},e.memo=e=>{let t=null;return l=>{e((e=>{e!==t&&(l(e),t=e)}))}},e.not=e=>t=>{e((e=>{t(!e)}))},e.onlyChanged=e=>{let t=!1;return l=>{e((e=>{!1===t?t=!0:l(e)}))}},e.or=(e,l)=>r=>{t.all(e,l)((([e,t])=>{r(e||t)}))},e.path=(e,l)=>r=>{t.all(e,l)((([e,t])=>{const l=t.split(".");let n=e;l.forEach((e=>{n=n[e]})),void 0!==n&&n!==e&&r(n)}))},e.record=e=>l=>{const r=Object.keys(e);t.all(...Object.values(e))((e=>{const t={};e.forEach(((e,l)=>{t[r[l]]=e})),l(t)}))},e.regexpMatch=(e,l,r=t.i(""))=>n=>{t.all(e,l,r)((([e,t,l])=>{const r=new RegExp(e,l).exec(t);n(r??[])}))},e.regexpMatched=n,e.regexpReplaced=(e,l,r,n=t.i(""))=>a=>{t.all(l,e,r,n)((([e,t,l,r])=>{a(String(t).replace(new RegExp(e,r),l))}))},e.router=(e,l,a)=>o=>{l((l=>{t.any(t.chain(e,a),...l.map((l=>r(n(t.i(l.pattern),e,l.patternFlags?t.i(l.patternFlags):void 0),"function"==typeof l.template?l.template:t.i(l.template)))))(o)}))},e.set=(e,l,r)=>n=>{t.all(e,l,r)((([e,t,l])=>{e[t]=l,n(e)}))},e.shot=(e,r)=>n=>{const a=l(e);r((()=>{t.isFilled(a.value())&&n(a.value())}))},e.tick=e=>t=>{let l=!1,r=null;e((e=>{r=e,l||(l=!0,queueMicrotask((()=>{l=!1,null!==r&&(t(r),r=null)})))}))},e.toJson=(e,t)=>l=>{e((e=>{try{l(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))}}({},silentium);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{of as e,applied as t,all as
|
|
1
|
+
import{of as e,applied as t,all as r,sharedStateless as n,filtered as l,isFilled as o,i as s,any as a,chain as c}from"silentium";const u=(n,l=[],o=[])=>{const[s,a]=e(),c=t(s,(e=>JSON.parse(JSON.stringify(e))));return[e=>{r(c,n)((([t,r])=>{t&&e(Object.fromEntries(Object.entries(t).filter((([e,t])=>!!l.includes(e)||!o.includes(e)&&t!==r[e]))))}))},a]},i=(e,t)=>r=>{e((()=>{r(!0)})),t((()=>{r(!1)}))},p=(e,t)=>n=>{r(e,t)((([e,t])=>{const r=t.split(".");let l=e;r.forEach((e=>{l=l[e]})),void 0!==l&&l!==e&&n(l)}))},v=(e,t,r)=>{let o=null;return s=>{const[a,c]=n(t);return r((t=>{o&&clearTimeout(o);let r=!1;o=setTimeout((()=>{r||(r=!0,e(new Error("Timeout reached in Deadline class")))}),t);l(a,(()=>!r))(s),a((()=>{r=!0}))})),()=>{c.destroy()}}},d=e=>t=>{let r=!1,n=null;e((e=>{n=e,r||(r=!0,queueMicrotask((()=>{r=!1,null!==n&&(t(n),n=null)})))}))},m=e=>{let t;return e((e=>{t=e})),{value(){if(void 0===t)throw new Error("no value in sync");return t}}},f=(e,t)=>r=>{const n=m(e);t((()=>{o(n.value())&&r(n.value())}))},E=(e,t,r)=>n=>{const l=m(t);let o;void 0!==r&&(o=m(r)),e((e=>{e?n(l.value()):o&&n(o.value())}))},O=e=>{let t=null;return r=>{e((e=>{e!==t&&(r(e),t=e)}))}},g=(e,t)=>{let r=!1;const n=l(e,(()=>!r));return e=>{t((e=>{r=e})),n(e)}},w=(e,t)=>r=>{const n=m(e);t((()=>{o(n.value())&&r(n.value())}))},y=e=>{let t=!1;return r=>{e((e=>{!1===t?t=!0:r(e)}))}},S=e=>t=>{const r={};e((([e,n])=>{r[e]=n,t(r)}))},h=e=>t=>{const n=Object.keys(e);r(...Object.values(e))((e=>{const r={};e.forEach(((e,t)=>{r[n[t]]=e})),t(r)}))},J=(e,t=s(""))=>n=>{r(t,...e)((([e,...t])=>{n(t.join(e))}))},N=(e,t,n=s(""))=>l=>{r(e,t,n)((([e,t,r])=>{l(new RegExp(e,r).test(t))}))},j=(e,t,r)=>n=>{t((t=>{a(c(e,r),...t.map((t=>E(N(s(t.pattern),e,t.patternFlags?s(t.patternFlags):void 0),"function"==typeof t.template?t.template:s(t.template)))))(n)}))},x=(e,t,n,l=s(""))=>o=>{r(t,e,n,l)((([e,t,r,n])=>{o(String(t).replace(new RegExp(e,n),r))}))},b=(e,t,n=s(""))=>l=>{r(e,t,n)((([e,t,r])=>{const n=new RegExp(e,r).exec(t);l(n??[])}))},F=(e,t,n)=>l=>{r(e,t,n)((([e,t,r])=>{e[t]=r,l(e)}))},R=(e,t)=>n=>{r(e,t)((([e,t])=>{n(e&&t)}))},T=(e,t)=>n=>{r(e,t)((([e,t])=>{n(e||t)}))},k=e=>t=>{e((e=>{t(!e)}))},q=(e,t)=>r=>{e((e=>{try{r(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},D=(e,t)=>r=>{e((e=>{try{r(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))};export{R as and,E as branch,J as concatenated,v as deadline,f as deferred,u as dirty,q as fromJson,S as hashTable,i as loading,g as lock,O as memo,k as not,y as onlyChanged,T as or,p as path,h as record,b as regexpMatch,N as regexpMatched,x as regexpReplaced,j as router,F as set,w as shot,d as tick,D as toJson};
|
|
2
2
|
//# sourceMappingURL=silentium-components.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium-components.min.mjs","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"],"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"],"names":["dirty","baseEntitySource","alwaysKeep","excludeKeys","comparing","co","of","comparingDetached","applied","value","JSON","parse","stringify","o","all","base","Object","fromEntries","entries","filter","key","includes","loading","loadingStartSource","loadingFinishSource","path","baseSrc","keySrc","keyChunks","split","forEach","keyChunk","deadline","error","timeoutSrc","timerHead","baseShared","pool","sharedStateless","timeout","clearTimeout","timeoutReached","setTimeout","Error","filtered","f","destroy","tick","microtaskScheduled","lastValue","v","queueMicrotask","sync","deferred","triggerSrc","baseSync","isFilled","branch","condition","left","right","leftSync","rightSync","memo","lock","lockSrc","locked","i","newLock","shot","targetSrc","targetSync","onlyChanged","firstValue","hashTable","record","recordSrc","keys","values","entry","index","concatenated","sources","joinPartSrc","joinPart","strings","join","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","router","urlSrc","routesSrc","defaultSrc","routes","any","chain","map","r","patternFlags","template","regexpReplaced","replaceValueSrc","replaceValue","String","replace","regexpMatch","result","exec","set","and","oneSrc","twoSrc","one","two","or","not"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium-components.min.mjs","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"],"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"],"names":["dirty","baseEntitySource","alwaysKeep","excludeKeys","comparing","co","of","comparingDetached","applied","value","JSON","parse","stringify","o","all","base","Object","fromEntries","entries","filter","key","includes","loading","loadingStartSource","loadingFinishSource","path","baseSrc","keySrc","keyChunks","split","forEach","keyChunk","deadline","error","timeoutSrc","timerHead","baseShared","pool","sharedStateless","timeout","clearTimeout","timeoutReached","setTimeout","Error","filtered","f","destroy","tick","microtaskScheduled","lastValue","v","queueMicrotask","sync","deferred","triggerSrc","baseSync","isFilled","branch","condition","left","right","leftSync","rightSync","memo","lock","lockSrc","locked","i","newLock","shot","targetSrc","targetSync","onlyChanged","firstValue","hashTable","record","recordSrc","keys","values","entry","index","concatenated","sources","joinPartSrc","joinPart","strings","join","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","router","urlSrc","routesSrc","defaultSrc","routes","any","chain","map","r","patternFlags","template","regexpReplaced","replaceValueSrc","replaceValue","String","replace","regexpMatch","result","exec","set","and","oneSrc","twoSrc","one","two","or","not","fromJson","jsonSrc","errorOwner","json","toJson","dataSrc","data"],"mappings":"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"}
|
|
@@ -331,5 +331,29 @@ const not = (baseSrc) => {
|
|
|
331
331
|
};
|
|
332
332
|
};
|
|
333
333
|
|
|
334
|
-
|
|
334
|
+
const fromJson = (jsonSrc, errorOwner) => {
|
|
335
|
+
return (o) => {
|
|
336
|
+
jsonSrc((json) => {
|
|
337
|
+
try {
|
|
338
|
+
o(JSON.parse(json));
|
|
339
|
+
} catch (error) {
|
|
340
|
+
errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
const toJson = (dataSrc, errorOwner) => {
|
|
347
|
+
return (o) => {
|
|
348
|
+
dataSrc((data) => {
|
|
349
|
+
try {
|
|
350
|
+
o(JSON.stringify(data));
|
|
351
|
+
} catch {
|
|
352
|
+
errorOwner?.(new Error("Failed to convert to JSON"));
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
export { and, branch, concatenated, deadline, deferred, dirty, fromJson, hashTable, loading, lock, memo, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick, toJson };
|
|
335
359
|
//# sourceMappingURL=silentium-components.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silentium-components.mjs","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"],"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"],"names":["comparing","record"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium-components.mjs","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"],"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"],"names":["comparing","record"],"mappings":"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"}
|
package/docs/routes.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
["pages/en/404.html","pages/en/index.html","pages/en/behaviors.html","pages/en/structures/hash-table.html","pages/en/system.html","pages/en/structures.html","pages/en/system/promised.html","pages/en/behaviors/deadline.html","pages/en/behaviors/loading.html","pages/en/behaviors/path.html","pages/en/behaviors/dirty.html","pages/404.html","pages/index.html","pages/behaviors.html","pages/structures/hash-table.html","pages/system.html","pages/structures.html","pages/system/promised.html","pages/behaviors/deadline.html","pages/behaviors/loading.html","pages/behaviors/path.html","pages/behaviors/dirty.html"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "silentium-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/silentium-components.js",
|
|
@@ -60,6 +60,6 @@
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"silentium": "^0.0.
|
|
63
|
+
"silentium": "^0.0.61"
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InformationType, OwnerType } from "silentium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents object from json
|
|
5
|
+
*/
|
|
6
|
+
export const fromJson = <T>(
|
|
7
|
+
jsonSrc: InformationType<string>,
|
|
8
|
+
errorOwner?: OwnerType,
|
|
9
|
+
): InformationType<T> => {
|
|
10
|
+
return (o) => {
|
|
11
|
+
jsonSrc((json) => {
|
|
12
|
+
try {
|
|
13
|
+
o(JSON.parse(json));
|
|
14
|
+
} catch (error) {
|
|
15
|
+
errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InformationType, OwnerType } from "silentium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Repreresents json from object
|
|
5
|
+
*/
|
|
6
|
+
export const toJson = (
|
|
7
|
+
dataSrc: InformationType,
|
|
8
|
+
errorOwner?: OwnerType,
|
|
9
|
+
): InformationType<string> => {
|
|
10
|
+
return (o) => {
|
|
11
|
+
dataSrc((data) => {
|
|
12
|
+
try {
|
|
13
|
+
o(JSON.stringify(data));
|
|
14
|
+
} catch {
|
|
15
|
+
errorOwner?.(new Error("Failed to convert to JSON"));
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
};
|
package/src/index.ts
CHANGED