@verdant-web/store 3.0.0-next.0 → 3.0.0
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/dist/bundle/index.js +1 -1
- package/dist/bundle/index.js.map +4 -4
- package/dist/cjs/DocumentManager.d.ts +5 -6
- package/dist/cjs/DocumentManager.js +2 -2
- package/dist/cjs/DocumentManager.js.map +1 -1
- package/dist/cjs/client/Client.d.ts +3 -2
- package/dist/cjs/client/Client.js +1 -1
- package/dist/cjs/client/Client.js.map +1 -1
- package/dist/cjs/entities/Entity.d.ts +106 -171
- package/dist/cjs/entities/Entity.js +558 -383
- package/dist/cjs/entities/Entity.js.map +1 -1
- package/dist/cjs/entities/Entity.test.js.map +1 -0
- package/dist/cjs/entities/{2/EntityCache.d.ts → EntityCache.d.ts} +1 -1
- package/dist/cjs/entities/{2/EntityCache.js → EntityCache.js} +1 -1
- package/dist/cjs/entities/EntityCache.js.map +1 -0
- package/dist/{esm/entities/2 → cjs/entities}/EntityMetadata.d.ts +1 -1
- package/dist/cjs/entities/EntityMetadata.js.map +1 -0
- package/dist/cjs/entities/EntityStore.d.ts +63 -68
- package/dist/cjs/entities/EntityStore.js +296 -424
- package/dist/cjs/entities/EntityStore.js.map +1 -1
- package/dist/{esm/entities/2 → cjs/entities}/OperationBatcher.d.ts +2 -2
- package/dist/cjs/entities/OperationBatcher.js.map +1 -0
- package/dist/cjs/entities/{2/types.js.map → types.js.map} +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/queries/BaseQuery.js +1 -1
- package/dist/cjs/queries/BaseQuery.js.map +1 -1
- package/dist/cjs/queries/CollectionQueries.d.ts +4 -2
- package/dist/cjs/queries/utils.js +1 -1
- package/dist/cjs/queries/utils.js.map +1 -1
- package/dist/esm/DocumentManager.d.ts +5 -6
- package/dist/esm/DocumentManager.js +2 -2
- package/dist/esm/DocumentManager.js.map +1 -1
- package/dist/esm/client/Client.d.ts +3 -2
- package/dist/esm/client/Client.js +1 -1
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/entities/Entity.d.ts +106 -171
- package/dist/esm/entities/Entity.js +559 -383
- package/dist/esm/entities/Entity.js.map +1 -1
- package/dist/esm/entities/Entity.test.js.map +1 -0
- package/dist/esm/entities/{2/EntityCache.d.ts → EntityCache.d.ts} +1 -1
- package/dist/esm/entities/{2/EntityCache.js → EntityCache.js} +1 -1
- package/dist/esm/entities/EntityCache.js.map +1 -0
- package/dist/{cjs/entities/2 → esm/entities}/EntityMetadata.d.ts +1 -1
- package/dist/esm/entities/EntityMetadata.js.map +1 -0
- package/dist/esm/entities/EntityStore.d.ts +63 -68
- package/dist/esm/entities/EntityStore.js +297 -425
- package/dist/esm/entities/EntityStore.js.map +1 -1
- package/dist/{cjs/entities/2 → esm/entities}/OperationBatcher.d.ts +2 -2
- package/dist/esm/entities/OperationBatcher.js.map +1 -0
- package/dist/esm/entities/{2/types.js.map → types.js.map} +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/queries/BaseQuery.js +1 -1
- package/dist/esm/queries/BaseQuery.js.map +1 -1
- package/dist/esm/queries/CollectionQueries.d.ts +4 -2
- package/dist/esm/queries/utils.js +1 -1
- package/dist/esm/queries/utils.js.map +1 -1
- package/dist/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/DocumentManager.ts +7 -3
- package/src/__tests__/batching.test.ts +1 -1
- package/src/client/Client.ts +1 -1
- package/src/entities/{2/Entity.test.ts → Entity.test.ts} +2 -2
- package/src/entities/{2/Entity.ts → Entity.ts} +4 -4
- package/src/entities/{2/EntityCache.ts → EntityCache.ts} +1 -1
- package/src/entities/{2/EntityMetadata.ts → EntityMetadata.ts} +1 -1
- package/src/entities/{2/EntityStore.ts → EntityStore.ts} +12 -8
- package/src/entities/{2/OperationBatcher.ts → OperationBatcher.ts} +2 -2
- package/src/index.ts +2 -2
- package/src/queries/BaseQuery.ts +1 -1
- package/src/queries/CollectionQueries.ts +2 -2
- package/src/queries/utils.ts +1 -1
- package/dist/cjs/entities/2/Entity.d.ts +0 -148
- package/dist/cjs/entities/2/Entity.js +0 -711
- package/dist/cjs/entities/2/Entity.js.map +0 -1
- package/dist/cjs/entities/2/Entity.test.js.map +0 -1
- package/dist/cjs/entities/2/EntityCache.js.map +0 -1
- package/dist/cjs/entities/2/EntityMetadata.js.map +0 -1
- package/dist/cjs/entities/2/EntityStore.d.ts +0 -78
- package/dist/cjs/entities/2/EntityStore.js +0 -352
- package/dist/cjs/entities/2/EntityStore.js.map +0 -1
- package/dist/cjs/entities/2/OperationBatcher.js.map +0 -1
- package/dist/cjs/entities/DocumentFamiliyCache.d.ts +0 -96
- package/dist/cjs/entities/DocumentFamiliyCache.js +0 -287
- package/dist/cjs/entities/DocumentFamiliyCache.js.map +0 -1
- package/dist/cjs/entities/FakeWeakRef.d.ts +0 -11
- package/dist/cjs/entities/FakeWeakRef.js +0 -19
- package/dist/cjs/entities/FakeWeakRef.js.map +0 -1
- package/dist/cjs/indexes.d.ts +0 -3
- package/dist/cjs/indexes.js +0 -20
- package/dist/cjs/indexes.js.map +0 -1
- package/dist/esm/entities/2/Entity.d.ts +0 -148
- package/dist/esm/entities/2/Entity.js +0 -707
- package/dist/esm/entities/2/Entity.js.map +0 -1
- package/dist/esm/entities/2/Entity.test.js.map +0 -1
- package/dist/esm/entities/2/EntityCache.js.map +0 -1
- package/dist/esm/entities/2/EntityMetadata.js.map +0 -1
- package/dist/esm/entities/2/EntityStore.d.ts +0 -78
- package/dist/esm/entities/2/EntityStore.js +0 -348
- package/dist/esm/entities/2/EntityStore.js.map +0 -1
- package/dist/esm/entities/2/OperationBatcher.js.map +0 -1
- package/dist/esm/entities/DocumentFamiliyCache.d.ts +0 -96
- package/dist/esm/entities/DocumentFamiliyCache.js +0 -283
- package/dist/esm/entities/DocumentFamiliyCache.js.map +0 -1
- package/dist/esm/entities/FakeWeakRef.d.ts +0 -11
- package/dist/esm/entities/FakeWeakRef.js +0 -15
- package/dist/esm/entities/FakeWeakRef.js.map +0 -1
- package/dist/esm/indexes.d.ts +0 -3
- package/dist/esm/indexes.js +0 -15
- package/dist/esm/indexes.js.map +0 -1
- package/src/entities/2/NOTES.md +0 -22
- package/src/entities/design.tldr +0 -808
- /package/dist/cjs/entities/{2/Entity.test.d.ts → Entity.test.d.ts} +0 -0
- /package/dist/cjs/entities/{2/Entity.test.js → Entity.test.js} +0 -0
- /package/dist/cjs/entities/{2/EntityMetadata.js → EntityMetadata.js} +0 -0
- /package/dist/cjs/entities/{2/OperationBatcher.js → OperationBatcher.js} +0 -0
- /package/dist/cjs/entities/{2/types.d.ts → types.d.ts} +0 -0
- /package/dist/cjs/entities/{2/types.js → types.js} +0 -0
- /package/dist/esm/entities/{2/Entity.test.d.ts → Entity.test.d.ts} +0 -0
- /package/dist/esm/entities/{2/Entity.test.js → Entity.test.js} +0 -0
- /package/dist/esm/entities/{2/EntityMetadata.js → EntityMetadata.js} +0 -0
- /package/dist/esm/entities/{2/OperationBatcher.js → OperationBatcher.js} +0 -0
- /package/dist/esm/entities/{2/types.d.ts → types.d.ts} +0 -0
- /package/dist/esm/entities/{2/types.js → types.js} +0 -0
- /package/src/entities/{2/types.ts → types.ts} +0 -0
|
@@ -1,127 +1,101 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export interface
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
fieldKey?: string | number;
|
|
19
|
-
}): Entity;
|
|
20
|
-
hasOid(oid: ObjectIdentifier): boolean;
|
|
21
|
-
weakRef<T extends object>(value: T): WeakRef<T>;
|
|
22
|
-
}
|
|
23
|
-
export interface StoreTools {
|
|
24
|
-
addLocalOperations(operations: Operation[]): void;
|
|
1
|
+
import { EntityValidationProblem, EventSubscriber, ObjectIdentifier, PatchCreator, StorageFieldSchema } from '@verdant-web/common';
|
|
2
|
+
import { Context } from '../context.js';
|
|
3
|
+
import { FileManager } from '../files/FileManager.js';
|
|
4
|
+
import { EntityCache } from './EntityCache.js';
|
|
5
|
+
import { EntityFamilyMetadata, EntityMetadataView } from './EntityMetadata.js';
|
|
6
|
+
import { BaseEntityValue, DataFromInit, DeepPartial, EntityChange, EntityEvents, ListEntity, ListItemInit, ListItemValue, ObjectEntity } from './types.js';
|
|
7
|
+
import { EntityStoreEvents } from './EntityStore.js';
|
|
8
|
+
export interface EntityInit {
|
|
9
|
+
oid: ObjectIdentifier;
|
|
10
|
+
schema: StorageFieldSchema;
|
|
11
|
+
entityFamily?: EntityCache;
|
|
12
|
+
metadataFamily: EntityFamilyMetadata;
|
|
13
|
+
parent?: Entity;
|
|
14
|
+
ctx: Context;
|
|
15
|
+
files: FileManager;
|
|
16
|
+
readonlyKeys?: string[];
|
|
17
|
+
fieldPath?: (string | number)[];
|
|
25
18
|
patchCreator: PatchCreator;
|
|
26
|
-
|
|
27
|
-
getFile: (id: string) => EntityFile;
|
|
28
|
-
time: TimestampProvider;
|
|
29
|
-
now: string;
|
|
30
|
-
}
|
|
31
|
-
export type AccessibleEntityProperty<T> = T extends Array<any> ? number : T extends object ? keyof T : never;
|
|
32
|
-
type DataFromInit<Init> = Init extends {
|
|
33
|
-
[key: string]: any;
|
|
34
|
-
} ? {
|
|
35
|
-
[Key in keyof Init]: Init[Key];
|
|
36
|
-
} : Init extends Array<any> ? Init : any;
|
|
37
|
-
export type EntityShape<E extends Entity<any, any>> = E extends Entity<infer Value, any> ? Value : never;
|
|
38
|
-
type DeletableKeys<T> = keyof {
|
|
39
|
-
[Key in keyof T as IfNullableThen<T[Key], Key>]: Key;
|
|
40
|
-
};
|
|
41
|
-
type IfNullableThen<T, Out> = undefined extends T ? Out : null extends T ? Out : never;
|
|
42
|
-
export declare function refreshEntity(entity: Entity<any, any>, info: EntityChangeInfo): void;
|
|
43
|
-
export interface EntityChangeInfo {
|
|
44
|
-
isLocal?: boolean;
|
|
19
|
+
events: EntityStoreEvents;
|
|
45
20
|
}
|
|
46
|
-
|
|
47
|
-
change: (info: EntityChangeInfo) => void;
|
|
48
|
-
changeDeep: (target: Entity<any, any>, info: EntityChangeInfo) => void;
|
|
49
|
-
delete: (info: EntityChangeInfo) => void;
|
|
50
|
-
restore: (info: EntityChangeInfo) => void;
|
|
51
|
-
};
|
|
52
|
-
type BaseEntityValue = {
|
|
53
|
-
[Key: string]: any;
|
|
54
|
-
} | any[];
|
|
55
|
-
export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any, Snapshot extends any = DataFromInit<Init>> implements ObjectEntity<Init, KeyValue, Snapshot>, ListEntity<Init, KeyValue, Snapshot> {
|
|
56
|
-
protected _current: any | null;
|
|
21
|
+
export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any, Snapshot extends any = DataFromInit<Init>> extends EventSubscriber<EntityEvents> implements ObjectEntity<Init, KeyValue, Snapshot>, ListEntity<Init, KeyValue, Snapshot> {
|
|
57
22
|
readonly oid: ObjectIdentifier;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
private
|
|
67
|
-
private
|
|
23
|
+
private readonlyKeys;
|
|
24
|
+
private fieldPath;
|
|
25
|
+
private entityFamily;
|
|
26
|
+
private metadataFamily;
|
|
27
|
+
private schema;
|
|
28
|
+
private parent;
|
|
29
|
+
private ctx;
|
|
30
|
+
private files;
|
|
31
|
+
private patchCreator;
|
|
32
|
+
private events;
|
|
33
|
+
private _viewData;
|
|
34
|
+
private validationError;
|
|
68
35
|
private cachedDeepUpdatedAt;
|
|
69
|
-
private
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
36
|
+
private wasDeletedLastChange;
|
|
37
|
+
private cachedView;
|
|
38
|
+
constructor({ oid, schema, entityFamily: childCache, parent, ctx, metadataFamily, readonlyKeys, files, patchCreator, events, }: EntityInit);
|
|
39
|
+
private onAdd;
|
|
40
|
+
private onReplace;
|
|
41
|
+
private onResetAll;
|
|
42
|
+
private get metadata();
|
|
43
|
+
/**
|
|
44
|
+
* The view of this Entity, not including nested
|
|
45
|
+
* entities (that's the snapshot - see #getSnapshot())
|
|
46
|
+
*
|
|
47
|
+
* Nested entities are represented by refs.
|
|
48
|
+
*/
|
|
49
|
+
private get viewData();
|
|
50
|
+
/** convenience getter for viewData.view */
|
|
51
|
+
private get rawView();
|
|
52
|
+
/**
|
|
53
|
+
* An Entity's View includes the rendering of its underlying data,
|
|
54
|
+
* connecting of children where refs were, and validation
|
|
55
|
+
* and pruning according to schema.
|
|
56
|
+
*/
|
|
57
|
+
private get view();
|
|
58
|
+
private childIsNull;
|
|
59
|
+
get uid(): string;
|
|
73
60
|
get deleted(): boolean;
|
|
74
|
-
|
|
61
|
+
get invalid(): boolean;
|
|
75
62
|
get isList(): any;
|
|
76
|
-
get updatedAt(): number
|
|
77
|
-
get deepUpdatedAt(): number
|
|
78
|
-
get uid(): string;
|
|
79
|
-
constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, readonlyKeys, fieldPath, }: {
|
|
80
|
-
oid: ObjectIdentifier;
|
|
81
|
-
store: StoreTools;
|
|
82
|
-
fieldSchema: StorageFieldSchema | StorageFieldsSchema;
|
|
83
|
-
cache: CacheTools;
|
|
84
|
-
parent?: Entity<any, any>;
|
|
85
|
-
onAllUnsubscribed?: () => void;
|
|
86
|
-
readonlyKeys?: (keyof Init)[];
|
|
87
|
-
fieldPath?: string[];
|
|
88
|
-
});
|
|
89
|
-
private [REFRESH];
|
|
90
|
-
private [DEEP_CHANGE];
|
|
91
|
-
protected getChildFieldSchema: (key: any) => any;
|
|
92
|
-
dispose: () => void;
|
|
93
|
-
subscribe: <EventName extends keyof EntityEvents>(event: EventName, callback: EntityEvents[EventName]) => () => void;
|
|
94
|
-
protected addPatches: (patches: Operation[]) => void;
|
|
95
|
-
protected cloneCurrent: () => any;
|
|
96
|
-
protected getSubObject: (oid: ObjectIdentifier, key: any) => Entity<any, any>;
|
|
97
|
-
protected wrapValue: <Key extends keyof KeyValue>(value: any, key: Key) => KeyValue[Key];
|
|
98
|
-
protected processInputValue: (value: any, key: any) => any;
|
|
99
|
-
get: <Key extends keyof KeyValue>(key: Key) => KeyValue[Key];
|
|
100
|
-
getAll: () => KeyValue;
|
|
101
|
-
private getFileSnapshot;
|
|
63
|
+
get updatedAt(): number;
|
|
64
|
+
get deepUpdatedAt(): number;
|
|
102
65
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
66
|
+
* @internal - this is relevant to Verdant's system, not users.
|
|
67
|
+
*
|
|
68
|
+
* Indicates whether this document is from an outdated version
|
|
69
|
+
* of the schema - which means it cannot be used until it is upgraded.
|
|
105
70
|
*/
|
|
106
|
-
|
|
71
|
+
get isOutdatedVersion(): boolean;
|
|
107
72
|
/**
|
|
108
|
-
*
|
|
73
|
+
* Pruning - when entities have invalid children, we 'prune' that
|
|
74
|
+
* data up to the nearest prunable point - a nullable field,
|
|
75
|
+
* or a list.
|
|
109
76
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
values: () => any[];
|
|
113
|
-
set: <Key extends keyof Init>(key: Key, value: Init[Key]) => void;
|
|
114
|
-
delete: (key: any) => void;
|
|
115
|
-
private getDeleteMode;
|
|
116
|
-
/** @deprecated - renamed to delete */
|
|
117
|
-
remove: (key: any) => void;
|
|
118
|
-
update: (value: DeepPartial<Init>, { replaceSubObjects, merge, }?: {
|
|
119
|
-
replaceSubObjects?: boolean | undefined;
|
|
120
|
-
merge?: boolean | undefined;
|
|
121
|
-
}) => void;
|
|
77
|
+
protected validate: (...args: unknown[]) => EntityValidationProblem | undefined;
|
|
78
|
+
private viewWithMappedChildren;
|
|
122
79
|
/**
|
|
123
|
-
*
|
|
80
|
+
* A current snapshot of this Entity's data, including nested
|
|
81
|
+
* Entities.
|
|
124
82
|
*/
|
|
83
|
+
getSnapshot: () => any;
|
|
84
|
+
private addPendingOperations;
|
|
85
|
+
private addConfirmedData;
|
|
86
|
+
private replaceAllData;
|
|
87
|
+
private resetAllData;
|
|
88
|
+
private change;
|
|
89
|
+
protected deepChange: (target: Entity, ev: EntityChange) => void;
|
|
90
|
+
private getChild;
|
|
91
|
+
/**
|
|
92
|
+
* Gets a value from this Entity. If the value
|
|
93
|
+
* is an object, it will be wrapped in another
|
|
94
|
+
* Entity.
|
|
95
|
+
*/
|
|
96
|
+
get: <Key extends keyof KeyValue>(key: Key) => KeyValue[Key];
|
|
97
|
+
private processInputValue;
|
|
98
|
+
private getDeleteMode;
|
|
125
99
|
/**
|
|
126
100
|
* Returns the referent value of an item in the list, used for
|
|
127
101
|
* operations which act on items. if the item is an object,
|
|
@@ -129,16 +103,29 @@ export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any,
|
|
|
129
103
|
* is a primitive, it will return the primitive.
|
|
130
104
|
*/
|
|
131
105
|
private getItemRefValue;
|
|
132
|
-
|
|
106
|
+
set: <Key extends keyof Init>(key: Key, value: Init[Key]) => void;
|
|
107
|
+
/**
|
|
108
|
+
* Returns a destructured version of this Entity, where child
|
|
109
|
+
* Entities are accessible at their respective keys.
|
|
110
|
+
*/
|
|
111
|
+
getAll: () => KeyValue;
|
|
112
|
+
delete: (key: any) => void;
|
|
113
|
+
keys: () => string[];
|
|
114
|
+
entries: () => [string, Exclude<KeyValue[keyof KeyValue], undefined>][];
|
|
115
|
+
values: () => Exclude<KeyValue[keyof KeyValue], undefined>[];
|
|
116
|
+
update: (data: DeepPartial<Init>, { merge, replaceSubObjects, }?: {
|
|
117
|
+
replaceSubObjects?: boolean | undefined;
|
|
118
|
+
merge?: boolean | undefined;
|
|
119
|
+
}) => void;
|
|
120
|
+
get length(): number;
|
|
133
121
|
push: (value: ListItemInit<Init>) => void;
|
|
134
122
|
insert: (index: number, value: ListItemInit<Init>) => void;
|
|
135
123
|
move: (from: number, to: number) => void;
|
|
136
124
|
moveItem: (item: ListItemValue<KeyValue>, to: number) => void;
|
|
125
|
+
add: (value: ListItemValue<KeyValue>) => void;
|
|
137
126
|
removeAll: (item: ListItemValue<KeyValue>) => void;
|
|
138
127
|
removeFirst: (item: ListItemValue<KeyValue>) => void;
|
|
139
128
|
removeLast: (item: ListItemValue<KeyValue>) => void;
|
|
140
|
-
add: (item: ListItemValue<KeyValue>) => void;
|
|
141
|
-
has: (item: ListItemValue<KeyValue>) => any;
|
|
142
129
|
[Symbol.iterator](): {
|
|
143
130
|
next: () => {
|
|
144
131
|
readonly value: ListItemValue<KeyValue>;
|
|
@@ -148,66 +135,14 @@ export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any,
|
|
|
148
135
|
readonly done: true;
|
|
149
136
|
};
|
|
150
137
|
};
|
|
151
|
-
private getAsWrapped;
|
|
152
138
|
map: <U>(callback: (value: ListItemValue<KeyValue>, index: number) => U) => U[];
|
|
153
139
|
filter: (callback: (value: ListItemValue<KeyValue>, index: number) => boolean) => ListItemValue<KeyValue>[];
|
|
140
|
+
has: (value: ListItemValue<KeyValue>) => boolean;
|
|
154
141
|
forEach: (callback: (value: ListItemValue<KeyValue>, index: number) => void) => void;
|
|
155
142
|
some: (predicate: (value: ListItemValue<KeyValue>) => boolean) => boolean;
|
|
156
143
|
every: (predicate: (value: ListItemValue<KeyValue>) => boolean) => boolean;
|
|
157
144
|
find: (predicate: (value: ListItemValue<KeyValue>) => boolean) => ListItemValue<KeyValue> | undefined;
|
|
158
|
-
includes: (
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
dispose: () => void;
|
|
162
|
-
subscribe<EventName extends keyof EntityEvents>(event: EventName, callback: EntityEvents[EventName]): () => void;
|
|
163
|
-
get<Key extends keyof Value>(key: Key): Value[Key];
|
|
164
|
-
getAll(): Value;
|
|
165
|
-
getSnapshot(): Snapshot;
|
|
166
|
-
readonly deleted: boolean;
|
|
167
|
-
readonly hasSubscribers: boolean;
|
|
168
|
-
}
|
|
169
|
-
type DeepPartial<T> = {
|
|
170
|
-
[P in keyof T]?: T[P] extends Array<infer U> ? Array<DeepPartial<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : DeepPartial<T[P]>;
|
|
171
|
-
};
|
|
172
|
-
export interface ObjectEntity<Init, Value extends BaseEntityValue, Snapshot = DataFromInit<Init>> extends BaseEntity<Init, Value, Snapshot> {
|
|
173
|
-
keys(): string[];
|
|
174
|
-
entries(): [string, Exclude<Value[keyof Value], undefined>][];
|
|
175
|
-
values(): Exclude<Value[keyof Value], undefined>[];
|
|
176
|
-
set<Key extends keyof Init>(key: Key, value: Init[Key]): void;
|
|
177
|
-
delete(key: DeletableKeys<Value>): void;
|
|
178
|
-
update(value: DeepPartial<Init>, options?: {
|
|
179
|
-
replaceSubObjects?: boolean;
|
|
180
|
-
merge?: boolean;
|
|
181
|
-
}): void;
|
|
182
|
-
readonly isList: false;
|
|
183
|
-
}
|
|
184
|
-
export interface ListEntity<Init, Value extends BaseEntityValue, Snapshot = DataFromInit<Init>> extends Iterable<ListItemValue<Value>>, BaseEntity<Init, Value, Snapshot> {
|
|
185
|
-
readonly isList: true;
|
|
186
|
-
readonly length: number;
|
|
187
|
-
push(value: ListItemInit<Init>): void;
|
|
188
|
-
insert(index: number, value: ListItemInit<Init>): void;
|
|
189
|
-
move(from: number, to: number): void;
|
|
190
|
-
moveItem(item: ListItemValue<Value>, to: number): void;
|
|
191
|
-
/**
|
|
192
|
-
* A Set operation which adds a value if an equivalent value is not already present.
|
|
193
|
-
* Object values are never the same.
|
|
194
|
-
*/
|
|
195
|
-
add(value: ListItemValue<Value>): void;
|
|
196
|
-
removeAll(item: ListItemValue<Value>): void;
|
|
197
|
-
removeFirst(item: ListItemValue<Value>): void;
|
|
198
|
-
removeLast(item: ListItemValue<Value>): void;
|
|
199
|
-
map<U>(callback: (value: ListItemValue<Value>, index: number) => U): U[];
|
|
200
|
-
filter(callback: (value: ListItemValue<Value>, index: number) => boolean): ListItemValue<Value>[];
|
|
201
|
-
delete(index: number): void;
|
|
202
|
-
has(value: ListItemValue<Value>): boolean;
|
|
203
|
-
forEach(callback: (value: ListItemValue<Value>, index: number) => void): void;
|
|
204
|
-
some(predicate: (value: ListItemValue<Value>) => boolean): boolean;
|
|
205
|
-
every(predicate: (value: ListItemValue<Value>) => boolean): boolean;
|
|
206
|
-
find(predicate: (value: ListItemValue<Value>) => boolean): ListItemValue<Value> | undefined;
|
|
207
|
-
includes(value: ListItemValue<Value>): boolean;
|
|
145
|
+
includes: (value: ListItemValue<KeyValue>) => boolean;
|
|
146
|
+
__getViewData__: (oid: ObjectIdentifier, type: 'confirmed' | 'pending') => EntityMetadataView;
|
|
147
|
+
__getFamilyOids__: () => string[];
|
|
208
148
|
}
|
|
209
|
-
export type AnyEntity<Init, KeyValue extends BaseEntityValue, Snapshot extends any> = ListEntity<Init, KeyValue, Snapshot> | ObjectEntity<Init, KeyValue, Snapshot>;
|
|
210
|
-
type ListItemValue<KeyValue> = KeyValue extends Array<infer T> ? T : never;
|
|
211
|
-
type ListItemInit<Init> = Init extends Array<infer T> ? T : never;
|
|
212
|
-
export type EntityDestructured<T extends AnyEntity<any, any, any> | null> = (T extends ListEntity<any, infer KeyValue, any> ? KeyValue : T extends ObjectEntity<any, infer KeyValue, any> ? KeyValue : never) | (T extends null ? null : never);
|
|
213
|
-
export {};
|