@fluidframework/sequence 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.224419

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 (349) hide show
  1. package/.eslintrc.js +9 -11
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +449 -0
  4. package/README.md +364 -183
  5. package/api-extractor-lint.json +4 -0
  6. package/api-extractor.json +2 -2
  7. package/api-report/sequence.api.md +741 -0
  8. package/dist/{defaultMap.js → defaultMap.cjs} +29 -22
  9. package/dist/defaultMap.cjs.map +1 -0
  10. package/dist/defaultMap.d.ts +7 -6
  11. package/dist/defaultMap.d.ts.map +1 -1
  12. package/dist/defaultMapInterfaces.cjs +7 -0
  13. package/dist/defaultMapInterfaces.cjs.map +1 -0
  14. package/dist/defaultMapInterfaces.d.ts +44 -12
  15. package/dist/defaultMapInterfaces.d.ts.map +1 -1
  16. package/dist/index.cjs +60 -0
  17. package/dist/index.cjs.map +1 -0
  18. package/dist/index.d.ts +14 -12
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/intervalCollection.cjs +1159 -0
  21. package/dist/intervalCollection.cjs.map +1 -0
  22. package/dist/intervalCollection.d.ts +461 -162
  23. package/dist/intervalCollection.d.ts.map +1 -1
  24. package/dist/intervalIndex/endpointInRangeIndex.cjs +66 -0
  25. package/dist/intervalIndex/endpointInRangeIndex.cjs.map +1 -0
  26. package/dist/intervalIndex/endpointInRangeIndex.d.ts +34 -0
  27. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -0
  28. package/dist/intervalIndex/endpointIndex.cjs +47 -0
  29. package/dist/intervalIndex/endpointIndex.cjs.map +1 -0
  30. package/dist/intervalIndex/endpointIndex.d.ts +38 -0
  31. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -0
  32. package/dist/intervalIndex/idIntervalIndex.cjs +44 -0
  33. package/dist/intervalIndex/idIntervalIndex.cjs.map +1 -0
  34. package/dist/intervalIndex/idIntervalIndex.d.ts +18 -0
  35. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -0
  36. package/dist/intervalIndex/index.cjs +24 -0
  37. package/dist/intervalIndex/index.cjs.map +1 -0
  38. package/dist/intervalIndex/index.d.ts +13 -0
  39. package/dist/intervalIndex/index.d.ts.map +1 -0
  40. package/dist/{defaultMapInterfaces.js → intervalIndex/intervalIndex.cjs} +1 -1
  41. package/dist/intervalIndex/intervalIndex.cjs.map +1 -0
  42. package/dist/intervalIndex/intervalIndex.d.ts +30 -0
  43. package/dist/intervalIndex/intervalIndex.d.ts.map +1 -0
  44. package/dist/intervalIndex/intervalIndexUtils.cjs +22 -0
  45. package/dist/intervalIndex/intervalIndexUtils.cjs.map +1 -0
  46. package/dist/intervalIndex/intervalIndexUtils.d.ts +17 -0
  47. package/dist/intervalIndex/intervalIndexUtils.d.ts.map +1 -0
  48. package/dist/intervalIndex/overlappingIntervalsIndex.cjs +116 -0
  49. package/dist/intervalIndex/overlappingIntervalsIndex.cjs.map +1 -0
  50. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +44 -0
  51. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -0
  52. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs +41 -0
  53. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.cjs.map +1 -0
  54. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts +11 -0
  55. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -0
  56. package/dist/intervalIndex/sequenceIntervalIndexes.cjs +7 -0
  57. package/dist/intervalIndex/sequenceIntervalIndexes.cjs.map +1 -0
  58. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +35 -0
  59. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -0
  60. package/dist/intervalIndex/startpointInRangeIndex.cjs +66 -0
  61. package/dist/intervalIndex/startpointInRangeIndex.cjs.map +1 -0
  62. package/dist/intervalIndex/startpointInRangeIndex.d.ts +34 -0
  63. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -0
  64. package/dist/intervalTree.cjs +80 -0
  65. package/dist/intervalTree.cjs.map +1 -0
  66. package/dist/intervalTree.d.ts +24 -0
  67. package/dist/intervalTree.d.ts.map +1 -0
  68. package/dist/intervals/index.cjs +23 -0
  69. package/dist/intervals/index.cjs.map +1 -0
  70. package/dist/intervals/index.d.ts +8 -0
  71. package/dist/intervals/index.d.ts.map +1 -0
  72. package/dist/intervals/interval.cjs +181 -0
  73. package/dist/intervals/interval.cjs.map +1 -0
  74. package/dist/intervals/interval.d.ts +84 -0
  75. package/dist/intervals/interval.d.ts.map +1 -0
  76. package/dist/intervals/intervalUtils.cjs +83 -0
  77. package/dist/intervals/intervalUtils.cjs.map +1 -0
  78. package/dist/intervals/intervalUtils.d.ts +230 -0
  79. package/dist/intervals/intervalUtils.d.ts.map +1 -0
  80. package/dist/intervals/sequenceInterval.cjs +378 -0
  81. package/dist/intervals/sequenceInterval.cjs.map +1 -0
  82. package/dist/intervals/sequenceInterval.d.ts +137 -0
  83. package/dist/intervals/sequenceInterval.d.ts.map +1 -0
  84. package/dist/{localValues.js → localValues.cjs} +1 -1
  85. package/dist/localValues.cjs.map +1 -0
  86. package/dist/localValues.d.ts +2 -1
  87. package/dist/localValues.d.ts.map +1 -1
  88. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  89. package/dist/packageVersion.cjs.map +1 -0
  90. package/dist/packageVersion.d.ts +1 -1
  91. package/dist/packageVersion.d.ts.map +1 -1
  92. package/dist/revertibles.cjs +425 -0
  93. package/dist/revertibles.cjs.map +1 -0
  94. package/dist/revertibles.d.ts +86 -0
  95. package/dist/revertibles.d.ts.map +1 -0
  96. package/dist/sequence-alpha.d.ts +1315 -0
  97. package/dist/sequence-beta.d.ts +244 -0
  98. package/dist/sequence-public.d.ts +244 -0
  99. package/dist/sequence-untrimmed.d.ts +1803 -0
  100. package/dist/{sequence.js → sequence.cjs} +226 -156
  101. package/dist/sequence.cjs.map +1 -0
  102. package/dist/sequence.d.ts +125 -48
  103. package/dist/sequence.d.ts.map +1 -1
  104. package/dist/{sequenceDeltaEvent.js → sequenceDeltaEvent.cjs} +18 -8
  105. package/dist/sequenceDeltaEvent.cjs.map +1 -0
  106. package/dist/sequenceDeltaEvent.d.ts +24 -7
  107. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  108. package/dist/sequenceFactory.cjs +55 -0
  109. package/dist/sequenceFactory.cjs.map +1 -0
  110. package/dist/sequenceFactory.d.ts +3 -89
  111. package/dist/sequenceFactory.d.ts.map +1 -1
  112. package/dist/{sharedIntervalCollection.js → sharedIntervalCollection.cjs} +17 -22
  113. package/dist/sharedIntervalCollection.cjs.map +1 -0
  114. package/dist/sharedIntervalCollection.d.ts +12 -12
  115. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  116. package/dist/{sharedSequence.js → sharedSequence.cjs} +29 -22
  117. package/dist/sharedSequence.cjs.map +1 -0
  118. package/dist/sharedSequence.d.ts +14 -2
  119. package/dist/sharedSequence.d.ts.map +1 -1
  120. package/dist/sharedString.cjs +286 -0
  121. package/dist/sharedString.cjs.map +1 -0
  122. package/dist/sharedString.d.ts +58 -22
  123. package/dist/sharedString.d.ts.map +1 -1
  124. package/dist/tsdoc-metadata.json +11 -0
  125. package/lib/{defaultMap.d.ts → defaultMap.d.mts} +7 -6
  126. package/lib/defaultMap.d.mts.map +1 -0
  127. package/lib/{defaultMap.js → defaultMap.mjs} +28 -21
  128. package/lib/defaultMap.mjs.map +1 -0
  129. package/lib/{defaultMapInterfaces.d.ts → defaultMapInterfaces.d.mts} +44 -12
  130. package/lib/defaultMapInterfaces.d.mts.map +1 -0
  131. package/lib/defaultMapInterfaces.mjs +6 -0
  132. package/lib/defaultMapInterfaces.mjs.map +1 -0
  133. package/lib/index.d.mts +17 -0
  134. package/lib/index.d.mts.map +1 -0
  135. package/lib/index.mjs +16 -0
  136. package/lib/index.mjs.map +1 -0
  137. package/lib/intervalCollection.d.mts +569 -0
  138. package/lib/intervalCollection.d.mts.map +1 -0
  139. package/lib/intervalCollection.mjs +1144 -0
  140. package/lib/intervalCollection.mjs.map +1 -0
  141. package/lib/intervalIndex/endpointInRangeIndex.d.mts +34 -0
  142. package/lib/intervalIndex/endpointInRangeIndex.d.mts.map +1 -0
  143. package/lib/intervalIndex/endpointInRangeIndex.mjs +61 -0
  144. package/lib/intervalIndex/endpointInRangeIndex.mjs.map +1 -0
  145. package/lib/intervalIndex/endpointIndex.d.mts +38 -0
  146. package/lib/intervalIndex/endpointIndex.d.mts.map +1 -0
  147. package/lib/intervalIndex/endpointIndex.mjs +42 -0
  148. package/lib/intervalIndex/endpointIndex.mjs.map +1 -0
  149. package/lib/intervalIndex/idIntervalIndex.d.mts +18 -0
  150. package/lib/intervalIndex/idIntervalIndex.d.mts.map +1 -0
  151. package/lib/intervalIndex/idIntervalIndex.mjs +40 -0
  152. package/lib/intervalIndex/idIntervalIndex.mjs.map +1 -0
  153. package/lib/intervalIndex/index.d.mts +13 -0
  154. package/lib/intervalIndex/index.d.mts.map +1 -0
  155. package/lib/intervalIndex/index.mjs +11 -0
  156. package/lib/intervalIndex/index.mjs.map +1 -0
  157. package/lib/intervalIndex/intervalIndex.d.mts +30 -0
  158. package/lib/intervalIndex/intervalIndex.d.mts.map +1 -0
  159. package/lib/{defaultMapInterfaces.js → intervalIndex/intervalIndex.mjs} +1 -1
  160. package/lib/intervalIndex/intervalIndex.mjs.map +1 -0
  161. package/lib/intervalIndex/intervalIndexUtils.d.mts +17 -0
  162. package/lib/intervalIndex/intervalIndexUtils.d.mts.map +1 -0
  163. package/lib/intervalIndex/intervalIndexUtils.mjs +18 -0
  164. package/lib/intervalIndex/intervalIndexUtils.mjs.map +1 -0
  165. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts +44 -0
  166. package/lib/intervalIndex/overlappingIntervalsIndex.d.mts.map +1 -0
  167. package/lib/intervalIndex/overlappingIntervalsIndex.mjs +111 -0
  168. package/lib/intervalIndex/overlappingIntervalsIndex.mjs.map +1 -0
  169. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts +11 -0
  170. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.mts.map +1 -0
  171. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs +37 -0
  172. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.mjs.map +1 -0
  173. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts +35 -0
  174. package/lib/intervalIndex/sequenceIntervalIndexes.d.mts.map +1 -0
  175. package/lib/intervalIndex/sequenceIntervalIndexes.mjs +6 -0
  176. package/lib/intervalIndex/sequenceIntervalIndexes.mjs.map +1 -0
  177. package/lib/intervalIndex/startpointInRangeIndex.d.mts +34 -0
  178. package/lib/intervalIndex/startpointInRangeIndex.d.mts.map +1 -0
  179. package/lib/intervalIndex/startpointInRangeIndex.mjs +61 -0
  180. package/lib/intervalIndex/startpointInRangeIndex.mjs.map +1 -0
  181. package/lib/intervalTree.d.mts +24 -0
  182. package/lib/intervalTree.d.mts.map +1 -0
  183. package/lib/intervalTree.mjs +76 -0
  184. package/lib/intervalTree.mjs.map +1 -0
  185. package/lib/intervals/index.d.mts +8 -0
  186. package/lib/intervals/index.d.mts.map +1 -0
  187. package/lib/intervals/index.mjs +8 -0
  188. package/lib/intervals/index.mjs.map +1 -0
  189. package/lib/intervals/interval.d.mts +84 -0
  190. package/lib/intervals/interval.d.mts.map +1 -0
  191. package/lib/intervals/interval.mjs +176 -0
  192. package/lib/intervals/interval.mjs.map +1 -0
  193. package/lib/intervals/intervalUtils.d.mts +230 -0
  194. package/lib/intervals/intervalUtils.d.mts.map +1 -0
  195. package/lib/intervals/intervalUtils.mjs +77 -0
  196. package/lib/intervals/intervalUtils.mjs.map +1 -0
  197. package/lib/intervals/sequenceInterval.d.mts +137 -0
  198. package/lib/intervals/sequenceInterval.d.mts.map +1 -0
  199. package/lib/intervals/sequenceInterval.mjs +370 -0
  200. package/lib/intervals/sequenceInterval.mjs.map +1 -0
  201. package/lib/{localValues.d.ts → localValues.d.mts} +3 -2
  202. package/lib/localValues.d.mts.map +1 -0
  203. package/lib/{localValues.js → localValues.mjs} +2 -2
  204. package/lib/localValues.mjs.map +1 -0
  205. package/lib/{packageVersion.d.ts → packageVersion.d.mts} +1 -1
  206. package/lib/{packageVersion.d.ts.map → packageVersion.d.mts.map} +1 -1
  207. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  208. package/lib/packageVersion.mjs.map +1 -0
  209. package/lib/revertibles.d.mts +86 -0
  210. package/lib/revertibles.d.mts.map +1 -0
  211. package/lib/revertibles.mjs +416 -0
  212. package/lib/revertibles.mjs.map +1 -0
  213. package/lib/sequence-alpha.d.mts +1315 -0
  214. package/lib/sequence-beta.d.mts +244 -0
  215. package/lib/sequence-public.d.mts +244 -0
  216. package/lib/sequence-untrimmed.d.mts +1803 -0
  217. package/lib/{sequence.d.ts → sequence.d.mts} +127 -50
  218. package/lib/sequence.d.mts.map +1 -0
  219. package/lib/{sequence.js → sequence.mjs} +225 -152
  220. package/lib/sequence.mjs.map +1 -0
  221. package/lib/{sequenceDeltaEvent.d.ts → sequenceDeltaEvent.d.mts} +24 -7
  222. package/lib/sequenceDeltaEvent.d.mts.map +1 -0
  223. package/lib/{sequenceDeltaEvent.js → sequenceDeltaEvent.mjs} +20 -8
  224. package/lib/sequenceDeltaEvent.mjs.map +1 -0
  225. package/lib/sequenceFactory.d.mts +22 -0
  226. package/lib/sequenceFactory.d.mts.map +1 -0
  227. package/lib/sequenceFactory.mjs +51 -0
  228. package/lib/sequenceFactory.mjs.map +1 -0
  229. package/lib/{sharedIntervalCollection.d.ts → sharedIntervalCollection.d.mts} +12 -12
  230. package/lib/sharedIntervalCollection.d.mts.map +1 -0
  231. package/lib/{sharedIntervalCollection.js → sharedIntervalCollection.mjs} +16 -21
  232. package/lib/sharedIntervalCollection.mjs.map +1 -0
  233. package/lib/{sharedSequence.d.ts → sharedSequence.d.mts} +15 -3
  234. package/lib/sharedSequence.d.mts.map +1 -0
  235. package/lib/{sharedSequence.js → sharedSequence.mjs} +30 -23
  236. package/lib/sharedSequence.mjs.map +1 -0
  237. package/lib/{sharedString.d.ts → sharedString.d.mts} +60 -24
  238. package/lib/sharedString.d.mts.map +1 -0
  239. package/lib/sharedString.mjs +281 -0
  240. package/lib/sharedString.mjs.map +1 -0
  241. package/package.json +146 -75
  242. package/prettier.config.cjs +8 -0
  243. package/sequence.test-files.tar +0 -0
  244. package/src/defaultMap.ts +417 -403
  245. package/src/defaultMapInterfaces.ts +157 -117
  246. package/src/index.ts +86 -26
  247. package/src/intervalCollection.ts +2043 -1563
  248. package/src/intervalIndex/endpointInRangeIndex.ts +116 -0
  249. package/src/intervalIndex/endpointIndex.ts +91 -0
  250. package/src/intervalIndex/idIntervalIndex.ts +64 -0
  251. package/src/intervalIndex/index.ts +25 -0
  252. package/src/intervalIndex/intervalIndex.ts +32 -0
  253. package/src/intervalIndex/intervalIndexUtils.ts +27 -0
  254. package/src/intervalIndex/overlappingIntervalsIndex.ts +187 -0
  255. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +80 -0
  256. package/src/intervalIndex/sequenceIntervalIndexes.ts +34 -0
  257. package/src/intervalIndex/startpointInRangeIndex.ts +114 -0
  258. package/src/intervalTree.ts +98 -0
  259. package/src/intervals/index.ts +25 -0
  260. package/src/intervals/interval.ts +238 -0
  261. package/src/intervals/intervalUtils.ts +288 -0
  262. package/src/intervals/sequenceInterval.ts +616 -0
  263. package/src/localValues.ts +68 -73
  264. package/src/packageVersion.ts +1 -1
  265. package/src/revertibles.ts +693 -0
  266. package/src/sequence.ts +845 -690
  267. package/src/sequenceDeltaEvent.ts +164 -131
  268. package/src/sequenceFactory.ts +58 -214
  269. package/src/sharedIntervalCollection.ts +161 -152
  270. package/src/sharedSequence.ts +181 -167
  271. package/src/sharedString.ts +390 -234
  272. package/tsc-multi.test.json +10 -0
  273. package/tsconfig.json +11 -13
  274. package/.editorconfig +0 -7
  275. package/.vscode/launch.json +0 -15
  276. package/dist/defaultMap.js.map +0 -1
  277. package/dist/defaultMapInterfaces.js.map +0 -1
  278. package/dist/index.js +0 -44
  279. package/dist/index.js.map +0 -1
  280. package/dist/intervalCollection.js +0 -1250
  281. package/dist/intervalCollection.js.map +0 -1
  282. package/dist/localValues.js.map +0 -1
  283. package/dist/packageVersion.js.map +0 -1
  284. package/dist/sequence.js.map +0 -1
  285. package/dist/sequenceDeltaEvent.js.map +0 -1
  286. package/dist/sequenceFactory.js +0 -192
  287. package/dist/sequenceFactory.js.map +0 -1
  288. package/dist/sharedIntervalCollection.js.map +0 -1
  289. package/dist/sharedNumberSequence.d.ts +0 -50
  290. package/dist/sharedNumberSequence.d.ts.map +0 -1
  291. package/dist/sharedNumberSequence.js +0 -61
  292. package/dist/sharedNumberSequence.js.map +0 -1
  293. package/dist/sharedObjectSequence.d.ts +0 -50
  294. package/dist/sharedObjectSequence.d.ts.map +0 -1
  295. package/dist/sharedObjectSequence.js +0 -61
  296. package/dist/sharedObjectSequence.js.map +0 -1
  297. package/dist/sharedSequence.js.map +0 -1
  298. package/dist/sharedString.js +0 -187
  299. package/dist/sharedString.js.map +0 -1
  300. package/dist/sparsematrix.d.ts +0 -139
  301. package/dist/sparsematrix.d.ts.map +0 -1
  302. package/dist/sparsematrix.js +0 -332
  303. package/dist/sparsematrix.js.map +0 -1
  304. package/lib/defaultMap.d.ts.map +0 -1
  305. package/lib/defaultMap.js.map +0 -1
  306. package/lib/defaultMapInterfaces.d.ts.map +0 -1
  307. package/lib/defaultMapInterfaces.js.map +0 -1
  308. package/lib/index.d.ts +0 -27
  309. package/lib/index.d.ts.map +0 -1
  310. package/lib/index.js +0 -26
  311. package/lib/index.js.map +0 -1
  312. package/lib/intervalCollection.d.ts +0 -270
  313. package/lib/intervalCollection.d.ts.map +0 -1
  314. package/lib/intervalCollection.js +0 -1238
  315. package/lib/intervalCollection.js.map +0 -1
  316. package/lib/localValues.d.ts.map +0 -1
  317. package/lib/localValues.js.map +0 -1
  318. package/lib/packageVersion.js.map +0 -1
  319. package/lib/sequence.d.ts.map +0 -1
  320. package/lib/sequence.js.map +0 -1
  321. package/lib/sequenceDeltaEvent.d.ts.map +0 -1
  322. package/lib/sequenceDeltaEvent.js.map +0 -1
  323. package/lib/sequenceFactory.d.ts +0 -108
  324. package/lib/sequenceFactory.d.ts.map +0 -1
  325. package/lib/sequenceFactory.js +0 -186
  326. package/lib/sequenceFactory.js.map +0 -1
  327. package/lib/sharedIntervalCollection.d.ts.map +0 -1
  328. package/lib/sharedIntervalCollection.js.map +0 -1
  329. package/lib/sharedNumberSequence.d.ts +0 -50
  330. package/lib/sharedNumberSequence.d.ts.map +0 -1
  331. package/lib/sharedNumberSequence.js +0 -57
  332. package/lib/sharedNumberSequence.js.map +0 -1
  333. package/lib/sharedObjectSequence.d.ts +0 -50
  334. package/lib/sharedObjectSequence.d.ts.map +0 -1
  335. package/lib/sharedObjectSequence.js +0 -57
  336. package/lib/sharedObjectSequence.js.map +0 -1
  337. package/lib/sharedSequence.d.ts.map +0 -1
  338. package/lib/sharedSequence.js.map +0 -1
  339. package/lib/sharedString.d.ts.map +0 -1
  340. package/lib/sharedString.js +0 -183
  341. package/lib/sharedString.js.map +0 -1
  342. package/lib/sparsematrix.d.ts +0 -139
  343. package/lib/sparsematrix.d.ts.map +0 -1
  344. package/lib/sparsematrix.js +0 -323
  345. package/lib/sparsematrix.js.map +0 -1
  346. package/src/sharedNumberSequence.ts +0 -62
  347. package/src/sharedObjectSequence.ts +0 -62
  348. package/src/sparsematrix.ts +0 -421
  349. package/tsconfig.esnext.json +0 -7
@@ -5,44 +5,82 @@
5
5
 
6
6
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
7
7
  import { ISharedObjectEvents } from "@fluidframework/shared-object-base";
8
- import { IEventThisPlaceHolder } from "@fluidframework/common-definitions";
8
+ import { IEventThisPlaceHolder } from "@fluidframework/core-interfaces";
9
+ import { ISerializedInterval, IntervalOpType, SerializedIntervalDelta } from "./intervals";
9
10
 
10
11
  /**
11
12
  * Type of "valueChanged" event parameter.
12
13
  */
13
14
  export interface IValueChanged {
14
- /**
15
- * The key storing the value that changed.
16
- */
17
- key: string;
18
-
19
- /**
20
- * The value that was stored at the key prior to the change.
21
- */
22
- previousValue: any;
15
+ /**
16
+ * The key storing the value that changed.
17
+ */
18
+ key: string;
19
+
20
+ /**
21
+ * The value that was stored at the key prior to the change.
22
+ */
23
+ previousValue: any;
23
24
  }
24
25
 
25
26
  /**
26
27
  * Value types are given an IValueOpEmitter to emit their ops through the container type that holds them.
27
28
  * @internal
29
+ * @deprecated - will be remove from public api as there is no public used of this type
28
30
  */
29
31
  export interface IValueOpEmitter {
30
- /**
31
- * Called by the value type to emit a value type operation through the container type holding it.
32
- * @param opName - Name of the emitted operation
33
- * @param previousValue - JSONable previous value as defined by the value type
34
- * @param params - JSONable params for the operation as defined by the value type
35
- * @param localOpMetadata - JSONable local metadata which should be submitted with the op
36
- * @internal
37
- */
38
- emit(opName: string, previousValue: any, params: any, localOpMetadata: IMapMessageLocalMetadata): void;
32
+ /**
33
+ * Called by the value type to emit a value type operation through the container type holding it.
34
+ * @param opName - Name of the emitted operation
35
+ * @param previousValue - JSONable previous value as defined by the value type @deprecated unused
36
+ * @param params - JSONable params for the operation as defined by the value type
37
+ * @param localOpMetadata - JSONable local metadata which should be submitted with the op
38
+ */
39
+ emit(
40
+ opName: IntervalOpType,
41
+ previousValue: undefined,
42
+ params: SerializedIntervalDelta,
43
+ localOpMetadata: IMapMessageLocalMetadata,
44
+ ): void;
39
45
  }
40
46
 
41
47
  /**
42
48
  * @internal
43
49
  */
44
50
  export interface IMapMessageLocalMetadata {
45
- localSeq: number;
51
+ localSeq: number;
52
+ }
53
+
54
+ /**
55
+ * Optional flags that configure options for sequence DDSs
56
+ * @internal
57
+ */
58
+ export interface SequenceOptions {
59
+ /**
60
+ * Enable the ability to use interval APIs that rely on positions before and
61
+ * after individual characters, referred to as "sides". See {@link SequencePlace}
62
+ * for additional context.
63
+ *
64
+ * This flag must be enabled to pass instances of {@link SequencePlace} to
65
+ * any IIntervalCollection API.
66
+ *
67
+ * Also see the feature flag `mergeTreeReferencesCanSlideToEndpoint` to allow
68
+ * endpoints to slide to the special endpoint segments.
69
+ *
70
+ * The default value is false.
71
+ */
72
+ intervalStickinessEnabled: boolean;
73
+ /**
74
+ * Enable the ability for interval endpoints to slide to the special endpoint
75
+ * segments that exist before and after the bounds of the string. This is
76
+ * primarily useful for workflows involving interval stickiness, and it is
77
+ * suggested to enable both this flag and `intervalStickinessEnabled` at the
78
+ * same time.
79
+ *
80
+ * The default value is false.
81
+ */
82
+ mergeTreeReferencesCanSlideToEndpoint: boolean;
83
+ [key: string]: boolean;
46
84
  }
47
85
 
48
86
  /**
@@ -50,24 +88,24 @@ export interface IMapMessageLocalMetadata {
50
88
  * @alpha
51
89
  */
52
90
  export interface IValueFactory<T> {
53
- /**
54
- * Create a new value type. Used both in creation of new value types, as well as in loading existing ones
55
- * from remote.
56
- * @param emitter - Emitter object that the created value type will use to emit operations
57
- * @param raw - Initialization parameters as defined by the value type
58
- * @returns The new value type
59
- * @alpha
60
- */
61
- load(emitter: IValueOpEmitter, raw: any): T;
62
-
63
- /**
64
- * Given a value type, provides a JSONable form of its data to be used for snapshotting. This data must be
65
- * loadable using the load method of its factory.
66
- * @param value - The value type to serialize
67
- * @returns The JSONable form of the value type
68
- * @alpha
69
- */
70
- store(value: T): any;
91
+ /**
92
+ * Create a new value type. Used both in creation of new value types, as well as in loading existing ones
93
+ * from remote.
94
+ * @param emitter - Emitter object that the created value type will use to emit operations
95
+ * @param raw - Initialization parameters as defined by the value type
96
+ * @returns The new value type
97
+ * @alpha
98
+ */
99
+ load(emitter: IValueOpEmitter, raw: any, options?: Partial<SequenceOptions>): T;
100
+
101
+ /**
102
+ * Given a value type, provides a JSONable form of its data to be used for snapshotting. This data must be
103
+ * loadable using the load method of its factory.
104
+ * @param value - The value type to serialize
105
+ * @returns The JSONable form of the value type
106
+ * @alpha
107
+ */
108
+ store(value: T): any;
71
109
  }
72
110
 
73
111
  /**
@@ -75,66 +113,68 @@ export interface IValueFactory<T> {
75
113
  * @alpha
76
114
  */
77
115
  export interface IValueOperation<T> {
78
- /**
79
- * Performs the actual processing on the incoming operation.
80
- * @param value - The current value stored at the given key, which should be the value type
81
- * @param params - The params on the incoming operation
82
- * @param local - Whether the operation originated from this client
83
- * @param message - The operation itself
84
- * @param localOpMetadata - any local metadata submitted by `IValueOpEmitter.emit`.
85
- * @alpha
86
- */
87
- process(
88
- value: T,
89
- params: any,
90
- local: boolean,
91
- message: ISequencedDocumentMessage | undefined,
92
- localOpMetadata: IMapMessageLocalMetadata | undefined
93
- );
94
-
95
- /**
96
- * Rebases an `op` on `value` from its original perspective (ref/local seq) to the current
97
- * perspective. Should be invoked on reconnection.
98
- * @param value - The current value stored at the given key, which should be the value type.
99
- * @param op - The op to be rebased.
100
- * @param localOpMetadata - Any local metadata that was originally submitted with the op.
101
- * @returns A rebased version of the op and any local metadata that should be submitted with it.
102
- */
103
- rebase(
104
- value: T,
105
- op: IValueTypeOperationValue,
106
- localOpMetadata: IMapMessageLocalMetadata
107
- ): { rebasedOp: IValueTypeOperationValue; rebasedLocalOpMetadata: IMapMessageLocalMetadata; };
116
+ /**
117
+ * Performs the actual processing on the incoming operation.
118
+ * @param value - The current value stored at the given key, which should be the value type
119
+ * @param params - The params on the incoming operation
120
+ * @param local - Whether the operation originated from this client
121
+ * @param message - The operation itself
122
+ * @param localOpMetadata - any local metadata submitted by `IValueOpEmitter.emit`.
123
+ * @alpha
124
+ */
125
+ process(
126
+ value: T,
127
+ params: ISerializedInterval,
128
+ local: boolean,
129
+ message: ISequencedDocumentMessage | undefined,
130
+ localOpMetadata: IMapMessageLocalMetadata | undefined,
131
+ ): void;
132
+
133
+ /**
134
+ * Rebases an `op` on `value` from its original perspective (ref/local seq) to the current
135
+ * perspective. Should be invoked on reconnection.
136
+ * @param value - The current value stored at the given key, which should be the value type.
137
+ * @param op - The op to be rebased.
138
+ * @param localOpMetadata - Any local metadata that was originally submitted with the op.
139
+ * @returns A rebased version of the op and any local metadata that should be submitted with it.
140
+ */
141
+ rebase(
142
+ value: T,
143
+ op: IValueTypeOperationValue,
144
+ localOpMetadata: IMapMessageLocalMetadata,
145
+ ):
146
+ | { rebasedOp: IValueTypeOperationValue; rebasedLocalOpMetadata: IMapMessageLocalMetadata }
147
+ | undefined;
108
148
  }
109
149
 
110
150
  /**
111
151
  * Defines a value type that can be registered on a container type.
112
152
  */
113
153
  export interface IValueType<T> {
114
- /**
115
- * Name of the value type.
116
- * @alpha
117
- */
118
- name: string;
119
-
120
- /**
121
- * Factory method used to convert to/from a JSON form of the type.
122
- * @alpha
123
- */
124
- factory: IValueFactory<T>;
125
-
126
- /**
127
- * Operations that can be applied to the value type.
128
- * @alpha
129
- */
130
- ops: Map<string, IValueOperation<T>>;
154
+ /**
155
+ * Name of the value type.
156
+ * @alpha
157
+ */
158
+ name: string;
159
+
160
+ /**
161
+ * Factory method used to convert to/from a JSON form of the type.
162
+ * @alpha
163
+ */
164
+ factory: IValueFactory<T>;
165
+
166
+ /**
167
+ * Operations that can be applied to the value type.
168
+ * @alpha
169
+ */
170
+ ops: Map<IntervalOpType, IValueOperation<T>>;
131
171
  }
132
172
 
133
173
  export interface ISharedDefaultMapEvents extends ISharedObjectEvents {
134
- (event: "valueChanged" | "create", listener: (
135
- changed: IValueChanged,
136
- local: boolean,
137
- target: IEventThisPlaceHolder) => void);
174
+ (
175
+ event: "valueChanged" | "create",
176
+ listener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void,
177
+ ): void;
138
178
  }
139
179
 
140
180
  /**
@@ -145,31 +185,31 @@ export interface ISharedDefaultMapEvents extends ISharedObjectEvents {
145
185
  * JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate)
146
186
  * and ops (set).
147
187
  *
148
- * The DefaultMap impelmentation for sequence has been specialized to only support a single ValueType, which serializes
188
+ * The DefaultMap implementation for sequence has been specialized to only support a single ValueType, which serializes
149
189
  * and deserializes via .store() and .load().
150
190
  */
151
191
  export interface ISerializableValue {
152
- /**
153
- * A type annotation to help indicate how the value serializes.
154
- */
155
- type: string;
156
-
157
- /**
158
- * The JSONable representation of the value.
159
- */
160
- value: any;
192
+ /**
193
+ * A type annotation to help indicate how the value serializes.
194
+ */
195
+ type: string;
196
+
197
+ /**
198
+ * The JSONable representation of the value.
199
+ */
200
+ value: any;
161
201
  }
162
202
 
163
203
  export interface ISerializedValue {
164
- /**
165
- * A type annotation to help indicate how the value serializes.
166
- */
167
- type: string;
168
-
169
- /**
170
- * String representation of the value.
171
- */
172
- value: string | undefined;
204
+ /**
205
+ * A type annotation to help indicate how the value serializes.
206
+ */
207
+ type: string;
208
+
209
+ /**
210
+ * String representation of the value.
211
+ */
212
+ value: string | undefined;
173
213
  }
174
214
 
175
215
  /**
@@ -182,13 +222,13 @@ export interface ISerializedValue {
182
222
  * @alpha
183
223
  */
184
224
  export interface IValueTypeOperationValue {
185
- /**
186
- * The name of the operation.
187
- */
188
- opName: string;
189
-
190
- /**
191
- * The payload that is submitted along with the operation.
192
- */
193
- value: any;
225
+ /**
226
+ * The name of the operation.
227
+ */
228
+ opName: IntervalOpType;
229
+
230
+ /**
231
+ * The payload that is submitted along with the operation.
232
+ */
233
+ value: SerializedIntervalDelta;
194
234
  }
package/src/index.ts CHANGED
@@ -6,39 +6,99 @@
6
6
  /**
7
7
  * Supports distributed data structures which are list-like.
8
8
  *
9
- * This package's main export is {@link SharedSequence}, a DDS for storing and simultaneously editing a sequence of
9
+ * This library's main export is {@link SharedString}, a DDS for storing and simultaneously editing a sequence of
10
10
  * text.
11
11
  *
12
+ * See the package's README for a high-level introduction to `SharedString`'s feature set.
12
13
  * @remarks Note that SharedString is a sequence DDS but it has additional specialized features and behaviors for
13
14
  * working with text.
14
15
  *
15
16
  * @packageDocumentation
16
17
  */
17
-
18
+ export { IMapMessageLocalMetadata, IValueOpEmitter, SequenceOptions } from "./defaultMapInterfaces";
19
+ export {
20
+ IInterval,
21
+ Interval,
22
+ IntervalOpType,
23
+ IntervalType,
24
+ ISerializableInterval,
25
+ ISerializedInterval,
26
+ SequenceInterval,
27
+ SerializedIntervalDelta,
28
+ IntervalStickiness,
29
+ IIntervalHelpers,
30
+ sequenceIntervalHelpers,
31
+ } from "./intervals";
18
32
  export {
19
- DeserializeCallback,
20
- IIntervalCollectionEvent,
21
- IIntervalHelpers,
22
- Interval,
23
- IntervalCollection,
24
- IntervalCollectionIterator,
25
- IntervalType,
26
- ISerializableInterval,
27
- ISerializedInterval,
28
- SequenceInterval,
29
- ISerializedIntervalCollectionV2,
30
- CompressedSerializedInterval,
33
+ DeserializeCallback,
34
+ IIntervalCollectionEvent,
35
+ IIntervalCollection,
36
+ IntervalLocator,
37
+ intervalLocatorFromEndpoint,
38
+ Side,
39
+ InteriorSequencePlace,
40
+ SequencePlace,
31
41
  } from "./intervalCollection";
32
42
  export {
33
- IMapMessageLocalMetadata,
34
- IValueOpEmitter,
35
- } from "./defaultMapInterfaces";
36
- export * from "./sharedString";
37
- export * from "./sequence";
38
- export * from "./sequenceFactory";
39
- export * from "./sequenceDeltaEvent";
40
- export * from "./sharedSequence";
41
- export * from "./sharedObjectSequence";
42
- export * from "./sharedNumberSequence";
43
- export * from "./sparsematrix";
44
- export * from "./sharedIntervalCollection";
43
+ IntervalIndex,
44
+ SequenceIntervalIndexes,
45
+ IOverlappingIntervalsIndex,
46
+ createOverlappingIntervalsIndex,
47
+ createOverlappingSequenceIntervalsIndex,
48
+ IEndpointInRangeIndex,
49
+ IStartpointInRangeIndex,
50
+ createEndpointInRangeIndex,
51
+ createStartpointInRangeIndex,
52
+ IIdIntervalIndex,
53
+ createIdIntervalIndex,
54
+ IEndpointIndex,
55
+ createEndpointIndex,
56
+ } from "./intervalIndex";
57
+ export {
58
+ appendAddIntervalToRevertibles,
59
+ appendChangeIntervalToRevertibles,
60
+ appendDeleteIntervalToRevertibles,
61
+ appendIntervalPropertyChangedToRevertibles,
62
+ appendSharedStringDeltaToRevertibles,
63
+ discardSharedStringRevertibles,
64
+ IntervalRevertible,
65
+ revertSharedStringRevertibles,
66
+ SharedStringRevertible,
67
+ } from "./revertibles";
68
+ export { ISharedSegmentSequenceEvents, SharedSegmentSequence } from "./sequence";
69
+ export {
70
+ ISequenceDeltaRange,
71
+ SequenceDeltaEvent,
72
+ SequenceEvent,
73
+ SequenceMaintenanceEvent,
74
+ } from "./sequenceDeltaEvent";
75
+ export { SharedStringFactory } from "./sequenceFactory";
76
+ export {
77
+ getTextAndMarkers,
78
+ ISharedString,
79
+ SharedString,
80
+ SharedStringSegment,
81
+ } from "./sharedString";
82
+ export {
83
+ ISharedIntervalCollection,
84
+ SharedIntervalCollection,
85
+ SharedIntervalCollectionFactory,
86
+ } from "./sharedIntervalCollection";
87
+ export { IJSONRunSegment, SharedSequence, SubSequence } from "./sharedSequence";
88
+
89
+ export {
90
+ ISegment,
91
+ Marker,
92
+ BaseSegment,
93
+ ReferencePosition,
94
+ ReferenceType,
95
+ PropertySet,
96
+ MapLike,
97
+ TextSegment,
98
+ MergeTreeDeltaType,
99
+ reservedMarkerIdKey,
100
+ reservedTileLabelsKey,
101
+ reservedRangeLabelsKey,
102
+ TrackingGroup,
103
+ LocalReferencePosition,
104
+ } from "@fluidframework/merge-tree";