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,10 +1,10 @@
1
- import { Of } from "silentium";
1
+ import { Of, Transport } from "silentium";
2
2
  import { expect, test, vi } from "vitest";
3
3
  import { First } from "./First";
4
4
 
5
5
  test("first", () => {
6
6
  const f = First(Of([1, 2, 3]));
7
7
  const g = vi.fn();
8
- f(g);
8
+ f.event(Transport(g));
9
9
  expect(g).toHaveBeenCalledWith(1);
10
10
  });
@@ -1,12 +1,12 @@
1
- import { Applied, EventType } from "silentium";
1
+ import { Applied, Event, EventType } from "silentium";
2
2
 
3
3
  /**
4
4
  * Represents the first element Of an array.
5
5
  */
6
6
  export function First<T extends Array<unknown>>(
7
- baseSrc: EventType<T>,
7
+ $base: EventType<T>,
8
8
  ): EventType<T[0]> {
9
- return (user) => {
10
- Applied(baseSrc, (a) => a[0])(user);
11
- };
9
+ return Event((transport) => {
10
+ Applied($base, (a) => a[0]).event(transport);
11
+ });
12
12
  }
@@ -1,4 +1,11 @@
1
- import { Applied, Late, Of, Shared } from "silentium";
1
+ import {
2
+ Applied,
3
+ Late,
4
+ Of,
5
+ Shared,
6
+ Transport,
7
+ TransportEvent,
8
+ } from "silentium";
2
9
  import { Router } from "../navigation/Router";
3
10
  import { expect, test, vi } from "vitest";
4
11
 
@@ -7,40 +14,40 @@ const drop = (dropPart: string) => (value: string) => {
7
14
  };
8
15
 
9
16
  test("Router._main.test", () => {
10
- const urlSrc = Late<string>("http://domain.com/");
11
- const urlPathSrc = Shared(Applied(urlSrc.event, drop("http://domain.com")));
17
+ const $url = Late<string>("http://domain.com/");
18
+ const $urlPath = Shared(Applied($url, drop("http://domain.com")));
12
19
  const g = vi.fn();
13
- urlPathSrc.event(g);
20
+ $urlPath.event(Transport(g));
14
21
 
15
- const routerSrc = Router(
16
- urlPathSrc.event,
22
+ const $router = Router(
23
+ $urlPath,
17
24
  Of([
18
25
  {
19
26
  pattern: "^/$",
20
- template: () => Of("page/home.html"),
27
+ event: TransportEvent(() => Of("page/home.html")),
21
28
  },
22
29
  {
23
30
  pattern: "/some/contacts",
24
- template: () => Of("page/contacts.html"),
31
+ event: TransportEvent(() => Of("page/contacts.html")),
25
32
  },
26
33
  ]),
27
- () => Of<string>("page/404.html"),
34
+ TransportEvent(() => Of<string>("page/404.html")),
28
35
  );
29
36
  const g2 = vi.fn();
30
- routerSrc(g2);
37
+ $router.event(Transport(g2));
31
38
 
32
39
  expect(g2).toHaveBeenLastCalledWith("page/home.html");
33
40
 
34
- urlSrc.use("http://domain.com/some/contacts");
41
+ $url.use("http://domain.com/some/contacts");
35
42
 
36
43
  expect(g).toHaveBeenLastCalledWith("/some/contacts");
37
44
  expect(g2).toHaveBeenLastCalledWith("page/contacts.html");
38
45
 
39
- urlSrc.use("http://domain.com/some/unknown/");
46
+ $url.use("http://domain.com/some/unknown/");
40
47
 
41
48
  expect(g2).toHaveBeenLastCalledWith("page/404.html");
42
49
 
43
- urlSrc.use("http://domain.com/");
50
+ $url.use("http://domain.com/");
44
51
 
45
52
  expect(g2).toHaveBeenLastCalledWith("page/home.html");
46
53
  });
@@ -1,88 +1,96 @@
1
- import { LateShared, Of } from "silentium";
1
+ import { Event, LateShared, Of, Transport, TransportEvent } from "silentium";
2
2
  import { describe, expect, test } from "vitest";
3
3
  import { Detached } from "../behaviors/Detached";
4
4
  import { Router } from "../navigation/Router";
5
5
 
6
6
  describe("Router._nested.test", () => {
7
7
  test("Вложенные роуты", () => {
8
- const urlSrc = LateShared("/");
9
- const routerSrc = Router(
10
- urlSrc.event,
8
+ const $url = LateShared("/");
9
+ const $router = Router(
10
+ $url,
11
11
  Of([
12
12
  {
13
13
  pattern: "^/$",
14
- template: () => Of<string>("home"),
14
+ event: TransportEvent(() => Of<string>("home")),
15
15
  },
16
16
  {
17
17
  pattern: "/admin.*",
18
- template: () => {
19
- return (user) => {
18
+ event: TransportEvent(() => {
19
+ return Event((transport) => {
20
20
  // need to replace with detached component
21
- const localUrlSrc = Detached(urlSrc.event);
21
+ const localUrlSrc = Detached($url);
22
22
 
23
23
  const r = Router(
24
24
  localUrlSrc,
25
25
  Of([
26
26
  {
27
27
  pattern: "^/admin/articles$",
28
- template: () => Of("articles list"),
28
+ event: TransportEvent(() => Of("articles list")),
29
29
  },
30
30
  {
31
31
  pattern: "^/admin/articles/create$",
32
- template: () => Of("articles create"),
32
+ event: TransportEvent(() => Of("articles create")),
33
33
  },
34
34
  {
35
35
  pattern: "^/admin/articles/update$",
36
- template: () => Of("articles update"),
36
+ event: TransportEvent(() => Of("articles update")),
37
37
  },
38
38
  {
39
39
  pattern: "^/admin/nested/.*$",
40
- template: () => {
41
- return (user) => {
42
- const localUrlSrc = Detached(urlSrc.event);
40
+ event: TransportEvent(() => {
41
+ return Event((transport) => {
42
+ const localUrlSrc = Detached($url);
43
43
 
44
44
  const r = Router(
45
45
  localUrlSrc,
46
46
  Of([
47
47
  {
48
48
  pattern: "^/admin/nested/list$",
49
- template: () => Of("admin nested list"),
49
+ event: TransportEvent(() =>
50
+ Of("admin nested list"),
51
+ ),
50
52
  },
51
53
  ]),
52
- () => Of<string>("admin nested not found"),
54
+ TransportEvent(() =>
55
+ Of<string>("admin nested not found"),
56
+ ),
53
57
  );
54
- const rDestructor = r(user);
58
+
59
+ r.event(transport);
55
60
 
56
61
  return function AdminDestroy() {
57
- rDestructor?.();
62
+ r.destroy();
58
63
  };
59
- };
60
- },
64
+ });
65
+ }),
61
66
  },
62
67
  ]),
63
- () => Of<string>("admin not found"),
68
+ TransportEvent(() => Of<string>("admin not found")),
64
69
  );
65
- const rDestructor = r(user);
70
+
71
+ r.event(transport);
66
72
 
67
73
  return function AdminDestroy() {
68
- rDestructor?.();
74
+ r.destroy();
69
75
  };
70
- };
71
- },
76
+ });
77
+ }),
72
78
  },
73
79
  ]),
74
- () => Of("not found"),
80
+ TransportEvent(() => Of("not found")),
75
81
  );
76
82
  const d: string[] = [];
77
- routerSrc((v) => {
78
- d.push(v);
79
- });
83
+ $router.event(
84
+ Transport((v) => {
85
+ d.push(v);
86
+ }),
87
+ );
80
88
  const pd = () => d.join("\n");
81
89
 
82
- urlSrc.use("/admin/articles");
83
- urlSrc.use("/admin/nested/list");
84
- urlSrc.use("/admin/articles/create");
85
- urlSrc.use("/admin/articles/update");
90
+ $url.use("/admin/articles");
91
+ $url.use("/admin/nested/list");
92
+ $url.use("/admin/articles/create");
93
+ $url.use("/admin/articles/update");
86
94
 
87
95
  expect(pd()).toBe(`home
88
96
  articles list
@@ -1,76 +1,74 @@
1
1
  import {
2
2
  All,
3
3
  Applied,
4
+ DestroyableType,
5
+ Event,
4
6
  EventType,
5
- Destructor,
6
- DestructorType,
7
7
  Of,
8
- ConstructorType,
8
+ Transport,
9
+ TransportDestroyable,
10
+ TransportEvent,
11
+ TransportType,
9
12
  } from "silentium";
10
- import { RegexpMatched } from "../system";
11
13
  import { BranchLazy } from "../behaviors";
14
+ import { RegexpMatched } from "../system";
12
15
 
13
16
  export interface Route<T> {
14
17
  pattern: string;
15
18
  patternFlags?: string;
16
- template: ConstructorType<[], EventType<T>>;
19
+ event: TransportType<[], EventType<T>>;
17
20
  }
18
21
 
19
- const emptySrc = () => Of(false);
22
+ const $empty = TransportEvent(() => Of(false));
20
23
 
21
24
  /**
22
25
  * Router component what will return template if url matches pattern
23
26
  * https://silentium-lab.github.io/silentium-components/#/navigation/router
24
27
  */
25
28
  export function Router<T = "string">(
26
- urlSrc: EventType<string>,
27
- routesSrc: EventType<Route<T>[]>,
28
- defaultSrc: ConstructorType<[], EventType<T>>,
29
- ): EventType<T> {
30
- return (user) => {
31
- const destructors: DestructorType[] = [];
32
- const destroyAllData = () => {
33
- destructors.forEach((d) => d());
29
+ $url: EventType<string>,
30
+ $routes: EventType<Route<T>[]>,
31
+ $default: TransportType<void, EventType<T>>,
32
+ ): EventType<T> & DestroyableType {
33
+ return Event<T>((transport) => {
34
+ const destructors: DestroyableType[] = [];
35
+ const destructor = () => {
36
+ destructors.forEach((d) => d.destroy());
34
37
  destructors.length = 0;
35
38
  };
36
- All(
37
- routesSrc,
38
- urlSrc,
39
- )(([routes, url]) => {
40
- destroyAllData();
41
- const instance = All(
42
- defaultSrc(),
43
- All(
44
- ...routes.map(
45
- (r) =>
46
- Destructor(
47
- BranchLazy(
48
- RegexpMatched(
49
- Of(r.pattern),
50
- Of(url),
51
- r.patternFlags ? Of(r.patternFlags) : undefined,
52
- ),
53
- r.template,
54
- emptySrc,
39
+ All($routes, $url).event(
40
+ Transport(([routes, url]) => {
41
+ destructor();
42
+ const instance = All(
43
+ $default.use(),
44
+ All(
45
+ ...routes.map((r) => {
46
+ const $template = TransportDestroyable(r.event);
47
+ destructors.push($template);
48
+ return BranchLazy(
49
+ RegexpMatched(
50
+ Of(r.pattern),
51
+ Of(url),
52
+ r.patternFlags ? Of(r.patternFlags) : undefined,
55
53
  ),
56
- (d: DestructorType) => destructors.push(d),
57
- ).event,
54
+ $template,
55
+ $empty,
56
+ );
57
+ }),
58
58
  ),
59
- ),
60
- );
61
-
62
- // Return first not false or default
63
- Applied(instance, (r) => {
64
- const firstReal = r[1].find((r) => r !== false);
65
-
66
- if (firstReal) {
67
- return firstReal as T;
68
- }
59
+ );
69
60
 
70
- return r[0];
71
- })(user);
72
- });
61
+ // Return first not false or default
62
+ Applied(instance, (r) => {
63
+ const first = r[1].find((r: unknown) => r !== false);
64
+ if (first) {
65
+ return first as T;
66
+ }
67
+ return r[0];
68
+ }).event(transport);
69
+ }),
70
+ );
73
71
 
74
- return destroyAllData;
75
- };
72
+ return destructor;
73
+ });
76
74
  }
@@ -1,14 +1,14 @@
1
- import { Of } from "silentium";
1
+ import { Of, Transport } from "silentium";
2
2
  import { Concatenated } from "../strings/Concatenated";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
5
5
  test("Concatenated.test", () => {
6
- const concatenatedSrc = Concatenated(
6
+ const $concatenated = Concatenated(
7
7
  [Of("one"), Of("two"), Of("three")],
8
8
  Of("-"),
9
9
  );
10
10
  const g = vi.fn();
11
- concatenatedSrc(g);
11
+ $concatenated.event(Transport(g));
12
12
 
13
13
  expect(g).toHaveBeenLastCalledWith("one-two-three");
14
14
  });
@@ -1,4 +1,4 @@
1
- import { All, EventType, Of } from "silentium";
1
+ import { All, Event, EventType, Of, Transport } from "silentium";
2
2
 
3
3
  /**
4
4
  * Join sources Of strings to one source
@@ -8,12 +8,11 @@ export function Concatenated(
8
8
  sources: EventType<string>[],
9
9
  joinPartSrc: EventType<string> = Of(""),
10
10
  ): EventType<string> {
11
- return (user) => {
12
- All(
13
- joinPartSrc,
14
- ...sources,
15
- )(([joinPart, ...strings]) => {
16
- user(strings.join(joinPart));
17
- });
18
- };
11
+ return Event((transport) => {
12
+ All(joinPartSrc, ...sources).event(
13
+ Transport(([joinPart, ...strings]) => {
14
+ transport.use(strings.join(joinPart));
15
+ }),
16
+ );
17
+ });
19
18
  }
@@ -1,4 +1,4 @@
1
- import { Of } from "silentium";
1
+ import { Of, Transport } from "silentium";
2
2
  import { Template } from "../strings/Template";
3
3
  import { RecordOf } from "../structures";
4
4
  import { expect, test, vi } from "vitest";
@@ -11,7 +11,7 @@ test("Template._main.test", () => {
11
11
  }),
12
12
  );
13
13
  const g = vi.fn();
14
- tpl.value(g);
14
+ tpl.event(Transport(g));
15
15
 
16
16
  expect(g).toHaveBeenLastCalledWith("<h1>one value</h1>");
17
17
 
@@ -22,7 +22,7 @@ test("Template._main.test", () => {
22
22
  }),
23
23
  );
24
24
  const g2 = vi.fn();
25
- tpl2.value(g2);
25
+ tpl2.event(Transport(g2));
26
26
 
27
27
  expect(g2).toHaveBeenLastCalledWith("<h2>second value</h2>");
28
28
  });
@@ -1,4 +1,4 @@
1
- import { Of } from "silentium";
1
+ import { Of, Transport } from "silentium";
2
2
  import { Template } from "../strings/Template";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
@@ -6,7 +6,7 @@ test("Template._place.test", () => {
6
6
  const t = Template();
7
7
  t.template(`<div class="greeting">Hello ${t.var(Of("User"))}</div>`);
8
8
  const g = vi.fn();
9
- t.value(g);
9
+ t.event(Transport(g));
10
10
 
11
11
  expect(g).toHaveBeenLastCalledWith('<div class="greeting">Hello User</div>');
12
12
  });
@@ -1,53 +1,67 @@
1
1
  import {
2
2
  All,
3
3
  Applied,
4
+ DestroyableType,
5
+ DestroyContainer,
4
6
  EventType,
5
- Destructor,
6
- DestructorType,
7
+ isDestroyable,
7
8
  Of,
9
+ TransportType,
8
10
  } from "silentium";
9
11
  import { RecordOf } from "../structures";
10
12
 
11
13
  export function Template(
12
- theSrc: EventType<string> = Of(""),
13
- placesSrc: EventType<Record<string, unknown>> = Of({}),
14
+ $src: EventType<string> = Of(""),
15
+ $places: EventType<Record<string, unknown>> = Of({}),
14
16
  ) {
15
- let placesCounter = 0;
16
- const vars: Record<string, EventType> = {
17
+ return new TemplateEvent($src, $places);
18
+ }
19
+
20
+ class TemplateEvent implements EventType<string>, DestroyableType {
21
+ private dc = DestroyContainer();
22
+ private vars: Record<string, EventType> = {
17
23
  $TPL: Of("$TPL"),
18
24
  };
19
- const destructors: DestructorType[] = [];
20
- return {
21
- value: <EventType<string>>((user) => {
22
- const varsSrc = RecordOf(vars);
23
- Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {
24
- Object.entries(rules).forEach(([ph, val]) => {
25
- base = base.replaceAll(ph, String(val));
26
- });
27
- Object.entries(vars).forEach(([ph, val]) => {
28
- base = base.replaceAll(ph, String(val));
29
- });
30
-
31
- return base;
32
- })(user);
33
- }),
34
- template: (value: string) => {
35
- theSrc = Of(value);
36
- },
37
- /**
38
- * Ability to register variable
39
- * in concrete place Of template
40
- */
41
- var: (src: EventType<string>) => {
42
- const varName = `$var${placesCounter}`;
43
- placesCounter += 1;
44
- vars[varName] = Destructor(src, (d: DestructorType) => {
45
- destructors.push(d);
46
- }).event;
47
- return varName;
48
- },
49
- destroy() {
50
- destructors.forEach((d) => d());
51
- },
52
- };
25
+
26
+ public constructor(
27
+ private $src: EventType<string> = Of(""),
28
+ private $places: EventType<Record<string, unknown>> = Of({}),
29
+ ) {}
30
+
31
+ public event(transport: TransportType<string, null>): this {
32
+ const $vars = RecordOf(this.vars);
33
+ Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {
34
+ Object.entries(rules).forEach(([ph, val]) => {
35
+ base = base.replaceAll(ph, String(val));
36
+ });
37
+ Object.entries(vars).forEach(([ph, val]) => {
38
+ base = base.replaceAll(ph, String(val));
39
+ });
40
+
41
+ return base;
42
+ }).event(transport);
43
+ return this;
44
+ }
45
+
46
+ public template(value: string) {
47
+ this.$src = Of(value);
48
+ }
49
+
50
+ /**
51
+ * Ability to register variable
52
+ * in concrete place Of template
53
+ */
54
+ public var(src: EventType<string>) {
55
+ const places = Object.keys(this.vars).length;
56
+ const varName = `$var${places}`;
57
+ if (isDestroyable(src)) {
58
+ this.dc.add(src);
59
+ }
60
+ this.vars[varName] = src;
61
+ return varName;
62
+ }
63
+
64
+ public destroy(): this {
65
+ return this;
66
+ }
53
67
  }
@@ -1,14 +1,14 @@
1
- import { Late } from "silentium";
1
+ import { Late, Transport } from "silentium";
2
2
  import { HashTable } from "../structures/HashTable";
3
3
  import { expect, test, vi } from "vitest";
4
4
 
5
5
  test("HashTable.test", () => {
6
- const entrySource = Late<[string, string]>();
7
- const hashTableSrc = HashTable(entrySource.event);
6
+ const $entry = Late<[string, string]>();
7
+ const $hash = HashTable($entry);
8
8
  const g = vi.fn();
9
- hashTableSrc(g);
10
- entrySource.use(["key-one", "value-one"]);
11
- entrySource.use(["key-two", "value-two"]);
9
+ $hash.event(Transport(g));
10
+ $entry.use(["key-one", "value-one"]);
11
+ $entry.use(["key-two", "value-two"]);
12
12
 
13
13
  expect(g).toHaveBeenLastCalledWith({
14
14
  "key-one": "value-one",
@@ -1,17 +1,19 @@
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/#/structures/hash-table
5
5
  */
6
6
  export function HashTable<T>(
7
- baseSrc: EventType<[string, unknown]>,
7
+ $base: EventType<[string, unknown]>,
8
8
  ): EventType<T> {
9
- return (user) => {
9
+ return Event((transport) => {
10
10
  const record: Record<string, unknown> = {};
11
11
 
12
- baseSrc(([key, value]) => {
13
- record[key] = value;
14
- user(record as T);
15
- });
16
- };
12
+ $base.event(
13
+ Transport(([key, value]) => {
14
+ record[key] = value;
15
+ transport.use(record as T);
16
+ }),
17
+ );
18
+ });
17
19
  }
@@ -1,16 +1,16 @@
1
- import { Late, Of } from "silentium";
1
+ import { Late, Of, Transport } from "silentium";
2
2
  import { expect, test, vi } from "vitest";
3
3
  import { RecordOf } from "./RecordOf";
4
4
 
5
5
  test("Record._main.test", () => {
6
- const three = Late<string>("three");
7
- const recordSrc = RecordOf({
6
+ const $three = Late<string>("three");
7
+ const $record = RecordOf({
8
8
  one: Of("one"),
9
9
  two: Of(2),
10
- three: three.event,
10
+ three: $three,
11
11
  });
12
12
  const g = vi.fn();
13
- recordSrc(g);
13
+ $record.event(Transport(g));
14
14
 
15
15
  expect(g).toHaveBeenLastCalledWith({
16
16
  one: "one",
@@ -18,7 +18,7 @@ test("Record._main.test", () => {
18
18
  three: "three",
19
19
  });
20
20
 
21
- three.use("three-changed");
21
+ $three.use("three-changed");
22
22
 
23
23
  expect(g).toHaveBeenLastCalledWith({
24
24
  one: "one",