reactronic 0.23.105 → 0.23.106

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.
@@ -1,6 +1,6 @@
1
1
  export { all, pause } from './util/Utils.js';
2
- export { Collection } from './util/Collection.js';
3
- export type { Item, CollectionReader } from './util/Collection.js';
2
+ export { MergeList } from './util/MergeList.js';
3
+ export type { MergeItem as Item, MergeListReader } from './util/MergeList.js';
4
4
  export { SealedArray } from './util/SealedArray.js';
5
5
  export { SealedMap } from './util/SealedMap.js';
6
6
  export { SealedSet } from './util/SealedSet.js';
@@ -1,5 +1,5 @@
1
1
  export { all, pause } from './util/Utils.js';
2
- export { Collection } from './util/Collection.js';
2
+ export { MergeList } from './util/MergeList.js';
3
3
  export { SealedArray } from './util/SealedArray.js';
4
4
  export { SealedMap } from './util/SealedMap.js';
5
5
  export { SealedSet } from './util/SealedSet.js';
@@ -0,0 +1,26 @@
1
+ import { MergeList, MergeItem, MergeListReader } from '../util/MergeList.js';
2
+ import { ObservableObject } from './Mvcc.js';
3
+ export declare abstract class ObservableMergeList<T> extends ObservableObject implements MergeListReader<T> {
4
+ protected abstract impl: MergeList<T>;
5
+ get isStrict(): boolean;
6
+ get count(): number;
7
+ get addedCount(): number;
8
+ get removedCount(): number;
9
+ get isMergeInProgress(): boolean;
10
+ lookup(key: string): MergeItem<T> | undefined;
11
+ claim(key: string): MergeItem<T> | undefined;
12
+ add(instance: T): MergeItem<T>;
13
+ remove(item: MergeItem<T>): void;
14
+ move(item: MergeItem<T>, after: MergeItem<T>): void;
15
+ beginMerge(): void;
16
+ endMerge(error?: unknown): void;
17
+ resetAddedAndRemovedLists(): void;
18
+ lastClaimedItem(): MergeItem<T> | undefined;
19
+ items(): Generator<MergeItem<T>>;
20
+ addedItems(reset?: boolean): Generator<MergeItem<T>>;
21
+ removedItems(reset?: boolean): Generator<MergeItem<T>>;
22
+ isAdded(item: MergeItem<T>): boolean;
23
+ isMoved(item: MergeItem<T>): boolean;
24
+ isRemoved(item: MergeItem<T>): boolean;
25
+ isCurrent(item: MergeItem<T>): boolean;
26
+ }
@@ -1,5 +1,5 @@
1
1
  import { ObservableObject } from './Mvcc.js';
2
- export class ObservableCollection extends ObservableObject {
2
+ export class ObservableMergeList extends ObservableObject {
3
3
  get isStrict() { return this.impl.isStrict; }
4
4
  get count() { return this.impl.count; }
5
5
  get addedCount() { return this.impl.addedCount; }
@@ -0,0 +1,67 @@
1
+ export type GetMergeItemKey<T = unknown> = (item: T) => string | undefined;
2
+ export interface MergeListReader<T> {
3
+ readonly isStrict: boolean;
4
+ readonly count: number;
5
+ readonly addedCount: number;
6
+ readonly removedCount: number;
7
+ readonly isMergeInProgress: boolean;
8
+ lookup(key: string): MergeItem<T> | undefined;
9
+ claim(key: string): MergeItem<T> | undefined;
10
+ add(instance: T): MergeItem<T>;
11
+ remove(item: MergeItem<T>): void;
12
+ move(item: MergeItem<T>, after: MergeItem<T>): void;
13
+ beginMerge(): void;
14
+ endMerge(error?: unknown): void;
15
+ resetAddedAndRemovedLists(): void;
16
+ lastClaimedItem(): MergeItem<T> | undefined;
17
+ items(): Generator<MergeItem<T>>;
18
+ addedItems(reset?: boolean): Generator<MergeItem<T>>;
19
+ removedItems(reset?: boolean): Generator<MergeItem<T>>;
20
+ isAdded(item: MergeItem<T>): boolean;
21
+ isMoved(item: MergeItem<T>): boolean;
22
+ isRemoved(item: MergeItem<T>): boolean;
23
+ isCurrent(item: MergeItem<T>): boolean;
24
+ }
25
+ export interface MergeItem<T> {
26
+ readonly instance: T;
27
+ readonly prev?: MergeItem<T>;
28
+ aux?: MergeItem<T>;
29
+ }
30
+ export declare class MergeList<T> implements MergeListReader<T> {
31
+ readonly getKey: GetMergeItemKey<T>;
32
+ private strict;
33
+ private map;
34
+ private tag;
35
+ private current;
36
+ private added;
37
+ private removed;
38
+ private lastNotFoundKey;
39
+ private strictNextItem?;
40
+ constructor(getKey: GetMergeItemKey<T>, strict?: boolean);
41
+ get isStrict(): boolean;
42
+ set isStrict(value: boolean);
43
+ get count(): number;
44
+ get addedCount(): number;
45
+ get removedCount(): number;
46
+ get isMergeInProgress(): boolean;
47
+ lookup(key: string | undefined): MergeItem<T> | undefined;
48
+ claim(key: string, resolution?: {
49
+ isDuplicate: boolean;
50
+ }, error?: string): MergeItem<T> | undefined;
51
+ add(instance: T): MergeItem<T>;
52
+ remove(item: MergeItem<T>): void;
53
+ move(item: MergeItem<T>, after: MergeItem<T>): void;
54
+ beginMerge(): void;
55
+ endMerge(error?: unknown): void;
56
+ resetAddedAndRemovedLists(): void;
57
+ lastClaimedItem(): MergeItem<T> | undefined;
58
+ items(): Generator<MergeItem<T>>;
59
+ addedItems(reset?: boolean): Generator<MergeItem<T>>;
60
+ removedItems(reset?: boolean): Generator<MergeItem<T>>;
61
+ isAdded(item: MergeItem<T>): boolean;
62
+ isMoved(item: MergeItem<T>): boolean;
63
+ isRemoved(item: MergeItem<T>): boolean;
64
+ isCurrent(item: MergeItem<T>): boolean;
65
+ markAsMoved(item: MergeItem<T>): void;
66
+ static createItem<T>(instance: T): MergeItem<T>;
67
+ }
@@ -1,12 +1,12 @@
1
- export class Collection {
1
+ export class MergeList {
2
2
  constructor(getKey, strict = false) {
3
3
  this.getKey = getKey;
4
4
  this.strict = strict;
5
5
  this.map = new Map();
6
6
  this.tag = ~0;
7
- this.current = new ItemChain();
8
- this.added = new ItemChain();
9
- this.removed = new ItemChain();
7
+ this.current = new MergeItemChain();
8
+ this.added = new MergeItemChain();
9
+ this.removed = new MergeItemChain();
10
10
  this.lastNotFoundKey = undefined;
11
11
  this.strictNextItem = undefined;
12
12
  }
@@ -79,7 +79,7 @@ export class Collection {
79
79
  tag = ~this.tag + 1;
80
80
  this.tag = ~tag;
81
81
  }
82
- const item = new ItemImpl(instance, tag);
82
+ const item = new MergeItemImpl(instance, tag);
83
83
  this.map.set(key, item);
84
84
  this.lastNotFoundKey = undefined;
85
85
  this.strictNextItem = undefined;
@@ -203,10 +203,10 @@ export class Collection {
203
203
  t.status = t.tag;
204
204
  }
205
205
  static createItem(instance) {
206
- return new ItemImpl(instance, 0);
206
+ return new MergeItemImpl(instance, 0);
207
207
  }
208
208
  }
209
- class ItemImpl {
209
+ class MergeItemImpl {
210
210
  constructor(instance, tag) {
211
211
  this.instance = instance;
212
212
  this.tag = tag;
@@ -216,7 +216,7 @@ class ItemImpl {
216
216
  this.aux = undefined;
217
217
  }
218
218
  }
219
- class ItemChain {
219
+ class MergeItemChain {
220
220
  constructor() {
221
221
  this.count = 0;
222
222
  this.first = undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reactronic",
3
- "version": "0.23.105",
3
+ "version": "0.23.106",
4
4
  "description": "Reactronic - Transactional Reactive State Management",
5
5
  "publisher": "Nezaboodka Software",
6
6
  "license": "Apache-2.0",
@@ -1,26 +0,0 @@
1
- import { Collection, Item, CollectionReader } from '../util/Collection.js';
2
- import { ObservableObject } from './Mvcc.js';
3
- export declare abstract class ObservableCollection<T> extends ObservableObject implements CollectionReader<T> {
4
- protected abstract impl: Collection<T>;
5
- get isStrict(): boolean;
6
- get count(): number;
7
- get addedCount(): number;
8
- get removedCount(): number;
9
- get isMergeInProgress(): boolean;
10
- lookup(key: string): Item<T> | undefined;
11
- claim(key: string): Item<T> | undefined;
12
- add(instance: T): Item<T>;
13
- remove(item: Item<T>): void;
14
- move(item: Item<T>, after: Item<T>): void;
15
- beginMerge(): void;
16
- endMerge(error?: unknown): void;
17
- resetAddedAndRemovedLists(): void;
18
- lastClaimedItem(): Item<T> | undefined;
19
- items(): Generator<Item<T>>;
20
- addedItems(reset?: boolean): Generator<Item<T>>;
21
- removedItems(reset?: boolean): Generator<Item<T>>;
22
- isAdded(item: Item<T>): boolean;
23
- isMoved(item: Item<T>): boolean;
24
- isRemoved(item: Item<T>): boolean;
25
- isCurrent(item: Item<T>): boolean;
26
- }
@@ -1,67 +0,0 @@
1
- export type GetItemKey<T = unknown> = (item: T) => string | undefined;
2
- export interface CollectionReader<T> {
3
- readonly isStrict: boolean;
4
- readonly count: number;
5
- readonly addedCount: number;
6
- readonly removedCount: number;
7
- readonly isMergeInProgress: boolean;
8
- lookup(key: string): Item<T> | undefined;
9
- claim(key: string): Item<T> | undefined;
10
- add(instance: T): Item<T>;
11
- remove(item: Item<T>): void;
12
- move(item: Item<T>, after: Item<T>): void;
13
- beginMerge(): void;
14
- endMerge(error?: unknown): void;
15
- resetAddedAndRemovedLists(): void;
16
- lastClaimedItem(): Item<T> | undefined;
17
- items(): Generator<Item<T>>;
18
- addedItems(reset?: boolean): Generator<Item<T>>;
19
- removedItems(reset?: boolean): Generator<Item<T>>;
20
- isAdded(item: Item<T>): boolean;
21
- isMoved(item: Item<T>): boolean;
22
- isRemoved(item: Item<T>): boolean;
23
- isCurrent(item: Item<T>): boolean;
24
- }
25
- export interface Item<T> {
26
- readonly instance: T;
27
- readonly prev?: Item<T>;
28
- aux?: Item<T>;
29
- }
30
- export declare class Collection<T> implements CollectionReader<T> {
31
- readonly getKey: GetItemKey<T>;
32
- private strict;
33
- private map;
34
- private tag;
35
- private current;
36
- private added;
37
- private removed;
38
- private lastNotFoundKey;
39
- private strictNextItem?;
40
- constructor(getKey: GetItemKey<T>, strict?: boolean);
41
- get isStrict(): boolean;
42
- set isStrict(value: boolean);
43
- get count(): number;
44
- get addedCount(): number;
45
- get removedCount(): number;
46
- get isMergeInProgress(): boolean;
47
- lookup(key: string | undefined): Item<T> | undefined;
48
- claim(key: string, resolution?: {
49
- isDuplicate: boolean;
50
- }, error?: string): Item<T> | undefined;
51
- add(instance: T): Item<T>;
52
- remove(item: Item<T>): void;
53
- move(item: Item<T>, after: Item<T>): void;
54
- beginMerge(): void;
55
- endMerge(error?: unknown): void;
56
- resetAddedAndRemovedLists(): void;
57
- lastClaimedItem(): Item<T> | undefined;
58
- items(): Generator<Item<T>>;
59
- addedItems(reset?: boolean): Generator<Item<T>>;
60
- removedItems(reset?: boolean): Generator<Item<T>>;
61
- isAdded(item: Item<T>): boolean;
62
- isMoved(item: Item<T>): boolean;
63
- isRemoved(item: Item<T>): boolean;
64
- isCurrent(item: Item<T>): boolean;
65
- markAsMoved(item: Item<T>): void;
66
- static createItem<T>(instance: T): Item<T>;
67
- }