@fluidframework/sequence 2.0.0-internal.7.2.2 → 2.0.0-internal.7.4.0

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 (208) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/api-extractor-lint.json +13 -0
  3. package/api-extractor.json +9 -1
  4. package/api-report/sequence.api.md +87 -84
  5. package/dist/defaultMap.d.ts +3 -3
  6. package/dist/defaultMap.d.ts.map +1 -1
  7. package/dist/defaultMap.js +7 -2
  8. package/dist/defaultMap.js.map +1 -1
  9. package/dist/defaultMapInterfaces.d.ts +11 -10
  10. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  11. package/dist/defaultMapInterfaces.js.map +1 -1
  12. package/dist/intervalCollection.d.ts +68 -14
  13. package/dist/intervalCollection.d.ts.map +1 -1
  14. package/dist/intervalCollection.js +50 -45
  15. package/dist/intervalCollection.js.map +1 -1
  16. package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
  17. package/dist/intervalIndex/endpointInRangeIndex.js +1 -1
  18. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  19. package/dist/intervalIndex/endpointIndex.d.ts +2 -2
  20. package/dist/intervalIndex/endpointIndex.js +1 -1
  21. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  22. package/dist/intervalIndex/idIntervalIndex.d.ts +2 -2
  23. package/dist/intervalIndex/idIntervalIndex.js +1 -1
  24. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  25. package/dist/intervalIndex/intervalIndex.d.ts +1 -1
  26. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  27. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
  28. package/dist/intervalIndex/overlappingIntervalsIndex.js +1 -1
  29. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  30. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
  31. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +1 -1
  32. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  33. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
  34. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  35. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  36. package/dist/intervalIndex/startpointInRangeIndex.d.ts +2 -2
  37. package/dist/intervalIndex/startpointInRangeIndex.js +1 -1
  38. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  39. package/dist/intervals/interval.d.ts +2 -7
  40. package/dist/intervals/interval.d.ts.map +1 -1
  41. package/dist/intervals/interval.js +1 -5
  42. package/dist/intervals/interval.js.map +1 -1
  43. package/dist/intervals/intervalUtils.d.ts +15 -14
  44. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  45. package/dist/intervals/intervalUtils.js +4 -3
  46. package/dist/intervals/intervalUtils.js.map +1 -1
  47. package/dist/intervals/sequenceInterval.d.ts +3 -12
  48. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  49. package/dist/intervals/sequenceInterval.js +3 -11
  50. package/dist/intervals/sequenceInterval.js.map +1 -1
  51. package/dist/localValues.d.ts +2 -1
  52. package/dist/localValues.d.ts.map +1 -1
  53. package/dist/localValues.js.map +1 -1
  54. package/dist/packageVersion.d.ts +1 -1
  55. package/dist/packageVersion.js +1 -1
  56. package/dist/packageVersion.js.map +1 -1
  57. package/dist/revertibles.d.ts +9 -15
  58. package/dist/revertibles.d.ts.map +1 -1
  59. package/dist/revertibles.js +41 -21
  60. package/dist/revertibles.js.map +1 -1
  61. package/dist/sequence-alpha.d.ts +1306 -0
  62. package/dist/sequence-beta.d.ts +270 -0
  63. package/dist/sequence-public.d.ts +270 -0
  64. package/dist/sequence-untrimmed.d.ts +1790 -0
  65. package/dist/sequence.d.ts +2 -3
  66. package/dist/sequence.d.ts.map +1 -1
  67. package/dist/sequence.js +4 -5
  68. package/dist/sequence.js.map +1 -1
  69. package/dist/sequenceDeltaEvent.d.ts +4 -4
  70. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  71. package/dist/sequenceDeltaEvent.js +4 -3
  72. package/dist/sequenceDeltaEvent.js.map +1 -1
  73. package/dist/sequenceFactory.d.ts +1 -1
  74. package/dist/sequenceFactory.js +1 -1
  75. package/dist/sequenceFactory.js.map +1 -1
  76. package/dist/sharedIntervalCollection.d.ts +3 -3
  77. package/dist/sharedIntervalCollection.js +2 -2
  78. package/dist/sharedIntervalCollection.js.map +1 -1
  79. package/dist/sharedSequence.d.ts +3 -3
  80. package/dist/sharedSequence.js +2 -2
  81. package/dist/sharedSequence.js.map +1 -1
  82. package/dist/sharedString.d.ts +8 -5
  83. package/dist/sharedString.d.ts.map +1 -1
  84. package/dist/sharedString.js +6 -3
  85. package/dist/sharedString.js.map +1 -1
  86. package/dist/tsdoc-metadata.json +1 -1
  87. package/lib/defaultMap.d.ts +3 -3
  88. package/lib/defaultMap.d.ts.map +1 -1
  89. package/lib/defaultMap.js +29 -20
  90. package/lib/defaultMap.js.map +1 -1
  91. package/lib/defaultMapInterfaces.d.ts +11 -10
  92. package/lib/defaultMapInterfaces.d.ts.map +1 -1
  93. package/lib/defaultMapInterfaces.js +2 -1
  94. package/lib/defaultMapInterfaces.js.map +1 -1
  95. package/lib/index.js +45 -10
  96. package/lib/index.js.map +1 -1
  97. package/lib/intervalCollection.d.ts +68 -14
  98. package/lib/intervalCollection.d.ts.map +1 -1
  99. package/lib/intervalCollection.js +174 -156
  100. package/lib/intervalCollection.js.map +1 -1
  101. package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
  102. package/lib/intervalIndex/endpointInRangeIndex.js +18 -13
  103. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  104. package/lib/intervalIndex/endpointIndex.d.ts +2 -2
  105. package/lib/intervalIndex/endpointIndex.js +14 -9
  106. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  107. package/lib/intervalIndex/idIntervalIndex.d.ts +2 -2
  108. package/lib/intervalIndex/idIntervalIndex.js +9 -5
  109. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  110. package/lib/intervalIndex/index.js +19 -6
  111. package/lib/intervalIndex/index.js.map +1 -1
  112. package/lib/intervalIndex/intervalIndex.d.ts +1 -1
  113. package/lib/intervalIndex/intervalIndex.js +2 -1
  114. package/lib/intervalIndex/intervalIndex.js.map +1 -1
  115. package/lib/intervalIndex/intervalIndexUtils.js +8 -4
  116. package/lib/intervalIndex/intervalIndexUtils.js.map +1 -1
  117. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +2 -2
  118. package/lib/intervalIndex/overlappingIntervalsIndex.js +16 -11
  119. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  120. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +1 -1
  121. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +15 -11
  122. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  123. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -1
  124. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  125. package/lib/intervalIndex/sequenceIntervalIndexes.js +2 -1
  126. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  127. package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
  128. package/lib/intervalIndex/startpointInRangeIndex.js +18 -13
  129. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  130. package/lib/intervalTree.js +9 -4
  131. package/lib/intervalTree.js.map +1 -1
  132. package/lib/intervals/index.js +18 -3
  133. package/lib/intervals/index.js.map +1 -1
  134. package/lib/intervals/interval.d.ts +2 -7
  135. package/lib/intervals/interval.d.ts.map +1 -1
  136. package/lib/intervals/interval.js +19 -18
  137. package/lib/intervals/interval.js.map +1 -1
  138. package/lib/intervals/intervalUtils.d.ts +15 -14
  139. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  140. package/lib/intervals/intervalUtils.js +22 -16
  141. package/lib/intervals/intervalUtils.js.map +1 -1
  142. package/lib/intervals/sequenceInterval.d.ts +3 -12
  143. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  144. package/lib/intervals/sequenceInterval.js +68 -70
  145. package/lib/intervals/sequenceInterval.js.map +1 -1
  146. package/lib/localValues.d.ts +2 -1
  147. package/lib/localValues.d.ts.map +1 -1
  148. package/lib/localValues.js +9 -4
  149. package/lib/localValues.js.map +1 -1
  150. package/lib/packageVersion.d.ts +1 -1
  151. package/lib/packageVersion.js +5 -2
  152. package/lib/packageVersion.js.map +1 -1
  153. package/lib/revertibles.d.ts +9 -15
  154. package/lib/revertibles.d.ts.map +1 -1
  155. package/lib/revertibles.js +98 -68
  156. package/lib/revertibles.js.map +1 -1
  157. package/lib/sequence-alpha.d.ts +1306 -0
  158. package/lib/sequence-beta.d.ts +270 -0
  159. package/lib/sequence-public.d.ts +270 -0
  160. package/lib/sequence-untrimmed.d.ts +1790 -0
  161. package/lib/sequence.d.ts +2 -3
  162. package/lib/sequence.d.ts.map +1 -1
  163. package/lib/sequence.js +46 -46
  164. package/lib/sequence.js.map +1 -1
  165. package/lib/sequenceDeltaEvent.d.ts +4 -4
  166. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  167. package/lib/sequenceDeltaEvent.js +17 -10
  168. package/lib/sequenceDeltaEvent.js.map +1 -1
  169. package/lib/sequenceFactory.d.ts +1 -1
  170. package/lib/sequenceFactory.js +14 -10
  171. package/lib/sequenceFactory.js.map +1 -1
  172. package/lib/sharedIntervalCollection.d.ts +3 -3
  173. package/lib/sharedIntervalCollection.js +20 -15
  174. package/lib/sharedIntervalCollection.js.map +1 -1
  175. package/lib/sharedSequence.d.ts +3 -3
  176. package/lib/sharedSequence.js +13 -8
  177. package/lib/sharedSequence.js.map +1 -1
  178. package/lib/sharedString.d.ts +8 -5
  179. package/lib/sharedString.d.ts.map +1 -1
  180. package/lib/sharedString.js +27 -19
  181. package/lib/sharedString.js.map +1 -1
  182. package/package.json +43 -29
  183. package/sequence.test-files.tar +0 -0
  184. package/src/defaultMap.ts +22 -16
  185. package/src/defaultMapInterfaces.ts +15 -12
  186. package/src/intervalCollection.ts +131 -67
  187. package/src/intervalIndex/endpointInRangeIndex.ts +2 -2
  188. package/src/intervalIndex/endpointIndex.ts +2 -2
  189. package/src/intervalIndex/idIntervalIndex.ts +2 -2
  190. package/src/intervalIndex/intervalIndex.ts +1 -1
  191. package/src/intervalIndex/overlappingIntervalsIndex.ts +2 -2
  192. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +1 -1
  193. package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -1
  194. package/src/intervalIndex/startpointInRangeIndex.ts +2 -2
  195. package/src/intervals/interval.ts +2 -7
  196. package/src/intervals/intervalUtils.ts +16 -15
  197. package/src/intervals/sequenceInterval.ts +3 -12
  198. package/src/localValues.ts +2 -1
  199. package/src/packageVersion.ts +1 -1
  200. package/src/revertibles.ts +95 -24
  201. package/src/sequence.ts +5 -7
  202. package/src/sequenceDeltaEvent.ts +6 -4
  203. package/src/sequenceFactory.ts +1 -1
  204. package/src/sharedIntervalCollection.ts +3 -3
  205. package/src/sharedSequence.ts +3 -3
  206. package/src/sharedString.ts +8 -5
  207. package/tsconfig.esnext.json +1 -2
  208. package/tsconfig.json +5 -3
@@ -5,6 +5,7 @@
5
5
  import { IFluidHandle } from "@fluidframework/core-interfaces";
6
6
  import { IFluidSerializer } from "@fluidframework/shared-object-base";
7
7
  import { ISerializableValue, ISerializedValue, IValueOperation, IValueType } from "./defaultMapInterfaces";
8
+ import { IntervalOpType } from "./intervals";
8
9
  /**
9
10
  * A local value to be stored in a container type DDS.
10
11
  */
@@ -53,6 +54,6 @@ export declare class ValueTypeLocalValue<T> implements ILocalValue<T> {
53
54
  * @param opName - The name of the operation that needs processing
54
55
  * @returns The object which can process the given op
55
56
  */
56
- getOpHandler(opName: string): IValueOperation<T>;
57
+ getOpHandler(opName: IntervalOpType): IValueOperation<T>;
57
58
  }
58
59
  //# sourceMappingURL=localValues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localValues.d.ts","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oCAAoC,CAAC;AACxF,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IACnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAAC;CACnF;AAED,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,YAAY,GAChB,kBAAkB,CAMpB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;aAO3C,KAAK,EAAE,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP3B;;;;OAIG;gBAEc,KAAK,EAAE,CAAC,EACP,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAG1C;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACI,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB;IAUzF;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;CAQvD"}
1
+ {"version":3,"file":"localValues.d.ts","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oCAAoC,CAAC;AACxF,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IACnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAElB;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAAC;CACnF;AAED,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,YAAY,GAChB,kBAAkB,CAMpB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;aAO3C,KAAK,EAAE,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP3B;;;;OAIG;gBAEc,KAAK,EAAE,CAAC,EACP,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAG1C;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACI,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB;IAUzF;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC;CAQ/D"}
@@ -1,21 +1,25 @@
1
+ "use strict";
1
2
  /*!
2
3
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
4
  * Licensed under the MIT License.
4
5
  */
5
- import { serializeHandles } from "@fluidframework/shared-object-base";
6
- export function makeSerializable(localValue, serializer, bind) {
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ValueTypeLocalValue = exports.makeSerializable = void 0;
8
+ const shared_object_base_1 = require("@fluidframework/shared-object-base");
9
+ function makeSerializable(localValue, serializer, bind) {
7
10
  const value = localValue.makeSerialized(serializer, bind);
8
11
  return {
9
12
  type: value.type,
10
13
  value: value.value && JSON.parse(value.value),
11
14
  };
12
15
  }
16
+ exports.makeSerializable = makeSerializable;
13
17
  /**
14
18
  * Manages a contained value type.
15
19
  *
16
20
  * @alpha
17
21
  */
18
- export class ValueTypeLocalValue {
22
+ class ValueTypeLocalValue {
19
23
  /**
20
24
  * Create a new ValueTypeLocalValue.
21
25
  * @param value - The instance of the value type stored within
@@ -36,7 +40,7 @@ export class ValueTypeLocalValue {
36
40
  */
37
41
  makeSerialized(serializer, bind) {
38
42
  const storedValueType = this.valueType.factory.store(this.value);
39
- const value = serializeHandles(storedValueType, serializer, bind);
43
+ const value = (0, shared_object_base_1.serializeHandles)(storedValueType, serializer, bind);
40
44
  return {
41
45
  type: this.type,
42
46
  value,
@@ -55,4 +59,5 @@ export class ValueTypeLocalValue {
55
59
  return handler;
56
60
  }
57
61
  }
62
+ exports.ValueTypeLocalValue = ValueTypeLocalValue;
58
63
  //# sourceMappingURL=localValues.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"localValues.js","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AA+BxF,MAAM,UAAU,gBAAgB,CAC/B,UAAuB,EACvB,UAA4B,EAC5B,IAAkB;IAElB,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;KAC7C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC/B;;;;OAIG;IACH,YACiB,KAAQ,EACP,SAAwB;QADzB,UAAK,GAAL,KAAK,CAAG;QACP,cAAS,GAAT,SAAS,CAAe;IACvC,CAAC;IAEJ;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,UAA4B,EAAE,IAAkB;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK;SACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,MAAc;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACxC;QAED,OAAO,OAAO,CAAC;IAChB,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 { IFluidSerializer, serializeHandles } from \"@fluidframework/shared-object-base\";\nimport {\n\tISerializableValue,\n\tISerializedValue,\n\tIValueOperation,\n\tIValueType,\n} from \"./defaultMapInterfaces\";\n\n/**\n * A local value to be stored in a container type DDS.\n */\nexport interface ILocalValue<T = any> {\n\t/**\n\t * Type indicator of the value stored within.\n\t */\n\treadonly type: string;\n\n\t/**\n\t * The in-memory value stored within.\n\t */\n\treadonly value: T;\n\n\t/**\n\t * Retrieve the serialized form of the value stored within.\n\t * @param serializer - Data store runtime's serializer\n\t * @param bind - Container type's handle\n\t * @returns The serialized form of the contained value\n\t */\n\tmakeSerialized(serializer: IFluidSerializer, bind: IFluidHandle): ISerializedValue;\n}\n\nexport function makeSerializable(\n\tlocalValue: ILocalValue,\n\tserializer: IFluidSerializer,\n\tbind: IFluidHandle,\n): ISerializableValue {\n\tconst value = localValue.makeSerialized(serializer, bind);\n\treturn {\n\t\ttype: value.type,\n\t\tvalue: value.value && JSON.parse(value.value),\n\t};\n}\n\n/**\n * Manages a contained value type.\n *\n * @alpha\n */\nexport class ValueTypeLocalValue<T> implements ILocalValue<T> {\n\t/**\n\t * Create a new ValueTypeLocalValue.\n\t * @param value - The instance of the value type stored within\n\t * @param valueType - The type object of the value type stored within\n\t */\n\tconstructor(\n\t\tpublic readonly value: T,\n\t\tprivate readonly valueType: IValueType<T>,\n\t) {}\n\n\t/**\n\t * {@inheritDoc ILocalValue.\"type\"}\n\t */\n\tpublic get type(): string {\n\t\treturn this.valueType.name;\n\t}\n\n\t/**\n\t * {@inheritDoc ILocalValue.makeSerialized}\n\t */\n\tpublic makeSerialized(serializer: IFluidSerializer, bind: IFluidHandle): ISerializedValue {\n\t\tconst storedValueType = this.valueType.factory.store(this.value);\n\t\tconst value = serializeHandles(storedValueType, serializer, bind);\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\t/**\n\t * Get the handler for a given op of this value type.\n\t * @param opName - The name of the operation that needs processing\n\t * @returns The object which can process the given op\n\t */\n\tpublic getOpHandler(opName: string): IValueOperation<T> {\n\t\tconst handler = this.valueType.ops.get(opName);\n\t\tif (!handler) {\n\t\t\tthrow new Error(\"Unknown type message\");\n\t\t}\n\n\t\treturn handler;\n\t}\n}\n"]}
1
+ {"version":3,"file":"localValues.js","sourceRoot":"","sources":["../src/localValues.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,2EAAwF;AAgCxF,SAAgB,gBAAgB,CAC/B,UAAuB,EACvB,UAA4B,EAC5B,IAAkB;IAElB,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;KAC7C,CAAC;AACH,CAAC;AAVD,4CAUC;AAED;;;;GAIG;AACH,MAAa,mBAAmB;IAC/B;;;;OAIG;IACH,YACiB,KAAQ,EACP,SAAwB;QADzB,UAAK,GAAL,KAAK,CAAG;QACP,cAAS,GAAT,SAAS,CAAe;IACvC,CAAC;IAEJ;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,UAA4B,EAAE,IAAkB;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAA,qCAAgB,EAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK;SACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,MAAsB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACxC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;CACD;AA5CD,kDA4CC","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 { IFluidSerializer, serializeHandles } from \"@fluidframework/shared-object-base\";\nimport {\n\tISerializableValue,\n\tISerializedValue,\n\tIValueOperation,\n\tIValueType,\n} from \"./defaultMapInterfaces\";\nimport { IntervalOpType } from \"./intervals\";\n\n/**\n * A local value to be stored in a container type DDS.\n */\nexport interface ILocalValue<T = any> {\n\t/**\n\t * Type indicator of the value stored within.\n\t */\n\treadonly type: string;\n\n\t/**\n\t * The in-memory value stored within.\n\t */\n\treadonly value: T;\n\n\t/**\n\t * Retrieve the serialized form of the value stored within.\n\t * @param serializer - Data store runtime's serializer\n\t * @param bind - Container type's handle\n\t * @returns The serialized form of the contained value\n\t */\n\tmakeSerialized(serializer: IFluidSerializer, bind: IFluidHandle): ISerializedValue;\n}\n\nexport function makeSerializable(\n\tlocalValue: ILocalValue,\n\tserializer: IFluidSerializer,\n\tbind: IFluidHandle,\n): ISerializableValue {\n\tconst value = localValue.makeSerialized(serializer, bind);\n\treturn {\n\t\ttype: value.type,\n\t\tvalue: value.value && JSON.parse(value.value),\n\t};\n}\n\n/**\n * Manages a contained value type.\n *\n * @alpha\n */\nexport class ValueTypeLocalValue<T> implements ILocalValue<T> {\n\t/**\n\t * Create a new ValueTypeLocalValue.\n\t * @param value - The instance of the value type stored within\n\t * @param valueType - The type object of the value type stored within\n\t */\n\tconstructor(\n\t\tpublic readonly value: T,\n\t\tprivate readonly valueType: IValueType<T>,\n\t) {}\n\n\t/**\n\t * {@inheritDoc ILocalValue.\"type\"}\n\t */\n\tpublic get type(): string {\n\t\treturn this.valueType.name;\n\t}\n\n\t/**\n\t * {@inheritDoc ILocalValue.makeSerialized}\n\t */\n\tpublic makeSerialized(serializer: IFluidSerializer, bind: IFluidHandle): ISerializedValue {\n\t\tconst storedValueType = this.valueType.factory.store(this.value);\n\t\tconst value = serializeHandles(storedValueType, serializer, bind);\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\t/**\n\t * Get the handler for a given op of this value type.\n\t * @param opName - The name of the operation that needs processing\n\t * @returns The object which can process the given op\n\t */\n\tpublic getOpHandler(opName: IntervalOpType): IValueOperation<T> {\n\t\tconst handler = this.valueType.ops.get(opName);\n\t\tif (!handler) {\n\t\t\tthrow new Error(\"Unknown type message\");\n\t\t}\n\n\t\treturn handler;\n\t}\n}\n"]}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/sequence";
8
- export declare const pkgVersion = "2.0.0-internal.7.2.2";
8
+ export declare const pkgVersion = "2.0.0-internal.7.4.0";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -1,9 +1,12 @@
1
+ "use strict";
1
2
  /*!
2
3
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
4
  * Licensed under the MIT License.
4
5
  *
5
6
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
7
  */
7
- export const pkgName = "@fluidframework/sequence";
8
- export const pkgVersion = "2.0.0-internal.7.2.2";
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.pkgVersion = exports.pkgName = void 0;
10
+ exports.pkgName = "@fluidframework/sequence";
11
+ exports.pkgVersion = "2.0.0-internal.7.4.0";
9
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/sequence\";\nexport const pkgVersion = \"2.0.0-internal.7.2.2\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,0BAA0B,CAAC;AACrC,QAAA,UAAU,GAAG,sBAAsB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/sequence\";\nexport const pkgVersion = \"2.0.0-internal.7.4.0\";\n"]}
@@ -8,15 +8,12 @@ import { SharedString } from "./sharedString";
8
8
  import { SequenceDeltaEvent } from "./sequenceDeltaEvent";
9
9
  /**
10
10
  * Data for undoing edits on SharedStrings and Intervals.
11
- *
12
- * @alpha
11
+ * @internal
13
12
  */
14
13
  export type SharedStringRevertible = MergeTreeDeltaRevertible | IntervalRevertible;
15
- type IntervalOpType = (typeof IntervalOpType)[keyof typeof IntervalOpType];
16
14
  /**
17
15
  * Data for undoing edits affecting Intervals.
18
- *
19
- * @alpha
16
+ * @internal
20
17
  */
21
18
  export type IntervalRevertible = {
22
19
  event: typeof IntervalOpType.CHANGE;
@@ -52,41 +49,38 @@ export type IntervalRevertible = {
52
49
  };
53
50
  /**
54
51
  * Create revertibles for adding an interval
55
- * @alpha
52
+ * @internal
56
53
  */
57
54
  export declare function appendAddIntervalToRevertibles(interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
58
55
  /**
59
56
  * Create revertibles for deleting an interval
60
- * @alpha
57
+ * @internal
61
58
  */
62
59
  export declare function appendDeleteIntervalToRevertibles(string: SharedString, interval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
63
60
  /**
64
61
  * Create revertibles for moving endpoints of an interval
65
- * @alpha
62
+ * @internal
66
63
  */
67
64
  export declare function appendChangeIntervalToRevertibles(string: SharedString, newInterval: SequenceInterval, previousInterval: SequenceInterval, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
68
65
  /**
69
66
  * Create revertibles for changing properties of an interval
70
- * @alpha
67
+ * @internal
71
68
  */
72
69
  export declare function appendIntervalPropertyChangedToRevertibles(interval: SequenceInterval, deltas: PropertySet, revertibles: SharedStringRevertible[]): SharedStringRevertible[];
73
70
  /**
74
71
  * Create revertibles for SharedStringDeltas, handling indirectly modified intervals
75
72
  * (e.g. reverting remove of a range that contains an interval will move the interval back)
76
- *
77
- * @alpha
73
+ * @internal
78
74
  */
79
75
  export declare function appendSharedStringDeltaToRevertibles(string: SharedString, delta: SequenceDeltaEvent, revertibles: SharedStringRevertible[]): void;
80
76
  /**
81
77
  * Clean up resources held by revertibles that are no longer needed.
82
- * @alpha
78
+ * @internal
83
79
  */
84
80
  export declare function discardSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
85
81
  /**
86
82
  * Invoke revertibles to reverse prior edits
87
- *
88
- * @alpha
83
+ * @internal
89
84
  */
90
85
  export declare function revertSharedStringRevertibles(sharedString: SharedString, revertibles: SharedStringRevertible[]): void;
91
- export {};
92
86
  //# sourceMappingURL=revertibles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"revertibles.d.ts","sourceRoot":"","sources":["../src/revertibles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAIN,sBAAsB,EAEtB,wBAAwB,EAExB,WAAW,EAMX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAuB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;AAInF,KAAK,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC3B;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,sBAAsB,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;CAC1B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,sBAAsB,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC9C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,EAAE,WAAW,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,eAAe,CAAC;IAC7C,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IAEJ,cAAc,EAAE;QACf,UAAU,EAAE,kBAAkB,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,mBAAmB,EAAE,wBAAwB,CAAC;CAC7C,CAAC;AAaL;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,EAAE,4BAQrC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,EAAE,4BAqCrC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,gBAAgB,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,sBAAsB,EAAE,4BAwCrC;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACzD,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,sBAAsB,EAAE,4BASrC;AA2CD;;;;;GAKG;AACH,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,sBAAsB,EAAE,QAoFrC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,sBAAsB,EAAE,QAUrC;AA2MD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,sBAAsB,EAAE,QA8BrC"}
1
+ {"version":3,"file":"revertibles.d.ts","sourceRoot":"","sources":["../src/revertibles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAIN,sBAAsB,EAEtB,wBAAwB,EAExB,WAAW,EAOX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAuB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;AAInF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC3B;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,sBAAsB,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;CAC1B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,sBAAsB,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC9C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,EAAE,WAAW,CAAC;CAC3B,GACD;IACA,KAAK,EAAE,OAAO,cAAc,CAAC,eAAe,CAAC;IAC7C,SAAS,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IAEJ,cAAc,EAAE;QACf,UAAU,EAAE,kBAAkB,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,mBAAmB,EAAE,wBAAwB,CAAC;CAC7C,CAAC;AAaL;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,EAAE,4BAQrC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,EAAE,4BAqCrC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,gBAAgB,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,sBAAsB,EAAE,4BAwCrC;AAED;;;GAGG;AACH,wBAAgB,0CAA0C,CACzD,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,sBAAsB,EAAE,4BASrC;AA2CD;;;;GAIG;AACH,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,sBAAsB,EAAE,QAoFrC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,sBAAsB,EAAE,QAUrC;AAoRD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC5C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,sBAAsB,EAAE,QA8BrC"}
@@ -1,11 +1,16 @@
1
+ "use strict";
1
2
  /*!
2
3
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
4
  * Licensed under the MIT License.
4
5
  */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.revertSharedStringRevertibles = exports.discardSharedStringRevertibles = exports.appendSharedStringDeltaToRevertibles = exports.appendIntervalPropertyChangedToRevertibles = exports.appendChangeIntervalToRevertibles = exports.appendDeleteIntervalToRevertibles = exports.appendAddIntervalToRevertibles = void 0;
8
+ /* eslint-disable import/no-deprecated */
5
9
  /* eslint-disable no-bitwise */
6
- import { assert, unreachableCase } from "@fluidframework/core-utils";
7
- import { appendToMergeTreeDeltaRevertibles, discardMergeTreeDeltaRevertible, isMergeTreeDeltaRevertible, MergeTreeDeltaType, ReferenceType, refTypeIncludesFlag, revertMergeTreeDeltaRevertibles, SortedSet, getSlideToSegoff, } from "@fluidframework/merge-tree";
8
- import { IntervalOpType, SequenceInterval } from "./intervals";
10
+ const core_utils_1 = require("@fluidframework/core-utils");
11
+ const merge_tree_1 = require("@fluidframework/merge-tree");
12
+ const intervalCollection_1 = require("./intervalCollection");
13
+ const intervals_1 = require("./intervals");
9
14
  const idMap = new Map();
10
15
  function getUpdatedIdFromInterval(interval) {
11
16
  const maybeId = interval.getIntervalId();
@@ -16,32 +21,33 @@ function getUpdatedId(intervalId) {
16
21
  }
17
22
  /**
18
23
  * Create revertibles for adding an interval
19
- * @alpha
24
+ * @internal
20
25
  */
21
- export function appendAddIntervalToRevertibles(interval, revertibles) {
26
+ function appendAddIntervalToRevertibles(interval, revertibles) {
22
27
  revertibles.push({
23
- event: IntervalOpType.ADD,
28
+ event: intervals_1.IntervalOpType.ADD,
24
29
  interval,
25
30
  });
26
31
  return revertibles;
27
32
  }
33
+ exports.appendAddIntervalToRevertibles = appendAddIntervalToRevertibles;
28
34
  /**
29
35
  * Create revertibles for deleting an interval
30
- * @alpha
36
+ * @internal
31
37
  */
32
- export function appendDeleteIntervalToRevertibles(string, interval, revertibles) {
38
+ function appendDeleteIntervalToRevertibles(string, interval, revertibles) {
33
39
  const startSeg = interval.start.getSegment();
34
40
  const startType = startSeg.removedSeq !== undefined
35
- ? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
36
- : ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
41
+ ? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeBegin
42
+ : merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeBegin;
37
43
  const endSeg = interval.end.getSegment();
38
44
  const endType = endSeg.removedSeq !== undefined
39
- ? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
40
- : ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
45
+ ? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeEnd
46
+ : merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeEnd;
41
47
  const startRef = string.createLocalReferencePosition(startSeg, interval.start.getOffset(), startType, undefined, interval.start.slidingPreference);
42
48
  const endRef = string.createLocalReferencePosition(endSeg, interval.end.getOffset(), endType, undefined, interval.end.slidingPreference);
43
49
  const revertible = {
44
- event: IntervalOpType.DELETE,
50
+ event: intervals_1.IntervalOpType.DELETE,
45
51
  interval,
46
52
  start: startRef,
47
53
  end: endRef,
@@ -51,26 +57,27 @@ export function appendDeleteIntervalToRevertibles(string, interval, revertibles)
51
57
  revertibles.push(revertible);
52
58
  return revertibles;
53
59
  }
60
+ exports.appendDeleteIntervalToRevertibles = appendDeleteIntervalToRevertibles;
54
61
  /**
55
62
  * Create revertibles for moving endpoints of an interval
56
- * @alpha
63
+ * @internal
57
64
  */
58
- export function appendChangeIntervalToRevertibles(string, newInterval, previousInterval, revertibles) {
65
+ function appendChangeIntervalToRevertibles(string, newInterval, previousInterval, revertibles) {
59
66
  const startSeg = previousInterval.start.getSegment();
60
67
  // This logic is needed because the ReferenceType StayOnRemove cannot be used
61
68
  // on removed segments. This works for revertibles because the old position of the
62
69
  // interval within the removed segment is handled by the remove range revertible.
63
70
  const startType = startSeg.removedSeq !== undefined
64
- ? ReferenceType.SlideOnRemove | ReferenceType.RangeBegin
65
- : ReferenceType.StayOnRemove | ReferenceType.RangeBegin;
71
+ ? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeBegin
72
+ : merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeBegin;
66
73
  const endSeg = previousInterval.end.getSegment();
67
74
  const endType = endSeg.removedSeq !== undefined
68
- ? ReferenceType.SlideOnRemove | ReferenceType.RangeEnd
69
- : ReferenceType.StayOnRemove | ReferenceType.RangeEnd;
75
+ ? merge_tree_1.ReferenceType.SlideOnRemove | merge_tree_1.ReferenceType.RangeEnd
76
+ : merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeEnd;
70
77
  const prevStartRef = string.createLocalReferencePosition(startSeg, previousInterval.start.getOffset(), startType, undefined, previousInterval.start.slidingPreference);
71
78
  const prevEndRef = string.createLocalReferencePosition(endSeg, previousInterval.end.getOffset(), endType, undefined, previousInterval.end.slidingPreference);
72
79
  const revertible = {
73
- event: IntervalOpType.CHANGE,
80
+ event: intervals_1.IntervalOpType.CHANGE,
74
81
  interval: newInterval,
75
82
  start: prevStartRef,
76
83
  end: prevEndRef,
@@ -80,29 +87,31 @@ export function appendChangeIntervalToRevertibles(string, newInterval, previousI
80
87
  revertibles.push(revertible);
81
88
  return revertibles;
82
89
  }
90
+ exports.appendChangeIntervalToRevertibles = appendChangeIntervalToRevertibles;
83
91
  /**
84
92
  * Create revertibles for changing properties of an interval
85
- * @alpha
93
+ * @internal
86
94
  */
87
- export function appendIntervalPropertyChangedToRevertibles(interval, deltas, revertibles) {
95
+ function appendIntervalPropertyChangedToRevertibles(interval, deltas, revertibles) {
88
96
  revertibles.push({
89
- event: IntervalOpType.PROPERTY_CHANGED,
97
+ event: intervals_1.IntervalOpType.PROPERTY_CHANGED,
90
98
  interval,
91
99
  propertyDeltas: deltas,
92
100
  });
93
101
  return revertibles;
94
102
  }
103
+ exports.appendIntervalPropertyChangedToRevertibles = appendIntervalPropertyChangedToRevertibles;
95
104
  function addIfIntervalEndpoint(ref, segmentLengths, startIntervals, endIntervals) {
96
- if (refTypeIncludesFlag(ref.refType, ReferenceType.RangeBegin)) {
105
+ if ((0, merge_tree_1.refTypeIncludesFlag)(ref.refType, merge_tree_1.ReferenceType.RangeBegin)) {
97
106
  const interval = ref.properties?.interval;
98
- if (interval && interval instanceof SequenceInterval) {
107
+ if (interval && interval instanceof intervals_1.SequenceInterval) {
99
108
  startIntervals.push({ offset: segmentLengths + interval.start.getOffset(), interval });
100
109
  return true;
101
110
  }
102
111
  }
103
- else if (refTypeIncludesFlag(ref.refType, ReferenceType.RangeEnd)) {
112
+ else if ((0, merge_tree_1.refTypeIncludesFlag)(ref.refType, merge_tree_1.ReferenceType.RangeEnd)) {
104
113
  const interval = ref.properties?.interval;
105
- if (interval && interval instanceof SequenceInterval) {
114
+ if (interval && interval instanceof intervals_1.SequenceInterval) {
106
115
  endIntervals.push({ offset: segmentLengths + interval.end.getOffset(), interval });
107
116
  return true;
108
117
  }
@@ -115,21 +124,20 @@ function addIfRevertibleRef(ref, segmentLengths, revertibleRefs) {
115
124
  revertibleRefs.push({
116
125
  revertible,
117
126
  offset: segmentLengths + ref.getOffset(),
118
- isStart: refTypeIncludesFlag(ref.refType, ReferenceType.RangeBegin),
127
+ isStart: (0, merge_tree_1.refTypeIncludesFlag)(ref.refType, merge_tree_1.ReferenceType.RangeBegin),
119
128
  });
120
129
  }
121
130
  }
122
131
  /**
123
132
  * Create revertibles for SharedStringDeltas, handling indirectly modified intervals
124
133
  * (e.g. reverting remove of a range that contains an interval will move the interval back)
125
- *
126
- * @alpha
134
+ * @internal
127
135
  */
128
- export function appendSharedStringDeltaToRevertibles(string, delta, revertibles) {
136
+ function appendSharedStringDeltaToRevertibles(string, delta, revertibles) {
129
137
  if (delta.ranges.length === 0) {
130
138
  return;
131
139
  }
132
- if (delta.deltaOperation === MergeTreeDeltaType.REMOVE) {
140
+ if (delta.deltaOperation === merge_tree_1.MergeTreeDeltaType.REMOVE) {
133
141
  const startIntervals = [];
134
142
  const endIntervals = [];
135
143
  const revertibleRefs = [];
@@ -147,10 +155,10 @@ export function appendSharedStringDeltaToRevertibles(string, delta, revertibles)
147
155
  }
148
156
  if (startIntervals.length > 0 || endIntervals.length > 0 || revertibleRefs.length > 0) {
149
157
  const removeRevertibles = [];
150
- appendToMergeTreeDeltaRevertibles(delta.deltaArgs, removeRevertibles);
151
- assert(removeRevertibles.length === 1, 0x6c4 /* Remove revertible should be a single delta */);
158
+ (0, merge_tree_1.appendToMergeTreeDeltaRevertibles)(delta.deltaArgs, removeRevertibles);
159
+ (0, core_utils_1.assert)(removeRevertibles.length === 1, 0x6c4 /* Remove revertible should be a single delta */);
152
160
  const revertible = {
153
- event: IntervalOpType.POSITION_REMOVE,
161
+ event: intervals_1.IntervalOpType.POSITION_REMOVE,
154
162
  intervals: [],
155
163
  revertibleRefs,
156
164
  mergeTreeRevertible: removeRevertibles[0],
@@ -188,29 +196,31 @@ export function appendSharedStringDeltaToRevertibles(string, delta, revertibles)
188
196
  // Handle any merge tree delta that is not REMOVE or is REMOVE with no interval endpoints
189
197
  const mergeTreeRevertibles = [];
190
198
  // Allow merging MergeTreeDeltaRevertible with previous
191
- if (revertibles.length > 0 && isMergeTreeDeltaRevertible(revertibles[revertibles.length - 1])) {
199
+ if (revertibles.length > 0 && (0, merge_tree_1.isMergeTreeDeltaRevertible)(revertibles[revertibles.length - 1])) {
192
200
  mergeTreeRevertibles.push(revertibles.pop());
193
201
  }
194
- appendToMergeTreeDeltaRevertibles(delta.deltaArgs, mergeTreeRevertibles);
202
+ (0, merge_tree_1.appendToMergeTreeDeltaRevertibles)(delta.deltaArgs, mergeTreeRevertibles);
195
203
  revertibles.push(...mergeTreeRevertibles);
196
204
  }
205
+ exports.appendSharedStringDeltaToRevertibles = appendSharedStringDeltaToRevertibles;
197
206
  /**
198
207
  * Clean up resources held by revertibles that are no longer needed.
199
- * @alpha
208
+ * @internal
200
209
  */
201
- export function discardSharedStringRevertibles(sharedString, revertibles) {
210
+ function discardSharedStringRevertibles(sharedString, revertibles) {
202
211
  revertibles.forEach((r) => {
203
- if (isMergeTreeDeltaRevertible(r)) {
204
- discardMergeTreeDeltaRevertible([r]);
212
+ if ((0, merge_tree_1.isMergeTreeDeltaRevertible)(r)) {
213
+ (0, merge_tree_1.discardMergeTreeDeltaRevertible)([r]);
205
214
  }
206
- else if (r.event === IntervalOpType.CHANGE || r.event === IntervalOpType.DELETE) {
215
+ else if (r.event === intervals_1.IntervalOpType.CHANGE || r.event === intervals_1.IntervalOpType.DELETE) {
207
216
  sharedString.removeLocalReferencePosition(r.start);
208
217
  sharedString.removeLocalReferencePosition(r.end);
209
218
  }
210
219
  });
211
220
  }
221
+ exports.discardSharedStringRevertibles = discardSharedStringRevertibles;
212
222
  function getSlidePosition(string, lref, pos) {
213
- const slide = getSlideToSegoff({ segment: lref.getSegment(), offset: undefined }, lref.slidingPreference);
223
+ const slide = (0, merge_tree_1.getSlideToSegoff)({ segment: lref.getSegment(), offset: undefined }, lref.slidingPreference);
214
224
  return slide?.segment !== undefined &&
215
225
  slide.offset !== undefined &&
216
226
  string.getPosition(slide.segment) !== -1 &&
@@ -218,18 +228,36 @@ function getSlidePosition(string, lref, pos) {
218
228
  ? string.getPosition(slide.segment) + slide.offset
219
229
  : pos;
220
230
  }
221
- function isValidRange(start, end, string) {
231
+ function isValidRange(start, startSlide, end, endSlide, string) {
222
232
  return (start >= 0 &&
223
233
  start < string.getLength() &&
224
234
  end >= 0 &&
225
235
  end < string.getLength() &&
226
- start <= end);
236
+ (start < end ||
237
+ (start === end &&
238
+ (startSlide === merge_tree_1.SlidingPreference.FORWARD ||
239
+ endSlide !== merge_tree_1.SlidingPreference.FORWARD))));
227
240
  }
228
241
  function revertLocalAdd(string, revertible) {
229
242
  const id = getUpdatedIdFromInterval(revertible.interval);
230
243
  const label = revertible.interval.properties.referenceRangeLabels[0];
231
244
  string.getIntervalCollection(label).removeIntervalById(id);
232
245
  }
246
+ function createSequencePlace(pos, newSlidingPreference, oldSlidingPreference = undefined) {
247
+ return newSlidingPreference === merge_tree_1.SlidingPreference.BACKWARD ||
248
+ (newSlidingPreference === undefined && oldSlidingPreference === merge_tree_1.SlidingPreference.BACKWARD)
249
+ ? {
250
+ pos,
251
+ side: intervalCollection_1.Side.After,
252
+ }
253
+ : newSlidingPreference === merge_tree_1.SlidingPreference.FORWARD &&
254
+ oldSlidingPreference === merge_tree_1.SlidingPreference.BACKWARD
255
+ ? {
256
+ pos,
257
+ side: intervalCollection_1.Side.Before,
258
+ }
259
+ : pos; // Avoid setting side if possible since stickiness may not be enabled
260
+ }
233
261
  function revertLocalDelete(string, revertible) {
234
262
  const label = revertible.interval.properties.referenceRangeLabels[0];
235
263
  const collection = string.getIntervalCollection(label);
@@ -239,10 +267,10 @@ function revertLocalDelete(string, revertible) {
239
267
  const endSlidePos = getSlidePosition(string, revertible.end, end);
240
268
  // reusing the id causes eventual consistency bugs, so it is removed here and recreated in add
241
269
  const { intervalId, ...props } = revertible.interval.properties;
242
- if (isValidRange(startSlidePos, endSlidePos, string)) {
270
+ if (isValidRange(startSlidePos, revertible.start.slidingPreference, endSlidePos, revertible.end.slidingPreference, string)) {
243
271
  const int = collection.add({
244
- start: startSlidePos,
245
- end: endSlidePos,
272
+ start: createSequencePlace(startSlidePos, revertible.start.slidingPreference),
273
+ end: createSequencePlace(endSlidePos, revertible.end.slidingPreference),
246
274
  props,
247
275
  });
248
276
  idMap.forEach((newId, oldId) => {
@@ -263,8 +291,10 @@ function revertLocalChange(string, revertible) {
263
291
  const startSlidePos = getSlidePosition(string, revertible.start, start);
264
292
  const end = string.localReferencePositionToPosition(revertible.end);
265
293
  const endSlidePos = getSlidePosition(string, revertible.end, end);
266
- if (isValidRange(startSlidePos, endSlidePos, string)) {
267
- collection.change(id, startSlidePos, endSlidePos);
294
+ const interval = collection.getIntervalById(id);
295
+ if (interval !== undefined &&
296
+ isValidRange(startSlidePos, revertible.start.slidingPreference ?? interval.start.slidingPreference, endSlidePos, revertible.end.slidingPreference ?? interval.end.slidingPreference, string)) {
297
+ collection.change(id, createSequencePlace(startSlidePos, revertible.start.slidingPreference, interval.start.slidingPreference), createSequencePlace(endSlidePos, revertible.end.slidingPreference, interval.end.slidingPreference));
268
298
  }
269
299
  string.removeLocalReferencePosition(revertible.start);
270
300
  string.removeLocalReferencePosition(revertible.end);
@@ -298,7 +328,7 @@ function newEndpointPosition(offset, restoredRanges, sharedString) {
298
328
  const pos = newPosition(offset, restoredRanges);
299
329
  return pos === undefined ? undefined : sharedString.getPosition(pos.segment) + pos.offset;
300
330
  }
301
- class SortedRangeSet extends SortedSet {
331
+ class SortedRangeSet extends merge_tree_1.SortedSet {
302
332
  getKey(item) {
303
333
  return item.ranges[0].segment.ordinal;
304
334
  }
@@ -315,7 +345,7 @@ function revertLocalSequenceRemove(sharedString, revertible) {
315
345
  }
316
346
  };
317
347
  sharedString.on("sequenceDelta", saveSegments);
318
- revertMergeTreeDeltaRevertibles(sharedString, [revertible.mergeTreeRevertible]);
348
+ (0, merge_tree_1.revertMergeTreeDeltaRevertibles)(sharedString, [revertible.mergeTreeRevertible]);
319
349
  sharedString.off("sequenceDelta", saveSegments);
320
350
  revertible.intervals.forEach((intervalInfo) => {
321
351
  const intervalCollection = sharedString.getIntervalCollection(intervalInfo.label);
@@ -326,25 +356,25 @@ function revertLocalSequenceRemove(sharedString, revertible) {
326
356
  sharedString.localReferencePositionToPosition(interval.start);
327
357
  const end = newEndpointPosition(intervalInfo.endOffset, restoredRanges, sharedString) ??
328
358
  sharedString.localReferencePositionToPosition(interval.end);
329
- if (start <= end) {
330
- intervalCollection.change(intervalId, start, end);
359
+ if (isValidRange(start, interval.start.slidingPreference, end, interval.end.slidingPreference, sharedString)) {
360
+ intervalCollection.change(intervalId, createSequencePlace(start, interval.start.slidingPreference), createSequencePlace(end, interval.end.slidingPreference));
331
361
  }
332
362
  }
333
363
  });
334
364
  // fix up the local references used by delete and change revertibles
335
365
  revertible.revertibleRefs.forEach((revertibleRef) => {
336
- assert(revertibleRef.revertible.event === IntervalOpType.CHANGE ||
337
- revertibleRef.revertible.event === IntervalOpType.DELETE, 0x6c5 /* revertible is not delete or change */);
366
+ (0, core_utils_1.assert)(revertibleRef.revertible.event === intervals_1.IntervalOpType.CHANGE ||
367
+ revertibleRef.revertible.event === intervals_1.IntervalOpType.DELETE, 0x6c5 /* revertible is not delete or change */);
338
368
  const pos = newPosition(revertibleRef.offset, restoredRanges);
339
369
  if (pos !== undefined) {
340
370
  if (revertibleRef.isStart) {
341
371
  sharedString.removeLocalReferencePosition(revertibleRef.revertible.start);
342
- const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, ReferenceType.StayOnRemove | ReferenceType.RangeBegin, { revertible: revertibleRef.revertible });
372
+ const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeBegin, { revertible: revertibleRef.revertible }, revertibleRef.revertible.start.slidingPreference);
343
373
  revertibleRef.revertible.start = newRef;
344
374
  }
345
375
  else {
346
376
  sharedString.removeLocalReferencePosition(revertibleRef.revertible.end);
347
- const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, ReferenceType.StayOnRemove | ReferenceType.RangeEnd, { revertible: revertibleRef.revertible });
377
+ const newRef = sharedString.createLocalReferencePosition(pos.segment, pos.offset, merge_tree_1.ReferenceType.StayOnRemove | merge_tree_1.ReferenceType.RangeEnd, { revertible: revertibleRef.revertible }, revertibleRef.revertible.end.slidingPreference);
348
378
  revertibleRef.revertible.end = newRef;
349
379
  }
350
380
  }
@@ -352,38 +382,38 @@ function revertLocalSequenceRemove(sharedString, revertible) {
352
382
  }
353
383
  /**
354
384
  * Invoke revertibles to reverse prior edits
355
- *
356
- * @alpha
385
+ * @internal
357
386
  */
358
- export function revertSharedStringRevertibles(sharedString, revertibles) {
387
+ function revertSharedStringRevertibles(sharedString, revertibles) {
359
388
  while (revertibles.length > 0) {
360
389
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
361
390
  const r = revertibles.pop();
362
391
  if ("event" in r) {
363
392
  const event = r.event;
364
393
  switch (event) {
365
- case IntervalOpType.ADD:
394
+ case intervals_1.IntervalOpType.ADD:
366
395
  revertLocalAdd(sharedString, r);
367
396
  break;
368
- case IntervalOpType.DELETE:
397
+ case intervals_1.IntervalOpType.DELETE:
369
398
  revertLocalDelete(sharedString, r);
370
399
  break;
371
- case IntervalOpType.CHANGE:
400
+ case intervals_1.IntervalOpType.CHANGE:
372
401
  revertLocalChange(sharedString, r);
373
402
  break;
374
- case IntervalOpType.PROPERTY_CHANGED:
403
+ case intervals_1.IntervalOpType.PROPERTY_CHANGED:
375
404
  revertLocalPropertyChanged(sharedString, r);
376
405
  break;
377
- case IntervalOpType.POSITION_REMOVE:
406
+ case intervals_1.IntervalOpType.POSITION_REMOVE:
378
407
  revertLocalSequenceRemove(sharedString, r);
379
408
  break;
380
409
  default:
381
- unreachableCase(event);
410
+ (0, core_utils_1.unreachableCase)(event);
382
411
  }
383
412
  }
384
413
  else {
385
- revertMergeTreeDeltaRevertibles(sharedString, [r]);
414
+ (0, merge_tree_1.revertMergeTreeDeltaRevertibles)(sharedString, [r]);
386
415
  }
387
416
  }
388
417
  }
418
+ exports.revertSharedStringRevertibles = revertSharedStringRevertibles;
389
419
  //# sourceMappingURL=revertibles.js.map