@fluidframework/sequence 2.91.0 → 2.92.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 (184) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/IntervalCollectionValues.d.ts +3 -3
  3. package/dist/IntervalCollectionValues.d.ts.map +1 -1
  4. package/dist/IntervalCollectionValues.js.map +1 -1
  5. package/dist/index.d.ts +10 -10
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/intervalCollection.d.ts +6 -5
  9. package/dist/intervalCollection.d.ts.map +1 -1
  10. package/dist/intervalCollection.js +10 -9
  11. package/dist/intervalCollection.js.map +1 -1
  12. package/dist/intervalCollectionMap.d.ts +4 -5
  13. package/dist/intervalCollectionMap.d.ts.map +1 -1
  14. package/dist/intervalCollectionMap.js +3 -3
  15. package/dist/intervalCollectionMap.js.map +1 -1
  16. package/dist/intervalCollectionMapInterfaces.d.ts +3 -3
  17. package/dist/intervalCollectionMapInterfaces.d.ts.map +1 -1
  18. package/dist/intervalCollectionMapInterfaces.js.map +1 -1
  19. package/dist/intervalIndex/endpointInRangeIndex.d.ts +2 -2
  20. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  21. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  22. package/dist/intervalIndex/endpointIndex.d.ts +2 -2
  23. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  24. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  25. package/dist/intervalIndex/index.d.ts +7 -7
  26. package/dist/intervalIndex/index.d.ts.map +1 -1
  27. package/dist/intervalIndex/index.js.map +1 -1
  28. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +3 -3
  29. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  30. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  31. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
  32. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  33. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  34. package/dist/intervalIndex/startpointInRangeIndex.d.ts +2 -2
  35. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  36. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  37. package/dist/intervalTree.d.ts +3 -2
  38. package/dist/intervalTree.d.ts.map +1 -1
  39. package/dist/intervalTree.js.map +1 -1
  40. package/dist/intervals/index.d.ts +2 -2
  41. package/dist/intervals/index.d.ts.map +1 -1
  42. package/dist/intervals/index.js.map +1 -1
  43. package/dist/intervals/intervalUtils.d.ts +2 -1
  44. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  45. package/dist/intervals/intervalUtils.js +0 -1
  46. package/dist/intervals/intervalUtils.js.map +1 -1
  47. package/dist/intervals/sequenceInterval.d.ts +5 -3
  48. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  49. package/dist/intervals/sequenceInterval.js.map +1 -1
  50. package/dist/legacy.d.ts +1 -1
  51. package/dist/packageVersion.d.ts +1 -1
  52. package/dist/packageVersion.js +1 -1
  53. package/dist/packageVersion.js.map +1 -1
  54. package/dist/public.d.ts +1 -1
  55. package/dist/revertibles.d.ts +5 -4
  56. package/dist/revertibles.d.ts.map +1 -1
  57. package/dist/revertibles.js +26 -20
  58. package/dist/revertibles.js.map +1 -1
  59. package/dist/sequence.d.ts +8 -6
  60. package/dist/sequence.d.ts.map +1 -1
  61. package/dist/sequence.js +9 -10
  62. package/dist/sequence.js.map +1 -1
  63. package/dist/sequenceDeltaEvent.d.ts +2 -1
  64. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  65. package/dist/sequenceDeltaEvent.js +2 -2
  66. package/dist/sequenceDeltaEvent.js.map +1 -1
  67. package/dist/sequenceFactory.d.ts +3 -2
  68. package/dist/sequenceFactory.d.ts.map +1 -1
  69. package/dist/sequenceFactory.js +3 -2
  70. package/dist/sequenceFactory.js.map +1 -1
  71. package/dist/sharedSequence.d.ts +3 -2
  72. package/dist/sharedSequence.d.ts.map +1 -1
  73. package/dist/sharedSequence.js.map +1 -1
  74. package/dist/sharedString.d.ts +3 -2
  75. package/dist/sharedString.d.ts.map +1 -1
  76. package/dist/sharedString.js.map +1 -1
  77. package/eslint.config.mts +16 -4
  78. package/internal.d.ts +1 -1
  79. package/legacy.d.ts +1 -1
  80. package/lib/IntervalCollectionValues.d.ts +3 -3
  81. package/lib/IntervalCollectionValues.d.ts.map +1 -1
  82. package/lib/IntervalCollectionValues.js +1 -1
  83. package/lib/IntervalCollectionValues.js.map +1 -1
  84. package/lib/index.d.ts +10 -10
  85. package/lib/index.d.ts.map +1 -1
  86. package/lib/index.js.map +1 -1
  87. package/lib/intervalCollection.d.ts +6 -5
  88. package/lib/intervalCollection.d.ts.map +1 -1
  89. package/lib/intervalCollection.js +10 -9
  90. package/lib/intervalCollection.js.map +1 -1
  91. package/lib/intervalCollectionMap.d.ts +4 -5
  92. package/lib/intervalCollectionMap.d.ts.map +1 -1
  93. package/lib/intervalCollectionMap.js +3 -3
  94. package/lib/intervalCollectionMap.js.map +1 -1
  95. package/lib/intervalCollectionMapInterfaces.d.ts +3 -3
  96. package/lib/intervalCollectionMapInterfaces.d.ts.map +1 -1
  97. package/lib/intervalCollectionMapInterfaces.js.map +1 -1
  98. package/lib/intervalIndex/endpointInRangeIndex.d.ts +2 -2
  99. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  100. package/lib/intervalIndex/endpointInRangeIndex.js +1 -1
  101. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  102. package/lib/intervalIndex/endpointIndex.d.ts +2 -2
  103. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
  104. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  105. package/lib/intervalIndex/index.d.ts +7 -7
  106. package/lib/intervalIndex/index.d.ts.map +1 -1
  107. package/lib/intervalIndex/index.js.map +1 -1
  108. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +3 -3
  109. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  110. package/lib/intervalIndex/overlappingIntervalsIndex.js +1 -1
  111. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  112. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +2 -2
  113. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  114. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  115. package/lib/intervalIndex/startpointInRangeIndex.d.ts +2 -2
  116. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  117. package/lib/intervalIndex/startpointInRangeIndex.js +1 -1
  118. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  119. package/lib/intervalTree.d.ts +3 -2
  120. package/lib/intervalTree.d.ts.map +1 -1
  121. package/lib/intervalTree.js +1 -1
  122. package/lib/intervalTree.js.map +1 -1
  123. package/lib/intervals/index.d.ts +2 -2
  124. package/lib/intervals/index.d.ts.map +1 -1
  125. package/lib/intervals/index.js.map +1 -1
  126. package/lib/intervals/intervalUtils.d.ts +2 -1
  127. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  128. package/lib/intervals/intervalUtils.js +0 -1
  129. package/lib/intervals/intervalUtils.js.map +1 -1
  130. package/lib/intervals/sequenceInterval.d.ts +5 -3
  131. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  132. package/lib/intervals/sequenceInterval.js.map +1 -1
  133. package/lib/legacy.d.ts +1 -1
  134. package/lib/packageVersion.d.ts +1 -1
  135. package/lib/packageVersion.js +1 -1
  136. package/lib/packageVersion.js.map +1 -1
  137. package/lib/public.d.ts +1 -1
  138. package/lib/revertibles.d.ts +5 -4
  139. package/lib/revertibles.d.ts.map +1 -1
  140. package/lib/revertibles.js +26 -20
  141. package/lib/revertibles.js.map +1 -1
  142. package/lib/sequence.d.ts +8 -6
  143. package/lib/sequence.d.ts.map +1 -1
  144. package/lib/sequence.js +11 -12
  145. package/lib/sequence.js.map +1 -1
  146. package/lib/sequenceDeltaEvent.d.ts +2 -1
  147. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  148. package/lib/sequenceDeltaEvent.js +2 -2
  149. package/lib/sequenceDeltaEvent.js.map +1 -1
  150. package/lib/sequenceFactory.d.ts +3 -2
  151. package/lib/sequenceFactory.d.ts.map +1 -1
  152. package/lib/sequenceFactory.js +3 -2
  153. package/lib/sequenceFactory.js.map +1 -1
  154. package/lib/sharedSequence.d.ts +3 -2
  155. package/lib/sharedSequence.d.ts.map +1 -1
  156. package/lib/sharedSequence.js +1 -1
  157. package/lib/sharedSequence.js.map +1 -1
  158. package/lib/sharedString.d.ts +3 -2
  159. package/lib/sharedString.d.ts.map +1 -1
  160. package/lib/sharedString.js +1 -1
  161. package/lib/sharedString.js.map +1 -1
  162. package/package.json +22 -22
  163. package/src/IntervalCollectionValues.ts +4 -6
  164. package/src/index.ts +25 -25
  165. package/src/intervalCollection.ts +25 -20
  166. package/src/intervalCollectionMap.ts +8 -8
  167. package/src/intervalCollectionMapInterfaces.ts +4 -4
  168. package/src/intervalIndex/endpointInRangeIndex.ts +7 -8
  169. package/src/intervalIndex/endpointIndex.ts +3 -2
  170. package/src/intervalIndex/index.ts +7 -7
  171. package/src/intervalIndex/overlappingIntervalsIndex.ts +8 -9
  172. package/src/intervalIndex/sequenceIntervalIndexes.ts +2 -2
  173. package/src/intervalIndex/startpointInRangeIndex.ts +7 -8
  174. package/src/intervalTree.ts +3 -3
  175. package/src/intervals/index.ts +6 -6
  176. package/src/intervals/intervalUtils.ts +2 -1
  177. package/src/intervals/sequenceInterval.ts +7 -6
  178. package/src/packageVersion.ts +1 -1
  179. package/src/revertibles.ts +35 -26
  180. package/src/sequence.ts +25 -26
  181. package/src/sequenceDeltaEvent.ts +6 -4
  182. package/src/sequenceFactory.ts +6 -4
  183. package/src/sharedSequence.ts +3 -7
  184. package/src/sharedString.ts +3 -5
@@ -6,25 +6,27 @@
6
6
  /* eslint-disable no-bitwise */
7
7
 
8
8
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
9
- import { IEvent } from "@fluidframework/core-interfaces";
9
+ import type { IEvent } from "@fluidframework/core-interfaces";
10
10
  import {
11
11
  assert,
12
12
  DoublyLinkedList,
13
13
  unreachableCase,
14
14
  type ListNode,
15
15
  } from "@fluidframework/core-utils/internal";
16
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
17
- import {
16
+ import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
17
+ import type {
18
18
  Client,
19
19
  ISegment,
20
20
  LocalReferencePosition,
21
21
  PropertySet,
22
+ SequencePlace,
23
+ } from "@fluidframework/merge-tree/internal";
24
+ import {
22
25
  ReferenceType,
23
26
  getSlideToSegoff,
24
27
  refTypeIncludesFlag,
25
28
  reservedRangeLabelsKey,
26
29
  Side,
27
- SequencePlace,
28
30
  endpointPosAndSide,
29
31
  type ISegmentInternal,
30
32
  createLocalReconnectingPerspective,
@@ -33,12 +35,12 @@ import {
33
35
  import { LoggingError, UsageError } from "@fluidframework/telemetry-utils/internal";
34
36
  import { v4 as uuid } from "uuid";
35
37
 
36
- import {
38
+ import type {
39
+ IIntervalCollectionTypeOperationValue,
40
+ IntervalAddLocalMetadata,
41
+ IntervalChangeLocalMetadata,
37
42
  IntervalMessageLocalMetadata,
38
43
  SequenceOptions,
39
- type IIntervalCollectionTypeOperationValue,
40
- type IntervalAddLocalMetadata,
41
- type IntervalChangeLocalMetadata,
42
44
  } from "./intervalCollectionMapInterfaces.js";
43
45
  import {
44
46
  createIdIntervalIndex,
@@ -49,14 +51,16 @@ import {
49
51
  type ISequenceOverlappingIntervalsIndex,
50
52
  type SequenceIntervalIndex,
51
53
  } from "./intervalIndex/index.js";
52
- import {
54
+ import type {
53
55
  CompressedSerializedInterval,
54
56
  ISerializedInterval,
55
- IntervalStickiness,
56
- IntervalType,
57
57
  SequenceInterval,
58
58
  SequenceIntervalClass,
59
59
  SerializedIntervalDelta,
60
+ } from "./intervals/index.js";
61
+ import {
62
+ IntervalStickiness,
63
+ IntervalType,
60
64
  createPositionReferenceFromSegoff,
61
65
  createSequenceInterval,
62
66
  getSerializedProperties,
@@ -72,8 +76,8 @@ export interface ISerializedIntervalCollectionV2 {
72
76
  }
73
77
 
74
78
  function sidesFromStickiness(stickiness: IntervalStickiness) {
75
- const startSide = (stickiness & IntervalStickiness.START) !== 0 ? Side.After : Side.Before;
76
- const endSide = (stickiness & IntervalStickiness.END) !== 0 ? Side.Before : Side.After;
79
+ const startSide = (stickiness & IntervalStickiness.START) === 0 ? Side.Before : Side.After;
80
+ const endSide = (stickiness & IntervalStickiness.END) === 0 ? Side.After : Side.Before;
77
81
 
78
82
  return { startSide, endSide };
79
83
  }
@@ -853,8 +857,9 @@ export class IntervalCollection
853
857
  }
854
858
  break;
855
859
  }
856
- default:
860
+ default: {
857
861
  unreachableCase(type);
862
+ }
858
863
  }
859
864
  }
860
865
 
@@ -903,8 +908,9 @@ export class IntervalCollection
903
908
  );
904
909
  break;
905
910
  }
906
- default:
911
+ default: {
907
912
  unreachableCase(opName);
913
+ }
908
914
  }
909
915
  const pending = clearEmptyPendingEntry(this.pending, id);
910
916
 
@@ -962,8 +968,9 @@ export class IntervalCollection
962
968
  this.removeIntervalById(id);
963
969
  break;
964
970
  }
965
- default:
971
+ default: {
966
972
  throw new Error("unknown ops should not be stashed");
973
+ }
967
974
  }
968
975
  }
969
976
 
@@ -1670,10 +1677,8 @@ export class IntervalCollection
1670
1677
  op,
1671
1678
  );
1672
1679
 
1673
- if (interval) {
1674
- if (this.onDeserialize) {
1675
- this.onDeserialize(interval);
1676
- }
1680
+ if (interval && this.onDeserialize) {
1681
+ this.onDeserialize(interval);
1677
1682
  }
1678
1683
 
1679
1684
  this.emit("addInterval", interval, local, op);
@@ -4,11 +4,11 @@
4
4
  */
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
- import { IFluidHandle } from "@fluidframework/core-interfaces";
8
- import type { IEvent, IEventProvider } from "@fluidframework/core-interfaces";
7
+ import type { IEvent, IEventProvider, IFluidHandle } from "@fluidframework/core-interfaces";
9
8
  import { assert } from "@fluidframework/core-utils/internal";
10
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
11
- import { ValueType, IFluidSerializer } from "@fluidframework/shared-object-base/internal";
9
+ import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
10
+ import type { IFluidSerializer } from "@fluidframework/shared-object-base/internal";
11
+ import { ValueType } from "@fluidframework/shared-object-base/internal";
12
12
 
13
13
  import { makeSerializable } from "./IntervalCollectionValues.js";
14
14
  import {
@@ -16,7 +16,7 @@ import {
16
16
  type ISerializedIntervalCollectionV1,
17
17
  type ISerializedIntervalCollectionV2,
18
18
  } from "./intervalCollection.js";
19
- import {
19
+ import type {
20
20
  IIntervalCollectionTypeOperationValue,
21
21
  ISerializableIntervalCollection,
22
22
  SequenceOptions,
@@ -135,14 +135,14 @@ export class IntervalCollectionMap {
135
135
 
136
136
  public serialize(serializer: IFluidSerializer): string {
137
137
  const serializableMapData: IMapDataObjectSerializable = {};
138
- this.data.forEach((localValue, key) => {
138
+ for (const [key, localValue] of this.data.entries()) {
139
139
  serializableMapData[key] = makeSerializable(
140
140
  localValue,
141
141
  serializer,
142
142
  this.handle,
143
143
  this.options?.intervalSerializationFormat ?? "2",
144
144
  );
145
- });
145
+ }
146
146
  return JSON.stringify(serializableMapData);
147
147
  }
148
148
 
@@ -168,7 +168,7 @@ export class IntervalCollectionMap {
168
168
  // "intervalCollections/". This would burden users trying to iterate the collection and
169
169
  // access its value, as well as those trying to match a create message to its underlying
170
170
  // collection. See https://github.com/microsoft/FluidFramework/issues/10557 for more context.
171
- const normalizedKey = key.startsWith("intervalCollections/") ? key.substring(20) : key;
171
+ const normalizedKey = key.startsWith("intervalCollections/") ? key.slice(20) : key;
172
172
 
173
173
  assert(
174
174
  serializable.type !== ValueType[ValueType.Plain] &&
@@ -4,19 +4,19 @@
4
4
  */
5
5
 
6
6
  import type { ListNode } from "@fluidframework/core-utils/internal";
7
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
8
- import { IMergeTreeOptions } from "@fluidframework/merge-tree/internal";
7
+ import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
8
+ import type { IMergeTreeOptions } from "@fluidframework/merge-tree/internal";
9
9
 
10
10
  import type {
11
11
  IntervalCollection,
12
12
  ISerializedIntervalCollectionV1,
13
13
  ISerializedIntervalCollectionV2,
14
14
  } from "./intervalCollection.js";
15
- import {
15
+ import type {
16
16
  ISerializedInterval,
17
17
  IntervalDeltaOpType,
18
+ SequenceIntervalClass,
18
19
  SerializedIntervalDelta,
19
- type SequenceIntervalClass,
20
20
  } from "./intervals/index.js";
21
21
 
22
22
  export interface IntervalAddLocalMetadata {
@@ -3,18 +3,17 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { PropertyAction, RedBlackTree } from "@fluidframework/merge-tree/internal";
6
+ import type { PropertyAction } from "@fluidframework/merge-tree/internal";
7
+ import { RedBlackTree } from "@fluidframework/merge-tree/internal";
7
8
 
8
- import { SequenceInterval, createTransientIntervalFromSequence } from "../intervals/index.js";
9
+ import type { SequenceInterval } from "../intervals/index.js";
10
+ import { createTransientIntervalFromSequence } from "../intervals/index.js";
9
11
  import type { ISharedSegmentSequence } from "../sequence.js";
10
- import { ISharedString } from "../sharedString.js";
12
+ import type { ISharedString } from "../sharedString.js";
11
13
 
12
14
  import type { SequenceIntervalIndex } from "./intervalIndex.js";
13
- import {
14
- HasComparisonOverride,
15
- compareOverrideables,
16
- forceCompare,
17
- } from "./intervalIndexUtils.js";
15
+ import type { HasComparisonOverride } from "./intervalIndexUtils.js";
16
+ import { compareOverrideables, forceCompare } from "./intervalIndexUtils.js";
18
17
 
19
18
  /**
20
19
  * Collection of intervals.
@@ -5,9 +5,10 @@
5
5
 
6
6
  import { RedBlackTree } from "@fluidframework/merge-tree/internal";
7
7
 
8
- import { createTransientIntervalFromSequence, SequenceInterval } from "../intervals/index.js";
8
+ import type { SequenceInterval } from "../intervals/index.js";
9
+ import { createTransientIntervalFromSequence } from "../intervals/index.js";
9
10
  import type { ISharedSegmentSequence } from "../sequence.js";
10
- import { ISharedString } from "../sharedString.js";
11
+ import type { ISharedString } from "../sharedString.js";
11
12
 
12
13
  import type { SequenceIntervalIndex } from "./intervalIndex.js";
13
14
 
@@ -3,22 +3,22 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { SequenceIntervalIndex } from "./intervalIndex.js";
7
- export { IIdIntervalIndex, createIdIntervalIndex } from "./idIntervalIndex.js";
8
- export { IEndpointIndex, createEndpointIndex, EndpointIndex } from "./endpointIndex.js";
6
+ export type { SequenceIntervalIndex } from "./intervalIndex.js";
7
+ export { type IIdIntervalIndex, createIdIntervalIndex } from "./idIntervalIndex.js";
8
+ export { type IEndpointIndex, createEndpointIndex, EndpointIndex } from "./endpointIndex.js";
9
9
  export {
10
- IEndpointInRangeIndex,
10
+ type IEndpointInRangeIndex,
11
11
  createEndpointInRangeIndex,
12
12
  EndpointInRangeIndex,
13
13
  } from "./endpointInRangeIndex.js";
14
14
  export {
15
- IStartpointInRangeIndex,
15
+ type IStartpointInRangeIndex,
16
16
  createStartpointInRangeIndex,
17
17
  StartpointInRangeIndex,
18
18
  } from "./startpointInRangeIndex.js";
19
- export { SequenceIntervalIndexes } from "./sequenceIntervalIndexes.js";
19
+ export type { SequenceIntervalIndexes } from "./sequenceIntervalIndexes.js";
20
20
  export {
21
21
  createOverlappingIntervalsIndex,
22
22
  OverlappingIntervalsIndex,
23
- ISequenceOverlappingIntervalsIndex,
23
+ type ISequenceOverlappingIntervalsIndex,
24
24
  } from "./overlappingIntervalsIndex.js";
@@ -3,16 +3,15 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { SequencePlace, endpointPosAndSide } from "@fluidframework/merge-tree/internal";
7
-
8
- import { IntervalNode, IntervalTree } from "../intervalTree.js";
9
- import {
10
- SequenceInterval,
11
- BaseSequenceInterval,
12
- createTransientIntervalFromSequence,
13
- } from "../intervals/index.js";
6
+ import type { SequencePlace } from "@fluidframework/merge-tree/internal";
7
+ import { endpointPosAndSide } from "@fluidframework/merge-tree/internal";
8
+
9
+ import type { IntervalNode } from "../intervalTree.js";
10
+ import { IntervalTree } from "../intervalTree.js";
11
+ import type { SequenceInterval, BaseSequenceInterval } from "../intervals/index.js";
12
+ import { createTransientIntervalFromSequence } from "../intervals/index.js";
14
13
  import type { ISharedSegmentSequence } from "../sequence.js";
15
- import { ISharedString } from "../sharedString.js";
14
+ import type { ISharedString } from "../sharedString.js";
16
15
 
17
16
  import type { SequenceIntervalIndex } from "./intervalIndex.js";
18
17
 
@@ -3,9 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ISegment } from "@fluidframework/merge-tree/internal";
6
+ import type { ISegment } from "@fluidframework/merge-tree/internal";
7
7
 
8
- import { SequenceInterval } from "../intervals/index.js";
8
+ import type { SequenceInterval } from "../intervals/index.js";
9
9
 
10
10
  import type { ISequenceOverlappingIntervalsIndex } from "./overlappingIntervalsIndex.js";
11
11
 
@@ -3,18 +3,17 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { PropertyAction, RedBlackTree } from "@fluidframework/merge-tree/internal";
6
+ import type { PropertyAction } from "@fluidframework/merge-tree/internal";
7
+ import { RedBlackTree } from "@fluidframework/merge-tree/internal";
7
8
 
8
- import { SequenceInterval, createTransientIntervalFromSequence } from "../intervals/index.js";
9
+ import type { SequenceInterval } from "../intervals/index.js";
10
+ import { createTransientIntervalFromSequence } from "../intervals/index.js";
9
11
  import type { ISharedSegmentSequence } from "../sequence.js";
10
- import { ISharedString } from "../sharedString.js";
12
+ import type { ISharedString } from "../sharedString.js";
11
13
 
12
14
  import type { SequenceIntervalIndex } from "./intervalIndex.js";
13
- import {
14
- HasComparisonOverride,
15
- compareOverrideables,
16
- forceCompare,
17
- } from "./intervalIndexUtils.js";
15
+ import type { HasComparisonOverride } from "./intervalIndexUtils.js";
16
+ import { compareOverrideables, forceCompare } from "./intervalIndexUtils.js";
18
17
 
19
18
  /**
20
19
  * Collection of intervals.
@@ -3,15 +3,15 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import {
6
+ import type {
7
7
  IRBAugmentation,
8
8
  IRBMatcher,
9
9
  RBNode,
10
10
  RBNodeActions,
11
- RedBlackTree,
12
11
  } from "@fluidframework/merge-tree/internal";
12
+ import { RedBlackTree } from "@fluidframework/merge-tree/internal";
13
13
 
14
- import { ISerializableInterval } from "./intervals/index.js";
14
+ import type { ISerializableInterval } from "./intervals/index.js";
15
15
 
16
16
  export interface AugmentedIntervalNode {
17
17
  minmax: ISerializableInterval;
@@ -4,20 +4,20 @@
4
4
  */
5
5
 
6
6
  export {
7
- IInterval,
8
- ISerializedInterval,
9
- ISerializableInterval,
7
+ type IInterval,
8
+ type ISerializedInterval,
9
+ type ISerializableInterval,
10
10
  IntervalOpType,
11
11
  IntervalType,
12
12
  IntervalDeltaOpType,
13
13
  IntervalStickiness,
14
- SerializedIntervalDelta,
15
- CompressedSerializedInterval,
14
+ type SerializedIntervalDelta,
15
+ type CompressedSerializedInterval,
16
16
  endReferenceSlidingPreference,
17
17
  startReferenceSlidingPreference,
18
18
  } from "./intervalUtils.js";
19
19
  export {
20
- SequenceInterval,
20
+ type SequenceInterval,
21
21
  SequenceIntervalClass,
22
22
  BaseSequenceInterval,
23
23
  createSequenceInterval,
@@ -5,7 +5,8 @@
5
5
 
6
6
  /* eslint-disable no-bitwise */
7
7
 
8
- import { PropertySet, SlidingPreference, Side } from "@fluidframework/merge-tree/internal";
8
+ import type { PropertySet } from "@fluidframework/merge-tree/internal";
9
+ import { SlidingPreference, Side } from "@fluidframework/merge-tree/internal";
9
10
 
10
11
  /**
11
12
  * Basic interval abstraction
@@ -7,13 +7,16 @@
7
7
 
8
8
  import type { IDisposable } from "@fluidframework/core-interfaces";
9
9
  import { assert } from "@fluidframework/core-utils/internal";
10
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
11
- import {
10
+ import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
11
+ import type {
12
12
  Client,
13
13
  ISegment,
14
14
  LocalReferencePosition,
15
- PropertiesManager,
16
15
  PropertySet,
16
+ SequencePlace,
17
+ } from "@fluidframework/merge-tree/internal";
18
+ import {
19
+ PropertiesManager,
17
20
  ReferenceType,
18
21
  SlidingPreference,
19
22
  compareReferencePositions,
@@ -24,7 +27,6 @@ import {
24
27
  minReferencePosition,
25
28
  refTypeIncludesFlag,
26
29
  reservedRangeLabelsKey,
27
- SequencePlace,
28
30
  Side,
29
31
  endpointPosAndSide,
30
32
  addProperties,
@@ -37,9 +39,8 @@ import { v4 as uuid } from "uuid";
37
39
 
38
40
  import type { ISharedSegmentSequence } from "../sequence.js";
39
41
 
42
+ import type { ISerializableInterval, ISerializedInterval } from "./intervalUtils.js";
40
43
  import {
41
- ISerializableInterval,
42
- ISerializedInterval,
43
44
  IntervalStickiness,
44
45
  IntervalType,
45
46
  computeStickinessFromSide,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/sequence";
9
- export const pkgVersion = "2.91.0";
9
+ export const pkgVersion = "2.92.0";
@@ -6,12 +6,15 @@
6
6
  /* eslint-disable no-bitwise */
7
7
 
8
8
  import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
9
- import {
9
+ import type {
10
10
  LocalReferencePosition,
11
11
  MergeTreeDeltaOperationType,
12
12
  MergeTreeDeltaRevertible,
13
- MergeTreeDeltaType,
14
13
  PropertySet,
14
+ InteriorSequencePlace,
15
+ } from "@fluidframework/merge-tree/internal";
16
+ import {
17
+ MergeTreeDeltaType,
15
18
  ReferenceType,
16
19
  SlidingPreference,
17
20
  appendToMergeTreeDeltaRevertibles,
@@ -20,7 +23,6 @@ import {
20
23
  isMergeTreeDeltaRevertible,
21
24
  refTypeIncludesFlag,
22
25
  revertMergeTreeDeltaRevertibles,
23
- InteriorSequencePlace,
24
26
  Side,
25
27
  type ISegmentInternal,
26
28
  segmentIsRemoved,
@@ -28,9 +30,10 @@ import {
28
30
  type ISegment,
29
31
  } from "@fluidframework/merge-tree/internal";
30
32
 
31
- import { IntervalOpType, SequenceInterval, SequenceIntervalClass } from "./intervals/index.js";
32
- import { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent.js";
33
- import { ISharedString, SharedStringSegment } from "./sharedString.js";
33
+ import type { SequenceInterval } from "./intervals/index.js";
34
+ import { IntervalOpType, SequenceIntervalClass } from "./intervals/index.js";
35
+ import type { ISequenceDeltaRange, SequenceDeltaEvent } from "./sequenceDeltaEvent.js";
36
+ import type { ISharedString, SharedStringSegment } from "./sharedString.js";
34
37
 
35
38
  /**
36
39
  * Data for undoing edits on SharedStrings and Intervals.
@@ -321,7 +324,7 @@ export function appendSharedStringDeltaToRevertibles(
321
324
  };
322
325
 
323
326
  // add an interval for each startInterval, accounting for any corresponding endIntervals
324
- startIntervals.forEach(({ interval, offset }) => {
327
+ for (const { interval, offset } of startIntervals) {
325
328
  // find any corresponding end for this interval
326
329
  const endIntervalIndex = endIntervals.findIndex((end) => {
327
330
  return end.interval === interval;
@@ -338,16 +341,16 @@ export function appendSharedStringDeltaToRevertibles(
338
341
  startOffset: offset,
339
342
  endOffset,
340
343
  });
341
- });
344
+ }
342
345
 
343
346
  // add any remaining endIntervals that aren't matched with a startInterval
344
- endIntervals.forEach(({ interval, offset }) => {
347
+ for (const { interval, offset } of endIntervals) {
345
348
  revertible.intervals.push({
346
349
  intervalId: interval.getIntervalId(),
347
350
  label: interval.start.properties?.referenceRangeLabels[0],
348
351
  endOffset: offset,
349
352
  });
350
- });
353
+ }
351
354
 
352
355
  revertibles.push(revertible);
353
356
  return;
@@ -375,14 +378,14 @@ export function discardSharedStringRevertibles(
375
378
  sharedString: ISharedString,
376
379
  revertibles: SharedStringRevertible[],
377
380
  ) {
378
- revertibles.forEach((r) => {
381
+ for (const r of revertibles) {
379
382
  if (isMergeTreeDeltaRevertible(r)) {
380
383
  discardMergeTreeDeltaRevertible([r]);
381
384
  } else if (r.event === IntervalOpType.CHANGE || r.event === IntervalOpType.DELETE) {
382
385
  sharedString.removeLocalReferencePosition(r.start);
383
386
  sharedString.removeLocalReferencePosition(r.end);
384
387
  }
385
- });
388
+ }
386
389
  }
387
390
 
388
391
  function getSlidePosition(
@@ -478,11 +481,11 @@ function revertLocalDelete(
478
481
  props,
479
482
  });
480
483
 
481
- idMap.forEach((newId, oldId) => {
484
+ for (const [oldId, newId] of idMap.entries()) {
482
485
  if (intervalId === newId) {
483
486
  idMap.set(oldId, getUpdatedIdFromInterval(int));
484
487
  }
485
- });
488
+ }
486
489
  idMap.set(intervalId, int.getIntervalId());
487
490
  }
488
491
 
@@ -587,9 +590,9 @@ function revertLocalSequenceRemove(
587
590
  const saveSegments = (event: SequenceDeltaEvent) => {
588
591
  if (event.ranges.length > 0) {
589
592
  let length = 0;
590
- event.ranges.forEach((range) => {
593
+ for (const range of event.ranges) {
591
594
  length += range.segment.cachedLength;
592
- });
595
+ }
593
596
  restoredRanges.addOrUpdate({
594
597
  ranges: event.ranges,
595
598
  length,
@@ -601,7 +604,7 @@ function revertLocalSequenceRemove(
601
604
  revertMergeTreeDeltaRevertibles(sharedString, [revertible.mergeTreeRevertible]);
602
605
  sharedString.off("sequenceDelta", saveSegments);
603
606
 
604
- revertible.intervals.forEach((intervalInfo) => {
607
+ for (const intervalInfo of revertible.intervals) {
605
608
  const intervalCollection = sharedString.getIntervalCollection(intervalInfo.label);
606
609
  const intervalId = getUpdatedId(intervalInfo.intervalId);
607
610
  const interval = intervalCollection.getIntervalById(intervalId);
@@ -627,10 +630,10 @@ function revertLocalSequenceRemove(
627
630
  });
628
631
  }
629
632
  }
630
- });
633
+ }
631
634
 
632
635
  // fix up the local references used by delete and change revertibles
633
- revertible.revertibleRefs.forEach((revertibleRef) => {
636
+ for (const revertibleRef of revertible.revertibleRefs) {
634
637
  assert(
635
638
  revertibleRef.revertible.event === IntervalOpType.CHANGE ||
636
639
  revertibleRef.revertible.event === IntervalOpType.DELETE,
@@ -660,7 +663,7 @@ function revertLocalSequenceRemove(
660
663
  revertibleRef.revertible.end = newRef;
661
664
  }
662
665
  }
663
- });
666
+ }
664
667
  }
665
668
 
666
669
  /**
@@ -677,23 +680,29 @@ export function revertSharedStringRevertibles(
677
680
  if ("event" in r) {
678
681
  const event = r.event;
679
682
  switch (event) {
680
- case IntervalOpType.ADD:
683
+ case IntervalOpType.ADD: {
681
684
  revertLocalAdd(sharedString, r);
682
685
  break;
683
- case IntervalOpType.DELETE:
686
+ }
687
+ case IntervalOpType.DELETE: {
684
688
  revertLocalDelete(sharedString, r);
685
689
  break;
686
- case IntervalOpType.CHANGE:
690
+ }
691
+ case IntervalOpType.CHANGE: {
687
692
  revertLocalChange(sharedString, r);
688
693
  break;
689
- case IntervalOpType.PROPERTY_CHANGED:
694
+ }
695
+ case IntervalOpType.PROPERTY_CHANGED: {
690
696
  revertLocalPropertyChanged(sharedString, r);
691
697
  break;
692
- case IntervalOpType.POSITION_REMOVE:
698
+ }
699
+ case IntervalOpType.POSITION_REMOVE: {
693
700
  revertLocalSequenceRemove(sharedString, r);
694
701
  break;
695
- default:
702
+ }
703
+ default: {
696
704
  unreachableCase(event);
705
+ }
697
706
  }
698
707
  } else {
699
708
  revertMergeTreeDeltaRevertibles(sharedString, [r]);