silentium-components 0.0.70 → 0.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/silentium-components.cjs +491 -436
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +42 -36
  5. package/dist/silentium-components.js +493 -438
  6. package/dist/silentium-components.js.map +1 -1
  7. package/dist/silentium-components.min.js +1 -1
  8. package/dist/silentium-components.min.mjs +1 -1
  9. package/dist/silentium-components.min.mjs.map +1 -1
  10. package/dist/silentium-components.mjs +493 -438
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/package.json +2 -2
  13. package/src/behaviors/Branch._main.test.ts +3 -3
  14. package/src/behaviors/Branch.branchesDontAffectResult.test.ts +4 -4
  15. package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +6 -6
  16. package/src/behaviors/Branch.ts +23 -24
  17. package/src/behaviors/BranchLazy._main.test.ts +5 -5
  18. package/src/behaviors/BranchLazy.ts +31 -23
  19. package/src/behaviors/Const.test.ts +10 -8
  20. package/src/behaviors/Const.ts +9 -10
  21. package/src/behaviors/Deadline._main.test.ts +4 -4
  22. package/src/behaviors/Deadline._value.test.ts +5 -5
  23. package/src/behaviors/Deadline.ts +37 -28
  24. package/src/behaviors/Deferred.test.ts +10 -10
  25. package/src/behaviors/Deferred.ts +14 -12
  26. package/src/behaviors/Detached.test.ts +4 -4
  27. package/src/behaviors/Detached.ts +6 -6
  28. package/src/behaviors/Dirty.test.ts +3 -3
  29. package/src/behaviors/Dirty.ts +46 -26
  30. package/src/behaviors/Loading.test.ts +7 -10
  31. package/src/behaviors/Loading.ts +9 -9
  32. package/src/behaviors/Lock.test.ts +3 -3
  33. package/src/behaviors/Lock.ts +12 -10
  34. package/src/behaviors/Memo.test.ts +8 -6
  35. package/src/behaviors/Memo.ts +13 -12
  36. package/src/behaviors/OnlyChanged.test.ts +4 -4
  37. package/src/behaviors/OnlyChanged.ts +14 -13
  38. package/src/behaviors/Part.test.ts +6 -6
  39. package/src/behaviors/Part.ts +53 -30
  40. package/src/behaviors/Path._main.test.ts +2 -2
  41. package/src/behaviors/Path.index.test.ts +2 -2
  42. package/src/behaviors/Path.nested.test.ts +2 -2
  43. package/src/behaviors/Path.ts +20 -21
  44. package/src/behaviors/Polling.test.ts +10 -10
  45. package/src/behaviors/Polling.ts +10 -8
  46. package/src/behaviors/Shot._main.test.ts +10 -10
  47. package/src/behaviors/Shot._onlyChanged.test.ts +13 -11
  48. package/src/behaviors/Shot.ts +15 -12
  49. package/src/behaviors/Task.ts +4 -4
  50. package/src/behaviors/Tick.test.ts +7 -7
  51. package/src/behaviors/Tick.ts +13 -11
  52. package/src/behaviors/Transaction.test.ts +3 -3
  53. package/src/behaviors/Transaction.ts +13 -12
  54. package/src/boolean/And.test.ts +11 -11
  55. package/src/boolean/And.ts +10 -11
  56. package/src/boolean/Bool.test.ts +2 -2
  57. package/src/boolean/Bool.ts +5 -5
  58. package/src/boolean/Not.test.ts +3 -3
  59. package/src/boolean/Not.ts +9 -7
  60. package/src/boolean/Or.test.ts +3 -3
  61. package/src/boolean/Or.ts +10 -11
  62. package/src/formats/FromJson.ts +14 -12
  63. package/src/formats/ToJson.ts +14 -12
  64. package/src/lists/First.test.ts +2 -2
  65. package/src/lists/First.ts +5 -5
  66. package/src/navigation/Router._main.test.ts +20 -13
  67. package/src/navigation/Router._nested.test.ts +41 -33
  68. package/src/navigation/Router.ts +48 -50
  69. package/src/strings/Concatenated.test.ts +3 -3
  70. package/src/strings/Concatenated.ts +8 -9
  71. package/src/strings/Template._main.test.ts +3 -3
  72. package/src/strings/Template._place.test.ts +2 -2
  73. package/src/strings/Template.ts +54 -40
  74. package/src/structures/HashTable.test.ts +6 -6
  75. package/src/structures/HashTable.ts +10 -8
  76. package/src/structures/Record._main.test.ts +6 -6
  77. package/src/structures/Record.concatenated.test.ts +12 -10
  78. package/src/structures/Record.nested.test.ts +5 -5
  79. package/src/structures/RecordOf.ts +14 -12
  80. package/src/system/RegexpMatch._group.test.ts +4 -4
  81. package/src/system/RegexpMatch._main.test.ts +4 -4
  82. package/src/system/RegexpMatch.ts +9 -11
  83. package/src/system/RegexpMatched.test.ts +5 -5
  84. package/src/system/RegexpMatched.ts +8 -10
  85. package/src/system/RegexpReplaced.test.ts +5 -5
  86. package/src/system/RegexpReplaced.ts +10 -11
  87. package/src/system/Set.test.ts +5 -5
  88. package/src/system/Set.ts +9 -11
@@ -1,27 +1,26 @@
1
- import { All, EventType } from "silentium";
1
+ import { All, Event, EventType, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * Return source Of record path
5
5
  * https://silentium-lab.github.io/silentium-components/#/behaviors/path
6
6
  */
7
- export function Path<R, T extends object | Array<any>, K extends string = any>(
8
- baseSrc: EventType<T>,
9
- keySrc: EventType<K>,
10
- ): EventType<R> {
11
- return (user) => {
12
- All(
13
- baseSrc,
14
- keySrc,
15
- )(([base, key]) => {
16
- const keyChunks = key.split(".");
17
- let value: unknown = base;
18
- keyChunks.forEach((keyChunk) => {
19
- value = (value as Record<string, unknown>)[keyChunk];
20
- });
21
-
22
- if (value !== undefined && value !== base) {
23
- user(value as R);
24
- }
25
- });
26
- };
7
+ export function Path<
8
+ R,
9
+ T extends object | Array<any> = any,
10
+ K extends string = any,
11
+ >($base: EventType<T>, $keyed: EventType<K>): EventType<R> {
12
+ return Event((transport) => {
13
+ All($base, $keyed).event(
14
+ Transport(([base, keyed]) => {
15
+ const keys = keyed.split(".");
16
+ let value: unknown = base;
17
+ keys.forEach((key) => {
18
+ value = (value as Record<string, unknown>)[key];
19
+ });
20
+ if (value !== undefined && value !== base) {
21
+ transport.use(value as R);
22
+ }
23
+ }),
24
+ );
25
+ });
27
26
  }
@@ -1,25 +1,25 @@
1
- import { EventType, Late, Primitive } from "silentium";
1
+ import { Event, EventType, Late, Primitive } from "silentium";
2
2
  import { expect, test } from "vitest";
3
3
  import { Polling } from "../behaviors/Polling";
4
4
 
5
5
  test("Polling.test", () => {
6
- const triggerSrc = Late(1);
6
+ const $trigger = Late(1);
7
7
  let calls = 0;
8
- const callsSrc: EventType<number> = (o) => {
8
+ const $calls: EventType<number> = Event((o) => {
9
9
  calls += 1;
10
- o(calls);
11
- };
12
- const s = Primitive(Polling(callsSrc, triggerSrc.event));
10
+ o.use(calls);
11
+ });
12
+ const s = Primitive(Polling($calls, $trigger));
13
13
 
14
14
  expect(s.primitive()).toBe(1);
15
15
 
16
- triggerSrc.use(1);
16
+ $trigger.use(1);
17
17
 
18
18
  expect(s.primitive()).toBe(2);
19
19
 
20
- triggerSrc.use(1);
21
- triggerSrc.use(1);
22
- triggerSrc.use(1);
20
+ $trigger.use(1);
21
+ $trigger.use(1);
22
+ $trigger.use(1);
23
23
 
24
24
  expect(s.primitive()).toBe(5);
25
25
  });
@@ -1,12 +1,14 @@
1
- import { EventType } from "silentium";
1
+ import { Event, EventType, Transport } from "silentium";
2
2
 
3
3
  export function Polling<T>(
4
- baseSrc: EventType<T>,
5
- triggerSrc: EventType<T>,
4
+ $base: EventType<T>,
5
+ $trigger: EventType<T>,
6
6
  ): EventType<T> {
7
- return (user) => {
8
- triggerSrc(() => {
9
- baseSrc(user);
10
- });
11
- };
7
+ return Event((transport) => {
8
+ $trigger.event(
9
+ Transport(() => {
10
+ $base.event(transport);
11
+ }),
12
+ );
13
+ });
12
14
  }
@@ -1,29 +1,29 @@
1
- import { Late, Shared } from "silentium";
1
+ import { Late, Shared, Transport } from "silentium";
2
2
  import { Shot } from "../behaviors/Shot";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
5
5
  test("Shot._main.test", () => {
6
- const baseSrc = Late();
7
- const shotSrc = Late();
6
+ const $base = Late();
7
+ const $trigger = Late();
8
8
 
9
- const shotResult = Shared(Shot(baseSrc.event, shotSrc.event));
9
+ const $shotted = Shared(Shot($base, $trigger));
10
10
  const g = vi.fn();
11
- shotResult.event(g);
11
+ $shotted.event(Transport(g));
12
12
 
13
- baseSrc.use(1);
14
- shotSrc.use(1);
13
+ $base.use(1);
14
+ $trigger.use(1);
15
15
 
16
16
  expect(g).toHaveBeenLastCalledWith(1);
17
17
 
18
- baseSrc.use(2);
18
+ $base.use(2);
19
19
 
20
20
  expect(g).toHaveBeenLastCalledWith(1);
21
21
 
22
- shotSrc.use(1);
22
+ $trigger.use(1);
23
23
 
24
24
  expect(g).toHaveBeenLastCalledWith(2);
25
25
 
26
26
  const g2 = vi.fn();
27
- shotResult.event(g2);
27
+ $shotted.event(Transport(g2));
28
28
  expect(g2).toHaveBeenLastCalledWith(2);
29
29
  });
@@ -1,34 +1,36 @@
1
- import { Late, Shared } from "silentium";
1
+ import { Late, Shared, Transport } from "silentium";
2
2
  import { OnlyChanged } from "../behaviors/OnlyChanged";
3
3
  import { Shot } from "../behaviors/Shot";
4
4
  import { expect, test } from "vitest";
5
5
 
6
6
  test("Shot._onlyChanged.test", () => {
7
- const baseSrc = Late<number>(123);
8
- const sharedBase = Shared(baseSrc.event, true);
9
- const resultSrc = Shot(sharedBase.event, OnlyChanged(sharedBase.event));
7
+ const $base = Late<number>(123);
8
+ const $shared = Shared($base, true);
9
+ const $result = Shot($shared, OnlyChanged($shared));
10
10
 
11
11
  const vals: number[] = [];
12
12
 
13
- resultSrc((v) => {
14
- vals.push(v);
15
- });
13
+ $result.event(
14
+ Transport((v) => {
15
+ vals.push(v);
16
+ }),
17
+ );
16
18
 
17
19
  expect(vals).toStrictEqual([]);
18
20
 
19
- baseSrc.use(222);
21
+ $base.use(222);
20
22
 
21
23
  expect(vals).toStrictEqual([]);
22
24
 
23
- baseSrc.use(222);
25
+ $base.use(222);
24
26
 
25
27
  expect(vals).toStrictEqual([222]);
26
28
 
27
- baseSrc.use(333);
29
+ $base.use(333);
28
30
 
29
31
  expect(vals).toStrictEqual([222, 333]);
30
32
 
31
- baseSrc.use(123);
33
+ $base.use(123);
32
34
 
33
35
  expect(vals).toStrictEqual([222, 333, 123]);
34
36
  });
@@ -1,21 +1,24 @@
1
- import { EventType, isFilled, Primitive } from "silentium";
1
+ import { Event, EventType, isFilled, Primitive, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc
5
5
  * https://silentium-lab.github.io/silentium-components/#/behaviors/shot
6
6
  */
7
7
  export function Shot<T>(
8
- targetSrc: EventType<T>,
9
- triggerSrc: EventType,
8
+ $target: EventType<T>,
9
+ $trigger: EventType,
10
10
  ): EventType<T> {
11
- return (user) => {
12
- const targetSync = Primitive(targetSrc);
11
+ return Event((transport) => {
12
+ const targetSync = Primitive($target);
13
+ targetSync.primitive();
13
14
 
14
- triggerSrc(() => {
15
- const value = targetSync.primitive();
16
- if (isFilled(value)) {
17
- user(value);
18
- }
19
- });
20
- };
15
+ $trigger.event(
16
+ Transport(() => {
17
+ const value = targetSync.primitive();
18
+ if (isFilled(value)) {
19
+ transport.use(value);
20
+ }
21
+ }),
22
+ );
23
+ });
21
24
  }
@@ -1,10 +1,10 @@
1
- import { EventType, ExecutorApplied } from "silentium";
1
+ import { Event, EventType, ExecutorApplied } from "silentium";
2
2
 
3
3
  export function Task<T>(
4
4
  baseSrc: EventType<T>,
5
5
  delay: number = 0,
6
6
  ): EventType<T> {
7
- return (user) => {
7
+ return Event((transport) => {
8
8
  let prevTimer: unknown | null = null;
9
9
  ExecutorApplied(baseSrc, (fn) => {
10
10
  return (v) => {
@@ -15,6 +15,6 @@ export function Task<T>(
15
15
  fn(v);
16
16
  }, delay);
17
17
  };
18
- })(user);
19
- };
18
+ }).event(transport);
19
+ });
20
20
  }
@@ -1,4 +1,4 @@
1
- import { Any, Late, Shared } from "silentium";
1
+ import { Any, Late, Shared, Transport } from "silentium";
2
2
  import { Tick } from "../behaviors/Tick";
3
3
  import { afterEach, beforeEach, expect, test, vi } from "vitest";
4
4
 
@@ -12,15 +12,15 @@ afterEach(() => {
12
12
  });
13
13
 
14
14
  test("Tick.test", async () => {
15
- const s1 = Late<number>(1);
16
- const s2 = Late<number>(2);
17
- const tickSrc = Shared(Tick(Any(s1.event, s2.event)), true);
15
+ const $s1 = Late<number>(1);
16
+ const $s2 = Late<number>(2);
17
+ const $tick = Shared(Tick(Any($s1, $s2)), true);
18
18
 
19
19
  const g = vi.fn();
20
- tickSrc.event(g);
20
+ $tick.event(Transport(g));
21
21
 
22
- s1.use(3);
23
- s2.use(4);
22
+ $s1.use(3);
23
+ $s2.use(4);
24
24
 
25
25
  await vi.advanceTimersByTimeAsync(10);
26
26
  vi.runAllTicks();
@@ -1,11 +1,11 @@
1
- import { EventType } from "silentium";
1
+ import { Event, EventType, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * Accumulates the last value Of the source and returns one result once per tick
5
5
  * https://silentium-lab.github.io/silentium-components/#/behaviors/tick
6
6
  */
7
- export function Tick<T>(baseSrc: EventType<T>): EventType<T> {
8
- return (user) => {
7
+ export function Tick<T>($base: EventType<T>): EventType<T> {
8
+ return Event((transport) => {
9
9
  let microtaskScheduled = false;
10
10
  let lastValue: T | null = null;
11
11
 
@@ -14,17 +14,19 @@ export function Tick<T>(baseSrc: EventType<T>): EventType<T> {
14
14
  queueMicrotask(() => {
15
15
  microtaskScheduled = false;
16
16
  if (lastValue !== null) {
17
- user(lastValue);
17
+ transport.use(lastValue);
18
18
  lastValue = null;
19
19
  }
20
20
  });
21
21
  };
22
22
 
23
- baseSrc((v) => {
24
- lastValue = v;
25
- if (!microtaskScheduled) {
26
- scheduleMicrotask();
27
- }
28
- });
29
- };
23
+ $base.event(
24
+ Transport((v) => {
25
+ lastValue = v;
26
+ if (!microtaskScheduled) {
27
+ scheduleMicrotask();
28
+ }
29
+ }),
30
+ );
31
+ });
30
32
  }
@@ -6,7 +6,7 @@ describe("Transaction.test", () => {
6
6
  test("value inside transaction", () => {
7
7
  const $base = LateShared(1);
8
8
 
9
- const t = Transaction($base.event, ($b) => {
9
+ const t = Transaction($base, ($b) => {
10
10
  return Applied($b, (x) => x * 2);
11
11
  });
12
12
 
@@ -18,11 +18,11 @@ describe("Transaction.test", () => {
18
18
  const $mult = LateShared(2);
19
19
 
20
20
  const t = Transaction(
21
- $base.event,
21
+ $base,
22
22
  ($b, $m) => {
23
23
  return Applied(All($b, $m), ([x, m]) => x * m);
24
24
  },
25
- $mult.event,
25
+ $mult,
26
26
  );
27
27
 
28
28
  expect(Primitive(t).primitiveWithException()).toBe(2);
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  ConstructorType,
3
3
  DestroyableType,
4
- Destructor,
4
+ Event,
5
5
  EventType,
6
6
  LateShared,
7
7
  Of,
8
+ Transport,
8
9
  } from "silentium";
9
10
  import { Detached } from "../behaviors/Detached";
10
11
 
@@ -20,22 +21,22 @@ export function Transaction<T, R = unknown>(
20
21
  >,
21
22
  ...args: EventType[]
22
23
  ): EventType<R> {
23
- return (user) => {
24
+ return Event((transport) => {
24
25
  const $res = LateShared<R>();
25
26
  const destructors: DestroyableType[] = [];
26
27
 
27
- $base((v) => {
28
- const $event = Destructor(
29
- eventBuilder(Of(v), ...args.map((a) => Detached(a))),
30
- );
31
- destructors.push($event);
32
- $event.event($res.use);
33
- });
34
- $res.event(user);
28
+ $base.event(
29
+ Transport((v) => {
30
+ const $event = eventBuilder(Of(v), ...args.map((a) => Detached(a)));
31
+ destructors.push($event as unknown as DestroyableType);
32
+ $event.event($res);
33
+ }),
34
+ );
35
+ $res.event(transport);
35
36
 
36
37
  return () => {
37
- destructors.forEach((d) => d.destroy());
38
+ destructors.forEach((d) => d?.destroy());
38
39
  destructors.length = 0;
39
40
  };
40
- };
41
+ });
41
42
  }
@@ -1,24 +1,24 @@
1
- import { Late } from "silentium";
1
+ import { Late, Transport } from "silentium";
2
2
  import { expect, test, vi } from "vitest";
3
3
  import { And } from "../boolean/And";
4
4
 
5
5
  test("And.test", () => {
6
- const one = Late<boolean>(false);
7
- const two = Late<boolean>(false);
8
- const result = And(one.event, two.event);
6
+ const $one = Late<boolean>(false);
7
+ const $two = Late<boolean>(false);
8
+ const result = And($one, $two);
9
9
  const g = vi.fn();
10
- result(g);
10
+ result.event(Transport(g));
11
11
  expect(g).toHaveBeenLastCalledWith(false);
12
12
 
13
- one.use(true);
14
- two.use(false);
13
+ $one.use(true);
14
+ $two.use(false);
15
15
  expect(g).toHaveBeenLastCalledWith(false);
16
16
 
17
- one.use(false);
18
- two.use(true);
17
+ $one.use(false);
18
+ $two.use(true);
19
19
  expect(g).toHaveBeenLastCalledWith(false);
20
20
 
21
- one.use(true);
22
- two.use(true);
21
+ $one.use(true);
22
+ $two.use(true);
23
23
  expect(g).toHaveBeenLastCalledWith(true);
24
24
  });
@@ -1,18 +1,17 @@
1
- import { All, EventType } from "silentium";
1
+ import { All, Event, EventType, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * https://silentium-lab.github.io/silentium-components/#/boolean/and
5
5
  */
6
6
  export function And(
7
- oneSrc: EventType<boolean>,
8
- twoSrc: EventType<boolean>,
7
+ $one: EventType<boolean>,
8
+ $two: EventType<boolean>,
9
9
  ): EventType<boolean> {
10
- return (user) => {
11
- All(
12
- oneSrc,
13
- twoSrc,
14
- )(([one, two]) => {
15
- user(one && two);
16
- });
17
- };
10
+ return Event((transport) => {
11
+ All($one, $two).event(
12
+ Transport(([one, two]) => {
13
+ transport.use(one && two);
14
+ }),
15
+ );
16
+ });
18
17
  }
@@ -1,9 +1,9 @@
1
- import { Of } from "silentium";
1
+ import { Of, Transport } from "silentium";
2
2
  import { Bool } from "../boolean/Bool";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
5
5
  test("Bool.test", () => {
6
6
  const o = vi.fn();
7
- Bool(Of(1))(o);
7
+ Bool(Of(1)).event(Transport(o));
8
8
  expect(o).toHaveBeenCalledWith(true);
9
9
  });
@@ -1,11 +1,11 @@
1
- import { Applied, EventType } from "silentium";
1
+ import { Applied, Event, EventType } from "silentium";
2
2
 
3
3
  /**
4
4
  * Convert Any source to boolean source
5
5
  * https://silentium-lab.github.io/silentium-components/#/boolean/bool
6
6
  */
7
- export function Bool(baseSrc: EventType): EventType<boolean> {
8
- return (user) => {
9
- Applied(baseSrc, Boolean)(user);
10
- };
7
+ export function Bool($base: EventType): EventType<boolean> {
8
+ return Event((transport) => {
9
+ Applied($base, Boolean).event(transport);
10
+ });
11
11
  }
@@ -1,12 +1,12 @@
1
- import { Late } from "silentium";
1
+ import { Late, Transport } from "silentium";
2
2
  import { Not } from "../boolean/Not";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
5
5
  test("Not.test", () => {
6
6
  const one = Late<boolean>(false);
7
- const result = Not(one.event);
7
+ const result = Not(one);
8
8
  const g = vi.fn();
9
- result(g);
9
+ result.event(Transport(g));
10
10
  expect(g).toHaveBeenLastCalledWith(true);
11
11
 
12
12
  one.use(true);
@@ -1,12 +1,14 @@
1
- import { EventType } from "silentium";
1
+ import { Event, EventType, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * https://silentium-lab.github.io/silentium-components/#/boolean/not
5
5
  */
6
- export function Not(baseSrc: EventType<boolean>): EventType<boolean> {
7
- return (user) => {
8
- baseSrc((v) => {
9
- user(!v);
10
- });
11
- };
6
+ export function Not($base: EventType<boolean>): EventType<boolean> {
7
+ return Event((transport) => {
8
+ $base.event(
9
+ Transport((v) => {
10
+ transport.use(!v);
11
+ }),
12
+ );
13
+ });
12
14
  }
@@ -1,13 +1,13 @@
1
- import { Late } from "silentium";
1
+ import { Late, Transport } from "silentium";
2
2
  import { Or } from "../boolean/Or";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
5
5
  test("Or.test", () => {
6
6
  const one = Late<boolean>(false);
7
7
  const two = Late<boolean>(false);
8
- const result = Or(one.event, two.event);
8
+ const result = Or(one, two);
9
9
  const g = vi.fn();
10
- result(g);
10
+ result.event(Transport(g));
11
11
  expect(g).toHaveBeenLastCalledWith(false);
12
12
 
13
13
  one.use(true);
package/src/boolean/Or.ts CHANGED
@@ -1,18 +1,17 @@
1
- import { All, EventType } from "silentium";
1
+ import { All, Event, EventType, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * https://silentium-lab.github.io/silentium-components/#/boolean/or
5
5
  */
6
6
  export function Or(
7
- oneSrc: EventType<boolean>,
8
- twoSrc: EventType<boolean>,
7
+ $one: EventType<boolean>,
8
+ $two: EventType<boolean>,
9
9
  ): EventType<boolean> {
10
- return (user) => {
11
- All(
12
- oneSrc,
13
- twoSrc,
14
- )(([one, two]) => {
15
- user(one || two);
16
- });
17
- };
10
+ return Event((transport) => {
11
+ All($one, $two).event(
12
+ Transport(([one, two]) => {
13
+ transport.use(one || two);
14
+ }),
15
+ );
16
+ });
18
17
  }
@@ -1,19 +1,21 @@
1
- import { EventType, EventUserType } from "silentium";
1
+ import { Event, EventType, Transport, TransportType } from "silentium";
2
2
 
3
3
  /**
4
4
  * Represents object from json
5
5
  */
6
6
  export function FromJson<T = Record<string, unknown>>(
7
- jsonSrc: EventType<string>,
8
- errorOwner?: EventUserType,
7
+ $json: EventType<string>,
8
+ error?: TransportType,
9
9
  ): EventType<T> {
10
- return (user) => {
11
- jsonSrc((json) => {
12
- try {
13
- user(JSON.parse(json));
14
- } catch (error) {
15
- errorOwner?.(new Error(`Failed to parse JSON: ${error}`));
16
- }
17
- });
18
- };
10
+ return Event((transport) => {
11
+ $json.event(
12
+ Transport((json) => {
13
+ try {
14
+ transport.use(JSON.parse(json));
15
+ } catch (e) {
16
+ error?.use(new Error(`Failed to parse JSON: ${e}`));
17
+ }
18
+ }),
19
+ );
20
+ });
19
21
  }
@@ -1,19 +1,21 @@
1
- import { EventType, EventUserType } from "silentium";
1
+ import { Event, EventType, Transport, TransportType } from "silentium";
2
2
 
3
3
  /**
4
4
  * Represents json from object
5
5
  */
6
6
  export function ToJson(
7
- dataSrc: EventType,
8
- errorOwner?: EventUserType,
7
+ $data: EventType,
8
+ error?: TransportType,
9
9
  ): EventType<string> {
10
- return (user) => {
11
- dataSrc((data: unknown) => {
12
- try {
13
- user(JSON.stringify(data));
14
- } catch {
15
- errorOwner?.(new Error("Failed to convert to JSON"));
16
- }
17
- });
18
- };
10
+ return Event((transport) => {
11
+ $data.event(
12
+ Transport((data: unknown) => {
13
+ try {
14
+ transport.use(JSON.stringify(data));
15
+ } catch {
16
+ error?.use(new Error("Failed to convert to JSON"));
17
+ }
18
+ }),
19
+ );
20
+ });
19
21
  }