@derivation/relational 0.1.7

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 (69) hide show
  1. package/dist/index.d.ts +23 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +31 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/log-change-input.d.ts +13 -0
  6. package/dist/log-change-input.d.ts.map +1 -0
  7. package/dist/log-change-input.js +26 -0
  8. package/dist/log-change-input.js.map +1 -0
  9. package/dist/reactive-log-source.d.ts +10 -0
  10. package/dist/reactive-log-source.d.ts.map +1 -0
  11. package/dist/reactive-log-source.js +19 -0
  12. package/dist/reactive-log-source.js.map +1 -0
  13. package/dist/reactive-log.d.ts +22 -0
  14. package/dist/reactive-log.d.ts.map +1 -0
  15. package/dist/reactive-log.js +73 -0
  16. package/dist/reactive-log.js.map +1 -0
  17. package/dist/reactive-map-source.d.ts +10 -0
  18. package/dist/reactive-map-source.d.ts.map +1 -0
  19. package/dist/reactive-map-source.js +19 -0
  20. package/dist/reactive-map-source.js.map +1 -0
  21. package/dist/reactive-map.d.ts +24 -0
  22. package/dist/reactive-map.d.ts.map +1 -0
  23. package/dist/reactive-map.js +59 -0
  24. package/dist/reactive-map.js.map +1 -0
  25. package/dist/reactive-set-source.d.ts +10 -0
  26. package/dist/reactive-set-source.d.ts.map +1 -0
  27. package/dist/reactive-set-source.js +19 -0
  28. package/dist/reactive-set-source.js.map +1 -0
  29. package/dist/reactive-set.d.ts +21 -0
  30. package/dist/reactive-set.d.ts.map +1 -0
  31. package/dist/reactive-set.js +58 -0
  32. package/dist/reactive-set.js.map +1 -0
  33. package/dist/rimbu-utils.d.ts +28 -0
  34. package/dist/rimbu-utils.d.ts.map +1 -0
  35. package/dist/rimbu-utils.js +46 -0
  36. package/dist/rimbu-utils.js.map +1 -0
  37. package/dist/test/reactive-log.test.d.ts +2 -0
  38. package/dist/test/reactive-log.test.d.ts.map +1 -0
  39. package/dist/test/reactive-log.test.js +228 -0
  40. package/dist/test/reactive-log.test.js.map +1 -0
  41. package/dist/test/reactive.test.d.ts +2 -0
  42. package/dist/test/reactive.test.d.ts.map +1 -0
  43. package/dist/test/reactive.test.js +240 -0
  44. package/dist/test/reactive.test.js.map +1 -0
  45. package/dist/test/z-map-set.test.d.ts +2 -0
  46. package/dist/test/z-map-set.test.d.ts.map +1 -0
  47. package/dist/test/z-map-set.test.js +251 -0
  48. package/dist/test/z-map-set.test.js.map +1 -0
  49. package/dist/tuple.d.ts +6 -0
  50. package/dist/tuple.d.ts.map +1 -0
  51. package/dist/tuple.js +5 -0
  52. package/dist/tuple.js.map +1 -0
  53. package/dist/z-map-change-input.d.ts +13 -0
  54. package/dist/z-map-change-input.d.ts.map +1 -0
  55. package/dist/z-map-change-input.js +26 -0
  56. package/dist/z-map-change-input.js.map +1 -0
  57. package/dist/z-map.d.ts +25 -0
  58. package/dist/z-map.d.ts.map +1 -0
  59. package/dist/z-map.js +161 -0
  60. package/dist/z-map.js.map +1 -0
  61. package/dist/z-set-change-input.d.ts +13 -0
  62. package/dist/z-set-change-input.d.ts.map +1 -0
  63. package/dist/z-set-change-input.js +26 -0
  64. package/dist/z-set-change-input.js.map +1 -0
  65. package/dist/z-set.d.ts +24 -0
  66. package/dist/z-set.d.ts.map +1 -0
  67. package/dist/z-set.js +148 -0
  68. package/dist/z-set.js.map +1 -0
  69. package/package.json +41 -0
@@ -0,0 +1,23 @@
1
+ import { List } from "@rimbu/core";
2
+ import { Graph } from "derivation";
3
+ import { ReactiveMapSource } from "./reactive-map-source.js";
4
+ import { ReactiveSetSource } from "./reactive-set-source.js";
5
+ import { ReactiveLogSource } from "./reactive-log-source.js";
6
+ import { ZMap } from "./z-map.js";
7
+ import { ZSet } from "./z-set.js";
8
+ export { ZMap } from "./z-map.js";
9
+ export { ZSet } from "./z-set.js";
10
+ export { ReactiveMap } from "./reactive-map.js";
11
+ export { ReactiveSet } from "./reactive-set.js";
12
+ export { ReactiveMapSource } from "./reactive-map-source.js";
13
+ export { ReactiveSetSource } from "./reactive-set-source.js";
14
+ export { ReactiveLog } from "./reactive-log.js";
15
+ export { ReactiveLogSource } from "./reactive-log-source.js";
16
+ export { ZSetChangeInput } from "./z-set-change-input.js";
17
+ export { ZMapChangeInput } from "./z-map-change-input.js";
18
+ export { LogChangeInput } from "./log-change-input.js";
19
+ export { Tuple } from "./tuple.js";
20
+ export declare function inputMap<K, V>(graph: Graph, snapshot?: ZMap<K, V>): ReactiveMapSource<K, V>;
21
+ export declare function inputSet<T>(graph: Graph, snapshot?: ZSet<T>): ReactiveSetSource<T>;
22
+ export declare function inputLog<T>(graph: Graph, snapshot?: List<T>): ReactiveLogSource<T>;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGlC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpB,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAEzB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GACjB,iBAAiB,CAAC,CAAC,CAAC,CAEtB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GACjB,iBAAiB,CAAC,CAAC,CAAC,CAEtB"}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ import { List } from "@rimbu/core";
2
+ import { Graph } from "derivation";
3
+ import { ReactiveMapSource } from "./reactive-map-source.js";
4
+ import { ReactiveSetSource } from "./reactive-set-source.js";
5
+ import { ReactiveLogSource } from "./reactive-log-source.js";
6
+ import { ZMap } from "./z-map.js";
7
+ import { ZSet } from "./z-set.js";
8
+ // Re-export all types
9
+ export { ZMap } from "./z-map.js";
10
+ export { ZSet } from "./z-set.js";
11
+ export { ReactiveMap } from "./reactive-map.js";
12
+ export { ReactiveSet } from "./reactive-set.js";
13
+ export { ReactiveMapSource } from "./reactive-map-source.js";
14
+ export { ReactiveSetSource } from "./reactive-set-source.js";
15
+ export { ReactiveLog } from "./reactive-log.js";
16
+ export { ReactiveLogSource } from "./reactive-log-source.js";
17
+ export { ZSetChangeInput } from "./z-set-change-input.js";
18
+ export { ZMapChangeInput } from "./z-map-change-input.js";
19
+ export { LogChangeInput } from "./log-change-input.js";
20
+ export { Tuple } from "./tuple.js";
21
+ // Helper functions to create relational reactive values
22
+ export function inputMap(graph, snapshot) {
23
+ return new ReactiveMapSource(snapshot || new ZMap(), graph);
24
+ }
25
+ export function inputSet(graph, snapshot) {
26
+ return new ReactiveSetSource(snapshot || new ZSet(), graph);
27
+ }
28
+ export function inputLog(graph, snapshot) {
29
+ return new ReactiveLogSource(snapshot || List.empty(), graph);
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,sBAAsB;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,wDAAwD;AACxD,MAAM,UAAU,QAAQ,CACtB,KAAY,EACZ,QAAqB;IAErB,OAAO,IAAI,iBAAiB,CAAO,QAAQ,IAAI,IAAI,IAAI,EAAQ,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAY,EACZ,QAAkB;IAElB,OAAO,IAAI,iBAAiB,CAAI,QAAQ,IAAI,IAAI,IAAI,EAAK,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAY,EACZ,QAAkB;IAElB,OAAO,IAAI,iBAAiB,CAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAK,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { List } from "@rimbu/core";
2
+ import { Graph, ReactiveValue } from "derivation";
3
+ export declare class LogChangeInput<T> extends ReactiveValue<List<T>> {
4
+ readonly graph: Graph;
5
+ private current;
6
+ private pending;
7
+ constructor(graph: Graph);
8
+ push(item: T): void;
9
+ pushAll(items: List<T>): void;
10
+ step(): void;
11
+ get value(): List<T>;
12
+ }
13
+ //# sourceMappingURL=log-change-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-change-input.d.ts","sourceRoot":"","sources":["../src/log-change-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAI/B,KAAK,EAAE,KAAK;IAHxC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAyB;gBAEZ,KAAK,EAAE,KAAK;IAKxC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAInB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;IAI7B,IAAI,IAAI,IAAI;IAKZ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAEnB;CACF"}
@@ -0,0 +1,26 @@
1
+ import { List } from "@rimbu/core";
2
+ import { Graph, ReactiveValue } from "derivation";
3
+ export class LogChangeInput extends ReactiveValue {
4
+ graph;
5
+ current = List.empty();
6
+ pending = List.empty();
7
+ constructor(graph) {
8
+ super();
9
+ this.graph = graph;
10
+ graph.addValue(this);
11
+ }
12
+ push(item) {
13
+ this.pending = this.pending.append(item);
14
+ }
15
+ pushAll(items) {
16
+ this.pending = this.pending.concat(items);
17
+ }
18
+ step() {
19
+ this.current = this.pending;
20
+ this.pending = List.empty();
21
+ }
22
+ get value() {
23
+ return this.current;
24
+ }
25
+ }
26
+ //# sourceMappingURL=log-change-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-change-input.js","sourceRoot":"","sources":["../src/log-change-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,OAAO,cAAkB,SAAQ,aAAsB;IAI/B;IAHpB,OAAO,GAAY,IAAI,CAAC,KAAK,EAAE,CAAC;IAChC,OAAO,GAAY,IAAI,CAAC,KAAK,EAAE,CAAC;IAExC,YAA4B,KAAY;QACtC,KAAK,EAAE,CAAC;QADkB,UAAK,GAAL,KAAK,CAAO;QAEtC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,IAAO;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { List } from "@rimbu/core";
2
+ import { Graph } from "derivation";
3
+ import { ReactiveLog } from "./reactive-log.js";
4
+ export declare class ReactiveLogSource<T> extends ReactiveLog<T> {
5
+ private readonly input;
6
+ constructor(snapshot: List<T>, graph: Graph);
7
+ push(item: T): void;
8
+ pushAll(items: List<T>): void;
9
+ }
10
+ //# sourceMappingURL=reactive-log-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-log-source.d.ts","sourceRoot":"","sources":["../src/reactive-log-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;gBAE9B,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;IAM3C,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAInB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;CAG9B"}
@@ -0,0 +1,19 @@
1
+ import { List } from "@rimbu/core";
2
+ import { Graph } from "derivation";
3
+ import { LogChangeInput } from "./log-change-input.js";
4
+ import { ReactiveLog } from "./reactive-log.js";
5
+ export class ReactiveLogSource extends ReactiveLog {
6
+ input;
7
+ constructor(snapshot, graph) {
8
+ const input = new LogChangeInput(graph);
9
+ super(input, snapshot);
10
+ this.input = input;
11
+ }
12
+ push(item) {
13
+ this.input.push(item);
14
+ }
15
+ pushAll(items) {
16
+ this.input.pushAll(items);
17
+ }
18
+ }
19
+ //# sourceMappingURL=reactive-log-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-log-source.js","sourceRoot":"","sources":["../src/reactive-log-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,OAAO,iBAAqB,SAAQ,WAAc;IACrC,KAAK,CAAoB;IAE1C,YAAY,QAAiB,EAAE,KAAY;QACzC,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,IAAO;QACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import { List } from "@rimbu/core";
2
+ import { ReactiveValue } from "derivation";
3
+ import { ZSet } from "./z-set.js";
4
+ import { ReactiveSet } from "./reactive-set.js";
5
+ export declare class ReactiveLog<T> {
6
+ private readonly _changes;
7
+ private readonly _materialized;
8
+ private readonly _previousStep;
9
+ private readonly _length;
10
+ constructor(changes: ReactiveValue<List<T>>, snapshot?: List<T>);
11
+ get snapshot(): List<T>;
12
+ get previousSnapshot(): List<T>;
13
+ get changes(): ReactiveValue<List<T>>;
14
+ get materialized(): ReactiveValue<List<T>>;
15
+ get previousMaterialized(): ReactiveValue<List<T>>;
16
+ get length(): ReactiveValue<number>;
17
+ fold<S>(initial: S, reducer: (acc: S, item: T) => S): ReactiveValue<S>;
18
+ map<U>(f: (t: T) => U): ReactiveLog<U>;
19
+ filter(pred: (t: T) => boolean): ReactiveLog<T>;
20
+ toSet<S>(this: ReactiveLog<ZSet<S>>): ReactiveSet<S>;
21
+ }
22
+ //# sourceMappingURL=reactive-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-log.d.ts","sourceRoot":"","sources":["../src/reactive-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEpC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAQ/D,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAEtB;IAED,IAAI,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,CAE9B;IAED,IAAI,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAEpC;IAED,IAAI,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAEzC;IAED,IAAI,oBAAoB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAEjD;IAED,IAAI,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAElC;IAED,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAetE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAMtC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAM/C,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAgBrD"}
@@ -0,0 +1,73 @@
1
+ import { List } from "@rimbu/core";
2
+ import { ReactiveValue } from "derivation";
3
+ import { ZSet } from "./z-set.js";
4
+ import { ReactiveSet } from "./reactive-set.js";
5
+ export class ReactiveLog {
6
+ _changes;
7
+ _materialized;
8
+ _previousStep;
9
+ _length;
10
+ constructor(changes, snapshot) {
11
+ snapshot = snapshot ?? List.empty();
12
+ this._changes = changes;
13
+ this._materialized = changes.accumulate(snapshot, (acc, x) => acc.concat(x));
14
+ this._previousStep = this._materialized.delay(snapshot);
15
+ this._length = changes.accumulate(snapshot.length, (acc, x) => acc + x.length);
16
+ }
17
+ get snapshot() {
18
+ return this._materialized.value;
19
+ }
20
+ get previousSnapshot() {
21
+ return this._previousStep.value;
22
+ }
23
+ get changes() {
24
+ return this._changes;
25
+ }
26
+ get materialized() {
27
+ return this._materialized;
28
+ }
29
+ get previousMaterialized() {
30
+ return this._previousStep;
31
+ }
32
+ get length() {
33
+ return this._length;
34
+ }
35
+ fold(initial, reducer) {
36
+ let snapshotState = initial;
37
+ for (const item of this._previousStep.value) {
38
+ snapshotState = reducer(snapshotState, item);
39
+ }
40
+ return this._changes.accumulate(snapshotState, (acc, items) => {
41
+ let result = acc;
42
+ for (const item of items) {
43
+ result = reducer(result, item);
44
+ }
45
+ return result;
46
+ });
47
+ }
48
+ map(f) {
49
+ const mappedChanges = this._changes.map((items) => items.map(f));
50
+ const mappedSnapshot = this._previousStep.value.map(f);
51
+ return new ReactiveLog(mappedChanges, mappedSnapshot);
52
+ }
53
+ filter(pred) {
54
+ const filteredChanges = this._changes.map((items) => items.filter(pred));
55
+ const filteredSnapshot = this._previousStep.value.filter(pred);
56
+ return new ReactiveLog(filteredChanges, filteredSnapshot);
57
+ }
58
+ toSet() {
59
+ const changes = this.changes.map((items) => {
60
+ let result = new ZSet();
61
+ for (const item of items) {
62
+ result = result.union(item);
63
+ }
64
+ return result;
65
+ });
66
+ let snapshot = new ZSet();
67
+ for (const item of this.previousSnapshot) {
68
+ snapshot = snapshot.union(item);
69
+ }
70
+ return new ReactiveSet(changes, snapshot);
71
+ }
72
+ }
73
+ //# sourceMappingURL=reactive-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-log.js","sourceRoot":"","sources":["../src/reactive-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,OAAO,WAAW;IACL,QAAQ,CAAyB;IACjC,aAAa,CAAyB;IACtC,aAAa,CAAyB;IACtC,OAAO,CAAwB;IAEhD,YAAY,OAA+B,EAAE,QAAkB;QAC7D,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,CAAI,OAAU,EAAE,OAA+B;QACjD,IAAI,aAAa,GAAG,OAAO,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC5C,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5D,IAAI,MAAM,GAAG,GAAG,CAAC;YACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAI,CAAc;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,WAAW,CAAI,aAAa,EAAE,cAAc,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,IAAuB;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,WAAW,CAAI,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACzC,IAAI,MAAM,GAAG,IAAI,IAAI,EAAK,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,IAAI,EAAK,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,WAAW,CAAI,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { Graph } from "derivation";
2
+ import { ReactiveMap } from "./reactive-map.js";
3
+ import { ZMap } from "./z-map.js";
4
+ export declare class ReactiveMapSource<K, V> extends ReactiveMap<K, V> {
5
+ private readonly input;
6
+ constructor(snapshot: ZMap<K, V>, graph: Graph);
7
+ add(k1: K, k2: V, weight?: number): void;
8
+ push(set: ZMap<K, V>): void;
9
+ }
10
+ //# sourceMappingURL=reactive-map-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-map-source.d.ts","sourceRoot":"","sources":["../src/reactive-map-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,qBAAa,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;gBAElC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;IAM9C,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,SAAI,GAAG,IAAI;IAInC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;CAG5B"}
@@ -0,0 +1,19 @@
1
+ import { Graph } from "derivation";
2
+ import { ZMapChangeInput } from "./z-map-change-input.js";
3
+ import { ReactiveMap } from "./reactive-map.js";
4
+ import { ZMap } from "./z-map.js";
5
+ export class ReactiveMapSource extends ReactiveMap {
6
+ input;
7
+ constructor(snapshot, graph) {
8
+ const input = new ZMapChangeInput(graph);
9
+ super(input, snapshot);
10
+ this.input = input;
11
+ }
12
+ add(k1, k2, weight = 1) {
13
+ this.input.add(k1, k2, weight);
14
+ }
15
+ push(set) {
16
+ this.input.push(set);
17
+ }
18
+ }
19
+ //# sourceMappingURL=reactive-map-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-map-source.js","sourceRoot":"","sources":["../src/reactive-map-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,iBAAwB,SAAQ,WAAiB;IAC3C,KAAK,CAAwB;IAE9C,YAAY,QAAoB,EAAE,KAAY;QAC5C,MAAM,KAAK,GAAG,IAAI,eAAe,CAAO,KAAK,CAAC,CAAC;QAC/C,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,EAAK,EAAE,EAAK,EAAE,MAAM,GAAG,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,GAAe;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import { ReactiveValue } from "derivation";
2
+ import { ZMap } from "./z-map.js";
3
+ import { ReactiveSet } from "./reactive-set.js";
4
+ import { Tuple } from "./tuple.js";
5
+ export declare class ReactiveMap<K, V> {
6
+ private readonly _materialized;
7
+ private readonly previousStep;
8
+ private readonly _changes;
9
+ constructor(changes: ReactiveValue<ZMap<K, V>>, snapshot?: ZMap<K, V>);
10
+ get previousSnapshot(): ZMap<K, V>;
11
+ get snapshot(): ZMap<K, V>;
12
+ get changes(): ReactiveValue<ZMap<K, V>>;
13
+ get materialized(): ReactiveValue<ZMap<K, V>>;
14
+ get previousMaterialized(): ReactiveValue<ZMap<K, V>>;
15
+ union(other: ReactiveMap<K, V>): ReactiveMap<K, V>;
16
+ join<V1>(other: ReactiveMap<K, V1>): ReactiveMap<K, Tuple<[V, V1]>>;
17
+ mapValues<V1>(func: (v: V) => V1): ReactiveMap<K, V1>;
18
+ flatten(): ReactiveSet<V>;
19
+ getConst(key: K): ReactiveSet<V>;
20
+ intersection(other: ReactiveMap<K, V>): ReactiveMap<K, V>;
21
+ difference(other: ReactiveMap<K, V>): ReactiveMap<K, V>;
22
+ filter(pred: (k: K, v: V) => boolean): ReactiveMap<K, V>;
23
+ }
24
+ //# sourceMappingURL=reactive-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-map.d.ts","sourceRoot":"","sources":["../src/reactive-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAEzC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAOrE,IAAI,gBAAgB,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAEjC;IAED,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAEzB;IAED,IAAI,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAEvC;IAED,IAAI,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAE5C;IAED,IAAI,oBAAoB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAEpD;IAED,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAOlD,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAcnE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;IAOrD,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC;IAOzB,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAczD,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAOvD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CAMzD"}
@@ -0,0 +1,59 @@
1
+ import { ReactiveValue } from "derivation";
2
+ import { ZMap } from "./z-map.js";
3
+ import { ReactiveSet } from "./reactive-set.js";
4
+ import { Tuple } from "./tuple.js";
5
+ export class ReactiveMap {
6
+ _materialized;
7
+ previousStep;
8
+ _changes;
9
+ constructor(changes, snapshot) {
10
+ snapshot = snapshot ?? new ZMap();
11
+ this._changes = changes;
12
+ this._materialized = changes.accumulate(snapshot, (acc, x) => acc.union(x));
13
+ this.previousStep = this._materialized.delay(snapshot);
14
+ }
15
+ get previousSnapshot() {
16
+ return this.previousStep.value;
17
+ }
18
+ get snapshot() {
19
+ return this._materialized.value;
20
+ }
21
+ get changes() {
22
+ return this._changes;
23
+ }
24
+ get materialized() {
25
+ return this._materialized;
26
+ }
27
+ get previousMaterialized() {
28
+ return this.previousStep;
29
+ }
30
+ union(other) {
31
+ return new ReactiveMap(this._changes.zip(other._changes, (x, y) => x.union(y)), this.previousSnapshot.union(other.previousSnapshot));
32
+ }
33
+ join(other) {
34
+ return new ReactiveMap(this.changes.zip3(this.previousMaterialized, other.changes, other.previousMaterialized, (tC, tM, oC, oM) => {
35
+ return tC.join(oM).union(tM.join(oC)).union(tC.join(oC));
36
+ }), this.previousSnapshot.join(other.previousSnapshot));
37
+ }
38
+ mapValues(func) {
39
+ return new ReactiveMap(this._changes.map((x) => x.mapValues(func)), this.previousSnapshot.mapValues(func));
40
+ }
41
+ flatten() {
42
+ return new ReactiveSet(this._changes.map((x) => x.flatten()), this.previousSnapshot.flatten());
43
+ }
44
+ getConst(key) {
45
+ return new ReactiveSet(this._changes.map((x) => x.get(key)), this.previousSnapshot.get(key));
46
+ }
47
+ intersection(other) {
48
+ return new ReactiveMap(this.changes.zip3(this.previousMaterialized, other.changes, other.previousMaterialized, (tC, tM, oC, oM) => {
49
+ return tC.intersection(oM).union(tM.intersection(oC)).union(tC.intersection(oC));
50
+ }), this.previousSnapshot.intersection(other.previousSnapshot));
51
+ }
52
+ difference(other) {
53
+ return new ReactiveMap(this._changes.zip(other._changes, (x, y) => x.difference(y)), this.previousSnapshot.difference(other.previousSnapshot));
54
+ }
55
+ filter(pred) {
56
+ return new ReactiveMap(this._changes.map((x) => x.filter(pred)), this.previousSnapshot.filter(pred));
57
+ }
58
+ }
59
+ //# sourceMappingURL=reactive-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-map.js","sourceRoot":"","sources":["../src/reactive-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Graph } from "derivation";
2
+ import { ReactiveSet } from "./reactive-set.js";
3
+ import { ZSet } from "./z-set.js";
4
+ export declare class ReactiveSetSource<K> extends ReactiveSet<K> {
5
+ private readonly input;
6
+ constructor(snapshot: ZSet<K>, graph: Graph);
7
+ add(k: K, weight?: number): void;
8
+ push(set: ZSet<K>): void;
9
+ }
10
+ //# sourceMappingURL=reactive-set-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-set-source.d.ts","sourceRoot":"","sources":["../src/reactive-set-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,qBAAa,iBAAiB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;IAM3C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,SAAI,GAAG,IAAI;IAI3B,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;CAGzB"}
@@ -0,0 +1,19 @@
1
+ import { Graph } from "derivation";
2
+ import { ZSetChangeInput } from "./z-set-change-input.js";
3
+ import { ReactiveSet } from "./reactive-set.js";
4
+ import { ZSet } from "./z-set.js";
5
+ export class ReactiveSetSource extends ReactiveSet {
6
+ input;
7
+ constructor(snapshot, graph) {
8
+ const input = new ZSetChangeInput(graph);
9
+ super(input, snapshot);
10
+ this.input = input;
11
+ }
12
+ add(k, weight = 1) {
13
+ this.input.add(k, weight);
14
+ }
15
+ push(set) {
16
+ this.input.push(set);
17
+ }
18
+ }
19
+ //# sourceMappingURL=reactive-set-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-set-source.js","sourceRoot":"","sources":["../src/reactive-set-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,iBAAqB,SAAQ,WAAc;IACrC,KAAK,CAAqB;IAE3C,YAAY,QAAiB,EAAE,KAAY;QACzC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAI,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,CAAI,EAAE,MAAM,GAAG,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,GAAY;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import { ReactiveValue } from "derivation";
2
+ import { ZSet } from "./z-set.js";
3
+ import { ReactiveMap } from "./reactive-map.js";
4
+ export declare class ReactiveSet<T> {
5
+ private readonly previousStep;
6
+ private readonly _materialized;
7
+ private readonly _changes;
8
+ constructor(changes: ReactiveValue<ZSet<T>>, snapshot?: ZSet<T>);
9
+ get snapshot(): ZSet<T>;
10
+ get previousSnapshot(): ZSet<T>;
11
+ get changes(): ReactiveValue<ZSet<T>>;
12
+ get materialized(): ReactiveValue<ZSet<T>>;
13
+ get previousMaterialized(): ReactiveValue<ZSet<T>>;
14
+ groupBy<K>(func: (t: T) => K): ReactiveMap<K, T>;
15
+ join<TOther, TKey, TResult>(other: ReactiveSet<TOther>, thisKeySelector: (t: T) => TKey, otherKeySelector: (o: TOther) => TKey, resultSelector: (t: T, o: TOther) => TResult): ReactiveSet<TResult>;
16
+ union(other: ReactiveSet<T>): ReactiveSet<T>;
17
+ intersection(other: ReactiveSet<T>): ReactiveSet<T>;
18
+ difference(other: ReactiveSet<T>): ReactiveSet<T>;
19
+ filter(pred: (t: T) => boolean): ReactiveSet<T>;
20
+ }
21
+ //# sourceMappingURL=reactive-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-set.d.ts","sourceRoot":"","sources":["../src/reactive-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;gBAEtC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAS/D,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAEtB;IAED,IAAI,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,CAE9B;IAED,IAAI,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAEpC;IAED,IAAI,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAEzC;IAED,IAAI,oBAAoB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAEjD;IAED,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAQhD,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EACxB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAC/B,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAC3C,WAAW,CAAC,OAAO,CAAC;IAOvB,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAO5C,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAcnD,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAOjD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;CAMhD"}
@@ -0,0 +1,58 @@
1
+ import { ReactiveValue } from "derivation";
2
+ import { ZSet } from "./z-set.js";
3
+ import { ZMap } from "./z-map.js";
4
+ import { ReactiveMap } from "./reactive-map.js";
5
+ export class ReactiveSet {
6
+ previousStep;
7
+ _materialized;
8
+ _changes;
9
+ constructor(changes, snapshot) {
10
+ snapshot = snapshot ?? new ZSet();
11
+ this._changes = changes;
12
+ this._materialized = changes.accumulate(snapshot, (acc, x) => {
13
+ return acc.union(x);
14
+ });
15
+ this.previousStep = this.materialized.delay(snapshot);
16
+ }
17
+ get snapshot() {
18
+ return this.materialized.value;
19
+ }
20
+ get previousSnapshot() {
21
+ return this.previousStep.value;
22
+ }
23
+ get changes() {
24
+ return this._changes;
25
+ }
26
+ get materialized() {
27
+ return this._materialized;
28
+ }
29
+ get previousMaterialized() {
30
+ return this.previousStep;
31
+ }
32
+ groupBy(func) {
33
+ const snapshot = this.previousSnapshot.groupBy(func);
34
+ const changes = this._changes.map((x) => x.groupBy(func));
35
+ return new ReactiveMap(changes, snapshot);
36
+ }
37
+ join(other, thisKeySelector, otherKeySelector, resultSelector) {
38
+ return this.groupBy(thisKeySelector)
39
+ .join(other.groupBy(otherKeySelector))
40
+ .mapValues((row) => resultSelector(row.get(0), row.get(1)))
41
+ .flatten();
42
+ }
43
+ union(other) {
44
+ return new ReactiveSet(this._changes.zip(other._changes, (x, y) => x.union(y)), this.previousSnapshot.union(other.previousSnapshot));
45
+ }
46
+ intersection(other) {
47
+ return new ReactiveSet(this.changes.zip3(this.previousMaterialized, other.changes, other.previousMaterialized, (tC, tM, oC, oM) => {
48
+ return tC.intersection(oM).union(tM.intersection(oC)).union(tC.intersection(oC));
49
+ }), this.previousSnapshot.intersection(other.previousSnapshot));
50
+ }
51
+ difference(other) {
52
+ return new ReactiveSet(this._changes.zip(other._changes, (x, y) => x.difference(y)), this.previousSnapshot.difference(other.previousSnapshot));
53
+ }
54
+ filter(pred) {
55
+ return new ReactiveSet(this._changes.map((x) => x.filter(pred)), this.previousSnapshot.filter(pred));
56
+ }
57
+ }
58
+ //# sourceMappingURL=reactive-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-set.js","sourceRoot":"","sources":["../src/reactive-set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Hasher, Eq, HashMap } from "@rimbu/core";
2
+ /**
3
+ * Default hasher for use with ZSet and ZMap
4
+ * Uses immutable.js's hash() function for consistent value-based hashing
5
+ */
6
+ export declare const defaultHasher: Hasher<unknown>;
7
+ /**
8
+ * Default equality for use with ZSet and ZMap
9
+ * Uses immutable.js's is() function for consistent value-based equality
10
+ */
11
+ export declare const defaultEq: Eq<unknown>;
12
+ /**
13
+ * Create a HashMap context using immutable.js's hash and equality
14
+ */
15
+ export declare function createHashMapContext<K>(): HashMap.Context<K>;
16
+ /**
17
+ * Create an empty HashMap with immutable-based hash/equality
18
+ */
19
+ export declare function emptyHashMap<K, V>(): HashMap<K, V>;
20
+ /**
21
+ * Create a HashMap from entries with immutable-based hash/equality
22
+ */
23
+ export declare function hashMapFrom<K, V>(entries: Iterable<readonly [K, V]>): HashMap<K, V>;
24
+ /**
25
+ * Create a HashMap builder with immutable-based hash/equality
26
+ */
27
+ export declare function hashMapBuilder<K, V>(): HashMap.Builder<K, V>;
28
+ //# sourceMappingURL=rimbu-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rimbu-utils.d.ts","sourceRoot":"","sources":["../src/rimbu-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAC;AAGxD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,CAGzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,OAAO,CACxB,CAAC;AAEX;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,wBAKrC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAGlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAGf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAG5D"}
@@ -0,0 +1,46 @@
1
+ import { Hasher, Eq, List, HashMap } from "@rimbu/core";
2
+ import { hash, is } from "immutable";
3
+ /**
4
+ * Default hasher for use with ZSet and ZMap
5
+ * Uses immutable.js's hash() function for consistent value-based hashing
6
+ */
7
+ export const defaultHasher = {
8
+ isValid: (_v) => true,
9
+ hash: (value) => hash(value),
10
+ };
11
+ /**
12
+ * Default equality for use with ZSet and ZMap
13
+ * Uses immutable.js's is() function for consistent value-based equality
14
+ */
15
+ export const defaultEq = (a, b) => is(a, b);
16
+ /**
17
+ * Create a HashMap context using immutable.js's hash and equality
18
+ */
19
+ export function createHashMapContext() {
20
+ return HashMap.createContext({
21
+ hasher: defaultHasher,
22
+ eq: defaultEq,
23
+ });
24
+ }
25
+ /**
26
+ * Create an empty HashMap with immutable-based hash/equality
27
+ */
28
+ export function emptyHashMap() {
29
+ const ctx = createHashMapContext();
30
+ return ctx.empty();
31
+ }
32
+ /**
33
+ * Create a HashMap from entries with immutable-based hash/equality
34
+ */
35
+ export function hashMapFrom(entries) {
36
+ const ctx = createHashMapContext();
37
+ return ctx.from(entries);
38
+ }
39
+ /**
40
+ * Create a HashMap builder with immutable-based hash/equality
41
+ */
42
+ export function hashMapBuilder() {
43
+ const ctx = createHashMapContext();
44
+ return ctx.builder();
45
+ }
46
+ //# sourceMappingURL=rimbu-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rimbu-utils.js","sourceRoot":"","sources":["../src/rimbu-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,OAAO,EAAE,CAAC,EAAE,EAAiB,EAAE,CAAC,IAAI;IACpC,IAAI,EAAE,CAAC,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;CAC9C,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAgB,CAAC,CAAU,EAAE,CAAU,EAAW,EAAE,CACxE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,aAAa,CAAI;QAC9B,MAAM,EAAE,aAA0B;QAClC,EAAE,EAAE,SAAkB;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,oBAAoB,EAAK,CAAC;IACtC,OAAO,GAAG,CAAC,KAAK,EAAQ,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,OAAkC;IAElC,MAAM,GAAG,GAAG,oBAAoB,EAAK,CAAC;IACtC,OAAO,GAAG,CAAC,IAAI,CAAO,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,oBAAoB,EAAK,CAAC;IACtC,OAAO,GAAG,CAAC,OAAO,EAAQ,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reactive-log.test.d.ts.map