silentium-components 0.0.67 → 0.0.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
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.68](https://github.com/silentium-lab/silentium-components/compare/v0.0.67...v0.0.68) (2025-10-19)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** transaction done ([d059727](https://github.com/silentium-lab/silentium-components/commit/d05972755d4c853565780169316f554d2c186819))
11
+
5
12
  ### [0.0.67](https://github.com/silentium-lab/silentium-components/compare/v0.0.66...v0.0.67) (2025-10-16)
6
13
 
7
14
 
@@ -287,6 +287,21 @@ function Tick(baseSrc) {
287
287
  };
288
288
  }
289
289
 
290
+ function Transaction($base, eventBuilder, ...args) {
291
+ const $res = silentium.LateShared();
292
+ const destructors = [];
293
+ $base((v) => {
294
+ destructors.forEach((d) => d.destroy());
295
+ destructors.length = 0;
296
+ const $event = silentium.Destructor(
297
+ eventBuilder(silentium.Of(v), ...args.map((a) => Detached(a)))
298
+ );
299
+ destructors.push($event);
300
+ $event.event($res.use);
301
+ });
302
+ return $res.event;
303
+ }
304
+
290
305
  function HashTable(baseSrc) {
291
306
  return (user) => {
292
307
  const record = {};
@@ -555,4 +570,5 @@ exports.Task = Task;
555
570
  exports.Template = Template;
556
571
  exports.Tick = Tick;
557
572
  exports.ToJson = ToJson;
573
+ exports.Transaction = Transaction;
558
574
  //# sourceMappingURL=silentium-components.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Primitive","Shared","Filtered","isFilled","Detached","Late","Applied","All","ExecutorApplied","Of","vars","Destructor","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n) {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return $res.event;\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Primitive","Shared","Filtered","isFilled","Detached","Late","Applied","All","ExecutorApplied","LateShared","Destructor","Of","vars","r"],"mappings":"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"}
@@ -85,6 +85,15 @@ declare function Task<T>(baseSrc: EventType<T>, delay?: number): EventType<T>;
85
85
  */
86
86
  declare function Tick<T>(baseSrc: EventType<T>): EventType<T>;
87
87
 
88
+ /**
89
+ * Do something on event value.
90
+ * Each event value will create new eventBuilder instance
91
+ */
92
+ declare function Transaction<T, R = unknown>($base: EventType<T>, eventBuilder: ConstructorType<[
93
+ EventType<T>,
94
+ ...EventType<any>[]
95
+ ], EventType<R>>, ...args: EventType[]): EventType<R>;
96
+
88
97
  /**
89
98
  * https://silentium-lab.github.io/silentium-components/#/structures/hash-table
90
99
  */
@@ -185,5 +194,5 @@ declare function ToJson(dataSrc: EventType, errorOwner?: EventUserType): EventTy
185
194
  */
186
195
  declare function First<T extends Array<unknown>>(baseSrc: EventType<T>): EventType<T[0]>;
187
196
 
188
- export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
197
+ export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson, Transaction };
189
198
  export type { Route };
@@ -1,4 +1,4 @@
1
- import { Primitive, Shared, Filtered, isFilled, Late, Applied, All, ExecutorApplied, Of, Destructor } from 'silentium';
1
+ import { Primitive, Shared, Filtered, isFilled, Late, Applied, All, ExecutorApplied, LateShared, Destructor, Of } from 'silentium';
2
2
 
3
3
  function Branch(conditionSrc, leftSrc, rightSrc) {
4
4
  return (user) => {
@@ -285,6 +285,21 @@ function Tick(baseSrc) {
285
285
  };
286
286
  }
287
287
 
288
+ function Transaction($base, eventBuilder, ...args) {
289
+ const $res = LateShared();
290
+ const destructors = [];
291
+ $base((v) => {
292
+ destructors.forEach((d) => d.destroy());
293
+ destructors.length = 0;
294
+ const $event = Destructor(
295
+ eventBuilder(Of(v), ...args.map((a) => Detached(a)))
296
+ );
297
+ destructors.push($event);
298
+ $event.event($res.use);
299
+ });
300
+ return $res.event;
301
+ }
302
+
288
303
  function HashTable(baseSrc) {
289
304
  return (user) => {
290
305
  const record = {};
@@ -520,5 +535,5 @@ function First(baseSrc) {
520
535
  };
521
536
  }
522
537
 
523
- export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
538
+ export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson, Transaction };
524
539
  //# sourceMappingURL=silentium-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n) {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return $res.event;\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
@@ -1 +1 @@
1
- !function(t,e){"use strict";function n(t,e,n){return r=>{let i;return t((t=>{void 0!==i&&"function"==typeof i&&i();let l=null;t?l=e():n&&(l=n()),l&&(i=l(r))})),()=>{i?.()}}}function r(t){return n=>{const r=Object.keys(t);e.All(...Object.values(t))((t=>{const e={};t.forEach(((t,n)=>{e[r[n]]=t})),n(e)}))}}function i(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{i(new RegExp(t,n).test(e))}))}}const l=()=>e.Of(!1);t.And=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t&&e)}))}},t.Bool=function(t){return n=>{e.Applied(t,Boolean)(n)}},t.Branch=function(t,n,r){return i=>{const l=e.Primitive(n);let o;void 0!==r&&(o=e.Primitive(r)),t((t=>{let e=null;t?e=l.primitive():o&&(e=o.primitive()),null!==e&&i(e)}))}},t.BranchLazy=n,t.Concatenated=function(t,n=e.Of("")){return r=>{e.All(n,...t)((([t,...e])=>{r(e.join(t))}))}},t.Constant=function(t,e){return n=>{e((()=>{n(t)}))}},t.Deadline=function(t,n,r){return i=>{let l=null;const o=e.Shared(n,!0);r((n=>{l&&clearTimeout(l);let r=!1;l=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e.Filtered(o.event,(()=>!r))(i),o.event((()=>{r=!0}))}))}},t.Deferred=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Detached=function(t){return function(n){const r=e.Primitive(t).primitive();e.isFilled(r)&&n(r)}},t.Dirty=function(t,n=[],r=[],i){const l=e.Late();return void 0===i&&(i=t=>JSON.parse(JSON.stringify(t))),{event:o=>{const u=e.Applied(l.event,i);e.All(u,t)((([t,e])=>{t&&o(Object.fromEntries(Object.entries(t).filter((([t,i])=>!!n.includes(t)||!r.includes(t)&&i!==e[t]))))}))},use:t=>{l.use(t)}}},t.First=function(t){return n=>{e.Applied(t,(t=>t[0]))(n)}},t.FromJson=function(t,e){return n=>{t((t=>{try{n(JSON.parse(t))}catch(t){e?.(new Error(`Failed to parse JSON: ${t}`))}}))}},t.HashTable=function(t){return e=>{const n={};t((([t,r])=>{n[t]=r,e(n)}))}},t.Loading=function(t,e){return n=>{t((()=>n(!0))),e((()=>n(!1)))}},t.Lock=function(t,n){return r=>{let i=!1;n((t=>{i=t}));e.Filtered(t,(()=>!i))(r)}},t.Memo=function(t){return e=>{let n=null;t((t=>{t!==n&&(e(t),n=t)}))}},t.Not=function(t){return e=>{t((t=>{e(!t)}))}},t.OnlyChanged=function(t){return e=>{let n=!1;t((t=>{!1===n?n=!0:e(t)}))}},t.Or=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t||e)}))}},t.Part=function(t,n){const r=e.Primitive(t.event),i=e.Primitive(n);return{event:r=>{e.All(t.event,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))},use:n=>{const l=i.primitive();e.isFilled(l)&&t.use({...r.primitive(),[l]:n})}}},t.Path=function(t,n){return r=>{e.All(t,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))}},t.Polling=function(t,e){return n=>{e((()=>{t(n)}))}},t.RecordOf=r,t.RegexpMatch=function(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{const r=new RegExp(t,n).exec(e);i(r??[])}))}},t.RegexpMatched=i,t.RegexpReplaced=function(t,n,r,i=e.Of("")){return l=>{e.All(n,t,r,i)((([t,e,n,r])=>{l(String(e).replace(new RegExp(t,r),n))}))}},t.Router=function(t,r,o){return u=>{const c=[],s=()=>{c.forEach((t=>t())),c.length=0};return e.All(r,t)((([t,r])=>{s();const f=e.All(o(),e.All(...t.map((t=>e.Destructor(n(i(e.Of(t.pattern),e.Of(r),t.patternFlags?e.Of(t.patternFlags):void 0),t.template,l),(t=>c.push(t))).event))));e.Applied(f,(t=>{const e=t[1].find((t=>!1!==t));return e||t[0]}))(u)})),s}},t.Set=function(t,n,r){return i=>{e.All(t,n,r)((([t,e,n])=>{t[e]=n,i(t)}))}},t.Shot=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Task=function(t,n=0){return r=>{let i=null;e.ExecutorApplied(t,(t=>e=>{i&&clearTimeout(i),i=setTimeout((()=>{t(e)}),n)}))(r)}},t.Template=function(t=e.Of(""),n=e.Of({})){let i=0;const l={$TPL:e.Of("$TPL")},o=[];return{value:i=>{const o=r(l);e.Applied(e.All(t,n,o),(([t,e,n])=>(Object.entries(e).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),Object.entries(n).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),t)))(i)},template:n=>{t=e.Of(n)},var:t=>{const n=`$var${i}`;return i+=1,l[n]=e.Destructor(t,(t=>{o.push(t)})).event,n},destroy(){o.forEach((t=>t()))}}},t.Tick=function(t){return e=>{let n=!1,r=null;t((t=>{r=t,n||(n=!0,queueMicrotask((()=>{n=!1,null!==r&&(e(r),r=null)})))}))}},t.ToJson=function(t,e){return n=>{t((t=>{try{n(JSON.stringify(t))}catch{e?.(new Error("Failed to convert to JSON"))}}))}}}({},silentium);
1
+ !function(t,e){"use strict";function n(t,e,n){return r=>{let i;return t((t=>{void 0!==i&&"function"==typeof i&&i();let o=null;t?o=e():n&&(o=n()),o&&(i=o(r))})),()=>{i?.()}}}function r(t){return function(n){const r=e.Primitive(t).primitive();e.isFilled(r)&&n(r)}}function i(t){return n=>{const r=Object.keys(t);e.All(...Object.values(t))((t=>{const e={};t.forEach(((t,n)=>{e[r[n]]=t})),n(e)}))}}function o(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{i(new RegExp(t,n).test(e))}))}}const l=()=>e.Of(!1);t.And=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t&&e)}))}},t.Bool=function(t){return n=>{e.Applied(t,Boolean)(n)}},t.Branch=function(t,n,r){return i=>{const o=e.Primitive(n);let l;void 0!==r&&(l=e.Primitive(r)),t((t=>{let e=null;t?e=o.primitive():l&&(e=l.primitive()),null!==e&&i(e)}))}},t.BranchLazy=n,t.Concatenated=function(t,n=e.Of("")){return r=>{e.All(n,...t)((([t,...e])=>{r(e.join(t))}))}},t.Constant=function(t,e){return n=>{e((()=>{n(t)}))}},t.Deadline=function(t,n,r){return i=>{let o=null;const l=e.Shared(n,!0);r((n=>{o&&clearTimeout(o);let r=!1;o=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e.Filtered(l.event,(()=>!r))(i),l.event((()=>{r=!0}))}))}},t.Deferred=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Detached=r,t.Dirty=function(t,n=[],r=[],i){const o=e.Late();return void 0===i&&(i=t=>JSON.parse(JSON.stringify(t))),{event:l=>{const u=e.Applied(o.event,i);e.All(u,t)((([t,e])=>{t&&l(Object.fromEntries(Object.entries(t).filter((([t,i])=>!!n.includes(t)||!r.includes(t)&&i!==e[t]))))}))},use:t=>{o.use(t)}}},t.First=function(t){return n=>{e.Applied(t,(t=>t[0]))(n)}},t.FromJson=function(t,e){return n=>{t((t=>{try{n(JSON.parse(t))}catch(t){e?.(new Error(`Failed to parse JSON: ${t}`))}}))}},t.HashTable=function(t){return e=>{const n={};t((([t,r])=>{n[t]=r,e(n)}))}},t.Loading=function(t,e){return n=>{t((()=>n(!0))),e((()=>n(!1)))}},t.Lock=function(t,n){return r=>{let i=!1;n((t=>{i=t}));e.Filtered(t,(()=>!i))(r)}},t.Memo=function(t){return e=>{let n=null;t((t=>{t!==n&&(e(t),n=t)}))}},t.Not=function(t){return e=>{t((t=>{e(!t)}))}},t.OnlyChanged=function(t){return e=>{let n=!1;t((t=>{!1===n?n=!0:e(t)}))}},t.Or=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t||e)}))}},t.Part=function(t,n){const r=e.Primitive(t.event),i=e.Primitive(n);return{event:r=>{e.All(t.event,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))},use:n=>{const o=i.primitive();e.isFilled(o)&&t.use({...r.primitive(),[o]:n})}}},t.Path=function(t,n){return r=>{e.All(t,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))}},t.Polling=function(t,e){return n=>{e((()=>{t(n)}))}},t.RecordOf=i,t.RegexpMatch=function(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{const r=new RegExp(t,n).exec(e);i(r??[])}))}},t.RegexpMatched=o,t.RegexpReplaced=function(t,n,r,i=e.Of("")){return o=>{e.All(n,t,r,i)((([t,e,n,r])=>{o(String(e).replace(new RegExp(t,r),n))}))}},t.Router=function(t,r,i){return u=>{const c=[],s=()=>{c.forEach((t=>t())),c.length=0};return e.All(r,t)((([t,r])=>{s();const f=e.All(i(),e.All(...t.map((t=>e.Destructor(n(o(e.Of(t.pattern),e.Of(r),t.patternFlags?e.Of(t.patternFlags):void 0),t.template,l),(t=>c.push(t))).event))));e.Applied(f,(t=>{const e=t[1].find((t=>!1!==t));return e||t[0]}))(u)})),s}},t.Set=function(t,n,r){return i=>{e.All(t,n,r)((([t,e,n])=>{t[e]=n,i(t)}))}},t.Shot=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Task=function(t,n=0){return r=>{let i=null;e.ExecutorApplied(t,(t=>e=>{i&&clearTimeout(i),i=setTimeout((()=>{t(e)}),n)}))(r)}},t.Template=function(t=e.Of(""),n=e.Of({})){let r=0;const o={$TPL:e.Of("$TPL")},l=[];return{value:r=>{const l=i(o);e.Applied(e.All(t,n,l),(([t,e,n])=>(Object.entries(e).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),Object.entries(n).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),t)))(r)},template:n=>{t=e.Of(n)},var:t=>{const n=`$var${r}`;return r+=1,o[n]=e.Destructor(t,(t=>{l.push(t)})).event,n},destroy(){l.forEach((t=>t()))}}},t.Tick=function(t){return e=>{let n=!1,r=null;t((t=>{r=t,n||(n=!0,queueMicrotask((()=>{n=!1,null!==r&&(e(r),r=null)})))}))}},t.ToJson=function(t,e){return n=>{t((t=>{try{n(JSON.stringify(t))}catch{e?.(new Error("Failed to convert to JSON"))}}))}},t.Transaction=function(t,n,...i){const o=e.LateShared(),l=[];return t((t=>{l.forEach((t=>t.destroy())),l.length=0;const u=e.Destructor(n(e.Of(t),...i.map((t=>r(t)))));l.push(u),u.event(o.use)})),o.event}}({},silentium);
@@ -1,2 +1,2 @@
1
- import{Primitive as t,Shared as n,Filtered as e,isFilled as r,Late as u,Applied as o,All as i,ExecutorApplied as c,Of as l,Destructor as s}from"silentium";function f(n,e,r){return u=>{const o=t(e);let i;void 0!==r&&(i=t(r)),n((t=>{let n=null;t?n=o.primitive():i&&(n=i.primitive()),null!==n&&u(n)}))}}function a(t,n,e){return r=>{let u;return t((t=>{void 0!==u&&"function"==typeof u&&u();let o=null;t?o=n():e&&(o=e()),o&&(u=o(r))})),()=>{u?.()}}}function p(t,n){return e=>{n((()=>{e(t)}))}}function v(t,r,u){return o=>{let i=null;const c=n(r,!0);u((n=>{i&&clearTimeout(i);let r=!1;i=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e(c.event,(()=>!r))(o),c.event((()=>{r=!0}))}))}}function m(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function d(n){return function(e){const u=t(n).primitive();r(u)&&e(u)}}function E(t,n=[],e=[],r){const c=u();return void 0===r&&(r=t=>JSON.parse(JSON.stringify(t))),{event:u=>{const l=o(c.event,r);i(l,t)((([t,r])=>{t&&u(Object.fromEntries(Object.entries(t).filter((([t,u])=>!!n.includes(t)||!e.includes(t)&&u!==r[t]))))}))},use:t=>{c.use(t)}}}function h(t,n){return e=>{t((()=>e(!0))),n((()=>e(!1)))}}function O(t,n){return r=>{let u=!1;n((t=>{u=t}));e(t,(()=>!u))(r)}}function g(t){return n=>{let e=null;t((t=>{t!==e&&(n(t),e=t)}))}}function S(t){return n=>{let e=!1;t((t=>{!1===e?e=!0:n(t)}))}}function j(n,e){const u=t(n.event),o=t(e);return{event:t=>{i(n.event,e)((([n,e])=>{const r=e.split(".");let u=n;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==n&&t(u)}))},use:t=>{const e=o.primitive();r(e)&&n.use({...u.primitive(),[e]:t})}}}function y(t,n){return e=>{i(t,n)((([t,n])=>{const r=n.split(".");let u=t;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==t&&e(u)}))}}function T(t,n){return e=>{n((()=>{t(e)}))}}function b(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function w(t,n=0){return e=>{let r=null;c(t,(t=>e=>{r&&clearTimeout(r),r=setTimeout((()=>{t(e)}),n)}))(e)}}function J(t){return n=>{let e=!1,r=null;t((t=>{r=t,e||(e=!0,queueMicrotask((()=>{e=!1,null!==r&&(n(r),r=null)})))}))}}function N(t){return n=>{const e={};t((([t,r])=>{e[t]=r,n(e)}))}}function x(t){return n=>{const e=Object.keys(t);i(...Object.values(t))((t=>{const r={};t.forEach(((t,n)=>{r[e[n]]=t})),n(r)}))}}function $(t,n=l("")){return e=>{i(n,...t)((([t,...n])=>{e(n.join(t))}))}}function F(t=l(""),n=l({})){let e=0;const r={$TPL:l("$TPL")},u=[];return{value:e=>{const u=x(r);o(i(t,n,u),(([t,n,e])=>(Object.entries(n).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),Object.entries(e).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),t)))(e)},template:n=>{t=l(n)},var:t=>{const n=`$var${e}`;return e+=1,r[n]=s(t,(t=>{u.push(t)})).event,n},destroy(){u.forEach((t=>t()))}}}function R(t,n,e=l("")){return r=>{i(t,n,e)((([t,n,e])=>{r(new RegExp(t,e).test(n))}))}}function k(t,n,e,r=l("")){return u=>{i(n,t,e,r)((([t,n,e,r])=>{u(String(n).replace(new RegExp(t,r),e))}))}}function A(t,n,e=l("")){return r=>{i(t,n,e)((([t,n,e])=>{const u=new RegExp(t,e).exec(n);r(u??[])}))}}function L(t,n,e){return r=>{i(t,n,e)((([t,n,e])=>{t[n]=e,r(t)}))}}const P=()=>l(!1);function q(t,n,e){return r=>{const u=[],c=()=>{u.forEach((t=>t())),u.length=0};return i(n,t)((([t,n])=>{c();const f=i(e(),i(...t.map((t=>s(a(R(l(t.pattern),l(n),t.patternFlags?l(t.patternFlags):void 0),t.template,P),(t=>u.push(t))).event))));o(f,(t=>{const n=t[1].find((t=>!1!==t));return n||t[0]}))(r)})),c}}function B(t,n){return e=>{i(t,n)((([t,n])=>{e(t&&n)}))}}function D(t,n){return e=>{i(t,n)((([t,n])=>{e(t||n)}))}}function M(t){return n=>{t((t=>{n(!t)}))}}function z(t){return n=>{o(t,Boolean)(n)}}function C(t,n){return e=>{t((t=>{try{e(JSON.parse(t))}catch(t){n?.(new Error(`Failed to parse JSON: ${t}`))}}))}}function G(t,n){return e=>{t((t=>{try{e(JSON.stringify(t))}catch{n?.(new Error("Failed to convert to JSON"))}}))}}function H(t){return n=>{o(t,(t=>t[0]))(n)}}export{B as And,z as Bool,f as Branch,a as BranchLazy,$ as Concatenated,p as Constant,v as Deadline,m as Deferred,d as Detached,E as Dirty,H as First,C as FromJson,N as HashTable,h as Loading,O as Lock,g as Memo,M as Not,S as OnlyChanged,D as Or,j as Part,y as Path,T as Polling,x as RecordOf,A as RegexpMatch,R as RegexpMatched,k as RegexpReplaced,q as Router,L as Set,b as Shot,w as Task,F as Template,J as Tick,G as ToJson};
1
+ import{Primitive as t,Shared as n,Filtered as e,isFilled as r,Late as u,Applied as o,All as i,ExecutorApplied as c,LateShared as l,Destructor as s,Of as f}from"silentium";function a(n,e,r){return u=>{const o=t(e);let i;void 0!==r&&(i=t(r)),n((t=>{let n=null;t?n=o.primitive():i&&(n=i.primitive()),null!==n&&u(n)}))}}function p(t,n,e){return r=>{let u;return t((t=>{void 0!==u&&"function"==typeof u&&u();let o=null;t?o=n():e&&(o=e()),o&&(u=o(r))})),()=>{u?.()}}}function v(t,n){return e=>{n((()=>{e(t)}))}}function m(t,r,u){return o=>{let i=null;const c=n(r,!0);u((n=>{i&&clearTimeout(i);let r=!1;i=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e(c.event,(()=>!r))(o),c.event((()=>{r=!0}))}))}}function h(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function d(n){return function(e){const u=t(n).primitive();r(u)&&e(u)}}function E(t,n=[],e=[],r){const c=u();return void 0===r&&(r=t=>JSON.parse(JSON.stringify(t))),{event:u=>{const l=o(c.event,r);i(l,t)((([t,r])=>{t&&u(Object.fromEntries(Object.entries(t).filter((([t,u])=>!!n.includes(t)||!e.includes(t)&&u!==r[t]))))}))},use:t=>{c.use(t)}}}function g(t,n){return e=>{t((()=>e(!0))),n((()=>e(!1)))}}function O(t,n){return r=>{let u=!1;n((t=>{u=t}));e(t,(()=>!u))(r)}}function S(t){return n=>{let e=null;t((t=>{t!==e&&(n(t),e=t)}))}}function y(t){return n=>{let e=!1;t((t=>{!1===e?e=!0:n(t)}))}}function j(n,e){const u=t(n.event),o=t(e);return{event:t=>{i(n.event,e)((([n,e])=>{const r=e.split(".");let u=n;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==n&&t(u)}))},use:t=>{const e=o.primitive();r(e)&&n.use({...u.primitive(),[e]:t})}}}function T(t,n){return e=>{i(t,n)((([t,n])=>{const r=n.split(".");let u=t;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==t&&e(u)}))}}function b(t,n){return e=>{n((()=>{t(e)}))}}function w(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function J(t,n=0){return e=>{let r=null;c(t,(t=>e=>{r&&clearTimeout(r),r=setTimeout((()=>{t(e)}),n)}))(e)}}function N(t){return n=>{let e=!1,r=null;t((t=>{r=t,e||(e=!0,queueMicrotask((()=>{e=!1,null!==r&&(n(r),r=null)})))}))}}function x(t,n,...e){const r=l(),u=[];return t((t=>{u.forEach((t=>t.destroy())),u.length=0;const o=s(n(f(t),...e.map((t=>d(t)))));u.push(o),o.event(r.use)})),r.event}function $(t){return n=>{const e={};t((([t,r])=>{e[t]=r,n(e)}))}}function F(t){return n=>{const e=Object.keys(t);i(...Object.values(t))((t=>{const r={};t.forEach(((t,n)=>{r[e[n]]=t})),n(r)}))}}function R(t,n=f("")){return e=>{i(n,...t)((([t,...n])=>{e(n.join(t))}))}}function k(t=f(""),n=f({})){let e=0;const r={$TPL:f("$TPL")},u=[];return{value:e=>{const u=F(r);o(i(t,n,u),(([t,n,e])=>(Object.entries(n).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),Object.entries(e).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),t)))(e)},template:n=>{t=f(n)},var:t=>{const n=`$var${e}`;return e+=1,r[n]=s(t,(t=>{u.push(t)})).event,n},destroy(){u.forEach((t=>t()))}}}function A(t,n,e=f("")){return r=>{i(t,n,e)((([t,n,e])=>{r(new RegExp(t,e).test(n))}))}}function L(t,n,e,r=f("")){return u=>{i(n,t,e,r)((([t,n,e,r])=>{u(String(n).replace(new RegExp(t,r),e))}))}}function P(t,n,e=f("")){return r=>{i(t,n,e)((([t,n,e])=>{const u=new RegExp(t,e).exec(n);r(u??[])}))}}function q(t,n,e){return r=>{i(t,n,e)((([t,n,e])=>{t[n]=e,r(t)}))}}const B=()=>f(!1);function D(t,n,e){return r=>{const u=[],c=()=>{u.forEach((t=>t())),u.length=0};return i(n,t)((([t,n])=>{c();const l=i(e(),i(...t.map((t=>s(p(A(f(t.pattern),f(n),t.patternFlags?f(t.patternFlags):void 0),t.template,B),(t=>u.push(t))).event))));o(l,(t=>{const n=t[1].find((t=>!1!==t));return n||t[0]}))(r)})),c}}function M(t,n){return e=>{i(t,n)((([t,n])=>{e(t&&n)}))}}function z(t,n){return e=>{i(t,n)((([t,n])=>{e(t||n)}))}}function C(t){return n=>{t((t=>{n(!t)}))}}function G(t){return n=>{o(t,Boolean)(n)}}function H(t,n){return e=>{t((t=>{try{e(JSON.parse(t))}catch(t){n?.(new Error(`Failed to parse JSON: ${t}`))}}))}}function I(t,n){return e=>{t((t=>{try{e(JSON.stringify(t))}catch{n?.(new Error("Failed to convert to JSON"))}}))}}function K(t){return n=>{o(t,(t=>t[0]))(n)}}export{M as And,G as Bool,a as Branch,p as BranchLazy,R as Concatenated,v as Constant,m as Deadline,h as Deferred,d as Detached,E as Dirty,K as First,H as FromJson,$ as HashTable,g as Loading,O as Lock,S as Memo,C as Not,y as OnlyChanged,z as Or,j as Part,T as Path,b as Polling,F as RecordOf,P as RegexpMatch,A as RegexpMatched,L as RegexpReplaced,D as Router,q as Set,w as Shot,J as Task,k as Template,N as Tick,I as ToJson,x as Transaction};
2
2
  //# sourceMappingURL=silentium-components.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.min.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Branch","conditionSrc","leftSrc","rightSrc","user","leftSync","Primitive","rightSync","v","result","primitive","BranchLazy","Destructor","instance","Constant","permanentValue","triggerSrc","Deadline","error","baseSrc","timeoutSrc","timerHead","s","Shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","Filtered","event","f","Deferred","baseSync","value","isFilled","Detached","Dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","Late","JSON","parse","stringify","comparingDetached","Applied","All","comparing","base","Object","fromEntries","entries","filter","key","includes","use","Loading","loadingStartSrc","loadingFinishSrc","Lock","lockSrc","locked","newLock","i","Memo","lastValue","OnlyChanged","firstValue","Part","keySrc","keySync","keyChunks","split","forEach","keyChunk","Path","Polling","Shot","targetSrc","targetSync","Task","delay","prevTimer","ExecutorApplied","fn","Tick","microtaskScheduled","queueMicrotask","HashTable","record","RecordOf","recordSrc","keys","values","entry","index","Concatenated","sources","joinPartSrc","Of","joinPart","strings","join","Template","theSrc","placesSrc","placesCounter","vars","$TPL","destructors","varsSrc","rules","ph","val","replaceAll","String","template","var","src","varName","d","push","destroy","RegexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","RegexpReplaced","replaceValueSrc","replaceValue","replace","RegexpMatch","exec","Set","emptySrc","Router","urlSrc","routesSrc","defaultSrc","destroyAllData","length","routes","url","map","r","patternFlags","firstReal","find","And","oneSrc","twoSrc","one","two","Or","Not","Bool","Boolean","FromJson","jsonSrc","errorOwner","json","ToJson","dataSrc","data","First","a"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.min.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n) {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return $res.event;\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Branch","conditionSrc","leftSrc","rightSrc","user","leftSync","Primitive","rightSync","v","result","primitive","BranchLazy","Destructor","instance","Constant","permanentValue","triggerSrc","Deadline","error","baseSrc","timeoutSrc","timerHead","s","Shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","Filtered","event","f","Deferred","baseSync","value","isFilled","Detached","Dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","Late","JSON","parse","stringify","comparingDetached","Applied","All","comparing","base","Object","fromEntries","entries","filter","key","includes","use","Loading","loadingStartSrc","loadingFinishSrc","Lock","lockSrc","locked","newLock","i","Memo","lastValue","OnlyChanged","firstValue","Part","keySrc","keySync","keyChunks","split","forEach","keyChunk","Path","Polling","Shot","targetSrc","targetSync","Task","delay","prevTimer","ExecutorApplied","fn","Tick","microtaskScheduled","queueMicrotask","Transaction","$base","eventBuilder","args","$res","LateShared","destructors","d","destroy","length","$event","Of","map","a","push","HashTable","record","RecordOf","recordSrc","keys","values","entry","index","Concatenated","sources","joinPartSrc","joinPart","strings","join","Template","theSrc","placesSrc","placesCounter","vars","$TPL","varsSrc","rules","ph","val","replaceAll","String","template","var","src","varName","RegexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","RegexpReplaced","replaceValueSrc","replaceValue","replace","RegexpMatch","exec","Set","emptySrc","Router","urlSrc","routesSrc","defaultSrc","destroyAllData","routes","url","r","patternFlags","firstReal","find","And","oneSrc","twoSrc","one","two","Or","Not","Bool","Boolean","FromJson","jsonSrc","errorOwner","json","ToJson","dataSrc","data","First"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Primitive, Shared, Filtered, isFilled, Late, Applied, All, ExecutorApplied, Of, Destructor } from 'silentium';
1
+ import { Primitive, Shared, Filtered, isFilled, Late, Applied, All, ExecutorApplied, LateShared, Destructor, Of } from 'silentium';
2
2
 
3
3
  function Branch(conditionSrc, leftSrc, rightSrc) {
4
4
  return (user) => {
@@ -285,6 +285,21 @@ function Tick(baseSrc) {
285
285
  };
286
286
  }
287
287
 
288
+ function Transaction($base, eventBuilder, ...args) {
289
+ const $res = LateShared();
290
+ const destructors = [];
291
+ $base((v) => {
292
+ destructors.forEach((d) => d.destroy());
293
+ destructors.length = 0;
294
+ const $event = Destructor(
295
+ eventBuilder(Of(v), ...args.map((a) => Detached(a)))
296
+ );
297
+ destructors.push($event);
298
+ $event.event($res.use);
299
+ });
300
+ return $res.event;
301
+ }
302
+
288
303
  function HashTable(baseSrc) {
289
304
  return (user) => {
290
305
  const record = {};
@@ -520,5 +535,5 @@ function First(baseSrc) {
520
535
  };
521
536
  }
522
537
 
523
- export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson };
538
+ export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, Not, OnlyChanged, Or, Part, Path, Polling, RecordOf, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Shot, Task, Template, Tick, ToJson, Transaction };
524
539
  //# sourceMappingURL=silentium-components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\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(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } 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 function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\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 user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\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 user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(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 {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n) {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return $res.event;\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<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 function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\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 user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silentium-components",
3
- "version": "0.0.67",
3
+ "version": "0.0.68",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/silentium-components.js",
@@ -0,0 +1,45 @@
1
+ import { All, Applied, LateShared, Primitive } from "silentium";
2
+ import { Transaction } from "../behaviors/Transaction";
3
+ import { describe, expect, test } from "vitest";
4
+
5
+ describe("Transaction.test", () => {
6
+ test("value inside transaction", () => {
7
+ const $base = LateShared(1);
8
+
9
+ const t = Transaction($base.event, ($b) => {
10
+ return Applied($b, (x) => x * 2);
11
+ });
12
+
13
+ expect(Primitive(t).primitiveWithException()).toBe(2);
14
+ });
15
+
16
+ test("value inside transaction", () => {
17
+ const $base = LateShared(1);
18
+ const $mult = LateShared(2);
19
+
20
+ const t = Transaction(
21
+ $base.event,
22
+ ($b, $m) => {
23
+ return Applied(All($b, $m), ([x, m]) => x * m);
24
+ },
25
+ $mult.event,
26
+ );
27
+
28
+ expect(Primitive(t).primitiveWithException()).toBe(2);
29
+
30
+ $base.use(2);
31
+
32
+ expect(Primitive(t).primitiveWithException()).toBe(4);
33
+
34
+ // $mult changed after $base, hence result is 6, 3 * 2
35
+ $base.use(3);
36
+ $mult.use(3);
37
+
38
+ expect(Primitive(t).primitiveWithException()).toBe(6);
39
+
40
+ // $mult is of value 3, hence result will be 12
41
+ $base.use(4);
42
+
43
+ expect(Primitive(t).primitiveWithException()).toBe(12);
44
+ });
45
+ });
@@ -0,0 +1,37 @@
1
+ import {
2
+ ConstructorType,
3
+ DestroyableType,
4
+ Destructor,
5
+ EventType,
6
+ LateShared,
7
+ Of,
8
+ } from "silentium";
9
+ import { Detached } from "../behaviors/Detached";
10
+
11
+ /**
12
+ * Do something on event value.
13
+ * Each event value will create new eventBuilder instance
14
+ */
15
+ export function Transaction<T, R = unknown>(
16
+ $base: EventType<T>,
17
+ eventBuilder: ConstructorType<
18
+ [EventType<T>, ...EventType<any>[]],
19
+ EventType<R>
20
+ >,
21
+ ...args: EventType[]
22
+ ) {
23
+ const $res = LateShared<R>();
24
+ const destructors: DestroyableType[] = [];
25
+
26
+ $base((v) => {
27
+ destructors.forEach((d) => d.destroy());
28
+ destructors.length = 0;
29
+ const $event = Destructor(
30
+ eventBuilder(Of(v), ...args.map((a) => Detached(a))),
31
+ );
32
+ destructors.push($event);
33
+ $event.event($res.use);
34
+ });
35
+
36
+ return $res.event;
37
+ }
@@ -15,3 +15,4 @@ export * from "./Polling";
15
15
  export * from "./Shot";
16
16
  export * from "./Task";
17
17
  export * from "./Tick";
18
+ export * from "./Transaction";