@fluidframework/sequence 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +1 -1
  3. package/api-report/sequence.api.md +32 -32
  4. package/beta.d.ts +11 -0
  5. package/dist/{localValues.d.ts → IntervalCollectionValues.d.ts} +13 -12
  6. package/dist/IntervalCollectionValues.d.ts.map +1 -0
  7. package/dist/{localValues.js → IntervalCollectionValues.js} +6 -6
  8. package/dist/IntervalCollectionValues.js.map +1 -0
  9. package/dist/beta.d.ts +12 -0
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +10 -10
  13. package/dist/index.js.map +1 -1
  14. package/dist/intervalCollection.d.ts +10 -10
  15. package/dist/intervalCollection.d.ts.map +1 -1
  16. package/dist/intervalCollection.js +103 -99
  17. package/dist/intervalCollection.js.map +1 -1
  18. package/dist/{defaultMap.d.ts → intervalCollectionMap.d.ts} +11 -44
  19. package/dist/intervalCollectionMap.d.ts.map +1 -0
  20. package/dist/{defaultMap.js → intervalCollectionMap.js} +15 -70
  21. package/dist/intervalCollectionMap.js.map +1 -0
  22. package/dist/{defaultMapInterfaces.d.ts → intervalCollectionMapInterfaces.d.ts} +17 -16
  23. package/dist/intervalCollectionMapInterfaces.d.ts.map +1 -0
  24. package/dist/{defaultMapInterfaces.js → intervalCollectionMapInterfaces.js} +1 -1
  25. package/dist/intervalCollectionMapInterfaces.js.map +1 -0
  26. package/dist/intervalIndex/endpointInRangeIndex.d.ts +1 -1
  27. package/dist/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  28. package/dist/intervalIndex/endpointInRangeIndex.js +3 -3
  29. package/dist/intervalIndex/endpointInRangeIndex.js.map +1 -1
  30. package/dist/intervalIndex/endpointIndex.d.ts +1 -1
  31. package/dist/intervalIndex/endpointIndex.d.ts.map +1 -1
  32. package/dist/intervalIndex/endpointIndex.js +3 -3
  33. package/dist/intervalIndex/endpointIndex.js.map +1 -1
  34. package/dist/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  35. package/dist/intervalIndex/idIntervalIndex.js +3 -3
  36. package/dist/intervalIndex/idIntervalIndex.js.map +1 -1
  37. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts +3 -3
  38. package/dist/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  39. package/dist/intervalIndex/overlappingIntervalsIndex.js +2 -3
  40. package/dist/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  41. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  42. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js +6 -6
  43. package/dist/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  44. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts +1 -1
  45. package/dist/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  46. package/dist/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  47. package/dist/intervalIndex/startpointInRangeIndex.d.ts +1 -1
  48. package/dist/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  49. package/dist/intervalIndex/startpointInRangeIndex.js +3 -3
  50. package/dist/intervalIndex/startpointInRangeIndex.js.map +1 -1
  51. package/dist/intervalTree.d.ts +1 -1
  52. package/dist/intervalTree.d.ts.map +1 -1
  53. package/dist/intervalTree.js +2 -2
  54. package/dist/intervalTree.js.map +1 -1
  55. package/dist/intervals/interval.d.ts +1 -1
  56. package/dist/intervals/interval.d.ts.map +1 -1
  57. package/dist/intervals/interval.js +10 -10
  58. package/dist/intervals/interval.js.map +1 -1
  59. package/dist/intervals/intervalUtils.d.ts +1 -1
  60. package/dist/intervals/intervalUtils.d.ts.map +1 -1
  61. package/dist/intervals/intervalUtils.js +5 -5
  62. package/dist/intervals/intervalUtils.js.map +1 -1
  63. package/dist/intervals/sequenceInterval.d.ts +1 -1
  64. package/dist/intervals/sequenceInterval.d.ts.map +1 -1
  65. package/dist/intervals/sequenceInterval.js +34 -34
  66. package/dist/intervals/sequenceInterval.js.map +1 -1
  67. package/dist/legacy.d.ts +61 -0
  68. package/dist/packageVersion.d.ts +1 -1
  69. package/dist/packageVersion.js +1 -1
  70. package/dist/packageVersion.js.map +1 -1
  71. package/dist/public.d.ts +12 -0
  72. package/dist/revertibles.d.ts +2 -2
  73. package/dist/revertibles.d.ts.map +1 -1
  74. package/dist/revertibles.js +34 -34
  75. package/dist/revertibles.js.map +1 -1
  76. package/dist/sequence.d.ts +7 -6
  77. package/dist/sequence.d.ts.map +1 -1
  78. package/dist/sequence.js +34 -34
  79. package/dist/sequence.js.map +1 -1
  80. package/dist/sequenceDeltaEvent.d.ts +1 -1
  81. package/dist/sequenceDeltaEvent.d.ts.map +1 -1
  82. package/dist/sequenceDeltaEvent.js +4 -4
  83. package/dist/sequenceDeltaEvent.js.map +1 -1
  84. package/dist/sequenceFactory.d.ts +1 -1
  85. package/dist/sequenceFactory.d.ts.map +1 -1
  86. package/dist/sequenceFactory.js +3 -3
  87. package/dist/sequenceFactory.js.map +1 -1
  88. package/dist/sharedIntervalCollection.d.ts +4 -3
  89. package/dist/sharedIntervalCollection.d.ts.map +1 -1
  90. package/dist/sharedIntervalCollection.js +5 -5
  91. package/dist/sharedIntervalCollection.js.map +1 -1
  92. package/dist/sharedSequence.d.ts +3 -2
  93. package/dist/sharedSequence.d.ts.map +1 -1
  94. package/dist/sharedSequence.js +4 -4
  95. package/dist/sharedSequence.js.map +1 -1
  96. package/dist/sharedString.d.ts +2 -2
  97. package/dist/sharedString.d.ts.map +1 -1
  98. package/dist/sharedString.js +9 -9
  99. package/dist/sharedString.js.map +1 -1
  100. package/internal.d.ts +11 -0
  101. package/legacy.d.ts +11 -0
  102. package/lib/{localValues.d.ts → IntervalCollectionValues.d.ts} +13 -12
  103. package/lib/IntervalCollectionValues.d.ts.map +1 -0
  104. package/lib/{localValues.js → IntervalCollectionValues.js} +3 -3
  105. package/lib/IntervalCollectionValues.js.map +1 -0
  106. package/lib/beta.d.ts +12 -0
  107. package/lib/index.d.ts +2 -2
  108. package/lib/index.d.ts.map +1 -1
  109. package/lib/index.js +1 -1
  110. package/lib/index.js.map +1 -1
  111. package/lib/intervalCollection.d.ts +10 -10
  112. package/lib/intervalCollection.d.ts.map +1 -1
  113. package/lib/intervalCollection.js +8 -4
  114. package/lib/intervalCollection.js.map +1 -1
  115. package/lib/{defaultMap.d.ts → intervalCollectionMap.d.ts} +11 -44
  116. package/lib/intervalCollectionMap.d.ts.map +1 -0
  117. package/lib/{defaultMap.js → intervalCollectionMap.js} +8 -63
  118. package/lib/intervalCollectionMap.js.map +1 -0
  119. package/lib/{defaultMapInterfaces.d.ts → intervalCollectionMapInterfaces.d.ts} +17 -16
  120. package/lib/intervalCollectionMapInterfaces.d.ts.map +1 -0
  121. package/lib/{defaultMapInterfaces.js → intervalCollectionMapInterfaces.js} +1 -1
  122. package/lib/intervalCollectionMapInterfaces.js.map +1 -0
  123. package/lib/intervalIndex/endpointInRangeIndex.d.ts +1 -1
  124. package/lib/intervalIndex/endpointInRangeIndex.d.ts.map +1 -1
  125. package/lib/intervalIndex/endpointInRangeIndex.js +1 -1
  126. package/lib/intervalIndex/endpointInRangeIndex.js.map +1 -1
  127. package/lib/intervalIndex/endpointIndex.d.ts +1 -1
  128. package/lib/intervalIndex/endpointIndex.d.ts.map +1 -1
  129. package/lib/intervalIndex/endpointIndex.js +1 -1
  130. package/lib/intervalIndex/endpointIndex.js.map +1 -1
  131. package/lib/intervalIndex/idIntervalIndex.d.ts.map +1 -1
  132. package/lib/intervalIndex/idIntervalIndex.js +1 -1
  133. package/lib/intervalIndex/idIntervalIndex.js.map +1 -1
  134. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts +3 -3
  135. package/lib/intervalIndex/overlappingIntervalsIndex.d.ts.map +1 -1
  136. package/lib/intervalIndex/overlappingIntervalsIndex.js +2 -3
  137. package/lib/intervalIndex/overlappingIntervalsIndex.js.map +1 -1
  138. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.d.ts.map +1 -1
  139. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js +2 -2
  140. package/lib/intervalIndex/overlappingSequenceIntervalsIndex.js.map +1 -1
  141. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts +1 -1
  142. package/lib/intervalIndex/sequenceIntervalIndexes.d.ts.map +1 -1
  143. package/lib/intervalIndex/sequenceIntervalIndexes.js.map +1 -1
  144. package/lib/intervalIndex/startpointInRangeIndex.d.ts +1 -1
  145. package/lib/intervalIndex/startpointInRangeIndex.d.ts.map +1 -1
  146. package/lib/intervalIndex/startpointInRangeIndex.js +1 -1
  147. package/lib/intervalIndex/startpointInRangeIndex.js.map +1 -1
  148. package/lib/intervalTree.d.ts +1 -1
  149. package/lib/intervalTree.d.ts.map +1 -1
  150. package/lib/intervalTree.js +1 -1
  151. package/lib/intervalTree.js.map +1 -1
  152. package/lib/intervals/interval.d.ts +1 -1
  153. package/lib/intervals/interval.d.ts.map +1 -1
  154. package/lib/intervals/interval.js +3 -3
  155. package/lib/intervals/interval.js.map +1 -1
  156. package/lib/intervals/intervalUtils.d.ts +1 -1
  157. package/lib/intervals/intervalUtils.d.ts.map +1 -1
  158. package/lib/intervals/intervalUtils.js +1 -1
  159. package/lib/intervals/intervalUtils.js.map +1 -1
  160. package/lib/intervals/sequenceInterval.d.ts +1 -1
  161. package/lib/intervals/sequenceInterval.d.ts.map +1 -1
  162. package/lib/intervals/sequenceInterval.js +3 -3
  163. package/lib/intervals/sequenceInterval.js.map +1 -1
  164. package/lib/legacy.d.ts +61 -0
  165. package/lib/packageVersion.d.ts +1 -1
  166. package/lib/packageVersion.js +1 -1
  167. package/lib/packageVersion.js.map +1 -1
  168. package/lib/public.d.ts +12 -0
  169. package/lib/revertibles.d.ts +2 -2
  170. package/lib/revertibles.d.ts.map +1 -1
  171. package/lib/revertibles.js +3 -4
  172. package/lib/revertibles.js.map +1 -1
  173. package/lib/sequence.d.ts +7 -6
  174. package/lib/sequence.d.ts.map +1 -1
  175. package/lib/sequence.js +11 -12
  176. package/lib/sequence.js.map +1 -1
  177. package/lib/sequenceDeltaEvent.d.ts +1 -1
  178. package/lib/sequenceDeltaEvent.d.ts.map +1 -1
  179. package/lib/sequenceDeltaEvent.js +3 -4
  180. package/lib/sequenceDeltaEvent.js.map +1 -1
  181. package/lib/sequenceFactory.d.ts +1 -1
  182. package/lib/sequenceFactory.d.ts.map +1 -1
  183. package/lib/sequenceFactory.js +1 -1
  184. package/lib/sequenceFactory.js.map +1 -1
  185. package/lib/sharedIntervalCollection.d.ts +4 -3
  186. package/lib/sharedIntervalCollection.d.ts.map +1 -1
  187. package/lib/sharedIntervalCollection.js +4 -4
  188. package/lib/sharedIntervalCollection.js.map +1 -1
  189. package/lib/sharedSequence.d.ts +3 -2
  190. package/lib/sharedSequence.d.ts.map +1 -1
  191. package/lib/sharedSequence.js +2 -2
  192. package/lib/sharedSequence.js.map +1 -1
  193. package/lib/sharedString.d.ts +2 -2
  194. package/lib/sharedString.d.ts.map +1 -1
  195. package/lib/sharedString.js +1 -1
  196. package/lib/sharedString.js.map +1 -1
  197. package/package.json +41 -58
  198. package/src/{localValues.ts → IntervalCollectionValues.ts} +26 -18
  199. package/src/index.ts +2 -2
  200. package/src/intervalCollection.ts +46 -47
  201. package/src/{defaultMap.ts → intervalCollectionMap.ts} +42 -105
  202. package/src/{defaultMapInterfaces.ts → intervalCollectionMapInterfaces.ts} +26 -16
  203. package/src/intervalIndex/endpointInRangeIndex.ts +4 -1
  204. package/src/intervalIndex/endpointIndex.ts +4 -1
  205. package/src/intervalIndex/idIntervalIndex.ts +4 -2
  206. package/src/intervalIndex/overlappingIntervalsIndex.ts +8 -5
  207. package/src/intervalIndex/overlappingSequenceIntervalsIndex.ts +6 -3
  208. package/src/intervalIndex/sequenceIntervalIndexes.ts +3 -1
  209. package/src/intervalIndex/startpointInRangeIndex.ts +4 -1
  210. package/src/intervalTree.ts +4 -3
  211. package/src/intervals/interval.ts +6 -3
  212. package/src/intervals/intervalUtils.ts +4 -2
  213. package/src/intervals/sequenceInterval.ts +5 -3
  214. package/src/packageVersion.ts +1 -1
  215. package/src/revertibles.ts +10 -10
  216. package/src/sequence.ts +24 -31
  217. package/src/sequenceDeltaEvent.ts +3 -4
  218. package/src/sequenceFactory.ts +4 -3
  219. package/src/sharedIntervalCollection.ts +12 -18
  220. package/src/sharedSequence.ts +9 -6
  221. package/src/sharedString.ts +4 -3
  222. package/api-extractor-cjs.json +0 -8
  223. package/dist/defaultMap.d.ts.map +0 -1
  224. package/dist/defaultMap.js.map +0 -1
  225. package/dist/defaultMapInterfaces.d.ts.map +0 -1
  226. package/dist/defaultMapInterfaces.js.map +0 -1
  227. package/dist/localValues.d.ts.map +0 -1
  228. package/dist/localValues.js.map +0 -1
  229. package/dist/sequence-alpha.d.ts +0 -1432
  230. package/dist/sequence-beta.d.ts +0 -246
  231. package/dist/sequence-public.d.ts +0 -246
  232. package/dist/sequence-untrimmed.d.ts +0 -1820
  233. package/lib/defaultMap.d.ts.map +0 -1
  234. package/lib/defaultMap.js.map +0 -1
  235. package/lib/defaultMapInterfaces.d.ts.map +0 -1
  236. package/lib/defaultMapInterfaces.js.map +0 -1
  237. package/lib/localValues.d.ts.map +0 -1
  238. package/lib/localValues.js.map +0 -1
  239. package/lib/sequence-alpha.d.ts +0 -1432
  240. package/lib/sequence-beta.d.ts +0 -246
  241. package/lib/sequence-public.d.ts +0 -246
  242. package/lib/sequence-untrimmed.d.ts +0 -1820
  243. package/lib/test/collections.intervalTree.js +0 -73
  244. package/lib/test/collections.intervalTree.js.map +0 -1
  245. package/lib/test/createSnapshotFiles.js +0 -15
  246. package/lib/test/createSnapshotFiles.js.map +0 -1
  247. package/lib/test/dirname.cjs +0 -16
  248. package/lib/test/dirname.cjs.map +0 -1
  249. package/lib/test/endpointInRangeIndex.spec.js +0 -182
  250. package/lib/test/endpointInRangeIndex.spec.js.map +0 -1
  251. package/lib/test/fuzz/fuzzUtils.js +0 -250
  252. package/lib/test/fuzz/fuzzUtils.js.map +0 -1
  253. package/lib/test/fuzz/intervalCollection.fuzz.spec.js +0 -200
  254. package/lib/test/fuzz/intervalCollection.fuzz.spec.js.map +0 -1
  255. package/lib/test/fuzz/intervalRevertibles.fuzz.spec.js +0 -129
  256. package/lib/test/fuzz/intervalRevertibles.fuzz.spec.js.map +0 -1
  257. package/lib/test/fuzz/sharedString.fuzz.spec.js +0 -91
  258. package/lib/test/fuzz/sharedString.fuzz.spec.js.map +0 -1
  259. package/lib/test/generateSharedStrings.js +0 -138
  260. package/lib/test/generateSharedStrings.js.map +0 -1
  261. package/lib/test/intervalCollection.detached.spec.js +0 -126
  262. package/lib/test/intervalCollection.detached.spec.js.map +0 -1
  263. package/lib/test/intervalCollection.events.spec.js +0 -491
  264. package/lib/test/intervalCollection.events.spec.js.map +0 -1
  265. package/lib/test/intervalCollection.perf.spec.js +0 -88
  266. package/lib/test/intervalCollection.perf.spec.js.map +0 -1
  267. package/lib/test/intervalCollection.snapshot.spec.js +0 -171
  268. package/lib/test/intervalCollection.snapshot.spec.js.map +0 -1
  269. package/lib/test/intervalCollection.spec.js +0 -1660
  270. package/lib/test/intervalCollection.spec.js.map +0 -1
  271. package/lib/test/intervalIndexTestUtils.js +0 -49
  272. package/lib/test/intervalIndexTestUtils.js.map +0 -1
  273. package/lib/test/intervalRebasing.spec.js +0 -589
  274. package/lib/test/intervalRebasing.spec.js.map +0 -1
  275. package/lib/test/intervalStashedOps.spec.js +0 -142
  276. package/lib/test/intervalStashedOps.spec.js.map +0 -1
  277. package/lib/test/intervalTestUtils.js +0 -81
  278. package/lib/test/intervalTestUtils.js.map +0 -1
  279. package/lib/test/marshalling.spec.js +0 -55
  280. package/lib/test/marshalling.spec.js.map +0 -1
  281. package/lib/test/memory/sharedSequence.spec.js +0 -82
  282. package/lib/test/memory/sharedSequence.spec.js.map +0 -1
  283. package/lib/test/memory/sharedString.spec.js +0 -134
  284. package/lib/test/memory/sharedString.spec.js.map +0 -1
  285. package/lib/test/overlappingSequenceIntervalsIndex.spec.js +0 -348
  286. package/lib/test/overlappingSequenceIntervalsIndex.spec.js.map +0 -1
  287. package/lib/test/partialLoad.spec.js +0 -211
  288. package/lib/test/partialLoad.spec.js.map +0 -1
  289. package/lib/test/rebasing.spec.js +0 -81
  290. package/lib/test/rebasing.spec.js.map +0 -1
  291. package/lib/test/reentrancy.spec.js +0 -174
  292. package/lib/test/reentrancy.spec.js.map +0 -1
  293. package/lib/test/revertibles.spec.js +0 -971
  294. package/lib/test/revertibles.spec.js.map +0 -1
  295. package/lib/test/sequenceDeltaEvent.spec.js +0 -2144
  296. package/lib/test/sequenceDeltaEvent.spec.js.map +0 -1
  297. package/lib/test/sharedIntervalCollection.spec.js +0 -159
  298. package/lib/test/sharedIntervalCollection.spec.js.map +0 -1
  299. package/lib/test/sharedString.spec.js +0 -532
  300. package/lib/test/sharedString.spec.js.map +0 -1
  301. package/lib/test/snapshotEmptyProps.spec.js +0 -45
  302. package/lib/test/snapshotEmptyProps.spec.js.map +0 -1
  303. package/lib/test/snapshotVersion.spec.js +0 -149
  304. package/lib/test/snapshotVersion.spec.js.map +0 -1
  305. package/lib/test/startpointInRangeIndex.spec.js +0 -182
  306. package/lib/test/startpointInRangeIndex.spec.js.map +0 -1
  307. package/lib/test/subSequence.spec.js +0 -92
  308. package/lib/test/subSequence.spec.js.map +0 -1
  309. package/lib/test/types/validateSequencePrevious.generated.js +0 -162
  310. package/lib/test/types/validateSequencePrevious.generated.js.map +0 -1
  311. package/lib/test/v1IntervalCollectionHelpers.js +0 -93
  312. package/lib/test/v1IntervalCollectionHelpers.js.map +0 -1
  313. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateSharedStrings.js","sourceRoot":"","sources":["../../src/test/generateSharedStrings.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\n// eslint-disable-next-line import/no-internal-modules\nimport { SnapshotLegacy as Snapshot } from \"@fluidframework/merge-tree/test\";\nimport { MersenneTwister19937, Random } from \"random-js\";\nimport * as mocks from \"@fluidframework/test-runtime-utils\";\nimport { SharedString } from \"../sharedString.js\";\nimport { SharedStringFactory } from \"../sequenceFactory.js\";\nimport {\n\tSharedStringWithV1IntervalCollection,\n\tV1IntervalCollectionSharedStringFactory,\n} from \"./v1IntervalCollectionHelpers.js\";\n\nexport const LocationBase: string = \"src/test/snapshots/\";\n\nexport const supportedVersions = new Map<string, any>([\n\t// the catchUpBlob had to be renamed.\n\t// We are now support any name for this blob.\n\t// so for legacy set it to another name to ensure\n\t// we keep support\n\t[\"legacy\", { catchUpBlobName: \"randomNameForCatchUpOps\" }],\n\t[\"legacyWithCatchUp\", {}],\n\t[\"v1\", { newMergeTreeSnapshotFormat: true }],\n\t[\"v1Intervals\", {}],\n]);\n\nfunction createIntervals(sharedString) {\n\tconst rand = new Random(MersenneTwister19937.seed(0));\n\tconst collection1 = sharedString.getIntervalCollection(\"collection1\");\n\tcollection1.add({ start: 1, end: 5, props: { intervalId: rand.uuid4() } });\n\n\tconst collection2 = sharedString.getIntervalCollection(\"collection2\");\n\tfor (let i = 0; i < sharedString.getLength() - 5; i += 100) {\n\t\tcollection2.add({ start: i, end: i + 5, props: { intervalId: rand.uuid4() } });\n\t}\n}\n\nexport function* generateStrings(): Generator<{\n\tsnapshotPath: string;\n\texpected: SharedString;\n\tsnapshotIsNormalized: boolean; // false for v1, true for new formats\n}> {\n\tfor (const [version, options] of supportedVersions) {\n\t\tconst documentId = \"fakeId\";\n\t\tconst dataStoreRuntime: mocks.MockFluidDataStoreRuntime =\n\t\t\tnew mocks.MockFluidDataStoreRuntime();\n\t\tconst createNewSharedString = (): SharedString => {\n\t\t\tconst string = new SharedString(\n\t\t\t\tdataStoreRuntime,\n\t\t\t\tdocumentId,\n\t\t\t\tSharedStringFactory.Attributes,\n\t\t\t);\n\t\t\tstring.initializeLocal();\n\t\t\treturn string;\n\t\t};\n\t\tconst createNewV1SharedString = (): SharedStringWithV1IntervalCollection => {\n\t\t\tconst string = new SharedStringWithV1IntervalCollection(\n\t\t\t\tdataStoreRuntime,\n\t\t\t\tdocumentId,\n\t\t\t\tV1IntervalCollectionSharedStringFactory.Attributes,\n\t\t\t);\n\t\t\tstring.initializeLocal();\n\t\t\treturn string;\n\t\t};\n\n\t\tconst normalized = version !== \"v1Intervals\";\n\n\t\tfor (const key of Object.keys(options)) {\n\t\t\tdataStoreRuntime.options[key] = options[key];\n\t\t}\n\t\tconst insertText = \"text\";\n\n\t\tlet sharedString = createNewSharedString();\n\t\t// Small enough so snapshot won't have body\n\t\tfor (let i = 0; i < Snapshot.sizeOfFirstChunk / insertText.length / 2; ++i) {\n\t\t\tsharedString.insertText(0, `${insertText}${i}`);\n\t\t}\n\n\t\tyield {\n\t\t\tsnapshotPath: `${version}/headerOnly`,\n\t\t\texpected: sharedString,\n\t\t\tsnapshotIsNormalized: normalized,\n\t\t};\n\n\t\tsharedString = createNewSharedString();\n\t\t// Big enough that snapshot will have body\n\t\tfor (let i = 0; i < (Snapshot.sizeOfFirstChunk / insertText.length) * 2; ++i) {\n\t\t\tsharedString.insertText(0, `${insertText}${i}`);\n\t\t}\n\n\t\tyield {\n\t\t\tsnapshotPath: `${version}/headerAndBody`,\n\t\t\texpected: sharedString,\n\t\t\tsnapshotIsNormalized: normalized,\n\t\t};\n\n\t\tsharedString = createNewSharedString();\n\t\t// Very big sharedString\n\t\tfor (let i = 0; i < Snapshot.sizeOfFirstChunk; ++i) {\n\t\t\tsharedString.insertText(0, `${insertText}-${i}`);\n\t\t}\n\n\t\tyield {\n\t\t\tsnapshotPath: `${version}/largeBody`,\n\t\t\texpected: sharedString,\n\t\t\tsnapshotIsNormalized: normalized,\n\t\t};\n\n\t\tsharedString = createNewSharedString();\n\t\t// SharedString with markers\n\t\tfor (let i = 0; i < (Snapshot.sizeOfFirstChunk / insertText.length) * 2; ++i) {\n\t\t\tsharedString.insertText(0, `${insertText}${i}`);\n\t\t}\n\t\tfor (let i = 0; i < sharedString.getLength(); i += 70) {\n\t\t\tsharedString.insertMarker(i, 1, {\n\t\t\t\tItemType: \"Paragraph\",\n\t\t\t\tProperties: { Bold: false },\n\t\t\t\tmarkerId: `marker${i}`,\n\t\t\t\treferenceTileLabels: [\"Eop\"],\n\t\t\t});\n\t\t}\n\n\t\tyield {\n\t\t\tsnapshotPath: `${version}/withMarkers`,\n\t\t\texpected: sharedString,\n\t\t\tsnapshotIsNormalized: normalized,\n\t\t};\n\n\t\tsharedString = createNewSharedString();\n\t\t// SharedString with annotations\n\t\tfor (let i = 0; i < (Snapshot.sizeOfFirstChunk / insertText.length) * 2; ++i) {\n\t\t\tsharedString.insertText(0, `${insertText}${i}`);\n\t\t}\n\t\tfor (let i = 0; i < sharedString.getLength(); i += 70) {\n\t\t\tsharedString.annotateRange(i, i + 10, { bold: true });\n\t\t}\n\n\t\tyield {\n\t\t\tsnapshotPath: `${version}/withAnnotations`,\n\t\t\texpected: sharedString,\n\t\t\tsnapshotIsNormalized: normalized,\n\t\t};\n\n\t\tsharedString = createNewSharedString();\n\t\t// SharedString with intervals\n\t\tfor (let i = 0; i < Snapshot.sizeOfFirstChunk / insertText.length / 2; i++) {\n\t\t\tsharedString.insertText(0, `${insertText}${i}`);\n\t\t}\n\n\t\tcreateIntervals(sharedString);\n\n\t\tyield {\n\t\t\tsnapshotPath: `${version}/withIntervals`,\n\t\t\texpected: sharedString,\n\t\t\tsnapshotIsNormalized: normalized,\n\t\t};\n\n\t\tif (version === \"v1Intervals\") {\n\t\t\tsharedString = createNewV1SharedString();\n\t\t\t// SharedString with V1 intervals\n\t\t\tfor (let i = 0; i < Snapshot.sizeOfFirstChunk / insertText.length / 2; i++) {\n\t\t\t\tsharedString.insertText(0, `${insertText}${i}`);\n\t\t\t}\n\t\t\tcreateIntervals(sharedString);\n\n\t\t\tyield {\n\t\t\t\tsnapshotPath: `${version}/withV1Intervals`,\n\t\t\t\texpected: sharedString,\n\t\t\t\tsnapshotIsNormalized: normalized,\n\t\t\t};\n\t\t}\n\t}\n}\n"]}
@@ -1,126 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { strict as assert } from "assert";
6
- import { MockContainerRuntimeFactory, MockFluidDataStoreRuntime, MockStorage, } from "@fluidframework/test-runtime-utils";
7
- import { SharedString } from "../sharedString.js";
8
- import { assertEquivalentSharedStrings } from "./intervalTestUtils.js";
9
- describe("IntervalCollection detached", () => {
10
- const factory = SharedString.getFactory();
11
- let dataStoreRuntime;
12
- let sharedString;
13
- let collection;
14
- beforeEach(() => {
15
- dataStoreRuntime = new MockFluidDataStoreRuntime();
16
- sharedString = factory.create(dataStoreRuntime, "A");
17
- collection = sharedString.getIntervalCollection("intervals");
18
- });
19
- const attachAndLoadSecondSharedString = async () => {
20
- assert.equal(sharedString.isAttached(), false);
21
- const containerRuntimeFactory = new MockContainerRuntimeFactory();
22
- const containerRuntime = containerRuntimeFactory.createContainerRuntime(dataStoreRuntime);
23
- const attachSummary = sharedString.getAttachSummary().summary;
24
- sharedString.connect({
25
- deltaConnection: containerRuntime.createDeltaConnection(),
26
- objectStorage: new MockStorage(),
27
- });
28
- const dataStoreRuntime2 = new MockFluidDataStoreRuntime();
29
- const containerRuntime2 = containerRuntimeFactory.createContainerRuntime(dataStoreRuntime2);
30
- const sharedString2 = await factory.load(dataStoreRuntime2, "B", {
31
- deltaConnection: containerRuntime2.createDeltaConnection(),
32
- objectStorage: MockStorage.createFromSummary(attachSummary),
33
- }, factory.attributes);
34
- return { sharedString2, containerRuntimeFactory };
35
- };
36
- describe("interval created while detached", () => {
37
- it("slides immediately on segment removal", () => {
38
- sharedString.insertText(0, "0123");
39
- const interval = collection.add({ start: 0, end: 2 });
40
- sharedString.removeText(2, 3);
41
- assert.equal(interval.end.getSegment()?.text, "3");
42
- });
43
- it("synchronizes correctly on another client", async () => {
44
- sharedString.insertText(0, "0123");
45
- collection.add({ start: 0, end: 2 });
46
- const { sharedString2, containerRuntimeFactory } = await attachAndLoadSecondSharedString();
47
- sharedString2.removeText(2, 3);
48
- containerRuntimeFactory.processAllMessages();
49
- assertEquivalentSharedStrings(sharedString, sharedString2);
50
- });
51
- it("can be changed by another client after attaching", async () => {
52
- sharedString.insertText(0, "0123");
53
- const interval = collection.add({ start: 0, end: 2 });
54
- const { sharedString2, containerRuntimeFactory } = await attachAndLoadSecondSharedString();
55
- const collection2 = sharedString2.getIntervalCollection("intervals");
56
- collection2.change(interval.getIntervalId(), { start: 1, end: 1 });
57
- containerRuntimeFactory.processAllMessages();
58
- assertEquivalentSharedStrings(sharedString, sharedString2);
59
- });
60
- });
61
- describe("interval changed while detached", () => {
62
- it("slides immediately on segment removal", () => {
63
- sharedString.insertText(0, "0123");
64
- const interval = collection.add({ start: 0, end: 2 });
65
- collection.change(interval.getIntervalId(), { start: 0, end: 0 });
66
- sharedString.removeText(0, 1);
67
- assert.equal(interval.start.getSegment()?.text, "123");
68
- assert.equal(interval.end.getSegment()?.text, "123");
69
- });
70
- it("synchronizes correctly on another client", async () => {
71
- sharedString.insertText(0, "0123");
72
- const interval = collection.add({ start: 0, end: 2 });
73
- collection.change(interval.getIntervalId(), { start: 0, end: 0 });
74
- const { sharedString2, containerRuntimeFactory } = await attachAndLoadSecondSharedString();
75
- sharedString2.removeText(0, 1);
76
- containerRuntimeFactory.processAllMessages();
77
- assertEquivalentSharedStrings(sharedString, sharedString2);
78
- });
79
- it("can be changed by another client after attaching", async () => {
80
- sharedString.insertText(0, "0123");
81
- const interval = collection.add({ start: 0, end: 2 });
82
- collection.change(interval.getIntervalId(), { start: 0, end: 0 });
83
- const { sharedString2, containerRuntimeFactory } = await attachAndLoadSecondSharedString();
84
- const collection2 = sharedString2.getIntervalCollection("intervals");
85
- collection2.change(interval.getIntervalId(), { start: 1, end: 1 });
86
- containerRuntimeFactory.processAllMessages();
87
- assertEquivalentSharedStrings(sharedString, sharedString2);
88
- });
89
- });
90
- describe("interval with properties changed while detached", () => {
91
- it("synchronizes correctly on another client", async () => {
92
- sharedString.insertText(0, "0123");
93
- const interval = collection.add({ start: 0, end: 2, props: { foo: "a1" } });
94
- collection.change(interval.getIntervalId(), { props: { foo: "a2" } });
95
- const { sharedString2, containerRuntimeFactory } = await attachAndLoadSecondSharedString();
96
- containerRuntimeFactory.processAllMessages();
97
- assertEquivalentSharedStrings(sharedString, sharedString2);
98
- assert.equal(collection.getIntervalById(interval.getIntervalId())?.properties.foo, "a2");
99
- });
100
- it("can be changed by another client after attaching", async () => {
101
- sharedString.insertText(0, "0123");
102
- const interval = collection.add({ start: 0, end: 2, props: { foo: "a1" } });
103
- collection.change(interval.getIntervalId(), { props: { foo: "a2" } });
104
- const { sharedString2, containerRuntimeFactory } = await attachAndLoadSecondSharedString();
105
- const collection2 = sharedString2.getIntervalCollection("intervals");
106
- collection2.change(interval.getIntervalId(), { props: { foo: "b1" } });
107
- containerRuntimeFactory.processAllMessages();
108
- assertEquivalentSharedStrings(sharedString, sharedString2);
109
- assert.equal(collection.getIntervalById(interval.getIntervalId())?.properties.foo, "b1");
110
- });
111
- });
112
- describe("intervals deleted while detached", () => {
113
- it("aren't added to the remote client", async () => {
114
- sharedString.insertText(0, "0123");
115
- const interval = collection.add({ start: 0, end: 2 });
116
- const id = interval.getIntervalId();
117
- collection.removeIntervalById(id);
118
- const { sharedString2 } = await attachAndLoadSecondSharedString();
119
- const collection2 = sharedString2.getIntervalCollection("intervals");
120
- assert.equal(Array.from(collection2).length, 0);
121
- assert.equal(collection2.getIntervalById(id), undefined);
122
- assertEquivalentSharedStrings(sharedString, sharedString2);
123
- });
124
- });
125
- });
126
- //# sourceMappingURL=intervalCollection.detached.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intervalCollection.detached.spec.js","sourceRoot":"","sources":["../../src/test/intervalCollection.detached.spec.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 { strict as assert } from \"assert\";\nimport {\n\tMockContainerRuntimeFactory,\n\tMockFluidDataStoreRuntime,\n\tMockStorage,\n} from \"@fluidframework/test-runtime-utils\";\nimport { TextSegment } from \"@fluidframework/merge-tree\";\nimport { SharedString } from \"../sharedString.js\";\nimport { SequenceInterval } from \"../intervals/index.js\";\nimport { IIntervalCollection } from \"../intervalCollection.js\";\nimport { assertEquivalentSharedStrings } from \"./intervalTestUtils.js\";\n\ndescribe(\"IntervalCollection detached\", () => {\n\tconst factory = SharedString.getFactory();\n\tlet dataStoreRuntime: MockFluidDataStoreRuntime;\n\tlet sharedString: SharedString;\n\tlet collection: IIntervalCollection<SequenceInterval>;\n\tbeforeEach(() => {\n\t\tdataStoreRuntime = new MockFluidDataStoreRuntime();\n\t\tsharedString = factory.create(dataStoreRuntime, \"A\");\n\t\tcollection = sharedString.getIntervalCollection(\"intervals\");\n\t});\n\n\tconst attachAndLoadSecondSharedString = async (): Promise<{\n\t\tcontainerRuntimeFactory: MockContainerRuntimeFactory;\n\t\tsharedString2: SharedString;\n\t}> => {\n\t\tassert.equal(sharedString.isAttached(), false);\n\t\tconst containerRuntimeFactory = new MockContainerRuntimeFactory();\n\t\tconst containerRuntime = containerRuntimeFactory.createContainerRuntime(dataStoreRuntime);\n\t\tconst attachSummary = sharedString.getAttachSummary().summary;\n\t\tsharedString.connect({\n\t\t\tdeltaConnection: containerRuntime.createDeltaConnection(),\n\t\t\tobjectStorage: new MockStorage(),\n\t\t});\n\n\t\tconst dataStoreRuntime2 = new MockFluidDataStoreRuntime();\n\t\tconst containerRuntime2 = containerRuntimeFactory.createContainerRuntime(dataStoreRuntime2);\n\t\tconst sharedString2 = await factory.load(\n\t\t\tdataStoreRuntime2,\n\t\t\t\"B\",\n\t\t\t{\n\t\t\t\tdeltaConnection: containerRuntime2.createDeltaConnection(),\n\t\t\t\tobjectStorage: MockStorage.createFromSummary(attachSummary),\n\t\t\t},\n\t\t\tfactory.attributes,\n\t\t);\n\t\treturn { sharedString2, containerRuntimeFactory };\n\t};\n\n\tdescribe(\"interval created while detached\", () => {\n\t\tit(\"slides immediately on segment removal\", () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2 });\n\t\t\tsharedString.removeText(2, 3);\n\t\t\tassert.equal((interval.end.getSegment() as TextSegment)?.text, \"3\");\n\t\t});\n\n\t\tit(\"synchronizes correctly on another client\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tcollection.add({ start: 0, end: 2 });\n\t\t\tconst { sharedString2, containerRuntimeFactory } =\n\t\t\t\tawait attachAndLoadSecondSharedString();\n\n\t\t\tsharedString2.removeText(2, 3);\n\t\t\tcontainerRuntimeFactory.processAllMessages();\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t});\n\n\t\tit(\"can be changed by another client after attaching\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2 });\n\t\t\tconst { sharedString2, containerRuntimeFactory } =\n\t\t\t\tawait attachAndLoadSecondSharedString();\n\n\t\t\tconst collection2 = sharedString2.getIntervalCollection(\"intervals\");\n\t\t\tcollection2.change(interval.getIntervalId(), { start: 1, end: 1 });\n\t\t\tcontainerRuntimeFactory.processAllMessages();\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t});\n\t});\n\n\tdescribe(\"interval changed while detached\", () => {\n\t\tit(\"slides immediately on segment removal\", () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2 });\n\t\t\tcollection.change(interval.getIntervalId(), { start: 0, end: 0 });\n\t\t\tsharedString.removeText(0, 1);\n\t\t\tassert.equal((interval.start.getSegment() as TextSegment)?.text, \"123\");\n\t\t\tassert.equal((interval.end.getSegment() as TextSegment)?.text, \"123\");\n\t\t});\n\n\t\tit(\"synchronizes correctly on another client\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2 });\n\t\t\tcollection.change(interval.getIntervalId(), { start: 0, end: 0 });\n\t\t\tconst { sharedString2, containerRuntimeFactory } =\n\t\t\t\tawait attachAndLoadSecondSharedString();\n\n\t\t\tsharedString2.removeText(0, 1);\n\t\t\tcontainerRuntimeFactory.processAllMessages();\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t});\n\n\t\tit(\"can be changed by another client after attaching\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2 });\n\t\t\tcollection.change(interval.getIntervalId(), { start: 0, end: 0 });\n\t\t\tconst { sharedString2, containerRuntimeFactory } =\n\t\t\t\tawait attachAndLoadSecondSharedString();\n\n\t\t\tconst collection2 = sharedString2.getIntervalCollection(\"intervals\");\n\t\t\tcollection2.change(interval.getIntervalId(), { start: 1, end: 1 });\n\t\t\tcontainerRuntimeFactory.processAllMessages();\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t});\n\t});\n\n\tdescribe(\"interval with properties changed while detached\", () => {\n\t\tit(\"synchronizes correctly on another client\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2, props: { foo: \"a1\" } });\n\t\t\tcollection.change(interval.getIntervalId(), { props: { foo: \"a2\" } });\n\t\t\tconst { sharedString2, containerRuntimeFactory } =\n\t\t\t\tawait attachAndLoadSecondSharedString();\n\n\t\t\tcontainerRuntimeFactory.processAllMessages();\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t\tassert.equal(\n\t\t\t\tcollection.getIntervalById(interval.getIntervalId())?.properties.foo,\n\t\t\t\t\"a2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"can be changed by another client after attaching\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2, props: { foo: \"a1\" } });\n\t\t\tcollection.change(interval.getIntervalId(), { props: { foo: \"a2\" } });\n\t\t\tconst { sharedString2, containerRuntimeFactory } =\n\t\t\t\tawait attachAndLoadSecondSharedString();\n\n\t\t\tconst collection2 = sharedString2.getIntervalCollection(\"intervals\");\n\t\t\tcollection2.change(interval.getIntervalId(), { props: { foo: \"b1\" } });\n\t\t\tcontainerRuntimeFactory.processAllMessages();\n\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t\tassert.equal(\n\t\t\t\tcollection.getIntervalById(interval.getIntervalId())?.properties.foo,\n\t\t\t\t\"b1\",\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"intervals deleted while detached\", () => {\n\t\tit(\"aren't added to the remote client\", async () => {\n\t\t\tsharedString.insertText(0, \"0123\");\n\t\t\tconst interval = collection.add({ start: 0, end: 2 });\n\t\t\tconst id = interval.getIntervalId();\n\t\t\tcollection.removeIntervalById(id);\n\t\t\tconst { sharedString2 } = await attachAndLoadSecondSharedString();\n\n\t\t\tconst collection2 = sharedString2.getIntervalCollection(\"intervals\");\n\t\t\tassert.equal(Array.from(collection2).length, 0);\n\t\t\tassert.equal(collection2.getIntervalById(id), undefined);\n\t\t\tassertEquivalentSharedStrings(sharedString, sharedString2);\n\t\t});\n\t});\n});\n"]}