@fluidframework/sequence 2.0.0-internal.8.0.1 → 2.0.0-rc.1.0.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 (232) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +0 -6
  3. package/api-extractor-esm.json +4 -0
  4. package/api-extractor-lint.json +1 -10
  5. package/api-extractor.json +1 -9
  6. package/api-report/sequence.api.md +3 -15
  7. package/dist/defaultMap.d.ts +2 -2
  8. package/dist/defaultMap.d.ts.map +1 -1
  9. package/dist/defaultMap.js +10 -5
  10. package/dist/defaultMap.js.map +1 -1
  11. package/dist/defaultMapInterfaces.d.ts +3 -2
  12. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  13. package/dist/defaultMapInterfaces.js.map +1 -1
  14. package/dist/intervalCollection.d.ts +3 -43
  15. package/dist/intervalCollection.d.ts.map +1 -1
  16. package/dist/intervalCollection.js +62 -50
  17. package/dist/intervalCollection.js.map +1 -1
  18. package/dist/intervals/index.d.ts +1 -1
  19. package/dist/intervals/index.d.ts.map +1 -1
  20. package/dist/intervals/index.js +2 -1
  21. package/dist/intervals/index.js.map +1 -1
  22. package/dist/intervals/intervalUtils.d.ts +12 -2
  23. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  24. package/dist/intervals/intervalUtils.js +10 -3
  25. package/dist/intervals/intervalUtils.js.map +1 -1
  26. package/dist/packageVersion.d.ts +1 -1
  27. package/dist/packageVersion.d.ts.map +1 -1
  28. package/dist/packageVersion.js +1 -1
  29. package/dist/packageVersion.js.map +1 -1
  30. package/dist/revertibles.d.ts.map +1 -1
  31. package/dist/revertibles.js +9 -3
  32. package/dist/revertibles.js.map +1 -1
  33. package/dist/sequence-alpha.d.ts +2 -47
  34. package/dist/sequence-beta.d.ts +0 -29
  35. package/dist/sequence-public.d.ts +0 -29
  36. package/dist/sequence-untrimmed.d.ts +5 -48
  37. package/dist/sequence.d.ts +2 -2
  38. package/dist/sequence.d.ts.map +1 -1
  39. package/dist/sequence.js +5 -1
  40. package/dist/sequence.js.map +1 -1
  41. package/dist/sharedString.d.ts +1 -14
  42. package/dist/sharedString.d.ts.map +1 -1
  43. package/dist/sharedString.js +0 -12
  44. package/dist/sharedString.js.map +1 -1
  45. package/lib/{defaultMap.d.ts → defaultMap.d.mts} +3 -3
  46. package/lib/defaultMap.d.mts.map +1 -0
  47. package/lib/{defaultMap.js → defaultMap.mjs} +28 -27
  48. package/lib/defaultMap.mjs.map +1 -0
  49. package/lib/{defaultMapInterfaces.d.ts → defaultMapInterfaces.d.mts} +4 -3
  50. package/lib/defaultMapInterfaces.d.mts.map +1 -0
  51. package/lib/{intervalIndex/intervalIndex.js → defaultMapInterfaces.mjs} +2 -3
  52. package/lib/defaultMapInterfaces.mjs.map +1 -0
  53. package/lib/{index.d.ts → index.d.mts} +12 -24
  54. package/lib/index.d.mts.map +1 -0
  55. package/lib/index.mjs +16 -0
  56. package/lib/index.mjs.map +1 -0
  57. package/lib/{intervalCollection.d.ts → intervalCollection.d.mts} +6 -46
  58. package/lib/intervalCollection.d.mts.map +1 -0
  59. package/lib/{intervalCollection.js → intervalCollection.mjs} +176 -179
  60. package/lib/intervalCollection.mjs.map +1 -0
  61. package/lib/intervalIndex/{endpointInRangeIndex.d.ts → endpointInRangeIndex.d.mts} +4 -4
  62. package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +1 -0
  63. package/lib/intervalIndex/{endpointInRangeIndex.js → endpointInRangeIndex.mjs} +13 -18
  64. package/lib/intervalIndex/endpointInRangeIndex.mjs.map +1 -0
  65. package/lib/intervalIndex/{endpointIndex.d.ts → endpointIndex.d.mts} +4 -4
  66. package/lib/intervalIndex/endpointIndex.d.mts.map +1 -0
  67. package/lib/intervalIndex/{endpointIndex.js → endpointIndex.mjs} +9 -14
  68. package/lib/intervalIndex/endpointIndex.mjs.map +1 -0
  69. package/lib/intervalIndex/{idIntervalIndex.d.ts → idIntervalIndex.d.mts} +3 -3
  70. package/lib/intervalIndex/idIntervalIndex.d.mts.map +1 -0
  71. package/lib/intervalIndex/{idIntervalIndex.js → idIntervalIndex.mjs} +5 -9
  72. package/lib/intervalIndex/idIntervalIndex.mjs.map +1 -0
  73. package/lib/intervalIndex/{index.d.ts → index.d.mts} +9 -9
  74. package/lib/intervalIndex/index.d.mts.map +1 -0
  75. package/lib/intervalIndex/index.mjs +11 -0
  76. package/lib/intervalIndex/{index.js.map → index.mjs.map} +1 -1
  77. package/lib/intervalIndex/{intervalIndex.d.ts → intervalIndex.d.mts} +2 -2
  78. package/lib/intervalIndex/intervalIndex.d.mts.map +1 -0
  79. package/lib/intervalIndex/intervalIndex.mjs +6 -0
  80. package/lib/intervalIndex/{intervalIndex.js.map → intervalIndex.mjs.map} +1 -1
  81. package/lib/intervalIndex/{intervalIndexUtils.d.ts → intervalIndexUtils.d.mts} +1 -1
  82. package/lib/intervalIndex/intervalIndexUtils.d.mts.map +1 -0
  83. package/lib/intervalIndex/{intervalIndexUtils.js → intervalIndexUtils.mjs} +5 -9
  84. package/lib/intervalIndex/intervalIndexUtils.mjs.map +1 -0
  85. package/lib/intervalIndex/{overlappingIntervalsIndex.d.ts → overlappingIntervalsIndex.d.mts} +6 -6
  86. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +1 -0
  87. package/lib/intervalIndex/{overlappingIntervalsIndex.js → overlappingIntervalsIndex.mjs} +11 -16
  88. package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +1 -0
  89. package/lib/intervalIndex/{overlappingSequenceIntervalsIndex.d.ts → overlappingSequenceIntervalsIndex.d.mts} +3 -3
  90. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +1 -0
  91. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs +37 -0
  92. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +1 -0
  93. package/lib/intervalIndex/{sequenceIntervalIndexes.d.ts → sequenceIntervalIndexes.d.mts} +3 -3
  94. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +1 -0
  95. package/lib/intervalIndex/sequenceIntervalIndexes.mjs +6 -0
  96. package/lib/intervalIndex/{sequenceIntervalIndexes.js.map → sequenceIntervalIndexes.mjs.map} +1 -1
  97. package/lib/intervalIndex/{startpointInRangeIndex.d.ts → startpointInRangeIndex.d.mts} +4 -4
  98. package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +1 -0
  99. package/lib/intervalIndex/{startpointInRangeIndex.js → startpointInRangeIndex.mjs} +13 -18
  100. package/lib/intervalIndex/startpointInRangeIndex.mjs.map +1 -0
  101. package/lib/{intervalTree.d.ts → intervalTree.d.mts} +2 -2
  102. package/lib/intervalTree.d.mts.map +1 -0
  103. package/lib/{intervalTree.js → intervalTree.mjs} +4 -8
  104. package/lib/intervalTree.mjs.map +1 -0
  105. package/lib/intervals/{index.d.ts → index.d.mts} +4 -4
  106. package/lib/intervals/index.d.mts.map +1 -0
  107. package/lib/intervals/index.mjs +8 -0
  108. package/lib/intervals/index.mjs.map +1 -0
  109. package/lib/intervals/{interval.d.ts → interval.d.mts} +3 -3
  110. package/lib/intervals/interval.d.mts.map +1 -0
  111. package/lib/intervals/{interval.js → interval.mjs} +13 -18
  112. package/lib/intervals/interval.mjs.map +1 -0
  113. package/lib/intervals/{intervalUtils.d.ts → intervalUtils.d.mts} +14 -4
  114. package/lib/intervals/intervalUtils.d.mts.map +1 -0
  115. package/lib/intervals/{intervalUtils.js → intervalUtils.mjs} +22 -21
  116. package/lib/intervals/intervalUtils.mjs.map +1 -0
  117. package/lib/intervals/{sequenceInterval.d.ts → sequenceInterval.d.mts} +3 -3
  118. package/lib/intervals/sequenceInterval.d.mts.map +1 -0
  119. package/lib/intervals/{sequenceInterval.js → sequenceInterval.mjs} +56 -64
  120. package/lib/intervals/sequenceInterval.mjs.map +1 -0
  121. package/lib/{localValues.d.ts → localValues.d.mts} +3 -3
  122. package/lib/localValues.d.mts.map +1 -0
  123. package/lib/{localValues.js → localValues.mjs} +5 -10
  124. package/lib/localValues.mjs.map +1 -0
  125. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
  126. package/lib/packageVersion.d.mts.map +1 -0
  127. package/lib/packageVersion.mjs +9 -0
  128. package/lib/packageVersion.mjs.map +1 -0
  129. package/lib/{revertibles.d.ts → revertibles.d.mts} +4 -4
  130. package/lib/revertibles.d.mts.map +1 -0
  131. package/lib/{revertibles.js → revertibles.mjs} +71 -74
  132. package/lib/revertibles.mjs.map +1 -0
  133. package/lib/{sequence-alpha.d.ts → sequence-alpha.d.mts} +2 -60
  134. package/lib/{sequence-public.d.ts → sequence-beta.d.mts} +0 -42
  135. package/lib/{sequence-beta.d.ts → sequence-public.d.mts} +0 -42
  136. package/lib/{sequence-untrimmed.d.ts → sequence-untrimmed.d.mts} +5 -61
  137. package/lib/{sequence.d.ts → sequence.d.mts} +7 -7
  138. package/lib/sequence.d.mts.map +1 -0
  139. package/lib/{sequence.js → sequence.mjs} +51 -48
  140. package/lib/sequence.mjs.map +1 -0
  141. package/lib/{sequenceDeltaEvent.d.ts → sequenceDeltaEvent.d.mts} +1 -1
  142. package/lib/sequenceDeltaEvent.d.mts.map +1 -0
  143. package/lib/{sequenceDeltaEvent.js → sequenceDeltaEvent.mjs} +10 -14
  144. package/lib/sequenceDeltaEvent.mjs.map +1 -0
  145. package/lib/{sequenceFactory.d.ts → sequenceFactory.d.mts} +2 -2
  146. package/lib/sequenceFactory.d.mts.map +1 -0
  147. package/lib/{sequenceFactory.js → sequenceFactory.mjs} +10 -14
  148. package/lib/sequenceFactory.mjs.map +1 -0
  149. package/lib/{sharedIntervalCollection.d.ts → sharedIntervalCollection.d.mts} +3 -3
  150. package/lib/sharedIntervalCollection.d.mts.map +1 -0
  151. package/lib/{sharedIntervalCollection.js → sharedIntervalCollection.mjs} +14 -19
  152. package/lib/sharedIntervalCollection.mjs.map +1 -0
  153. package/lib/{sharedSequence.d.ts → sharedSequence.d.mts} +2 -2
  154. package/lib/sharedSequence.d.mts.map +1 -0
  155. package/lib/{sharedSequence.js → sharedSequence.mjs} +7 -12
  156. package/lib/sharedSequence.mjs.map +1 -0
  157. package/lib/{sharedString.d.ts → sharedString.d.mts} +4 -17
  158. package/lib/sharedString.d.mts.map +1 -0
  159. package/lib/{sharedString.js → sharedString.mjs} +17 -34
  160. package/lib/sharedString.mjs.map +1 -0
  161. package/package.json +97 -46
  162. package/src/defaultMap.ts +17 -12
  163. package/src/defaultMapInterfaces.ts +9 -2
  164. package/src/intervalCollection.ts +67 -123
  165. package/src/intervals/index.ts +1 -0
  166. package/src/intervals/intervalUtils.ts +14 -4
  167. package/src/packageVersion.ts +1 -1
  168. package/src/revertibles.ts +9 -11
  169. package/src/sequence.ts +7 -3
  170. package/src/sharedString.ts +0 -23
  171. package/lib/defaultMap.d.ts.map +0 -1
  172. package/lib/defaultMap.js.map +0 -1
  173. package/lib/defaultMapInterfaces.d.ts.map +0 -1
  174. package/lib/defaultMapInterfaces.js +0 -7
  175. package/lib/defaultMapInterfaces.js.map +0 -1
  176. package/lib/index.d.ts.map +0 -1
  177. package/lib/index.js +0 -60
  178. package/lib/index.js.map +0 -1
  179. package/lib/intervalCollection.d.ts.map +0 -1
  180. package/lib/intervalCollection.js.map +0 -1
  181. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +0 -1
  182. package/lib/intervalIndex/endpointInRangeIndex.js.map +0 -1
  183. package/lib/intervalIndex/endpointIndex.d.ts.map +0 -1
  184. package/lib/intervalIndex/endpointIndex.js.map +0 -1
  185. package/lib/intervalIndex/idIntervalIndex.d.ts.map +0 -1
  186. package/lib/intervalIndex/idIntervalIndex.js.map +0 -1
  187. package/lib/intervalIndex/index.d.ts.map +0 -1
  188. package/lib/intervalIndex/index.js +0 -24
  189. package/lib/intervalIndex/intervalIndex.d.ts.map +0 -1
  190. package/lib/intervalIndex/intervalIndexUtils.d.ts.map +0 -1
  191. package/lib/intervalIndex/intervalIndexUtils.js.map +0 -1
  192. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +0 -1
  193. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +0 -1
  194. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +0 -1
  195. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +0 -41
  196. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +0 -1
  197. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +0 -1
  198. package/lib/intervalIndex/sequenceIntervalIndexes.js +0 -7
  199. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +0 -1
  200. package/lib/intervalIndex/startpointInRangeIndex.js.map +0 -1
  201. package/lib/intervalTree.d.ts.map +0 -1
  202. package/lib/intervalTree.js.map +0 -1
  203. package/lib/intervals/index.d.ts.map +0 -1
  204. package/lib/intervals/index.js +0 -23
  205. package/lib/intervals/index.js.map +0 -1
  206. package/lib/intervals/interval.d.ts.map +0 -1
  207. package/lib/intervals/interval.js.map +0 -1
  208. package/lib/intervals/intervalUtils.d.ts.map +0 -1
  209. package/lib/intervals/intervalUtils.js.map +0 -1
  210. package/lib/intervals/sequenceInterval.d.ts.map +0 -1
  211. package/lib/intervals/sequenceInterval.js.map +0 -1
  212. package/lib/localValues.d.ts.map +0 -1
  213. package/lib/localValues.js.map +0 -1
  214. package/lib/packageVersion.d.ts.map +0 -1
  215. package/lib/packageVersion.js +0 -12
  216. package/lib/packageVersion.js.map +0 -1
  217. package/lib/revertibles.d.ts.map +0 -1
  218. package/lib/revertibles.js.map +0 -1
  219. package/lib/sequence.d.ts.map +0 -1
  220. package/lib/sequence.js.map +0 -1
  221. package/lib/sequenceDeltaEvent.d.ts.map +0 -1
  222. package/lib/sequenceDeltaEvent.js.map +0 -1
  223. package/lib/sequenceFactory.d.ts.map +0 -1
  224. package/lib/sequenceFactory.js.map +0 -1
  225. package/lib/sharedIntervalCollection.d.ts.map +0 -1
  226. package/lib/sharedIntervalCollection.js.map +0 -1
  227. package/lib/sharedSequence.d.ts.map +0 -1
  228. package/lib/sharedSequence.js.map +0 -1
  229. package/lib/sharedString.d.ts.map +0 -1
  230. package/lib/sharedString.js.map +0 -1
  231. package/sequence.test-files.tar +0 -0
  232. package/tsconfig.esnext.json +0 -6
@@ -1,14 +1,14 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DefaultMap = void 0;
8
- const shared_object_base_1 = require("@fluidframework/shared-object-base");
9
- const client_utils_1 = require("@fluid-internal/client-utils");
10
- const core_utils_1 = require("@fluidframework/core-utils");
11
- const localValues_1 = require("./localValues");
5
+ import { makeHandlesSerializable, parseHandles, ValueType, } from "@fluidframework/shared-object-base";
6
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
+ import { assert } from "@fluidframework/core-utils";
8
+ import { makeSerializable, ValueTypeLocalValue } from "./localValues.mjs";
9
+ function isMapOperation(op) {
10
+ return typeof op === "object" && op !== null && "type" in op && op.type === "act";
11
+ }
12
12
  /**
13
13
  * A DefaultMap is a map-like distributed data structure, supporting operations on values stored by
14
14
  * string key locations.
@@ -16,7 +16,7 @@ const localValues_1 = require("./localValues");
16
16
  * Creation of values is implicit on access (either via `get` or a remote op application referring to
17
17
  * a collection that wasn't previously known)
18
18
  */
19
- class DefaultMap {
19
+ export class DefaultMap {
20
20
  /**
21
21
  * The number of key/value pairs stored in the map.
22
22
  */
@@ -31,7 +31,7 @@ class DefaultMap {
31
31
  * @param type - The value type to create at values of this map
32
32
  * @param eventEmitter - The object that will emit map events
33
33
  */
34
- constructor(serializer, handle, submitMessage, type, options, eventEmitter = new client_utils_1.TypedEventEmitter()) {
34
+ constructor(serializer, handle, submitMessage, type, options, eventEmitter = new TypedEventEmitter()) {
35
35
  this.serializer = serializer;
36
36
  this.handle = handle;
37
37
  this.submitMessage = submitMessage;
@@ -139,7 +139,7 @@ class DefaultMap {
139
139
  getSerializableStorage(serializer) {
140
140
  const serializableMapData = {};
141
141
  this.data.forEach((localValue, key) => {
142
- serializableMapData[key] = (0, localValues_1.makeSerializable)(localValue, serializer, this.handle);
142
+ serializableMapData[key] = makeSerializable(localValue, serializer, this.handle);
143
143
  });
144
144
  return serializableMapData;
145
145
  }
@@ -154,8 +154,8 @@ class DefaultMap {
154
154
  for (const [key, serializable] of Object.entries(json)) {
155
155
  // Back-compat: legacy documents may have handles to an intervalCollection map kernel.
156
156
  // These collections should be empty, and ValueTypes are no longer supported.
157
- if (serializable.type === shared_object_base_1.ValueType[shared_object_base_1.ValueType.Plain] ||
158
- serializable.type === shared_object_base_1.ValueType[shared_object_base_1.ValueType.Shared]) {
157
+ if (serializable.type === ValueType[ValueType.Plain] ||
158
+ serializable.type === ValueType[ValueType.Shared]) {
159
159
  continue;
160
160
  }
161
161
  // Back-compat: Sequence previously arbitrarily prefixed all interval collection keys with
@@ -191,12 +191,11 @@ class DefaultMap {
191
191
  return false;
192
192
  }
193
193
  tryGetStashedOpLocalMetadata(op) {
194
- const type = op.type;
195
- if (this.messageHandlers.has(type)) {
194
+ if (isMapOperation(op) && this.messageHandlers.has(op.type)) {
196
195
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
197
- return this.messageHandlers.get(type).getStashedOpLocalMetadata(op);
196
+ return this.messageHandlers.get(op.type).getStashedOpLocalMetadata(op);
198
197
  }
199
- throw new Error("no apply stashed op handler");
198
+ return undefined;
200
199
  }
201
200
  /**
202
201
  * Process the given op if a handler is registered.
@@ -221,7 +220,7 @@ class DefaultMap {
221
220
  * @param local - Whether the message originated from the local client
222
221
  */
223
222
  createCore(key, local) {
224
- const localValue = new localValues_1.ValueTypeLocalValue(this.type.factory.load(this.makeMapValueOpEmitter(key), undefined, this.options), this.type);
223
+ const localValue = new ValueTypeLocalValue(this.type.factory.load(this.makeMapValueOpEmitter(key), undefined, this.options), this.type);
225
224
  const previousValue = this.data.get(key);
226
225
  this.data.set(key, localValue);
227
226
  const event = { key, previousValue };
@@ -239,11 +238,11 @@ class DefaultMap {
239
238
  * @returns The local value that was produced
240
239
  */
241
240
  makeLocal(key, serializable) {
242
- (0, core_utils_1.assert)(serializable.type !== shared_object_base_1.ValueType[shared_object_base_1.ValueType.Plain] &&
243
- serializable.type !== shared_object_base_1.ValueType[shared_object_base_1.ValueType.Shared], 0x2e1 /* "Support for plain value types removed." */);
244
- serializable.value = (0, shared_object_base_1.parseHandles)(serializable.value, this.serializer);
241
+ assert(serializable.type !== ValueType[ValueType.Plain] &&
242
+ serializable.type !== ValueType[ValueType.Shared], 0x2e1 /* "Support for plain value types removed." */);
243
+ serializable.value = parseHandles(serializable.value, this.serializer);
245
244
  const localValue = this.type.factory.load(this.makeMapValueOpEmitter(key), serializable.value, this.options);
246
- return new localValues_1.ValueTypeLocalValue(localValue, this.type);
245
+ return new ValueTypeLocalValue(localValue, this.type);
247
246
  }
248
247
  /**
249
248
  * Get the message handlers for the map.
@@ -260,7 +259,7 @@ class DefaultMap {
260
259
  const localValue = this.data.get(op.key) ?? this.createCore(op.key, local);
261
260
  const handler = localValue.getOpHandler(op.value.opName);
262
261
  const previousValue = localValue.value;
263
- const translatedValue = (0, shared_object_base_1.parseHandles)(op.value.value, this.serializer);
262
+ const translatedValue = parseHandles(op.value.value, this.serializer);
264
263
  handler.process(previousValue, translatedValue, local, message, localOpMetadata);
265
264
  const event = { key: op.key, previousValue };
266
265
  this.eventEmitter.emit("valueChanged", event, local, message, this.eventEmitter);
@@ -270,7 +269,7 @@ class DefaultMap {
270
269
  },
271
270
  resubmit: (op, localOpMetadata) => {
272
271
  const localValue = this.data.get(op.key);
273
- (0, core_utils_1.assert)(localValue !== undefined, 0x3f8 /* Local value expected on resubmission */);
272
+ assert(localValue !== undefined, 0x3f8 /* Local value expected on resubmission */);
274
273
  const handler = localValue.getOpHandler(op.value.opName);
275
274
  const rebased = handler.rebase(localValue.value, op.value, localOpMetadata);
276
275
  if (rebased !== undefined) {
@@ -279,7 +278,10 @@ class DefaultMap {
279
278
  }
280
279
  },
281
280
  getStashedOpLocalMetadata: (op) => {
282
- (0, core_utils_1.assert)(false, 0x016 /* "apply stashed op not implemented for custom value type ops" */);
281
+ const localValue = this.data.get(op.key) ?? this.createCore(op.key, true);
282
+ assert(localValue !== undefined, 0x879 /* Local value expected on applying stashed op */);
283
+ const handler = localValue.getOpHandler(op.value.opName);
284
+ return handler.applyStashedOp(localValue.value, op.value);
283
285
  },
284
286
  });
285
287
  return messageHandlers;
@@ -294,7 +296,7 @@ class DefaultMap {
294
296
  makeMapValueOpEmitter(key) {
295
297
  // eslint-disable-next-line import/no-deprecated
296
298
  const emit = (opName, previousValue, params, localOpMetadata) => {
297
- const translatedParams = (0, shared_object_base_1.makeHandlesSerializable)(params, this.serializer, this.handle);
299
+ const translatedParams = makeHandlesSerializable(params, this.serializer, this.handle);
298
300
  const op = {
299
301
  key,
300
302
  type: "act",
@@ -310,5 +312,4 @@ class DefaultMap {
310
312
  return { emit };
311
313
  }
312
314
  }
313
- exports.DefaultMap = DefaultMap;
314
- //# sourceMappingURL=defaultMap.js.map
315
+ //# sourceMappingURL=defaultMap.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultMap.mjs","sourceRoot":"","sources":["../src/defaultMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAII,EAEN,uBAAuB,EACvB,YAAY,EACZ,SAAS,GACT,MAAM,oCAAoC;OACpC,EAAE,iBAAiB,EAAE,MAAM,8BAA8B;OACzD,EAAE,MAAM,EAAE,MAAM,4BAA4B;OAC5C,EAAE,gBAAgB,EAAE,mBAAmB,EAAE;AAehD,SAAS,cAAc,CAAC,EAAW;IAClC,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;AACnF,CAAC;AAqED;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IACtB;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC;IAYD;;;;;;;OAOG;IACH,YACkB,UAA4B,EAC5B,MAAoB,EACpB,aAGR,EACQ,IAAmB,EACnB,OAAkC,EACnC,eAAe,IAAI,iBAAiB,EAA2B;QAR9D,eAAU,GAAV,UAAU,CAAkB;QAC5B,WAAM,GAAN,MAAM,CAAc;QACpB,kBAAa,GAAb,aAAa,CAGrB;QACQ,SAAI,GAAJ,IAAI,CAAe;QACnB,YAAO,GAAP,OAAO,CAA2B;QACnC,iBAAY,GAAZ,YAAY,CAAmD;QA3BhF;;WAEG;QACc,oBAAe,GAA4C,IAAI,GAAG,EAAE,CAAC;QAEtF;;WAEG;QACc,SAAI,GAAG,IAAI,GAAG,EAAkC,CAAC;QAqBjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC;IAED;;;OAGG;IACI,IAAI;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,OAAO;QACb,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG;YAChB,IAAI;gBACH,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC;gBAC5C,OAAO,OAAO,CAAC,IAAI;oBAClB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;oBAClC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B;YAClG,CAAC;YACD,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAChB,OAAO,IAAI,CAAC;YACb,CAAC;SACD,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;OAGG;IACI,MAAM;QACZ,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG;YAChB,IAAI;gBACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBAC3C,OAAO,OAAO,CAAC,IAAI;oBAClB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;oBAClC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B;YAC3E,CAAC;YACD,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAChB,OAAO,IAAI,CAAC;YACb,CAAC;SACD,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;OAGG;IACI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,UAAoE;QAClF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;YACxC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,GAAW;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEpE,OAAO,UAAU,CAAC,KAAK,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,oBAAoB,CAAC,UAA4B;QACvD,MAAM,mBAAmB,GAA6B,EAAE,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YACrC,mBAAmB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAEM,sBAAsB,CAAC,UAA4B;QACzD,MAAM,mBAAmB,GAA+B,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YACrC,mBAAmB,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAEM,SAAS,CAAC,UAA4B;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,wBAAwB,CAAC,IAAgC;QAC/D,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvD,sFAAsF;YACtF,6EAA6E;YAC7E,IACC,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;gBAChD,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAChD;gBACD,SAAS;aACT;YAED,0FAA0F;YAC1F,uFAAuF;YACvF,wFAAwF;YACxF,6FAA6F;YAC7F,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAEvF,MAAM,UAAU,GAAG;gBAClB,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC;aACxC,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;SAChD;IACF,CAAC;IAEM,QAAQ,CAAC,IAAY;QAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA+B,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;OAOG;IACI,kBAAkB,CACxB,EAAiB,EACjB,eAAyC;QAEzC,MAAM,IAAI,GAAW,EAAE,CAAC,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,SAAS,EAAE;YAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,4BAA4B,CAAC,EAAW;QAC9C,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5D,oEAAoE;YACpE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;SACxE;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,iBAAiB,CACvB,EAAiB,EACjB,KAAc,EACd,OAA8C,EAC9C,eAAwB;QAExB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,SAAS,EAAE;YAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAA2C,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,GAAW,EAAE,KAAc;QAC7C,MAAM,UAAU,GAAG,IAAI,mBAAmB,CACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAChF,IAAI,CAAC,IAAI,CACT,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACK,SAAS,CAAC,GAAW,EAAE,YAAgC;QAC9D,MAAM,CACL,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/C,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAClD,KAAK,CAAC,8CAA8C,CACpD,CAAC;QAEF,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CACxC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAC/B,YAAY,CAAC,KAAK,EAClB,IAAI,CAAC,OAAO,CACZ,CAAC;QACF,OAAO,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACK,kBAAkB;QACzB,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;QAC9D,+FAA+F;QAC/F,kGAAkG;QAClG,8FAA8F;QAC9F,2CAA2C;QAC3C,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE;YAC1B,OAAO,EAAE,CAAC,EAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE;gBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACvC,MAAM,eAAe,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtE,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;gBACjF,MAAM,KAAK,GAAkB,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC;gBAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,EAAE,CAAC,EAA0B,EAAE,eAAyC,EAAE,EAAE;gBACjF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACzC,CAAC;YACD,QAAQ,EAAE,CAAC,EAA0B,EAAE,eAAyC,EAAE,EAAE;gBACnF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEzC,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAEnF,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;gBAC5E,IAAI,OAAO,KAAK,SAAS,EAAE;oBAC1B,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;oBACtD,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,sBAAsB,CAAC,CAAC;iBACxE;YACF,CAAC;YACD,yBAAyB,EAAE,CAAC,EAA0B,EAA4B,EAAE;gBACnF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1E,MAAM,CACL,UAAU,KAAK,SAAS,EACxB,KAAK,CAAC,iDAAiD,CACvD,CAAC;gBACF,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD,OAAO,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC3D,CAAC;SACD,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,gDAAgD;IACxC,qBAAqB,CAAC,GAAW;QACxC,gDAAgD;QAChD,MAAM,IAAI,GAA4B,CACrC,MAA2B,EAC3B,aAAsB,EACtB,MAA+B,EAC/B,eAAyC,EAClC,EAAE;YACT,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvF,MAAM,EAAE,GAA2B;gBAClC,GAAG;gBACH,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE;oBACN,MAAM;oBACN,KAAK,EAAE,gBAAgB;iBACvB;aACD,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YAExC,MAAM,KAAK,GAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9E,CAAC,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,CAAC;IACjB,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IFluidHandle } from \"@fluidframework/core-interfaces\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport {\n\tIFluidSerializer,\n\tmakeHandlesSerializable,\n\tparseHandles,\n\tValueType,\n} from \"@fluidframework/shared-object-base\";\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { makeSerializable, ValueTypeLocalValue } from \"./localValues\";\nimport {\n\tISerializableValue,\n\tISerializedValue,\n\tIValueChanged,\n\t// eslint-disable-next-line import/no-deprecated\n\tIValueOpEmitter,\n\tIValueType,\n\tISharedDefaultMapEvents,\n\tIMapMessageLocalMetadata,\n\tSequenceOptions,\n\tIValueTypeOperationValue,\n} from \"./defaultMapInterfaces\";\nimport { SerializedIntervalDelta, IntervalDeltaOpType } from \"./intervals\";\n\nfunction isMapOperation(op: unknown): op is IMapOperation {\n\treturn typeof op === \"object\" && op !== null && \"type\" in op && op.type === \"act\";\n}\n/**\n * Defines the means to process and submit a given op on a map.\n */\ninterface IMapMessageHandler {\n\t/**\n\t * Apply the given operation.\n\t * @param op - The map operation to apply\n\t * @param local - Whether the message originated from the local client\n\t * @param message - The full message. Not provided for stashed ops.\n\t * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n\t * For messages from a remote client, this will be undefined.\n\t */\n\tprocess(\n\t\top: IMapOperation,\n\t\tlocal: boolean,\n\t\tmessage: ISequencedDocumentMessage | undefined,\n\t\tlocalOpMetadata: IMapMessageLocalMetadata,\n\t): void;\n\n\t/**\n\t * Communicate the operation to remote clients.\n\t * @param op - The map operation to submit\n\t */\n\tsubmit(op: IMapOperation, localOpMetadata: IMapMessageLocalMetadata): void;\n\n\tresubmit(op: IMapOperation, localOpMetadata: IMapMessageLocalMetadata): void;\n\n\tgetStashedOpLocalMetadata(op: IMapOperation): IMapMessageLocalMetadata;\n}\n\n/**\n * Describes an operation specific to a value type.\n */\nexport interface IMapValueTypeOperation {\n\t/**\n\t * String identifier of the operation type.\n\t */\n\ttype: \"act\";\n\n\t/**\n\t * Map key being modified.\n\t */\n\tkey: string;\n\n\t/**\n\t * Value of the operation, specific to the value type.\n\t * @alpha\n\t */\n\tvalue: IValueTypeOperationValue;\n}\n\n/**\n * Description of a map delta operation\n */\nexport type IMapOperation = IMapValueTypeOperation;\n\n/**\n * Defines the in-memory object structure to be used for the conversion to/from serialized.\n * Directly used in JSON.stringify, direct result from JSON.parse\n */\nexport interface IMapDataObjectSerializable {\n\t[key: string]: ISerializableValue;\n}\n\nexport interface IMapDataObjectSerialized {\n\t[key: string]: ISerializedValue;\n}\n\n/**\n * A DefaultMap is a map-like distributed data structure, supporting operations on values stored by\n * string key locations.\n *\n * Creation of values is implicit on access (either via `get` or a remote op application referring to\n * a collection that wasn't previously known)\n */\nexport class DefaultMap<T> {\n\t/**\n\t * The number of key/value pairs stored in the map.\n\t */\n\tpublic get size(): number {\n\t\treturn this.data.size;\n\t}\n\n\t/**\n\t * Mapping of op types to message handlers.\n\t */\n\tprivate readonly messageHandlers: ReadonlyMap<string, IMapMessageHandler> = new Map();\n\n\t/**\n\t * The in-memory data the map is storing.\n\t */\n\tprivate readonly data = new Map<string, ValueTypeLocalValue<T>>();\n\n\t/**\n\t * Create a new default map.\n\t * @param serializer - The serializer to serialize / parse handles\n\t * @param handle - The handle of the shared object using the kernel\n\t * @param submitMessage - A callback to submit a message through the shared object\n\t * @param type - The value type to create at values of this map\n\t * @param eventEmitter - The object that will emit map events\n\t */\n\tconstructor(\n\t\tprivate readonly serializer: IFluidSerializer,\n\t\tprivate readonly handle: IFluidHandle,\n\t\tprivate readonly submitMessage: (\n\t\t\top: IMapValueTypeOperation,\n\t\t\tlocalOpMetadata: IMapMessageLocalMetadata,\n\t\t) => void,\n\t\tprivate readonly type: IValueType<T>,\n\t\tprivate readonly options?: Partial<SequenceOptions>,\n\t\tpublic readonly eventEmitter = new TypedEventEmitter<ISharedDefaultMapEvents>(),\n\t) {\n\t\tthis.messageHandlers = this.getMessageHandlers();\n\t}\n\n\t/**\n\t * Get an iterator over the keys in this map.\n\t * @returns The iterator\n\t */\n\tpublic keys(): IterableIterator<string> {\n\t\treturn this.data.keys();\n\t}\n\n\t/**\n\t * Get an iterator over the entries in this map.\n\t * @returns The iterator\n\t */\n\tpublic entries(): IterableIterator<[string, any]> {\n\t\tconst localEntriesIterator = this.data.entries();\n\t\tconst iterator = {\n\t\t\tnext(): IteratorResult<[string, any]> {\n\t\t\t\tconst nextVal = localEntriesIterator.next();\n\t\t\t\treturn nextVal.done\n\t\t\t\t\t? { value: undefined, done: true }\n\t\t\t\t\t: { value: [nextVal.value[0], nextVal.value[1].value], done: false }; // Unpack the stored value\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\t/**\n\t * Get an iterator over the values in this map.\n\t * @returns The iterator\n\t */\n\tpublic values(): IterableIterator<any> {\n\t\tconst localValuesIterator = this.data.values();\n\t\tconst iterator = {\n\t\t\tnext(): IteratorResult<any> {\n\t\t\t\tconst nextVal = localValuesIterator.next();\n\t\t\t\treturn nextVal.done\n\t\t\t\t\t? { value: undefined, done: true }\n\t\t\t\t\t: { value: nextVal.value.value, done: false }; // Unpack the stored value\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this;\n\t\t\t},\n\t\t};\n\t\treturn iterator;\n\t}\n\n\t/**\n\t * Get an iterator over the entries in this map.\n\t * @returns The iterator\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<[string, any]> {\n\t\treturn this.entries();\n\t}\n\n\t/**\n\t * Executes the given callback on each entry in the map.\n\t * @param callbackFn - Callback function\n\t */\n\tpublic forEach(callbackFn: (value: any, key: string, map: Map<string, any>) => void): void {\n\t\tthis.data.forEach((localValue, key, m) => {\n\t\t\tcallbackFn(localValue.value, key, m);\n\t\t});\n\t}\n\n\t/**\n\t * {@inheritDoc ISharedMap.get}\n\t */\n\tpublic get(key: string): T {\n\t\tconst localValue = this.data.get(key) ?? this.createCore(key, true);\n\n\t\treturn localValue.value;\n\t}\n\n\t/**\n\t * Check if a key exists in the map.\n\t * @param key - The key to check\n\t * @returns True if the key exists, false otherwise\n\t */\n\tpublic has(key: string): boolean {\n\t\treturn this.data.has(key);\n\t}\n\n\t/**\n\t * Serializes the data stored in the shared map to a JSON string\n\t * @param serializer - The serializer to use to serialize handles in its values.\n\t * @returns A JSON string containing serialized map data\n\t */\n\tpublic getSerializedStorage(serializer: IFluidSerializer): IMapDataObjectSerialized {\n\t\tconst serializableMapData: IMapDataObjectSerialized = {};\n\t\tthis.data.forEach((localValue, key) => {\n\t\t\tserializableMapData[key] = localValue.makeSerialized(serializer, this.handle);\n\t\t});\n\t\treturn serializableMapData;\n\t}\n\n\tpublic getSerializableStorage(serializer: IFluidSerializer): IMapDataObjectSerializable {\n\t\tconst serializableMapData: IMapDataObjectSerializable = {};\n\t\tthis.data.forEach((localValue, key) => {\n\t\t\tserializableMapData[key] = makeSerializable(localValue, serializer, this.handle);\n\t\t});\n\t\treturn serializableMapData;\n\t}\n\n\tpublic serialize(serializer: IFluidSerializer): string {\n\t\treturn JSON.stringify(this.getSerializableStorage(serializer));\n\t}\n\n\t/**\n\t * Populate the kernel with the given map data.\n\t * @param data - A JSON string containing serialized map data\n\t */\n\tpublic populateFromSerializable(json: IMapDataObjectSerializable): void {\n\t\tfor (const [key, serializable] of Object.entries(json)) {\n\t\t\t// Back-compat: legacy documents may have handles to an intervalCollection map kernel.\n\t\t\t// These collections should be empty, and ValueTypes are no longer supported.\n\t\t\tif (\n\t\t\t\tserializable.type === ValueType[ValueType.Plain] ||\n\t\t\t\tserializable.type === ValueType[ValueType.Shared]\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Back-compat: Sequence previously arbitrarily prefixed all interval collection keys with\n\t\t\t// \"intervalCollections/\". This would burden users trying to iterate the collection and\n\t\t\t// access its value, as well as those trying to match a create message to its underlying\n\t\t\t// collection. See https://github.com/microsoft/FluidFramework/issues/10557 for more context.\n\t\t\tconst normalizedKey = key.startsWith(\"intervalCollections/\") ? key.substring(20) : key;\n\n\t\t\tconst localValue = {\n\t\t\t\tkey: normalizedKey,\n\t\t\t\tvalue: this.makeLocal(key, serializable),\n\t\t\t};\n\n\t\t\tthis.data.set(localValue.key, localValue.value);\n\t\t}\n\t}\n\n\tpublic populate(json: string): void {\n\t\tthis.populateFromSerializable(JSON.parse(json) as IMapDataObjectSerializable);\n\t}\n\n\t/**\n\t * Submit the given op if a handler is registered.\n\t * @param op - The operation to attempt to submit\n\t * @param localOpMetadata - The local metadata associated with the op. This is kept locally by the runtime\n\t * and not sent to the server. This will be sent back when this message is received back from the server. This is\n\t * also sent if we are asked to resubmit the message.\n\t * @returns True if the operation was submitted, false otherwise.\n\t */\n\tpublic tryResubmitMessage(\n\t\top: IMapOperation,\n\t\tlocalOpMetadata: IMapMessageLocalMetadata,\n\t): boolean {\n\t\tconst type: string = op.type;\n\t\tconst handler = this.messageHandlers.get(type);\n\t\tif (handler !== undefined) {\n\t\t\thandler.resubmit(op, localOpMetadata);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic tryGetStashedOpLocalMetadata(op: unknown): IMapMessageLocalMetadata | undefined {\n\t\tif (isMapOperation(op) && this.messageHandlers.has(op.type)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this.messageHandlers.get(op.type)!.getStashedOpLocalMetadata(op);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Process the given op if a handler is registered.\n\t * @param message - The message to process\n\t * @param local - Whether the message originated from the local client\n\t * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n\t * For messages from a remote client, this will be undefined.\n\t * @returns True if the operation was processed, false otherwise.\n\t */\n\tpublic tryProcessMessage(\n\t\top: IMapOperation,\n\t\tlocal: boolean,\n\t\tmessage: ISequencedDocumentMessage | undefined,\n\t\tlocalOpMetadata: unknown,\n\t): boolean {\n\t\tconst handler = this.messageHandlers.get(op.type);\n\t\tif (handler !== undefined) {\n\t\t\thandler.process(op, local, message, localOpMetadata as IMapMessageLocalMetadata);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Initializes a default ValueType at the provided key.\n\t * Should be used when a map operation incurs creation.\n\t * @param key - The key being initialized\n\t * @param local - Whether the message originated from the local client\n\t */\n\tprivate createCore(key: string, local: boolean): ValueTypeLocalValue<T> {\n\t\tconst localValue = new ValueTypeLocalValue(\n\t\t\tthis.type.factory.load(this.makeMapValueOpEmitter(key), undefined, this.options),\n\t\t\tthis.type,\n\t\t);\n\t\tconst previousValue = this.data.get(key);\n\t\tthis.data.set(key, localValue);\n\t\tconst event: IValueChanged = { key, previousValue };\n\t\tthis.eventEmitter.emit(\"create\", event, local, this.eventEmitter);\n\t\treturn localValue;\n\t}\n\n\t/**\n\t * The remote ISerializableValue we're receiving (either as a result of a load or an incoming set op) will\n\t * have the information we need to create a real object, but will not be the real object yet. For example,\n\t * we might know it's a map and the map's ID but not have the actual map or its data yet. makeLocal's\n\t * job is to convert that information into a real object for local usage.\n\t * @param key - The key that the caller intends to store the local value into (used for ops later). But\n\t * doesn't actually store the local value into that key. So better not lie!\n\t * @param serializable - The remote information that we can convert into a real object\n\t * @returns The local value that was produced\n\t */\n\tprivate makeLocal(key: string, serializable: ISerializableValue): ValueTypeLocalValue<T> {\n\t\tassert(\n\t\t\tserializable.type !== ValueType[ValueType.Plain] &&\n\t\t\t\tserializable.type !== ValueType[ValueType.Shared],\n\t\t\t0x2e1 /* \"Support for plain value types removed.\" */,\n\t\t);\n\n\t\tserializable.value = parseHandles(serializable.value, this.serializer);\n\t\tconst localValue = this.type.factory.load(\n\t\t\tthis.makeMapValueOpEmitter(key),\n\t\t\tserializable.value,\n\t\t\tthis.options,\n\t\t);\n\t\treturn new ValueTypeLocalValue(localValue, this.type);\n\t}\n\n\t/**\n\t * Get the message handlers for the map.\n\t * @returns A map of string op names to IMapMessageHandlers for those ops\n\t */\n\tprivate getMessageHandlers() {\n\t\tconst messageHandlers = new Map<string, IMapMessageHandler>();\n\t\t// Ops with type \"act\" describe actions taken by custom value type handlers of whatever item is\n\t\t// being addressed. These custom handlers can be retrieved from the ValueTypeLocalValue which has\n\t\t// stashed its valueType (and therefore its handlers). We also emit a valueChanged for anyone\n\t\t// watching for manipulations of that item.\n\t\tmessageHandlers.set(\"act\", {\n\t\t\tprocess: (op: IMapValueTypeOperation, local, message, localOpMetadata) => {\n\t\t\t\tconst localValue = this.data.get(op.key) ?? this.createCore(op.key, local);\n\t\t\t\tconst handler = localValue.getOpHandler(op.value.opName);\n\t\t\t\tconst previousValue = localValue.value;\n\t\t\t\tconst translatedValue = parseHandles(op.value.value, this.serializer);\n\t\t\t\thandler.process(previousValue, translatedValue, local, message, localOpMetadata);\n\t\t\t\tconst event: IValueChanged = { key: op.key, previousValue };\n\t\t\t\tthis.eventEmitter.emit(\"valueChanged\", event, local, message, this.eventEmitter);\n\t\t\t},\n\t\t\tsubmit: (op: IMapValueTypeOperation, localOpMetadata: IMapMessageLocalMetadata) => {\n\t\t\t\tthis.submitMessage(op, localOpMetadata);\n\t\t\t},\n\t\t\tresubmit: (op: IMapValueTypeOperation, localOpMetadata: IMapMessageLocalMetadata) => {\n\t\t\t\tconst localValue = this.data.get(op.key);\n\n\t\t\t\tassert(localValue !== undefined, 0x3f8 /* Local value expected on resubmission */);\n\n\t\t\t\tconst handler = localValue.getOpHandler(op.value.opName);\n\t\t\t\tconst rebased = handler.rebase(localValue.value, op.value, localOpMetadata);\n\t\t\t\tif (rebased !== undefined) {\n\t\t\t\t\tconst { rebasedOp, rebasedLocalOpMetadata } = rebased;\n\t\t\t\t\tthis.submitMessage({ ...op, value: rebasedOp }, rebasedLocalOpMetadata);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetStashedOpLocalMetadata: (op: IMapValueTypeOperation): IMapMessageLocalMetadata => {\n\t\t\t\tconst localValue = this.data.get(op.key) ?? this.createCore(op.key, true);\n\t\t\t\tassert(\n\t\t\t\t\tlocalValue !== undefined,\n\t\t\t\t\t0x879 /* Local value expected on applying stashed op */,\n\t\t\t\t);\n\t\t\t\tconst handler = localValue.getOpHandler(op.value.opName);\n\t\t\t\treturn handler.applyStashedOp(localValue.value, op.value);\n\t\t\t},\n\t\t});\n\n\t\treturn messageHandlers;\n\t}\n\n\t/**\n\t * Create an emitter for a value type to emit ops from the given key.\n\t * @alpha\n\t * @param key - The key of the map that the value type will be stored on\n\t * @returns A value op emitter for the given key\n\t */\n\t// eslint-disable-next-line import/no-deprecated\n\tprivate makeMapValueOpEmitter(key: string): IValueOpEmitter {\n\t\t// eslint-disable-next-line import/no-deprecated\n\t\tconst emit: IValueOpEmitter[\"emit\"] = (\n\t\t\topName: IntervalDeltaOpType,\n\t\t\tpreviousValue: unknown,\n\t\t\tparams: SerializedIntervalDelta,\n\t\t\tlocalOpMetadata: IMapMessageLocalMetadata,\n\t\t): void => {\n\t\t\tconst translatedParams = makeHandlesSerializable(params, this.serializer, this.handle);\n\n\t\t\tconst op: IMapValueTypeOperation = {\n\t\t\t\tkey,\n\t\t\t\ttype: \"act\",\n\t\t\t\tvalue: {\n\t\t\t\t\topName,\n\t\t\t\t\tvalue: translatedParams,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tthis.submitMessage(op, localOpMetadata);\n\n\t\t\tconst event: IValueChanged = { key, previousValue };\n\t\t\tthis.eventEmitter.emit(\"valueChanged\", event, true, null, this.eventEmitter);\n\t\t};\n\n\t\treturn { emit };\n\t}\n}\n"]}
@@ -5,7 +5,7 @@
5
5
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
6
6
  import { ISharedObjectEvents } from "@fluidframework/shared-object-base";
7
7
  import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
8
- import { ISerializedInterval, IntervalOpType, SerializedIntervalDelta } from "./intervals";
8
+ import { ISerializedInterval, IntervalOpType, SerializedIntervalDelta, IntervalDeltaOpType } from "./intervals/index.mjs";
9
9
  /**
10
10
  * Type of "valueChanged" event parameter.
11
11
  */
@@ -121,6 +121,7 @@ export interface IValueOperation<T> {
121
121
  rebasedOp: IValueTypeOperationValue;
122
122
  rebasedLocalOpMetadata: IMapMessageLocalMetadata;
123
123
  } | undefined;
124
+ applyStashedOp(value: T, op: IValueTypeOperationValue): IMapMessageLocalMetadata;
124
125
  }
125
126
  /**
126
127
  * Defines a value type that can be registered on a container type.
@@ -189,10 +190,10 @@ export interface IValueTypeOperationValue {
189
190
  /**
190
191
  * The name of the operation.
191
192
  */
192
- opName: IntervalOpType;
193
+ opName: IntervalDeltaOpType;
193
194
  /**
194
195
  * The payload that is submitted along with the operation.
195
196
  */
196
197
  value: SerializedIntervalDelta;
197
198
  }
198
- //# sourceMappingURL=defaultMapInterfaces.d.ts.map
199
+ //# sourceMappingURL=defaultMapInterfaces.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultMapInterfaces.d.mts","sourceRoot":"","sources":["../src/defaultMapInterfaces.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- //# sourceMappingURL=intervalIndex.js.map
5
+ export {};
6
+ //# sourceMappingURL=defaultMapInterfaces.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultMapInterfaces.mjs","sourceRoot":"","sources":["../src/defaultMapInterfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { ISharedObjectEvents } from \"@fluidframework/shared-object-base\";\nimport { IEventThisPlaceHolder } from \"@fluidframework/core-interfaces\";\nimport {\n\tISerializedInterval,\n\tIntervalOpType,\n\tSerializedIntervalDelta,\n\tIntervalDeltaOpType,\n} from \"./intervals\";\n\n/**\n * Type of \"valueChanged\" event parameter.\n */\nexport interface IValueChanged {\n\t/**\n\t * The key storing the value that changed.\n\t */\n\tkey: string;\n\n\t/**\n\t * The value that was stored at the key prior to the change.\n\t */\n\tpreviousValue: any;\n}\n\n/**\n * Value types are given an IValueOpEmitter to emit their ops through the container type that holds them.\n * @internal\n * @deprecated - will be remove from public api as there is no public used of this type\n */\nexport interface IValueOpEmitter {\n\t/**\n\t * Called by the value type to emit a value type operation through the container type holding it.\n\t * @param opName - Name of the emitted operation\n\t * @param previousValue - JSONable previous value as defined by the value type @deprecated unused\n\t * @param params - JSONable params for the operation as defined by the value type\n\t * @param localOpMetadata - JSONable local metadata which should be submitted with the op\n\t */\n\temit(\n\t\topName: IntervalOpType,\n\t\tpreviousValue: undefined,\n\t\tparams: SerializedIntervalDelta,\n\t\tlocalOpMetadata: IMapMessageLocalMetadata,\n\t): void;\n}\n\n/**\n * @internal\n */\nexport interface IMapMessageLocalMetadata {\n\tlocalSeq: number;\n}\n\n/**\n * Optional flags that configure options for sequence DDSs\n * @internal\n */\nexport interface SequenceOptions {\n\t/**\n\t * Enable the ability to use interval APIs that rely on positions before and\n\t * after individual characters, referred to as \"sides\". See {@link SequencePlace}\n\t * for additional context.\n\t *\n\t * This flag must be enabled to pass instances of {@link SequencePlace} to\n\t * any IIntervalCollection API.\n\t *\n\t * Also see the feature flag `mergeTreeReferencesCanSlideToEndpoint` to allow\n\t * endpoints to slide to the special endpoint segments.\n\t *\n\t * The default value is false.\n\t */\n\tintervalStickinessEnabled: boolean;\n\t/**\n\t * Enable the ability for interval endpoints to slide to the special endpoint\n\t * segments that exist before and after the bounds of the string. This is\n\t * primarily useful for workflows involving interval stickiness, and it is\n\t * suggested to enable both this flag and `intervalStickinessEnabled` at the\n\t * same time.\n\t *\n\t * The default value is false.\n\t */\n\tmergeTreeReferencesCanSlideToEndpoint: boolean;\n\t[key: string]: boolean;\n}\n\n/**\n * A value factory is used to serialize/deserialize value types to a map\n * @alpha\n */\nexport interface IValueFactory<T> {\n\t/**\n\t * Create a new value type. Used both in creation of new value types, as well as in loading existing ones\n\t * from remote.\n\t * @param emitter - Emitter object that the created value type will use to emit operations\n\t * @param raw - Initialization parameters as defined by the value type\n\t * @returns The new value type\n\t * @alpha\n\t */\n\tload(emitter: IValueOpEmitter, raw: any, options?: Partial<SequenceOptions>): T;\n\n\t/**\n\t * Given a value type, provides a JSONable form of its data to be used for snapshotting. This data must be\n\t * loadable using the load method of its factory.\n\t * @param value - The value type to serialize\n\t * @returns The JSONable form of the value type\n\t * @alpha\n\t */\n\tstore(value: T): any;\n}\n\n/**\n * Defines an operation that a value type is able to handle.\n * @alpha\n */\nexport interface IValueOperation<T> {\n\t/**\n\t * Performs the actual processing on the incoming operation.\n\t * @param value - The current value stored at the given key, which should be the value type\n\t * @param params - The params on the incoming operation\n\t * @param local - Whether the operation originated from this client\n\t * @param message - The operation itself\n\t * @param localOpMetadata - any local metadata submitted by `IValueOpEmitter.emit`.\n\t * @alpha\n\t */\n\tprocess(\n\t\tvalue: T,\n\t\tparams: ISerializedInterval,\n\t\tlocal: boolean,\n\t\tmessage: ISequencedDocumentMessage | undefined,\n\t\tlocalOpMetadata: IMapMessageLocalMetadata | undefined,\n\t): void;\n\n\t/**\n\t * Rebases an `op` on `value` from its original perspective (ref/local seq) to the current\n\t * perspective. Should be invoked on reconnection.\n\t * @param value - The current value stored at the given key, which should be the value type.\n\t * @param op - The op to be rebased.\n\t * @param localOpMetadata - Any local metadata that was originally submitted with the op.\n\t * @returns A rebased version of the op and any local metadata that should be submitted with it.\n\t */\n\trebase(\n\t\tvalue: T,\n\t\top: IValueTypeOperationValue,\n\t\tlocalOpMetadata: IMapMessageLocalMetadata,\n\t):\n\t\t| { rebasedOp: IValueTypeOperationValue; rebasedLocalOpMetadata: IMapMessageLocalMetadata }\n\t\t| undefined;\n\n\tapplyStashedOp(value: T, op: IValueTypeOperationValue): IMapMessageLocalMetadata;\n}\n\n/**\n * Defines a value type that can be registered on a container type.\n */\nexport interface IValueType<T> {\n\t/**\n\t * Name of the value type.\n\t * @alpha\n\t */\n\tname: string;\n\n\t/**\n\t * Factory method used to convert to/from a JSON form of the type.\n\t * @alpha\n\t */\n\tfactory: IValueFactory<T>;\n\n\t/**\n\t * Operations that can be applied to the value type.\n\t * @alpha\n\t */\n\tops: Map<IntervalOpType, IValueOperation<T>>;\n}\n\nexport interface ISharedDefaultMapEvents extends ISharedObjectEvents {\n\t(\n\t\tevent: \"valueChanged\" | \"create\",\n\t\tlistener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void,\n\t): void;\n}\n\n/**\n * The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use\n * ISerializableValue.type to understand whether they're storing a Plain JS object, a SharedObject, or a value type.\n * Note that the in-memory equivalent of ISerializableValue is ILocalValue (similarly holding a type, but with\n * the _in-memory representation_ of the value instead). An ISerializableValue is what gets passed to\n * JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate)\n * and ops (set).\n *\n * The DefaultMap implementation for sequence has been specialized to only support a single ValueType, which serializes\n * and deserializes via .store() and .load().\n */\nexport interface ISerializableValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * The JSONable representation of the value.\n\t */\n\tvalue: any;\n}\n\nexport interface ISerializedValue {\n\t/**\n\t * A type annotation to help indicate how the value serializes.\n\t */\n\ttype: string;\n\n\t/**\n\t * String representation of the value.\n\t */\n\tvalue: string | undefined;\n}\n\n/**\n * ValueTypes handle ops slightly differently from SharedObjects or plain JS objects. Since the Map/Directory doesn't\n * know how to handle the ValueType's ops, those ops are instead passed along to the ValueType for processing.\n * IValueTypeOperationValue is that passed-along op. The opName on it is the ValueType-specific operation and the\n * value is whatever params the ValueType needs to complete that operation. Similar to ISerializableValue, it is\n * serializable via JSON.stringify/parse but differs in that it has no equivalency with an in-memory value - rather\n * it just describes an operation to be applied to an already-in-memory value.\n * @alpha\n */\nexport interface IValueTypeOperationValue {\n\t/**\n\t * The name of the operation.\n\t */\n\topName: IntervalDeltaOpType;\n\n\t/**\n\t * The payload that is submitted along with the operation.\n\t */\n\tvalue: SerializedIntervalDelta;\n}\n"]}
@@ -2,28 +2,16 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- /**
6
- * Supports distributed data structures which are list-like.
7
- *
8
- * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of
9
- * text.
10
- *
11
- * See the package's README for a high-level introduction to `SharedString`'s feature set.
12
- * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for
13
- * working with text.
14
- *
15
- * @packageDocumentation
16
- */
17
- export { IMapMessageLocalMetadata, IValueOpEmitter, SequenceOptions } from "./defaultMapInterfaces";
18
- export { IInterval, Interval, IntervalOpType, IntervalType, ISerializableInterval, ISerializedInterval, SequenceInterval, SerializedIntervalDelta, IntervalStickiness, IIntervalHelpers, sequenceIntervalHelpers, } from "./intervals";
19
- export { DeserializeCallback, IIntervalCollectionEvent, IIntervalCollection, IntervalLocator, intervalLocatorFromEndpoint, Side, InteriorSequencePlace, SequencePlace, } from "./intervalCollection";
20
- export { IntervalIndex, SequenceIntervalIndexes, IOverlappingIntervalsIndex, createOverlappingIntervalsIndex, createOverlappingSequenceIntervalsIndex, IEndpointInRangeIndex, IStartpointInRangeIndex, createEndpointInRangeIndex, createStartpointInRangeIndex, IIdIntervalIndex, createIdIntervalIndex, IEndpointIndex, createEndpointIndex, } from "./intervalIndex";
21
- export { appendAddIntervalToRevertibles, appendChangeIntervalToRevertibles, appendDeleteIntervalToRevertibles, appendIntervalPropertyChangedToRevertibles, appendSharedStringDeltaToRevertibles, discardSharedStringRevertibles, IntervalRevertible, revertSharedStringRevertibles, SharedStringRevertible, } from "./revertibles";
22
- export { ISharedSegmentSequenceEvents, SharedSegmentSequence } from "./sequence";
23
- export { ISequenceDeltaRange, SequenceDeltaEvent, SequenceEvent, SequenceMaintenanceEvent, } from "./sequenceDeltaEvent";
24
- export { SharedStringFactory } from "./sequenceFactory";
25
- export { getTextAndMarkers, ISharedString, SharedString, SharedStringSegment, } from "./sharedString";
26
- export { ISharedIntervalCollection, SharedIntervalCollection, SharedIntervalCollectionFactory, } from "./sharedIntervalCollection";
27
- export { IJSONRunSegment, SharedSequence, SubSequence } from "./sharedSequence";
5
+ export { IMapMessageLocalMetadata, IValueOpEmitter, SequenceOptions } from "./defaultMapInterfaces.mjs";
6
+ export { IInterval, Interval, IntervalOpType, IntervalType, ISerializableInterval, ISerializedInterval, SequenceInterval, SerializedIntervalDelta, IntervalStickiness, IIntervalHelpers, sequenceIntervalHelpers, } from "./intervals/index.mjs";
7
+ export { DeserializeCallback, IIntervalCollectionEvent, IIntervalCollection, IntervalLocator, intervalLocatorFromEndpoint, Side, InteriorSequencePlace, SequencePlace, } from "./intervalCollection.mjs";
8
+ export { IntervalIndex, SequenceIntervalIndexes, IOverlappingIntervalsIndex, createOverlappingIntervalsIndex, createOverlappingSequenceIntervalsIndex, IEndpointInRangeIndex, IStartpointInRangeIndex, createEndpointInRangeIndex, createStartpointInRangeIndex, IIdIntervalIndex, createIdIntervalIndex, IEndpointIndex, createEndpointIndex, } from "./intervalIndex/index.mjs";
9
+ export { appendAddIntervalToRevertibles, appendChangeIntervalToRevertibles, appendDeleteIntervalToRevertibles, appendIntervalPropertyChangedToRevertibles, appendSharedStringDeltaToRevertibles, discardSharedStringRevertibles, IntervalRevertible, revertSharedStringRevertibles, SharedStringRevertible, } from "./revertibles.mjs";
10
+ export { ISharedSegmentSequenceEvents, SharedSegmentSequence } from "./sequence.mjs";
11
+ export { ISequenceDeltaRange, SequenceDeltaEvent, SequenceEvent, SequenceMaintenanceEvent, } from "./sequenceDeltaEvent.mjs";
12
+ export { SharedStringFactory } from "./sequenceFactory.mjs";
13
+ export { getTextAndMarkers, ISharedString, SharedString, SharedStringSegment, } from "./sharedString.mjs";
14
+ export { ISharedIntervalCollection, SharedIntervalCollection, SharedIntervalCollectionFactory, } from "./sharedIntervalCollection.mjs";
15
+ export { IJSONRunSegment, SharedSequence, SubSequence } from "./sharedSequence.mjs";
28
16
  export { ISegment, Marker, BaseSegment, ReferencePosition, ReferenceType, PropertySet, MapLike, TextSegment, MergeTreeDeltaType, reservedMarkerIdKey, reservedTileLabelsKey, reservedRangeLabelsKey, TrackingGroup, LocalReferencePosition, } from "@fluidframework/merge-tree";
29
- //# sourceMappingURL=index.d.ts.map
17
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAcI,EAAE,wBAAwB,EAAE,eAAe,EAAE,eAAe,EAAE;OAC9D,EACN,SAAS,EACT,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACvB;OACM,EACN,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,2BAA2B,EAC3B,IAAI,EACJ,qBAAqB,EACrB,aAAa,GACb;OACM,EACN,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,uCAAuC,EACvC,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,GACnB;OACM,EACN,8BAA8B,EAC9B,iCAAiC,EACjC,iCAAiC,EACjC,0CAA0C,EAC1C,oCAAoC,EACpC,8BAA8B,EAC9B,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,GACtB;OACM,EAAE,4BAA4B,EAAE,qBAAqB,EAAE;OACvD,EACN,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,wBAAwB,GACxB;OACM,EAAE,mBAAmB,EAAE;OACvB,EACN,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,mBAAmB,GACnB;OACM,EACN,yBAAyB,EACzB,wBAAwB,EACxB,+BAA+B,GAC/B;OACM,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE;OAEhD,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,GACtB,MAAM,4BAA4B"}
package/lib/index.mjs ADDED
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export { Interval, IntervalOpType, IntervalType, SequenceInterval, IntervalStickiness, sequenceIntervalHelpers, } from "./intervals/index.mjs";
6
+ export { intervalLocatorFromEndpoint, Side, } from "./intervalCollection.mjs";
7
+ export { createOverlappingIntervalsIndex, createOverlappingSequenceIntervalsIndex, createEndpointInRangeIndex, createStartpointInRangeIndex, createIdIntervalIndex, createEndpointIndex, } from "./intervalIndex/index.mjs";
8
+ export { appendAddIntervalToRevertibles, appendChangeIntervalToRevertibles, appendDeleteIntervalToRevertibles, appendIntervalPropertyChangedToRevertibles, appendSharedStringDeltaToRevertibles, discardSharedStringRevertibles, revertSharedStringRevertibles, } from "./revertibles.mjs";
9
+ export { SharedSegmentSequence } from "./sequence.mjs";
10
+ export { SequenceDeltaEvent, SequenceEvent, SequenceMaintenanceEvent, } from "./sequenceDeltaEvent.mjs";
11
+ export { SharedStringFactory } from "./sequenceFactory.mjs";
12
+ export { getTextAndMarkers, SharedString, } from "./sharedString.mjs";
13
+ export { SharedIntervalCollection, SharedIntervalCollectionFactory, } from "./sharedIntervalCollection.mjs";
14
+ export { SharedSequence, SubSequence } from "./sharedSequence.mjs";
15
+ export { Marker, BaseSegment, ReferenceType, TextSegment, MergeTreeDeltaType, reservedMarkerIdKey, reservedTileLabelsKey, reservedRangeLabelsKey, TrackingGroup, } from "@fluidframework/merge-tree";
16
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAeI,EAEN,QAAQ,EACR,cAAc,EACd,YAAY,EAGZ,gBAAgB,EAEhB,kBAAkB,EAElB,uBAAuB,GACvB;OACM,EAKN,2BAA2B,EAC3B,IAAI,GAGJ;OACM,EAIN,+BAA+B,EAC/B,uCAAuC,EAGvC,0BAA0B,EAC1B,4BAA4B,EAE5B,qBAAqB,EAErB,mBAAmB,GACnB;OACM,EACN,8BAA8B,EAC9B,iCAAiC,EACjC,iCAAiC,EACjC,0CAA0C,EAC1C,oCAAoC,EACpC,8BAA8B,EAE9B,6BAA6B,GAE7B;OACM,EAAgC,qBAAqB,EAAE;OACvD,EAEN,kBAAkB,EAClB,aAAa,EACb,wBAAwB,GACxB;OACM,EAAE,mBAAmB,EAAE;OACvB,EACN,iBAAiB,EAEjB,YAAY,GAEZ;OACM,EAEN,wBAAwB,EACxB,+BAA+B,GAC/B;OACM,EAAmB,cAAc,EAAE,WAAW,EAAE;OAEhD,EAEN,MAAM,EACN,WAAW,EAEX,aAAa,EAGb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GAEb,MAAM,4BAA4B","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Supports distributed data structures which are list-like.\n *\n * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of\n * text.\n *\n * See the package's README for a high-level introduction to `SharedString`'s feature set.\n * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for\n * working with text.\n *\n * @packageDocumentation\n */\nexport { IMapMessageLocalMetadata, IValueOpEmitter, SequenceOptions } from \"./defaultMapInterfaces\";\nexport {\n\tIInterval,\n\tInterval,\n\tIntervalOpType,\n\tIntervalType,\n\tISerializableInterval,\n\tISerializedInterval,\n\tSequenceInterval,\n\tSerializedIntervalDelta,\n\tIntervalStickiness,\n\tIIntervalHelpers,\n\tsequenceIntervalHelpers,\n} from \"./intervals\";\nexport {\n\tDeserializeCallback,\n\tIIntervalCollectionEvent,\n\tIIntervalCollection,\n\tIntervalLocator,\n\tintervalLocatorFromEndpoint,\n\tSide,\n\tInteriorSequencePlace,\n\tSequencePlace,\n} from \"./intervalCollection\";\nexport {\n\tIntervalIndex,\n\tSequenceIntervalIndexes,\n\tIOverlappingIntervalsIndex,\n\tcreateOverlappingIntervalsIndex,\n\tcreateOverlappingSequenceIntervalsIndex,\n\tIEndpointInRangeIndex,\n\tIStartpointInRangeIndex,\n\tcreateEndpointInRangeIndex,\n\tcreateStartpointInRangeIndex,\n\tIIdIntervalIndex,\n\tcreateIdIntervalIndex,\n\tIEndpointIndex,\n\tcreateEndpointIndex,\n} from \"./intervalIndex\";\nexport {\n\tappendAddIntervalToRevertibles,\n\tappendChangeIntervalToRevertibles,\n\tappendDeleteIntervalToRevertibles,\n\tappendIntervalPropertyChangedToRevertibles,\n\tappendSharedStringDeltaToRevertibles,\n\tdiscardSharedStringRevertibles,\n\tIntervalRevertible,\n\trevertSharedStringRevertibles,\n\tSharedStringRevertible,\n} from \"./revertibles\";\nexport { ISharedSegmentSequenceEvents, SharedSegmentSequence } from \"./sequence\";\nexport {\n\tISequenceDeltaRange,\n\tSequenceDeltaEvent,\n\tSequenceEvent,\n\tSequenceMaintenanceEvent,\n} from \"./sequenceDeltaEvent\";\nexport { SharedStringFactory } from \"./sequenceFactory\";\nexport {\n\tgetTextAndMarkers,\n\tISharedString,\n\tSharedString,\n\tSharedStringSegment,\n} from \"./sharedString\";\nexport {\n\tISharedIntervalCollection,\n\tSharedIntervalCollection,\n\tSharedIntervalCollectionFactory,\n} from \"./sharedIntervalCollection\";\nexport { IJSONRunSegment, SharedSequence, SubSequence } from \"./sharedSequence\";\n\nexport {\n\tISegment,\n\tMarker,\n\tBaseSegment,\n\tReferencePosition,\n\tReferenceType,\n\tPropertySet,\n\tMapLike,\n\tTextSegment,\n\tMergeTreeDeltaType,\n\treservedMarkerIdKey,\n\treservedTileLabelsKey,\n\treservedRangeLabelsKey,\n\tTrackingGroup,\n\tLocalReferencePosition,\n} from \"@fluidframework/merge-tree\";\n"]}
@@ -6,9 +6,9 @@ import { TypedEventEmitter } from "@fluid-internal/client-utils";
6
6
  import { IEvent } from "@fluidframework/core-interfaces";
7
7
  import { Client, PropertySet, LocalReferencePosition } from "@fluidframework/merge-tree";
8
8
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
9
- import { IMapMessageLocalMetadata, IValueFactory, IValueOpEmitter, IValueOperation, IValueType, SequenceOptions } from "./defaultMapInterfaces";
10
- import { CompressedSerializedInterval, IIntervalHelpers, Interval, IntervalOpType, IntervalStickiness, IntervalType, ISerializableInterval, ISerializedInterval, SequenceInterval, SerializedIntervalDelta } from "./intervals";
11
- import { IEndpointIndex, IIdIntervalIndex, IOverlappingIntervalsIndex, IntervalIndex } from "./intervalIndex";
9
+ import { IMapMessageLocalMetadata, IValueFactory, IValueOpEmitter, IValueOperation, IValueType, IValueTypeOperationValue, SequenceOptions } from "./defaultMapInterfaces.mjs";
10
+ import { CompressedSerializedInterval, IIntervalHelpers, Interval, IntervalOpType, IntervalStickiness, IntervalType, ISerializableInterval, ISerializedInterval, SequenceInterval, SerializedIntervalDelta } from "./intervals/index.mjs";
11
+ import { IEndpointIndex, IIdIntervalIndex, IOverlappingIntervalsIndex, IntervalIndex } from "./intervalIndex/index.mjs";
12
12
  /**
13
13
  * Defines a position and side relative to a character in a sequence.
14
14
  *
@@ -204,12 +204,10 @@ export interface IIntervalCollection<TInterval extends ISerializableInterval> ex
204
204
  getIntervalById(id: string): TInterval | undefined;
205
205
  /**
206
206
  * Creates a new interval and add it to the collection.
207
- * @deprecated call IntervalCollection.add without specifying an intervalType
208
207
  * @param start - interval start position (inclusive)
209
208
  * @param end - interval end position (exclusive)
210
- * @param intervalType - type of the interval. All intervals are SlideOnRemove. Intervals may not be Transient.
211
209
  * @param props - properties of the interval
212
- * @returns The created interval
210
+ * @returns - the created interval
213
211
  * @remarks See documentation on {@link SequenceInterval} for comments on
214
212
  * interval endpoint semantics: there are subtleties with how the current
215
213
  * half-open behavior is represented.
@@ -275,16 +273,6 @@ export interface IIntervalCollection<TInterval extends ISerializableInterval> ex
275
273
  * the case that the entire interval has been deleted should be resolved at
276
274
  * the same time as this ticket
277
275
  */
278
- add(start: SequencePlace, end: SequencePlace, intervalType: IntervalType, props?: PropertySet): TInterval;
279
- /**
280
- * Creates a new interval and add it to the collection.
281
- * @param start - interval start position (inclusive)
282
- * @param end - interval end position (exclusive)
283
- * @param props - properties of the interval
284
- * @returns - the created interval
285
- * @remarks - See documentation on {@link SequenceInterval} for comments on interval endpoint semantics: there are subtleties
286
- * with how the current half-open behavior is represented.
287
- */
288
276
  add({ start, end, props, }: {
289
277
  start: SequencePlace;
290
278
  end: SequencePlace;
@@ -296,23 +284,6 @@ export interface IIntervalCollection<TInterval extends ISerializableInterval> ex
296
284
  * @returns the removed interval
297
285
  */
298
286
  removeIntervalById(id: string): TInterval | undefined;
299
- /**
300
- * Changes the properties on an existing interval.
301
- * @deprecated - call change with the id and and object containing the new properties
302
- * @param id - Id of the interval whose properties should be changed
303
- * @param props - Property set to apply to the interval. Shallow merging is used between any existing properties
304
- * and `prop`, i.e. the interval will end up with a property object equivalent to `{ ...oldProps, ...props }`.
305
- */
306
- changeProperties(id: string, props: PropertySet): void;
307
- /**
308
- * Changes the endpoints of an existing interval.
309
- * @deprecated - call change with the start and end parameters encapsulated in an object
310
- * @param id - Id of the interval to change
311
- * @param start - New start value. To leave the endpoint unchanged, pass the current value.
312
- * @param end - New end value. To leave the endpoint unchanged, pass the current value.
313
- * @returns the interval that was changed, if it existed in the collection.
314
- */
315
- change(id: string, start: SequencePlace, end: SequencePlace): TInterval | undefined;
316
287
  /**
317
288
  * Changes the endpoints, properties, or both of an existing interval.
318
289
  * @param id - Id of the Interval to change
@@ -440,9 +411,7 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
440
411
  private assertStickinessEnabled;
441
412
  /**
442
413
  * {@inheritdoc IIntervalCollection.add}
443
- * @deprecated call IntervalCollection.add without specifying an intervalType
444
414
  */
445
- add(start: SequencePlace, end: SequencePlace, intervalType: IntervalType, props?: PropertySet): TInterval;
446
415
  add({ start, end, props, }: {
447
416
  start: SequencePlace;
448
417
  end: SequencePlace;
@@ -453,16 +422,6 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
453
422
  * {@inheritdoc IIntervalCollection.removeIntervalById}
454
423
  */
455
424
  removeIntervalById(id: string): TInterval | undefined;
456
- /**
457
- * {@inheritdoc IIntervalCollection.changeProperties}
458
- * @deprecated - call change with the id and an object containing the new props values
459
- */
460
- changeProperties(id: string, props: PropertySet): void;
461
- /**
462
- * {@inheritdoc IIntervalCollection.change}
463
- * @deprecated - call change with the id and an object containing the new start, end, and/or props values
464
- */
465
- change(id: string, start: SequencePlace, end: SequencePlace): TInterval | undefined;
466
425
  /**
467
426
  * {@inheritdoc IIntervalCollection.change}
468
427
  */
@@ -492,6 +451,7 @@ export declare class IntervalCollection<TInterval extends ISerializableInterval>
492
451
  * @internal
493
452
  */
494
453
  rebaseLocalInterval(opName: string, serializedInterval: SerializedIntervalDelta, localSeq: number): SerializedIntervalDelta | undefined;
454
+ applyStashedOp(op: IValueTypeOperationValue): IMapMessageLocalMetadata;
495
455
  private getSlideToSegment;
496
456
  private ackInterval;
497
457
  /** @internal */
@@ -566,4 +526,4 @@ export interface IntervalLocator {
566
526
  */
567
527
  export declare function intervalLocatorFromEndpoint(potentialEndpoint: LocalReferencePosition): IntervalLocator | undefined;
568
528
  export {};
569
- //# sourceMappingURL=intervalCollection.d.ts.map
529
+ //# sourceMappingURL=intervalCollection.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalCollection.d.mts","sourceRoot":"","sources":["../src/intervalCollection.ts"],"names":[],"mappings":"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"}