@fluidframework/map 0.48.3 → 0.49.0-39015
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/directory.d.ts +130 -0
- package/dist/directory.d.ts.map +1 -1
- package/dist/directory.js +9 -0
- package/dist/directory.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +102 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/map.d.ts +9 -1
- package/dist/map.d.ts.map +1 -1
- package/dist/map.js +9 -1
- package/dist/map.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 +130 -0
- package/lib/directory.d.ts.map +1 -1
- package/lib/directory.js +9 -0
- package/lib/directory.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +102 -0
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/map.d.ts +9 -1
- package/lib/map.d.ts.map +1 -1
- package/lib/map.js +9 -1
- package/lib/map.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 +8 -8
- package/src/directory.ts +10 -1
- package/src/index.ts +1 -0
- package/src/interfaces.ts +102 -0
- package/src/map.ts +9 -1
- package/src/packageVersion.ts +1 -1
- package/tsconfig.json +0 -1
package/lib/map.d.ts
CHANGED
|
@@ -56,7 +56,6 @@ export declare class SharedMap extends SharedObject<ISharedMapEvents> implements
|
|
|
56
56
|
* ```typescript
|
|
57
57
|
* const myMap = SharedMap.create(this.runtime, id);
|
|
58
58
|
* ```
|
|
59
|
-
*
|
|
60
59
|
*/
|
|
61
60
|
static create(runtime: IFluidDataStoreRuntime, id?: string): SharedMap;
|
|
62
61
|
/**
|
|
@@ -139,27 +138,36 @@ export declare class SharedMap extends SharedObject<ISharedMapEvents> implements
|
|
|
139
138
|
clear(): void;
|
|
140
139
|
/**
|
|
141
140
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.snapshotCore}
|
|
141
|
+
* @internal
|
|
142
142
|
*/
|
|
143
143
|
protected snapshotCore(serializer: IFluidSerializer): ITree;
|
|
144
144
|
/**
|
|
145
145
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
|
|
146
|
+
* @internal
|
|
146
147
|
*/
|
|
147
148
|
protected loadCore(storage: IChannelStorageService): Promise<void>;
|
|
148
149
|
/**
|
|
149
150
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
|
|
151
|
+
* @internal
|
|
150
152
|
*/
|
|
151
153
|
protected onDisconnect(): void;
|
|
152
154
|
/**
|
|
153
155
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}
|
|
156
|
+
* @internal
|
|
154
157
|
*/
|
|
155
158
|
protected reSubmitCore(content: any, localOpMetadata: unknown): void;
|
|
159
|
+
/**
|
|
160
|
+
* @internal
|
|
161
|
+
*/
|
|
156
162
|
protected applyStashedOp(content: any): unknown;
|
|
157
163
|
/**
|
|
158
164
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
|
|
165
|
+
* @internal
|
|
159
166
|
*/
|
|
160
167
|
protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
|
|
161
168
|
/**
|
|
162
169
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.registerCore}
|
|
170
|
+
* @internal
|
|
163
171
|
*/
|
|
164
172
|
protected registerCore(): void;
|
|
165
173
|
}
|
package/lib/map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EACH,yBAAyB,EACzB,KAAK,EAER,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACH,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAClB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACH,YAAY,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,UAAU,EACV,gBAAgB,EACnB,MAAM,cAAc,CAAC;AAWtB;;;GAGG;AACH,qBAAa,UAAW,YAAW,eAAe;IAC9C;;OAEG;IACH,gBAAuB,IAAI,2CAA2C;IAEtE;;OAEG;IACH,gBAAuB,UAAU,EAAE,kBAAkB,CAInD;IAEF;;OAEG;IACH,IAAW,IAAI,WAEd;IAED;;OAEG;IACH,IAAW,UAAU,uBAEpB;IAED;;OAEG;IACU,IAAI,CACb,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAOxD;;OAEG;IACI,MAAM,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU;CAMzE;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,YAAY,CAAC,gBAAgB,CAAE,YAAW,UAAU;IAC/E
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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"}
|
package/lib/map.js
CHANGED
|
@@ -89,7 +89,6 @@ export class SharedMap extends SharedObject {
|
|
|
89
89
|
* ```typescript
|
|
90
90
|
* const myMap = SharedMap.create(this.runtime, id);
|
|
91
91
|
* ```
|
|
92
|
-
*
|
|
93
92
|
*/
|
|
94
93
|
static create(runtime, id) {
|
|
95
94
|
return runtime.createChannel(id, MapFactory.Type);
|
|
@@ -185,6 +184,7 @@ export class SharedMap extends SharedObject {
|
|
|
185
184
|
}
|
|
186
185
|
/**
|
|
187
186
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.snapshotCore}
|
|
187
|
+
* @internal
|
|
188
188
|
*/
|
|
189
189
|
snapshotCore(serializer) {
|
|
190
190
|
let currentSize = 0;
|
|
@@ -252,6 +252,7 @@ export class SharedMap extends SharedObject {
|
|
|
252
252
|
}
|
|
253
253
|
/**
|
|
254
254
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
|
|
255
|
+
* @internal
|
|
255
256
|
*/
|
|
256
257
|
async loadCore(storage) {
|
|
257
258
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
@@ -270,20 +271,26 @@ export class SharedMap extends SharedObject {
|
|
|
270
271
|
}
|
|
271
272
|
/**
|
|
272
273
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
|
|
274
|
+
* @internal
|
|
273
275
|
*/
|
|
274
276
|
onDisconnect() { }
|
|
275
277
|
/**
|
|
276
278
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}
|
|
279
|
+
* @internal
|
|
277
280
|
*/
|
|
278
281
|
reSubmitCore(content, localOpMetadata) {
|
|
279
282
|
this.kernel.trySubmitMessage(content, localOpMetadata);
|
|
280
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* @internal
|
|
286
|
+
*/
|
|
281
287
|
applyStashedOp(content) {
|
|
282
288
|
this.kernel.tryProcessMessage(content, false, undefined, undefined);
|
|
283
289
|
return this.kernel.tryGetStashedOpLocalMetadata(content);
|
|
284
290
|
}
|
|
285
291
|
/**
|
|
286
292
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
|
|
293
|
+
* @internal
|
|
287
294
|
*/
|
|
288
295
|
processCore(message, local, localOpMetadata) {
|
|
289
296
|
if (message.type === MessageType.Operation) {
|
|
@@ -292,6 +299,7 @@ export class SharedMap extends SharedObject {
|
|
|
292
299
|
}
|
|
293
300
|
/**
|
|
294
301
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.registerCore}
|
|
302
|
+
* @internal
|
|
295
303
|
*/
|
|
296
304
|
registerCore() {
|
|
297
305
|
for (const value of this.values()) {
|
package/lib/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IFluidSerializer } from \"@fluidframework/core-interfaces\";\nimport { addBlobToTree } from \"@fluidframework/protocol-base\";\nimport {\n ISequencedDocumentMessage,\n ITree,\n MessageType,\n} from \"@fluidframework/protocol-definitions\";\nimport {\n IChannelAttributes,\n IFluidDataStoreRuntime,\n IChannelStorageService,\n IChannelServices,\n IChannelFactory,\n} from \"@fluidframework/datastore-definitions\";\nimport { readAndParse } from \"@fluidframework/driver-utils\";\nimport {\n SharedObject,\n} from \"@fluidframework/shared-object-base\";\nimport {\n ISharedMap,\n ISharedMapEvents,\n} from \"./interfaces\";\nimport { IMapDataObjectSerializable, MapKernel } from \"./mapKernel\";\nimport { pkgVersion } from \"./packageVersion\";\n\ninterface IMapSerializationFormat {\n blobs?: string[];\n content: IMapDataObjectSerializable;\n}\n\nconst snapshotFileName = \"header\";\n\n/**\n * The factory that defines the map.\n * @sealed\n */\nexport class MapFactory implements IChannelFactory {\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\n public static readonly Type = \"https://graph.microsoft.com/types/map\";\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\n public static readonly Attributes: IChannelAttributes = {\n type: MapFactory.Type,\n snapshotFormatVersion: \"0.2\",\n packageVersion: pkgVersion,\n };\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\n public get type() {\n return MapFactory.Type;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\n public get attributes() {\n return MapFactory.Attributes;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n public async load(\n runtime: IFluidDataStoreRuntime,\n id: string,\n services: IChannelServices,\n attributes: IChannelAttributes): Promise<ISharedMap> {\n const map = new SharedMap(id, runtime, attributes);\n await map.load(services);\n\n return map;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}\n */\n public create(runtime: IFluidDataStoreRuntime, id: string): ISharedMap {\n const map = new SharedMap(id, runtime, MapFactory.Attributes);\n map.initializeLocal();\n\n return map;\n }\n}\n\n/**\n * The SharedMap distributed data structure can be used to store key-value pairs. It provides the same API for setting\n * and retrieving values that JavaScript developers are accustomed to with the\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map | Map} built-in object.\n * However, the keys of a SharedMap must be strings.\n */\nexport class SharedMap extends SharedObject<ISharedMapEvents> implements ISharedMap {\n /**\n * Create a new shared map.\n * @param runtime - The data store runtime that the new shared map belongs to.\n * @param id - Optional name of the shared map.\n * @returns Newly created shared map.\n *\n * @example\n * To create a `SharedMap`, call the static create method:\n *\n * ```typescript\n * const myMap = SharedMap.create(this.runtime, id);\n * ```\n *\n */\n public static create(runtime: IFluidDataStoreRuntime, id?: string): SharedMap {\n return runtime.createChannel(id, MapFactory.Type) as SharedMap;\n }\n\n /**\n * Get a factory for SharedMap to register with the data store.\n * @returns A factory that creates SharedMaps and loads them from storage.\n */\n public static getFactory(): IChannelFactory {\n return new MapFactory();\n }\n\n /**\n * String representation for the class.\n */\n public readonly [Symbol.toStringTag]: string = \"SharedMap\";\n\n /**\n * MapKernel which manages actual map operations.\n */\n private readonly kernel: MapKernel;\n\n /**\n * Do not call the constructor. Instead, you should use the {@link SharedMap.create | create method}.\n *\n * @param id - String identifier.\n * @param runtime - Data store runtime.\n * @param attributes - The attributes for the map.\n */\n constructor(\n id: string,\n runtime: IFluidDataStoreRuntime,\n attributes: IChannelAttributes,\n ) {\n super(id, runtime, attributes);\n this.kernel = new MapKernel(\n this.serializer,\n this.handle,\n (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata),\n () => this.isAttached(),\n this,\n );\n }\n\n /**\n * Get an iterator over the keys in this map.\n * @returns The iterator\n */\n public keys(): IterableIterator<string> {\n return this.kernel.keys();\n }\n\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n public entries(): IterableIterator<[string, any]> {\n return this.kernel.entries();\n }\n\n /**\n * Get an iterator over the values in this map.\n * @returns The iterator\n */\n public values(): IterableIterator<any> {\n return this.kernel.values();\n }\n\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n public [Symbol.iterator](): IterableIterator<[string, any]> {\n return this.kernel.entries();\n }\n\n /**\n * The number of key/value pairs stored in the map.\n */\n public get size() {\n return this.kernel.size;\n }\n\n /**\n * Executes the given callback on each entry in the map.\n * @param callbackFn - Callback function\n */\n public forEach(callbackFn: (value: any, key: string, map: Map<string, any>) => void): void {\n this.kernel.forEach(callbackFn);\n }\n\n /**\n * {@inheritDoc ISharedMap.get}\n */\n public get<T = any>(key: string): T | undefined {\n return this.kernel.get<T>(key);\n }\n\n /**\n * {@inheritDoc ISharedMap.wait}\n */\n public async wait<T = any>(key: string): Promise<T> {\n return this.kernel.wait<T>(key);\n }\n\n /**\n * Check if a key exists in the map.\n * @param key - The key to check\n * @returns True if the key exists, false otherwise\n */\n public has(key: string): boolean {\n return this.kernel.has(key);\n }\n\n /**\n * {@inheritDoc ISharedMap.set}\n */\n public set(key: string, value: any): this {\n this.kernel.set(key, value);\n return this;\n }\n\n /**\n * Delete a key from the map.\n * @param key - Key to delete\n * @returns True if the key existed and was deleted, false if it did not exist\n */\n public delete(key: string): boolean {\n return this.kernel.delete(key);\n }\n\n /**\n * Clear all data from the map.\n */\n public clear(): void {\n this.kernel.clear();\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.snapshotCore}\n */\n protected snapshotCore(serializer: IFluidSerializer): ITree {\n let currentSize = 0;\n let counter = 0;\n let headerBlob: IMapDataObjectSerializable = {};\n const blobs: string[] = [];\n\n const tree: ITree = {\n entries: [],\n };\n\n const data = this.kernel.getSerializedStorage(serializer);\n\n // If single property exceeds this size, it goes into its own blob\n const MinValueSizeSeparateSnapshotBlob = 8 * 1024;\n\n // Maximum blob size for multiple map properties\n // Should be bigger than MinValueSizeSeparateSnapshotBlob\n const MaxSnapshotBlobSize = 16 * 1024;\n\n // Partitioning algorithm:\n // 1) Split large (over MinValueSizeSeparateSnapshotBlob = 8K) properties into their own blobs.\n // Naming (across snapshots) of such blob does not have to be stable across snapshots,\n // As de-duping process (in driver) should not care about paths, only content.\n // 2) Split remaining properties into blobs of MaxSnapshotBlobSize (16K) size.\n // This process does not produce stable partitioning. This means\n // modification (including addition / deletion) of property can shift properties across blobs\n // and result in non-incremental snapshot.\n // This can be improved in the future, without being format breaking change, as loading sequence\n // loads all blobs at once and partitioning schema has no impact on that process.\n for (const key of Object.keys(data)) {\n const value = data[key];\n if (value.value && value.value.length >= MinValueSizeSeparateSnapshotBlob) {\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n const content: IMapDataObjectSerializable = {\n [key]: {\n type: value.type,\n value: JSON.parse(value.value),\n },\n };\n addBlobToTree(tree, blobName, content);\n } else {\n currentSize += value.type.length + 21; // Approximation cost of property header\n if (value.value) {\n currentSize += value.value.length;\n }\n\n if (currentSize > MaxSnapshotBlobSize) {\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n addBlobToTree(tree, blobName, headerBlob);\n headerBlob = {};\n currentSize = 0;\n }\n headerBlob[key] = {\n type: value.type,\n value: value.value === undefined ? undefined : JSON.parse(value.value),\n };\n }\n }\n\n const header: IMapSerializationFormat = {\n blobs,\n content: headerBlob,\n };\n addBlobToTree(tree, snapshotFileName, header);\n\n return tree;\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}\n */\n protected async loadCore(storage: IChannelStorageService) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n const json = await readAndParse<object>(storage, snapshotFileName);\n const newFormat = json as IMapSerializationFormat;\n if (Array.isArray(newFormat.blobs)) {\n this.kernel.populateFromSerializable(newFormat.content);\n await Promise.all(newFormat.blobs.map(async (value) => {\n const content = await readAndParse<IMapDataObjectSerializable>(storage, value);\n this.kernel.populateFromSerializable(content);\n }));\n } else {\n this.kernel.populateFromSerializable(json as IMapDataObjectSerializable);\n }\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}\n */\n protected onDisconnect() {}\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}\n */\n protected reSubmitCore(content: any, localOpMetadata: unknown) {\n this.kernel.trySubmitMessage(content, localOpMetadata);\n }\n\n protected applyStashedOp(content: any): unknown {\n this.kernel.tryProcessMessage(content, false, undefined, undefined);\n return this.kernel.tryGetStashedOpLocalMetadata(content);\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}\n */\n protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) {\n if (message.type === MessageType.Operation) {\n this.kernel.tryProcessMessage(message.contents, local, message, localOpMetadata);\n }\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.registerCore}\n */\n protected registerCore() {\n for (const value of this.values()) {\n if (SharedObject.is(value)) {\n value.bindToContext();\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IFluidSerializer } from \"@fluidframework/core-interfaces\";\nimport { addBlobToTree } from \"@fluidframework/protocol-base\";\nimport {\n ISequencedDocumentMessage,\n ITree,\n MessageType,\n} from \"@fluidframework/protocol-definitions\";\nimport {\n IChannelAttributes,\n IFluidDataStoreRuntime,\n IChannelStorageService,\n IChannelServices,\n IChannelFactory,\n} from \"@fluidframework/datastore-definitions\";\nimport { readAndParse } from \"@fluidframework/driver-utils\";\nimport {\n SharedObject,\n} from \"@fluidframework/shared-object-base\";\nimport {\n ISharedMap,\n ISharedMapEvents,\n} from \"./interfaces\";\nimport { IMapDataObjectSerializable, MapKernel } from \"./mapKernel\";\nimport { pkgVersion } from \"./packageVersion\";\n\ninterface IMapSerializationFormat {\n blobs?: string[];\n content: IMapDataObjectSerializable;\n}\n\nconst snapshotFileName = \"header\";\n\n/**\n * The factory that defines the map.\n * @sealed\n */\nexport class MapFactory implements IChannelFactory {\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\n public static readonly Type = \"https://graph.microsoft.com/types/map\";\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\n public static readonly Attributes: IChannelAttributes = {\n type: MapFactory.Type,\n snapshotFormatVersion: \"0.2\",\n packageVersion: pkgVersion,\n };\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n */\n public get type() {\n return MapFactory.Type;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n */\n public get attributes() {\n return MapFactory.Attributes;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n */\n public async load(\n runtime: IFluidDataStoreRuntime,\n id: string,\n services: IChannelServices,\n attributes: IChannelAttributes): Promise<ISharedMap> {\n const map = new SharedMap(id, runtime, attributes);\n await map.load(services);\n\n return map;\n }\n\n /**\n * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}\n */\n public create(runtime: IFluidDataStoreRuntime, id: string): ISharedMap {\n const map = new SharedMap(id, runtime, MapFactory.Attributes);\n map.initializeLocal();\n\n return map;\n }\n}\n\n/**\n * The SharedMap distributed data structure can be used to store key-value pairs. It provides the same API for setting\n * and retrieving values that JavaScript developers are accustomed to with the\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map | Map} built-in object.\n * However, the keys of a SharedMap must be strings.\n */\nexport class SharedMap extends SharedObject<ISharedMapEvents> implements ISharedMap {\n /**\n * Create a new shared map.\n * @param runtime - The data store runtime that the new shared map belongs to.\n * @param id - Optional name of the shared map.\n * @returns Newly created shared map.\n *\n * @example\n * To create a `SharedMap`, call the static create method:\n *\n * ```typescript\n * const myMap = SharedMap.create(this.runtime, id);\n * ```\n */\n public static create(runtime: IFluidDataStoreRuntime, id?: string): SharedMap {\n return runtime.createChannel(id, MapFactory.Type) as SharedMap;\n }\n\n /**\n * Get a factory for SharedMap to register with the data store.\n * @returns A factory that creates SharedMaps and loads them from storage.\n */\n public static getFactory(): IChannelFactory {\n return new MapFactory();\n }\n\n /**\n * String representation for the class.\n */\n public readonly [Symbol.toStringTag]: string = \"SharedMap\";\n\n /**\n * MapKernel which manages actual map operations.\n */\n private readonly kernel: MapKernel;\n\n /**\n * Do not call the constructor. Instead, you should use the {@link SharedMap.create | create method}.\n *\n * @param id - String identifier.\n * @param runtime - Data store runtime.\n * @param attributes - The attributes for the map.\n */\n constructor(\n id: string,\n runtime: IFluidDataStoreRuntime,\n attributes: IChannelAttributes,\n ) {\n super(id, runtime, attributes);\n this.kernel = new MapKernel(\n this.serializer,\n this.handle,\n (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata),\n () => this.isAttached(),\n this,\n );\n }\n\n /**\n * Get an iterator over the keys in this map.\n * @returns The iterator\n */\n public keys(): IterableIterator<string> {\n return this.kernel.keys();\n }\n\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n public entries(): IterableIterator<[string, any]> {\n return this.kernel.entries();\n }\n\n /**\n * Get an iterator over the values in this map.\n * @returns The iterator\n */\n public values(): IterableIterator<any> {\n return this.kernel.values();\n }\n\n /**\n * Get an iterator over the entries in this map.\n * @returns The iterator\n */\n public [Symbol.iterator](): IterableIterator<[string, any]> {\n return this.kernel.entries();\n }\n\n /**\n * The number of key/value pairs stored in the map.\n */\n public get size() {\n return this.kernel.size;\n }\n\n /**\n * Executes the given callback on each entry in the map.\n * @param callbackFn - Callback function\n */\n public forEach(callbackFn: (value: any, key: string, map: Map<string, any>) => void): void {\n this.kernel.forEach(callbackFn);\n }\n\n /**\n * {@inheritDoc ISharedMap.get}\n */\n public get<T = any>(key: string): T | undefined {\n return this.kernel.get<T>(key);\n }\n\n /**\n * {@inheritDoc ISharedMap.wait}\n */\n public async wait<T = any>(key: string): Promise<T> {\n return this.kernel.wait<T>(key);\n }\n\n /**\n * Check if a key exists in the map.\n * @param key - The key to check\n * @returns True if the key exists, false otherwise\n */\n public has(key: string): boolean {\n return this.kernel.has(key);\n }\n\n /**\n * {@inheritDoc ISharedMap.set}\n */\n public set(key: string, value: any): this {\n this.kernel.set(key, value);\n return this;\n }\n\n /**\n * Delete a key from the map.\n * @param key - Key to delete\n * @returns True if the key existed and was deleted, false if it did not exist\n */\n public delete(key: string): boolean {\n return this.kernel.delete(key);\n }\n\n /**\n * Clear all data from the map.\n */\n public clear(): void {\n this.kernel.clear();\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.snapshotCore}\n * @internal\n */\n protected snapshotCore(serializer: IFluidSerializer): ITree {\n let currentSize = 0;\n let counter = 0;\n let headerBlob: IMapDataObjectSerializable = {};\n const blobs: string[] = [];\n\n const tree: ITree = {\n entries: [],\n };\n\n const data = this.kernel.getSerializedStorage(serializer);\n\n // If single property exceeds this size, it goes into its own blob\n const MinValueSizeSeparateSnapshotBlob = 8 * 1024;\n\n // Maximum blob size for multiple map properties\n // Should be bigger than MinValueSizeSeparateSnapshotBlob\n const MaxSnapshotBlobSize = 16 * 1024;\n\n // Partitioning algorithm:\n // 1) Split large (over MinValueSizeSeparateSnapshotBlob = 8K) properties into their own blobs.\n // Naming (across snapshots) of such blob does not have to be stable across snapshots,\n // As de-duping process (in driver) should not care about paths, only content.\n // 2) Split remaining properties into blobs of MaxSnapshotBlobSize (16K) size.\n // This process does not produce stable partitioning. This means\n // modification (including addition / deletion) of property can shift properties across blobs\n // and result in non-incremental snapshot.\n // This can be improved in the future, without being format breaking change, as loading sequence\n // loads all blobs at once and partitioning schema has no impact on that process.\n for (const key of Object.keys(data)) {\n const value = data[key];\n if (value.value && value.value.length >= MinValueSizeSeparateSnapshotBlob) {\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n const content: IMapDataObjectSerializable = {\n [key]: {\n type: value.type,\n value: JSON.parse(value.value),\n },\n };\n addBlobToTree(tree, blobName, content);\n } else {\n currentSize += value.type.length + 21; // Approximation cost of property header\n if (value.value) {\n currentSize += value.value.length;\n }\n\n if (currentSize > MaxSnapshotBlobSize) {\n const blobName = `blob${counter}`;\n counter++;\n blobs.push(blobName);\n addBlobToTree(tree, blobName, headerBlob);\n headerBlob = {};\n currentSize = 0;\n }\n headerBlob[key] = {\n type: value.type,\n value: value.value === undefined ? undefined : JSON.parse(value.value),\n };\n }\n }\n\n const header: IMapSerializationFormat = {\n blobs,\n content: headerBlob,\n };\n addBlobToTree(tree, snapshotFileName, header);\n\n return tree;\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}\n * @internal\n */\n protected async loadCore(storage: IChannelStorageService) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n const json = await readAndParse<object>(storage, snapshotFileName);\n const newFormat = json as IMapSerializationFormat;\n if (Array.isArray(newFormat.blobs)) {\n this.kernel.populateFromSerializable(newFormat.content);\n await Promise.all(newFormat.blobs.map(async (value) => {\n const content = await readAndParse<IMapDataObjectSerializable>(storage, value);\n this.kernel.populateFromSerializable(content);\n }));\n } else {\n this.kernel.populateFromSerializable(json as IMapDataObjectSerializable);\n }\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}\n * @internal\n */\n protected onDisconnect() {}\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}\n * @internal\n */\n protected reSubmitCore(content: any, localOpMetadata: unknown) {\n this.kernel.trySubmitMessage(content, localOpMetadata);\n }\n\n /**\n * @internal\n */\n protected applyStashedOp(content: any): unknown {\n this.kernel.tryProcessMessage(content, false, undefined, undefined);\n return this.kernel.tryGetStashedOpLocalMetadata(content);\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}\n * @internal\n */\n protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) {\n if (message.type === MessageType.Operation) {\n this.kernel.tryProcessMessage(message.contents, local, message, localOpMetadata);\n }\n }\n\n /**\n * {@inheritDoc @fluidframework/shared-object-base#SharedObject.registerCore}\n * @internal\n */\n protected registerCore() {\n for (const value of this.values()) {\n if (SharedObject.is(value)) {\n value.bindToContext();\n }\n }\n }\n}\n"]}
|
package/lib/packageVersion.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,wBAAwB,CAAC;AAC7C,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,wBAAwB,CAAC;AAC7C,eAAO,MAAM,UAAU,iBAAiB,CAAC"}
|
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,cAAc,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 = \"0.49.0-39015\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/map",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0-39015",
|
|
4
4
|
"description": "Distributed map",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": "https://github.com/microsoft/FluidFramework",
|
|
@@ -58,19 +58,19 @@
|
|
|
58
58
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
59
59
|
"@fluidframework/common-utils": "^0.32.1",
|
|
60
60
|
"@fluidframework/core-interfaces": "^0.39.7",
|
|
61
|
-
"@fluidframework/datastore-definitions": "
|
|
62
|
-
"@fluidframework/driver-utils": "
|
|
63
|
-
"@fluidframework/protocol-base": "^0.1031.0",
|
|
61
|
+
"@fluidframework/datastore-definitions": "0.49.0-39015",
|
|
62
|
+
"@fluidframework/driver-utils": "0.49.0-39015",
|
|
63
|
+
"@fluidframework/protocol-base": "^0.1031.0-37526",
|
|
64
64
|
"@fluidframework/protocol-definitions": "^0.1024.0",
|
|
65
|
-
"@fluidframework/shared-object-base": "
|
|
65
|
+
"@fluidframework/shared-object-base": "0.49.0-39015",
|
|
66
66
|
"path-browserify": "^1.0.1"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@fluid-internal/test-dds-utils": "
|
|
69
|
+
"@fluid-internal/test-dds-utils": "0.49.0-39015",
|
|
70
70
|
"@fluidframework/build-common": "^0.23.0",
|
|
71
71
|
"@fluidframework/eslint-config-fluid": "^0.23.0",
|
|
72
|
-
"@fluidframework/mocha-test-setup": "
|
|
73
|
-
"@fluidframework/test-runtime-utils": "
|
|
72
|
+
"@fluidframework/mocha-test-setup": "0.49.0-39015",
|
|
73
|
+
"@fluidframework/test-runtime-utils": "0.49.0-39015",
|
|
74
74
|
"@microsoft/api-extractor": "^7.16.1",
|
|
75
75
|
"@types/mocha": "^8.2.2",
|
|
76
76
|
"@types/node": "^12.19.0",
|
package/src/directory.ts
CHANGED
|
@@ -189,7 +189,7 @@ type IDirectorySubDirectoryOperation = IDirectoryCreateSubDirectoryOperation | I
|
|
|
189
189
|
/**
|
|
190
190
|
* Any operation on a directory
|
|
191
191
|
*/
|
|
192
|
-
type IDirectoryOperation = IDirectoryStorageOperation | IDirectorySubDirectoryOperation;
|
|
192
|
+
export type IDirectoryOperation = IDirectoryStorageOperation | IDirectorySubDirectoryOperation;
|
|
193
193
|
|
|
194
194
|
/**
|
|
195
195
|
* Defines the in-memory object structure to be used for the conversion to/from serialized.
|
|
@@ -563,6 +563,7 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
563
563
|
|
|
564
564
|
/**
|
|
565
565
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.snapshotCore}
|
|
566
|
+
* @internal
|
|
566
567
|
*/
|
|
567
568
|
protected snapshotCore(serializer: IFluidSerializer): ITree {
|
|
568
569
|
return serializeDirectory(this.root, serializer);
|
|
@@ -581,11 +582,13 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
581
582
|
|
|
582
583
|
/**
|
|
583
584
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
|
|
585
|
+
* @internal
|
|
584
586
|
*/
|
|
585
587
|
protected onDisconnect() {}
|
|
586
588
|
|
|
587
589
|
/**
|
|
588
590
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}
|
|
591
|
+
* @internal
|
|
589
592
|
*/
|
|
590
593
|
protected reSubmitCore(content: any, localOpMetadata: unknown) {
|
|
591
594
|
const message = content as IDirectoryOperation;
|
|
@@ -596,6 +599,7 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
596
599
|
|
|
597
600
|
/**
|
|
598
601
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
|
|
602
|
+
* @internal
|
|
599
603
|
*/
|
|
600
604
|
protected async loadCore(storage: IChannelStorageService) {
|
|
601
605
|
const data = await readAndParse(storage, snapshotFileName);
|
|
@@ -655,6 +659,7 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
655
659
|
|
|
656
660
|
/**
|
|
657
661
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.registerCore}
|
|
662
|
+
* @internal
|
|
658
663
|
*/
|
|
659
664
|
protected registerCore(): void {
|
|
660
665
|
const subdirsToRegisterFrom = new Array<SubDirectory>();
|
|
@@ -675,6 +680,7 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
675
680
|
|
|
676
681
|
/**
|
|
677
682
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
|
|
683
|
+
* @internal
|
|
678
684
|
*/
|
|
679
685
|
protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void {
|
|
680
686
|
if (message.type === MessageType.Operation) {
|
|
@@ -814,6 +820,9 @@ export class SharedDirectory extends SharedObject<ISharedDirectoryEvents> implem
|
|
|
814
820
|
);
|
|
815
821
|
}
|
|
816
822
|
|
|
823
|
+
/**
|
|
824
|
+
* @internal
|
|
825
|
+
*/
|
|
817
826
|
protected applyStashedOp() {
|
|
818
827
|
throw new Error("not implemented");
|
|
819
828
|
}
|
package/src/index.ts
CHANGED
package/src/interfaces.ts
CHANGED
|
@@ -99,6 +99,49 @@ export interface IDirectory extends Map<string, any>, IEventProvider<IDirectoryE
|
|
|
99
99
|
getWorkingDirectory(relativePath: string): IDirectory | undefined;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Events emitted in response to changes to the directory data. These events only emit on the ISharedDirectory itself,
|
|
104
|
+
* and not on subdirectories.
|
|
105
|
+
*
|
|
106
|
+
* ### "valueChanged"
|
|
107
|
+
*
|
|
108
|
+
* The valueChanged event is emitted when a key is set or deleted. This is emitted for any key in the ISharedDirectory
|
|
109
|
+
* or any subdirectory.
|
|
110
|
+
*
|
|
111
|
+
* #### Listener signature
|
|
112
|
+
*
|
|
113
|
+
* ```typescript
|
|
114
|
+
* (
|
|
115
|
+
* changed: IDirectoryValueChanged,
|
|
116
|
+
* local: boolean,
|
|
117
|
+
* op: ISequencedDocumentMessage | null,
|
|
118
|
+
* target: IEventThisPlaceHolder,
|
|
119
|
+
* ) => void
|
|
120
|
+
* ```
|
|
121
|
+
* - `changed` - Information on the key that changed, its value prior to the change, and the path to the key that
|
|
122
|
+
* changed.
|
|
123
|
+
*
|
|
124
|
+
* - `local` - Whether the change originated from the this client.
|
|
125
|
+
*
|
|
126
|
+
* - `op` - The op that caused the change in value.
|
|
127
|
+
*
|
|
128
|
+
* - `target` - The ISharedDirectory itself.
|
|
129
|
+
*
|
|
130
|
+
* ### "clear"
|
|
131
|
+
*
|
|
132
|
+
* The clear event is emitted when the ISharedDirectory is cleared.
|
|
133
|
+
*
|
|
134
|
+
* #### Listener signature
|
|
135
|
+
*
|
|
136
|
+
* ```typescript
|
|
137
|
+
* (local: boolean, op: ISequencedDocumentMessage | null, target: IEventThisPlaceHolder) => void
|
|
138
|
+
* ```
|
|
139
|
+
* - `local` - Whether the clear originated from the this client.
|
|
140
|
+
*
|
|
141
|
+
* - `op` - The op that caused the clear.
|
|
142
|
+
*
|
|
143
|
+
* - `target` - The ISharedDirectory itself.
|
|
144
|
+
*/
|
|
102
145
|
export interface ISharedDirectoryEvents extends ISharedObjectEvents {
|
|
103
146
|
(event: "valueChanged", listener: (
|
|
104
147
|
changed: IDirectoryValueChanged,
|
|
@@ -113,6 +156,25 @@ export interface ISharedDirectoryEvents extends ISharedObjectEvents {
|
|
|
113
156
|
) => void);
|
|
114
157
|
}
|
|
115
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Events emitted in response to changes to the directory data.
|
|
161
|
+
*
|
|
162
|
+
* ### "containedValueChanged"
|
|
163
|
+
*
|
|
164
|
+
* The containedValueChanged event is emitted when a key is set or deleted. As opposed to the SharedDirectory's
|
|
165
|
+
* valueChanged event, this is emitted only on the IDirectory that directly contains the key.
|
|
166
|
+
*
|
|
167
|
+
* #### Listener signature
|
|
168
|
+
*
|
|
169
|
+
* ```typescript
|
|
170
|
+
* (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void
|
|
171
|
+
* ```
|
|
172
|
+
* - `changed` - Information on the key that changed and its value prior to the change.
|
|
173
|
+
*
|
|
174
|
+
* - `local` - Whether the change originated from the this client.
|
|
175
|
+
*
|
|
176
|
+
* - `target` - The IDirectory itself.
|
|
177
|
+
*/
|
|
116
178
|
export interface IDirectoryEvents extends IEvent {
|
|
117
179
|
(event: "containedValueChanged", listener: (
|
|
118
180
|
changed: IValueChanged,
|
|
@@ -143,6 +205,46 @@ export interface IDirectoryValueChanged extends IValueChanged {
|
|
|
143
205
|
path: string;
|
|
144
206
|
}
|
|
145
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Events emitted in response to changes to the map data.
|
|
210
|
+
*
|
|
211
|
+
* ### "valueChanged"
|
|
212
|
+
*
|
|
213
|
+
* The valueChanged event is emitted when a key is set or deleted.
|
|
214
|
+
*
|
|
215
|
+
* #### Listener signature
|
|
216
|
+
*
|
|
217
|
+
* ```typescript
|
|
218
|
+
* (
|
|
219
|
+
* changed: IValueChanged,
|
|
220
|
+
* local: boolean,
|
|
221
|
+
* op: ISequencedDocumentMessage | null,
|
|
222
|
+
* target: IEventThisPlaceHolder,
|
|
223
|
+
* ) => void
|
|
224
|
+
* ```
|
|
225
|
+
* - `changed` - Information on the key that changed and its value prior to the change.
|
|
226
|
+
*
|
|
227
|
+
* - `local` - Whether the change originated from the this client.
|
|
228
|
+
*
|
|
229
|
+
* - `op` - The op that caused the change in value.
|
|
230
|
+
*
|
|
231
|
+
* - `target` - The map itself.
|
|
232
|
+
*
|
|
233
|
+
* ### "clear"
|
|
234
|
+
*
|
|
235
|
+
* The clear event is emitted when the map is cleared.
|
|
236
|
+
*
|
|
237
|
+
* #### Listener signature
|
|
238
|
+
*
|
|
239
|
+
* ```typescript
|
|
240
|
+
* (local: boolean, op: ISequencedDocumentMessage | null, target: IEventThisPlaceHolder) => void
|
|
241
|
+
* ```
|
|
242
|
+
* - `local` - Whether the clear originated from the this client.
|
|
243
|
+
*
|
|
244
|
+
* - `op` - The op that caused the clear.
|
|
245
|
+
*
|
|
246
|
+
* - `target` - The map itself.
|
|
247
|
+
*/
|
|
146
248
|
export interface ISharedMapEvents extends ISharedObjectEvents {
|
|
147
249
|
(event: "valueChanged", listener: (
|
|
148
250
|
changed: IValueChanged,
|
package/src/map.ts
CHANGED
|
@@ -112,7 +112,6 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
112
112
|
* ```typescript
|
|
113
113
|
* const myMap = SharedMap.create(this.runtime, id);
|
|
114
114
|
* ```
|
|
115
|
-
*
|
|
116
115
|
*/
|
|
117
116
|
public static create(runtime: IFluidDataStoreRuntime, id?: string): SharedMap {
|
|
118
117
|
return runtime.createChannel(id, MapFactory.Type) as SharedMap;
|
|
@@ -254,6 +253,7 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
254
253
|
|
|
255
254
|
/**
|
|
256
255
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.snapshotCore}
|
|
256
|
+
* @internal
|
|
257
257
|
*/
|
|
258
258
|
protected snapshotCore(serializer: IFluidSerializer): ITree {
|
|
259
259
|
let currentSize = 0;
|
|
@@ -329,6 +329,7 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
329
329
|
|
|
330
330
|
/**
|
|
331
331
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
|
|
332
|
+
* @internal
|
|
332
333
|
*/
|
|
333
334
|
protected async loadCore(storage: IChannelStorageService) {
|
|
334
335
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
@@ -347,16 +348,21 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
347
348
|
|
|
348
349
|
/**
|
|
349
350
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.onDisconnect}
|
|
351
|
+
* @internal
|
|
350
352
|
*/
|
|
351
353
|
protected onDisconnect() {}
|
|
352
354
|
|
|
353
355
|
/**
|
|
354
356
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.reSubmitCore}
|
|
357
|
+
* @internal
|
|
355
358
|
*/
|
|
356
359
|
protected reSubmitCore(content: any, localOpMetadata: unknown) {
|
|
357
360
|
this.kernel.trySubmitMessage(content, localOpMetadata);
|
|
358
361
|
}
|
|
359
362
|
|
|
363
|
+
/**
|
|
364
|
+
* @internal
|
|
365
|
+
*/
|
|
360
366
|
protected applyStashedOp(content: any): unknown {
|
|
361
367
|
this.kernel.tryProcessMessage(content, false, undefined, undefined);
|
|
362
368
|
return this.kernel.tryGetStashedOpLocalMetadata(content);
|
|
@@ -364,6 +370,7 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
364
370
|
|
|
365
371
|
/**
|
|
366
372
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.processCore}
|
|
373
|
+
* @internal
|
|
367
374
|
*/
|
|
368
375
|
protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) {
|
|
369
376
|
if (message.type === MessageType.Operation) {
|
|
@@ -373,6 +380,7 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
|
|
|
373
380
|
|
|
374
381
|
/**
|
|
375
382
|
* {@inheritDoc @fluidframework/shared-object-base#SharedObject.registerCore}
|
|
383
|
+
* @internal
|
|
376
384
|
*/
|
|
377
385
|
protected registerCore() {
|
|
378
386
|
for (const value of this.values()) {
|
package/src/packageVersion.ts
CHANGED