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

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 (263) hide show
  1. package/dist/{defaultMap.js → defaultMap.cjs} +2 -2
  2. package/dist/defaultMap.cjs.map +1 -0
  3. package/{lib/intervalIndex/intervalIndex.js → dist/defaultMapInterfaces.cjs} +1 -1
  4. package/dist/defaultMapInterfaces.cjs.map +1 -0
  5. package/dist/{index.js → index.cjs} +11 -11
  6. package/dist/index.cjs.map +1 -0
  7. package/dist/{intervalCollection.js → intervalCollection.cjs} +3 -3
  8. package/dist/intervalCollection.cjs.map +1 -0
  9. package/dist/intervalIndex/{endpointInRangeIndex.js → endpointInRangeIndex.cjs} +3 -3
  10. package/dist/intervalIndex/endpointInRangeIndex.cjs.map +1 -0
  11. package/{lib/intervalIndex/endpointIndex.js → dist/intervalIndex/endpointIndex.cjs} +2 -2
  12. package/dist/intervalIndex/endpointIndex.cjs.map +1 -0
  13. package/dist/intervalIndex/{idIntervalIndex.js → idIntervalIndex.cjs} +1 -1
  14. package/dist/intervalIndex/idIntervalIndex.cjs.map +1 -0
  15. package/{lib/intervalIndex/index.js → dist/intervalIndex/index.cjs} +7 -7
  16. package/dist/intervalIndex/index.cjs.map +1 -0
  17. package/dist/intervalIndex/{intervalIndex.js → intervalIndex.cjs} +1 -1
  18. package/dist/intervalIndex/intervalIndex.cjs.map +1 -0
  19. package/{lib/intervalIndex/intervalIndexUtils.js → dist/intervalIndex/intervalIndexUtils.cjs} +1 -1
  20. package/dist/intervalIndex/intervalIndexUtils.cjs.map +1 -0
  21. package/{lib/intervalIndex/overlappingIntervalsIndex.js → dist/intervalIndex/overlappingIntervalsIndex.cjs} +4 -4
  22. package/dist/intervalIndex/overlappingIntervalsIndex.cjs.map +1 -0
  23. package/{lib/intervalIndex/overlappingSequenceIntervalsIndex.js → dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs} +3 -3
  24. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs.map +1 -0
  25. package/dist/intervalIndex/{sequenceIntervalIndexes.js → sequenceIntervalIndexes.cjs} +1 -1
  26. package/dist/intervalIndex/sequenceIntervalIndexes.cjs.map +1 -0
  27. package/{lib/intervalIndex/startpointInRangeIndex.js → dist/intervalIndex/startpointInRangeIndex.cjs} +3 -3
  28. package/dist/intervalIndex/startpointInRangeIndex.cjs.map +1 -0
  29. package/{lib/intervalTree.js → dist/intervalTree.cjs} +1 -1
  30. package/dist/intervalTree.cjs.map +1 -0
  31. package/{lib/intervals/index.js → dist/intervals/index.cjs} +4 -4
  32. package/dist/intervals/index.cjs.map +1 -0
  33. package/{lib/intervals/interval.js → dist/intervals/interval.cjs} +1 -1
  34. package/dist/intervals/interval.cjs.map +1 -0
  35. package/{lib/intervals/intervalUtils.js → dist/intervals/intervalUtils.cjs} +1 -1
  36. package/dist/intervals/intervalUtils.cjs.map +1 -0
  37. package/{lib/intervals/sequenceInterval.js → dist/intervals/sequenceInterval.cjs} +3 -3
  38. package/dist/intervals/sequenceInterval.cjs.map +1 -0
  39. package/dist/{localValues.js → localValues.cjs} +1 -1
  40. package/dist/localValues.cjs.map +1 -0
  41. package/{lib/packageVersion.js → dist/packageVersion.cjs} +2 -2
  42. package/dist/packageVersion.cjs.map +1 -0
  43. package/dist/packageVersion.d.ts +1 -1
  44. package/{lib/revertibles.js → dist/revertibles.cjs} +3 -3
  45. package/dist/revertibles.cjs.map +1 -0
  46. package/dist/{sequence.js → sequence.cjs} +4 -4
  47. package/dist/sequence.cjs.map +1 -0
  48. package/{lib/sequenceDeltaEvent.js → dist/sequenceDeltaEvent.cjs} +1 -1
  49. package/dist/sequenceDeltaEvent.cjs.map +1 -0
  50. package/dist/{sequenceFactory.js → sequenceFactory.cjs} +3 -3
  51. package/dist/sequenceFactory.cjs.map +1 -0
  52. package/{lib/sharedIntervalCollection.js → dist/sharedIntervalCollection.cjs} +4 -4
  53. package/dist/sharedIntervalCollection.cjs.map +1 -0
  54. package/{lib/sharedSequence.js → dist/sharedSequence.cjs} +2 -2
  55. package/dist/sharedSequence.cjs.map +1 -0
  56. package/{lib/sharedString.js → dist/sharedString.cjs} +3 -3
  57. package/dist/sharedString.cjs.map +1 -0
  58. package/lib/{defaultMap.d.ts → defaultMap.d.mts} +1 -1
  59. package/lib/defaultMap.d.mts.map +1 -0
  60. package/lib/{defaultMap.js → defaultMap.mjs} +19 -23
  61. package/lib/defaultMap.mjs.map +1 -0
  62. package/lib/{defaultMapInterfaces.d.ts → defaultMapInterfaces.d.mts} +1 -1
  63. package/lib/defaultMapInterfaces.d.mts.map +1 -0
  64. package/lib/defaultMapInterfaces.mjs +6 -0
  65. package/lib/{defaultMapInterfaces.js.map → defaultMapInterfaces.mjs.map} +1 -1
  66. package/lib/{index.d.ts → index.d.mts} +11 -23
  67. package/lib/index.d.mts.map +1 -0
  68. package/lib/index.mjs +15 -0
  69. package/lib/index.mjs.map +1 -0
  70. package/lib/{intervalCollection.d.ts → intervalCollection.d.mts} +3 -3
  71. package/lib/intervalCollection.d.mts.map +1 -0
  72. package/lib/{intervalCollection.js → intervalCollection.mjs} +118 -133
  73. package/lib/intervalCollection.mjs.map +1 -0
  74. package/lib/intervalIndex/{endpointInRangeIndex.d.ts → endpointInRangeIndex.d.mts} +3 -3
  75. package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +1 -0
  76. package/lib/intervalIndex/{endpointInRangeIndex.js → endpointInRangeIndex.mjs} +13 -18
  77. package/lib/intervalIndex/endpointInRangeIndex.mjs.map +1 -0
  78. package/lib/intervalIndex/{endpointIndex.d.ts → endpointIndex.d.mts} +3 -3
  79. package/lib/intervalIndex/endpointIndex.d.mts.map +1 -0
  80. package/{dist/intervalIndex/endpointIndex.js → lib/intervalIndex/endpointIndex.mjs} +9 -14
  81. package/lib/intervalIndex/endpointIndex.mjs.map +1 -0
  82. package/lib/intervalIndex/{idIntervalIndex.d.ts → idIntervalIndex.d.mts} +2 -2
  83. package/lib/intervalIndex/idIntervalIndex.d.mts.map +1 -0
  84. package/lib/intervalIndex/{idIntervalIndex.js → idIntervalIndex.mjs} +5 -9
  85. package/lib/intervalIndex/idIntervalIndex.mjs.map +1 -0
  86. package/lib/intervalIndex/{index.d.ts → index.d.mts} +8 -8
  87. package/lib/intervalIndex/index.d.mts.map +1 -0
  88. package/lib/intervalIndex/index.mjs +11 -0
  89. package/{dist/intervalIndex/index.js.map → lib/intervalIndex/index.mjs.map} +1 -1
  90. package/lib/intervalIndex/{intervalIndex.d.ts → intervalIndex.d.mts} +1 -1
  91. package/lib/intervalIndex/intervalIndex.d.mts.map +1 -0
  92. package/lib/intervalIndex/intervalIndex.mjs +6 -0
  93. package/{dist/intervalIndex/intervalIndex.js.map → lib/intervalIndex/intervalIndex.mjs.map} +1 -1
  94. package/{dist/intervalIndex/intervalIndexUtils.js → lib/intervalIndex/intervalIndexUtils.mjs} +5 -9
  95. package/lib/intervalIndex/intervalIndexUtils.mjs.map +1 -0
  96. package/lib/intervalIndex/{overlappingIntervalsIndex.d.ts → overlappingIntervalsIndex.d.mts} +5 -5
  97. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +1 -0
  98. package/{dist/intervalIndex/overlappingIntervalsIndex.js → lib/intervalIndex/overlappingIntervalsIndex.mjs} +11 -16
  99. package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +1 -0
  100. package/lib/intervalIndex/{overlappingSequenceIntervalsIndex.d.ts → overlappingSequenceIntervalsIndex.d.mts} +2 -2
  101. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +1 -0
  102. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs +37 -0
  103. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +1 -0
  104. package/lib/intervalIndex/{sequenceIntervalIndexes.d.ts → sequenceIntervalIndexes.d.mts} +2 -2
  105. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +1 -0
  106. package/lib/intervalIndex/sequenceIntervalIndexes.mjs +6 -0
  107. package/{dist/intervalIndex/sequenceIntervalIndexes.js.map → lib/intervalIndex/sequenceIntervalIndexes.mjs.map} +1 -1
  108. package/lib/intervalIndex/{startpointInRangeIndex.d.ts → startpointInRangeIndex.d.mts} +3 -3
  109. package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +1 -0
  110. package/{dist/intervalIndex/startpointInRangeIndex.js → lib/intervalIndex/startpointInRangeIndex.mjs} +13 -18
  111. package/lib/intervalIndex/startpointInRangeIndex.mjs.map +1 -0
  112. package/lib/{intervalTree.d.ts → intervalTree.d.mts} +1 -1
  113. package/lib/intervalTree.d.mts.map +1 -0
  114. package/{dist/intervalTree.js → lib/intervalTree.mjs} +5 -10
  115. package/lib/intervalTree.mjs.map +1 -0
  116. package/lib/intervals/{index.d.ts → index.d.mts} +3 -3
  117. package/lib/intervals/index.d.mts.map +1 -0
  118. package/lib/intervals/index.mjs +8 -0
  119. package/lib/intervals/index.mjs.map +1 -0
  120. package/lib/intervals/{interval.d.ts → interval.d.mts} +2 -2
  121. package/lib/intervals/{interval.d.ts.map → interval.d.mts.map} +1 -1
  122. package/{dist/intervals/interval.js → lib/intervals/interval.mjs} +14 -19
  123. package/lib/intervals/interval.mjs.map +1 -0
  124. package/lib/intervals/{intervalUtils.d.ts → intervalUtils.d.mts} +1 -1
  125. package/lib/intervals/intervalUtils.d.mts.map +1 -0
  126. package/{dist/intervals/intervalUtils.js → lib/intervals/intervalUtils.mjs} +14 -21
  127. package/lib/intervals/intervalUtils.mjs.map +1 -0
  128. package/lib/intervals/{sequenceInterval.d.ts → sequenceInterval.d.mts} +2 -2
  129. package/lib/intervals/sequenceInterval.d.mts.map +1 -0
  130. package/{dist/intervals/sequenceInterval.js → lib/intervals/sequenceInterval.mjs} +60 -68
  131. package/lib/intervals/sequenceInterval.mjs.map +1 -0
  132. package/lib/{localValues.d.ts → localValues.d.mts} +2 -2
  133. package/lib/localValues.d.mts.map +1 -0
  134. package/lib/{localValues.js → localValues.mjs} +5 -10
  135. package/lib/localValues.mjs.map +1 -0
  136. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
  137. package/lib/packageVersion.mjs +9 -0
  138. package/lib/packageVersion.mjs.map +1 -0
  139. package/lib/{revertibles.d.ts → revertibles.d.mts} +3 -3
  140. package/lib/revertibles.d.mts.map +1 -0
  141. package/{dist/revertibles.js → lib/revertibles.mjs} +60 -72
  142. package/lib/revertibles.mjs.map +1 -0
  143. package/lib/{sequence.d.ts → sequence.d.mts} +4 -4
  144. package/lib/sequence.d.mts.map +1 -0
  145. package/lib/{sequence.js → sequence.mjs} +40 -46
  146. package/lib/sequence.mjs.map +1 -0
  147. package/lib/sequenceDeltaEvent.d.mts.map +1 -0
  148. package/{dist/sequenceDeltaEvent.js → lib/sequenceDeltaEvent.mjs} +8 -15
  149. package/lib/sequenceDeltaEvent.mjs.map +1 -0
  150. package/lib/{sequenceFactory.d.ts → sequenceFactory.d.mts} +1 -1
  151. package/lib/sequenceFactory.d.mts.map +1 -0
  152. package/lib/{sequenceFactory.js → sequenceFactory.mjs} +10 -14
  153. package/lib/sequenceFactory.mjs.map +1 -0
  154. package/lib/{sharedIntervalCollection.d.ts → sharedIntervalCollection.d.mts} +2 -2
  155. package/lib/sharedIntervalCollection.d.mts.map +1 -0
  156. package/{dist/sharedIntervalCollection.js → lib/sharedIntervalCollection.mjs} +14 -19
  157. package/lib/sharedIntervalCollection.mjs.map +1 -0
  158. package/lib/{sharedSequence.d.ts → sharedSequence.d.mts} +1 -1
  159. package/lib/sharedSequence.d.mts.map +1 -0
  160. package/{dist/sharedSequence.js → lib/sharedSequence.mjs} +7 -12
  161. package/lib/sharedSequence.mjs.map +1 -0
  162. package/lib/{sharedString.d.ts → sharedString.d.mts} +2 -2
  163. package/lib/sharedString.d.mts.map +1 -0
  164. package/{dist/sharedString.js → lib/sharedString.mjs} +17 -22
  165. package/lib/sharedString.mjs.map +1 -0
  166. package/package.json +38 -23
  167. package/sequence.test-files.tar +0 -0
  168. package/src/packageVersion.ts +1 -1
  169. package/tsc-multi.test.json +10 -0
  170. package/dist/defaultMap.js.map +0 -1
  171. package/dist/defaultMapInterfaces.js +0 -7
  172. package/dist/defaultMapInterfaces.js.map +0 -1
  173. package/dist/index.js.map +0 -1
  174. package/dist/intervalCollection.js.map +0 -1
  175. package/dist/intervalIndex/endpointInRangeIndex.js.map +0 -1
  176. package/dist/intervalIndex/endpointIndex.js.map +0 -1
  177. package/dist/intervalIndex/idIntervalIndex.js.map +0 -1
  178. package/dist/intervalIndex/index.js +0 -24
  179. package/dist/intervalIndex/intervalIndexUtils.js.map +0 -1
  180. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +0 -1
  181. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +0 -41
  182. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +0 -1
  183. package/dist/intervalIndex/startpointInRangeIndex.js.map +0 -1
  184. package/dist/intervalTree.js.map +0 -1
  185. package/dist/intervals/index.js +0 -23
  186. package/dist/intervals/index.js.map +0 -1
  187. package/dist/intervals/interval.js.map +0 -1
  188. package/dist/intervals/intervalUtils.js.map +0 -1
  189. package/dist/intervals/sequenceInterval.js.map +0 -1
  190. package/dist/localValues.js.map +0 -1
  191. package/dist/packageVersion.js +0 -12
  192. package/dist/packageVersion.js.map +0 -1
  193. package/dist/revertibles.js.map +0 -1
  194. package/dist/sequence.js.map +0 -1
  195. package/dist/sequenceDeltaEvent.js.map +0 -1
  196. package/dist/sequenceFactory.js.map +0 -1
  197. package/dist/sharedIntervalCollection.js.map +0 -1
  198. package/dist/sharedSequence.js.map +0 -1
  199. package/dist/sharedString.js.map +0 -1
  200. package/lib/defaultMap.d.ts.map +0 -1
  201. package/lib/defaultMap.js.map +0 -1
  202. package/lib/defaultMapInterfaces.d.ts.map +0 -1
  203. package/lib/defaultMapInterfaces.js +0 -7
  204. package/lib/index.d.ts.map +0 -1
  205. package/lib/index.js +0 -50
  206. package/lib/index.js.map +0 -1
  207. package/lib/intervalCollection.d.ts.map +0 -1
  208. package/lib/intervalCollection.js.map +0 -1
  209. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +0 -1
  210. package/lib/intervalIndex/endpointInRangeIndex.js.map +0 -1
  211. package/lib/intervalIndex/endpointIndex.d.ts.map +0 -1
  212. package/lib/intervalIndex/endpointIndex.js.map +0 -1
  213. package/lib/intervalIndex/idIntervalIndex.d.ts.map +0 -1
  214. package/lib/intervalIndex/idIntervalIndex.js.map +0 -1
  215. package/lib/intervalIndex/index.d.ts.map +0 -1
  216. package/lib/intervalIndex/index.js.map +0 -1
  217. package/lib/intervalIndex/intervalIndex.d.ts.map +0 -1
  218. package/lib/intervalIndex/intervalIndex.js.map +0 -1
  219. package/lib/intervalIndex/intervalIndexUtils.js.map +0 -1
  220. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +0 -1
  221. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +0 -1
  222. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +0 -1
  223. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +0 -1
  224. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +0 -1
  225. package/lib/intervalIndex/sequenceIntervalIndexes.js +0 -7
  226. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +0 -1
  227. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +0 -1
  228. package/lib/intervalIndex/startpointInRangeIndex.js.map +0 -1
  229. package/lib/intervalTree.d.ts.map +0 -1
  230. package/lib/intervalTree.js.map +0 -1
  231. package/lib/intervals/index.d.ts.map +0 -1
  232. package/lib/intervals/index.js.map +0 -1
  233. package/lib/intervals/interval.js.map +0 -1
  234. package/lib/intervals/intervalUtils.d.ts.map +0 -1
  235. package/lib/intervals/intervalUtils.js.map +0 -1
  236. package/lib/intervals/sequenceInterval.d.ts.map +0 -1
  237. package/lib/intervals/sequenceInterval.js.map +0 -1
  238. package/lib/localValues.d.ts.map +0 -1
  239. package/lib/localValues.js.map +0 -1
  240. package/lib/packageVersion.js.map +0 -1
  241. package/lib/revertibles.d.ts.map +0 -1
  242. package/lib/revertibles.js.map +0 -1
  243. package/lib/sequence.d.ts.map +0 -1
  244. package/lib/sequence.js.map +0 -1
  245. package/lib/sequenceDeltaEvent.d.ts.map +0 -1
  246. package/lib/sequenceDeltaEvent.js.map +0 -1
  247. package/lib/sequenceFactory.d.ts.map +0 -1
  248. package/lib/sequenceFactory.js.map +0 -1
  249. package/lib/sharedIntervalCollection.d.ts.map +0 -1
  250. package/lib/sharedIntervalCollection.js.map +0 -1
  251. package/lib/sharedSequence.d.ts.map +0 -1
  252. package/lib/sharedSequence.js.map +0 -1
  253. package/lib/sharedString.d.ts.map +0 -1
  254. package/lib/sharedString.js.map +0 -1
  255. package/tsconfig.esnext.json +0 -6
  256. /package/lib/intervalIndex/{intervalIndexUtils.d.ts → intervalIndexUtils.d.mts} +0 -0
  257. /package/lib/intervalIndex/{intervalIndexUtils.d.ts.map → intervalIndexUtils.d.mts.map} +0 -0
  258. /package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +0 -0
  259. /package/lib/{sequence-alpha.d.ts → sequence-alpha.d.mts} +0 -0
  260. /package/lib/{sequence-beta.d.ts → sequence-beta.d.mts} +0 -0
  261. /package/lib/{sequence-public.d.ts → sequence-public.d.mts} +0 -0
  262. /package/lib/{sequence-untrimmed.d.ts → sequence-untrimmed.d.mts} +0 -0
  263. /package/lib/{sequenceDeltaEvent.d.ts → sequenceDeltaEvent.d.mts} +0 -0
@@ -1,22 +1,18 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.compareOverrideables = exports.forceCompare = void 0;
8
5
  /**
9
6
  * Interface for intervals that have comparison override properties.
10
7
  */
11
- exports.forceCompare = Symbol();
8
+ export const forceCompare = Symbol();
12
9
  /**
13
10
  * Compares two objects based on their comparison override properties.
14
11
  * @returns A number indicating the order of the intervals (negative for a is lower than b, 0 for tie, positive for a is greater than b).
15
12
  */
16
- function compareOverrideables(a, b) {
17
- const forceCompareA = a[exports.forceCompare] ?? 0;
18
- const forceCompareB = b[exports.forceCompare] ?? 0;
13
+ export function compareOverrideables(a, b) {
14
+ const forceCompareA = a[forceCompare] ?? 0;
15
+ const forceCompareB = b[forceCompare] ?? 0;
19
16
  return forceCompareA - forceCompareB;
20
17
  }
21
- exports.compareOverrideables = compareOverrideables;
22
- //# sourceMappingURL=intervalIndexUtils.js.map
18
+ //# sourceMappingURL=intervalIndexUtils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalIndexUtils.mjs","sourceRoot":"","sources":["../../src/intervalIndex/intervalIndexUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;AAMrC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CACnC,CAAiC,EACjC,CAAiC;IAEjC,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAE3C,OAAO,aAAa,GAAG,aAAa,CAAC;AACtC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Interface for intervals that have comparison override properties.\n */\nexport const forceCompare = Symbol();\n\nexport interface HasComparisonOverride {\n\t[forceCompare]: number;\n}\n\n/**\n * Compares two objects based on their comparison override properties.\n * @returns A number indicating the order of the intervals (negative for a is lower than b, 0 for tie, positive for a is greater than b).\n */\nexport function compareOverrideables(\n\ta: Partial<HasComparisonOverride>,\n\tb: Partial<HasComparisonOverride>,\n): number {\n\tconst forceCompareA = a[forceCompare] ?? 0;\n\tconst forceCompareB = b[forceCompare] ?? 0;\n\n\treturn forceCompareA - forceCompareB;\n}\n"]}
@@ -3,11 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { Client } from "@fluidframework/merge-tree";
6
- import { IIntervalHelpers, ISerializableInterval, SequenceInterval } from "../intervals";
7
- import { IntervalTree } from "../intervalTree";
8
- import { SharedString } from "../sharedString";
9
- import { SequencePlace } from "../intervalCollection";
10
- import { IntervalIndex } from "./intervalIndex";
6
+ import { IIntervalHelpers, ISerializableInterval, SequenceInterval } from "../intervals/index.mjs";
7
+ import { IntervalTree } from "../intervalTree.mjs";
8
+ import { SharedString } from "../sharedString.mjs";
9
+ import { SequencePlace } from "../intervalCollection.mjs";
10
+ import { IntervalIndex } from "./intervalIndex.mjs";
11
11
  /**
12
12
  * @internal
13
13
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlappingIntervalsIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/overlappingIntervalsIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAGI,EAAE,MAAM,EAAE,MAAM,4BAA4B;OAC5C,EAEN,gBAAgB,EAChB,qBAAqB,EAErB,gBAAgB,EAChB;OACM,EAAgB,YAAY,EAAE;OAC9B,EAAE,YAAY,EAAE;OAChB,EAAE,aAAa,EAAsB;OACrC,EAAE,aAAa,EAAE;AAExB;;GAEG;AACH,MAAM,WAAW,0BAA0B,CAAC,SAAS,SAAS,qBAAqB,CAClF,SAAQ,aAAa,CAAC,SAAS,CAAC;IAChC;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAAC;IAEhF;;OAEG;IACH,sBAAsB,CACrB,OAAO,EAAE,SAAS,EAAE,EACpB,eAAe,EAAE,OAAO,EACxB,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,GACjB,IAAI,CAAC;CACR;AAED;;GAEG;AACH,qBAAa,yBAAyB,CAAC,SAAS,SAAS,qBAAqB,CAC7E,YAAW,0BAA0B,CAAC,SAAS,CAAC;IAEhD,SAAS,CAAC,QAAQ,CAAC,YAAY,0BAAiC;IAChE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAE5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC;IAKzD,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,IAAI;IAIrC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO;IAI7C,sBAAsB,CAC5B,OAAO,EAAE,SAAS,EAAE,EACpB,eAAe,EAAE,OAAO,EACxB,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,GACjB,IAAI;IA6EA,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE;IAuB/E,MAAM,CAAC,QAAQ,EAAE,SAAS;IAI1B,GAAG,CAAC,QAAQ,EAAE,SAAS;CAG9B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC9C,YAAY,EAAE,YAAY,GACxB,0BAA0B,CAAC,gBAAgB,CAAC,CAG9C"}
@@ -1,20 +1,17 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
5
  /* eslint-disable import/no-deprecated */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createOverlappingIntervalsIndex = exports.OverlappingIntervalsIndex = void 0;
9
- const intervals_1 = require("../intervals");
10
- const intervalTree_1 = require("../intervalTree");
11
- const intervalCollection_1 = require("../intervalCollection");
6
+ import { IntervalType, sequenceIntervalHelpers, } from "../intervals/index.mjs";
7
+ import { IntervalTree } from "../intervalTree.mjs";
8
+ import { endpointPosAndSide } from "../intervalCollection.mjs";
12
9
  /**
13
10
  * @public
14
11
  */
15
- class OverlappingIntervalsIndex {
12
+ export class OverlappingIntervalsIndex {
16
13
  constructor(client, helpers) {
17
- this.intervalTree = new intervalTree_1.IntervalTree();
14
+ this.intervalTree = new IntervalTree();
18
15
  this.client = client;
19
16
  this.helpers = helpers;
20
17
  }
@@ -42,7 +39,7 @@ class OverlappingIntervalsIndex {
42
39
  }
43
40
  }
44
41
  else {
45
- const transientInterval = this.helpers.create("transient", start ?? "start", end ?? "end", this.client, intervals_1.IntervalType.Transient);
42
+ const transientInterval = this.helpers.create("transient", start ?? "start", end ?? "end", this.client, IntervalType.Transient);
46
43
  if (start === undefined) {
47
44
  // Only end position provided. Since the tree is not sorted by end position,
48
45
  // walk the whole tree in the specified order, gathering intervals that match the end.
@@ -86,14 +83,14 @@ class OverlappingIntervalsIndex {
86
83
  }
87
84
  }
88
85
  findOverlappingIntervals(start, end) {
89
- const { startPos, endPos } = (0, intervalCollection_1.endpointPosAndSide)(start, end);
86
+ const { startPos, endPos } = endpointPosAndSide(start, end);
90
87
  if (startPos === undefined ||
91
88
  endPos === undefined ||
92
89
  endPos < startPos ||
93
90
  this.intervalTree.intervals.isEmpty()) {
94
91
  return [];
95
92
  }
96
- const transientInterval = this.helpers.create("transient", start, end, this.client, intervals_1.IntervalType.Transient);
93
+ const transientInterval = this.helpers.create("transient", start, end, this.client, IntervalType.Transient);
97
94
  const overlappingIntervalNodes = this.intervalTree.match(transientInterval);
98
95
  return overlappingIntervalNodes.map((node) => node.key);
99
96
  }
@@ -104,13 +101,11 @@ class OverlappingIntervalsIndex {
104
101
  this.intervalTree.put(interval);
105
102
  }
106
103
  }
107
- exports.OverlappingIntervalsIndex = OverlappingIntervalsIndex;
108
104
  /**
109
105
  * @internal
110
106
  */
111
- function createOverlappingIntervalsIndex(sharedString) {
107
+ export function createOverlappingIntervalsIndex(sharedString) {
112
108
  const client = sharedString.client;
113
- return new OverlappingIntervalsIndex(client, intervals_1.sequenceIntervalHelpers);
109
+ return new OverlappingIntervalsIndex(client, sequenceIntervalHelpers);
114
110
  }
115
- exports.createOverlappingIntervalsIndex = createOverlappingIntervalsIndex;
116
- //# sourceMappingURL=overlappingIntervalsIndex.js.map
111
+ //# sourceMappingURL=overlappingIntervalsIndex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlappingIntervalsIndex.mjs","sourceRoot":"","sources":["../../src/intervalIndex/overlappingIntervalsIndex.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable import/no-deprecated */\n\nimport { Client } from \"@fluidframework/merge-tree\";\nimport {\n\tIntervalType,\n\tIIntervalHelpers,\n\tISerializableInterval,\n\tsequenceIntervalHelpers,\n\tSequenceInterval,\n} from \"../intervals\";\nimport { IntervalNode, IntervalTree } from \"../intervalTree\";\nimport { SharedString } from \"../sharedString\";\nimport { SequencePlace, endpointPosAndSide } from \"../intervalCollection\";\nimport { IntervalIndex } from \"./intervalIndex\";\n\n/**\n * @internal\n */\nexport interface IOverlappingIntervalsIndex<TInterval extends ISerializableInterval>\n\textends IntervalIndex<TInterval> {\n\t/**\n\t * @returns an array of all intervals contained in this collection that overlap the range\n\t * `[start end]`.\n\t */\n\tfindOverlappingIntervals(start: SequencePlace, end: SequencePlace): TInterval[];\n\n\t/**\n\t * Gathers the interval results based on specified parameters.\n\t */\n\tgatherIterationResults(\n\t\tresults: TInterval[],\n\t\titeratesForward: boolean,\n\t\tstart?: SequencePlace,\n\t\tend?: SequencePlace,\n\t): void;\n}\n\n/**\n * @public\n */\nexport class OverlappingIntervalsIndex<TInterval extends ISerializableInterval>\n\timplements IOverlappingIntervalsIndex<TInterval>\n{\n\tprotected readonly intervalTree = new IntervalTree<TInterval>();\n\tprotected readonly client: Client;\n\tprotected readonly helpers: IIntervalHelpers<TInterval>;\n\n\tconstructor(client: Client, helpers: IIntervalHelpers<TInterval>) {\n\t\tthis.client = client;\n\t\tthis.helpers = helpers;\n\t}\n\n\tpublic map(fn: (interval: TInterval) => void) {\n\t\tthis.intervalTree.map(fn);\n\t}\n\n\tpublic mapUntil(fn: (interval: TInterval) => boolean) {\n\t\tthis.intervalTree.mapUntil(fn);\n\t}\n\n\tpublic gatherIterationResults(\n\t\tresults: TInterval[],\n\t\titeratesForward: boolean,\n\t\tstart?: SequencePlace,\n\t\tend?: SequencePlace,\n\t): void {\n\t\tif (this.intervalTree.intervals.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (start === undefined && end === undefined) {\n\t\t\t// No start/end provided. Gather the whole tree in the specified order.\n\t\t\tif (iteratesForward) {\n\t\t\t\tthis.intervalTree.map((interval: TInterval) => {\n\t\t\t\t\tresults.push(interval);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.intervalTree.mapBackward((interval: TInterval) => {\n\t\t\t\t\tresults.push(interval);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconst transientInterval: TInterval = this.helpers.create(\n\t\t\t\t\"transient\",\n\t\t\t\tstart ?? \"start\",\n\t\t\t\tend ?? \"end\",\n\t\t\t\tthis.client,\n\t\t\t\tIntervalType.Transient,\n\t\t\t);\n\n\t\t\tif (start === undefined) {\n\t\t\t\t// Only end position provided. Since the tree is not sorted by end position,\n\t\t\t\t// walk the whole tree in the specified order, gathering intervals that match the end.\n\t\t\t\tif (iteratesForward) {\n\t\t\t\t\tthis.intervalTree.map((interval: TInterval) => {\n\t\t\t\t\t\tif (transientInterval.compareEnd(interval) === 0) {\n\t\t\t\t\t\t\tresults.push(interval);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.intervalTree.mapBackward((interval: TInterval) => {\n\t\t\t\t\t\tif (transientInterval.compareEnd(interval) === 0) {\n\t\t\t\t\t\t\tresults.push(interval);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Start and (possibly) end provided. Walk the subtrees that may contain\n\t\t\t\t// this start position.\n\t\t\t\tconst compareFn =\n\t\t\t\t\tend === undefined\n\t\t\t\t\t\t? (node: IntervalNode<TInterval>) => {\n\t\t\t\t\t\t\t\treturn transientInterval.compareStart(node.key);\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: (node: IntervalNode<TInterval>) => {\n\t\t\t\t\t\t\t\treturn transientInterval.compare(node.key);\n\t\t\t\t\t\t };\n\t\t\t\tconst continueLeftFn = (cmpResult: number) => cmpResult <= 0;\n\t\t\t\tconst continueRightFn = (cmpResult: number) => cmpResult >= 0;\n\t\t\t\tconst actionFn = (node: IntervalNode<TInterval>) => {\n\t\t\t\t\tresults.push(node.key);\n\t\t\t\t};\n\n\t\t\t\tif (iteratesForward) {\n\t\t\t\t\tthis.intervalTree.intervals.walkExactMatchesForward(\n\t\t\t\t\t\tcompareFn,\n\t\t\t\t\t\tactionFn,\n\t\t\t\t\t\tcontinueLeftFn,\n\t\t\t\t\t\tcontinueRightFn,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.intervalTree.intervals.walkExactMatchesBackward(\n\t\t\t\t\t\tcompareFn,\n\t\t\t\t\t\tactionFn,\n\t\t\t\t\t\tcontinueLeftFn,\n\t\t\t\t\t\tcontinueRightFn,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic findOverlappingIntervals(start: SequencePlace, end: SequencePlace): TInterval[] {\n\t\tconst { startPos, endPos } = endpointPosAndSide(start, end);\n\n\t\tif (\n\t\t\tstartPos === undefined ||\n\t\t\tendPos === undefined ||\n\t\t\tendPos < startPos ||\n\t\t\tthis.intervalTree.intervals.isEmpty()\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\tconst transientInterval = this.helpers.create(\n\t\t\t\"transient\",\n\t\t\tstart,\n\t\t\tend,\n\t\t\tthis.client,\n\t\t\tIntervalType.Transient,\n\t\t);\n\n\t\tconst overlappingIntervalNodes = this.intervalTree.match(transientInterval);\n\t\treturn overlappingIntervalNodes.map((node) => node.key);\n\t}\n\n\tpublic remove(interval: TInterval) {\n\t\tthis.intervalTree.removeExisting(interval);\n\t}\n\n\tpublic add(interval: TInterval) {\n\t\tthis.intervalTree.put(interval);\n\t}\n}\n\n/**\n * @internal\n */\nexport function createOverlappingIntervalsIndex(\n\tsharedString: SharedString,\n): IOverlappingIntervalsIndex<SequenceInterval> {\n\tconst client = (sharedString as unknown as { client: Client }).client;\n\treturn new OverlappingIntervalsIndex<SequenceInterval>(client, sequenceIntervalHelpers);\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { SharedString } from "../sharedString";
6
- import { SequenceIntervalIndexes } from "./sequenceIntervalIndexes";
5
+ import { SharedString } from "../sharedString.mjs";
6
+ import { SequenceIntervalIndexes } from "./sequenceIntervalIndexes.mjs";
7
7
  /**
8
8
  * @internal
9
9
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlappingSequenceIntervalsIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/overlappingSequenceIntervalsIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAgBI,EAAE,YAAY,EAAE;OAChB,EAAE,uBAAuB,EAAE;AAmDlC;;GAEG;AACH,wBAAgB,uCAAuC,CACtD,YAAY,EAAE,YAAY,GACxB,uBAAuB,CAAC,WAAW,CAGrC"}
@@ -0,0 +1,37 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /* eslint-disable import/no-deprecated */
6
+ import { ReferenceType, compareReferencePositions, reservedRangeLabelsKey, } from "@fluidframework/merge-tree";
7
+ import { sequenceIntervalHelpers, IntervalType, SequenceInterval, createPositionReferenceFromSegoff, } from "../intervals/index.mjs";
8
+ import { OverlappingIntervalsIndex } from "./overlappingIntervalsIndex.mjs";
9
+ /**
10
+ * @public
11
+ */
12
+ class OverlappingSequenceIntervalsIndex extends OverlappingIntervalsIndex {
13
+ constructor(client) {
14
+ super(client, sequenceIntervalHelpers);
15
+ }
16
+ findOverlappingIntervalsBySegoff(startSegoff, endSegoff) {
17
+ if (this.intervalTree.intervals.isEmpty()) {
18
+ return [];
19
+ }
20
+ const startLref = createPositionReferenceFromSegoff(this.client, startSegoff, ReferenceType.Transient);
21
+ const endLref = createPositionReferenceFromSegoff(this.client, endSegoff, ReferenceType.Transient);
22
+ if (compareReferencePositions(startLref, endLref) > 0) {
23
+ return [];
24
+ }
25
+ const transientInterval = new SequenceInterval(this.client, startLref, endLref, IntervalType.Transient, { [reservedRangeLabelsKey]: ["transient"] });
26
+ const overlappingIntervalNodes = this.intervalTree.match(transientInterval);
27
+ return overlappingIntervalNodes.map((node) => node.key);
28
+ }
29
+ }
30
+ /**
31
+ * @internal
32
+ */
33
+ export function createOverlappingSequenceIntervalsIndex(sharedString) {
34
+ const client = sharedString.client;
35
+ return new OverlappingSequenceIntervalsIndex(client);
36
+ }
37
+ //# sourceMappingURL=overlappingSequenceIntervalsIndex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlappingSequenceIntervalsIndex.mjs","sourceRoot":"","sources":["../../src/intervalIndex/overlappingSequenceIntervalsIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,yCAAyC;OAElC,EAGN,aAAa,EACb,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,4BAA4B;OAC5B,EACN,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,iCAAiC,GACjC;OAGM,EAAE,yBAAyB,EAAE;AAEpC;;GAEG;AACH,MAAM,iCACL,SAAQ,yBAA2C;IAGnD,YAAY,MAAc;QACzB,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACxC,CAAC;IAEM,gCAAgC,CACtC,WAA0E,EAC1E,SAAwE;QAExE,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;YAC1C,OAAO,EAAE,CAAC;SACV;QAED,MAAM,SAAS,GAAG,iCAAiC,CAClD,IAAI,CAAC,MAAM,EACX,WAAW,EACX,aAAa,CAAC,SAAS,CACvB,CAAC;QAEF,MAAM,OAAO,GAAG,iCAAiC,CAChD,IAAI,CAAC,MAAM,EACX,SAAS,EACT,aAAa,CAAC,SAAS,CACvB,CAAC;QAEF,IAAI,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;YACtD,OAAO,EAAE,CAAC;SACV;QAED,MAAM,iBAAiB,GAAG,IAAI,gBAAgB,CAC7C,IAAI,CAAC,MAAM,EACX,SAAS,EACT,OAAO,EACP,YAAY,CAAC,SAAS,EACtB,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAC3C,CAAC;QAEF,MAAM,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5E,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;CACD;AAED;;GAEG;AACH,MAAM,UAAU,uCAAuC,CACtD,YAA0B;IAE1B,MAAM,MAAM,GAAI,YAA8C,CAAC,MAAM,CAAC;IACtE,OAAO,IAAI,iCAAiC,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable import/no-deprecated */\n\nimport {\n\tClient,\n\tISegment,\n\tReferenceType,\n\tcompareReferencePositions,\n\treservedRangeLabelsKey,\n} from \"@fluidframework/merge-tree\";\nimport {\n\tsequenceIntervalHelpers,\n\tIntervalType,\n\tSequenceInterval,\n\tcreatePositionReferenceFromSegoff,\n} from \"../intervals\";\nimport { SharedString } from \"../sharedString\";\nimport { SequenceIntervalIndexes } from \"./sequenceIntervalIndexes\";\nimport { OverlappingIntervalsIndex } from \"./overlappingIntervalsIndex\";\n\n/**\n * @public\n */\nclass OverlappingSequenceIntervalsIndex\n\textends OverlappingIntervalsIndex<SequenceInterval>\n\timplements SequenceIntervalIndexes.Overlapping\n{\n\tconstructor(client: Client) {\n\t\tsuper(client, sequenceIntervalHelpers);\n\t}\n\n\tpublic findOverlappingIntervalsBySegoff(\n\t\tstartSegoff: { segment: ISegment | undefined; offset: number | undefined },\n\t\tendSegoff: { segment: ISegment | undefined; offset: number | undefined },\n\t): Iterable<SequenceInterval> {\n\t\tif (this.intervalTree.intervals.isEmpty()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst startLref = createPositionReferenceFromSegoff(\n\t\t\tthis.client,\n\t\t\tstartSegoff,\n\t\t\tReferenceType.Transient,\n\t\t);\n\n\t\tconst endLref = createPositionReferenceFromSegoff(\n\t\t\tthis.client,\n\t\t\tendSegoff,\n\t\t\tReferenceType.Transient,\n\t\t);\n\n\t\tif (compareReferencePositions(startLref, endLref) > 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst transientInterval = new SequenceInterval(\n\t\t\tthis.client,\n\t\t\tstartLref,\n\t\t\tendLref,\n\t\t\tIntervalType.Transient,\n\t\t\t{ [reservedRangeLabelsKey]: [\"transient\"] },\n\t\t);\n\n\t\tconst overlappingIntervalNodes = this.intervalTree.match(transientInterval);\n\t\treturn overlappingIntervalNodes.map((node) => node.key);\n\t}\n}\n\n/**\n * @internal\n */\nexport function createOverlappingSequenceIntervalsIndex(\n\tsharedString: SharedString,\n): SequenceIntervalIndexes.Overlapping {\n\tconst client = (sharedString as unknown as { client: Client }).client;\n\treturn new OverlappingSequenceIntervalsIndex(client);\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { ISegment } from "@fluidframework/merge-tree";
6
- import { SequenceInterval } from "../intervals";
7
- import { IOverlappingIntervalsIndex } from "./overlappingIntervalsIndex";
6
+ import { SequenceInterval } from "../intervals/index.mjs";
7
+ import { IOverlappingIntervalsIndex } from "./overlappingIntervalsIndex.mjs";
8
8
  /**
9
9
  * This namespace contains specialiazations of indexes which support spatial queries
10
10
  * specifically for `SequenceInterval`s.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequenceIntervalIndexes.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/sequenceIntervalIndexes.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,QAAQ,EAAE,MAAM,4BAA4B;OAC9C,EAAE,gBAAgB,EAAE;OACpB,EAAE,0BAA0B,EAAE;AAErC;;;;GAIG;AAEH,yBAAiB,uBAAuB,CAAC;IACxC;;;;;OAKG;IACH,UAAiB,WAAY,SAAQ,0BAA0B,CAAC,gBAAgB,CAAC;QAChF;;;;WAIG;QACH,gCAAgC,CAC/B,WAAW,EAAE;YAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,EAC1E,SAAS,EAAE;YAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,GACtE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;KAC9B;CACD"}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=sequenceIntervalIndexes.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceIntervalIndexes.js","sourceRoot":"","sources":["../../src/intervalIndex/sequenceIntervalIndexes.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISegment } from \"@fluidframework/merge-tree\";\nimport { SequenceInterval } from \"../intervals\";\nimport { IOverlappingIntervalsIndex } from \"./overlappingIntervalsIndex\";\n\n/**\n * This namespace contains specialiazations of indexes which support spatial queries\n * specifically for `SequenceInterval`s.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace SequenceIntervalIndexes {\n\t/**\n\t * Collection of intervals.\n\t *\n\t * Provides additional APIs to support efficiently querying a collection of intervals based on segments and offset.\n\t * @internal\n\t */\n\texport interface Overlapping extends IOverlappingIntervalsIndex<SequenceInterval> {\n\t\t/**\n\t\t * Finds overlapping intervals within the specified range.\n\t\t *\n\t\t * @returns an array of all intervals that overlap with the specified SegOff range (includes both ends)\n\t\t */\n\t\tfindOverlappingIntervalsBySegoff(\n\t\t\tstartSegoff: { segment: ISegment | undefined; offset: number | undefined },\n\t\t\tendSegoff: { segment: ISegment | undefined; offset: number | undefined },\n\t\t): Iterable<SequenceInterval>;\n\t}\n}\n"]}
1
+ {"version":3,"file":"sequenceIntervalIndexes.mjs","sourceRoot":"","sources":["../../src/intervalIndex/sequenceIntervalIndexes.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISegment } from \"@fluidframework/merge-tree\";\nimport { SequenceInterval } from \"../intervals\";\nimport { IOverlappingIntervalsIndex } from \"./overlappingIntervalsIndex\";\n\n/**\n * This namespace contains specialiazations of indexes which support spatial queries\n * specifically for `SequenceInterval`s.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace SequenceIntervalIndexes {\n\t/**\n\t * Collection of intervals.\n\t *\n\t * Provides additional APIs to support efficiently querying a collection of intervals based on segments and offset.\n\t * @internal\n\t */\n\texport interface Overlapping extends IOverlappingIntervalsIndex<SequenceInterval> {\n\t\t/**\n\t\t * Finds overlapping intervals within the specified range.\n\t\t *\n\t\t * @returns an array of all intervals that overlap with the specified SegOff range (includes both ends)\n\t\t */\n\t\tfindOverlappingIntervalsBySegoff(\n\t\t\tstartSegoff: { segment: ISegment | undefined; offset: number | undefined },\n\t\t\tendSegoff: { segment: ISegment | undefined; offset: number | undefined },\n\t\t): Iterable<SequenceInterval>;\n\t}\n}\n"]}
@@ -3,9 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { Client } from "@fluidframework/merge-tree";
6
- import { IIntervalHelpers, ISerializableInterval, SequenceInterval } from "../intervals";
7
- import { SharedString } from "../sharedString";
8
- import { IntervalIndex } from "./intervalIndex";
6
+ import { IIntervalHelpers, ISerializableInterval, SequenceInterval } from "../intervals/index.mjs";
7
+ import { SharedString } from "../sharedString.mjs";
8
+ import { IntervalIndex } from "./intervalIndex.mjs";
9
9
  /**
10
10
  * Collection of intervals.
11
11
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startpointInRangeIndex.d.ts","sourceRoot":"","sources":["../../src/intervalIndex/startpointInRangeIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAGI,EAAE,MAAM,EAAgC,MAAM,4BAA4B;OAC1E,EACN,gBAAgB,EAChB,qBAAqB,EAErB,gBAAgB,EAEhB;OACM,EAAE,YAAY,EAAE;OAChB,EAAE,aAAa,EAAE;AAGxB;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB,CAAC,SAAS,SAAS,qBAAqB,CAC/E,SAAQ,aAAa,CAAC,SAAS,CAAC;IAChC;;OAEG;IACH,kCAAkC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;CAC5E;AAED,qBAAa,sBAAsB,CAAC,SAAS,SAAS,qBAAqB,CAC1E,YAAW,uBAAuB,CAAC,SAAS,CAAC;IAK5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAGZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC;IAwB/C,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAI9B,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAIjC,kCAAkC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;CAiClF;AACD;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,YAAY,EAAE,YAAY,GACxB,uBAAuB,CAAC,gBAAgB,CAAC,CAG3C"}
@@ -1,24 +1,21 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
5
  /* eslint-disable import/no-deprecated */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createStartpointInRangeIndex = exports.StartpointInRangeIndex = void 0;
9
- const merge_tree_1 = require("@fluidframework/merge-tree");
10
- const intervals_1 = require("../intervals");
11
- const intervalIndexUtils_1 = require("./intervalIndexUtils");
12
- class StartpointInRangeIndex {
6
+ import { RedBlackTree } from "@fluidframework/merge-tree";
7
+ import { IntervalType, sequenceIntervalHelpers, } from "../intervals/index.mjs";
8
+ import { compareOverrideables, forceCompare } from "./intervalIndexUtils.mjs";
9
+ export class StartpointInRangeIndex {
13
10
  constructor(client, helpers) {
14
11
  this.client = client;
15
12
  this.helpers = helpers;
16
- this.intervalTree = new merge_tree_1.RedBlackTree((a, b) => {
13
+ this.intervalTree = new RedBlackTree((a, b) => {
17
14
  const compareStartsResult = a.compareStart(b);
18
15
  if (compareStartsResult !== 0) {
19
16
  return compareStartsResult;
20
17
  }
21
- const overrideablesComparison = (0, intervalIndexUtils_1.compareOverrideables)(a, b);
18
+ const overrideablesComparison = compareOverrideables(a, b);
22
19
  if (overrideablesComparison !== 0) {
23
20
  return overrideablesComparison;
24
21
  }
@@ -45,22 +42,20 @@ class StartpointInRangeIndex {
45
42
  results.push(node.data);
46
43
  return true;
47
44
  };
48
- const transientStartInterval = this.helpers.create("transient", start, start, this.client, intervals_1.IntervalType.Transient);
49
- const transientEndInterval = this.helpers.create("transient", end, end, this.client, intervals_1.IntervalType.Transient);
45
+ const transientStartInterval = this.helpers.create("transient", start, start, this.client, IntervalType.Transient);
46
+ const transientEndInterval = this.helpers.create("transient", end, end, this.client, IntervalType.Transient);
50
47
  // Add comparison overrides to the transient intervals
51
- transientStartInterval[intervalIndexUtils_1.forceCompare] = -1;
52
- transientEndInterval[intervalIndexUtils_1.forceCompare] = 1;
48
+ transientStartInterval[forceCompare] = -1;
49
+ transientEndInterval[forceCompare] = 1;
53
50
  this.intervalTree.mapRange(action, results, transientStartInterval, transientEndInterval);
54
51
  return results;
55
52
  }
56
53
  }
57
- exports.StartpointInRangeIndex = StartpointInRangeIndex;
58
54
  /**
59
55
  * @internal
60
56
  */
61
- function createStartpointInRangeIndex(sharedString) {
57
+ export function createStartpointInRangeIndex(sharedString) {
62
58
  const client = sharedString.client;
63
- return new StartpointInRangeIndex(client, intervals_1.sequenceIntervalHelpers);
59
+ return new StartpointInRangeIndex(client, sequenceIntervalHelpers);
64
60
  }
65
- exports.createStartpointInRangeIndex = createStartpointInRangeIndex;
66
- //# sourceMappingURL=startpointInRangeIndex.js.map
61
+ //# sourceMappingURL=startpointInRangeIndex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startpointInRangeIndex.mjs","sourceRoot":"","sources":["../../src/intervalIndex/startpointInRangeIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,yCAAyC;OAElC,EAA0B,YAAY,EAAE,MAAM,4BAA4B;OAC1E,EAGN,YAAY,EAEZ,uBAAuB,GACvB;OAGM,EAAyB,oBAAoB,EAAE,YAAY,EAAE;AAgBpE,MAAM,OAAO,sBAAsB;IAKlC,YACkB,MAAc,EACd,OAAoC;QADpC,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAA6B;QAErD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAuB,CAAC,CAAY,EAAE,CAAY,EAAE,EAAE;YACzF,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,mBAAmB,KAAK,CAAC,EAAE;gBAC9B,OAAO,mBAAmB,CAAC;aAC3B;YAED,MAAM,uBAAuB,GAAG,oBAAoB,CACnD,CAAmC,EACnC,CAAmC,CACnC,CAAC;YACF,IAAI,uBAAuB,KAAK,CAAC,EAAE;gBAClC,OAAO,uBAAuB,CAAC;aAC/B;YACD,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE;gBAC3C,OAAO,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aAC9B;YACD,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,GAAG,CAAC,QAAmB;QAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,QAAmB;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,kCAAkC,CAAC,KAAa,EAAE,GAAW;QACnE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;YAC7D,OAAO,EAAE,CAAC;SACV;QACD,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAyC,CAAC,IAAI,EAAE,EAAE;YAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACjD,WAAW,EACX,KAAK,EACL,KAAK,EACL,IAAI,CAAC,MAAM,EACX,YAAY,CAAC,SAAS,CACtB,CAAC;QAEF,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAC/C,WAAW,EACX,GAAG,EACH,GAAG,EACH,IAAI,CAAC,MAAM,EACX,YAAY,CAAC,SAAS,CACtB,CAAC;QAEF,sDAAsD;QACrD,sBAAyD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,oBAAuD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAE3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC;IAChB,CAAC;CACD;AACD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,YAA0B;IAE1B,MAAM,MAAM,GAAI,YAA8C,CAAC,MAAM,CAAC;IACtE,OAAO,IAAI,sBAAsB,CAAmB,MAAM,EAAE,uBAAuB,CAAC,CAAC;AACtF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable import/no-deprecated */\n\nimport { Client, PropertyAction, RedBlackTree } from \"@fluidframework/merge-tree\";\nimport {\n\tIIntervalHelpers,\n\tISerializableInterval,\n\tIntervalType,\n\tSequenceInterval,\n\tsequenceIntervalHelpers,\n} from \"../intervals\";\nimport { SharedString } from \"../sharedString\";\nimport { IntervalIndex } from \"./intervalIndex\";\nimport { HasComparisonOverride, compareOverrideables, forceCompare } from \"./intervalIndexUtils\";\n\n/**\n * Collection of intervals.\n *\n * Provide additional APIs to support efficiently querying a collection of intervals whose startpoints fall within a specified range.\n * @internal\n */\nexport interface IStartpointInRangeIndex<TInterval extends ISerializableInterval>\n\textends IntervalIndex<TInterval> {\n\t/**\n\t * @returns an array of all intervals contained in this collection whose startpoints locate in the range [start, end] (includes both ends)\n\t */\n\tfindIntervalsWithStartpointInRange(start: number, end: number): TInterval[];\n}\n\nexport class StartpointInRangeIndex<TInterval extends ISerializableInterval>\n\timplements IStartpointInRangeIndex<TInterval>\n{\n\tprivate readonly intervalTree;\n\n\tconstructor(\n\t\tprivate readonly client: Client,\n\t\tprivate readonly helpers: IIntervalHelpers<TInterval>,\n\t) {\n\t\tthis.intervalTree = new RedBlackTree<TInterval, TInterval>((a: TInterval, b: TInterval) => {\n\t\t\tconst compareStartsResult = a.compareStart(b);\n\t\t\tif (compareStartsResult !== 0) {\n\t\t\t\treturn compareStartsResult;\n\t\t\t}\n\n\t\t\tconst overrideablesComparison = compareOverrideables(\n\t\t\t\ta as Partial<HasComparisonOverride>,\n\t\t\t\tb as Partial<HasComparisonOverride>,\n\t\t\t);\n\t\t\tif (overrideablesComparison !== 0) {\n\t\t\t\treturn overrideablesComparison;\n\t\t\t}\n\t\t\tconst aId = a.getIntervalId();\n\t\t\tconst bId = b.getIntervalId();\n\t\t\tif (aId !== undefined && bId !== undefined) {\n\t\t\t\treturn aId.localeCompare(bId);\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tpublic add(interval: TInterval): void {\n\t\tthis.intervalTree.put(interval, interval);\n\t}\n\n\tpublic remove(interval: TInterval): void {\n\t\tthis.intervalTree.remove(interval);\n\t}\n\n\tpublic findIntervalsWithStartpointInRange(start: number, end: number): TInterval[] {\n\t\tif (start <= 0 || start > end || this.intervalTree.isEmpty()) {\n\t\t\treturn [];\n\t\t}\n\t\tconst results: TInterval[] = [];\n\t\tconst action: PropertyAction<TInterval, TInterval> = (node) => {\n\t\t\tresults.push(node.data);\n\t\t\treturn true;\n\t\t};\n\n\t\tconst transientStartInterval = this.helpers.create(\n\t\t\t\"transient\",\n\t\t\tstart,\n\t\t\tstart,\n\t\t\tthis.client,\n\t\t\tIntervalType.Transient,\n\t\t);\n\n\t\tconst transientEndInterval = this.helpers.create(\n\t\t\t\"transient\",\n\t\t\tend,\n\t\t\tend,\n\t\t\tthis.client,\n\t\t\tIntervalType.Transient,\n\t\t);\n\n\t\t// Add comparison overrides to the transient intervals\n\t\t(transientStartInterval as Partial<HasComparisonOverride>)[forceCompare] = -1;\n\t\t(transientEndInterval as Partial<HasComparisonOverride>)[forceCompare] = 1;\n\n\t\tthis.intervalTree.mapRange(action, results, transientStartInterval, transientEndInterval);\n\t\treturn results;\n\t}\n}\n/**\n * @internal\n */\nexport function createStartpointInRangeIndex(\n\tsharedString: SharedString,\n): IStartpointInRangeIndex<SequenceInterval> {\n\tconst client = (sharedString as unknown as { client: Client }).client;\n\treturn new StartpointInRangeIndex<SequenceInterval>(client, sequenceIntervalHelpers);\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { IIntegerRange, RBNode, IRBAugmentation, IRBMatcher, RedBlackTree } from "@fluidframework/merge-tree";
6
- import { IInterval } from "./intervals";
6
+ import { IInterval } from "./intervals/index.mjs";
7
7
  export interface AugmentedIntervalNode {
8
8
  minmax: IInterval;
9
9
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalTree.d.ts","sourceRoot":"","sources":["../src/intervalTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EACN,aAAa,EACb,MAAM,EACN,eAAe,EACf,UAAU,EACV,YAAY,EAEZ,MAAM,4BAA4B;OAC5B,EAAE,SAAS,EAAE;AAEpB,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,UAAW,aAAa,WAAoC,CAAC;AAI9F,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAEjF,qBAAa,YAAY,CAAC,CAAC,SAAS,SAAS,CAC5C,YAAW,eAAe,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,qBAAqB,CAAC;IAEnF,SAAS,yCAAsE;IAE/E,MAAM,CAAC,CAAC,EAAE,CAAC;IAIX,cAAc,CAAC,CAAC,EAAE,CAAC;IAInB,GAAG,CAAC,CAAC,EAAE,CAAC;IAIR,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;IAWtB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO;IAU9B,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;IAY9B,KAAK,CAAC,CAAC,EAAE,CAAC;IAIV,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;IAInD,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;IAIzD,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;CAanC"}
@@ -1,17 +1,13 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.IntervalTree = exports.integerRangeToString = void 0;
8
- const merge_tree_1 = require("@fluidframework/merge-tree");
9
- const integerRangeToString = (range) => `[${range.start},${range.end})`;
10
- exports.integerRangeToString = integerRangeToString;
5
+ import { RedBlackTree, } from "@fluidframework/merge-tree";
6
+ export const integerRangeToString = (range) => `[${range.start},${range.end})`;
11
7
  const intervalComparer = (a, b) => a.compare(b);
12
- class IntervalTree {
8
+ export class IntervalTree {
13
9
  constructor() {
14
- this.intervals = new merge_tree_1.RedBlackTree(intervalComparer, this);
10
+ this.intervals = new RedBlackTree(intervalComparer, this);
15
11
  }
16
12
  remove(x) {
17
13
  this.intervals.remove(x);
@@ -78,5 +74,4 @@ class IntervalTree {
78
74
  }
79
75
  }
80
76
  }
81
- exports.IntervalTree = IntervalTree;
82
- //# sourceMappingURL=intervalTree.js.map
77
+ //# sourceMappingURL=intervalTree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalTree.mjs","sourceRoot":"","sources":["../src/intervalTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\tIIntegerRange,\n\tRBNode,\n\tIRBAugmentation,\n\tIRBMatcher,\n\tRedBlackTree,\n\tRBNodeActions,\n} from \"@fluidframework/merge-tree\";\nimport { IInterval } from \"./intervals\";\n\nexport interface AugmentedIntervalNode {\n\tminmax: IInterval;\n}\n\nexport const integerRangeToString = (range: IIntegerRange) => `[${range.start},${range.end})`;\n\nconst intervalComparer = (a: IInterval, b: IInterval) => a.compare(b);\n\nexport type IntervalNode<T extends IInterval> = RBNode<T, AugmentedIntervalNode>;\n\nexport class IntervalTree<T extends IInterval>\n\timplements IRBAugmentation<T, AugmentedIntervalNode>, IRBMatcher<T, AugmentedIntervalNode>\n{\n\tpublic intervals = new RedBlackTree<T, AugmentedIntervalNode>(intervalComparer, this);\n\n\tpublic remove(x: T) {\n\t\tthis.intervals.remove(x);\n\t}\n\n\tpublic removeExisting(x: T) {\n\t\tthis.intervals.removeExisting(x);\n\t}\n\n\tpublic put(x: T) {\n\t\tthis.intervals.put(x, { minmax: x.clone() });\n\t}\n\n\tpublic map(fn: (x: T) => void) {\n\t\tconst actions: RBNodeActions<T, AugmentedIntervalNode> = {\n\t\t\tinfix: (node) => {\n\t\t\t\tfn(node.key);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tshowStructure: true,\n\t\t};\n\t\tthis.intervals.walk(actions);\n\t}\n\n\tpublic mapUntil(fn: (X: T) => boolean) {\n\t\tconst actions: RBNodeActions<T, AugmentedIntervalNode> = {\n\t\t\tinfix: (node) => {\n\t\t\t\treturn fn(node.key);\n\t\t\t},\n\t\t\tshowStructure: true,\n\t\t};\n\t\tthis.intervals.walk(actions);\n\t}\n\n\tpublic mapBackward(fn: (x: T) => void) {\n\t\tconst actions: RBNodeActions<T, AugmentedIntervalNode> = {\n\t\t\tinfix: (node) => {\n\t\t\t\tfn(node.key);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tshowStructure: true,\n\t\t};\n\t\tthis.intervals.walkBackward(actions);\n\t}\n\n\t// TODO: toString()\n\tpublic match(x: T) {\n\t\treturn this.intervals.gather(x, this);\n\t}\n\n\tpublic matchNode(node: IntervalNode<T> | undefined, key: T) {\n\t\treturn !!node && node.key.overlaps(key);\n\t}\n\n\tpublic continueSubtree(node: IntervalNode<T> | undefined, key: T) {\n\t\treturn !!node && node.data.minmax.overlaps(key);\n\t}\n\n\tpublic update(node: IntervalNode<T>) {\n\t\tif (node.left && node.right) {\n\t\t\tnode.data.minmax = node.key.union(node.left.data.minmax.union(node.right.data.minmax));\n\t\t} else {\n\t\t\tif (node.left) {\n\t\t\t\tnode.data.minmax = node.key.union(node.left.data.minmax);\n\t\t\t} else if (node.right) {\n\t\t\t\tnode.data.minmax = node.key.union(node.right.data.minmax);\n\t\t\t} else {\n\t\t\t\tnode.data.minmax = node.key.clone();\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- export { IInterval, ISerializedInterval, ISerializableInterval, IntervalOpType, IntervalType, IIntervalHelpers, IntervalStickiness, SerializedIntervalDelta, CompressedSerializedInterval, endReferenceSlidingPreference, startReferenceSlidingPreference, } from "./intervalUtils";
6
- export { Interval, createInterval, intervalHelpers } from "./interval";
7
- export { SequenceInterval, createSequenceInterval, createPositionReferenceFromSegoff, sequenceIntervalHelpers, } from "./sequenceInterval";
5
+ export { IInterval, ISerializedInterval, ISerializableInterval, IntervalOpType, IntervalType, IIntervalHelpers, IntervalStickiness, SerializedIntervalDelta, CompressedSerializedInterval, endReferenceSlidingPreference, startReferenceSlidingPreference, } from "./intervalUtils.mjs";
6
+ export { Interval, createInterval, intervalHelpers } from "./interval.mjs";
7
+ export { SequenceInterval, createSequenceInterval, createPositionReferenceFromSegoff, sequenceIntervalHelpers, } from "./sequenceInterval.mjs";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/intervals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EACN,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,GAC/B;OACM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE;OAC7C,EACN,gBAAgB,EAChB,sBAAsB,EACtB,iCAAiC,EACjC,uBAAuB,GACvB"}
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export { IntervalOpType, IntervalType, IntervalStickiness, endReferenceSlidingPreference, startReferenceSlidingPreference, } from "./intervalUtils.mjs";
6
+ export { Interval, createInterval, intervalHelpers } from "./interval.mjs";
7
+ export { SequenceInterval, createSequenceInterval, createPositionReferenceFromSegoff, sequenceIntervalHelpers, } from "./sequenceInterval.mjs";
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/intervals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAIN,cAAc,EACd,YAAY,EAEZ,kBAAkB,EAGlB,6BAA6B,EAC7B,+BAA+B,GAC/B;OACM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE;OAC7C,EACN,gBAAgB,EAChB,sBAAsB,EACtB,iCAAiC,EACjC,uBAAuB,GACvB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tIInterval,\n\tISerializedInterval,\n\tISerializableInterval,\n\tIntervalOpType,\n\tIntervalType,\n\tIIntervalHelpers,\n\tIntervalStickiness,\n\tSerializedIntervalDelta,\n\tCompressedSerializedInterval,\n\tendReferenceSlidingPreference,\n\tstartReferenceSlidingPreference,\n} from \"./intervalUtils\";\nexport { Interval, createInterval, intervalHelpers } from \"./interval\";\nexport {\n\tSequenceInterval,\n\tcreateSequenceInterval,\n\tcreatePositionReferenceFromSegoff,\n\tsequenceIntervalHelpers,\n} from \"./sequenceInterval\";\n"]}
@@ -4,8 +4,8 @@
4
4
  */
5
5
  import { ICombiningOp, PropertiesManager, PropertySet } from "@fluidframework/merge-tree";
6
6
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
- import { SequencePlace } from "../intervalCollection";
8
- import { IIntervalHelpers, ISerializableInterval, ISerializedInterval } from "./intervalUtils";
7
+ import { SequencePlace } from "../intervalCollection.mjs";
8
+ import { IIntervalHelpers, ISerializableInterval, ISerializedInterval } from "./intervalUtils.mjs";
9
9
  /**
10
10
  * Serializable interval whose endpoints are plain-old numbers.
11
11
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../../src/intervals/interval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAGX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI/F;;;GAGG;AACH,qBAAa,QAAS,YAAW,qBAAqB;IAY7C,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IAZnB;;OAEG;IACI,UAAU,EAAE,WAAW,CAAC;IAC/B,KAAK;IACE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAC3C;;OAEG;IACI,eAAe,EAAE,iBAAiB,CAAC;gBAElC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,WAAW;IAUpB;;OAEG;IACI,aAAa,IAAI,MAAM;IAM9B;;OAEG;IACI,yBAAyB,IAAI,WAAW,EAAE;IAIjD;;;;;;;OAOG;IACI,cAAc,CAAC,KAAK,EAAE,WAAW;IAOxC;;OAEG;IACI,SAAS,IAAI,mBAAmB;IAavC;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACI,OAAO,CAAC,CAAC,EAAE,QAAQ;IAsB1B;;OAEG;IACI,YAAY,CAAC,CAAC,EAAE,QAAQ;IAI/B;;OAEG;IACI,UAAU,CAAC,CAAC,EAAE,QAAQ;IAI7B;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,QAAQ;IAK3B;;OAEG;IACI,KAAK,CAAC,CAAC,EAAE,QAAQ;IAQjB,aAAa;IAIpB;;OAEG;IACI,aAAa,CACnB,QAAQ,EAAE,WAAW,EACrB,aAAa,GAAE,OAAe,EAC9B,GAAG,CAAC,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,YAAY,GACf,WAAW,GAAG,SAAS;IAa1B;;OAEG;IACI,MAAM,CACZ,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,EACnB,EAAE,CAAC,EAAE,yBAAyB;IA2B/B,OAAO,CAAC,oBAAoB;CAQ5B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,QAAQ,CAiBhG;AAED,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,QAAQ,CAEtD,CAAC"}
1
+ {"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../../src/intervals/interval.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAGI,EACN,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAGX,MAAM,4BAA4B;OAC5B,EAAE,yBAAyB,EAAE,MAAM,sCAAsC;OAGzE,EAAE,aAAa,EAAE;OACjB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE;AAIvE;;;GAGG;AACH,qBAAa,QAAS,YAAW,qBAAqB;IAY7C,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IAZnB;;OAEG;IACI,UAAU,EAAE,WAAW,CAAC;IAC/B,KAAK;IACE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAC3C;;OAEG;IACI,eAAe,EAAE,iBAAiB,CAAC;gBAElC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,WAAW;IAUpB;;OAEG;IACI,aAAa,IAAI,MAAM;IAM9B;;OAEG;IACI,yBAAyB,IAAI,WAAW,EAAE;IAIjD;;;;;;;OAOG;IACI,cAAc,CAAC,KAAK,EAAE,WAAW;IAOxC;;OAEG;IACI,SAAS,IAAI,mBAAmB;IAavC;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACI,OAAO,CAAC,CAAC,EAAE,QAAQ;IAsB1B;;OAEG;IACI,YAAY,CAAC,CAAC,EAAE,QAAQ;IAI/B;;OAEG;IACI,UAAU,CAAC,CAAC,EAAE,QAAQ;IAI7B;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,QAAQ;IAK3B;;OAEG;IACI,KAAK,CAAC,CAAC,EAAE,QAAQ;IAQjB,aAAa;IAIpB;;OAEG;IACI,aAAa,CACnB,QAAQ,EAAE,WAAW,EACrB,aAAa,GAAE,OAAe,EAC9B,GAAG,CAAC,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,YAAY,GACf,WAAW,GAAG,SAAS;IAa1B;;OAEG;IACI,MAAM,CACZ,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,aAAa,EACrB,GAAG,CAAC,EAAE,aAAa,EACnB,EAAE,CAAC,EAAE,yBAAyB;IA2B/B,OAAO,CAAC,oBAAoB;CAQ5B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,QAAQ,CAiBhG;AAED,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,QAAQ,CAEtD,CAAC"}
@@ -1,24 +1,21 @@
1
- "use strict";
2
1
  /*!
3
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
3
  * Licensed under the MIT License.
5
4
  */
6
5
  /* eslint-disable import/no-deprecated */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.intervalHelpers = exports.createInterval = exports.Interval = void 0;
9
- const merge_tree_1 = require("@fluidframework/merge-tree");
10
- const core_utils_1 = require("@fluidframework/core-utils");
11
- const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
6
+ import { PropertiesManager, createMap, reservedRangeLabelsKey, } from "@fluidframework/merge-tree";
7
+ import { assert } from "@fluidframework/core-utils";
8
+ import { UsageError } from "@fluidframework/telemetry-utils";
12
9
  const reservedIntervalIdKey = "intervalId";
13
10
  /**
14
11
  * Serializable interval whose endpoints are plain-old numbers.
15
12
  * @internal
16
13
  */
17
- class Interval {
14
+ export class Interval {
18
15
  constructor(start, end, props) {
19
16
  this.start = start;
20
17
  this.end = end;
21
- this.propertyManager = new merge_tree_1.PropertiesManager();
18
+ this.propertyManager = new PropertiesManager();
22
19
  this.properties = {};
23
20
  if (props) {
24
21
  this.addProperties(props);
@@ -29,7 +26,7 @@ class Interval {
29
26
  */
30
27
  getIntervalId() {
31
28
  const id = this.properties?.[reservedIntervalIdKey];
32
- (0, core_utils_1.assert)(id !== undefined, 0x5e1 /* interval ID should not be undefined */);
29
+ assert(id !== undefined, 0x5e1 /* interval ID should not be undefined */);
33
30
  return `${id}`;
34
31
  }
35
32
  /**
@@ -141,7 +138,7 @@ class Interval {
141
138
  */
142
139
  modify(label, start, end, op) {
143
140
  if (typeof start === "string" || typeof end === "string") {
144
- throw new telemetry_utils_1.UsageError("The start and end positions of a plain interval may not be on the special endpoint segments.");
141
+ throw new UsageError("The start and end positions of a plain interval may not be on the special endpoint segments.");
145
142
  }
146
143
  const startPos = typeof start === "number" ? start : start?.pos ?? this.start;
147
144
  const endPos = typeof end === "number" ? end : end?.pos ?? this.end;
@@ -158,28 +155,26 @@ class Interval {
158
155
  }
159
156
  initializeProperties() {
160
157
  if (!this.propertyManager) {
161
- this.propertyManager = new merge_tree_1.PropertiesManager();
158
+ this.propertyManager = new PropertiesManager();
162
159
  }
163
160
  if (!this.properties) {
164
- this.properties = (0, merge_tree_1.createMap)();
161
+ this.properties = createMap();
165
162
  }
166
163
  }
167
164
  }
168
- exports.Interval = Interval;
169
- function createInterval(label, start, end) {
165
+ export function createInterval(label, start, end) {
170
166
  if (typeof start === "string" || typeof end === "string") {
171
- throw new telemetry_utils_1.UsageError("The start and end positions of a plain interval may not be on the special endpoint segments.");
167
+ throw new UsageError("The start and end positions of a plain interval may not be on the special endpoint segments.");
172
168
  }
173
169
  const rangeProp = {};
174
170
  if (label && label.length > 0) {
175
- rangeProp[merge_tree_1.reservedRangeLabelsKey] = [label];
171
+ rangeProp[reservedRangeLabelsKey] = [label];
176
172
  }
177
173
  const startPos = typeof start === "number" ? start : start.pos;
178
174
  const endPos = typeof end === "number" ? end : end.pos;
179
175
  return new Interval(startPos, endPos, rangeProp);
180
176
  }
181
- exports.createInterval = createInterval;
182
- exports.intervalHelpers = {
177
+ export const intervalHelpers = {
183
178
  create: createInterval,
184
179
  };
185
- //# sourceMappingURL=interval.js.map
180
+ //# sourceMappingURL=interval.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interval.mjs","sourceRoot":"","sources":["../../src/intervals/interval.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable import/no-deprecated */\n\nimport {\n\tICombiningOp,\n\tPropertiesManager,\n\tPropertySet,\n\tcreateMap,\n\treservedRangeLabelsKey,\n} from \"@fluidframework/merge-tree\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { UsageError } from \"@fluidframework/telemetry-utils\";\nimport { SequencePlace } from \"../intervalCollection\";\nimport { IIntervalHelpers, ISerializableInterval, ISerializedInterval } from \"./intervalUtils\";\n\nconst reservedIntervalIdKey = \"intervalId\";\n\n/**\n * Serializable interval whose endpoints are plain-old numbers.\n * @internal\n */\nexport class Interval implements ISerializableInterval {\n\t/**\n\t * {@inheritDoc ISerializableInterval.properties}\n\t */\n\tpublic properties: PropertySet;\n\t/***/\n\tpublic auxProps: PropertySet[] | undefined;\n\t/**\n\t * {@inheritDoc ISerializableInterval.propertyManager}\n\t */\n\tpublic propertyManager: PropertiesManager;\n\tconstructor(\n\t\tpublic start: number,\n\t\tpublic end: number,\n\t\tprops?: PropertySet,\n\t) {\n\t\tthis.propertyManager = new PropertiesManager();\n\t\tthis.properties = {};\n\n\t\tif (props) {\n\t\t\tthis.addProperties(props);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc ISerializableInterval.getIntervalId}\n\t */\n\tpublic getIntervalId(): string {\n\t\tconst id = this.properties?.[reservedIntervalIdKey];\n\t\tassert(id !== undefined, 0x5e1 /* interval ID should not be undefined */);\n\t\treturn `${id}`;\n\t}\n\n\t/**\n\t * @returns an array containing any auxiliary property sets added with `addPropertySet`.\n\t */\n\tpublic getAdditionalPropertySets(): PropertySet[] {\n\t\treturn this.auxProps ?? [];\n\t}\n\n\t/**\n\t * Adds an auxiliary set of properties to this interval.\n\t * These properties can be recovered using `getAdditionalPropertySets`\n\t * @param props - set of properties to add\n\t * @remarks This gets called as part of the default conflict resolver for `IIntervalCollection<Interval>`\n\t * (i.e. non-sequence-based interval collections). However, the additional properties don't get serialized.\n\t * This functionality seems half-baked.\n\t */\n\tpublic addPropertySet(props: PropertySet) {\n\t\tif (this.auxProps === undefined) {\n\t\t\tthis.auxProps = [];\n\t\t}\n\t\tthis.auxProps.push(props);\n\t}\n\n\t/**\n\t * {@inheritDoc ISerializableInterval.serialize}\n\t */\n\tpublic serialize(): ISerializedInterval {\n\t\tconst serializedInterval: ISerializedInterval = {\n\t\t\tend: this.end,\n\t\t\tintervalType: 0,\n\t\t\tsequenceNumber: 0,\n\t\t\tstart: this.start,\n\t\t};\n\t\tif (this.properties) {\n\t\t\tserializedInterval.properties = this.properties;\n\t\t}\n\t\treturn serializedInterval;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.clone}\n\t */\n\tpublic clone() {\n\t\treturn new Interval(this.start, this.end, this.properties);\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.compare}\n\t */\n\tpublic compare(b: Interval) {\n\t\tconst startResult = this.compareStart(b);\n\t\tif (startResult === 0) {\n\t\t\tconst endResult = this.compareEnd(b);\n\t\t\tif (endResult === 0) {\n\t\t\t\tconst thisId = this.getIntervalId();\n\t\t\t\tif (thisId) {\n\t\t\t\t\tconst bId = b.getIntervalId();\n\t\t\t\t\tif (bId) {\n\t\t\t\t\t\treturn thisId > bId ? 1 : thisId < bId ? -1 : 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn endResult;\n\t\t\t}\n\t\t} else {\n\t\t\treturn startResult;\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.compareStart}\n\t */\n\tpublic compareStart(b: Interval) {\n\t\treturn this.start - b.start;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.compareEnd}\n\t */\n\tpublic compareEnd(b: Interval) {\n\t\treturn this.end - b.end;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.overlaps}\n\t */\n\tpublic overlaps(b: Interval) {\n\t\tconst result = this.start <= b.end && this.end >= b.start;\n\t\treturn result;\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.union}\n\t */\n\tpublic union(b: Interval) {\n\t\treturn new Interval(\n\t\t\tMath.min(this.start, b.start),\n\t\t\tMath.max(this.end, b.end),\n\t\t\tthis.properties,\n\t\t);\n\t}\n\n\tpublic getProperties() {\n\t\treturn this.properties;\n\t}\n\n\t/**\n\t * {@inheritDoc ISerializableInterval.addProperties}\n\t */\n\tpublic addProperties(\n\t\tnewProps: PropertySet,\n\t\tcollaborating: boolean = false,\n\t\tseq?: number,\n\t\top?: ICombiningOp,\n\t): PropertySet | undefined {\n\t\tif (newProps) {\n\t\t\tthis.initializeProperties();\n\t\t\treturn this.propertyManager.addProperties(\n\t\t\t\tthis.properties,\n\t\t\t\tnewProps,\n\t\t\t\top,\n\t\t\t\tseq,\n\t\t\t\tcollaborating,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc IInterval.modify}\n\t */\n\tpublic modify(\n\t\tlabel: string,\n\t\tstart?: SequencePlace,\n\t\tend?: SequencePlace,\n\t\top?: ISequencedDocumentMessage,\n\t) {\n\t\tif (typeof start === \"string\" || typeof end === \"string\") {\n\t\t\tthrow new UsageError(\n\t\t\t\t\"The start and end positions of a plain interval may not be on the special endpoint segments.\",\n\t\t\t);\n\t\t}\n\n\t\tconst startPos = typeof start === \"number\" ? start : start?.pos ?? this.start;\n\t\tconst endPos = typeof end === \"number\" ? end : end?.pos ?? this.end;\n\n\t\tif (this.start === startPos && this.end === endPos) {\n\t\t\t// Return undefined to indicate that no change is necessary.\n\t\t\treturn;\n\t\t}\n\t\tconst newInterval = new Interval(startPos, endPos);\n\t\tif (this.properties) {\n\t\t\tnewInterval.initializeProperties();\n\t\t\tthis.propertyManager.copyTo(\n\t\t\t\tthis.properties,\n\t\t\t\tnewInterval.properties,\n\t\t\t\tnewInterval.propertyManager,\n\t\t\t);\n\t\t}\n\t\treturn newInterval;\n\t}\n\n\tprivate initializeProperties(): void {\n\t\tif (!this.propertyManager) {\n\t\t\tthis.propertyManager = new PropertiesManager();\n\t\t}\n\t\tif (!this.properties) {\n\t\t\tthis.properties = createMap<any>();\n\t\t}\n\t}\n}\n\nexport function createInterval(label: string, start: SequencePlace, end: SequencePlace): Interval {\n\tif (typeof start === \"string\" || typeof end === \"string\") {\n\t\tthrow new UsageError(\n\t\t\t\"The start and end positions of a plain interval may not be on the special endpoint segments.\",\n\t\t);\n\t}\n\n\tconst rangeProp: PropertySet = {};\n\n\tif (label && label.length > 0) {\n\t\trangeProp[reservedRangeLabelsKey] = [label];\n\t}\n\n\tconst startPos = typeof start === \"number\" ? start : start.pos;\n\tconst endPos = typeof end === \"number\" ? end : end.pos;\n\n\treturn new Interval(startPos, endPos, rangeProp);\n}\n\nexport const intervalHelpers: IIntervalHelpers<Interval> = {\n\tcreate: createInterval,\n};\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { Client, PropertiesManager, PropertySet, SlidingPreference } from "@fluidframework/merge-tree";
6
6
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
- import { SequencePlace, Side } from "../intervalCollection";
7
+ import { SequencePlace, Side } from "../intervalCollection.mjs";
8
8
  /**
9
9
  * Basic interval abstraction
10
10
  * @alpha
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalUtils.d.ts","sourceRoot":"","sources":["../../src/intervals/intervalUtils.ts"],"names":[],"mappings":"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"}