@fluidframework/map 0.52.1 → 0.53.0-46105
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.map +1 -1
- package/dist/directory.js +40 -41
- package/dist/directory.js.map +1 -1
- package/dist/interfaces.d.ts +4 -5
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/map.js +2 -2
- package/dist/map.js.map +1 -1
- package/dist/mapKernel.d.ts +1 -2
- package/dist/mapKernel.d.ts.map +1 -1
- package/dist/mapKernel.js +17 -17
- 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.map +1 -1
- package/lib/directory.js +40 -41
- package/lib/directory.js.map +1 -1
- package/lib/interfaces.d.ts +4 -5
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/map.js +2 -2
- package/lib/map.js.map +1 -1
- package/lib/mapKernel.d.ts +1 -2
- package/lib/mapKernel.d.ts.map +1 -1
- package/lib/mapKernel.js +17 -17
- 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 +7 -7
- package/src/directory.ts +32 -43
- package/src/interfaces.ts +0 -5
- package/src/map.ts +2 -2
- package/src/mapKernel.ts +15 -20
- package/src/packageVersion.ts +1 -1
package/lib/directory.js
CHANGED
|
@@ -421,7 +421,7 @@ export class SharedDirectory extends SharedObject {
|
|
|
421
421
|
const op = message.contents;
|
|
422
422
|
const handler = this.messageHandlers.get(op.type);
|
|
423
423
|
assert(handler !== undefined, 0x00e /* `Missing message handler for message type: ${message.type}` */);
|
|
424
|
-
handler.process(op, local,
|
|
424
|
+
handler.process(op, local, localOpMetadata);
|
|
425
425
|
}
|
|
426
426
|
}
|
|
427
427
|
/**
|
|
@@ -450,10 +450,10 @@ export class SharedDirectory extends SharedObject {
|
|
|
450
450
|
*/
|
|
451
451
|
setMessageHandlers() {
|
|
452
452
|
this.messageHandlers.set("clear", {
|
|
453
|
-
process: (op, local,
|
|
453
|
+
process: (op, local, localOpMetadata) => {
|
|
454
454
|
const subdir = this.getWorkingDirectory(op.path);
|
|
455
455
|
if (subdir) {
|
|
456
|
-
subdir.processClearMessage(op, local,
|
|
456
|
+
subdir.processClearMessage(op, local, localOpMetadata);
|
|
457
457
|
}
|
|
458
458
|
},
|
|
459
459
|
submit: (op, localOpMetadata) => {
|
|
@@ -465,10 +465,10 @@ export class SharedDirectory extends SharedObject {
|
|
|
465
465
|
},
|
|
466
466
|
});
|
|
467
467
|
this.messageHandlers.set("delete", {
|
|
468
|
-
process: (op, local,
|
|
468
|
+
process: (op, local, localOpMetadata) => {
|
|
469
469
|
const subdir = this.getWorkingDirectory(op.path);
|
|
470
470
|
if (subdir) {
|
|
471
|
-
subdir.processDeleteMessage(op, local,
|
|
471
|
+
subdir.processDeleteMessage(op, local, localOpMetadata);
|
|
472
472
|
}
|
|
473
473
|
},
|
|
474
474
|
submit: (op, localOpMetadata) => {
|
|
@@ -480,11 +480,11 @@ export class SharedDirectory extends SharedObject {
|
|
|
480
480
|
},
|
|
481
481
|
});
|
|
482
482
|
this.messageHandlers.set("set", {
|
|
483
|
-
process: (op, local,
|
|
483
|
+
process: (op, local, localOpMetadata) => {
|
|
484
484
|
const subdir = this.getWorkingDirectory(op.path);
|
|
485
485
|
if (subdir) {
|
|
486
486
|
const context = local ? undefined : this.makeLocal(op.key, op.path, op.value);
|
|
487
|
-
subdir.processSetMessage(op, context, local,
|
|
487
|
+
subdir.processSetMessage(op, context, local, localOpMetadata);
|
|
488
488
|
}
|
|
489
489
|
},
|
|
490
490
|
submit: (op, localOpMetadata) => {
|
|
@@ -496,10 +496,10 @@ export class SharedDirectory extends SharedObject {
|
|
|
496
496
|
},
|
|
497
497
|
});
|
|
498
498
|
this.messageHandlers.set("createSubDirectory", {
|
|
499
|
-
process: (op, local,
|
|
499
|
+
process: (op, local, localOpMetadata) => {
|
|
500
500
|
const parentSubdir = this.getWorkingDirectory(op.path);
|
|
501
501
|
if (parentSubdir) {
|
|
502
|
-
parentSubdir.processCreateSubDirectoryMessage(op, local,
|
|
502
|
+
parentSubdir.processCreateSubDirectoryMessage(op, local, localOpMetadata);
|
|
503
503
|
}
|
|
504
504
|
},
|
|
505
505
|
submit: (op, localOpMetadata) => {
|
|
@@ -511,10 +511,10 @@ export class SharedDirectory extends SharedObject {
|
|
|
511
511
|
},
|
|
512
512
|
});
|
|
513
513
|
this.messageHandlers.set("deleteSubDirectory", {
|
|
514
|
-
process: (op, local,
|
|
514
|
+
process: (op, local, localOpMetadata) => {
|
|
515
515
|
const parentSubdir = this.getWorkingDirectory(op.path);
|
|
516
516
|
if (parentSubdir) {
|
|
517
|
-
parentSubdir.processDeleteSubDirectoryMessage(op, local,
|
|
517
|
+
parentSubdir.processDeleteSubDirectoryMessage(op, local, localOpMetadata);
|
|
518
518
|
}
|
|
519
519
|
},
|
|
520
520
|
submit: (op, localOpMetadata) => {
|
|
@@ -629,7 +629,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
629
629
|
const localValue = this.directory.localValueMaker.fromInMemory(value);
|
|
630
630
|
const serializableValue = makeSerializable(localValue, this.serializer, this.directory.handle);
|
|
631
631
|
// Set the value locally.
|
|
632
|
-
this.setCore(key, localValue, true
|
|
632
|
+
this.setCore(key, localValue, true);
|
|
633
633
|
// If we are not attached, don't submit the op.
|
|
634
634
|
if (!this.directory.isAttached()) {
|
|
635
635
|
return this;
|
|
@@ -655,7 +655,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
655
655
|
throw new Error(`SubDirectory name may not contain ${posix.sep}`);
|
|
656
656
|
}
|
|
657
657
|
// Create the sub directory locally first.
|
|
658
|
-
this.createSubDirectoryCore(subdirName, true
|
|
658
|
+
this.createSubDirectoryCore(subdirName, true);
|
|
659
659
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
660
660
|
const subDir = this._subdirectories.get(subdirName);
|
|
661
661
|
// If we are not attached, don't submit the op.
|
|
@@ -687,7 +687,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
687
687
|
*/
|
|
688
688
|
deleteSubDirectory(subdirName) {
|
|
689
689
|
// Delete the sub directory locally first.
|
|
690
|
-
const successfullyRemoved = this.deleteSubDirectoryCore(subdirName, true
|
|
690
|
+
const successfullyRemoved = this.deleteSubDirectoryCore(subdirName, true);
|
|
691
691
|
// If we are not attached, don't submit the op.
|
|
692
692
|
if (!this.directory.isAttached()) {
|
|
693
693
|
return successfullyRemoved;
|
|
@@ -719,7 +719,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
719
719
|
*/
|
|
720
720
|
delete(key) {
|
|
721
721
|
// Delete the key locally first.
|
|
722
|
-
const successfullyRemoved = this.deleteCore(key, true
|
|
722
|
+
const successfullyRemoved = this.deleteCore(key, true);
|
|
723
723
|
// If we are not attached, don't submit the op.
|
|
724
724
|
if (!this.directory.isAttached()) {
|
|
725
725
|
return successfullyRemoved;
|
|
@@ -737,7 +737,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
737
737
|
*/
|
|
738
738
|
clear() {
|
|
739
739
|
// Clear the data locally first.
|
|
740
|
-
this.clearCore(true
|
|
740
|
+
this.clearCore(true);
|
|
741
741
|
// If we are not attached, don't submit the op.
|
|
742
742
|
if (!this.directory.isAttached()) {
|
|
743
743
|
return;
|
|
@@ -832,7 +832,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
832
832
|
* For messages from a remote client, this will be undefined.
|
|
833
833
|
* @internal
|
|
834
834
|
*/
|
|
835
|
-
processClearMessage(op, local,
|
|
835
|
+
processClearMessage(op, local, localOpMetadata) {
|
|
836
836
|
if (local) {
|
|
837
837
|
assert(localOpMetadata !== undefined, 0x00f /* `pendingMessageId is missing from the local client's ${op.type} operation` */);
|
|
838
838
|
const pendingMessageId = localOpMetadata;
|
|
@@ -842,7 +842,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
842
842
|
return;
|
|
843
843
|
}
|
|
844
844
|
this.clearExceptPendingKeys();
|
|
845
|
-
this.directory.emit("clear", local,
|
|
845
|
+
this.directory.emit("clear", local, this.directory);
|
|
846
846
|
}
|
|
847
847
|
/**
|
|
848
848
|
* Process a delete operation.
|
|
@@ -853,11 +853,11 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
853
853
|
* For messages from a remote client, this will be undefined.
|
|
854
854
|
* @internal
|
|
855
855
|
*/
|
|
856
|
-
processDeleteMessage(op, local,
|
|
857
|
-
if (!this.needProcessStorageOperation(op, local,
|
|
856
|
+
processDeleteMessage(op, local, localOpMetadata) {
|
|
857
|
+
if (!this.needProcessStorageOperation(op, local, localOpMetadata)) {
|
|
858
858
|
return;
|
|
859
859
|
}
|
|
860
|
-
this.deleteCore(op.key, local
|
|
860
|
+
this.deleteCore(op.key, local);
|
|
861
861
|
}
|
|
862
862
|
/**
|
|
863
863
|
* Process a set operation.
|
|
@@ -868,14 +868,14 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
868
868
|
* For messages from a remote client, this will be undefined.
|
|
869
869
|
* @internal
|
|
870
870
|
*/
|
|
871
|
-
processSetMessage(op, context, local,
|
|
872
|
-
if (!this.needProcessStorageOperation(op, local,
|
|
871
|
+
processSetMessage(op, context, local, localOpMetadata) {
|
|
872
|
+
if (!this.needProcessStorageOperation(op, local, localOpMetadata)) {
|
|
873
873
|
return;
|
|
874
874
|
}
|
|
875
875
|
// needProcessStorageOperation should have returned false if local is true
|
|
876
876
|
// so we can assume context is not undefined
|
|
877
877
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
878
|
-
this.setCore(op.key, context, local
|
|
878
|
+
this.setCore(op.key, context, local);
|
|
879
879
|
}
|
|
880
880
|
/**
|
|
881
881
|
* Process a create subdirectory operation.
|
|
@@ -886,11 +886,11 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
886
886
|
* For messages from a remote client, this will be undefined.
|
|
887
887
|
* @internal
|
|
888
888
|
*/
|
|
889
|
-
processCreateSubDirectoryMessage(op, local,
|
|
890
|
-
if (!this.needProcessSubDirectoryOperations(op, local,
|
|
889
|
+
processCreateSubDirectoryMessage(op, local, localOpMetadata) {
|
|
890
|
+
if (!this.needProcessSubDirectoryOperations(op, local, localOpMetadata)) {
|
|
891
891
|
return;
|
|
892
892
|
}
|
|
893
|
-
this.createSubDirectoryCore(op.subdirName, local
|
|
893
|
+
this.createSubDirectoryCore(op.subdirName, local);
|
|
894
894
|
}
|
|
895
895
|
/**
|
|
896
896
|
* Process a delete subdirectory operation.
|
|
@@ -901,11 +901,11 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
901
901
|
* For messages from a remote client, this will be undefined.
|
|
902
902
|
* @internal
|
|
903
903
|
*/
|
|
904
|
-
processDeleteSubDirectoryMessage(op, local,
|
|
905
|
-
if (!this.needProcessSubDirectoryOperations(op, local,
|
|
904
|
+
processDeleteSubDirectoryMessage(op, local, localOpMetadata) {
|
|
905
|
+
if (!this.needProcessSubDirectoryOperations(op, local, localOpMetadata)) {
|
|
906
906
|
return;
|
|
907
907
|
}
|
|
908
|
-
this.deleteSubDirectoryCore(op.subdirName, local
|
|
908
|
+
this.deleteSubDirectoryCore(op.subdirName, local);
|
|
909
909
|
}
|
|
910
910
|
/**
|
|
911
911
|
* Submit a clear operation.
|
|
@@ -996,7 +996,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
996
996
|
* For messages from a remote client, this will be undefined.
|
|
997
997
|
* @returns True if the operation should be processed, false otherwise
|
|
998
998
|
*/
|
|
999
|
-
needProcessStorageOperation(op, local,
|
|
999
|
+
needProcessStorageOperation(op, local, localOpMetadata) {
|
|
1000
1000
|
if (this.pendingClearMessageId !== -1) {
|
|
1001
1001
|
if (local) {
|
|
1002
1002
|
assert(localOpMetadata !== undefined && localOpMetadata < this.pendingClearMessageId, 0x010 /* "Received out of order storage op when there is an unackd clear message" */);
|
|
@@ -1030,7 +1030,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
1030
1030
|
* For messages from a remote client, this will be undefined.
|
|
1031
1031
|
* @returns True if the operation should be processed, false otherwise
|
|
1032
1032
|
*/
|
|
1033
|
-
needProcessSubDirectoryOperations(op, local,
|
|
1033
|
+
needProcessSubDirectoryOperations(op, local, localOpMetadata) {
|
|
1034
1034
|
if (this.pendingSubDirectories.has(op.subdirName)) {
|
|
1035
1035
|
if (local) {
|
|
1036
1036
|
assert(localOpMetadata !== undefined, 0x012 /* `pendingMessageId is missing from the local client's ${op.type} operation` */);
|
|
@@ -1065,9 +1065,9 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
1065
1065
|
* @param local - Whether the message originated from the local client
|
|
1066
1066
|
* @param op - The message if from a remote clear, or null if from a local clear
|
|
1067
1067
|
*/
|
|
1068
|
-
clearCore(local
|
|
1068
|
+
clearCore(local) {
|
|
1069
1069
|
this._storage.clear();
|
|
1070
|
-
this.directory.emit("clear", local,
|
|
1070
|
+
this.directory.emit("clear", local, this.directory);
|
|
1071
1071
|
}
|
|
1072
1072
|
/**
|
|
1073
1073
|
* Delete implementation used for both locally sourced deletes as well as incoming remote deletes.
|
|
@@ -1076,12 +1076,12 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
1076
1076
|
* @param op - The message if from a remote delete, or null if from a local delete
|
|
1077
1077
|
* @returns True if the key existed and was deleted, false if it did not exist
|
|
1078
1078
|
*/
|
|
1079
|
-
deleteCore(key, local
|
|
1079
|
+
deleteCore(key, local) {
|
|
1080
1080
|
const previousValue = this.get(key);
|
|
1081
1081
|
const successfullyRemoved = this._storage.delete(key);
|
|
1082
1082
|
if (successfullyRemoved) {
|
|
1083
1083
|
const event = { key, path: this.absolutePath, previousValue };
|
|
1084
|
-
this.directory.emit("valueChanged", event, local,
|
|
1084
|
+
this.directory.emit("valueChanged", event, local, this.directory);
|
|
1085
1085
|
const containedEvent = { key, previousValue };
|
|
1086
1086
|
this.emit("containedValueChanged", containedEvent, local, this);
|
|
1087
1087
|
}
|
|
@@ -1094,11 +1094,11 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
1094
1094
|
* @param local - Whether the message originated from the local client
|
|
1095
1095
|
* @param op - The message if from a remote set, or null if from a local set
|
|
1096
1096
|
*/
|
|
1097
|
-
setCore(key, value, local
|
|
1097
|
+
setCore(key, value, local) {
|
|
1098
1098
|
const previousValue = this.get(key);
|
|
1099
1099
|
this._storage.set(key, value);
|
|
1100
1100
|
const event = { key, path: this.absolutePath, previousValue };
|
|
1101
|
-
this.directory.emit("valueChanged", event, local,
|
|
1101
|
+
this.directory.emit("valueChanged", event, local, this.directory);
|
|
1102
1102
|
const containedEvent = { key, previousValue };
|
|
1103
1103
|
this.emit("containedValueChanged", containedEvent, local, this);
|
|
1104
1104
|
}
|
|
@@ -1106,9 +1106,8 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
1106
1106
|
* Create subdirectory implementation used for both locally sourced creation as well as incoming remote creation.
|
|
1107
1107
|
* @param subdirName - The name of the subdirectory being created
|
|
1108
1108
|
* @param local - Whether the message originated from the local client
|
|
1109
|
-
* @param op - The message if from a remote create, or null if from a local create
|
|
1110
1109
|
*/
|
|
1111
|
-
createSubDirectoryCore(subdirName, local
|
|
1110
|
+
createSubDirectoryCore(subdirName, local) {
|
|
1112
1111
|
if (!this._subdirectories.has(subdirName)) {
|
|
1113
1112
|
this._subdirectories.set(subdirName, new SubDirectory(this.directory, this.runtime, this.serializer, posix.join(this.absolutePath, subdirName)));
|
|
1114
1113
|
}
|
|
@@ -1119,7 +1118,7 @@ class SubDirectory extends TypedEventEmitter {
|
|
|
1119
1118
|
* @param local - Whether the message originated from the local client
|
|
1120
1119
|
* @param op - The message if from a remote delete, or null if from a local delete
|
|
1121
1120
|
*/
|
|
1122
|
-
deleteSubDirectoryCore(subdirName, local
|
|
1121
|
+
deleteSubDirectoryCore(subdirName, local) {
|
|
1123
1122
|
// This should make the subdirectory structure unreachable so it can be GC'd and won't appear in snapshots
|
|
1124
1123
|
// Might want to consider cleaning out the structure more exhaustively though?
|
|
1125
1124
|
return this._subdirectories.delete(subdirName);
|