reactronic 0.23.105 → 0.23.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dist/source/api.d.ts +2 -2
- package/build/dist/source/api.js +1 -1
- package/build/dist/source/impl/MvccMergeList.d.ts +26 -0
- package/build/dist/source/impl/{MvccCollection.js → MvccMergeList.js} +1 -1
- package/build/dist/source/util/MergeList.d.ts +67 -0
- package/build/dist/source/util/{Collection.js → MergeList.js} +8 -8
- package/package.json +1 -1
- package/build/dist/source/impl/MvccCollection.d.ts +0 -26
- package/build/dist/source/util/Collection.d.ts +0 -67
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { all, pause } from './util/Utils.js';
|
|
2
|
-
export {
|
|
3
|
-
export type {
|
|
2
|
+
export { MergeList } from './util/MergeList.js';
|
|
3
|
+
export type { MergeItem, 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';
|
package/build/dist/source/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { all, pause } from './util/Utils.js';
|
|
2
|
-
export {
|
|
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
|
|
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
|
|
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
|
|
8
|
-
this.added = new
|
|
9
|
-
this.removed = new
|
|
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
|
|
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
|
|
206
|
+
return new MergeItemImpl(instance, 0);
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
-
class
|
|
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
|
|
219
|
+
class MergeItemChain {
|
|
220
220
|
constructor() {
|
|
221
221
|
this.count = 0;
|
|
222
222
|
this.first = undefined;
|
package/package.json
CHANGED
|
@@ -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
|
-
}
|