@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
@@ -3,180 +3,189 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { bufferToString } from "@fluidframework/common-utils";
6
+ import { bufferToString } from "@fluid-internal/client-utils";
7
7
  import {
8
- IChannelAttributes,
9
- IFluidDataStoreRuntime,
10
- IChannelStorageService,
11
- IChannelServices,
12
- IChannelFactory,
8
+ IChannelAttributes,
9
+ IFluidDataStoreRuntime,
10
+ IChannelStorageService,
11
+ IChannelServices,
12
+ IChannelFactory,
13
13
  } from "@fluidframework/datastore-definitions";
14
14
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
15
15
  import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
16
16
  import {
17
- createSingleBlobSummary,
18
- IFluidSerializer,
19
- SharedObject,
17
+ createSingleBlobSummary,
18
+ IFluidSerializer,
19
+ SharedObject,
20
20
  } from "@fluidframework/shared-object-base";
21
+ import { Interval, ISerializableInterval } from "./intervals";
21
22
  import {
22
- Interval,
23
- IntervalCollection,
24
- IntervalCollectionValueType,
25
- ISerializableInterval,
23
+ IntervalCollection,
24
+ IIntervalCollection,
25
+ IntervalCollectionValueType,
26
26
  } from "./intervalCollection";
27
- import { DefaultMap } from "./defaultMap";
27
+ import { DefaultMap, IMapOperation } from "./defaultMap";
28
28
  import { pkgVersion } from "./packageVersion";
29
29
  import { IMapMessageLocalMetadata } from "./defaultMapInterfaces";
30
30
 
31
31
  const snapshotFileName = "header";
32
32
 
33
33
  /**
34
- * The factory that defines the SharedIntervalCollection
35
- * @deprecated - SharedIntervalCollection is not maintained and is planned to be removed.
34
+ * The factory that defines the SharedIntervalCollection.
35
+ * @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
36
+ * @internal
36
37
  */
37
38
  export class SharedIntervalCollectionFactory implements IChannelFactory {
38
- public static readonly Type = "https://graph.microsoft.com/types/sharedIntervalCollection";
39
-
40
- public static readonly Attributes: IChannelAttributes = {
41
- type: SharedIntervalCollectionFactory.Type,
42
- snapshotFormatVersion: "0.1",
43
- packageVersion: pkgVersion,
44
- };
45
-
46
- public get type() {
47
- return SharedIntervalCollectionFactory.Type;
48
- }
49
-
50
- public get attributes() {
51
- return SharedIntervalCollectionFactory.Attributes;
52
- }
53
-
54
- /**
55
- * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}
56
- */
57
- public async load(
58
- runtime: IFluidDataStoreRuntime,
59
- id: string,
60
- services: IChannelServices,
61
- attributes: IChannelAttributes): Promise<SharedIntervalCollection> {
62
- const map = new SharedIntervalCollection(id, runtime, attributes);
63
- await map.load(services);
64
-
65
- return map;
66
- }
67
-
68
- public create(runtime: IFluidDataStoreRuntime, id: string): SharedIntervalCollection {
69
- const map = new SharedIntervalCollection(
70
- id,
71
- runtime,
72
- this.attributes);
73
- map.initializeLocal();
74
-
75
- return map;
76
- }
39
+ public static readonly Type = "https://graph.microsoft.com/types/sharedIntervalCollection";
40
+
41
+ public static readonly Attributes: IChannelAttributes = {
42
+ type: SharedIntervalCollectionFactory.Type,
43
+ snapshotFormatVersion: "0.1",
44
+ packageVersion: pkgVersion,
45
+ };
46
+
47
+ public get type() {
48
+ return SharedIntervalCollectionFactory.Type;
49
+ }
50
+
51
+ public get attributes() {
52
+ return SharedIntervalCollectionFactory.Attributes;
53
+ }
54
+
55
+ /**
56
+ * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}
57
+ */
58
+ public async load(
59
+ runtime: IFluidDataStoreRuntime,
60
+ id: string,
61
+ services: IChannelServices,
62
+ attributes: IChannelAttributes,
63
+ ): Promise<SharedIntervalCollection> {
64
+ const map = new SharedIntervalCollection(id, runtime, attributes);
65
+ await map.load(services);
66
+
67
+ return map;
68
+ }
69
+
70
+ public create(runtime: IFluidDataStoreRuntime, id: string): SharedIntervalCollection {
71
+ const map = new SharedIntervalCollection(id, runtime, this.attributes);
72
+ map.initializeLocal();
73
+
74
+ return map;
75
+ }
77
76
  }
78
77
 
78
+ /**
79
+ * @alpha
80
+ */
79
81
  export interface ISharedIntervalCollection<TInterval extends ISerializableInterval> {
80
- waitIntervalCollection(label: string): Promise<IntervalCollection<TInterval>>;
81
- getIntervalCollection(label: string): IntervalCollection<TInterval>;
82
+ getIntervalCollection(label: string): IIntervalCollection<TInterval>;
82
83
  }
83
84
 
84
85
  /**
85
- * @deprecated - SharedIntervalCollection is not maintained and is planned to be removed.
86
+ * @deprecated `SharedIntervalCollection` is not maintained and is planned to be removed.
87
+ * @internal
86
88
  */
87
89
  export class SharedIntervalCollection
88
- extends SharedObject implements ISharedIntervalCollection<Interval> {
89
- /**
90
- * Create a SharedIntervalCollection
91
- *
92
- * @param runtime - data store runtime the new shared map belongs to
93
- * @param id - optional name of the shared map
94
- * @returns newly create shared map (but not attached yet)
95
- */
96
- public static create(runtime: IFluidDataStoreRuntime, id?: string) {
97
- return runtime.createChannel(id, SharedIntervalCollectionFactory.Type) as SharedIntervalCollection;
98
- }
99
-
100
- /**
101
- * Get a factory for SharedIntervalCollection to register with the data store.
102
- *
103
- * @returns a factory that creates and load SharedIntervalCollection
104
- */
105
- public static getFactory(): IChannelFactory {
106
- return new SharedIntervalCollectionFactory();
107
- }
108
-
109
- public readonly [Symbol.toStringTag]: string = "SharedIntervalCollection";
110
- private readonly intervalCollections: DefaultMap<IntervalCollection<Interval>>;
111
-
112
- /**
113
- * Constructs a new shared SharedIntervalCollection. If the object is non-local an id and service interfaces will
114
- * be provided
115
- */
116
- constructor(
117
- id: string,
118
- runtime: IFluidDataStoreRuntime,
119
- attributes: IChannelAttributes,
120
- ) {
121
- super(id, runtime, attributes, "fluid_sharedIntervalCollection_");
122
- this.intervalCollections = new DefaultMap(
123
- this.serializer,
124
- this.handle,
125
- (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata),
126
- new IntervalCollectionValueType(),
127
- );
128
- }
129
-
130
- /**
131
- * @deprecated - IntervalCollections are created on a first-write wins basis, and concurrent creates
132
- * are supported. Use `getIntervalCollection` instead.
133
- */
134
- public async waitIntervalCollection(
135
- label: string,
136
- ): Promise<IntervalCollection<Interval>> {
137
- return this.intervalCollections.get(this.getIntervalCollectionPath(label));
138
- }
139
-
140
- public getIntervalCollection(label: string): IntervalCollection<Interval> {
141
- const realLabel = this.getIntervalCollectionPath(label);
142
- const sharedCollection = this.intervalCollections.get(realLabel);
143
- return sharedCollection;
144
- }
145
-
146
- protected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats {
147
- return createSingleBlobSummary(snapshotFileName, this.intervalCollections.serialize(serializer));
148
- }
149
-
150
- protected reSubmitCore(content: any, localOpMetadata: unknown) {
151
- this.intervalCollections.tryResubmitMessage(content, localOpMetadata as IMapMessageLocalMetadata);
152
- }
153
-
154
- protected onDisconnect() { }
155
-
156
- /**
157
- * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
158
- */
159
- protected async loadCore(storage: IChannelStorageService) {
160
- const blob = await storage.readBlob(snapshotFileName);
161
- const header = bufferToString(blob, "utf8");
162
- this.intervalCollections.populate(header);
163
- }
164
-
165
- protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown) {
166
- if (message.type === MessageType.Operation) {
167
- this.intervalCollections.tryProcessMessage(message.contents, local, message, localOpMetadata);
168
- }
169
- }
170
-
171
- /**
172
- * Creates the full path of the intervalCollection label
173
- * @param label - the incoming label
174
- */
175
- protected getIntervalCollectionPath(label: string): string {
176
- return label;
177
- }
178
-
179
- protected applyStashedOp() {
180
- throw new Error("not implemented");
181
- }
90
+ extends SharedObject
91
+ implements ISharedIntervalCollection<Interval>
92
+ {
93
+ /**
94
+ * Create a SharedIntervalCollection
95
+ *
96
+ * @param runtime - data store runtime the new shared map belongs to
97
+ * @param id - optional name of the shared map
98
+ * @returns newly create shared map (but not attached yet)
99
+ */
100
+ public static create(runtime: IFluidDataStoreRuntime, id?: string) {
101
+ return runtime.createChannel(
102
+ id,
103
+ SharedIntervalCollectionFactory.Type,
104
+ ) as SharedIntervalCollection;
105
+ }
106
+
107
+ /**
108
+ * Get a factory for SharedIntervalCollection to register with the data store.
109
+ *
110
+ * @returns a factory that creates and load SharedIntervalCollection
111
+ */
112
+ public static getFactory(): IChannelFactory {
113
+ return new SharedIntervalCollectionFactory();
114
+ }
115
+
116
+ public readonly [Symbol.toStringTag]: string = "SharedIntervalCollection";
117
+ private readonly intervalCollections: DefaultMap<IntervalCollection<Interval>>;
118
+
119
+ /**
120
+ * Constructs a new shared SharedIntervalCollection. If the object is non-local an id and service interfaces will
121
+ * be provided
122
+ */
123
+ constructor(id: string, runtime: IFluidDataStoreRuntime, attributes: IChannelAttributes) {
124
+ super(id, runtime, attributes, "fluid_sharedIntervalCollection_");
125
+ this.intervalCollections = new DefaultMap(
126
+ this.serializer,
127
+ this.handle,
128
+ (op, localOpMetadata) => this.submitLocalMessage(op, localOpMetadata),
129
+ new IntervalCollectionValueType(),
130
+ runtime.options,
131
+ );
132
+ }
133
+
134
+ public getIntervalCollection(label: string): IIntervalCollection<Interval> {
135
+ const realLabel = this.getIntervalCollectionPath(label);
136
+ const sharedCollection = this.intervalCollections.get(realLabel);
137
+ return sharedCollection;
138
+ }
139
+
140
+ protected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats {
141
+ return createSingleBlobSummary(
142
+ snapshotFileName,
143
+ this.intervalCollections.serialize(serializer),
144
+ );
145
+ }
146
+
147
+ protected reSubmitCore(content: any, localOpMetadata: unknown) {
148
+ this.intervalCollections.tryResubmitMessage(
149
+ content,
150
+ localOpMetadata as IMapMessageLocalMetadata,
151
+ );
152
+ }
153
+
154
+ protected onDisconnect() {}
155
+
156
+ /**
157
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
158
+ */
159
+ protected async loadCore(storage: IChannelStorageService) {
160
+ const blob = await storage.readBlob(snapshotFileName);
161
+ const header = bufferToString(blob, "utf8");
162
+ this.intervalCollections.populate(header);
163
+ }
164
+
165
+ protected processCore(
166
+ message: ISequencedDocumentMessage,
167
+ local: boolean,
168
+ localOpMetadata: unknown,
169
+ ) {
170
+ if (message.type === MessageType.Operation) {
171
+ this.intervalCollections.tryProcessMessage(
172
+ message.contents as IMapOperation,
173
+ local,
174
+ message,
175
+ localOpMetadata,
176
+ );
177
+ }
178
+ }
179
+
180
+ /**
181
+ * Creates the full path of the intervalCollection label
182
+ * @param label - the incoming label
183
+ */
184
+ protected getIntervalCollectionPath(label: string): string {
185
+ return label;
186
+ }
187
+
188
+ protected applyStashedOp() {
189
+ throw new Error("not implemented");
190
+ }
182
191
  }