@fluidframework/sequence 2.0.0-internal.7.1.0 → 2.0.0-internal.7.2.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 (180) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/api-extractor.json +1 -16
  3. package/api-report/sequence.api.md +2 -0
  4. package/dist/defaultMapInterfaces.d.ts +1 -0
  5. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  6. package/dist/defaultMapInterfaces.js.map +1 -1
  7. package/dist/intervalCollection.d.ts +12 -2
  8. package/dist/intervalCollection.d.ts.map +1 -1
  9. package/dist/intervalCollection.js +2 -0
  10. package/dist/intervalCollection.js.map +1 -1
  11. package/dist/intervalIndex/endpointInRangeIndex.d.ts +4 -0
  12. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  13. package/dist/intervalIndex/endpointInRangeIndex.js +3 -0
  14. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  15. package/dist/intervalIndex/endpointIndex.d.ts +6 -0
  16. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  17. package/dist/intervalIndex/endpointIndex.js +3 -0
  18. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  19. package/dist/intervalIndex/idIntervalIndex.d.ts +6 -0
  20. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  21. package/dist/intervalIndex/idIntervalIndex.js +3 -0
  22. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  23. package/dist/intervalIndex/intervalIndex.d.ts +1 -0
  24. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -1
  25. package/dist/intervalIndex/intervalIndex.js.map +1 -1
  26. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +9 -0
  27. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  28. package/dist/intervalIndex/overlappingIntervalsIndex.js +6 -0
  29. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  30. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +3 -0
  31. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  32. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -0
  33. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  34. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +1 -0
  35. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  36. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  37. package/dist/intervalIndex/startpointInRangeIndex.d.ts +4 -0
  38. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  39. package/dist/intervalIndex/startpointInRangeIndex.js +3 -0
  40. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  41. package/dist/intervals/interval.d.ts +1 -0
  42. package/dist/intervals/interval.d.ts.map +1 -1
  43. package/dist/intervals/interval.js +1 -0
  44. package/dist/intervals/interval.js.map +1 -1
  45. package/dist/intervals/intervalUtils.d.ts +9 -1
  46. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  47. package/dist/intervals/intervalUtils.js +4 -1
  48. package/dist/intervals/intervalUtils.js.map +1 -1
  49. package/dist/intervals/sequenceInterval.d.ts +2 -0
  50. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  51. package/dist/intervals/sequenceInterval.js +2 -0
  52. package/dist/intervals/sequenceInterval.js.map +1 -1
  53. package/dist/packageVersion.d.ts +1 -1
  54. package/dist/packageVersion.js +1 -1
  55. package/dist/packageVersion.js.map +1 -1
  56. package/dist/sequence.d.ts +7 -3
  57. package/dist/sequence.d.ts.map +1 -1
  58. package/dist/sequence.js +8 -4
  59. package/dist/sequence.js.map +1 -1
  60. package/dist/sequenceDeltaEvent.d.ts +4 -0
  61. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  62. package/dist/sequenceDeltaEvent.js +3 -0
  63. package/dist/sequenceDeltaEvent.js.map +1 -1
  64. package/dist/sequenceFactory.d.ts +3 -0
  65. package/dist/sequenceFactory.d.ts.map +1 -1
  66. package/dist/sequenceFactory.js +3 -0
  67. package/dist/sequenceFactory.js.map +1 -1
  68. package/dist/sharedIntervalCollection.d.ts +5 -0
  69. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  70. package/dist/sharedIntervalCollection.js +2 -0
  71. package/dist/sharedIntervalCollection.js.map +1 -1
  72. package/dist/sharedSequence.d.ts +6 -3
  73. package/dist/sharedSequence.d.ts.map +1 -1
  74. package/dist/sharedSequence.js +4 -2
  75. package/dist/sharedSequence.js.map +1 -1
  76. package/dist/sharedString.d.ts +16 -1
  77. package/dist/sharedString.d.ts.map +1 -1
  78. package/dist/sharedString.js +14 -1
  79. package/dist/sharedString.js.map +1 -1
  80. package/lib/defaultMapInterfaces.d.ts +1 -0
  81. package/lib/defaultMapInterfaces.d.ts.map +1 -1
  82. package/lib/defaultMapInterfaces.js.map +1 -1
  83. package/lib/intervalCollection.d.ts +12 -2
  84. package/lib/intervalCollection.d.ts.map +1 -1
  85. package/lib/intervalCollection.js +2 -0
  86. package/lib/intervalCollection.js.map +1 -1
  87. package/lib/intervalIndex/endpointInRangeIndex.d.ts +4 -0
  88. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  89. package/lib/intervalIndex/endpointInRangeIndex.js +3 -0
  90. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  91. package/lib/intervalIndex/endpointIndex.d.ts +6 -0
  92. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
  93. package/lib/intervalIndex/endpointIndex.js +3 -0
  94. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  95. package/lib/intervalIndex/idIntervalIndex.d.ts +6 -0
  96. package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  97. package/lib/intervalIndex/idIntervalIndex.js +3 -0
  98. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  99. package/lib/intervalIndex/intervalIndex.d.ts +1 -0
  100. package/lib/intervalIndex/intervalIndex.d.ts.map +1 -1
  101. package/lib/intervalIndex/intervalIndex.js.map +1 -1
  102. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +9 -0
  103. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  104. package/lib/intervalIndex/overlappingIntervalsIndex.js +6 -0
  105. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  106. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +3 -0
  107. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  108. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -0
  109. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  110. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +1 -0
  111. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  112. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  113. package/lib/intervalIndex/startpointInRangeIndex.d.ts +4 -0
  114. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  115. package/lib/intervalIndex/startpointInRangeIndex.js +3 -0
  116. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  117. package/lib/intervals/interval.d.ts +1 -0
  118. package/lib/intervals/interval.d.ts.map +1 -1
  119. package/lib/intervals/interval.js +1 -0
  120. package/lib/intervals/interval.js.map +1 -1
  121. package/lib/intervals/intervalUtils.d.ts +9 -1
  122. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  123. package/lib/intervals/intervalUtils.js +4 -1
  124. package/lib/intervals/intervalUtils.js.map +1 -1
  125. package/lib/intervals/sequenceInterval.d.ts +2 -0
  126. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  127. package/lib/intervals/sequenceInterval.js +2 -0
  128. package/lib/intervals/sequenceInterval.js.map +1 -1
  129. package/lib/packageVersion.d.ts +1 -1
  130. package/lib/packageVersion.js +1 -1
  131. package/lib/packageVersion.js.map +1 -1
  132. package/lib/sequence.d.ts +7 -3
  133. package/lib/sequence.d.ts.map +1 -1
  134. package/lib/sequence.js +8 -4
  135. package/lib/sequence.js.map +1 -1
  136. package/lib/sequenceDeltaEvent.d.ts +4 -0
  137. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  138. package/lib/sequenceDeltaEvent.js +3 -0
  139. package/lib/sequenceDeltaEvent.js.map +1 -1
  140. package/lib/sequenceFactory.d.ts +3 -0
  141. package/lib/sequenceFactory.d.ts.map +1 -1
  142. package/lib/sequenceFactory.js +3 -0
  143. package/lib/sequenceFactory.js.map +1 -1
  144. package/lib/sharedIntervalCollection.d.ts +5 -0
  145. package/lib/sharedIntervalCollection.d.ts.map +1 -1
  146. package/lib/sharedIntervalCollection.js +2 -0
  147. package/lib/sharedIntervalCollection.js.map +1 -1
  148. package/lib/sharedSequence.d.ts +6 -3
  149. package/lib/sharedSequence.d.ts.map +1 -1
  150. package/lib/sharedSequence.js +4 -2
  151. package/lib/sharedSequence.js.map +1 -1
  152. package/lib/sharedString.d.ts +16 -1
  153. package/lib/sharedString.d.ts.map +1 -1
  154. package/lib/sharedString.js +14 -1
  155. package/lib/sharedString.js.map +1 -1
  156. package/package.json +24 -21
  157. package/src/defaultMapInterfaces.ts +1 -0
  158. package/src/intervalCollection.ts +12 -2
  159. package/src/intervalIndex/endpointInRangeIndex.ts +4 -0
  160. package/src/intervalIndex/endpointIndex.ts +6 -0
  161. package/src/intervalIndex/idIntervalIndex.ts +6 -0
  162. package/src/intervalIndex/intervalIndex.ts +1 -0
  163. package/src/intervalIndex/overlappingIntervalsIndex.ts +9 -0
  164. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +6 -0
  165. package/src/intervalIndex/sequenceIntervalIndexes.ts +1 -0
  166. package/src/intervalIndex/startpointInRangeIndex.ts +4 -1
  167. package/src/intervals/interval.ts +1 -0
  168. package/src/intervals/intervalUtils.ts +9 -1
  169. package/src/intervals/sequenceInterval.ts +2 -0
  170. package/src/packageVersion.ts +1 -1
  171. package/src/sequence.ts +9 -4
  172. package/src/sequenceDeltaEvent.ts +4 -0
  173. package/src/sequenceFactory.ts +3 -0
  174. package/src/sharedIntervalCollection.ts +5 -0
  175. package/src/sharedSequence.ts +6 -3
  176. package/src/sharedString.ts +23 -1
  177. package/dist/sequence-alpha.d.ts +0 -1500
  178. package/dist/sequence-beta.d.ts +0 -1420
  179. package/dist/sequence-public.d.ts +0 -1420
  180. package/dist/sequence-untrimmed.d.ts +0 -1672
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/sequence",
3
- "version": "2.0.0-internal.7.1.0",
3
+ "version": "2.0.0-internal.7.2.0",
4
4
  "description": "Distributed sequence",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -35,36 +35,35 @@
35
35
  "temp-directory": "nyc/.nyc_output"
36
36
  },
37
37
  "dependencies": {
38
- "@fluid-internal/client-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
39
- "@fluidframework/core-interfaces": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
40
- "@fluidframework/core-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
41
- "@fluidframework/datastore-definitions": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
42
- "@fluidframework/merge-tree": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
38
+ "@fluid-internal/client-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
39
+ "@fluidframework/core-interfaces": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
40
+ "@fluidframework/core-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
41
+ "@fluidframework/datastore-definitions": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
42
+ "@fluidframework/merge-tree": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
43
43
  "@fluidframework/protocol-definitions": "^3.0.0",
44
- "@fluidframework/runtime-definitions": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
45
- "@fluidframework/runtime-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
46
- "@fluidframework/shared-object-base": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
47
- "@fluidframework/telemetry-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
44
+ "@fluidframework/runtime-definitions": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
45
+ "@fluidframework/runtime-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
46
+ "@fluidframework/shared-object-base": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
47
+ "@fluidframework/telemetry-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
48
48
  "uuid": "^9.0.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@fluid-internal/stochastic-test-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
52
- "@fluid-internal/test-dds-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
51
+ "@fluid-internal/stochastic-test-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
52
+ "@fluid-internal/test-dds-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
53
53
  "@fluid-tools/benchmark": "^0.48.0",
54
- "@fluid-tools/build-cli": "^0.25.0",
55
- "@fluidframework/build-common": "^2.0.1",
56
- "@fluidframework/build-tools": "^0.25.0",
54
+ "@fluid-tools/build-cli": "^0.26.1",
55
+ "@fluidframework/build-common": "^2.0.3",
56
+ "@fluidframework/build-tools": "^0.26.1",
57
57
  "@fluidframework/eslint-config-fluid": "^3.0.0",
58
- "@fluidframework/mocha-test-setup": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
59
- "@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.0.0-internal.7.0.0",
60
- "@fluidframework/test-runtime-utils": ">=2.0.0-internal.7.1.0 <2.0.0-internal.7.2.0",
58
+ "@fluidframework/mocha-test-setup": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
59
+ "@fluidframework/sequence-previous": "npm:@fluidframework/sequence@2.0.0-internal.7.1.0",
60
+ "@fluidframework/test-runtime-utils": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
61
61
  "@microsoft/api-extractor": "^7.37.0",
62
62
  "@types/diff": "^3.5.1",
63
63
  "@types/mocha": "^9.1.1",
64
64
  "@types/node": "^16.18.38",
65
65
  "@types/random-js": "^1.0.31",
66
66
  "c8": "^7.7.1",
67
- "copyfiles": "^2.4.1",
68
67
  "cross-env": "^7.0.3",
69
68
  "diff": "^3.5.0",
70
69
  "eslint": "~8.50.0",
@@ -86,7 +85,11 @@
86
85
  }
87
86
  },
88
87
  "typeValidation": {
89
- "broken": {}
88
+ "broken": {
89
+ "ClassDeclaration_SharedString": {
90
+ "forwardCompat": false
91
+ }
92
+ }
90
93
  },
91
94
  "scripts": {
92
95
  "build": "fluid-build . --task build",
@@ -97,7 +100,7 @@
97
100
  "build:genver": "gen-version",
98
101
  "build:test": "tsc --project ./src/test/tsconfig.json",
99
102
  "ci:build:docs": "api-extractor run",
100
- "clean": "rimraf --glob 'dist' 'lib' '*.tsbuildinfo' '*.build.log' '_api-extractor-temp' 'nyc'",
103
+ "clean": "rimraf --glob dist lib \"*.tsbuildinfo\" \"*.build.log\" _api-extractor-temp nyc",
101
104
  "eslint": "eslint --format stylish src",
102
105
  "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
103
106
  "format": "npm run prettier:fix",
@@ -52,6 +52,7 @@ export interface IMapMessageLocalMetadata {
52
52
 
53
53
  /**
54
54
  * Optional flags that configure options for sequence DDSs
55
+ * @public
55
56
  */
56
57
  export interface SequenceOptions {
57
58
  /**
@@ -88,6 +88,7 @@ import {
88
88
  * If a SequencePlace is the endpoint of a range (e.g. start/end of an interval or search range),
89
89
  * the Side value means it is exclusive if it is nearer to the other position and inclusive if it is farther.
90
90
  * E.g. the start of a range with Side.After is exclusive of the character at the position.
91
+ * @public
91
92
  */
92
93
  export type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
93
94
 
@@ -95,6 +96,7 @@ export type SequencePlace = number | "start" | "end" | InteriorSequencePlace;
95
96
  * A sequence place that does not refer to the special endpoint segments.
96
97
  *
97
98
  * See {@link SequencePlace} for additional context.
99
+ * @public
98
100
  */
99
101
  export interface InteriorSequencePlace {
100
102
  pos: number;
@@ -105,6 +107,7 @@ export interface InteriorSequencePlace {
105
107
  * Defines a side relative to a character in a sequence.
106
108
  *
107
109
  * @remarks See {@link SequencePlace} for additional context on usage.
110
+ * @public
108
111
  */
109
112
  export enum Side {
110
113
  Before = 0,
@@ -620,6 +623,9 @@ export function makeOpsMap<T extends ISerializableInterval>(): Map<
620
623
  ]);
621
624
  }
622
625
 
626
+ /**
627
+ * @public
628
+ */
623
629
  export type DeserializeCallback = (properties: PropertySet) => void;
624
630
 
625
631
  class IntervalCollectionIterator<TInterval extends ISerializableInterval>
@@ -657,6 +663,7 @@ class IntervalCollectionIterator<TInterval extends ISerializableInterval>
657
663
 
658
664
  /**
659
665
  * Change events emitted by `IntervalCollection`s
666
+ * @public
660
667
  */
661
668
  export interface IIntervalCollectionEvent<TInterval extends ISerializableInterval> extends IEvent {
662
669
  /**
@@ -724,6 +731,7 @@ const isSequencePlace = (place: any): place is SequencePlace => {
724
731
  /**
725
732
  * Collection of intervals that supports addition, modification, removal, and efficient spatial querying.
726
733
  * Changes to this collection will be incur updates on collaborating clients (i.e. they are not local-only).
734
+ * @public
727
735
  */
728
736
  export interface IIntervalCollection<TInterval extends ISerializableInterval>
729
737
  extends TypedEventEmitter<IIntervalCollectionEvent<TInterval>> {
@@ -752,7 +760,7 @@ export interface IIntervalCollection<TInterval extends ISerializableInterval>
752
760
  getIntervalById(id: string): TInterval | undefined;
753
761
  /**
754
762
  * Creates a new interval and add it to the collection.
755
- * @deprecated - call IntervalCollection.add without specifying an intervalType
763
+ * @deprecated call IntervalCollection.add without specifying an intervalType
756
764
  * @param start - interval start position (inclusive)
757
765
  * @param end - interval end position (exclusive)
758
766
  * @param intervalType - type of the interval. All intervals are SlideOnRemove. Intervals may not be Transient.
@@ -1204,7 +1212,7 @@ export class IntervalCollection<TInterval extends ISerializableInterval>
1204
1212
 
1205
1213
  /**
1206
1214
  * {@inheritdoc IIntervalCollection.add}
1207
- * @deprecated - call IntervalCollection.add without specifying an intervalType
1215
+ * @deprecated call IntervalCollection.add without specifying an intervalType
1208
1216
  */
1209
1217
  public add(
1210
1218
  start: SequencePlace,
@@ -2024,6 +2032,7 @@ function setSlideOnRemove(lref: LocalReferencePosition) {
2024
2032
 
2025
2033
  /**
2026
2034
  * Information that identifies an interval within a `Sequence`.
2035
+ * @public
2027
2036
  */
2028
2037
  export interface IntervalLocator {
2029
2038
  /**
@@ -2041,6 +2050,7 @@ export interface IntervalLocator {
2041
2050
  * @returns undefined if the reference position is not the endpoint of any interval (e.g. it was created
2042
2051
  * on the merge tree directly by app code), otherwise an {@link IntervalLocator} for the interval this
2043
2052
  * endpoint is a part of.
2053
+ * @public
2044
2054
  */
2045
2055
  export function intervalLocatorFromEndpoint(
2046
2056
  potentialEndpoint: LocalReferencePosition,
@@ -20,6 +20,7 @@ import { HasComparisonOverride, compareOverrideables, forceCompare } from "./int
20
20
  * Collection of intervals.
21
21
  *
22
22
  * Provide additional APIs to support efficiently querying a collection of intervals whose endpoints fall within a specified range.
23
+ * @public
23
24
  */
24
25
  export interface IEndpointInRangeIndex<TInterval extends ISerializableInterval>
25
26
  extends IntervalIndex<TInterval> {
@@ -104,6 +105,9 @@ export class EndpointInRangeIndex<TInterval extends ISerializableInterval>
104
105
  }
105
106
  }
106
107
 
108
+ /**
109
+ * @public
110
+ */
107
111
  export function createEndpointInRangeIndex(
108
112
  sharedString: SharedString,
109
113
  ): IEndpointInRangeIndex<SequenceInterval> {
@@ -15,6 +15,9 @@ import {
15
15
  import { SharedString } from "../sharedString";
16
16
  import { IntervalIndex } from "./intervalIndex";
17
17
 
18
+ /**
19
+ * @public
20
+ */
18
21
  export interface IEndpointIndex<TInterval extends ISerializableInterval>
19
22
  extends IntervalIndex<TInterval> {
20
23
  /**
@@ -79,6 +82,9 @@ export class EndpointIndex<TInterval extends ISerializableInterval>
79
82
  }
80
83
  }
81
84
 
85
+ /**
86
+ * @public
87
+ */
82
88
  export function createEndpointIndex(sharedString: SharedString): IEndpointIndex<SequenceInterval> {
83
89
  const client = (sharedString as unknown as { client: Client }).client;
84
90
  return new EndpointIndex<SequenceInterval>(client, sequenceIntervalHelpers);
@@ -9,6 +9,9 @@ import { IntervalIndex } from "./intervalIndex";
9
9
 
10
10
  const reservedIntervalIdKey = "intervalId";
11
11
 
12
+ /**
13
+ * @public
14
+ */
12
15
  export interface IIdIntervalIndex<TInterval extends ISerializableInterval>
13
16
  extends IntervalIndex<TInterval>,
14
17
  Iterable<TInterval> {
@@ -51,6 +54,9 @@ class IdIntervalIndex<TInterval extends ISerializableInterval>
51
54
  }
52
55
  }
53
56
 
57
+ /**
58
+ * @public
59
+ */
54
60
  export function createIdIntervalIndex<
55
61
  TInterval extends ISerializableInterval,
56
62
  >(): IIdIntervalIndex<TInterval> {
@@ -13,6 +13,7 @@ import { ISerializableInterval } from "../intervals";
13
13
  * - "find all intervals with start endpoint between these two points"
14
14
  * - "find all intervals which overlap this range"
15
15
  * etc.
16
+ * @public
16
17
  */
17
18
  export interface IntervalIndex<TInterval extends ISerializableInterval> {
18
19
  /**
@@ -17,6 +17,9 @@ import { SharedString } from "../sharedString";
17
17
  import { SequencePlace, endpointPosAndSide } from "../intervalCollection";
18
18
  import { IntervalIndex } from "./intervalIndex";
19
19
 
20
+ /**
21
+ * @public
22
+ */
20
23
  export interface IOverlappingIntervalsIndex<TInterval extends ISerializableInterval>
21
24
  extends IntervalIndex<TInterval> {
22
25
  /**
@@ -36,6 +39,9 @@ export interface IOverlappingIntervalsIndex<TInterval extends ISerializableInter
36
39
  ): void;
37
40
  }
38
41
 
42
+ /**
43
+ * @public
44
+ */
39
45
  export class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>
40
46
  implements IOverlappingIntervalsIndex<TInterval>
41
47
  {
@@ -170,6 +176,9 @@ export class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>
170
176
  }
171
177
  }
172
178
 
179
+ /**
180
+ * @public
181
+ */
173
182
  export function createOverlappingIntervalsIndex(
174
183
  sharedString: SharedString,
175
184
  ): IOverlappingIntervalsIndex<SequenceInterval> {
@@ -21,6 +21,9 @@ import { SharedString } from "../sharedString";
21
21
  import { SequenceIntervalIndexes } from "./sequenceIntervalIndexes";
22
22
  import { OverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
23
23
 
24
+ /**
25
+ * @public
26
+ */
24
27
  class OverlappingSequenceIntervalsIndex
25
28
  extends OverlappingIntervalsIndex<SequenceInterval>
26
29
  implements SequenceIntervalIndexes.Overlapping
@@ -66,6 +69,9 @@ class OverlappingSequenceIntervalsIndex
66
69
  }
67
70
  }
68
71
 
72
+ /**
73
+ * @public
74
+ */
69
75
  export function createOverlappingSequenceIntervalsIndex(
70
76
  sharedString: SharedString,
71
77
  ): SequenceIntervalIndexes.Overlapping {
@@ -10,6 +10,7 @@ import { IOverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
10
10
  /**
11
11
  * This namespace contains specialiazations of indexes which support spatial queries
12
12
  * specifically for `SequenceInterval`s.
13
+ * @public
13
14
  */
14
15
  // eslint-disable-next-line @typescript-eslint/no-namespace
15
16
  export namespace SequenceIntervalIndexes {
@@ -20,6 +20,7 @@ import { HasComparisonOverride, compareOverrideables, forceCompare } from "./int
20
20
  * Collection of intervals.
21
21
  *
22
22
  * Provide additional APIs to support efficiently querying a collection of intervals whose startpoints fall within a specified range.
23
+ * @public
23
24
  */
24
25
  export interface IStartpointInRangeIndex<TInterval extends ISerializableInterval>
25
26
  extends IntervalIndex<TInterval> {
@@ -102,7 +103,9 @@ export class StartpointInRangeIndex<TInterval extends ISerializableInterval>
102
103
  return results;
103
104
  }
104
105
  }
105
-
106
+ /**
107
+ * @public
108
+ */
106
109
  export function createStartpointInRangeIndex(
107
110
  sharedString: SharedString,
108
111
  ): IStartpointInRangeIndex<SequenceInterval> {
@@ -21,6 +21,7 @@ const reservedIntervalIdKey = "intervalId";
21
21
 
22
22
  /**
23
23
  * Serializable interval whose endpoints are plain-old numbers.
24
+ * @public
24
25
  */
25
26
  export class Interval implements ISerializableInterval {
26
27
  /**
@@ -16,6 +16,7 @@ import { SequencePlace, Side } from "../intervalCollection";
16
16
 
17
17
  /**
18
18
  * Basic interval abstraction
19
+ * @public
19
20
  */
20
21
  export interface IInterval {
21
22
  /**
@@ -80,10 +81,13 @@ export const IntervalOpType = {
80
81
  POSITION_REMOVE: "positionRemove",
81
82
  } as const;
82
83
 
84
+ /**
85
+ * @public
86
+ */
83
87
  export enum IntervalType {
84
88
  Simple = 0x0,
85
89
  /**
86
- * @deprecated - this functionality is no longer supported and will be removed
90
+ * @deprecated this functionality is no longer supported and will be removed
87
91
  */
88
92
  Nest = 0x1,
89
93
 
@@ -132,6 +136,9 @@ export interface ISerializedInterval {
132
136
  properties?: PropertySet;
133
137
  }
134
138
 
139
+ /**
140
+ * @public
141
+ */
135
142
  export interface ISerializableInterval extends IInterval {
136
143
  /** Serializable bag of properties associated with the interval. */
137
144
  properties: PropertySet;
@@ -194,6 +201,7 @@ export type CompressedSerializedInterval =
194
201
  /**
195
202
  * @sealed
196
203
  * @deprecated The methods within have substitutions
204
+ * @public
197
205
  */
198
206
  export interface IIntervalHelpers<TInterval extends ISerializableInterval> {
199
207
  /**
@@ -100,6 +100,7 @@ function maxSide(sideA: Side, sideB: Side): Side {
100
100
  * `mergeTreeReferencesCanSlideToEndpoint` feature flag set to true, the endpoints
101
101
  * of the interval that are exclusive will have the ability to slide to these
102
102
  * special endpoint segments.
103
+ * @public
103
104
  */
104
105
  export class SequenceInterval implements ISerializableInterval {
105
106
  /**
@@ -636,6 +637,7 @@ export function createSequenceInterval(
636
637
 
637
638
  /**
638
639
  * @deprecated The methods within have substitutions
640
+ * @public
639
641
  */
640
642
  export const sequenceIntervalHelpers: IIntervalHelpers<SequenceInterval> = {
641
643
  create: createSequenceInterval,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/sequence";
9
- export const pkgVersion = "2.0.0-internal.7.1.0";
9
+ export const pkgVersion = "2.0.0-internal.7.2.0";
package/src/sequence.ts CHANGED
@@ -97,6 +97,7 @@ const contentPath = "content";
97
97
  * - `event` - Various information on the segments that were modified.
98
98
  *
99
99
  * - `target` - The sequence itself.
100
+ * @public
100
101
  */
101
102
  export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
102
103
  (
@@ -113,6 +114,9 @@ export interface ISharedSegmentSequenceEvents extends ISharedObjectEvents {
113
114
  );
114
115
  }
115
116
 
117
+ /**
118
+ * @public
119
+ */
116
120
  export abstract class SharedSegmentSequence<T extends ISegment>
117
121
  extends SharedObject<ISharedSegmentSequenceEvents>
118
122
  implements ISharedIntervalCollection<SequenceInterval>, MergeTreeRevertibleDriver
@@ -268,7 +272,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
268
272
  }
269
273
 
270
274
  /**
271
- * @deprecated - The ability to create group ops will be removed in an upcoming release, as group ops are redundant with the native batching capabilities of the runtime
275
+ * @deprecated The ability to create group ops will be removed in an upcoming release, as group ops are redundant with the native batching capabilities of the runtime
272
276
  */
273
277
  public groupOperation(groupOp: IMergeTreeGroupMsg) {
274
278
  this.guardReentrancy(() => this.client.localTransaction(groupOp));
@@ -395,7 +399,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
395
399
  }
396
400
 
397
401
  /**
398
- * @deprecated - This method will no longer be public in an upcoming release as it is not safe to use outside of this class
402
+ * @deprecated This method will no longer be public in an upcoming release as it is not safe to use outside of this class
399
403
  */
400
404
  public submitSequenceMessage(message: IMergeTreeOp) {
401
405
  if (!this.isAttached()) {
@@ -449,7 +453,7 @@ export abstract class SharedSegmentSequence<T extends ISegment>
449
453
  }
450
454
 
451
455
  /**
452
- * @deprecated - this functionality is no longer supported and will be removed
456
+ * @deprecated this functionality is no longer supported and will be removed
453
457
  */
454
458
  public getStackContext(startPos: number, rangeLabels: string[]): RangeStackMap {
455
459
  return this.client.getStackContext(startPos, rangeLabels);
@@ -621,7 +625,8 @@ export abstract class SharedSegmentSequence<T extends ISegment>
621
625
  m.minimumSequenceNumber < collabWindow.minSeq ||
622
626
  m.referenceSequenceNumber < collabWindow.minSeq ||
623
627
  m.sequenceNumber <= collabWindow.minSeq ||
624
- m.sequenceNumber <= collabWindow.currentSeq
628
+ // sequenceNumber could be the same if messages are part of a grouped batch
629
+ m.sequenceNumber < collabWindow.currentSeq
625
630
  ) {
626
631
  throw new Error(
627
632
  `Invalid catchup operations in snapshot: ${JSON.stringify({
@@ -23,6 +23,7 @@ import {
23
23
  * The properties of this object and its sub-objects represent the state of the sequence at the
24
24
  * point in time at which the operation was applied.
25
25
  * They will not take into any future modifications performed to the underlying sequence and merge tree.
26
+ * @public
26
27
  */
27
28
  export abstract class SequenceEvent<
28
29
  TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
@@ -105,6 +106,7 @@ export abstract class SequenceEvent<
105
106
  * For group ops, each op will get its own event, and the group op property will be set on the op args.
106
107
  *
107
108
  * Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
109
+ * @public
108
110
  */
109
111
  export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationType> {
110
112
  /**
@@ -128,6 +130,7 @@ export class SequenceDeltaEvent extends SequenceEvent<MergeTreeDeltaOperationTyp
128
130
  * The properties of this object and its sub-objects represent the state of the sequence at the
129
131
  * point in time at which the operation was applied.
130
132
  * They will not take into consideration any future modifications performed to the underlying sequence and merge tree.
133
+ * @public
131
134
  */
132
135
  export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenanceType> {
133
136
  constructor(
@@ -141,6 +144,7 @@ export class SequenceMaintenanceEvent extends SequenceEvent<MergeTreeMaintenance
141
144
 
142
145
  /**
143
146
  * A range that has changed corresponding to a segment modification.
147
+ * @public
144
148
  */
145
149
  export interface ISequenceDeltaRange<
146
150
  TOperation extends MergeTreeDeltaOperationTypes = MergeTreeDeltaOperationTypes,
@@ -13,6 +13,9 @@ import { Marker, TextSegment } from "@fluidframework/merge-tree";
13
13
  import { pkgVersion } from "./packageVersion";
14
14
  import { SharedString, SharedStringSegment } from "./sharedString";
15
15
 
16
+ /**
17
+ * @public
18
+ */
16
19
  export class SharedStringFactory implements IChannelFactory {
17
20
  // TODO rename back to https://graph.microsoft.com/types/mergeTree/string once paparazzi is able to dynamically
18
21
  // load code (UPDATE: paparazzi is gone... anything to do here?)
@@ -33,6 +33,7 @@ const snapshotFileName = "header";
33
33
  /**
34
34
  * The factory that defines the SharedIntervalCollection.
35
35
  * @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
36
+ * @public
36
37
  */
37
38
  export class SharedIntervalCollectionFactory implements IChannelFactory {
38
39
  public static readonly Type = "https://graph.microsoft.com/types/sharedIntervalCollection";
@@ -74,12 +75,16 @@ export class SharedIntervalCollectionFactory implements IChannelFactory {
74
75
  }
75
76
  }
76
77
 
78
+ /**
79
+ * @public
80
+ */
77
81
  export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
78
82
  getIntervalCollection(label: string): IIntervalCollection<TInterval>;
79
83
  }
80
84
 
81
85
  /**
82
86
  * @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
87
+ * @public
83
88
  */
84
89
  export class SharedIntervalCollection
85
90
  extends SharedObject
@@ -15,14 +15,16 @@ import { SharedSegmentSequence } from "./sequence";
15
15
  const MaxRun = 128;
16
16
 
17
17
  /**
18
- * @deprecated - IJSONRunSegment will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
18
+ * @deprecated IJSONRunSegment will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
19
+ * @public
19
20
  */
20
21
  export interface IJSONRunSegment<T> extends IJSONSegment {
21
22
  items: Serializable<T>[];
22
23
  }
23
24
 
24
25
  /**
25
- * @deprecated - SubSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
26
+ * @deprecated SubSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
27
+ * @public
26
28
  */
27
29
  export class SubSequence<T> extends BaseSegment {
28
30
  public static readonly typeString: string = "SubSequence";
@@ -105,7 +107,8 @@ export class SubSequence<T> extends BaseSegment {
105
107
  }
106
108
 
107
109
  /**
108
- * @deprecated - SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
110
+ * @deprecated SharedSequence will be removed in a upcoming release. It has been moved to the fluid-experimental/sequence-deprecated package
111
+ * @public
109
112
  */
110
113
  export class SharedSequence<T> extends SharedSegmentSequence<SubSequence<T>> {
111
114
  constructor(
@@ -24,6 +24,7 @@ import { SharedStringFactory } from "./sequenceFactory";
24
24
 
25
25
  /**
26
26
  * Fluid object interface describing access methods on a SharedString
27
+ * @public
27
28
  */
28
29
  export interface ISharedString extends SharedSegmentSequence<SharedStringSegment> {
29
30
  /**
@@ -52,6 +53,9 @@ export interface ISharedString extends SharedSegmentSequence<SharedStringSegment
52
53
  posFromRelativePos(relativePos: IRelativePosition): number;
53
54
  }
54
55
 
56
+ /**
57
+ * @public
58
+ */
55
59
  export type SharedStringSegment = TextSegment | Marker;
56
60
 
57
61
  /**
@@ -63,6 +67,7 @@ export type SharedStringSegment = TextSegment | Marker;
63
67
  * used to store metadata at positions within the text, like the details of an
64
68
  * image or Fluid object that should be rendered with the text.
65
69
  *
70
+ * @public
66
71
  */
67
72
  export class SharedString
68
73
  extends SharedSegmentSequence<SharedStringSegment>
@@ -215,6 +220,7 @@ export class SharedString
215
220
  /**
216
221
  * Finds the nearest reference with ReferenceType.Tile to `startPos` in the direction dictated by `tilePrecedesPos`.
217
222
  * Note that Markers receive `ReferenceType.Tile` by default.
223
+ * @deprecated Use `searchForMarker` instead.
218
224
  * @param startPos - Position at which to start the search
219
225
  * @param clientId - clientId dictating the perspective to search from
220
226
  * @param tileLabel - Label of the tile to search for
@@ -233,6 +239,22 @@ export class SharedString
233
239
  return this.client.findTile(startPos ?? 0, tileLabel, preceding);
234
240
  }
235
241
 
242
+ /**
243
+ * Searches a string for the nearest marker in either direction to a given start position.
244
+ * The search will include the start position, so markers at the start position are valid
245
+ * results of the search.
246
+ * @param startPos - Position at which to start the search
247
+ * @param markerLabel - Label of the marker to search for
248
+ * @param forwards - Whether the desired marker comes before (false) or after (true) `startPos`
249
+ */
250
+ public searchForMarker(
251
+ startPos: number,
252
+ markerLabel: string,
253
+ forwards = true,
254
+ ): Marker | undefined {
255
+ return this.client.searchForMarker(startPos, markerLabel, forwards);
256
+ }
257
+
236
258
  /**
237
259
  * Retrieve text from the SharedString in string format.
238
260
  * @param start - The starting index of the text to retrieve, or 0 if omitted.
@@ -309,7 +331,6 @@ interface ITextAndMarkerAccumulator {
309
331
  * @param sharedString - String to retrieve text and markers from
310
332
  * @param label - label to split on
311
333
  * @returns Two parallel lists of text and markers, split by markers with the provided `label`.
312
- *
313
334
  * For example:
314
335
  * ```typescript
315
336
  * // Say sharedstring has contents "hello<paragraph marker 1>world<paragraph marker 2>missing".
@@ -318,6 +339,7 @@ interface ITextAndMarkerAccumulator {
318
339
  * // parallelMarkers === [<paragraph marker 1 object>, <paragraph marker 2 object>]
319
340
  * // Note parallelText does not include "missing".
320
341
  * ```
342
+ * @public
321
343
  */
322
344
  export function getTextAndMarkers(
323
345
  sharedString: SharedString,