@fluidframework/matrix 2.0.0-internal.7.3.0 → 2.0.0-internal.7.4.1

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +39 -0
  3. package/api-extractor-lint.json +13 -0
  4. package/api-extractor.json +8 -3
  5. package/api-report/matrix.api.md +19 -9
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/matrix-alpha.d.ts +71 -11
  10. package/dist/matrix-beta.d.ts +41 -134
  11. package/dist/matrix-public.d.ts +41 -134
  12. package/dist/matrix-untrimmed.d.ts +71 -11
  13. package/dist/matrix.cjs +175 -46
  14. package/dist/matrix.cjs.map +1 -1
  15. package/dist/matrix.d.ts +67 -9
  16. package/dist/matrix.d.ts.map +1 -1
  17. package/dist/ops.cjs +1 -0
  18. package/dist/ops.cjs.map +1 -1
  19. package/dist/ops.d.ts +5 -1
  20. package/dist/ops.d.ts.map +1 -1
  21. package/dist/packageVersion.cjs +1 -1
  22. package/dist/packageVersion.cjs.map +1 -1
  23. package/dist/packageVersion.d.ts +1 -1
  24. package/dist/runtime.cjs +1 -1
  25. package/dist/runtime.cjs.map +1 -1
  26. package/dist/runtime.d.ts +1 -1
  27. package/dist/types.cjs.map +1 -1
  28. package/dist/types.d.ts +2 -2
  29. package/lib/handlecache.d.ts +2 -2
  30. package/lib/handlecache.d.ts.map +1 -1
  31. package/lib/index.d.ts +3 -3
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.mjs.map +1 -1
  34. package/lib/matrix-alpha.d.ts +71 -11
  35. package/lib/matrix-beta.d.ts +41 -134
  36. package/lib/matrix-public.d.ts +41 -134
  37. package/lib/matrix-untrimmed.d.ts +71 -11
  38. package/lib/matrix.d.ts +69 -11
  39. package/lib/matrix.d.ts.map +1 -1
  40. package/lib/matrix.mjs +175 -46
  41. package/lib/matrix.mjs.map +1 -1
  42. package/lib/ops.d.ts +5 -1
  43. package/lib/ops.d.ts.map +1 -1
  44. package/lib/ops.mjs +1 -0
  45. package/lib/ops.mjs.map +1 -1
  46. package/lib/packageVersion.d.ts +1 -1
  47. package/lib/packageVersion.mjs +1 -1
  48. package/lib/packageVersion.mjs.map +1 -1
  49. package/lib/permutationvector.d.ts +3 -3
  50. package/lib/permutationvector.d.ts.map +1 -1
  51. package/lib/runtime.d.ts +1 -1
  52. package/lib/runtime.d.ts.map +1 -1
  53. package/lib/runtime.mjs +1 -1
  54. package/lib/runtime.mjs.map +1 -1
  55. package/lib/serialization.d.ts.map +1 -1
  56. package/lib/sparsearray2d.d.ts.map +1 -1
  57. package/lib/types.d.ts +2 -2
  58. package/lib/types.mjs.map +1 -1
  59. package/lib/undoprovider.d.ts +4 -4
  60. package/lib/undoprovider.d.ts.map +1 -1
  61. package/matrix.test-files.tar +0 -0
  62. package/package.json +26 -31
  63. package/src/index.ts +1 -1
  64. package/src/matrix.ts +282 -60
  65. package/src/ops.ts +5 -0
  66. package/src/packageVersion.ts +1 -1
  67. package/src/runtime.ts +1 -1
  68. package/src/types.ts +2 -2
@@ -3,6 +3,7 @@ import { IChannelAttributes } from '@fluidframework/datastore-definitions';
3
3
  import { IChannelFactory } from '@fluidframework/datastore-definitions';
4
4
  import { IChannelServices } from '@fluidframework/datastore-definitions';
5
5
  import { IChannelStorageService } from '@fluidframework/datastore-definitions';
6
+ import { IEventThisPlaceHolder } from '@fluidframework/core-interfaces';
6
7
  import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
7
8
  import { IFluidSerializer } from '@fluidframework/shared-object-base';
8
9
  import { IJSONSegment } from '@fluidframework/merge-tree';
@@ -11,13 +12,14 @@ import { IMatrixProducer } from '@tiny-calc/nano';
11
12
  import { IMatrixReader } from '@tiny-calc/nano';
12
13
  import { IMatrixWriter } from '@tiny-calc/nano';
13
14
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
15
+ import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
14
16
  import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
15
17
  import { Serializable } from '@fluidframework/datastore-definitions';
16
18
  import { SharedObject } from '@fluidframework/shared-object-base';
17
19
  import { SummarySerializer } from '@fluidframework/shared-object-base';
18
20
 
19
21
  /**
20
- * @public
22
+ * @alpha
21
23
  */
22
24
  export declare interface IRevertible {
23
25
  revert(): any;
@@ -25,7 +27,34 @@ export declare interface IRevertible {
25
27
  }
26
28
 
27
29
  /**
28
- * @public
30
+ * Events emitted by Shared Matrix.
31
+ * @alpha
32
+ */
33
+ export declare interface ISharedMatrixEvents<T> extends ISharedObjectEvents {
34
+ /**
35
+ * This event is only emitted when the SetCell Resolution Policy is First Write Win(FWW).
36
+ * This is emitted when two clients race and send changes without observing each other changes,
37
+ * the changes that gets sequenced last would be rejected, and only client who's changes rejected
38
+ * would be notified via this event, with expectation that it will merge its changes back by
39
+ * accounting new information (state from winner of the race).
40
+ *
41
+ * @remarks Listener parameters:
42
+ *
43
+ * - `row` - Row number at which conflict happened.
44
+ *
45
+ * - `col` - Col number at which conflict happened.
46
+ *
47
+ * - `currentValue` - The current value of the cell.
48
+ *
49
+ * - `conflictingValue` - The value that this client tried to set in the cell and got ignored due to conflict.
50
+ *
51
+ * - `target` - The {@link SharedMatrix} itself.
52
+ */
53
+ (event: "conflict", listener: (row: number, col: number, currentValue: MatrixItem<T>, conflictingValue: MatrixItem<T>, target: IEventThisPlaceHolder) => void): any;
54
+ }
55
+
56
+ /**
57
+ * @alpha
29
58
  */
30
59
  export declare interface IUndoConsumer {
31
60
  pushToCurrentOperation(revertible: IRevertible): any;
@@ -34,7 +63,7 @@ export declare interface IUndoConsumer {
34
63
  /**
35
64
  * A matrix cell value may be undefined (indicating an empty cell) or any serializable type,
36
65
  * excluding null. (However, nulls may be embedded inside objects and arrays.)
37
- * @public
66
+ * @alpha
38
67
  */
39
68
  export declare type MatrixItem<T> = Serializable<Exclude<T, null>> | undefined;
40
69
 
@@ -49,18 +78,29 @@ export declare type MatrixItem<T> = Serializable<Exclude<T, null>> | undefined;
49
78
  * matrix data and physically stores data in Z-order to leverage CPU caches and
50
79
  * prefetching when reading in either row or column major order. (See README.md
51
80
  * for more details.)
52
- *
53
- * @public
81
+ * @alpha
54
82
  */
55
- export declare class SharedMatrix<T = any> extends SharedObject implements IMatrixProducer<MatrixItem<T>>, IMatrixReader<MatrixItem<T>>, IMatrixWriter<MatrixItem<T>> {
83
+ export declare class SharedMatrix<T = any> extends SharedObject<ISharedMatrixEvents<T>> implements IMatrixProducer<MatrixItem<T>>, IMatrixReader<MatrixItem<T>>, IMatrixWriter<MatrixItem<T>> {
56
84
  id: string;
57
85
  private readonly consumers;
58
86
  static getFactory(): SharedMatrixFactory;
59
87
  private readonly rows;
60
88
  private readonly cols;
61
89
  private cells;
62
- private pending;
63
- constructor(runtime: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes);
90
+ private readonly pending;
91
+ private cellLastWriteTracker;
92
+ private setCellLwwToFwwPolicySwitchOpSeqNumber;
93
+ private userSwitchedSetCellPolicy;
94
+ private reentrantCount;
95
+ /**
96
+ * Constructor for the Shared Matrix
97
+ * @param runtime - DataStore runtime.
98
+ * @param id - id of the dds
99
+ * @param attributes - channel attributes
100
+ * @param _isSetCellConflictResolutionPolicyFWW - Conflict resolution for Matrix set op is First Writer Win in case of
101
+ * race condition. Client can still overwrite values in case of no race.
102
+ */
103
+ constructor(runtime: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes, _isSetCellConflictResolutionPolicyFWW?: boolean);
64
104
  private undo?;
65
105
  /**
66
106
  * Subscribes the given IUndoConsumer to the matrix.
@@ -76,12 +116,22 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
76
116
  closeMatrix(consumer: IMatrixConsumer<MatrixItem<T>>): void;
77
117
  get rowCount(): number;
78
118
  get colCount(): number;
119
+ isSetCellConflictResolutionPolicyFWW(): boolean;
79
120
  getCell(row: number, col: number): MatrixItem<T>;
80
121
  get matrixProducer(): IMatrixProducer<MatrixItem<T>>;
81
122
  setCell(row: number, col: number, value: MatrixItem<T>): void;
82
123
  setCells(rowStart: number, colStart: number, colCount: number, values: readonly MatrixItem<T>[]): void;
83
124
  private setCellCore;
84
125
  private sendSetCellOp;
126
+ /**
127
+ * This makes sure that the code inside the callback is not reentrant. We need to do that because we raise notifications
128
+ * to the consumers telling about these changes and they can try to change the matrix while listening to those notifications
129
+ * which can make the shared matrix to be in bad state. For example, we are raising notification for a setCell changes and
130
+ * a consumer tries to delete that row/col on receiving that notification which can lead to this matrix trying to setCell in
131
+ * a deleted row/col.
132
+ * @param callback - code that needs to protected against reentrancy.
133
+ */
134
+ private protectAgainstReentrancy;
85
135
  private submitVectorMessage;
86
136
  private submitColMessage;
87
137
  insertCols(colStart: number, count: number): void;
@@ -89,8 +139,8 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
89
139
  private submitRowMessage;
90
140
  insertRows(rowStart: number, count: number): void;
91
141
  removeRows(rowStart: number, count: number): void;
92
- /** @internal */ _undoRemoveRows(rowStart: number, spec: IJSONSegment): void;
93
- /** @internal */ _undoRemoveCols(colStart: number, spec: IJSONSegment): void;
142
+ /***/ _undoRemoveRows(rowStart: number, spec: IJSONSegment): void;
143
+ /***/ _undoRemoveCols(colStart: number, spec: IJSONSegment): void;
94
144
  protected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats;
95
145
  /**
96
146
  * Runs serializer on the GC data for this SharedMatrix.
@@ -114,11 +164,21 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
114
164
  * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
115
165
  */
116
166
  protected loadCore(storage: IChannelStorageService): Promise<void>;
167
+ /**
168
+ * Tells whether the setCell op should be applied or not based on First Write Win policy. It assumes
169
+ * we are in FWW mode.
170
+ */
171
+ private shouldSetCellBasedOnFWW;
117
172
  protected processCore(rawMessage: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
118
173
  private readonly onRowDelta;
119
174
  private readonly onColDelta;
120
175
  private readonly onRowHandlesRecycled;
121
176
  private readonly onColHandlesRecycled;
177
+ /**
178
+ * Api to switch Set Op policy from Last Writer Win to First Writer Win. It only switches from LWW to FWW
179
+ * and not from FWW to LWW. The next SetOp which is sent will communicate this policy to other clients.
180
+ */
181
+ switchSetCellPolicy(): void;
122
182
  /**
123
183
  * Returns true if the latest pending write to the cell indicated by the given row/col handles
124
184
  * matches the given 'localSeq'.
@@ -137,7 +197,7 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
137
197
 
138
198
  /**
139
199
  * {@link @fluidframework/datastore-definitions#IChannelFactory} for {@link SharedMatrix}.
140
- * @public
200
+ * @alpha
141
201
  */
142
202
  export declare class SharedMatrixFactory implements IChannelFactory {
143
203
  static Type: string;
package/lib/matrix.d.ts CHANGED
@@ -2,18 +2,45 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+ import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
5
6
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
6
7
  import { IFluidDataStoreRuntime, IChannelStorageService, Serializable, IChannelAttributes } from "@fluidframework/datastore-definitions";
7
- import { IFluidSerializer, SharedObject, SummarySerializer } from "@fluidframework/shared-object-base";
8
+ import { IFluidSerializer, ISharedObjectEvents, SharedObject, SummarySerializer } from "@fluidframework/shared-object-base";
8
9
  import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
9
10
  import { IMatrixProducer, IMatrixConsumer, IMatrixReader, IMatrixWriter } from "@tiny-calc/nano";
10
11
  import { IJSONSegment } from "@fluidframework/merge-tree";
11
- import { SharedMatrixFactory } from "./runtime";
12
- import { IUndoConsumer } from "./types";
12
+ import { SharedMatrixFactory } from "./runtime.mjs";
13
+ import { IUndoConsumer } from "./types.mjs";
14
+ /**
15
+ * Events emitted by Shared Matrix.
16
+ * @alpha
17
+ */
18
+ export interface ISharedMatrixEvents<T> extends ISharedObjectEvents {
19
+ /**
20
+ * This event is only emitted when the SetCell Resolution Policy is First Write Win(FWW).
21
+ * This is emitted when two clients race and send changes without observing each other changes,
22
+ * the changes that gets sequenced last would be rejected, and only client who's changes rejected
23
+ * would be notified via this event, with expectation that it will merge its changes back by
24
+ * accounting new information (state from winner of the race).
25
+ *
26
+ * @remarks Listener parameters:
27
+ *
28
+ * - `row` - Row number at which conflict happened.
29
+ *
30
+ * - `col` - Col number at which conflict happened.
31
+ *
32
+ * - `currentValue` - The current value of the cell.
33
+ *
34
+ * - `conflictingValue` - The value that this client tried to set in the cell and got ignored due to conflict.
35
+ *
36
+ * - `target` - The {@link SharedMatrix} itself.
37
+ */
38
+ (event: "conflict", listener: (row: number, col: number, currentValue: MatrixItem<T>, conflictingValue: MatrixItem<T>, target: IEventThisPlaceHolder) => void): any;
39
+ }
13
40
  /**
14
41
  * A matrix cell value may be undefined (indicating an empty cell) or any serializable type,
15
42
  * excluding null. (However, nulls may be embedded inside objects and arrays.)
16
- * @public
43
+ * @alpha
17
44
  */
18
45
  export type MatrixItem<T> = Serializable<Exclude<T, null>> | undefined;
19
46
  /**
@@ -27,18 +54,29 @@ export type MatrixItem<T> = Serializable<Exclude<T, null>> | undefined;
27
54
  * matrix data and physically stores data in Z-order to leverage CPU caches and
28
55
  * prefetching when reading in either row or column major order. (See README.md
29
56
  * for more details.)
30
- *
31
- * @public
57
+ * @alpha
32
58
  */
33
- export declare class SharedMatrix<T = any> extends SharedObject implements IMatrixProducer<MatrixItem<T>>, IMatrixReader<MatrixItem<T>>, IMatrixWriter<MatrixItem<T>> {
59
+ export declare class SharedMatrix<T = any> extends SharedObject<ISharedMatrixEvents<T>> implements IMatrixProducer<MatrixItem<T>>, IMatrixReader<MatrixItem<T>>, IMatrixWriter<MatrixItem<T>> {
34
60
  id: string;
35
61
  private readonly consumers;
36
62
  static getFactory(): SharedMatrixFactory;
37
63
  private readonly rows;
38
64
  private readonly cols;
39
65
  private cells;
40
- private pending;
41
- constructor(runtime: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes);
66
+ private readonly pending;
67
+ private cellLastWriteTracker;
68
+ private setCellLwwToFwwPolicySwitchOpSeqNumber;
69
+ private userSwitchedSetCellPolicy;
70
+ private reentrantCount;
71
+ /**
72
+ * Constructor for the Shared Matrix
73
+ * @param runtime - DataStore runtime.
74
+ * @param id - id of the dds
75
+ * @param attributes - channel attributes
76
+ * @param _isSetCellConflictResolutionPolicyFWW - Conflict resolution for Matrix set op is First Writer Win in case of
77
+ * race condition. Client can still overwrite values in case of no race.
78
+ */
79
+ constructor(runtime: IFluidDataStoreRuntime, id: string, attributes: IChannelAttributes, _isSetCellConflictResolutionPolicyFWW?: boolean);
42
80
  private undo?;
43
81
  /**
44
82
  * Subscribes the given IUndoConsumer to the matrix.
@@ -54,12 +92,22 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
54
92
  closeMatrix(consumer: IMatrixConsumer<MatrixItem<T>>): void;
55
93
  get rowCount(): number;
56
94
  get colCount(): number;
95
+ isSetCellConflictResolutionPolicyFWW(): boolean;
57
96
  getCell(row: number, col: number): MatrixItem<T>;
58
97
  get matrixProducer(): IMatrixProducer<MatrixItem<T>>;
59
98
  setCell(row: number, col: number, value: MatrixItem<T>): void;
60
99
  setCells(rowStart: number, colStart: number, colCount: number, values: readonly MatrixItem<T>[]): void;
61
100
  private setCellCore;
62
101
  private sendSetCellOp;
102
+ /**
103
+ * This makes sure that the code inside the callback is not reentrant. We need to do that because we raise notifications
104
+ * to the consumers telling about these changes and they can try to change the matrix while listening to those notifications
105
+ * which can make the shared matrix to be in bad state. For example, we are raising notification for a setCell changes and
106
+ * a consumer tries to delete that row/col on receiving that notification which can lead to this matrix trying to setCell in
107
+ * a deleted row/col.
108
+ * @param callback - code that needs to protected against reentrancy.
109
+ */
110
+ private protectAgainstReentrancy;
63
111
  private submitVectorMessage;
64
112
  private submitColMessage;
65
113
  insertCols(colStart: number, count: number): void;
@@ -67,8 +115,8 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
67
115
  private submitRowMessage;
68
116
  insertRows(rowStart: number, count: number): void;
69
117
  removeRows(rowStart: number, count: number): void;
70
- /** @internal */ _undoRemoveRows(rowStart: number, spec: IJSONSegment): void;
71
- /** @internal */ _undoRemoveCols(colStart: number, spec: IJSONSegment): void;
118
+ /***/ _undoRemoveRows(rowStart: number, spec: IJSONSegment): void;
119
+ /***/ _undoRemoveCols(colStart: number, spec: IJSONSegment): void;
72
120
  protected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats;
73
121
  /**
74
122
  * Runs serializer on the GC data for this SharedMatrix.
@@ -92,11 +140,21 @@ export declare class SharedMatrix<T = any> extends SharedObject implements IMatr
92
140
  * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
93
141
  */
94
142
  protected loadCore(storage: IChannelStorageService): Promise<void>;
143
+ /**
144
+ * Tells whether the setCell op should be applied or not based on First Write Win policy. It assumes
145
+ * we are in FWW mode.
146
+ */
147
+ private shouldSetCellBasedOnFWW;
95
148
  protected processCore(rawMessage: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
96
149
  private readonly onRowDelta;
97
150
  private readonly onColDelta;
98
151
  private readonly onRowHandlesRecycled;
99
152
  private readonly onColHandlesRecycled;
153
+ /**
154
+ * Api to switch Set Op policy from Last Writer Win to First Writer Win. It only switches from LWW to FWW
155
+ * and not from FWW to LWW. The next SetOp which is sent will communicate this policy to other clients.
156
+ */
157
+ switchSetCellPolicy(): void;
100
158
  /**
101
159
  * Returns true if the latest pending write to the cell indicated by the given row/col handles
102
160
  * matches the given 'localSeq'.
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../src/matrix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../src/matrix.ts"],"names":[],"mappings":"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"}