@fluidframework/map 0.59.4001 → 1.1.0-75972
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/.eslintrc.js +1 -1
- package/dist/directory.d.ts +3 -2
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +63 -62
- package/dist/directory.js.map +1 -1
- package/dist/interfaces.d.ts +13 -14
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/map.d.ts +7 -2
- package/dist/map.d.ts.map +1 -1
- package/dist/map.js +9 -2
- package/dist/map.js.map +1 -1
- package/dist/mapKernel.d.ts +20 -11
- package/dist/mapKernel.d.ts.map +1 -1
- package/dist/mapKernel.js +160 -82
- 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/directory.d.ts +3 -2
- package/lib/directory.d.ts.map +1 -1
- package/lib/directory.js +63 -62
- package/lib/directory.js.map +1 -1
- package/lib/interfaces.d.ts +13 -14
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/map.d.ts +7 -2
- package/lib/map.d.ts.map +1 -1
- package/lib/map.js +9 -2
- package/lib/map.js.map +1 -1
- package/lib/mapKernel.d.ts +20 -11
- package/lib/mapKernel.d.ts.map +1 -1
- package/lib/mapKernel.js +160 -82
- 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 +15 -28
- package/src/directory.ts +77 -69
- package/src/interfaces.ts +14 -16
- package/src/map.ts +14 -3
- package/src/mapKernel.ts +195 -90
- package/src/packageVersion.ts +1 -1
package/lib/packageVersion.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/map\";\nexport const pkgVersion = \"1.1.0-75972\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/map",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0-75972",
|
|
4
4
|
"description": "Distributed map",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -62,45 +62,32 @@
|
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
64
64
|
"@fluidframework/common-utils": "^0.32.1",
|
|
65
|
-
"@fluidframework/container-utils": "
|
|
66
|
-
"@fluidframework/core-interfaces": "
|
|
67
|
-
"@fluidframework/datastore-definitions": "
|
|
68
|
-
"@fluidframework/driver-utils": "
|
|
65
|
+
"@fluidframework/container-utils": "1.1.0-75972",
|
|
66
|
+
"@fluidframework/core-interfaces": "1.1.0-75972",
|
|
67
|
+
"@fluidframework/datastore-definitions": "1.1.0-75972",
|
|
68
|
+
"@fluidframework/driver-utils": "1.1.0-75972",
|
|
69
69
|
"@fluidframework/protocol-definitions": "^0.1028.2000",
|
|
70
|
-
"@fluidframework/runtime-definitions": "
|
|
71
|
-
"@fluidframework/runtime-utils": "
|
|
72
|
-
"@fluidframework/shared-object-base": "
|
|
70
|
+
"@fluidframework/runtime-definitions": "1.1.0-75972",
|
|
71
|
+
"@fluidframework/runtime-utils": "1.1.0-75972",
|
|
72
|
+
"@fluidframework/shared-object-base": "1.1.0-75972",
|
|
73
73
|
"path-browserify": "^1.0.1"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@fluid-internal/test-dds-utils": "
|
|
77
|
-
"@fluidframework/build-common": "^0.
|
|
78
|
-
"@fluidframework/build-tools": "^0.2.
|
|
76
|
+
"@fluid-internal/test-dds-utils": "1.1.0-75972",
|
|
77
|
+
"@fluidframework/build-common": "^0.24.0-0",
|
|
78
|
+
"@fluidframework/build-tools": "^0.2.71273",
|
|
79
79
|
"@fluidframework/eslint-config-fluid": "^0.28.2000",
|
|
80
|
-
"@fluidframework/map-previous": "npm:@fluidframework/map
|
|
81
|
-
"@fluidframework/mocha-test-setup": "
|
|
82
|
-
"@fluidframework/test-runtime-utils": "
|
|
80
|
+
"@fluidframework/map-previous": "npm:@fluidframework/map@^1.0.0",
|
|
81
|
+
"@fluidframework/mocha-test-setup": "1.1.0-75972",
|
|
82
|
+
"@fluidframework/test-runtime-utils": "1.1.0-75972",
|
|
83
83
|
"@microsoft/api-extractor": "^7.22.2",
|
|
84
84
|
"@rushstack/eslint-config": "^2.5.1",
|
|
85
85
|
"@types/mocha": "^9.1.1",
|
|
86
86
|
"@types/node": "^14.18.0",
|
|
87
|
-
"@typescript-eslint/eslint-plugin": "~5.9.0",
|
|
88
|
-
"@typescript-eslint/parser": "~5.9.0",
|
|
89
87
|
"concurrently": "^6.2.0",
|
|
90
88
|
"copyfiles": "^2.1.0",
|
|
91
89
|
"cross-env": "^7.0.2",
|
|
92
90
|
"eslint": "~8.6.0",
|
|
93
|
-
"eslint-plugin-editorconfig": "~3.2.0",
|
|
94
|
-
"eslint-plugin-eslint-comments": "~3.2.0",
|
|
95
|
-
"eslint-plugin-import": "~2.25.4",
|
|
96
|
-
"eslint-plugin-jest": "~26.1.3",
|
|
97
|
-
"eslint-plugin-jsdoc": "~39.3.0",
|
|
98
|
-
"eslint-plugin-mocha": "~10.0.3",
|
|
99
|
-
"eslint-plugin-promise": "~6.0.0",
|
|
100
|
-
"eslint-plugin-react": "~7.28.0",
|
|
101
|
-
"eslint-plugin-tsdoc": "~0.2.14",
|
|
102
|
-
"eslint-plugin-unicorn": "~40.0.0",
|
|
103
|
-
"eslint-plugin-unused-imports": "~2.0.0",
|
|
104
91
|
"mocha": "^10.0.0",
|
|
105
92
|
"nyc": "^15.0.0",
|
|
106
93
|
"rimraf": "^2.6.2",
|
|
@@ -108,7 +95,7 @@
|
|
|
108
95
|
"typescript-formatter": "7.1.0"
|
|
109
96
|
},
|
|
110
97
|
"typeValidation": {
|
|
111
|
-
"version": "
|
|
98
|
+
"version": "1.1.0",
|
|
112
99
|
"broken": {}
|
|
113
100
|
}
|
|
114
101
|
}
|
package/src/directory.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
IChannelServices,
|
|
18
18
|
IChannelFactory,
|
|
19
19
|
} from "@fluidframework/datastore-definitions";
|
|
20
|
-
import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
|
|
20
|
+
import { ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
21
21
|
import { IFluidSerializer, SharedObject, ValueType } from "@fluidframework/shared-object-base";
|
|
22
22
|
import { SummaryTreeBuilder } from "@fluidframework/runtime-utils";
|
|
23
23
|
import * as path from "path-browserify";
|
|
@@ -204,67 +204,6 @@ export interface IDirectoryNewStorageFormat {
|
|
|
204
204
|
content: IDirectoryDataObject;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
-
function serializeDirectory(root: SubDirectory, serializer: IFluidSerializer): ISummaryTreeWithStats {
|
|
208
|
-
const MinValueSizeSeparateSnapshotBlob = 8 * 1024;
|
|
209
|
-
|
|
210
|
-
const builder = new SummaryTreeBuilder();
|
|
211
|
-
let counter = 0;
|
|
212
|
-
const blobs: string[] = [];
|
|
213
|
-
|
|
214
|
-
const stack: [SubDirectory, IDirectoryDataObject][] = [];
|
|
215
|
-
const content: IDirectoryDataObject = {};
|
|
216
|
-
stack.push([root, content]);
|
|
217
|
-
|
|
218
|
-
while (stack.length > 0) {
|
|
219
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
220
|
-
const [currentSubDir, currentSubDirObject] = stack.pop()!;
|
|
221
|
-
for (const [key, value] of currentSubDir.getSerializedStorage(serializer)) {
|
|
222
|
-
if (!currentSubDirObject.storage) {
|
|
223
|
-
currentSubDirObject.storage = {};
|
|
224
|
-
}
|
|
225
|
-
const result: ISerializableValue = {
|
|
226
|
-
type: value.type,
|
|
227
|
-
value: value.value && JSON.parse(value.value) as object,
|
|
228
|
-
};
|
|
229
|
-
if (value.value && value.value.length >= MinValueSizeSeparateSnapshotBlob) {
|
|
230
|
-
const extraContent: IDirectoryDataObject = {};
|
|
231
|
-
let largeContent = extraContent;
|
|
232
|
-
if (currentSubDir.absolutePath !== posix.sep) {
|
|
233
|
-
for (const dir of currentSubDir.absolutePath.substr(1).split(posix.sep)) {
|
|
234
|
-
const subDataObject: IDirectoryDataObject = {};
|
|
235
|
-
largeContent.subdirectories = { [dir]: subDataObject };
|
|
236
|
-
largeContent = subDataObject;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
largeContent.storage = { [key]: result };
|
|
240
|
-
const blobName = `blob${counter}`;
|
|
241
|
-
counter++;
|
|
242
|
-
blobs.push(blobName);
|
|
243
|
-
builder.addBlob(blobName, JSON.stringify(extraContent));
|
|
244
|
-
} else {
|
|
245
|
-
currentSubDirObject.storage[key] = result;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
for (const [subdirName, subdir] of currentSubDir.subdirectories()) {
|
|
250
|
-
if (!currentSubDirObject.subdirectories) {
|
|
251
|
-
currentSubDirObject.subdirectories = {};
|
|
252
|
-
}
|
|
253
|
-
const subDataObject: IDirectoryDataObject = {};
|
|
254
|
-
currentSubDirObject.subdirectories[subdirName] = subDataObject;
|
|
255
|
-
stack.push([subdir as SubDirectory, subDataObject]);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
const newFormat: IDirectoryNewStorageFormat = {
|
|
260
|
-
blobs,
|
|
261
|
-
content,
|
|
262
|
-
};
|
|
263
|
-
builder.addBlob(snapshotFileName, JSON.stringify(newFormat));
|
|
264
|
-
|
|
265
|
-
return builder.getSummaryTree();
|
|
266
|
-
}
|
|
267
|
-
|
|
268
207
|
/**
|
|
269
208
|
* The factory that defines the directory.
|
|
270
209
|
* @sealed
|
|
@@ -397,7 +336,7 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
397
336
|
runtime: IFluidDataStoreRuntime,
|
|
398
337
|
attributes: IChannelAttributes,
|
|
399
338
|
) {
|
|
400
|
-
super(id, runtime, attributes);
|
|
339
|
+
super(id, runtime, attributes, "fluid_directory_");
|
|
401
340
|
this.localValueMaker = new LocalValueMaker(this.serializer);
|
|
402
341
|
this.setMessageHandlers();
|
|
403
342
|
// Mirror the containedValueChanged op on the SharedDirectory
|
|
@@ -582,8 +521,11 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
582
521
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
|
|
583
522
|
* @internal
|
|
584
523
|
*/
|
|
585
|
-
protected summarizeCore(
|
|
586
|
-
|
|
524
|
+
protected summarizeCore(
|
|
525
|
+
serializer: IFluidSerializer,
|
|
526
|
+
telemetryContext?: ITelemetryContext,
|
|
527
|
+
): ISummaryTreeWithStats {
|
|
528
|
+
return this.serializeDirectory(this.root, serializer);
|
|
587
529
|
}
|
|
588
530
|
|
|
589
531
|
/**
|
|
@@ -822,6 +764,72 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
822
764
|
protected applyStashedOp() {
|
|
823
765
|
throw new Error("not implemented");
|
|
824
766
|
}
|
|
767
|
+
|
|
768
|
+
private serializeDirectory(
|
|
769
|
+
root: SubDirectory,
|
|
770
|
+
serializer: IFluidSerializer,
|
|
771
|
+
telemetryContext?: ITelemetryContext,
|
|
772
|
+
): ISummaryTreeWithStats {
|
|
773
|
+
const MinValueSizeSeparateSnapshotBlob = 8 * 1024;
|
|
774
|
+
|
|
775
|
+
const builder = new SummaryTreeBuilder();
|
|
776
|
+
let counter = 0;
|
|
777
|
+
const blobs: string[] = [];
|
|
778
|
+
|
|
779
|
+
const stack: [SubDirectory, IDirectoryDataObject][] = [];
|
|
780
|
+
const content: IDirectoryDataObject = {};
|
|
781
|
+
stack.push([root, content]);
|
|
782
|
+
|
|
783
|
+
while (stack.length > 0) {
|
|
784
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
785
|
+
const [currentSubDir, currentSubDirObject] = stack.pop()!;
|
|
786
|
+
for (const [key, value] of currentSubDir.getSerializedStorage(serializer)) {
|
|
787
|
+
if (!currentSubDirObject.storage) {
|
|
788
|
+
currentSubDirObject.storage = {};
|
|
789
|
+
}
|
|
790
|
+
const result: ISerializableValue = {
|
|
791
|
+
type: value.type,
|
|
792
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
793
|
+
value: value.value && JSON.parse(value.value) as object,
|
|
794
|
+
};
|
|
795
|
+
if (value.value && value.value.length >= MinValueSizeSeparateSnapshotBlob) {
|
|
796
|
+
const extraContent: IDirectoryDataObject = {};
|
|
797
|
+
let largeContent = extraContent;
|
|
798
|
+
if (currentSubDir.absolutePath !== posix.sep) {
|
|
799
|
+
for (const dir of currentSubDir.absolutePath.substr(1).split(posix.sep)) {
|
|
800
|
+
const subDataObject: IDirectoryDataObject = {};
|
|
801
|
+
largeContent.subdirectories = { [dir]: subDataObject };
|
|
802
|
+
largeContent = subDataObject;
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
largeContent.storage = { [key]: result };
|
|
806
|
+
const blobName = `blob${counter}`;
|
|
807
|
+
counter++;
|
|
808
|
+
blobs.push(blobName);
|
|
809
|
+
builder.addBlob(blobName, JSON.stringify(extraContent));
|
|
810
|
+
} else {
|
|
811
|
+
currentSubDirObject.storage[key] = result;
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
for (const [subdirName, subdir] of currentSubDir.subdirectories()) {
|
|
816
|
+
if (!currentSubDirObject.subdirectories) {
|
|
817
|
+
currentSubDirObject.subdirectories = {};
|
|
818
|
+
}
|
|
819
|
+
const subDataObject: IDirectoryDataObject = {};
|
|
820
|
+
currentSubDirObject.subdirectories[subdirName] = subDataObject;
|
|
821
|
+
stack.push([subdir as SubDirectory, subDataObject]);
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
const newFormat: IDirectoryNewStorageFormat = {
|
|
826
|
+
blobs,
|
|
827
|
+
content,
|
|
828
|
+
};
|
|
829
|
+
builder.addBlob(snapshotFileName, JSON.stringify(newFormat));
|
|
830
|
+
|
|
831
|
+
return builder.getSummaryTree();
|
|
832
|
+
}
|
|
825
833
|
}
|
|
826
834
|
|
|
827
835
|
/**
|
|
@@ -1421,14 +1429,14 @@ class SubDirectory extends TypedEventEmitter<IDirectoryEvents> implements IDirec
|
|
|
1421
1429
|
return false;
|
|
1422
1430
|
}
|
|
1423
1431
|
|
|
1424
|
-
|
|
1432
|
+
const pendingKeyMessageId = this.pendingKeys.get(op.key);
|
|
1433
|
+
if (pendingKeyMessageId !== undefined) {
|
|
1425
1434
|
// Found an NACK op, clear it from the directory if the latest sequence number in the directory
|
|
1426
1435
|
// match the message's and don't process the op.
|
|
1427
1436
|
if (local) {
|
|
1428
1437
|
assert(localOpMetadata !== undefined,
|
|
1429
1438
|
0x011 /* pendingMessageId is missing from the local client's operation */);
|
|
1430
1439
|
const pendingMessageId = localOpMetadata as number;
|
|
1431
|
-
const pendingKeyMessageId = this.pendingKeys.get(op.key);
|
|
1432
1440
|
if (pendingKeyMessageId === pendingMessageId) {
|
|
1433
1441
|
this.pendingKeys.delete(op.key);
|
|
1434
1442
|
}
|
|
@@ -1455,12 +1463,12 @@ class SubDirectory extends TypedEventEmitter<IDirectoryEvents> implements IDirec
|
|
|
1455
1463
|
local: boolean,
|
|
1456
1464
|
localOpMetadata: unknown,
|
|
1457
1465
|
): boolean {
|
|
1458
|
-
|
|
1466
|
+
const pendingSubDirectoryMessageId = this.pendingSubDirectories.get(op.subdirName);
|
|
1467
|
+
if (pendingSubDirectoryMessageId !== undefined) {
|
|
1459
1468
|
if (local) {
|
|
1460
1469
|
assert(localOpMetadata !== undefined,
|
|
1461
1470
|
0x012 /* pendingMessageId is missing from the local client's operation */);
|
|
1462
1471
|
const pendingMessageId = localOpMetadata as number;
|
|
1463
|
-
const pendingSubDirectoryMessageId = this.pendingSubDirectories.get(op.subdirName);
|
|
1464
1472
|
if (pendingSubDirectoryMessageId === pendingMessageId) {
|
|
1465
1473
|
this.pendingSubDirectories.delete(op.subdirName);
|
|
1466
1474
|
}
|
package/src/interfaces.ts
CHANGED
|
@@ -144,9 +144,10 @@ export interface IDirectory extends Map<string, any>, IEventProvider<IDirectoryE
|
|
|
144
144
|
* ```typescript
|
|
145
145
|
* (path: string, local: boolean, target: IEventThisPlaceHolder) => void
|
|
146
146
|
* ```
|
|
147
|
-
* - `path` - The relative path to the
|
|
147
|
+
* - `path` - The relative path to the subdirectory that is created.
|
|
148
|
+
* It is relative from the object which raises the event.
|
|
148
149
|
*
|
|
149
|
-
* - `local` - Whether the
|
|
150
|
+
* - `local` - Whether the create originated from the this client.
|
|
150
151
|
*
|
|
151
152
|
* - `target` - The ISharedDirectory itself.
|
|
152
153
|
*
|
|
@@ -159,9 +160,10 @@ export interface IDirectory extends Map<string, any>, IEventProvider<IDirectoryE
|
|
|
159
160
|
* ```typescript
|
|
160
161
|
* (path: string, local: boolean, target: IEventThisPlaceHolder) => void
|
|
161
162
|
* ```
|
|
162
|
-
* - `path` - The relative path to the
|
|
163
|
+
* - `path` - The relative path to the subdirectory that is deleted.
|
|
164
|
+
* It is relative from the object which raises the event.
|
|
163
165
|
*
|
|
164
|
-
* - `local` - Whether the
|
|
166
|
+
* - `local` - Whether the delete originated from the this client.
|
|
165
167
|
*
|
|
166
168
|
* - `target` - The ISharedDirectory itself.
|
|
167
169
|
*/
|
|
@@ -216,9 +218,10 @@ export interface ISharedDirectoryEvents extends ISharedObjectEvents {
|
|
|
216
218
|
* ```typescript
|
|
217
219
|
* (path: string, local: boolean, target: IEventThisPlaceHolder) => void
|
|
218
220
|
* ```
|
|
219
|
-
* - `path` - The relative path to the
|
|
221
|
+
* - `path` - The relative path to the subdirectory that is created.
|
|
222
|
+
* It is relative from the object which raises the event.
|
|
220
223
|
*
|
|
221
|
-
* - `local` - Whether the
|
|
224
|
+
* - `local` - Whether the creation originated from the this client.
|
|
222
225
|
*
|
|
223
226
|
* - `target` - The ISharedDirectory itself.
|
|
224
227
|
*
|
|
@@ -231,9 +234,10 @@ export interface ISharedDirectoryEvents extends ISharedObjectEvents {
|
|
|
231
234
|
* ```typescript
|
|
232
235
|
* (path: string, local: boolean, target: IEventThisPlaceHolder) => void
|
|
233
236
|
* ```
|
|
234
|
-
* - `path` - The relative path to the
|
|
237
|
+
* - `path` - The relative path to the subdirectory that is deleted.
|
|
238
|
+
* It is relative from the object which raises the event.
|
|
235
239
|
*
|
|
236
|
-
* - `local` - Whether the
|
|
240
|
+
* - `local` - Whether the delete originated from the this client.
|
|
237
241
|
*
|
|
238
242
|
* - `target` - The ISharedDirectory itself.
|
|
239
243
|
*
|
|
@@ -306,7 +310,6 @@ export interface IDirectoryValueChanged extends IValueChanged {
|
|
|
306
310
|
* (
|
|
307
311
|
* changed: IValueChanged,
|
|
308
312
|
* local: boolean,
|
|
309
|
-
* op: ISequencedDocumentMessage | null,
|
|
310
313
|
* target: IEventThisPlaceHolder,
|
|
311
314
|
* ) => void
|
|
312
315
|
* ```
|
|
@@ -314,8 +317,6 @@ export interface IDirectoryValueChanged extends IValueChanged {
|
|
|
314
317
|
*
|
|
315
318
|
* - `local` - Whether the change originated from the this client.
|
|
316
319
|
*
|
|
317
|
-
* - `op` - The op that caused the change in value.
|
|
318
|
-
*
|
|
319
320
|
* - `target` - The map itself.
|
|
320
321
|
*
|
|
321
322
|
* ### "clear"
|
|
@@ -325,12 +326,10 @@ export interface IDirectoryValueChanged extends IValueChanged {
|
|
|
325
326
|
* #### Listener signature
|
|
326
327
|
*
|
|
327
328
|
* ```typescript
|
|
328
|
-
* (local: boolean,
|
|
329
|
+
* (local: boolean, target: IEventThisPlaceHolder) => void
|
|
329
330
|
* ```
|
|
330
331
|
* - `local` - Whether the clear originated from the this client.
|
|
331
332
|
*
|
|
332
|
-
* - `op` - The op that caused the clear.
|
|
333
|
-
*
|
|
334
333
|
* - `target` - The map itself.
|
|
335
334
|
*/
|
|
336
335
|
export interface ISharedMapEvents extends ISharedObjectEvents {
|
|
@@ -340,8 +339,7 @@ export interface ISharedMapEvents extends ISharedObjectEvents {
|
|
|
340
339
|
target: IEventThisPlaceHolder) => void);
|
|
341
340
|
(event: "clear", listener: (
|
|
342
341
|
local: boolean,
|
|
343
|
-
target: IEventThisPlaceHolder
|
|
344
|
-
) => void);
|
|
342
|
+
target: IEventThisPlaceHolder) => void);
|
|
345
343
|
}
|
|
346
344
|
|
|
347
345
|
/**
|
package/src/map.ts
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
IChannelServices,
|
|
12
12
|
IChannelFactory,
|
|
13
13
|
} from "@fluidframework/datastore-definitions";
|
|
14
|
-
import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
|
|
14
|
+
import { ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
15
15
|
import { readAndParse } from "@fluidframework/driver-utils";
|
|
16
16
|
import {
|
|
17
17
|
IFluidSerializer,
|
|
@@ -144,7 +144,7 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
144
144
|
runtime: IFluidDataStoreRuntime,
|
|
145
145
|
attributes: IChannelAttributes,
|
|
146
146
|
) {
|
|
147
|
-
super(id, runtime, attributes);
|
|
147
|
+
super(id, runtime, attributes, "fluid_map_");
|
|
148
148
|
this.kernel = new MapKernel(
|
|
149
149
|
this.serializer,
|
|
150
150
|
this.handle,
|
|
@@ -245,7 +245,10 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
245
245
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.summarizeCore}
|
|
246
246
|
* @internal
|
|
247
247
|
*/
|
|
248
|
-
protected summarizeCore(
|
|
248
|
+
protected summarizeCore(
|
|
249
|
+
serializer: IFluidSerializer,
|
|
250
|
+
telemetryContext?: ITelemetryContext,
|
|
251
|
+
): ISummaryTreeWithStats {
|
|
249
252
|
let currentSize = 0;
|
|
250
253
|
let counter = 0;
|
|
251
254
|
let headerBlob: IMapDataObjectSerializable = {};
|
|
@@ -365,4 +368,12 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
365
368
|
this.kernel.tryProcessMessage(message.contents, local, localOpMetadata);
|
|
366
369
|
}
|
|
367
370
|
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.rollback}
|
|
374
|
+
* @internal
|
|
375
|
+
*/
|
|
376
|
+
protected rollback(content: any, localOpMetadata: unknown) {
|
|
377
|
+
this.kernel.rollback(content, localOpMetadata);
|
|
378
|
+
}
|
|
368
379
|
}
|