@fluidframework/map 2.51.0 → 2.53.0-350190
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/CHANGELOG.md +4 -0
- package/dist/internalInterfaces.d.ts +0 -56
- package/dist/internalInterfaces.d.ts.map +1 -1
- package/dist/internalInterfaces.js.map +1 -1
- package/dist/mapKernel.d.ts +36 -78
- package/dist/mapKernel.d.ts.map +1 -1
- package/dist/mapKernel.js +291 -308
- package/dist/mapKernel.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/lib/internalInterfaces.d.ts +0 -56
- package/lib/internalInterfaces.d.ts.map +1 -1
- package/lib/internalInterfaces.js.map +1 -1
- package/lib/mapKernel.d.ts +36 -78
- package/lib/mapKernel.d.ts.map +1 -1
- package/lib/mapKernel.js +292 -309
- package/lib/mapKernel.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/package.json +20 -20
- package/src/internalInterfaces.ts +0 -67
- package/src/mapKernel.ts +440 -434
- package/src/packageVersion.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import type { ILocalValue } from "./localValues.js";
|
|
6
5
|
/**
|
|
7
6
|
* Operation indicating a value should be set for a key.
|
|
8
7
|
*/
|
|
@@ -42,61 +41,6 @@ export interface IMapDeleteOperation {
|
|
|
42
41
|
*/
|
|
43
42
|
key: string;
|
|
44
43
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Metadata for an local `edit` operation.
|
|
47
|
-
*/
|
|
48
|
-
export interface IMapKeyEditLocalOpMetadata {
|
|
49
|
-
/**
|
|
50
|
-
* String identifier of the operation type.
|
|
51
|
-
*/
|
|
52
|
-
type: "edit";
|
|
53
|
-
/**
|
|
54
|
-
* Unique identifier for the local operation.
|
|
55
|
-
*/
|
|
56
|
-
pendingMessageId: number;
|
|
57
|
-
/**
|
|
58
|
-
* Local value prior to the edit.
|
|
59
|
-
*/
|
|
60
|
-
previousValue: ILocalValue;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Metadata for an local `add` operation.
|
|
64
|
-
*/
|
|
65
|
-
export interface IMapKeyAddLocalOpMetadata {
|
|
66
|
-
/**
|
|
67
|
-
* String identifier of the operation type.
|
|
68
|
-
*/
|
|
69
|
-
type: "add";
|
|
70
|
-
/**
|
|
71
|
-
* Unique identifier for the local operation.
|
|
72
|
-
*/
|
|
73
|
-
pendingMessageId: number;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Metadata for an local `clear` operation.
|
|
77
|
-
*/
|
|
78
|
-
export interface IMapClearLocalOpMetadata {
|
|
79
|
-
/**
|
|
80
|
-
* String identifier of the operation type.
|
|
81
|
-
*/
|
|
82
|
-
type: "clear";
|
|
83
|
-
/**
|
|
84
|
-
* Unique identifier for the local operation.
|
|
85
|
-
*/
|
|
86
|
-
pendingMessageId: number;
|
|
87
|
-
/**
|
|
88
|
-
* Local map contents prior to clearing it.
|
|
89
|
-
*/
|
|
90
|
-
previousMap?: Map<string, ILocalValue>;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Metadata for a local operation associated with a specific key entry in the map.
|
|
94
|
-
*/
|
|
95
|
-
export type MapKeyLocalOpMetadata = IMapKeyEditLocalOpMetadata | IMapKeyAddLocalOpMetadata;
|
|
96
|
-
/**
|
|
97
|
-
* Metadata for a local operation.
|
|
98
|
-
*/
|
|
99
|
-
export type MapLocalOpMetadata = IMapClearLocalOpMetadata | MapKeyLocalOpMetadata;
|
|
100
44
|
/**
|
|
101
45
|
* The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use
|
|
102
46
|
* {@link ISerializableValue."type"} to understand whether they're storing a Plain JavaScript object,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalInterfaces.d.ts","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"internalInterfaces.d.ts","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IAEH,KAAK,EAAE,GAAG,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalInterfaces.js","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\
|
|
1
|
+
{"version":3,"file":"internalInterfaces.js","sourceRoot":"","sources":["../src/internalInterfaces.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Operation indicating a value should be set for a key.\n */\nexport interface IMapSetOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"set\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n\n\t/**\n\t * Value to be set on the key.\n\t */\n\tvalue: ISerializableValue;\n}\n\n/**\n * Operation indicating the map should be cleared.\n */\nexport interface IMapClearOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"clear\";\n}\n\n/**\n * Operation indicating a key should be deleted from the map.\n */\nexport interface IMapDeleteOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"delete\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n}\n\n/**\n * The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use\n * {@link ISerializableValue.\"type\"} to understand whether they're storing a Plain JavaScript object,\n * a {@link @fluidframework/shared-object-base#SharedObject}, or a value type.\n *\n * @remarks\n *\n * Note that the in-memory equivalent of ISerializableValue is ILocalValue (similarly holding a type, but with\n * the _in-memory representation_ of the value instead). An ISerializableValue is what gets passed to\n * JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate)\n * and ops (set).\n *\n * If type is Plain, it must be a plain JS object that can survive a JSON.stringify/parse. E.g. a URL object will\n * just get stringified to a URL string and not rehydrate as a URL object on the other side. It may contain members\n * that are ISerializedHandle (the serialized form of a handle).\n *\n * If type is a value type then it must be amongst the types registered via registerValueType or we won't know how\n * to serialize/deserialize it (we rely on its factory via .load() and .store()). Its value will be type-dependent.\n * If type is Shared, then the in-memory value will just be a reference to the SharedObject. Its value will be a\n * channel ID.\n *\n * @deprecated This type is legacy and deprecated(AB#8004).\n * @legacy\n * @alpha\n */\nexport interface ISerializableValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * The JSONable representation of the value.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tvalue: any;\n}\n\n/**\n * Serialized {@link ISerializableValue} counterpart.\n */\nexport interface ISerializedValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * String representation of the value.\n\t *\n\t * @remarks Will be undefined if the original value was undefined.\n\t */\n\tvalue: string | undefined;\n}\n"]}
|
package/dist/mapKernel.d.ts
CHANGED
|
@@ -8,13 +8,9 @@ import type { IFluidSerializer } from "@fluidframework/shared-object-base/intern
|
|
|
8
8
|
import type { ISharedMapEvents } from "./interfaces.js";
|
|
9
9
|
import type { IMapClearOperation, IMapDeleteOperation, IMapSetOperation, ISerializableValue, ISerializedValue } from "./internalInterfaces.js";
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Union of all possible map operations.
|
|
12
12
|
*/
|
|
13
|
-
export type
|
|
14
|
-
/**
|
|
15
|
-
* Description of a map delta operation
|
|
16
|
-
*/
|
|
17
|
-
export type IMapOperation = IMapKeyOperation | IMapClearOperation;
|
|
13
|
+
export type IMapOperation = IMapSetOperation | IMapDeleteOperation | IMapClearOperation;
|
|
18
14
|
/**
|
|
19
15
|
* Defines the in-memory object structure to be used for the conversion to/from serialized.
|
|
20
16
|
*
|
|
@@ -46,25 +42,18 @@ export declare class MapKernel {
|
|
|
46
42
|
*/
|
|
47
43
|
private readonly messageHandlers;
|
|
48
44
|
/**
|
|
49
|
-
* The
|
|
50
|
-
|
|
51
|
-
private readonly data;
|
|
52
|
-
/**
|
|
53
|
-
* Keys that have been modified locally but not yet ack'd from the server.
|
|
54
|
-
*/
|
|
55
|
-
private readonly pendingKeys;
|
|
56
|
-
/**
|
|
57
|
-
* This is used to assign a unique id to every outgoing operation and helps in tracking unack'd ops.
|
|
45
|
+
* The data the map is storing, but only including sequenced values (no local pending
|
|
46
|
+
* modifications are included).
|
|
58
47
|
*/
|
|
59
|
-
private
|
|
48
|
+
private readonly sequencedData;
|
|
60
49
|
/**
|
|
61
|
-
*
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
*
|
|
50
|
+
* A data structure containing all local pending modifications, which is used in combination
|
|
51
|
+
* with the sequencedData to compute optimistic values.
|
|
52
|
+
*
|
|
53
|
+
* Pending sets are aggregated into "lifetimes", which permit correct relative iteration order
|
|
54
|
+
* even across remote operations and rollbacks.
|
|
66
55
|
*/
|
|
67
|
-
private readonly
|
|
56
|
+
private readonly pendingData;
|
|
68
57
|
/**
|
|
69
58
|
* Create a new shared map kernel.
|
|
70
59
|
* @param serializer - The serializer to serialize / parse handles
|
|
@@ -76,15 +65,32 @@ export declare class MapKernel {
|
|
|
76
65
|
*/
|
|
77
66
|
constructor(serializer: IFluidSerializer, handle: IFluidHandle, submitMessage: (op: unknown, localOpMetadata: unknown) => void, isAttached: () => boolean, eventEmitter: TypedEventEmitter<ISharedMapEvents>);
|
|
78
67
|
/**
|
|
79
|
-
* Get an iterator over the
|
|
80
|
-
*
|
|
68
|
+
* Get an iterator over the optimistically observable ILocalValue entries in the map. For example, excluding
|
|
69
|
+
* sequenced entries that have pending deletes/clears.
|
|
70
|
+
*
|
|
71
|
+
* @remarks
|
|
72
|
+
* There is no perfect solution here, particularly when the iterator is retained over time and the map is
|
|
73
|
+
* modified or new ack's are received. The pendingData portion of the iteration is the most susceptible to
|
|
74
|
+
* this problem. The implementation prioritizes (in roughly this order):
|
|
75
|
+
* 1. Correct immediate iteration (i.e. when the map is not modified before iteration completes)
|
|
76
|
+
* 2. Consistent iteration order before/after sequencing of pending ops; acks don't change order
|
|
77
|
+
* 3. Consistent iteration order between synchronized clients, even if they each modified the map concurrently
|
|
78
|
+
* 4. Remaining as close as possible to the native Map iterator behavior, e.g. live-ish view rather than snapshot
|
|
79
|
+
*
|
|
80
|
+
* For this reason, it's important not to internally snapshot the output of the iterator for any purpose that
|
|
81
|
+
* does not immediately (synchronously) consume that output and dispose of it.
|
|
81
82
|
*/
|
|
82
|
-
|
|
83
|
+
private readonly internalIterator;
|
|
83
84
|
/**
|
|
84
85
|
* Get an iterator over the entries in this map.
|
|
85
86
|
* @returns The iterator
|
|
86
87
|
*/
|
|
87
88
|
entries(): IterableIterator<[string, unknown]>;
|
|
89
|
+
/**
|
|
90
|
+
* Get an iterator over the keys in this map.
|
|
91
|
+
* @returns The iterator
|
|
92
|
+
*/
|
|
93
|
+
keys(): IterableIterator<string>;
|
|
88
94
|
/**
|
|
89
95
|
* Get an iterator over the values in this map.
|
|
90
96
|
* @returns The iterator
|
|
@@ -100,6 +106,11 @@ export declare class MapKernel {
|
|
|
100
106
|
* @param callbackFn - Callback function
|
|
101
107
|
*/
|
|
102
108
|
forEach(callbackFn: (value: unknown, key: string, map: Map<string, unknown>) => void): void;
|
|
109
|
+
/**
|
|
110
|
+
* Compute the optimistic local value for a given key. This combines the sequenced data with
|
|
111
|
+
* any pending changes that have not yet been sequenced.
|
|
112
|
+
*/
|
|
113
|
+
private readonly getOptimisticLocalValue;
|
|
103
114
|
/**
|
|
104
115
|
* {@inheritDoc ISharedMap.get}
|
|
105
116
|
*/
|
|
@@ -167,63 +178,10 @@ export declare class MapKernel {
|
|
|
167
178
|
* @param localOpMetadata - The local metadata associated with the op.
|
|
168
179
|
*/
|
|
169
180
|
rollback(op: unknown, localOpMetadata: unknown): void;
|
|
170
|
-
/**
|
|
171
|
-
* Set implementation used for both locally sourced sets as well as incoming remote sets.
|
|
172
|
-
* @param key - The key being set
|
|
173
|
-
* @param value - The value being set
|
|
174
|
-
* @param local - Whether the message originated from the local client
|
|
175
|
-
* @returns Previous local value of the key, if any
|
|
176
|
-
*/
|
|
177
|
-
private setCore;
|
|
178
|
-
/**
|
|
179
|
-
* Clear implementation used for both locally sourced clears as well as incoming remote clears.
|
|
180
|
-
* @param local - Whether the message originated from the local client
|
|
181
|
-
*/
|
|
182
|
-
private clearCore;
|
|
183
|
-
/**
|
|
184
|
-
* Delete implementation used for both locally sourced deletes as well as incoming remote deletes.
|
|
185
|
-
* @param key - The key being deleted
|
|
186
|
-
* @param local - Whether the message originated from the local client
|
|
187
|
-
* @returns Previous local value of the key if it existed, undefined if it did not exist
|
|
188
|
-
*/
|
|
189
|
-
private deleteCore;
|
|
190
|
-
/**
|
|
191
|
-
* Clear all keys in memory in response to a remote clear, but retain keys we have modified but not yet been ack'd.
|
|
192
|
-
*/
|
|
193
|
-
private clearExceptPendingKeys;
|
|
194
|
-
/**
|
|
195
|
-
* If our local operations that have not yet been ack'd will eventually overwrite an incoming operation, we should
|
|
196
|
-
* not process the incoming operation.
|
|
197
|
-
* @param op - Operation to check
|
|
198
|
-
* @param local - Whether the message originated from the local client
|
|
199
|
-
* @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.
|
|
200
|
-
* For messages from a remote client, this will be undefined.
|
|
201
|
-
* @returns True if the operation should be processed, false otherwise
|
|
202
|
-
*/
|
|
203
|
-
private needProcessKeyOperation;
|
|
204
181
|
/**
|
|
205
182
|
* Get the message handlers for the map.
|
|
206
183
|
* @returns A map of string op names to IMapMessageHandlers for those ops
|
|
207
184
|
*/
|
|
208
185
|
private getMessageHandlers;
|
|
209
|
-
private getMapClearMessageId;
|
|
210
|
-
/**
|
|
211
|
-
* Submit a clear message to remote clients.
|
|
212
|
-
* @param op - The clear message
|
|
213
|
-
*/
|
|
214
|
-
private submitMapClearMessage;
|
|
215
|
-
private getMapKeyMessageId;
|
|
216
|
-
/**
|
|
217
|
-
* Submit a map key message to remote clients.
|
|
218
|
-
* @param op - The map key message
|
|
219
|
-
* @param previousValue - The value of the key before this op
|
|
220
|
-
*/
|
|
221
|
-
private submitMapKeyMessage;
|
|
222
|
-
/**
|
|
223
|
-
* Submit a map key message to remote clients based on a previous submit.
|
|
224
|
-
* @param op - The map key message
|
|
225
|
-
* @param localOpMetadata - Metadata from the previous submit
|
|
226
|
-
*/
|
|
227
|
-
private resubmitMapKeyMessage;
|
|
228
186
|
}
|
|
229
187
|
//# sourceMappingURL=mapKernel.d.ts.map
|
package/dist/mapKernel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapKernel.d.ts","sourceRoot":"","sources":["../src/mapKernel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"mapKernel.d.ts","sourceRoot":"","sources":["../src/mapKernel.ts"],"names":[],"mappings":"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"}
|